Digital Synth VRA8-N mode-VC ― Arduino を用いたシンセサイザー
2019 年 9 月 5 日 SWEST21 インタラクティブセッション (自由工作部門)
石垣 良，技術系会社員，情報処理学会正会員，IEEE Computer Society Member，Email: ryo.ishigaki@gmail.com
概要

Arduino Uno を用いた自作のシンセサイザー「Digital Synth VRA8-N (v2) mode-VC」を，ポテンショメーターを使って演奏可能な状態で展示するとともに，設計のポイントについて説明する．なお，本作品は SWEST20 インタラクティ
ブセッションで「ベストプロダクト賞 ブロンズ」を受賞した『Arduino を用いた MIDI 音源 ― Digital Synth VRA8-N』の派生作品であるとともに，Maker Faire Tokyo 2019（主催：株式会社オライリー・ジャパン）の出展予定作品でもある．

1

Digital Synth VRA8-N (v2) 仕様●Arduino Uno（8 ビット CPU）だけでサウンド生成する，モノフォニック（単音）シンセサイザー（MIDI 音源）●「mode-VC」で動作させることで電圧制御に対応，ポテンショメーター等を使って演奏可能●MIDI 入力：USB シリアル（38.4 kbps）または MIDI（31.25 kbps）※「mode-VC」でも MIDI 制御可能

●オーディオ出力：単極 PWM（62.5 kHz，ピン D6 or D5）＋RC 回路（推奨，fc：15.9 kHz，R：100 Ω，C：100 nF）●オシレーター：ノコギリ波・矩形波・ノイズ（2 のみ）●サブオシレーター：サイン波・矩形波・ノイズ●LFO：三角波・三角波 2・ノコギリ波・ランダム・矩形波（LED 出力：ピン D5 or D6）●フィルター：2 次 LPF（fc：784.0 Hz～12.5 kHz）
●サンプリング周波数/ビット深度：31.25 kHz/8 bit●位相分解能：24 bit●音域：C-1 ～ C9（中央ハが C4）●ポルタメント・ピッチベンド・モジュレーション・エクスプレッション（またはベロシティ）：対応●Arduino IDE 1.8.5 を強く推奨●スケッチはフリーで公開●Web サイト： http://risgk.github.io/

コントローラー一覧（v2.3）
OSC1/2 WAVE (SAW/NOI/SQ)

OSC MIX (1/2)

OSC2 COARSE TUNE (-/+)

OSC2 FINE TUNE (-/+)

SUB WAVE (SIN/NOISE/SQ)

SUB LEVEL

EG > PITCH (-/+)

EG > PITCH TARGET (1&2/2)

CUTOFF FREQUENCYRESONANCE

EG > CUTOFF (-/+)

AMP EG (OFF/ON)

ATTACKDECAY

SUSTAIN

RELEASE (OFF/ON)

LFO WAVE (T/2/SA/RND/SQ)

LFO RATE

LFO > PITCH (-/+)

LFO > CUTOFF (-/+)

LFO DEPTH

EG > LFO RATE (-/+)

LFO > PITCH TARGET (1&2/2)

LFO FADE TIMEPITCH BEND RANGE ※PITCH > CUTOFF ※EXPRESSION > CUTOFF (-/+)

EXPRESSION > AMP LEVELPORTAMENTO TIMELEGATO (OFF/ON) ※KEY ASSIGN (L/L/P/H/LAST) ※EXP BY VELOCITY (OFF/ON)

OSC LEVELRESONANCE LIMITAMP LEVELDAMP AND ATTACK※「mode-VC」では無効

ブロック図（v2.3）[ EG (Envelope Generator) ]......................................................
::::::....>[ OSCILLATOR 1 w/ SUB OSCILLATOR ]-------+::VV:::..>[ OSCILLATOR 2 ]--------------------->[ MIXER ]--->[ FILTER ]--->[ AMP ]--->[ AUDIO OUT ]V::A..>[ LFO (Low Frewquency Oscillator) ].........................:....................>[ LFO LED OUT ]回路図（v2.3）

実装例（Grove システムを使用）

2「mode-VC」仕様
電圧制御（voltage control）に対応し，ポテンショメーターやアナログシーケンサーを使って演奏可能．Arduino 用シンセの名作「Auduino（オーデュイーノ）」へのリスペクトを含む．
スケッチ書き込み前に#define でモードを選択する．
具体的には，0 ～ 5 V の制御電圧（control voltage）によって音色や音高を調整する．デフォルトの設定は以下の通り．
（A4 や A5 の使用や GATE 入力対応の改造も可能）
A0：CUTOFF 調整，A1：RESONANCE 調整，A2：OSC MIX調整，A3：PITCH 調整（いわゆる CV 入力，0V で発音オフ），
D2：音色 PROGRAM 変更（途中から RAMDOM CTRL），D4：SCALE MODE 変更（MODE 0「C Major (2Oct /5V)」，MODE 1「Chromatic (2Oct / 5V)」，MODE 2「Linear (5Oct / 5V)」）

3「mode-VC」設計ノート●AD 変換処理の効率化●AD 値の「ゆらぎ」対策

開始・結果取得関数（約 250 μ 秒後に呼ぶ）を用意して，変換待ちがビジーになるのを回避．
測定誤差やノイズによって調整値がズレるのを防止するため，AD 変換結果の値（0 ～1023）を前回値と比較して「±1 以内の変化」は無視．ただし，Arduino を AC アダプターで動かさないと安定しない．
●ボタン入力のチャタリング防止

カウンターを使って，「デジタル入力値 High/Low の変化後，約 50 ms 経過するまで」は電圧をチェックしないようにしている．

過去作品の資料
・「Digital Synth VRA8-N (v1) 説明資料」（2018 年）http://risgk.github.io/digital-synth-vra8-n/mft2018_isgk_instruments.pdf
・「Digital Synth VRA8-Px 説明資料」（2017 年）http://risgk.github.io/digital-synth-vra8-px/mft2017_isgk_instruments.pdf
・「Digital Synth VRA8-P 説明資料」（2016 年）http://risgk.github.io/digital-synth-vra8-p/mft2016_isgk_instruments.pdf
・「Ruby x Arduino でシンセサイザーを作ってみた」（2015 年）https://gist.github.com/risgk/0db52ea683530652d933