Как разобрать музыку в массив частот и длительностей ее нот - PullRequest
1 голос
/ 31 декабря 2010

Привет,

Я работаю над проектом программирования низкого уровня и хочу играть музыку на компьютере динамик .

Я уже могу использовать динамик (с timer2), и песня представляется следующим образом:

note_t *music;

, где note_t представляет ноту, и она составлена ​​из:

typedef struct {
  int freq; /* note frequency */
  int dur;  /* note duration in miliseconds */
} note_t;

Теперь, как лучше всего получить частоты и длительности нот из музыкального файла?

Заранее спасибо!

РЕДАКТИРОВАТЬ

Чтобы прояснить некоторые сомнения, я хочу знать, что это лучший формат для получения необходимой информации для создания песни с указанной выше структурой.

Ответы [ 2 ]

2 голосов
/ 31 декабря 2010

В зависимости от вашей конкретной цели, вы можете использовать один из форматов мелодий звонка или придумать свой собственный.

Пример простого формата мелодии звонка: RTTTL .

1 голос
/ 31 декабря 2010

anatolyg ответ хороший. Я просто хочу показать, насколько сложной может быть такая задача: взгляните на MIDI для вдохновения.

http://en.wikipedia.org/wiki/Musical_Instrument_Digital_Interface

MIDI-файлы можно использовать в качестве «виртуальной ноты» для музыкального программного обеспечения, где хранятся ноты и множество дополнительной информации, описывающей нюансы воспроизведения (например, скорость, изменение высоты тона, модуляция и т. Д.). Он был создан для хранения целых музыкальных произведений с несколькими инструментами и полифонией.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...