シンセ開発ログ 2016-10-08
明日の #NT名古屋 2016 には、新作「Digital Synth VRA8-Px (仮)」のプロトタイプを出展しようと思います。( #OMMF2016 までには、V1を完成させたいです)
という訳で、「VRA8-Px (仮)」がこの日記の開発ターゲット「DIYシンセ・第6弾」になりました。基本的に「VRA8-P」のパワーアップ版ですが、V2とは言い難い仕様になりそうなので、別モデルの扱いにしています。
> Arduino用シンセのVRA8シリーズで、Timer1割り込みが生きていた問題。
> noInterrupts()を追加したところ、VRA8-Pを4音ポリで動かせた。
>
> ※2016-09-23追記:Timer0割り込みが正しい。VRA8シリーズでは、プリスケーリングなしでPWM出力に使用しているので、CPUパワーをスゴク無駄にしていたと思われる。
正確に測定できていませんが(これが課題)、不要なTimer0割り込みを無効化したおかげで、使用可能なCPUパワーは50%以上増えたようです。……相当色々なことができそうですね! 反省はありますが、ここ半年ほどCPUパワーについて悩んでいたので、「埋蔵金」が見つかったと思ってありがたくいただきます。
上に書いたように、まずは「VRA8-P」のパワーアップ版を作り始めています。
* オーディオ出力への「誤差拡散」の導入。 => これで理論上、ダイナミックレンジが8ビットから16ビットに拡大。発音数を増やしたり、レゾナンスを強めても大丈夫。……その代償として、発音中は音圧1/256のノイズがのってしまう。「まあ、いいか」と思っているが、この点については「VRA8-P」のパワーアップと言えなさそうである。
* 4音ポリに変更。 => どうしよう? 他の改善を入れてから考えることにする。
* デチューン/コーラス効果を「2 VCO相当」から「3 VCO相当」に変更してみる。 => CPUパワー的には楽勝。だが、音質がかなり変わる。やめ。(以前から思っていたが、3 VCOでの音作りは難しい)
* AMP EGスイッチやCUTOFFを急に動かしても、プツ音がしないように改善。
* GitHub Desktopが動かなくなった。アップデートの影響っぽい。 => TortoiseGitを使用している。