シンセサイザーから、パソコン、携帯電話と渡り歩く すばらしい FM音源の世界で遊んでみましょう。
近頃では、省メモリ用の音源として使われていることも 多いですが、その出音は涙すら誘う豊かな音です。 是非、シンセサイザーとして FM音源の音を聞いてみてください。
YAMAHA DX7 を買ってくる・・・。 というのはなかなか難しいので PC98時代に一世風靡した FMP の Windows版を使って FM 音源を楽しんでみることにします。
MIDI シーケンサーと VST プラグインという手もありますが 準備が大変なので、まずは FMPで FM音源の音を出してみましょう。
WinFMP.dll(Ver 0.16 updated 2003.09.28) | Windows版 FMP (DLL) |
KbMedia Player | WinFMP をドライブするメディアプレイア |
FMC (FMC316z.LZH) | FMP用シーケンスコンパイラ |
WinFMP.dll をダウンロードし、KbMedia Player のディレクトリに 格納すれば、 FMP のファイルを鳴らす準備ができます。 まずは、インターネットからダウンロードした FMPファイルを 聞いて、しばし感動します。 : o)
せっかくなので、自分で FM音源を鳴らしてみましょう。 MML という文法にしたがい曲を書き、FMC でコンパイル し、KbMedia Player で再生するという流れです。
FMC は、DOS版のソフトウェアです。コマンドラインツール なのではなく、純粋に DOSのソフトウェアです。 当然、ロングファイル等には対応していないので 注意して環境を作ります。
FMC に渡すファイル名は、 . mvi という拡張子で作成します。 作成した .mvi ファイルを、
FMC.EXE [ファイル名].mvi
とすると、
[ファイル名].OVI
というファイルが作成されます。これが、FMP で再生可能なファイルです。
まず、どこかしらにフォルダを作成し、下記のように FMC のファイルを 配置しましょう。
DATA/
FMC.EXE
FMC.TXT
MML.TXT
NEIRO.TXT
README.TXT
DATA フォルダを作成し、この中に .mvi ファイルを作成する 事にします。
ロングファイルパスが使えないので、ここで若干裏技をつかいます。 まず、この FMP を格納したフォルダを「共有」設定します。 その後、エクスプローラから、ツール→ネットワークドライブの割り当て、 で、自分自身の先ほど共有したフォルダを 「Q」ドライブあたりに設定します。 これで、「Q:」でアクセスできるのでロングファイルパスが関係なくなります。 (相対パスで起動してもエラーで動かないのでこのようにしました。 ネットワークを使わずに、同じ事をするような「DOSコマンド」も あったような気がするのですが忘れました。。)
※Virtual Drive Extension でもいけると思います。(未確認)
コンパイル環境ができたので、実験してみます。 上で作った、DATA/ フォルダの中に、「piano.mvi」ファイルを メモ帳などのテキストエディタで新規作成し、下記の内容を記述します。
'A @200o4v15l4
'A cder cder gedc dedr
'A cder cder gedc decr
'A ggeg aagr eedd c1
'B @200o3v12l8
'B cgegcgeg cgegcgeg cgegcgeg <b>gdg<b>gdg
'B cgegcgeg cgegcgeg cgegcgeg <b>gdgcgeg
'B cgegcgeg <a>fcf<b>gdg <a>fcf<b>gdg cgegc2
'C @1o3v15l4Qq4
'C c4.c8c2 c4.c8c2 c4.c8c2 g4.g8g2
'C c4.c8c2 c4.c8c2 c4.c8c2 g4.g8c2
'C c4.c8c2 f4.f8g2 f4.f8g2 c4.c8c2
;E.(Bell)Piano#5
'@ 200
'@ 31, 7, 0, 9, 5, 35, 0, 6, 3
'@ 31, 11, 7, 14, 4, 5, 1, 2, 3
'@ 31, 10, 9, 9, 5, 35, 0, 12, 7
'@ 31, 11, 7, 14, 4, 5, 0, 2, 7
'@ 4,7
;AnalogBass
'@ 1
'@ 31, 0, 0, 0, 0, 41, 0, 1, 0
'@ 20, 0, 0, 10, 0, 0, 0, 1, 1
'@ 24, 0, 0, 8, 0, 0, 0, 1, 2
'@ 20, 0, 0, 10, 0, 0, 0, 1, 3
'@ 5,6
ええとこれは、ぼくが作った「チューリップ」の MMLです。: o) MMLの詳細は、FMC に同梱されている「MML.TXT」を参考にしてください。 C がド。Dがレ。音の後に長さ。というのが基本の書き方です。
次の「コマンドプロンプト」を起動し、次コマンドを投入でコンパイルします。 割り当てたネットワークドライブを「Q」にした例です。
Q:
cd DATA
..¥FMC piano.mvi
これで DATAフォルダに、
PIANO.OVI
が作成されます。 KbMedia Player で再生してみましょう! 「チューリップ」はへたくそですが、ハートウォームなFM音源の音色が 聞けると思います。
一応、mp3 にしたものをおいておきます。圧縮してしまうので ハートウォーム加減がいまいちになりますが、感触だけどうぞ。 → PIANO.mp3
FM 音源ではありませんが、PSG でつくったものもあります。 MML の参考(なるのか? :-) にリンクしておきます。 PSG音源で遊ぼう (ファミリーベーシック・オリジナルロックンロール)
FM音源は、音源に対していろいろなパラメータを与えることで ギンギンのシンセ音から、暖かいエレピの音までいろいろだすことが できます。 ・・・が、このパラメータを作成するのは非常に 高度な技術が必要です。
いろいろ探していると、 FM音源のパラメータを沢山公開している 方がいらっしゃいました。
VAL-SOUNDさん の、FM-Libralyには、沢山の良い音色があります。(上のチューリップでも 使わせて頂きました。 VAL さんありがとうございます!)
そこで、VAL-SOUND さんでで公開されている、FM音源パラメータ を FMC用に整形する Perl スクリプトを書いてみました。 たぶんあっていると思いますが、使う場合はご確認を。
#
# VAL-SOUND さん FM音源パラメータを
# FMC用にコンバートする Perl スクリプト
#
# VAL-SOUND さん URL
# http://www.valsound.com/
#
# FM-Library さん の 音色を保存したテキストファイル名
$filename = "fmlib.txt";
# FMP 音色番号の最初値
$num = 0;
open(IN, $filename) or die "$!";
while ($line = <IN>) {
# trim する
$line =‾ s/^¥s*(.*?)¥s*$/$1/;
# スペース削除 (全角注意)
$line =‾ s/¥s/$1/g;
$line =‾ s/ /$1/g;
# 無関係行処理
if ($line =‾ /^#/ || $line eq "") {
next;
}
# パラメータ行ではなかったら音色名
if ($line !‾ /^[0-9]/) {
print ";$line¥n";
print "'@ $num¥n";
$al = 0;
$num++;
next;
}
# アルゴリズム、フィードバックありパラメータ行
if($line =‾ /(-*[0-9]+),(-*[0-9]+),(-*[0-9]+),(-*[0-9]+),(-*[0-9]+),(-*[0-9]+),(-*[0-9]+),(-*[0-9]+),(-*[0-9]+),(-*[0-9]+),(-*[0-9]+),(-*[0-9]+)/) {
$alg = $1;
$fb = $2;
$line = "$3,$4,$5,$6,$7,$8,$9,$10,$11,$12";
}
# パラメータ行
if($line =‾ /(-*[0-9]+),(-*[0-9]+),(-*[0-9]+),(-*[0-9]+),(-*[0-9]+),(-*[0-9]+),(-*[0-9]+),(-*[0-9]+),(-*[0-9]+),(-*[0-9]+)/) {
$ar[$al] = $1;
$dr[$al] = $2;
$sr[$al] = $3;
$rr[$al] = $4;
$sl[$al] = $5;
$tl[$al] = $6;
$ks[$al] = $7;
$mul[$al] = $8;
$dt[$al] = $9;
$ams[$al] = $10;
$al++;
}
# パラメータそろったら FMC用に整形して表示
if($al == 4) {
for($al=0; $al<4 ;$al++) {
printf("'@ %2d, %2d, %2d, %2d, %2d, %2d, %2d, %2d, %2d¥n",$ar[$al],$dr[$al],$sr[$al],$rr[$al],$sl[$al],$tl[$al],$ks[$al],$mul[$al],$dt[$al]);
}
print "'@ $alg,$fb¥n¥n";
}
}
close(IN);
パラメータを音色名ごと「ブラウザからコピー」(複数可)して、 「fmlib.txt」テキストファイルに保存して、 この Perl を実行してください。 FMC用に整形したパラメータが標準出力に書き出されます。
一部、デチューンのパラメータで負数をとっているものは FMP では対応できないようです。 コンパイルエラーに なるので、適宜修正すると良いと思います。
VAL-SOUND さん:各種パラメータより
DT1(デチューン1):
DT1(デチューン1)音程の微調整。音源ドライバによって記述する数値が違うが
0-7が一般的。0-3で0- +3、4-7で0- -3。
FMC 同梱の MML.TXT をあわせて確認すると良いと思います。
DX7 ではなく、PC8801mk2SR から FM音源にはいったくちですが、 現在になり、PC オーディオ環境が異常に進化したため PC でもノイズもなくクリアに FM音源を楽しめるように なりました。 昔の曲とかを聴くと、こんなことしてたのかー、 と感動します。
WinFMP.dll の作者さんの FMPMD2000 プレイヤを使うと .wav にも はき出せるので、MIDI とあわせて Audio 貼り付けするのも おもしろそうです。
懐かしさとあいまって、泣けと言われれば泣くことのできる、 すばらしいFM音源の世界をお楽しみください。