HAGIWO Triple VCO を作る

概要

まず、音の元になるVCOを作ることにした。HAGIWOさんの作品からVCOを探すと10件ほどあるが、その中から初期の作品が基本的なモジュラーシンセだと自己解釈して、次のものをピックアップした。


該当ブログのHAGWOさんの説明をみると、ハードはほぼ同じ構成でソフトで機能・特性を変えているようだ。

  1. No.18 2OSC VCO : mozziライブラリを使った2オシレータ VCO
  2. No.19 FM VCO : mozziライブラリを使った2OP FM VCO
  3. No.22 Additive VCO : mozziライブラリを使った倍音加算式VCO
  4. No.23 CHORD VCO : mozziライブラリを使ったコードオシレーター


HAGIWOさんの作品は海外で評判が高く、Lookmum No Computer でレビューされていたり、Github にモディファイしたモデルが挙がっている。


以下の3件は、FM, Additive, Chord VCO をひとつのモジュールに統合して、スイッチでそれぞれの機能を切り換えれるようにしたものである。自分はこういったことにとても興味を惹かれる。それで、これを作ってみることにした。

本文

Triple VCO

お手本モデル

2例目のpansapiensモデルを作ることにした。特徴はGithubの説明通りで、その中の最後の一文がきめて。(Google翻訳)

これは、4HP ユーロラック モジュールとして組み合わせたHAGIWO DVCO ( luislutzによってリミックス)のプロトボード レイアウトです。これは、Arduino Nano と Mozzi ライブラリに基づいています。

このモジュールには、コードジェネレーター、アディティブシンセモード、FMシンセモードの3つのモードがあります。

また、OpenSCAD および STL 形式の 3D 印刷可能なフロント パネルも含まれています (各隅に M2 ネジ穴がある 30x70mm プロトボードの特定の部分に合わせて調整されていますが、必要に応じて簡単に変更できます)。

元のデザインと比較すると、次のようになります。

  • 過電圧保護のためにショットキー ダイオードではなく単一の 5.1 V ツェナー ダイオードを使用します (これは私が手元にあったもので、今のところ正常に動作しているようです)。
  • 3 つの LED ではなく 1 つの RGB LED を使用します。
  • モード切り替えにモーメンタリー ボタンを使用します (ハードウェア デバウンスあり)

基板設計と製作

はじめて、Stripbordを使ってみる。日本ではあまり見かけないが、欧米のDIYにはよく使われているらしい。このボードはAliexpressで見つけて入手した。

Stripbord上の実体回路を書いて、その図を見ながら部品をはんだ付けする使い方のようだ。Lookmum No Computer フォーラムに実体図がよく出ている。この実体図を描くためのPCソフトがGiyhubにあるが、少し触ってみた感じでは描画ソフトに過ぎず、自分には使い勝手が悪い。回路図を基本にしないと、頭の中では結線がわからないし、そのチェックもできない。

そこで、使い慣れたKicadを使い、回路図を描いてからStripbord風のPCB配置図を作ることにした。

kicad of Triple VCO


PCB of Triple VCO

Stripboardは、1行ごとにつながっている導体バスバーをドリルで削って回路パターンを作れる基板で、回路作りと部品のはんだ付けが別工程になる作り方である。

PCB基板のように回路パターンは出来上がっているので、決められた個所に抵抗などの部品を載せていくだけである。自分はこの方が好みだ。搭載設計が未熟な私にとっては、Stripbordの方がきれいにできる。ただし、出来上がった回路の大きさはユニバーサル基板に比べて大きくなる気がする。

some viewes Triple VCO

some viewes 2 of Triple VCO

トラブルシューティング

マイコンにはArduino Nano(互換機) を使っている。HAGIWOさんも、Githubの3事例とも同じである。

ソフトは引用元のTriple_DCO_1.3.1.inoを書き込んだ。しかし、下図に示すように、私の環境では全く音声波形が出てこない。スイッチによる切替わりはLEDによって確認できるものの、Chord, Additive, FM の3つのモードとも同じように波形が出てこない。32.7kHzのサイン波は出ているが、可聴域の波形は出てこない。32.7kHz はMOZZiのPWM波形のだと思う。


なので、ここから、試行錯誤が始まった。

oscillo

HARD(回路と基板)のバリデート

部品や回路結線は間違いなく組まれていることを確認した。その後下記の検証実験をやってみた。

  1. Arduino NanoにTriple_DCO_1.3.1.inoのスケッチ: NG, Chord, Additive, FM の切替わりはするが、とも波形が出ない。
    ⇨ 基準:前項の結果
  2. Arduino NanoにMOZZi のサンプルスケッチを書き込んで、動作確認: OK
  3. Arduino Nanoに3種類単独VCO のスケッチをを書き込んで、動作確認: Additive - OK, FM - OK, Chord - NG
    ⇨ なぜか、Chord VCO は動かない。
  4. Arduino Uno(互換機、Atmega328PA-AU, マイコンは32ピンだがボードは28ピン)+ Triple_DCO_1.3.1.ino : OK 
    ⇨ 正常;3つのVCOをスイッチで変更できる。
  5. Atmega328PA単体(秋月購入品、Unoのブートローダ書き込み)+ Triple_DCO_1.3.1.ino : OK
    ⇨ 3つのVCOをスイッチで変更できる。
  6. Arduino Nano(Uno のブートローダ、IDEはUnoと認識): 3と同じでNG
    Uno仕様だとメモリが少し増える

ここまで調べた結果、Triple_DCO_1.3.1.inoのスケッチがうまく動くかどうかはマイコンに依存しているように思う。
使っているArduino UnoはAliexpressの互換品なので、正規のArduino Nanoだと問題ないのかもしれない。

ソフト(スケッチ)でのバリデート

Arduino Nano は上記6番目の仕様(Uno のブートローダ)に固定し、スケッチを変更してみる。


他にも色々な組み合わせ(ボード x スケッチ)で試行錯誤しているうちに、Triple_DCO_1.3.1.ino が正常に動作しない理由が、Nano搭載のメモリに対する書き込んだスケッチの占有率にありそうな気がしていたので、メモリ占有率が異なるスケッチを書き込んで確かめてみたのが、下記の結果である。

  1. Triple_DCO_1.3.1.inoのスケッチ: NG
    ⇦ メモリ占有率 93%/3256Bytes
  2. 同じ機能の他スケッチ(hagiwo_triple.ino): NG, Chord, Additive, FM の切替わりはするが、とも波形が出ない。Triple_DCO_1.3.1.inoのの結果と同じ
    ⇦ メモリ占有率 85%/3256Bytes
  3. Hagiwo 2OSC_VCO.ino (冒頭の概要欄で1番目にリストアップしたVCO): OK
    ⇦ メモリ占有率 79%/3256Bytes
  4. Additive と FM を結合したスケッチ(拙作): OK
    ⇦ メモリ占有率 60%/3256Bytes

ここであらためて書いておくが、上記1番目のメモリ占有率であっても、Arduino Uno互換機やAtmega328pA単体では問題なく動作する。占有率はボードによって数%変わるようだが、90%は超えている。が、Arduino Uno互換機やAtmega328pA単体ではTriple_DCO_1.3.1.ino が正常に動作する。

Arduino Uno のAtmega328 乗せ換え

秋月より、Atmega328PB-AU を入手し、Arduino Nano互換機に乗せ換えた。

Atmega328PB


Atmega328PB-AUAtmega328PA-AUの改良版とのこと。メモリに変化はない。
ブートローダは、ボードマネージャからminiCoreボートをインストールして、Atmega328PB専用のブートローダを書き込まなければ使えない。また、Mozziもヘッダファイル(Mozzi/config/known_16bit_timers.h)を修正する必要があった。(下記、関連リンク参照)

  1. Atmega328PB-AU乗せ換えArduino Nano にTriple_DCO_1.3.1.ino: NG   ⇦ メモリ占有率 93%/3256Bytes
  2. Atmega328PB-AU乗せ換えArduino Nano にhagiwo_triple.inoOK 正常
    ⇦ メモリ占有率 85%/3256Bytes

メモリ占有率 93%のTriple_DCO_1.3.1.inoのスケッチでは正常な音声波形にならなかったものが、メモリ占有率 85%のhagiwo_triple.inoのスケッチで正常になった。

Triple_DCO_1.3.1.inoではうまく動かなかったのでスケッチを書き直したと、Githubで説明されている。

次に載せる3つのオシロ波形が、順にCHORD、ADDITIVE、FM VCO の波形である。

CHORD

ADDITIVE

FM VCO

まとめ

  • 予備試験を省いて回路基板を組んでしまったので、Arduino Nano を使うしか選択肢がなく苦労した。
  • 明確な原因は不明だが、うまく動くHAGIWO Chord, Additive, FM のTriple VCO を作ることができた。
  • ユニバーサルボードよりも、Stripbordで実装する方が、回路チェックまで含めてやりやすい。
  • Atmega328PAよりも安いAtmega328PBの使い方を経験できた。Atmega328PAではVCCとGNDに割り振られているポートが、Atmega328PBではI/Oポートになっているので、乗せ換えで動くか心配だったが、幸いうまくいった、

関連リンク

Next Post Previous Post
Gemini