Arduinoを使ったEnvelope Generatorの2台目を製作しました。
改良点
- ロータリースイッチを小型のものにしてパネル幅を縮小。
- LEDを3mmに変更。
- ファームウェアのバグで出力波形がおかしくなる時があったのを修正。
- GateDelayの最大値を大きくした。
- 忘れていた手動GATEスイッチを付けた。
EGを複数台使う
VCAとVCFやVCOなどを別のADSR波形で変調することができ、音作りの幅が広がります。単体のシンセではVCA用とVCF用に2系統のEGが用意されていることが多いようです。
ArEGにはGate信号を遅延させて出力する仕組みを設けており、2台目のEGに遅延したGATE信号を送ることが出来ます。元のEGと遅延させたGATE信号を入力したEGのADSR出力を、ミキサーでミックスすると合成波形を得ることができます。
ADSRを合成した波形
前回は秋月の大型のロータリースイッチを使っていましたが、今回はAliExpressで購入した小型のものを使いました。
秋月のロータリースイッチはΦ26で、AliExpressのものは幅10mmです。パネル幅をHP10(幅50.5mm)からHP8(幅40.3mm)に縮小することができました。
LED
LEDを5mmから3mmに変更しました。ポリカパネルと5mmのLEDは接着剤を使わずに固定できましたが、アクリルパネルと3mmのLEDの場合は穴径の調整が難しくそのままではユルユルなので試しにアクリル接着剤(二塩化メチレン)を使ってみました。
慣れないせいか、付属の注射器をうまく操るのが難しくそこら中にかかってしまいました。拭き取りが甘いと透明アクリルが白濁します。
LED(エポキシもしくはシリコーン樹脂と思われます)との接着だと時間が経っても固着力が弱く、ジャックなど他の部品を取り付けるときにポロッと外れてしまいました。見栄えは悪いですが、結局ホットボンドで固定しました。
ADSR波形出力のバグ
Attackステート時にThresholdまで電圧が上る前にGate OffしてしまうとAttackのゲートが閉じず、ADSR波形が連続してしまうというバグがありました。
CH1:GATE CH2:ADSR
左の波形が誤動作している状態。
AttackステートからDecayステートを経ず、いきなりReleaseステートに入る場合があるのを忘れていたので修正しました。
GateDelayの最大値
暫定的に最大遅延102msにしていましたが、最大遅延1024msに変更しました。
プログラムの都合上、次のGATE信号が来るまでしか遅延できません。120BPMの4部音符だとGATEの間隔500ms、8部音符だと250msなのでわりと簡単にオーバーしてしまいますが、GateDelayのインジケータLEDがつきっぱなしになるので判別はできます。
ファームウェア(Arduinoスケッチ)
メモ
パネル加工時に間違えてロータリースイッチの位置が右(POT側)に寄りすぎて操作がしにくいです。ジャックの中間ぐらいにずらしたほうが良い。
テンポが早い場合調整幅が小さくなるので、GateDelayの設定はAカーブのPOTを使ったほうが良いかも。