電音の工場ブログ

趣味の電子工作を中心としたブログです.音モノの工作が多いです.

当ブログは…

AVRによる音を出す何か

ときどき拝見しているすzのAVR研究I2CSND というカテゴリとともに I2CSND:はじめに という記事がエントリされていました。

今後が楽しみです。

DCO 方向分岐

8pinのLFOの次はDCOをやりたいと考えてた。

どうしてかというと、正弦波をDDS方式で出すのはそれほど難しくなさそうだし、たくさん並べてポリフォニック鍵盤を作りたいと妄想したのである。どうせやるなら加算合成できるようにして、ドローバーでミックス具合を変化させてのオルガン音源だっ! (おおもとの基本的なDCOもやることにして、プロジェクトがブランチした感じで)

37鍵盤ぐらいでいいかな。

手にした参考書には、1/2f, 3/2f, f, 2f, 3f, 4f, 5f, 6f, 8f のミキシングが出来るようなドローバーが載っていた。37鍵だとざっくりと144個の正弦波発生器が必要なようだ。144個! 正直これはダメだと思った。ウィキペディアで見るとハーモニクス並びがちと違う感じだが(リンク)それでもたくさんになることは間違いない。

144個のAVRを並べるのはいいとしても(いいのか?)、それを結線してドローバーとI/Fすることを考えたら気が遠くなった。昔の人はすごかった、とくに軍隊。

軟弱にもっと楽を取れないかと考える。検索する。考える。

はた、と、以前クリッピングしていた、ELM-ChaNさんWaveTable電子オルゴールを思い出した。

見てみると6声のオルゴールである。wave tableを引っ張ってエンベロープを乗算して、6声分積算しPWM出力。

筆者はヌルくC言語でやってみた。乗算の部分をシフトによる9段階アッテネーションとして*1 こちょこちょとやってみると、4波をミックスして出力できる感じでこんな感じの音(WAV 3秒)となった。[1/2f, f, 2f, 3f] でミキシング割合は適当。

どんなもんでしょか。

主要部をアセンブリ言語で書いて、少なくともChaNさん実績の6波、できれば乗算がシンプルになった分 7波、8波 出せるようになればいいな。1鍵盤あたり1-AVRであれば実機実装できそうだ。乗算器のあるAVRだとどれぐらいパフォーマンスが出せるのかも気になる。

立ち上がりをどのようにクリッキーにするか、持続音をどのように揺らすか なども、課題は山積なのだけれども、ゆくゆくは、ソフトウェアUARTを実装して各波のミキシング度合いを変更できるようにしたり、集中クロックでチューニングしやすくしたり、集中クロックをPLLにして揺すれるようにしたり、キース・エマーソンハモンド電源オフ攻撃に対抗したりしてみたい。

*1:ドローバーを全部引き出すと振幅1倍、ひとつ戻すと1/2、ふたつ戻すと1/4 … 8つ戻すと1/256=音出ない。