1

我正在使用Alsa API,我想知道应该将哪些参数传递给函数snd_pcm_writei以简单地播放 solfège 音节/音符(AG / do re mi fa sol la si do)。

谢谢

4

2 回答 2

1

听起来你想要 midi,而不是 ALSA。ALSA 处理采样音频(例如来自 CD、wav、mp3 等的数字波形)。它不是一个声音合成程序。

于 2011-09-01T19:17:20.677 回答
1

如果您真的想使用该功能执行此操作,请在缓冲区中生成波形。三角形波听起来可能不会太糟糕,并且应该足够简单以生成。

基础“la” (A) 为 440Hz,即每秒 440 个周期您选择的波形。1.05946309对于高于/低于该基本频率的每个半音,可以通过乘/除以 2^(1/12) ( ) 获得其他音符。您需要知道输出设备的设置频率(这可能是另一个 ALSA 函数的参数)。如果设备频率是 44100 Hz,并且您想播放基本“la”,则波形的每个周期应占用 44100 / 440 或大约 100 个样本。还要注意样本宽度和设备配置的通道数。

解释:一个八度有12个半音,一个八度正好是频率的一半(低音)或两倍(高音)。一旦将 12 乘以 2^(1/12),就乘以 2,因此每个半色调比前一个半色调高 2^(1/12)。

于 2011-09-01T19:25:03.753 回答