方針としてはTR-808やTR-909をリスペクトして(^q^;
- 出力できる波形はミニマムでKick、Snare、Hihatの3つで、それぞれ1波形を元に加工
- KickのパラメータはLevel(音量)、Tone(音の高さ)、Decay(音の長さ)
- SnareもKickと同様
- HihatはLevelとDecay
- シーケンスを打ち込めるようにする
ぐらいから始めてみたいと思います。
まずはVisual Studioでぴゅんぴゅん3号で使っているWaveTableのSin波と下降タイプのノコギリ波のデータを元に、TR-808のKickの様なサイン波Kickを作ってみました。
Visual StudioのProjectはgithubで公開しました。
https://github.com/ryood/DDS_Kick_Test_Visual_Studio
https://github.com/ryood/DDS_Kick_Test_Visual_Studio/blob/master/DDS_Kick_Test01/DDS_Kick_Test01.cpp
とりあえず単純に波形を掛けあわせて振幅変調しましたが、このままではDecayとBPMが分離できないのでなんか手を考えないとダメっぽいです。
→Kick音のDecayを短くしようとするとBPMが上がってしまう。
あくまでもDDSにこだわってDecayのつまみをいじった時にDecay用の波形テーブルを生成する
とか
Decay波形はDecay値をもとに線形補完して振幅変調する値をリアルタイムに生成する
とかがぱっと思いつきますが
予定している波形データは多くても16bitの整数なので32bit CPUならリアルタイムに掛け算してもそんなにコストはかからないのか・・・
このあいだ買ったDSPの本『音遊び!BlackfinDSP基板でディジタル信号処理初体験 2015年 04月号[雑誌]インターフェース増刊』 で、固定小数点演算の使い方が載っていたので、固定小数点演算を試してみるのもありそうです。
う~ん、しばらくはVisual Studioで波形生成のエンジン部を考えながら実験かな?
今回は久しぶりにですます調で書いてみました。
0 件のコメント:
コメントを投稿