ハードウェアの構成
概要
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シールドを使用する場合は不要です)
loopMIDI
を実行。
Hairless MIDI<->Serial Bridge
("hairless-midiserial.exe")を実行。
Serial Portで
Arduino Uno (COM*)
を選択。
MIDI Inで
loopMIDI Port
を選択。
[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「
M
ono Chorus」と「
S
tereo
2
-phase Chorus」が使えません。
Chorus DepthとChorus Delay Timeの効果が半分になります。
プリセットのChorus Modeは「
P
seudo-
S
tereo 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) 抵抗セット