ハードウェアの構成

概要
  • USBケーブルでPCとArduino Uno(本体)を接続し、PCからUSBシリアル(38400 bps。USB MIDIではありません)で本体を制御します。
  • ArduinoのD5(L)、D11(R)ピンから、62.5 kHzのPWMでラインレベルのオーディオ信号を出力します。
  • USB通信ノイズを減らすため、ACアダプターの使用を推奨します。
  • MIDIシールド等とACアダプター(通信しないUSB給電でもOK)の併用でMIDIケーブルを接続でき、USB通信ノイズを無くせます。
  • 注意:MIDIブレイクアウトボードをMIDIシールドと呼ぶ場合もあります。(ハンダ付け済みのものがAmazon等で買えます)

部品リスト

基本部品
  • A1:Arduino Uno Rev3
  • U1:オーディオジャック(3.5 mmステレオミニ等)
  • R1,  R2:220 Ω抵抗
  • C1, C2:100 nFコンデンサ
  • C3, C4:10 uF電解コンデンサ
  • ブレッドボード等、ジャンパー線

オプション部品
  • Arduino Uno用ACアダプター(MIDIシールドを使う場合は、通信しないUSB給電でもOK)
  • MIDIシールド(またはMIDIブレイクアウトボード)
  • ネジシールド(スクリューシールドとも。ArduinoとMIDIシールドの間に挟むと、ハンダ付けせずにオーディオ出力を取り出せます)

推奨回路図

  • 拡大画像:https://risgk.github.io/digital-synth-vra8-u/vra8-u-circuit-diagram.png
  • RC回路(1次LPF)で、オーディオのPWM出力をなまらせています。
  • 電解コンデンサ(ACカップリングコンデンサ)で、オーディオ出力のDC成分をカットしています。

実体配線図

  • 拡大画像:https://risgk.github.io/digital-synth-vra8-u/vra8-u-bread-board.png

実際の配線例

  • Arduinoからオーディオ出力(LはD5ピン、RはD11ピン)とGNDを引き出しています。写真ではネジシールドを使用していますが、これは必須ではありません。
  • 使用しているオーディオジャックは、ネジ留め式タイプです。
  • Arduinoとブレッドボードを結ぶプレート(ABCプレート)を使っています。
  • 注意:この例では、電解コンデンサを省略しています。あまり良くありませんが、オーディオジャックの先のアンプがDC成分をカットすることを期待できるので、問題は起きにくいと思います。

オプション:MIDIシールドを使用する場合

  • 写真は、シリーズ作品VRA8-QでのMIDIブレイクアウトボードの使用例です。
  • スケッチ "DigitalSynthVRA8U.ino" で #define SERIAL_SPEED (38400) でなく #define SERIAL_SPEED (31250) を有効にすると、MIDIシールド(またはMIDIブレイクアウトボード)を使用可能になります。
  • 注意:スケッチ(ファームウェア)の書き込み時には、ボードのスイッチをOFFにする必要があります。

オプション:MocoLUFAでUSB-MIDI制御に対応

  • USB-シリアル変換処理をATmega8U2またはATmega16U2で行うArduino Uno Rev3の純正品または互換品を使用している場合は、morecat_labs様が公開しているMocoLUFA(Midi Firmware for Arduino Uno)を書き込むことで、USB-MIDIで制御できるようになります。
  • #define SERIAL_SPEED (31250) を有効にしてください。
  • http://morecatlab.akiba.coocan.jp/lab/index.php/aruino/midi-firmware-for-arduino-uno-moco/

その他の情報

  • ISGK Instruments  https://risgk.github.io/
  • GitHub  https://github.com/risgk/digital-synth-vra8-u

参考:Amazonで購入できる基本部品(2022/09/06)

  • https://www.amazon.co.jp/dp/B08H1RB61B (¥1,450) Arduino Uno Rev3互換ボード
  • https://www.amazon.co.jp/dp/B079GVH84X (¥1,099) オーディオジャック
  • https://www.amazon.co.jp/dp/B08BF58FWX (¥2,019) 抵抗、コンデンサ
  • https://www.amazon.co.jp/dp/B08B63VNCH (¥  998) ブレッドボード、ジャンパー線

参考:Amazonで購入できるオプション部品(2022/09/06)

  • https://www.amazon.co.jp/dp/B076C5VX8J (¥  900) ACアダプター
  • https://www.amazon.co.jp/dp/B08F9RZ9MW (¥1,610) MIDIブレイクアウトボード
  • https://www.amazon.co.jp/dp/B084VNTGBQ (¥  999) ネジシールド
  • https://www.amazon.co.jp/dp/B009AM67BA (¥  913 + 200) ABCプレート ※スイッチサイエンスで販売

ソフトウェアのインストール

  • https://github.com/risgk/digital-synth-vra8-u/releases/latest からDL、"DigitalSynthVRA8U.ino" をArduinoに書き込む。
  • https://www.tobias-erichsen.de/software/loopmidi.html からloopMIDIをDL、インストール。(Windowsのみ)
  • https://projectgus.github.io/hairless-midiserial/ からHairless MIDI<->Serial BridgeをDL、展開。

Arduinoのバージョンについての注意

  • 正常動作のために、Arduino AVR Boardsバージョン1.8.5の使用を強く推奨します。
  • 【追記】Arduino IDE 1.8.19標準のArduino AVR Boardsバージョン1.8.3でも問題ありません。
  • Arduino IDEのボードマネージャで、ボードのバージョンを選択できます。

スケッチの書き込み時の警告について

  • スケッチの書き込み時に、“スケッチが使用できるメモリが少なくなっています。動作が不安定になる可能性があります。”という警告メッセージが表示される場合がありますが、無視して大丈夫です。

USBシリアル制御の準備(Windowsの場合)

  • MIDIをUSBシリアルに変換します。(MIDIシールドを使用する場合は不要です)
  1. loopMIDIを実行。
  2. Hairless MIDI<->Serial Bridge("hairless-midiserial.exe")を実行。
  3. Serial PortでArduino Uno (COM*) を選択。
  4. MIDI InでloopMIDI Portを選択。
  5. [File] > [Preferences] > [Baud rate] を38400 bpsに設定。
  • 注意:音が出ない場合、Serial Portを選択し直すとうまく動く場合があります。

USBシリアル制御の準備(Macの場合)

  • Macの場合は、loopMIDIを実行する代わりに、IACドライバのバス(ポート)を設定してください。
  • 参考:  MacのAudio MIDI設定でMIDI情報をアプリケーション間で送信する - Apple サポート (日本)

オプション:16ビット出力に対応した特別版「VRA8-U type-16」の動作方法

  • コーラスエフェクトが一部制限されますが、16ビットのオーディオ出力によって、音質がアップします(量子化ノイズが目立たなくなります)。
  • VRA8-U v2.0以降でサポートされます。
  • 専用の回路を組み、"DigitalSynthVRA8U.ino" の //#define ENABLE_16_BIT_OUTPUT をコメントアウトすることで、「VRA8-U type-16」が動作します。

「VRA8-U type-16」推奨回路図

  • 拡大画像:https://risgk.github.io/digital-synth-vra8-u/vra8-u-type-16-circuit-diagram.png

  • 左右チャンネルでPWM出力ピンを2個ずつ使い、上位8ビットと下位8ビットのPWM出力を抵抗で重み付けしてミックスします(デュアルPWM)。
  • 左・上位8ビット:D5
  • 左・下位8ビット:D6
  • 右・上位8ビット:D11
  • 右・下位8ビット:D3
  • 注意:SparkFun MIDI Shield(DEV-12898)を使う場合は、S4(D3)とLED2 GREEN(D6)をハンダ付けしないでください。

追加部品
  • R3,  R4:56k Ω抵抗

「VRA8-U type-16」実体配線図

  • 拡大画像:https://risgk.github.io/digital-synth-vra8-u/vra8-u-type-16-bread-board.png

コーラスエフェクトの制限

  • Chorus Mode「Mono Chorus」と「Stereo 2-phase Chorus」が使えません。
  • Chorus DepthとChorus Delay Timeの効果が半分になります。
  • プリセットのChorus Modeは「Pseudo-Stereo Chorus」に変更しています。このコーラスは、左右チャンネルを加算するとディレイ成分が消えてしまうタイプなのでご注意ください。

制御用アプリ

  • VRA8-U type-16 CTRL(vra8-u-type-16-ctrl.html)を使用してください。
  • VRA8-U CTRLとほとんど同じ仕様ですが、一部パラメータの説明やプリセットの値が異なります。

参考:Amazonで購入できるオプション部品(2023/01/06)

  • https://www.amazon.co.jp/dp/B08MZPWK7S (¥  866) 56kオーム抵抗
  • https://www.amazon.co.jp/dp/B08ZJJLG5V (¥  960) 抵抗セット