如何将音乐解析为一系列频率和音符的持续时间
-
14-10-2019 - |
题
问候,
我正在研究 低级 编程项目,我想用计算机播放音乐 扬声器.
我已经有能力使用扬声器( timer2
)和一首歌以以下方式表示:
note_t *music;
在哪里 note_t
表示注释,它是复合的:
typedef struct {
int freq; /* note frequency */
int dur; /* note duration in miliseconds */
} note_t;
现在,从音乐文件中获取笔记的频率和持续时间的最佳方法是什么?
提前致谢!
编辑
为了澄清一些疑问,我想知道的是获取必要信息的最佳格式,以创建一首歌,其中显示了上述结构。
解决方案
Anatolyg的答案很好。我只想展示这样的任务可能是多么复杂:请查看MIDI的灵感。
http://en.wikipedia.org/wiki/musical_instrument_digital_interface
MIDI文件可以用作音乐软件的“虚拟乐谱”,存储笔记和许多描述播放细微差别的其他信息(例如速度,音高弯曲,调制等)。它是为了用多种乐器和复合物存储整个音乐而建造的。
其他提示
根据您的确切目的,您可以使用一种铃声格式或发明自己的格式。
一个简单的铃声格式是 rtttl.
不隶属于 StackOverflow