Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.10.2010, 22:50   #1
LordotU
Новичок
Джуниор
 
Регистрация: 01.10.2010
Сообщений: 2
По умолчанию Структура для хранения произвольной мелодии

Господа, есть одна проблемка. В Delphi нужно реализовать структуру, которая будет хранить данные о произвольной мелодии такие, как: длительность звука (сек), его амплитуда (дБ), его частота (Гц). Т.е. реализация, что называется "в тык" будет выглядеть так:

Код:
type TMelody = packed Record
    Duration: real48;
    Amplitude: integer;
    Frequency: real48;
end;
Но! Если, скажем, на гитаре берут две ноты одновременно, или на фано жмут одновременно на две (три, четыре, etc.) клавиши, то как тут быть?
LordotU вне форума Ответить с цитированием
Старый 02.10.2010, 14:33   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,724
По умолчанию

Может сначала матчасть изучить?
p51x вне форума Ответить с цитированием
Старый 02.10.2010, 16:33   #3
LordotU
Новичок
Джуниор
 
Регистрация: 01.10.2010
Сообщений: 2
По умолчанию

Может сначала пояснить?
LordotU вне форума Ответить с цитированием
Старый 02.10.2010, 20:20   #4
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Цитата:
Если, скажем, на гитаре берут две ноты одновременно, или на фано жмут одновременно на две (три, четыре, etc.) клавиши, то как тут быть?
м..... Сложение волн?
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 02.10.2010, 20:31   #5
Levsha100
Заблокирован
Старожил
 
Регистрация: 20.07.2008
Сообщений: 4,032
По умолчанию

1)Как вариант в каждой записи поставить флажок, который указывает что эта нота играет одновременно с предыдущей.
При проигрывании воспроизводить одновременно ноты с текущей по ту, в которой данная метка равна false.
Код:
type TMelody = packed Record
    Duration: real48;
    Amplitude: integer;
    Frequency: real48;
    together:boolean;
end;
Недостаток- две одновременно проигрываемые ноты должны быть одинаковой длительности.
2)Можно еще сделать массив других структур, в которых будут ссылки на играющие ноты в определенный момент времени.
Недостаток- непрозрачность данной модели, это на первый взгляд. Достоинство- наименьший объем.
3)А вообще самый идеологически правильный вариант без недостатков, которые есть в предыдущих методах, - массивы нот для каждого голоса, но тогда увеличивается объем данных.

Последний раз редактировалось Levsha100; 02.10.2010 в 20:40.
Levsha100 вне форума Ответить с цитированием
Старый 02.10.2010, 22:21   #6
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

...а может изучить midi формат
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа для хранения паролей [help] DimOn4Ik Общие вопросы Delphi 10 23.10.2009 22:51
Структура хранения МАТЕМАТИЧЕСКИХ функций Levsha100 Общие вопросы Delphi 2 02.05.2009 22:47
Компонент для хранения информации. IVANSour Компоненты Delphi 7 28.01.2009 03:02