Arduino自作シンセ Mozziで不具合?挫折!基本からやり直しましょう
いよいよフィルター実装!しかし失敗しました。
シンセの音色をツマミで操作できるようにMozziのLowPassFilter.hを実装してみました。
ポテンショメータからの値は上手く拾っているのですが、盛大に失敗している様です。
その様子をご覧ください。。。。。。
最初は行けているか?と思いきや、いきなりすごい音が鳴るので、音量注意して下さい
前半は徐々にカットオフが変化していて、やった!と思ったのですが、後半に爆音を響かせながら盛大に音が乱れました。。。
試したこと。
今回はマルチプレクサから繋いだ一つのポテンショメータから値を読み取って、値をカットオフに反映させています。
cutoffFrequency = map(potValues1[0], 0, 1023, 4080, 5000); // 50Hz〜5000Hzにマッピング
lpf.setCutoffFreq(cutoffFrequency);
この日記において、このコードが云々と言うのは、特に問題ないです。
値の読み取り自体はうまくいっているのですが、出音が不定期に乱れまくったり、正常にカットオフが反映されたりしており、困りました。
マルチプレクサの読み込みがおかしいのかと思い、1個のポテンショメータとNanoのアナログINを直結してみましたが、特に挙動には変化がない。
このように再現性が特定できない不具合というのが、一番心が折れますね。。。
原因の推測として
シリアルモニタを見てみたりしましたが、カットオフの数値はIDEで表示されるものを見る限り、以上はありません。
Mozziライブラリによって音声出力を更新するupdateAudio()とか、パラメータを更新するupdateControl()など、特有の機能が、ArduinoのAnalogReadのタイミングとうまく同期できていない気がします。
たまたまタイミングが合致するとうまい具合に音が出るのでしょうか。。
不具合に立ち向かうとしたら、基本に立ち返る事ですね
分かってはいましたが、中途半端な理解度で、「動いているからいいか。。」とどんどん実装を進めていたのが悪いのでしょうw
再学習です。
Mozziの最小限な規模によるプログラムを組んで、ステップバイステップで原因を特定する事にします。
今後の展開
大胆ですが、大切です。肥大したシステムを捨てて、超最小のプログラムと回路で実験をやり直します。
このような状況から脱しまして、、、
ここから行きます!!
大変そうなのですが、基本に立ち返った時に後で理解が深まれば良いと思います。
またがんばります!