Как разобрать музыку на массив частот и длительностей нот
-
14-10-2019 - |
Вопрос
Привет,
Я работаю над низкий уровень программный проект, и я хочу воспроизвести музыку на компьютере оратор.
Я уже могу использовать динамик (с timer2
) и песня представлена следующим образом:
note_t *music;
где note_t
представляет собой ноту и состоит из:
typedef struct {
int freq; /* note frequency */
int dur; /* note duration in miliseconds */
} note_t;
Итак, как лучше всего получить частоты и длительность нот из музыкального файла?
Заранее спасибо!
РЕДАКТИРОВАТЬ
Чтобы прояснить некоторые сомнения, я хочу знать, какой формат лучше всего подходит для получения необходимой информации для создания песни с указанной выше структурой.
Решение
анатолигответ хороший.Я просто хочу показать, насколько сложной может быть такая задача:взгляните на MIDI для вдохновения.
http://en.wikipedia.org/wiki/Musical_Instrument_Digital_Interface
MIDI-файлы можно использовать в качестве «виртуальных нот» для музыкального программного обеспечения, сохраняя ноты и множество дополнительной информации, описывающей нюансы игры (например, скорость, изменение высоты тона, модуляцию и т. д.).Он был создан для хранения целых музыкальных произведений с несколькими инструментами и полифонией.
Другие советы
В зависимости от вашей конкретной цели вы можете использовать один из форматов мелодии звонка или придумать свой собственный.
Пример простого формата мелодии звонка: РТТТЛ.