マイクロコントローラー シンセに取り組んでいますが、ボリューム エンベロープの生成で問題が発生しました。私は現時点でこのコードを持っています:
to_dac =(SinTable[lut_pos] * (volume))>>8;
正常に動作しますが、解像度が非常に悪く、十分に高速に実行できるように改善する方法がわかりません (これはすべてのサンプルで実行する必要があるため)。
これらは私が今得ている結果です:
これが現在の MP3 のサウンドです: (注: DAC はブレッドボード上にあり、出力にローパス フィルターがないため、余分なノイズが発生します)
私はMSP430デバイスを使用しています(現時点ではMSP430G2553ですが、本当に必要な場合はMSP430F5510を使用できます(より多くのメモリ、より高速な速度)例を探してみましたが、それらはすべて浮動小数点変数sin()を使用しています) ; math.h の関数などですが、私にはそれらの贅沢はありません...
編集:私は完全なばかで、別のコードで振幅エンベロープの解像度を低くしましたが、振幅変調の他のソリューションを受け入れています。