見出し画像

$9 Unison VCO - DIY Eurorack Modular Synthesizer

背景

自作モジュラーシンセの83作品目。
前回、Seeed XIAO RA4M1を使ったシンプルなVCOを作成した。

今回はそのVCOをベースに、モジュラーシンセ用のデジタルVCOモジュールを作るべく企画をした。
RA4M1は2オシレータで動作が安定しているため、2オシレータを使ったUnison VCOのDIYを企画した。

制作物のスペック

ユーロラック規格 3U 6HPサイズ
電源:10mA( ±12V ) , 20mA(5V)

Seeed XIAO RA4M1を使用した2オシレータ デジタルVCO。
V/octをサポートし、波形は16種類のwavetableから選択する。
OSC1とOSC2の周波数は常に相対的な位置関係にあり、OSC2の周波数をずらすことで、detuneや倍音を付加することができる。

OSC1 FREQ POT:OSC1とOSC2の基準周波数の調整
OSC2 FREQ POT:OSC2のOSC1に対する相対的な周波数の調整。0oct~2oct上まで設定できる。
OSC2 volume POT:OSC2の音量調整
OSC2 volume CV in:OSC2の音量調整のCV入力
Wave push SW:wavetableの選択。全16種類。
V/oct IN:V/oct入力、範囲は0~5V。
OUT:オーディオ出力、範囲はVpp10V。

選択した波形の情報はEEPROMに記録される。電源の再投入時は最後に選択していた波形が選択されている。

製作費

総額約$9
---------------------------------
Seeed XIAO RA4M1 $5
TL074 $0.4
フロントパネル $1
可変抵抗 $0.2*3pcs
他(汎用部品は下記リンク先参照)

今回のモジュールの中核になるのはSeeed XIAO RA4M1だ。Arduino UNO R4と同じルネサス製マイコンを使用しているため、多くの情報をネットで調べることができる。

入出力電圧はUNO R4が5Vなのに対し、XIAOは3.3Vなのに注意。
また、一部のpinが持つ機能に差があるため、UNO R4とXIAOに完全な互換性は無いことに注意が必要だ。

ハードウェア

回路全体は以下の通り。

似たような回路は、過去の私のデジタルモジュールで何度も登場しているので、詳細な説明は割愛する。
入力回路では5Vを3.3Vに分圧する。出力では3.3Vを10Vに増幅している。
V/octのハードウェアによる誤差は、ソフトでキャリブレーションしている。

XIAOのA4pinはADCとして使用する事が出来なかったので、オペアンプの反転加算回路でアナログ的に加算処理をしている。
おそらく、Cソースを書けば他のADCにアクセスできると思うのだが、私には無理だった。

ソフトウェア

過去に作成したRA4M1のソフトウェアの8割を流用している。

2つめのオシレータを準備して、その音量をコントロールしているだけだ。
なお、3つめのオシレータを加えると動作が不安定になった。

wavetable

今回は16種類のwavetableを準備した。
これまではエクセル等の表計算ソフトを使ってwavetableを作っていたのだが、データ量も多くて作業量が多くなったので、pythonを使ってwavetableを作成することにした。

といっても、私もpythonを使うのは初めてなので、初心者向けの本を読んで1から勉強をしたのだ。私は、ソフトウェアは独学だ。

pythonの学習が終わったら、コーディングはChatGPT 4o with canvasを使った。1行もコードを書いていない。

Arduinoのテーブル形式でwavetableをテキスト形式と画像で出力するpythonプログラムだ。波形パラメータを入力することで、波形の形を変えることができる。
3種類のプログラムを作成した
・4波形の加算合成:周波数比と各音量を調整可能
・PWM:DUTY比を調整可能
・2OP FM:モジュレータの周波数と比率を調整可能

https://www.patreon.com/posts/wavetable-python-114675733?utm_medium=clipboard_copy&utm_source=copyLink&utm_campaign=postshare_creator&utm_content=join_link

このwavetable作成プログラムはpatreonにて掲載しているので、そちらも参照してもらえると今後の活動の助けになる。
ただ、プログラム自体はChatGPTでも簡単に生成できるので、是非自分の手で生成してみてもらいたい。

バグ

pushボタンで音色を選択する際、16番目のwavetableから変更する際にノイズが発生する。
未検証だが、wavetableを変更中は音声出力の割り込みを止めれば解決できると思う。ソースコードが複雑化してしまうのと、使用する際に困らないので、バグは放置してある。

宣伝:オープンソースプロジェクトの支援をお願いします

DIYモジュラーシンセのオープンソースプロジェクトを継続するために、patreonというサービスでパトロンを募集しています。
コーヒー一杯の支援をいただけると嬉しいです。
また、パトロン限定のコンテンツも配信しています。

ソースコード

添付ファイルをダウンロードすべし。
wavetableの文字数が多すぎて、ソースコードを記事に掲載することができなかった。

この記事が気に入ったらサポートをしてみませんか?