アナログシンセ CV インターフェース

簡易的ですが、ADuC7026 版では、パート 0 に割り当てられた MIDI チャンネルの、 ピッチ CV、ゲート信号、オペレータ 1 のエンベロープを出力しています。  いわゆる MIDI2CV の簡易的な機能です。

ピッチ CV については、MIDI ノート、ピッチベンド、チューニング、ビブラート、 ポルタメントなど、ピッチに影響を与える要素をすべて含んだ、リニア CV となっています。

これに接続するアナログ VCO は Hz / V タイプのリニア VCO を想定しています。  ここに外部から変調を加えることは考えていません。  もし外部変調が必要なら、そのアナログ変調電圧を AD 変換してディジタル値で読み込み、 計算で変調をかけるようにプログラムする必要があります。

MIDI では、最低音のノート番号「0」から、最高音のノート番号「127」までの 10 オクターブ半に 渡る音程を表現できます。  この全範囲の周波数リニア CV を単一の DAC を用いて実現するためには、 かなりの高精度を要求されます。

高価な高精度 DAC を使用しなくてすむように、ここでは、次のような方式をとりました。

  1. 比較的低精度の DAC でトップオクターブの CV をアナログ電圧として出力。
  2. その電圧を 1/2, 1/4, 1/8, … と分圧して、目的のオクターブの CV を得る。

(1) については、たとえば、トップオクターブの「C」を 1.000 V とすると、 「C#」は 1.059 V、「D」は 1.122 V、… 、ときて、「B」は 1.888 V になります。

(2) については、ディジタル値で、オクターブを指定するコードを出力し、 分圧回路の出力を選択します。  たとえば、(1) の例のトップオクターブの電圧値に対して、 「C10」 = 1.000、「C9」 = 0.500 V、…、「C0」 = 0.976 mV を出力します。  この部分を「オクターブ・セレクタ」と呼ぶことにします。

この方式を、f-NHCV (floating - Numeric Hz/V Control Voltage) 方式と、適当に名付けました。  「NHCV」は、そのまま、「数値による Hz/V 方式の CV」という意味です。  「floating」とは、トップオクターブの CV が、2進浮動小数点表現の「仮数部」に相当し、 オクターブ選択コードが2進浮動小数点表現の「指数部」に相当するためです。

実は、FM 音源の本来の処理 (フェーズ・ジェネレータの増分の計算) で求めている値を 流用しているので、アナログシンセ CV のために、特に処理を追加してはいません。

ただし、同時発音数を可変にしたので、サンプリング周波数も変化します。  FM 音源としては、サンプリング周波数の変化に対応して、フェーズ・ジェネレータの増分も 変化させる必要がありますが、一方、アナログシンセ用 CV については サンプリング周波数に依存しません。

そのため、同様の処理を、シンセ CV 用と、FM 音源用の2系統にわけて処理しています。

「オクターブ・セレクタ」については、次の3種を考えています。  まだ実験をしていなかったり、実験したけれども十分な成果がまだ得られてなかったりするので、 「できるはずだ」というレベルの話です。

  1. ラダー抵抗ネットワークとアナログ・スイッチ
  2. PDM (Pulse Density Modulation) による、時間ドメインでのスイッチング
  3. ハイブリッド DDS (Direct Digital Synthesizer)

(1) については、「Richman's Octave Selector」(お金持ちのオクターブ・ セレクタ) という 別名を付けました。  もう少し真面目に言えば、「Resistor-network Octave Selector」で、 頭文字は「ROS」になります。

通常の DAC と同様の R-2R 抵抗ラダーで構成しますが、トップオクターブの CV の入れ方と、 出力の取り出し方が違います。  高精度の抵抗を使えば、無調整で製作できると思います。 →(回路図)

たとえば、10 オクターブ分の回路を作成すると、抵抗は 20 本必要となり、0.1 % 級の 抵抗は1本 116 円で売られていますから、抵抗の代金だけで 2,320 円になります。  これが「お金持ちの」と名づけた理由です。

もっと低精度の抵抗を選別してから使用したり、調整の手間を覚悟すれば、 コストを下げることはできます。  そんなわけで、この方式は、まだ実験していません。

回路図は、「こうすればいい」という原理を図にしたもので、実際に試していませんので、 この通りに作ってうまく行くかどうかは分かりません。

出力側のバッファ OP アンプから最終的なリニア CV が出力されますから、この OP アンプ ではオフセット電圧が問題になります。 低オフセットの OP アンプを使うか、 オフセット調整を施す必要があります。

アナログスイッチとして、安価な 74HC シリーズの IC を使えるように、CV としては 5V 以下に 制限しています。 もちろん、お金持ちの方は高価で入力電圧レンジの広い 高性能アナログスイッチをお使いになるといいと思います。

また、この回路に接続するアナログ VCO は電圧入力を想定していますが、実際には、 典型的な Oct/V 方式の VCO では、デュアル・トランジスタによる アンチログ回路 + 電流制御リニア VCO という構成になっています。 そのタイプの VCO の後半部分を流用するには CV を電流出力に変換する必要があります。

(2) については、「Poorman's Octave Selector」 (貧乏人のオクターブ・ セレクタ) という 別名を付けました。  もう少し真面目に言えば、「PDM Octave Selector」で、頭文字は「POS」になります。

高精度の抵抗は高価ですが、高精度な時間間隔の作成にはコストがかからないのを利用して、 デューティー比が 1/2, 1/4, 1/8, … の周期波形を時間平均して、オクターブ比を 作り出す方式です。

「それじゃ、PWM (Pulse Width Modulation) と同じじゃないか」と言う声が 聞こえてきそうで、実際のところ、そうなのですが、PDM (Pulse Density Modulation) を 名乗るのには訳があります。

通常、PWM ではパルス周期は一定で、パルス幅を可変します。  ハードウェアも、そういう使い方に便利に作られていて、パルス幅を決定するレジスタが ダブル・バッファになっていたりします。

PWM 出力はフィルタによって平滑化し、ほぼ直流として CV に利用するわけですから、 PWM 周波数は、なるべく高く選ぶ必要があります。

たとえば、PWM クロックが 1 MHz の場合、デューティー 1/2 に対して、 「H」 = 1 us、「L」 = 1 us と選べば、PWM 周波数は最高の 500 kHz になります。  同様に、デューティー 1/4 については、「H」 = 1 us、「L」 = 3 us とすれば、 PWM 周波数は最高の 250 kHz になります。

つまり、デューティーにかかわらず、いつでも「H」パルス幅を最小値に選べば、 PWM 周波数は最大になります。

この場合、パルス幅は一定で、単位時間あたりのパルスの密度 (density) が変化して デューティーを変化させているという意味で、PDM (Pulse Density Modulation) と呼んでいます。

この方式の欠点としては、トップオクターブ CV は(PWM利用ではない、連続時間の)通常の DAC を 使用する必要があることです。  PDM によってトップオクターブ CV を時間的に一部切り取り、他の時間を 0 で埋めて 時間平均を取っているので、肝心のトップオクターブ CV が時間的に変動していては 都合が悪いことになります。

実際の回路としては、アナログスイッチの切り換え信号として PDM 出力を使い、トップ オクターブの CV と 0 V とをアナログ・スイッチの入力とし、出力を LPF で平滑するのが 典型的な方法です。  この方法の実験は、ほぼ成功しました。 →(回路図)

出力 OP アンプのオフセットと、アナログスイッチの電圧レンジの問題は ROS 方式の回路図 と同じです。

そのほかに、「スイッチト・キャパシタ」的な実現方法もありますが、74HC シリーズの アナログ・スイッチを使った実験では、おそらくクロック・フィードスルーの影響で、 うまく行きませんでした。  この方法については、ディスクリートの MOS FET を使って再チャレンジするつもりでいます。

(3) の方法は、FM 音源プログラム中では完全ディジタルで 実現している部分を、一部 アナログ VCO を介在させて実現するものです。

(1)、(2) の方式は、アナログ・シンセの音源である、周波数リニア VCO へ入力する CV の 「加工」の方法ですが、(3) は音源の VCO 部分も含んでいます。  最終的には DDS のディジタル出力を DA 変換してアナログ波形を得ます。

DDS (Direct Digital Synthesizer) 部分は、マイコンのプログラムなどで完全ディジタル処理で 実現すれば、全く誤差のないオクターブ関係が得られます。  VCO で DDS のクロックを発生させ、トップオクターブの CV でクロック VCO 周波数を コントロールして、結果として正しい音階を作り出します。 →(回路図)

ハードウェア DDS では、その目的からして、正弦波出力のものが多いですが、 アナログ・シンセ用オシレータとしては、最低限、のこぎり波出力があれば十分です。

マイコン利用のソフトウェア(ファームウェア)DDS としては、 フェーズ・アキュムレータをそのまま DA 出力すれば、のこぎり波になります。  正弦波 ROM は必要なく、かえって好都合です。

DDS に使うマイコンとしては、それほどの性能は要求されず、 たとえば、単価 120 円の ATtiny2313 程度でも十分だと思われます。

まだ実験はしていませんが、この方式は有望だと考えています。  DDS 部分には技術的に難しいところは何もなく、唯一、性能が要求されるのが クロック VCO の直線性です。

DDS 部分を CPLD, FPGA などのハードウェアで実現すれば、 クロック入力周波数 = サンプリング周波数ですから、 クロック周波数を低くおさえることができます。

2 倍オーバーサンプリングとしても、クロック周波数 100 kHz 〜 200 kHz 程度ですから、 この周波数域に対しては、直線性の良い電流制御方式の RC 発振回路を使った VCO が利用できます。

マイコンのプログラムで DDS を実現する場合には、プログラム実行にステップ数がかかるので、 どうしてもクロック周波数は高くなります。 数 MHz の周波数域では、RC 発振による VCO では良好な直線性を得るのが難しくなります。

可変範囲の広い数 MHz の VCO としては、バリキャップで C を可変とした LC 発振回路を使うのが 一般的です。 この方式では、C の変化はバリキャップの特性に依存するため、 直線性が良くありません。

そこで、回路図で点線で囲った部分に示したように、F-V コンバータを使って、フィードバック・ ループを構成すれば、F-V コンバータの直線性と同レベルまでは改善できます。

このページのトップへ戻るHOME