製作モジュール一覧

2026年8月24日月曜日

NuVCOに実験用UIを作る ― 増えてきた音作りのアイデアを試したい

前回までで、NuVCOは11 Voiceまで動作するようになり、Sine生成の処理時間についてもCycle Counterで測定し、LUT化まで行いました。

基本的なVCOを動かすこと以外にも、いろいろ試してみたいことが増えてきました。

例えば、現在考えているものには次のようなものがあります。

  • Detune Range
    Detuneの可変域を設定する。

  • Voice Spread
    Detuneの広がり方を設定する。

  • Pair Morph
    Sine → Triangle → Square → Sawtoothという一続きのMorphだけでなく、Sine → Square、Triangle → Sawtoothなど、2つの波形を選んでMorphする。

  • Voiceの初期phase
    複数Voiceを同じphaseから始めるか、Voiceごとにphaseをずらすかなどを設定する。波形の重なり方が変わるので、音の立ち上がりや厚みなどに違いが出る可能性がある。

  • Stereo / Pan
    MorphingやDetuneしたVoiceをL/Rへ振り分け、Stereoの広がりを持たせる。

  • Sub
    1 Octave下の波形を生成してMixする。

これらは私にとって未知の世界です。

名前や考え方は分かっていても、NuVCOで実際に音を出したときにどういう効果になるのかは、試してみないと分かりません。

最初のNuVCOの操作系

最初のNuVCOの設計では、

  • Tune POT

  • Wave POT

  • Detune POT

  • USER1 SW

  • USER2 SW

を使っていました。

Tune POTは基準周波数、Wave POTはSine → Triangle → Square → SawtoothのMorph、Detune POTは複数VoiceのDetune量を操作します。

USER1 SWではVoice数を、

1 / 2 / 3 / 5 / 7 / 9 / 11

と切り替え、USER2 SWではTune Rangeを切り替えるようにしました。

この方法で機能を増やしていく場合、機能ごとにPOTやSWを追加する必要があります。

部品や配線が増えるだけでなく、Nucleo-G431KB側もADCやGPIOとして自由に使えるpinには限りがあります。

UI用のI2Cを追加したときにも、pinの制約が実際に出てきました。

当初はI2C2を、

  • SCL: PA9

  • SDA: PF0

で使う予定でした。

ところがPF0が実機でうまく使えなかったため、SDAをPA8へ変更しました。

PA8は、それまでUSER1 SWのVoice数切り替えに割り当てていたpinです。

そのためI2Cを組み込んだ直後は、USER1 SWによるVoice数切り替えが使えなくなりました。

今はVoice切り替えをMCP23017側へ移しています。

このように、POTやSWを単純に増やしていく方法では、部品数だけでなくMCUのpin資源にも制約があります。

実験用UIを作る

まだNuVCOに搭載する音作り機能は絞れていません。

そこで、最終形のUIを決める前に、いろいろな機能を試すための実験用UIを用意しました。

現在の状態を確認するためにOLEDを使い、必要な設定値も表示します。

値の変更にはRotary Encoderを使います。

1個のPOTで複数のパラメータを切り替えて操作する方法もありますが、POTには物理的な位置があります。

例えば、あるパラメータを大きな値に設定してPOTが右側にある状態で別のパラメータへ切り替えると、POTの位置と新しいパラメータの値が一致しません。

Rotary Encoderなら絶対的な位置を持たないので、表示している現在値を基準に増減できます。

OLEDで現在の項目と値を表示し、Encoderで変更する方式なら、操作するパラメータが増えても主にFirmware側の変更で対応できます。

さらにMCP23017を使い、SwitchやLEDも追加できるようにしています。

NuVCO UI Expander

NuVCOの音作りを試すために作ったUI Expander Proto-A。OLED、Rotary Encoder、MCP23017、5個のSwitchとLEDを搭載しています。

現在は、OLED、Rotary Encoder、MCP23017、Switch、LEDを NuVCO UI Expander Proto-A にまとめています。

NuVCO本体とはAdapter基板を介して接続します。

このUIは最終形ではなく、Detune RangeやVoice Spreadなど、これから試してみたい機能を操作するための実験用です。

機能を増やしても、すぐに専用POTや専用SWを追加する必要はなく、Firmware上で項目を追加し、OLEDで状態を確認しながらEncoderやSwitchで操作できます。

次回は、この実験用UIで使っているOLED、Rotary Encoder、MCP23017をどのように試し、NuVCOへ組み込んでいったかを書こうと思います。

0 件のコメント:

コメントを投稿