デジタル・アナログハイブリッドのエンベロープジェネレータを検討中です。その方が優れているという合理的な理由があるわけではなく、作れるのかな?そして作れるのならどんな音が出るだろう?という好奇心でやってます。出来上がってみたら完全に徒労でした、なんてこともあるかもしれません。
これまでは、OTA を使って回路を組んで、エンベロープジェネレータとしてはいちおう動くことを確認しました。それが以下の記事
しかし実際に動かしてみると、安定性と操作性に難があります。エンベロープジェネレータの肝である電圧制御抵抗を作るために VCA を使うわけですが、以前検討しましたが、ゲインは指数関数的に変化したほうが操作性が良いです。ところが OTA はリニア制御なのでソフトウェアを使って対応するか指数関数回路を加えるかが必要になり、どちらにしても違和感のなく操作できるようにするにはかなりの手間がかかります。それだけではなく、減衰が長くなると回路の安定性が悪くなり、今回組んだ実験回路では、減衰時間を伸ばしてゆくとある時点で突然全く減衰しなくなりました。これも OTA のリニア制御が災いしていると思います。OTA で VCA を組むとダイナミックレンジはあまり広くならないようです。つまり、エンベロープジェネレータを組むのに OTA はあまり向いていません。
安定動作する電圧制御のエンベロープジェネレータなら、SSM3010、あるいは AS3010 という優秀な先輩がいます。先輩はどうしているのか見てみることにしました。データシートに書かれているブロックダイアグラムを見る限り、電圧可変抵抗は、Blackmer Gain Cell を使っているように見えます。実際 AS3010 の減衰時間は制御電圧に対して指数関数です。(TBD: 件の箇所を抜粋する)
素直に 3010 先輩を使うのも一つの考えですが、デジアナハイブリッドでやるならやはり ADSR の枠にとどまらずももっと変則的な曲線も作りたいです。というわけで、もう少し剥きだしの回路が欲しいです。とはいえ Blackmer Gain Cell はトランジスタのばらつきで簡単に性能を落としそうな予感がします。一発目からディスクリートは避けたいです。IC を使うなら、SSM2164 は指数関数制御の電流出力 VCA で、OTA と同じくエンベロープジェネレータに使えるのではないでしょうか?
SSM2164 はまだ中身の詳細について勉強中ですが、はじめ Blackmer Gain Cell を使っているのだと思っていましたがどうもそうではないらしいことがわかってきました。でも考え方は非常に似ているのだと思います。そして SSM2164 のダイナミックレンジは非常に大きいです。行けそうな気がします。というわけで、秋月電子から SSM2164 のセカンドソースの SS2164 を仕入れてきて、以下のような実験回路を組んでみました。

12bit DAC を三台も使うコスト度外視設計です。まずは PoC に集中してコストのことは後で考えます。基本的な動作原理は OTA 版と同じです。積分器に VCA を介して負帰還をかけることによって一次の LPF を組んでいます。状態遷移のきっかけをつかむために U10A の比較器を使っており、U14 の DAC から比較器に与える電圧によってベロシティーに対応できます。U5 の DAC を使ってエンベロープの元になる励起電圧を発生します。U6 の DAC を使ってエンベロープの動きの速さを制御します。U5 と U6 はいわばアクセルとブレーキ、ここをソフトウェアで細かく制御したいという目論見ですが、まずは単純な ADSR をやってみてこの回路がそもそも動くのか確認します。
結果、ちゃんと動きました。曲線の安定性も OTA 使うより良いようです。
単純な ADSR ならファームウェアの実装は恐ろしく単純です。状態遷移の切り替わりに DAC 出力を変えるだけです。指数関数制御のおかげで、フィルタ時定数の制御もツマミの位置をそのまま電圧にするだけで良くなって非常に簡単になりました。
実際に指数関数の減衰曲線が得られているかをオシロスコープで確認しました。青線がエンベロープジェネレータの出力、赤線が比較器に入れているアタックレベルの電圧です。目論見通り指数関数の減衰ができています。またベロシティー制御も狙い通りにできています。

SSM2164 を使ったエンベロープジェネレータは、今のところ好感触です。ただ、一つ気になるのがリニア曲線の生成です。今の回路のままではできず対応するにはもう一工夫が必要そうです。

