1

私はAlsa API で遊んでいますが、ソルフェージュ音節/音符 (AG / do re mi fa sol la si do) を単純に再生するには、関数snd_pcm_writeiにどのパラメータを渡す必要があるのだろうかと思います。

ありがとう

4

2 に答える 2

1

その関数で本当にやりたい場合は、バッファに波形を生成します。三角形の波はそれほどひどく聞こえないかもしれません、そして生成するのに十分単純でなければなりません。

ベース「la」(A)は440Hzです。つまり、1秒あたりに選択した波形の440サイクルです。1.05946309他の音符は、この基本周波数の上下のハーフトーンごとに2 ^(1/12)()で乗算/除算することで取得できます。出力デバイスがどの周波数でセットアップされているかを知る必要があります(これはおそらく別のALSA関数への引数です)。デバイスの周波数がたとえば44100Hzで、ベース「la」を再生する場合、波形の各周期は44100/440または約100サンプルを占める必要があります。サンプル幅とデバイスが構成されているチャネル数にも注意してください。

説明:オクターブには12のハーフトーンがあり、オクターブは周波数のちょうど半分(低音)または2倍(高音)です。12倍に2^(1/12)を掛けると、2を掛けたので、各ハーフトーンは前のハーフトーンより2 ^(1/12)倍高くなります。

于 2011-09-01T19:25:03.753 に答える
1

ALSAではなく、midiが必要なようです。ALSA は、サンプリングされたオーディオ (CD、wav、mp3 などから派生したデジタル波形など) を処理します。音声合成プログラムではありません。

于 2011-09-01T19:17:20.677 に答える