私流MIDI変換の手引き


・はしがき

 今となっては懐かしい思い出となりましたが、私がSPCの存在を知って間もない頃・・・もしかするとSPCをMIDIに変換するソフトがあるかもしれないと思い、親友に紹介してもらったのがSPCToolとの出会いでした。馴れないDOSと英語に四苦八苦しながら変換作業と格闘しつつ、何故自分はここまでゲーム音楽のMIDIにこだわるのかと考えました。サントラが無いからテレビからアナログでテープに録音したりと、いろんなことを自分はしてきましたが・・・やはりゲーム音楽が好きだった、ただそれだけでした。
 この手引きを書こうかどうか最初は迷いました。しかし、私と同じようにどうしても好きなゲーム音楽を再現性の高いMIDIにして楽しみたいと思っている方はいらっしゃるはず。この手引きは、このページに辿り着いたそのような願望を持つ人の力に、少しでもなればと思い作ることにしました。
 SPCを大量にMIDIに変換してホームページのBGM素材などのために配布される方がいらっしゃるかも知れませんが、最近音楽著作権等がかなり厳しい状況になってきており、そのようなことで問題が発生した場合はこちらは一切責任を持てませんのでご了承下さい。私としては、懐かしい音楽を個人的に楽しんで戴くことを望んでおります。このページを閲覧されている方はそれなりの知識を持っていると思われますので、よろしくお願いします。

それでは、本題に入ることにしましょう。


1.起動と動作

 とはいいつつも、MIDI変換以前に大きな問題があります。それはSPCTool自体が動くのかどうかということです(汗)現在バージョンは0.61で止まっており、マニュアルに書いてある通りこれはβ版です。今まで旧BBSに書き込まれた様々な質問を統合的に見てもこのソフトを起動させるにはかなり厳しい環境が要求されます。(かなり前の話ですが製作者であるAnti Resonance氏のハードディスクの半分が消失するという事件がありまして、その中にSPCTOOLのソースも含まれていたのです・・・というわけでバージョンUPはまだ先の話になりそうです)
 まずSoundBlasterLive!系列のサウンドカードはおそらく必須。それからCPUはそれほど制約は無いだろうと思いますが遅すぎると危ないとかと思います。ビデオカードも特殊なものをつけると画面がくちゃるかもしれません・・・。それから割とあったのがマウスで、起動は出来たがポインタの動きが異常だといもの。MSマウスドライバ6.0以上が推奨となっておりますが、私もあまり周辺機器関係に詳しくないのでよくわからない状態です。悪しからず・・・。ちなみに一応正常に動作する(フルスクリーン時にマウスカーソルはバグリますが)私のマシン環境も記載しておきます。

・サウンドカード:SoundBlasterLive!(PLATINUM)
 ↑私の場合IRQをプリンタポートと共有しないとSPC再生時に音が出ません。
・ビデオカード:IntelのマザーボードにONボードの物
・ディスプレイドライバ:Intel(r)82815 Graphics Controler
・マウスドライバ:PS/2互換 Microsoft MOUSE.DRV ver.9.01.0.000
・CPU:Pentium3-966MHz
・メモリ:128MB



2.楽器判定

スクリーンキャプチャ不可能のため2時間かかって自作した根性の画面(汗
↑スクリーンキャプチャ不可能のため2時間かかって自作した根性の画面。数字は適当です(汗


 さて、今から上の根性の画面を参考に説明していきたいと思います。
 はじめてこの画面を拝むことが出来た私はとっさにMIDI変換をしてみました。が、しかし生成されたMIDIはピアノだけの曲なのか曲ではないのか微妙な物体でした。それをMIDIシーケンサ(MIDI作曲ソフト)を使って音の上げ下げ、楽器分類を繰り返し何とか本物に近づけることはできますが、せっかくAntiRes氏が取り付けた機能がりますので使ってみましょう。(完成したものをよりクオリティーの高いものにするにはやはりMIDIシーケンサは必須です。そこそこのMIDIの知識はつけておいたほうが良いでしょう。)
 チャンネルアウトプットの数値出力画面(右上)を見てください。タイプの横にエンベロップ(Env)があります。これがそのチャンネルごとの現在の音の大きさ(0〜127)を表しています。その横にウェイブフォームナンバー(Wav)があります。これが左にあるウェイブテーブルインデックス(Idx)に対応しています。上の例でいきますと、4,5,6,7,10,25,34番の楽器が使われています。ではここで何番にどういう楽器が使われているのか確かめましょう。テンキーではないほうの上に並んでいる数字キーの1〜8もしくは画面上のチャンネルを直接クリックするとそのチャンネルをミュートにすることができます。今、1、3〜8チャンネルをミュートにして2チャンネルだけ聞こえる状態にしてみます。それで、例えばそれがストリングスだった(に聴こえた)とします。(たまにGMで割り当てられないような謎な楽器が出てきます・・・そのへんはなんとか音色の近い楽器で繕いましょう。)2チャンネルのウェイブフォームナンバー(Wav)4なので左のウェイブテーブルインデックス(Idx)4番を選びます。(今の状態ですね。)次に、右下の ウェイブフォームのところでプログラムナンバー(Prog)を指定します。楽器名をクリックしてストリングスの49を入力しましょう。自動的にStringsに切り替わります。これで、MIDI変換時に4番のウェイブフォームを使用している場合はストリングスになるように楽器指定命令が入るようになります。このようにして使われているウェイブフォームナンバーのインデックスの数値を書き換えていきましょう。
 ここで、ドラムセットの場合はどうするか?という疑問が上がります。マニュアルにはプログラムナンバー(Prog) の上のTypeの値をクリックしてドラムセットに切り替えるとありますが、現段階では完成していないのか上手くいかないことが多いです。というわけで私は独自の方法をとっています。今はひとまずドラムの楽器は1:ピアノにしておきます。



3.中央C調整

 次はいわゆる「チューニング」です。これをしなければならないのは楽器用のサンプルWAVEファイルの音程が統一されていないからです。さて、計算するという方法もありますが私は自分で音を聞いて合わせる方法が一番早いと思うのでそれを採用したいと思います。まずどんな方法でもよいのでピアノの真ん中のド(ト音記号譜の五線の下のド)を鳴らします。楽器を持っていなくても適当な作曲ソフトをつかえばOKです。ドの音だけWAVEファイルとして保存しておくのも手でしょう。で、以下ドの音を中央Cと記載しますが、これを聴くためにいちいちSPCToolを終了・起動するのは面倒なのでウィンドウズキーがあるかたは押してみて下さい。一時的にSPCToolが最小化されます。(しかし復帰後に画面が多少バグることがあります)ドの音を何とかして覚えたら先ほど楽器を合わせたウェイブフォームの音程を調整します。Mid-Cそのものを右/左クリックすることによって半音ずつ上げ下げすることができます。中央Cの音に近づいたら数字をクリックして微調整してください。大体同じような高さの音になればOKです。マニュアルにあるとおり少し誤差があっても変換時に最も近い高さの音を判定してくれます。15:チューブラベルなどは音の高さがつかみにくいことがありますので変換してみておかしかったらもう一度あわせなおしをしましょう。
 さて、さきほど1:ピアノにしておいたドラム系のウェイブフォームですが、これも一応チューニングがいります。例えば、チャンネル5で再生されているウェイブフォーム5番の音がスネアドラムだったとします。通常、ドラム系の音は一定の周波数でしか発音されません。現在スネアドラムはWavのとなりの出力レート(Rate)を見ると16789Hzで発音されています。そこで、5番のウェイブフォームのMid-Cの値を16789Hzに指定します。これで変換時に何が起こるかというと、スネアドラムは1:ピアノの中央Cの音で出力されます。さて、ここで活躍するのがマニュアルの一番下、ドラムテーブルの横に私が振りました青文字の+-番号です。D2のスネアドラム+22となっておりますのでMid-Cを22回右クリックして22音上げます。するとスネアドラムは1:ピアノD2の音で出力されるようになり、あとはMIDIシーケンサでドラムチャンネルを割り当てれば自動的にスネアドラムが鳴ります。ポイントは、周波数を上げると変換後の音が下がるということです。逆に考えやすいので気をつけましょう・・・。
 それからタムなどの音の高さが変化するドラム系もまれにあります。タムの場合は118:メロディタムのトーンとして扱えば代用可能ですが音の高さが変わるシンバルなどはそうはいきません。出力されるどちらかの周波数に合わせておいて、後ほどMIDIシーケンサで調整してください。



4.音量調節

 さて、ここでひとまず変換してみましょう。うまくいけば、ドラム系の音がピアノで音量のバランスが悪いことをのぞけばかなり本物に近いMIDIが出来上がっているはずです。音量はゲームによってかなりまちまちで一発でちょうど良い音量になることは楽器数が多ければ多いほどなかなかありません。SPCToolによって変換されたMIDIの音量はすべてコントロールチェンジのボリュームに出力されます。ノートオンベロシティーはすべて64の統一されます。必然的にMIDIの容量は音量命令が増える分だけ大きくなるでしょう。音量調節は、ウェイブフォーム出力レベル(Amp)で行います。小さいと思ったら大きく、大きすぎると思ったら小さめにしてみて下さい。ゲームによっては90くらいまで上げなければならないものから10前後に落さなければ丁度良くならないものがあります。チャンネルアウトプットの右下部分にあるAmpはWAVE変換のときのみ影響するようです。



5.変換のコツ

 一応、音量の調整を完了した時点でSPCToolの役目は終了です。あとは個人のMIDIシーケンサによって微調整していきます。ここで、変換するときのちょっとしたコツ等を記載しておきましょう。
 曲の始まりから大量命令を流し込むSPCというのが時々存在します。このようなSPCは普通に変換しようとするとハングアップして強制終了してしまうことがあります。回避方法はいくつかあります。まず、MIDI変換の際には全チャンネルをミュートにしてみて下さい。ミュートしたチャンネルもMIDI変換の際には出力されます。 チャンネルアウトプット の表示処理がなくなる分だけやや負荷が減って変換が上手くいくことがあるようです。それから、1回どれかのウェイブフォームのサンプルを再生してから変換するという方法もあります。これだとなぜか上手くいかなかったものがうまくいくことがあります。事前にサンプルを読み込んだことによって何か変化が起こるのでしょうか・・・。
 それでもダメな場合、最後の手段があります。F7キーを押してデバッグモードを開いて下さい。大量の数値画面が出てくると思います(これも自作画像として載せたほうがわかりやすいのですがさすがに辛いので・・・)ここで左上段にあるダイレクトページ0座標FA(0A-F0)の値を見て下さい。これはタイマーレジスタで曲のテンポを制御しています。(SPCによっては別の座標にあるものもあります)この値を16進数で2倍にするとテンポが倍ゆっくりになります。つまり流れ込む単位時間あたりの変換命令量も半分になります。MIDI変換後はMIDIのテンポを2倍にします(通常信じられないようなテンポの曲に仕上がることが多いです・・・)これによって変換に成功可能になることがかなりあります。しかし、はじめからレジスタ値がDFなどの2倍にできない値の場合はこの方法は有効ではありませんし、2倍以外の値を指定したりすると後でMIDIのテンポ調整が面倒になってきますのでご注意ください。それからこの値を含めてデバッグモードで改変した値はチャンネルアウトプットの下のボタン群の一番左の「巻き戻し」?をクリックすると無効になります。値を変えたらすぐにMIDI変換を行う必要があります。



補足.テンポをどうするか

 聞く分には支障はないのですがテンポの拍と曲の拍がずれるというのは編集をする上でも不都合が出てきます。しかし、SPCToolの仕様上このテンポのずれの解消は私の知る上では不可能だと思われます。テンポだけを伸びちぢみさせる「タイムストレッチ」という機能つきのシーケンサもあるようですが細かい修正は難しいでしょう。
 一応タイマーレジスタに対応するテンポの値を表にしてみました。タイマーレジスタの値はおそらくゲームによって決まっています。そして、対応するテンポの値も下のようにまちまちですのであまり意味がないといえば意味がないのですが一応・・・。

<左:タイマーレジスタ値 右:変換後テンポ>
00
01
02
03
04
05
06
07
08
09
0a
0b
0c
0d
0e
0f
XXX
3750
937
625
234
375
625
428
117
208
187
170
156
144
133
125
10
11
12
13
14
15
16
17
18
19
1a
1b
1c
1d
1e
1f
117
110
208
197
187
178
170
163
156
150
144
138
133
129
125
120
20
21
22
23
24
25
26
27
28
29
2a
2b
2c
2d
2e
2f
117
113
110
107
208
202
197
192
187
182
178
174
170
166
163
159
30
31
32
33
34
35
36
37
38
39
3a
3b
3c
3d
3e
3f
156
153
150
147
144
141
138
136
133
131
129
127
125
122
120
119
40
41
42
43
44
45
46
47
48
49
4a
4b
4c
4d
4e
4f
117
115
113
111
110
108
107
105
208
205
202
200
197
194
192
189
50
51
52
53
54
55
56
57
58
59
5a
5b
5c
5d
5e
5f
187
185
182
180
178
176
174
172
170
168
166
164
163
161
159
157
60
61
62
63
64
65
66
67
68
69
6a
6b
6c
6d
6e
6f
156
154
153
151
150
148
147
145
144
142
141
140
138
137
136
135
70
71
72
73
74
75
76
77
78
79
7a
7b
7c
7d
7e
7f
133
132
131
130
129
128
127
126
125
123
122
121
120
120
119
118
80
81
82
83
84
85
86
87
88
89
8a
8b
8c
8d
8e
8f
117
116
115
114
113
112
111
110
110
109
108
107
107
106
105
209
90
91
92
93
94
95
96
97
98
99
9a
9b
9c
9d
9e
9f
208
206
205
204
202
201
200
198
197
196
194
193
192
191
189
188
a0
a1
a2
a3
a4
a5
a6
a7
a8
a9
aa
ab
ac
ad
ae
af
187
186
185
184
182
181
180
179
178
177
176
175
174
173
172
171
b0
b1
b2
b3
b4
b5
b6
b7
b8
b9
ba
bb
bc
bd
be
bf
170
169
168
167
166
165
164
163
163
162
161
160
159
158
157
157
c0
c1
c2
c3
c4
c5
c6
c7
c8
c9
ca
cb
cc
cd
ce
cf
156
155
154
153
153
152
152
151
150
149
148
147
147
146
145
144
d0
d1
d2
d3
d4
d5
d6
d7
d8
d9
da
db
dc
dd
de
df
144
143
142
142
141
140
140
139
138
138
137
136
136
135
135
134
e0
e1
e2
e3
e4
e5
e6
e7
e8
e9
ea
eb
ec
ed
ee
ef
133
133
132
132
131
131
130
129
129
128
128
127
127
126
126
125
f0
f1
f2
f3
f4
f5
f6
f7
f8
f9
fa
fb
fc
fd
fe
ff
125
124
123
123
122
121
121
121
120
120
120
119
119
118
118
117