我想编写一个汇编 x86 程序,在其中读取和播放 .wav 文件。我用谷歌搜索了一个典型的 .wav 文件的结构,发现子块部分中有一些数据可用。
我已经理解了以下内容,我想确定它是否正确以便我可以开始编码:
采样率只是将原始模拟信号采样为数字值(可能代表频率)的速率。我想我在播放 .wav 文件时与这个值无关。Byterate 是我必须发送字节的速率(某种程度上与可以在任何声音文件的“属性”中找到的“比特率”相关。)。
因此,例如,我必须打开扬声器,发送字节,等待一段时间——这是通过时钟频率和字节速率(在一秒内发送的字节数)以某种方式计算出来的- 关闭扬声器并再次等待一段时间。这个对吗?
而且我不知道我可以用 2 通道 .wav 文件做什么。不同端口的通道扬声器?
最后一件事是我不知道如何计算打开或关闭扬声器的时间量 - CPU 空闲循环 - 手头有字节速率。因为不同的指令需要不同的时钟周期来完成。