2020年01月10日

Pitch/Volumeの同期を行う

Volume側データ出力の更新と線形補間をPitch側がデータを更新するタイミングと同期させる案を試してみた。

Screen Shot 2020-01-10 at 18.31.41.png

結果は、左手のポジションションに合わせてグリッチの周波数が変化しなくなった一方で「均一にノイズが発生する」現象が発生、しかもこれがPitchの全帯域に影響することが判明した。

Pitchデータの更新が行われるタイミングでVolumeデータに発生する不連続性が固定された結果がノイズとして認識された訳だが、用法で逃げることが難しい上に全帯域に渡ってノイズが目立ってしまうのは本末転倒で、実験はアイデア倒れに終わった。 

ただし、ノイズが「均質化」したのは朗報でもあり、この手法を完全に放棄するのは拙速な判断かもしれない。

Screen Shot 2020-01-10 at 18.33.44.png

なんとかノイズの発生を抑え込む方法はないかとフィルターの数値をいろいろと試してみる過程で、出音に発生するリングモジュレーターのような変調が気になりだした。

ビートが発生する原因は、デモジュレートされたPitch/Volume信号のアップエッジ間を計測するカウンタが「バラバラなタイミング」でデータをキャプチャした際に発生するデータの周期的な不連続ポイントの影響と思われる。 この問題を解消するために考えたのがPitch側のサブルーチン内に確定したVolume側のデータをキャプチャする方法だったが、肝心のVolumeディテクタ側の設定が定まらず、実装は棚上げとなっていた。

今回はVolumeデータを生成するサブルーチンから「丸め処理が行われたデータ」を拾う代わりに、Volume側がキャプチャした素のデータを

Screen Shot 2020-01-10 at 18.34.48.png

Pitch側のデータが確定するタイミングで取り込み、Pitchデータの処理を行うサブルーチン内でVolume側の丸め処理を実行する構造に処理プロセスを変更した。

Screen Shot 2020-01-10 at 18.33.13.png

結果は満足が出来るもので、妙なビートの発生がなくなったうえにグリッチの発生を低減させることに成功した。
posted by Yasuski at 18:29| LaVoixski