MIDI to CV (8)

VCO、VCF、VCA と、アナログシンセの基本ブロックが揃いましたので、実際に音を出してみます。
何度も書いたように、MIDI to CV 機能のソフトウェア部分は、FM音源プログラムに処理を追加することで実現しています。
ピッチ関係、つまり VCO のコントロールについては、

など、十分な機能を持っていますから、キャリア側のオペレータの本来のピッチ情報を VCO 用のフォーマットに変換して出力する処理をしているだけです。
一方、VCF のコントロールについては、FM音源と、減算型音色合成法であるアナログシンセとでは大きく違います。
アナログシンセの機能を実現しようとすると、追加のプログラム量が多くなるので、機能を絞ってプログラムを実装しています。
VCF のカットオフ周波数のコントロールについて、次の3つの要素だけを加算して求めています。

  1. モジュレータ側のオペレータのピッチ情報は、そのまま反映させる。
    つまり、アナログシンセのキー・フォロー 100 % の状態。
  2. 「ブライトネス」(CC#74) の値。
  3. モジュレータ側オペレータの EG の値に、「ハーモニック・コンテント」(CC#71) の量をかけたもの。

本来、「ハーモニック・コンテント」はフィルタのレゾナンスを変化させるものですが、この VCF ではレゾナンスは手動で調節するので、エンベロープによる変調量のパラメータとして使っています。
式で書くならば、細かい係数は無視すると、
(cutoff freq) = (pitch) + (CC#74) + (CC#71)*(EG)
と表されます。
LFO については、ピッチ情報のビブラート経由で VCF カットオフ周波数を変調することはできますが、本来はビブラートなのですから、変調度は大きくありません。
LFO を直接入れていないので、アナログシンセのように、カットオフ周波数を数オクターブも揺するようなことはできません。
また、エンベロープの設定は、FM音源としての音色データで定義されたものになります。
音色データ自体は、システムエクスクルーシブ・メッセージを使って、全てのパラメタを一度に変更できます。
しかし、今のところ、インタラクティブに操作できるソフトを準備していないので、リアルタイムにパラメータを操作しながら音を出すことはできません。
そういう事情もあり、さらには、私に音作りのセンスがないので、単にレゾナンスを上げてエンベロープでカットオフを振っただけの音色ですが、デモ演奏の wave ファイルを (→こちら) に追加しておきました。