The curse of YAMAHA
HOME | 自作MSXゲーム | ものすごいヤツ | 百戦危うからず | MSXリンク | 正義の願い |
狂ったピッチ? |
ヤマハの呪い 前編 私は、音源LSIについても、音楽プログラミングについても、MIDIについても、DTMについても、全く知りません。ですからこれから書くことには、本人にはその気はありませんが 「ウソ・おおげさ・紛らわしい」 の類が、混ざっているかもしれません。(えっ、いつものことだって?) 普及=性能△ 普及=価格○MSX1の頃『MSX−AUDIO』という規格に沿った、専用MIDIキーボード接続機能やADPCM等を備えた別売りのFM音源が発売されましたが、高価だった為あまり普及しませんでした。音源チップはYAMAHAの『Y8950』で、表面にMSXと印刷されています。 右は海外オークションサイトで見つけた東芝の『HX-MU900』音源と『HX-MU901』キーボードの写真です。 こちらは、フランスのMSXdoctor氏による音源の演奏デモ MSX2の頃、『YM2413』というチップを使用した新オプション『MSX−MUSIC』が登場します。この『YM2413』は、セガマーク3の外付けFM音源や、セガマスターシステム、キャプテン端末、UFOキャッチャー、YAMAHAの入門用キーボード(注1)にも使用されたもので、内蔵音色数15+オリジナル音色1可、同時発音FM9音またはFM6音+リズム5音と、80年代家庭用ゲームBGMの要求レベルには、十分な機能を持ったものだったと思います(注2)。『MSX−MUSIC』は、最初『FMPAC』という7800円のカートリッジで発売されて大ヒットし、そのヒットを受けて、MSX2+以降のturboRを含むMSX10機種中、8機種に搭載されました。よく 「80年代パソコン標準のFM音源はPC-9801-26Kに使われた『YM2203』」 等と書いてありますが、PC-****系のFM音源は標準搭載では無いので、80年代の実数では『YM2413』の方がずっと多いでしょう。画像は『FMPAC』内蔵ソフトのMSX本体キーボードで演奏できるモードの画面です、BGM演奏中にTABキーを押して入ります。 注1.PSR−6、PSS−270、PSS−170、PSS−140、SHS−10。 今の2〜3万円台クラス? キー同時押し8音(140は6音)で100音色。 この内、上位機種には、1キーでコード音を自動演奏する等の機能がある。 参考:無断リンクPSS−270のデモ演奏 注2.MSX−MUSICで、まじめに音を追求していたマイクロキャビン製の対応ゲ ーム、特に後期の「幻影都市」「FRAY」「Xakガゼルの塔」を実機で遊ぶ と、良くも悪くも音源チップの実力の程が分かると思う SEGA MASTER SYSTEM な方も必見?このFM音源チップ『YM2413』(をMSX2+上で使用する方法)について、そこそこ詳しい説明がある『MSX2+パワフル活用法』という、アスキー出版の本があります。タイトルや装丁こそ違いますが、俗に “テクハン” と言われるMSXプログラミングのバイブル本のMSX2+版に当たるものです。ところが、この本の『YM2413』についての解説がある第4章「ミュージック機能」は、肝心のレジスタ表にかなりの誤記述があり、ほとんど役に立ちません。アスキーのMSXに対するココロザシの高さでしょうか(^^;)? 現在、『YM2413』をいじってみたいとなると、『パワフル活用法』と合わせて、MSXターボR用の “テクハン” を見るか、ネットで『YM2413』チップのYAMAHAマニュアルを拾う、ということになるのですが、件の『パワフル活用法』も、YAMAHAマニュアルも、出したい音(例えばO4CとかO3Eとか)の周波数からレジスタに入れる値を割り出す式に代入する、その周波数やらサンプリング・クロックの数字が、少々大雑把な気がします。大雑把な数字で計算すると誤差が大きくなり、出したい音階の数値から離れてしまうのではないか?と思うのです。 そこで、もう少し正確な数字を式に代入してみて、結果、レジスタに入れる値が変わるのかどうか? 変わったとすれば、それによって出る音がどう変わるか? を調べてみます。 ヤマハの呪い 後編 『YM2413』で出したい音階の音を出すために、レジスタに入れる「数値」を出す式は 数値=(出したい周波数*2^18/サンプリング周波数)/2^(4−1)
で、サンプリング周波数の求め方は
サンプリング周波数=クロック周波数/72
です。このクロック周波数は、3.579545MHzですが、YAMAHAのマニュアルでは3.6MHzとかなり丸いです。ゆえにサンプリング周波数も50000となってます。もうちょっと正確に、3579545÷72≒49716にします
元の式
F-Number=(Freq*2^18/50000)/2^(4-1)
修正(?)後の式
F-Number=(Freq*2^18/49716)/2^(4-1)
出したい音階の周波数も、マニュアルでは小数第2位四捨五入ですが、第3位を四捨五入して使います。下の表では F−Num が求めた「数値」です
マニュアル
step freq F−Num
C# 277.2 181
D 293.7 192
D# 311.1 204
E 329.6 216
F 349.2 229
F# 370.0 242
G 392.0 257
G# 415.3 272
A 440.0 288
A# 466.2 305
B 493.9 323
C 523.3 343
C# 554.4 363
D 587.3 385
D# 622.2 408
E 659.3 432
F 698.5 458
F# 740.0 485
修正(?)後
step freq F−Num BIN HEX
C# 277.18 183 0 10110111 B7
D 293.66 194 0 11000010 C2
D# 311.13 205 0 11001101 CD
E 329.63 217 0 11011001 D9
F 349.23 230 0 11100110 E6
F# 369.99 244 0 11110100 F4
G 392 258 1 00000010 102
G# 415.3 274 1 00010010 112
A 440 290 1 00100010 122
A# 466.16 307 1 00110011 133
B 493.88 326 1 01000110 146
C 523.25 345 1 01011001 159
C# 554.37 365 1 01101101 16D
D 587.33 387 1 10000011 183
D# 622.25 410 1 10011010 19A
E 659.26 435 1 10110011 1B3
F 698.46 460 1 11001100 1CC
F# 739.99 488 1 11101000 1E8
全面的に数字が変わってしまいましたが、はたして、マニュアルどおりと修正(?)後のどちらが正確な音を出すでしょうか? 絶対音感など持ち合わせていないので『パワフル活用法』にある「FM音源キーボード」プログラム(注1)のソースの最後の部分を修正後の数字に変えて弾いてみたクラリネット音(矩形波なので分かりやすい)を、元の数字から出るクラリネット音とWindows用のソフトで周波数比較(注2)してみると・・・ おおおおおおおおおおおっ!!!!(^^;) マニュアルどおりだと、どの音も2Hz前後、出したい音よりずれていたのが、ずれ1Hz未満のほとんど正確な音になっている! というわけで、もし当時のセガ機やMSXゲームのプログラマがYAMAHAのマニュアルどおりの音階の数字を使っていたとすれば、全部音がずれていたというコトに!? それとも、なにか私の知らない事があって、その数字でないとイケナイとか?? YAMAHAの呪い、恐るべし・・・ 注1.『MSXマガジン永久保存版』のどれかにも収録されていたはず 注2.ベクターにある野口博司氏作の『SPEANA』という有難いフリー ソフトで比較しました。オシロとか持っていませんので FM音源も案外おしゃべり PSGでPCMデータ(Windowsで言うところの非圧縮WAV)を再生する方法は、わりと知られていますが、『YM2413』でPCMデータを再生する方法は、日本では案外知られていないようですので、ちょっと書いてみます。といっても4行ぐらいで済みます。 始めにレジスタ#0Fhのビット0とビット3を1にします(通常は全て0です)。
これでDAC(デジタルアナログコンバータ)モードになります
レジスタ #0Fh(TST)
bit 7 6 5 4 3 2 1 0
┌───┬───┬───┬───┬───┬───┬───┬───┐
│ │ │ │ │SND│ │ │SMP│
└───┴───┴───┴───┴───┴───┴───┴───┘
SND・・・FMシンセサイザー機能、0でON、1でオフ
SMP・・・サンプリング再生、0でオフ、1でON
次にレジスタ#10hの上位4ビットに4ビットPCMデータを順次に送ります。
下位4ビットは無視されるそうですが、一応0にしておきます
レジスタ #10h(PCM)
bit 7 6 5 4 3 2 1 0
┌───┬───┬───┬───┬───┬───┬───┬───┐
│ DAC DATA │ 0 │ 0 │ 0 │ 0 │
└───┴───┴───┴───┴───┴───┴───┴───┘
以上で『YM2413』でPCMデータが再生できます。PSGのPCM音より音質が若干クリアかもしれません。なぜ、YAMAHAはこの機能を非公開にしていたのでしょうか? 廉価FM音源チップでも簡単に音声再生できるという事を知られるのが、商売的に美味くなかったのかな? このページは、1024×768画面に合わせて作りました。ちゃんと見えなかったらスミマセン |