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]
[LFO(Low Frequency OSC)]
[OP] (M1,C1,M2,C2共通)
上図は、YM2151のマニュアルから抜粋だが、エンベロープの概要になる。名称が微妙に違うけど。
上記パラメータの挙動さえ理解してしまえば、DEXEDよりも簡単にサクサク音作りが可能。 限界がすぐ見える4オペレータは気楽でいいかも。 常にFMぽさが出ることは、今の時代から見ればメリットに思えてくる。
物足りない場合は、MIDIコントロールを使えば、細かな調整も可能で、どっぷりはまることも可能。 特にエンベロープの自由度はものすごく、1ch当たり128基も使えて、掛け先の自由度、無限ループやら何でもあり。そのうち試してみようと思う。
操作方法はいろいろあると思うが、個人的にはCakewalkで使っているので、とりあえずMIDIイベントリストに書き込んでみた。
CC#126でモノフォニック。
CC#127でポリフォニックモード。
ポルタメントレートはCC#5となる。ポルタメントは数値が小さいほど速くなる。
下サンプルのように、ポルタメントが有効になる。
和音でもポルタメントができる。どう使ってよいのか分からないのだが・・・ 手順としては、 CC#5でポルタメントスピード設定し、 CC#65でポルタメントをONにする。 CC#127でポリフォニックモードにして演奏。 どうもポルタメントは強制的で、一度鍵盤から手を離したとしても前回の音からスタートするようだ。
EGカーブ表示に関してはキャリアだけが表示されているぽい。左クリックすると、その部分が拡大される。うーん。
ドラムに関しては普通に使うと1音1チャンネル占領してしまうので、現実的にはドラム音源を別途用意した方がよさそうだが、その気になれば、VOPMだけで完結することも可能。1チャンネルで次々音色を切り替えていくとか・・・ゲーム音楽の再現などはこの方法になると思う。
音色はGM的な音色が一通りTONEフォルダに用意されている。これをベースに好きなように作り込めば、音作りもサクサク作業が進むだろう。
VOPMはDEXEDよりも音作りが手軽なので、FM音源入門にもよさそう。基本原理は同じなので、ここで得たものは、DEXEDにも生かせるし、その逆も可能。
VOPMの使い時は、生楽器の代替とか、出音の良さを求めるというよりは、FMならではの独特な音が欲しいときだろう。 そういう意味では、DEXEDよりも強力かもしれない。
個人的には下サンプルのような音がFMの嫌な音全開の耳に突き刺さるサウンド。聞きなれると逆に心地よい?
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の嫌な音全開の耳に突き刺さるサウンド。聞きなれると逆に心地よい?