2017年10月24日

Open.Theremin@Volumeデータの出力更新レートの変更を試みる

ヴォリュームコントロール時にノイズが出る不具合の原因が、コントロールヴァリューのリップル成分ではないか?という疑念から、データの更新サイクルを変更することを思いついた。

通常は、FTMからのフラッグをトリガーにしていたところを、サンプリングクロックが立ち上がるタイミングでカウントを行う専用タイマーを追加し、

WS001167.JPG

これの積算数によって、、、

WS001169.JPG

出力の更新を決定する機構を仮に設定、評価を行った。

WS001168.JPG

試しに、音量を更新する周期を遅らせると、それにともなってビートの周波数が下がっていく。 更新のタイミングを更に遅らせていくと、最終的には階段状のクリック音として音量変化が認識されるレベルになった。

ザラザラしたノイズは消滅したものの、結局はノイズが可聴域に下がってくることに拠る弊害のほうが大きいことが判明したため、この仕組はお蔵入りとなった。

以上の実験から、ノイズはデータの不連続面が影響して発生したスプリアスと思われるが、発生の原因を確定するにはヴォリュームの値をDACから出力し、この電圧をオシロスコープで監視するのが速道かもしれない。 電圧が推移する過程で変なスパイクが認められた場合は、これまた想定外の問題が発生していることになる。

改良の過程で、出力をマッピングして最大音量に至るラスト12bitほどの変化量を圧縮する機構を追加している。 この処置に因ってレベルオーヴァー由来の歪は皆無になった。 

WS001170.JPG

依然としてbitノイズっぽいザラザラ感は解消されていないものの、選択した出力波形がSawToothの場合は殆ど気にならないレベルになったことから、トランジションコントロールに設定していた最大数値の制限を解除した。 いきなりガッツリと歪まなくなったので、ソフトにディストーションが掛かるこちらの方が使い易い感触だ。

他の不具合としては、左手でTransitionをコントロールする際にデータがゼロになる閾値が出来、この不連続面に由来するノイズが発生するケースがあった。 これに対応するため、出力に以下の処理を加えてノイズの発生を回避している。

WS001171.JPG

以前は、閾値に至らないようにオシレーターのチューニングを続けることで調整していたが、この方法ではVolume側に過大なドリフトが生じた時は対処しきれなかった。 出力されるデータに制限を掛けることによってノイズの発生は回避されることになった。
posted by Yasuski at 19:07| open.Theremin