VSTi VOPMex (Yamaha YM2151 (OPM) )

2002年ぐらいからあるVOPM(Virtual OPM)というフリーのソフトFM音源が64bit環境でも使えることが分かったので本日遊んでみる。 15年ぐらい前にも仕事の関係で少し触ったことがあったので個人的に懐かしい音源。 初期の多くの音源が消滅する中、まだ存在していたことに驚く。 現在入手できるのはVOPMを拡張したVOPMexというもの。

http://picopicose.com/software.html


この音源は下絵のYAMAHA YM2151(OPM(FM Operator Type-M))というチップを再現している。このチップは1983年に開発され、80年代のアーケードゲームやシャープのX1、X68000等のパソコン音源として使われていた。4オペレータでステレオ8chというコスパ優先FM音源。元々はヤマハのMSXパソコン用音源として開発されたようだ。ヤマハの楽器としては、DX21やDX100にも搭載されている。



個人的にはソフトFM音源はDX7をエミュレートしたDEXEDがあれば十分なのだけど、FM音源らしさという意味では、こちらのチープな音の方が軍配が上がると思う。どうやってもFMのいやらしさが出るので・・・  またDEXEDでは未だ未実装のポルタメントが出来たり、マルチティンバー音源として使えたりするので、ちょっといじってみようと思えた。

ところがVOPMは、パラメータの挙動に癖があって、FMに慣れていても、ええ?となる。 数値が感覚と逆のものも多く、動作を知らないと混乱する。 こういうところがチップの仕様に忠実なのか、とてもマニアックなにおいがする。 解説を探したが適当なものが見当たらなかったので、動作チェックを兼ねて、ここに書いておくことにした。

パラメータの挙動を理解してしまえば、FM音源としては簡素なので、扱いは楽な音源。 FMはデジタルの強みを生かしてコンパクトにしながらも、表現力を上げようとしているところがいい。 エイリアスノイズさえも音色の一部として取り込んでいるわけで、ユーザーには厳しく、デジタル処理的には素直という感じ。

適当にベースとメロを弾いてみる。



YM2151のブロックダイアグラム


パラメータ


[con(connection)]

アルゴリズムは、たった8個しかないので、DEXEDと違って迷いはない。FLと書いてあるのはフィードバックレベル。このチップは1個のオペレータだけしかフィードバックできないようだ。

[PROG]
C1 Carrier 1
C2 Carrier 2
M1 Modulator 1
M2 Modulator 2
opMsk 各オペレータのON/OFF
AMS-En 各オペレータLFOのON/OFF(AMSのみ)
Noise ノイズのON/OFF。 ONにするとC2は正弦波の代わりにノイズを生成

FL 0-7 Self Feedback Level
AMS 0-3 Amplitude Modulation Sensitivity
PMS 0-7 Phase Modulation Sensitivity
NFRQ 0-31 Noise Generator 31がホワイトで、0がレッドという感じ。きれいなノイズではない。


[LFO(Low Frequency OSC)]
W saw,Sq,tri,noise 波形は4つから選べる。
FRQ 0-255 LFO Frequency 大きいほど高い
AMD 0-127 Amplitude Modulation Depth 大きいほど深い
PMD 0-127 Phase Modulation Depth 大きいほど深い



[OP] (M1,C1,M2,C2共通)
TL 0-127 Total level
0 最大
127 無音
AR 0-31 Attack Rate
0 最もゆっくり
31最も速い
D1R 0-31 Decay Rate 1 最初の減衰時間
0 最も遅い
31 最も速い
D1L 0-15 Decay Level 減衰レベル
0 最大
15 無音
D2R 0-31 Decay Rate 2 鍵盤を押しているときの音量変化。無音に向かっていく減衰時間。
0 減衰しない。押している間は一定音量をキープ
31 最も速く途切れるように減衰し無音になる。実質RRの意味がなくなる。
RR 0-15 Release Rate 鍵盤を離してからの減衰時間
0 最大 減衰に1分程度
15 リリースなし
KS 0-3 Key Scaling 高い音域ほどエンベロープを高速化し減衰が速くなる。
0 全音域同等
3 最高速
MUL 0-15 Phase Multiply。オペレータの出す音を決定。C3を基準としたときの音も書いておく。
0 オクターブ下 C2
1 基本 C3
2 2倍音 C4
3 3倍音 G4
4 4倍音 C5
5 5倍音 E5
6 6倍音 G5
7 7倍音 Bb5
8 8倍音 C6
9 9倍音 D6
10 10倍音 E6
11 11倍音 F#6
12 12倍音 G6
13 13倍音 A6
14 14倍音 Bb6
15 15倍音 B6
DT1 0-7 Fine Detuning 0~7 ±2セント
0 基準ピッチ
1~3ピッチ上げ +1~2セント
4 基準ピッチ
5~7ピッチ下げ -1~2セント
DT2 0-3 Coarse Detuning
0 基準ピッチ
1 ルート2倍 (+1.41(約短5度))
2 ルート2.5倍 (+1.57(約増5度))
3 ルート3倍 (+1.73(約6度))
と純正調でも平均律でもない上がり方をする。よくわからんが、変な倍音が欲しい時には都合がよいのかもしれない。打楽器とか。


上図は、YM2151のマニュアルから抜粋だが、エンベロープの概要になる。名称が微妙に違うけど。

上記パラメータの挙動さえ理解してしまえば、DEXEDよりも簡単にサクサク音作りが可能。 限界がすぐ見える4オペレータは気楽でいいかも。 常にFMぽさが出ることは、今の時代から見ればメリットに思えてくる。

物足りない場合は、MIDIコントロールを使えば、細かな調整も可能で、どっぷりはまることも可能。 特にエンベロープの自由度はものすごく、1ch当たり128基も使えて、掛け先の自由度、無限ループやら何でもあり。そのうち試してみようと思う。


MIDIコントロールチェンジ ポルタメント

普通のVSTプラグインはGUI上にパラメータがあるのだが、VOPMexは部分的だったりする。 VOPMexは、MIDIコントロールすることで全機能を使えるようになるようだ。 ここではMIDIコントロールを使ってモノフォニックでポルタメントしてみる。
操作方法はいろいろあると思うが、個人的にはCakewalkで使っているので、とりあえずMIDIイベントリストに書き込んでみた。
CC#126でモノフォニック。
CC#127でポリフォニックモード。
ポルタメントレートはCC#5となる。ポルタメントは数値が小さいほど速くなる。

下サンプルのように、ポルタメントが有効になる。



和音でもポルタメントができる。どう使ってよいのか分からないのだが・・・ 手順としては、 CC#5でポルタメントスピード設定し、 CC#65でポルタメントをONにする。 CC#127でポリフォニックモードにして演奏。 どうもポルタメントは強制的で、一度鍵盤から手を離したとしても前回の音からスタートするようだ。




MIDIコントロールチェンジ一覧

0
1 Hardware LFO FRQ (MSB)
2 Hardware LFO PMD
3 Hardware LFO AMD
4 Software LFO1 Depth
5 Portamento Time
6 Data Entry (MSB)
7 Volume
8 Software LFO1 FRQ
9 Software LFO1 WF
10 Pan
11 Expression
12 Hardware LFO WF
13 Software LFO1 Sync
14 CON
15 FL
16 TL OP1
17 TL OP2
18 TL OP3
19 TL OP4
20 MUL OP1
21 MUL OP2
22 MUL OP3
23 MUL OP4
24 DT1 OP1
25 DT1 OP2
26 DT1 OP3
27 DT1 OP4
28 DT2 OP1
29 DT2 OP2
30 DT2 OP3
31 DT2 OP4
32
33 Hardware LFO FRQ (LSB)
34 Software LFO2 FRQ
35 Software LFO2 WF
36 Software LFO2 Depth
37 Software LFO2 Sync
38
39 KS OP1
40 KS OP2
41 KS OP3
42 KS OP4
43 AR OP1
44 AR OP2
45 AR OP3
46 AR OP4
47 D1R OP1
48 D1R OP2
49 D1R OP3
50 D1R OP4
51 D2R OP1
52 D2R OP2
53 D2R OP3
54 D2R OP4
55 D1L OP1
56 D1L OP2
57 D1L OP3
58 D1L OP4
59 RR OP1
60 RR OP2
61 RR OP3
62 RR OP4
63 Software LFO1 Destination
64
65 Portamento on/off
66
67
68 Software LFO2 Destination
69
70 AME OP1
71 AME OP2
72 AME OP3
73 AME OP4
74 Hardware LFO Force Reset
75 Hardware LFO PMS
76 Hardware LFO AMS
77 Pan
78 Hardware LFO Delay
79 Software Envelope Select 0-127
エンベロープを選択
80 Noise Enable
81 Pitch Bend Range
82 Noise Freq
83 Hard LFO Sync
84 Portamento Control
85 LFO1 Delay
86 LFO2 Delay
87 Velocity Sens OP1 ベロシティ感度を設定します。
0 ... 一定
127 ... 最大感度
88 Velocity Sens OP2
89 Velocity Sens OP3
90 Velocity Sens OP4
91
92 Prog. Change(代替)
93 OpMsk 8を足すとop1を有効にします。
16を足すとop3を有効にします。
32を足すとop2を有効にします。
64を足すとop4を有効にします。
94 Compressor Ratio コンプレッサーのレシオを設定します。
0の時、1:1、
64の時、およそ1:2、
127の時、1:Infになります。
95 Software Envelope Depth 0-127
96
97
98 NRPN (LSB)
99 NRPN (MSB)
100 RPN (LSB)
101 RPN (MSB)
102 Software Envelope Destination エンベロープの掛かり先を設定します。
値に1を足すと、音量に掛かります。
値に2を足すと、ピッチに掛かります。
値に4を足すと、OP1に掛かります。
値に8を足すと、OP2に掛かります。
値に16を足すと、OP3に掛かります。
値に32を足すと、OP4に掛かります。
値に64を足すと、ハードLFOFRQに掛かります。
例えば、ピッチとOP3に掛ける場合、
2+16=18 を設定します。
103 Software Envelope Loop amount エンベロープのループ回数を設定します。
0を設定すると、ループせず、Sustain Levelで停止します。
1で、1回ループします。
127を設定すると、無限ループします。
104 Software Envelope Time 1 T1の値を設定します。(0-1270ms)
105 Software Envelope Level 1 L1の値を設定します。 (128段階)
106 Software Envelope Time 2 T2の値を設定します。 (0-1270ms)
107 Software Envelope Level 2 L2の値を設定します。 (128段階)
108 Software Envelope Time 3 T3の値を設定します。 (0-1270ms)
109 Software Envelope Level 3 L3の値を設定します。 (128段階)
110 Software Envelope Time 4 T4の値を設定します。 (0-1270ms)
111 Software Envelope Level 4 L4(Sustain Level)の値を設定します。 (128段階)
112 Software Envelope Release Time T5(Release Time)の値を設定します。 (0-1270ms)
113 Software Envelope Release Level L5(Release Level)の値を設定します。 (128段階)
114 Compressor Input MIDI Channel コンプレッサーの入力MIDIチャンネルを設定します。
0=ch1, 1=ch2, ...15=ch16
値に32を足すと、指定した次のMIDIチャンネルも入力に使用します。
値に64を足すと、指定したMIDIチャンネルから2つ後のチャンネルま
での3チャンネル分の加算信号を入力に使用します。
値に96を足すと、指定したMIDIチャンネルから3つ後のチャンネルま
での4チャンネル分の加算信号を入力に使用します。
(ch16の次のチャンネルは、ch1になります。)
値に16を足すと、ソフトニー特性になります。
127を指定すると、コンプレッサーは無効になります。
115 Compressor Threshold コンプレッサーのスレッショルドを設定します。
0のとき0dBで、1増える毎に約0.38dB下がります。
116 Compressor Attack コンプレッサーのアタックタイム(0-1000ms)を設定します。
117 Compressor Release コンプレッサーのリリースタイム(0-3333ms)を設定します。
118 Mark S98 Loop 受信した時点(どの値でも良い)を、ループポイントして記憶します。 指定しない場合、ログ開始位置がループポイントになります。
119 S98 Log on/off “127”を受信した時点から記録を開始し、“0”を受信した時点で記録 を終了します。 記録された状態で、エディタの”Export”ボタンを、alt+クリック (Macの場合は option+クリック)すると、S98ファイルとして保存で きます。(ただし、この保存方法は変更するかも。)
120 All Sound Off
121 Reset All Controller
122 Local On/Off
123 All Note Off
124
125
126 Mono Mode
127 Poly Mode 0-63 ... なるべく同Slotを確保するポリ・モードに。
64-127 ... 発音毎にSlotを変えるポリ・モードに。



GUI

見た目は古くて、とっつきにくいのだが, パラメータをホイールで操作出来たり、数値を直接入力出来たりと、意外と使い勝手は良かったりする。 数値も16進数にできたり、ビットで指定するチップを意識した作り。


EGカーブ表示に関してはキャリアだけが表示されているぽい。左クリックすると、その部分が拡大される。うーん。


マルチティンバー及び音色

オリジナルのYM2151は4チャンネルだが、これは16チャンネルできるっぽい。 最大同時発音数は8音。

ドラムに関しては普通に使うと1音1チャンネル占領してしまうので、現実的にはドラム音源を別途用意した方がよさそうだが、その気になれば、VOPMだけで完結することも可能。1チャンネルで次々音色を切り替えていくとか・・・ゲーム音楽の再現などはこの方法になると思う。

音色はGM的な音色が一通りTONEフォルダに用意されている。これをベースに好きなように作り込めば、音作りもサクサク作業が進むだろう。


なかなかいいかも

動作がやや不安定で、たまにcakewalkごと落ちるのだが、そういう操作を避ければ、普通に使えそう。

VOPMはDEXEDよりも音作りが手軽なので、FM音源入門にもよさそう。基本原理は同じなので、ここで得たものは、DEXEDにも生かせるし、その逆も可能。

VOPMの使い時は、生楽器の代替とか、出音の良さを求めるというよりは、FMならではの独特な音が欲しいときだろう。 そういう意味では、DEXEDよりも強力かもしれない。

個人的には下サンプルのような音がFMの嫌な音全開の耳に突き刺さるサウンド。聞きなれると逆に心地よい? 




VST