使用ALSA API播放solfege笔记?

时间:2011-09-01 19:15:00

标签: c audio alsa waveform procedural-generation

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

由于

2 个答案:

答案 0 :(得分:1)

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

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

说明:八度音程中有12个半音,而八度音程恰好是频率的一半(低音调)或双音(高音调)。一旦你乘以12 ^乘以2 ^(1/12),你就乘以2,所以每个半音比前一个音调高2 ^(1/12)。

答案 1 :(得分:0)

听起来你想要midi,而不是ALSA。 ALSA处理采样音频(例如,从CD,wav,mp3等导出的数字波形)。这不是一个合理的合成计划。