投稿日: Jun 12, 2017 6:52:1 PM
今回は基本的な矩形はと鋸波、あとはノイズっていうシンプルな音源にしようと考えて居るので波形メモリにはしませんでした。波形メモリって面白そうに感じるカモだけどそうでもないというか、面倒ごとが増えるので。
あくまでカウンターを元に波形を作ることにしました。
カウンターは12bit。これはテスト時にそのままDACに出力出来て便利だったからってのがそのままのこってる感じ。
44100 / 0xfff = 10.76923076923077
440 / 10.76923076923077 = 40.857142857142854
ってかんじで、カウンターを22.6usごとに40.85....進めてゆけば440Hzの音声が出力できますよーって考え方ですが、実際は計算どおりにはいかず、ずれが発生するので数値をちょいちょい修正する必要はあります。
あとは音階に合わせて周波数ごとの加算値を算出してカウンターに加算してゆくだけです。
動作させてみると高音域がかなり渋い動作。
もう少し見直す必要があるかなー。
0xfffというと4096、一番高い音だと加算値は1000を越えているのでカウントは3回くらいでループする感じになって。
とっても安定してるとはいいがたい波形が出力されます。
鋸波をつかわないならむしろPWMのON/OFF時間を算出してそれをどうにかする方がいいのかもですけどもね。
まあ様子を見てみましょう。