電音の工場ブログ

趣味の電子工作を中心としたブログです.音モノの工作が多いです.

「たくさんEG」

「たくさんEG」

名称はどうしようかな。

先日のA’のEG2の拡張を検討中。

EG2は新規のオリジナル。ATmega88Pというフラッシュマイコンを利用。

これに取り組む際のコンセプトはふたつ。

  1. エフェクタ自作&操作術の101回路集のアイディアを用いる
    • (中略)
  2. 将来的にEGをたくさんインスタンスできるようにする
    • コントロールは一組、スレーブEGがたくさん
    • 接続はI2Cかな
    • EGをカスケードに繋げられるように

(中略)

EG2もアタック期間以外でゲートが立つ End of Attack (or EOA) 信号を出力する。 はてなグループの終了日を2020年1月31日(金)に決定しました - はてなグループ日記 - 機能変更、お知らせなど

動作は以前に書いたことがある。

  1. ゲート信号がきたらAttack状態として
  2. Attack担当PWMを動かし電源電圧(+5V)をチョップしながら充電。
  3. 充電電圧をマイコンアナログコンパレータで監視して+4V を超えたらDecay状態へ移行し、
  4. Attack担当PWMを止め、Decay担当PWMを動かし、Sustain電圧へ向かって放電。
  5. ゲート信号が落ちたらRelase状態に移って、
  6. Decay担当PWMを止め、Relase担当PWMを動かし、EG OFF電圧へ向かって放電する。
はてなグループの終了日を2020年1月31日(金)に決定しました - はてなグループ日記 - 機能変更、お知らせなど

EG波形の他に、End of Attack (EOA) のゲートを出力している。これはアタック以外の期間でHIGHになっている信号で、EGをカスケードにするときに使える。こういう信号が実はほかにも欲しい。End of Decay (EOD)、End of Release (EOR) である。しかしA’シンセの実装では諦めていた。

内部の動作をよくみるとわかっていただけると思うが、Attackはマイコンに内部状態*1があるので簡単にEOA信号を出すことができるのに対して、Decay や Releaseはそれを行うことが出来ない。マイコンからはDecayはSustain期間と区別がつかないし、同じくReleaseはGate Offと区別がつかない。なんとか区別をつけようとすると、コンパレータを用意して、

  • EG波形とSusutain設定電圧を比較してDecay終了期間を知る
  • EG波形とEG Off設定電圧を比較してRelease終了期間を知る

ということになる。そのコンパレータを用意するのを、実装面積が足りないとかマイコンのI/Oの空きが少ない、といったことから実施できなかった。

A’のEG2ではADSRのコントロールマイコンの内蔵ADCでやっているが、これが「たくさんEG」になったら、一組のコントロールで全部のEGインスタンスをコントロールできるからその分I/Oに余裕ができる。さらに嬉しいことには、ADCを使わないときはADCのMUX部分がACMPに使用できて、電圧比較するポートをソフトで切り替え可能ということらしい。

EGをたくさん作るとしたら、ひとつあたりの部品点数*2はなるべく減らしたいと思っていたので外にコンパレータを用意しなくて済むのはとても助かる。たくさん(4~16個ぐらい)作るときはP板を起こすのかしら。マイコンオペアンプは表面実装品がいいな…

EGの時定数も切り替えられるようにしたいかも… 結線も外からコントロールできるようにするべきか?

などと夢が広がる「たくさんEG」だが、プロジェクト名称案を思いついた。Many EGs ということで、“MEG”

*1アナログコンパレータ(ACMP)でEG電圧とAttack終了電圧の比較をするのが動作上必要であった。マイコンの内蔵のACMPを使っている

*2:現状でATmega88が1、デュアルオペアンプが2、74HC4066が1といったIC