ffbin @Wiki

サウンド

最終更新:

匿名ユーザー

- view
だれでも歓迎! 編集
\**波形番号

某所のものを改変したリストです。
よく分からなかったり複数ある奴はどの曲で使われてるか記載。
筆者が音楽にそんなに詳しくないので詳しい人楽器間違い等の修正求む。

01:Spanish Guitar(ガウのテーマの音高いほうのギター、高音用か?)
02:Fingered Bass
03:Wooden Flute(ティナのテーマ)
04:Sitar
05:Cello
06:Choir
07:Flute(目覚めなど)
08:Flute2(ロックのテーマなど)
09:Square Lead(死闘)
0A:Oboe
0B:Percussive Organ
0C:Piano
0D:Strings
0E:Trumpet
0F:Closed Hi-Hat

10:Wierd Picked Strings(シャドウのテーマ謎音)
11:Open Hi-Hat
12:Crash Cymbal
13:Breath
14:Snare drum
15:Finger Snap(low)(炭坑都市ナルシェ)
16:Timpani
17:Tom
18:Floor Bass
19:Pizzicato Strings
1A:Tromborn
1B:Harp
1C:Synth Bass
1D:Picked Strings(ティナのテーマリルムのテーマのギター?音)
1E:Distotion Guitar
1F:Ocarina

20:Orgoal(セリスのテーマ、某海外ツールではBanjo)
21:Erectric Snare
22:Bass Drum
23:Cowbell
24:Tubular Bell
25:Pipe Organ
26:Woot(ん?2の声)
27:Synth1(テクノdeチョコボで使用、チョ)
28:Synth2(テクノdeチョコボで使用、コ)
29:Synth3(テクノdeチョコボで使用、ボ)
2A:Finger Snap(high)(ストラゴスのテーマ)
2B:Synth Crap?(シャドウのテーマバスドラ後の音)
2C:Bass Strings
2D:Guiro
2E:Conga
2F:shaker

30:Wood Brock
31:Picked Strings(墓碑名のピアノ系のような音)
32:Spanish Guitar
33:Weird Oboe(リルムのテーマの謎音)
34:Wooden Flute(カイエンのテーマ)
35:Flute?(街角の子供達主旋律)
36:Bottle Blow
37:Tamborine
38:male choir
39:male choir(low)
3A:femal choir
3B:Pipe Organ(低音用?)
3C:Metal Bang(魔導研究所の謎音)
3D:Metal Bang(魔導研究所謎音後のカーンって鳴ってる奴)
3E:Xelophone
3F:Crowd Noise(大団円)


サウンド関係


1.注意事項

この文章の中で使用されている数値は音楽用語を除いて基本的に16進数です。
2バイトの数値をバイナリに記述する場合は、すべてリトルエンディアンです。
基本的に制御コードはロマンシングサガ3、クロノ・トリガーと共通です。


2.曲データの構成

FF6の曲データは、大きく2つに分かれています。
1つは曲内で使用する波形データ(楽器)を指定する部分。
もう1つは音階を記述したシーケンスデータです。


3.波形データの指定

波形データそのものは、楽器の音を記録したPCMのデータなので基本的に変更できません。
ファイル内に記録されている波形データの中から、どの曲でどの波形を使用するかを指定することができます。

曲ごとの波形データを指定している場所は、0x053F95から1曲につき32バイト単位で並んでいます。

参考:プレリュードは053FB5~053FD4です。

1つの波形を2バイトの数値で指定しているため、1曲につき16の波形が使用できることになります。
ここで指定できる数値は01~FFだと思われます(未検証)が、効果音で使用される波形も含んでいるため
実際に音楽で使用できるものはそれほど多くありません。


4.シーケンスデータの探し方

0x053E96-0X053F94 シーケンスデータオフセット[size:3]
この値からC0000を引いた値がシーケンスデータのオフセットになります。
曲の順番は構造体を参照してください。
データの終端のすぐ後から次の曲データが始まっているので、絶対にはみ出さないようにして下さい。
参考:プレリュードのシーケンスデータは0x085CA0~0x8641D
   戦闘曲のシーケンスデータは、0x08FA15~0x08FE42です。


5.シーケンスデータの構造

先頭38バイトがヘッダ、残りが実データです。
ヘッダの内容は以下の通りです。(すべてリトルエンディアン)
 00,01 データ長。実データより長めに指定してかまいません。
 02,03 実データの開始アドレス下位2バイト
 04,05 シーケンスデータの終了アドレス+1の下位2バイト(ここを見ればデータの終端が分かります。)
 06,07 Channel1のシーケンス開始アドレス下位2バイト(00,01と同じになる)
 08,09 Channel2のシーケンス開始アドレス下位2バイト
 0A,0B Channel3のシーケンス開始アドレス下位2バイト
 0C,0D Channel4のシーケンス開始アドレス下位2バイト
 0E,0F Channel5のシーケンス開始アドレス下位2バイト
 10,11 Channel6のシーケンス開始アドレス下位2バイト
 12,13 Channel7のシーケンス開始アドレス下位2バイト
 14,15 Channel8のシーケンス開始アドレス下位2バイト
 16~25 不明。06~15と同じ値にしておけば問題ない。
SFCの音声出力チャンネルは全部で8チャンネルあり、音楽データで一応すべてのチャンネルを使用できます。
(8つの音を同時に出すことができます。)
ただし、効果音を出力するときにはChannel8から順に割り込みが入ります。最大で4Channel使用されるようです。
特に戦闘曲を変更する場合は、途中で途切れてもあまり気にならない音を8~5Channelに割り当てたほうが良いです。
また、あるチャンネルを全く使用しない場合は開始アドレスに、終了アドレス+1(02,03と同じ値)を指定します。

参考:戦闘曲のデータ構造は以下のようになっています。
データ開始位置が08FA15なので、ヘッダは08FA15~08FA3Aです。
各Channelの開始アドレスは	Channel1:08FA3B
				Channel2:08FABC
				Channel3:08FB35
				Channel4:08FBCD
				Channel5:08FC62
				Channel6:08FCC3
				Channel7:08FD28
				Channel8:08FD99
※実際のデータがChannel番号順に並んでいる必要はありません。
データの終端が0BB0CBなのでヘッダは以下のようになります。
 2C 04 3B FA 43 FE 3B FA BC FA 35 FB CD FB 62 FC 
C3 FC 28 FD 99 FD 3B FA BC FA 35 FB CD FB 62 FC 
C3 FC 28 FD 99 FD


6.Channelごとのシーケンスデータ記述方法

Channelごとのシーケンスデータは音符をバイトコードに変換したものと、
テンポや音量などを指定する制御コードを羅列した楽譜のようなものです。
C3以下の値が音の高さと長さを表す音符で、C4以上の値が制御コードになります。
制御コードは後ろに続く0~3バイトの引数を持つので注意してください。


7.音符の記述方法

音符の変換式は以下のようになります。
バイトコード / 0E = 音の高さ
 0=ド
 1=ド#
 2=レ
 3=レ#
 4=ミ
 5=ファ
 6=ファ#
 7=ソ
 8=ソ#
 9=ラ
 A=ラ#
 B=シ
 C=タイ(直前の音を切らずに伸ばす)
 D=休符

バイトコード / 0E の余り = 音の長さ
 0=全音符
 1=2分音符
 2=3分音符
 3=付点4分音符
 4=4分音符
 5=6分音符
 6=付点8分音符
 7=8分音符
 8=12分音符
 9=16分音符
 A=24分音符
 B=32分音符
 C=48分音符
 D=64分音符

たとえば2Eの場合 2E / 0E = 3 余り 4 となるのでレ#の4分音符となります。

計算結果を一覧表にすると以下のようになります。(4.は付点4分音符)

			   	音の高さ
       ド    ド#   レ    レ#   ミ   ファ  ファ#  ソ    ソ#   ラ    ラ#   シ   タイ  休符
   1   00    0E    1C    2A    38    46    54    62    70    7E    8C    9A    A8    B6
   2   01    0F    1D    2B    39    47    55    63    71    7F    8D    9B    A9    B7
   3   02    10    1E    2C    3A    48    56    64    72    80    8E    9C    AA    B8
   4.  03    11    1F    2D    3B    49    57    65    73    81    8F    9D    AB    B9
音 4   04    12    20    2E    3C    4A    58    66    74    82    90    9E    AC    BA
の 6   05    13    21    2F    3D    4B    59    67    75    83    91    9F    AD    BB
長 8.  06    14    22    30    3E    4C    5A    68    76    84    92    A0    AE    BC
さ 8   07    15    23    31    3F    4D    5B    69    77    85    93    A1    AF    BD
  12   08    16    24    32    40    4E    5C    6A    78    86    94    A2    B0    BE
  16   09    17    25    33    41    4F    5D    6B    79    87    95    A3    B1    BF
  24   0A    18    26    34    42    50    5E    6C    7A    88    96    A4    B2    C0
  32   0B    19    27    35    43    51    5F    6D    7B    89    97    A5    B3    C1
  48   0C    1A    28    36    44    52    60    6E    7C    8A    98    A6    B4    C2
  64   0D    1B    29    37    45    53    61    6F    7D    8B    99    A7    B5    C3



8.制御コードの記述方法

制御コードについては、すべてのコードは調査していません。
テンポなどの曲全体に対する設定はChannel1で指定することに注意してください。
xx yy zzと表記しているのものは制御コードに続いて値を指定する必要があるものです。

C4 xx
ボリュームレベル指定。指定できる値は00~7Fで、7Fが最大です。
各Channelの先頭で最低1回は設定する必要があります。
曲の途中で変更することもできます。

C5 xx yy
ボリュームを速度xxでyyの値に変化させます。

C6 xx
ボリュームバランス(パン)指定。
設定できる値は01~7Fで、01=左より、3F=中央、7F=右より、となります。
各Channelの先頭で最低1回は設定する必要があります。
曲の途中で変更することもできます。

C7 xx yy
ボリュームバランス(パン)を速度xxでyyの値に変化させます。

C8 xx yy
ピッチベンド指定。
直後の音の高さをスライドさせます。
xxが速度でyyがスライド幅。
xx=7Fの時音符全体の長さを使ってスライドします。xx=40なら音符の前半のみでスライドします。
yyは半音単位で、符号付き整数で指定します。
01なら半音上げる。FFなら半音下げる。
E4~E5では滑らかに変化できないほどゆっくり音をスライドさせたいときにはこちら使います。

C9 XX YY ZZ
ビブラート指定。
XXがディレイで、YYが周期、ZZが振幅です。

CA
ビブラート解除。

CB xx yy zz
トレモロ指定。音量を上下に振動させます。
xxがディレイで、yyが周期、zzが変動幅です。

CC
トレモロ解除。

CD xx yy
パンLFO。
xxが変動幅、yyが変動速度です。
一回指定するだけで音が左右に振れ続けます。
有効な値は、どちらもD0辺りから怪しくなってきます。

CE
パンLFO解除。

CF xx
ノイズクロック
xx: 00-1F

D0
ノイズON

D1
ノイズOFF

D2
ピッチモジュレーション有効

D3
ピッチモジュレーション解除

D4
エコーON

D5
エコーOFF

D6 xx
オクターブ指定。
通常の音の高さは04です。
各Channelの先頭で最低1回は設定する必要があります。
曲の途中で変更することもできますが、実際にD6を使用することはありません。D7とD8で充分です。

D7
これ以降1オクターブ上がる。

D8
これ以降1オクターブ下がる。

D9 xx
音程補正 xx として設定する(0x0C で 1 オクターブ)

DA xx
音程補正に xx を加算する。

DB xx
(微小音程補正) xx として設定する。
(D9 xx のものとは別)

DC xx
波形(楽器)指定。
0x00-0x1F は効果音(PSG音源)です。(0x00-0x07のみ)
0x20 以降がその曲で選択した波形になります。
各Channelの先頭で最低1回は設定する必要があります。
曲の途中で変更することもできます。

DD xx
フェードイン(Attack rate)指定。
値が小さいほど音の立ち上がりが緩やかになります。
xx: 0F(早)~00(遅)

DE xx
Decay rate設定。
xx: 07(早)~00(遅)

DF xx
Sustain Level設定。
xx: 07(普)~00(小)

E0 xx
フェードアウト(Sustain rate)指定。
値が大きいほど音の減衰が急になります。値は0x00~0x1F

E1
ADSR の値を初期値に戻す(DD xx ~ E0 xx の解除)

E2 xx ~ E3
~の部分をxx+1回繰り返します。2重ループが可能です。
たとえば E2 07 25 E2 と記述するとレの16分音符を8回繰り返します。
リズムパートなどはこれをうまく使えばデータ量をかなり減らすことができます。

E4 ~ E5
~の部分にポルタメントがかかり、音程の変化がスムーズになります。
レガートさせる場合に使用します。ただし、途中で休符をはさむと解除されます。

E6
音符間の間隔(すき間)を空けない。

E7
音符間の間隔(すき間)を空ける。

E8 xx
音の長さを xx(0xC0 で 1 小節) として設定。

E9 xx
効果音 xx のPart A 部分を鳴らす。
(効果音は Part A と Part B の 2ch? で構成されています)

EA xx
効果音 xx のPart B 部分を鳴らす。

EB(EC-EF,FD-FF)
ループしない場合のデータ終端。

F0 xx
テンポ指定。指定できる値は00~FFで、00=遅い、FF=早い、となります。
音楽記号のテンポ指定とほぼ同じ値で良いようです。
Channel1の先頭で最低1回は設定する必要があります。
曲の途中で変更することもできます。

F1 xx yy
テンポを速度xxでyyの値に変化させます。

F2 xx
エコーボリューム指定。指定できる値は00~7Fです。
Channel1の先頭で最低1回は設定する必要があります。
曲の途中で変更することもできます。

F3 xx yy
エコーボリュームを速度xxでyyの値に変化させます。

F4 xx
エクスプレッション指定。指定できる値は00~FFで、FFが最大です。
ボリュームレベルと併せて音量を調節できます。
曲の途中で変更することもできます。

F5 xx yy zz
E2~E3の中で使用し、xx回目のループ時にアドレスyyzzへジャンプします。
通常は途中でループを抜けるときに使います。
アドレスは下位2バイトのみ指定します。
例えば 0A 0B 0C 0D 0B 0C 0E のようなメロディのとき、0B 0C の部分は同じですが、
0D 0Eが邪魔でループにできません。
この場合に
0A E2 01 0B 0C F5 02 yy zz 0D E3 0E (yy zzは0Eのアドレス)
と書くことができます。
ループカウンタは正常に破棄してくれるようです。

F6 xx xx
指定するアドレス(下位2バイトのみ指定)へジャンプする。
曲をループさせる必要があるため、各Channelの最後でループ開始位置へ戻してやる必要があります。

F7 xx yy(RS3と違って2Bytes)
エコーフィードバック強度指定。指定できる値は00~FFで、FFが最強です。
戦闘曲に対するエコー設定は効果音にも影響するので、変えないほうが良いです。
Channel1の先頭で最低1回は設定する必要があります。
曲の途中で変更することもできます。

F8 xx yy(RS3と違って2Bytes)
FIRフィルタ係数指定。低音強調、高音強調などのフィルタが使用できるようですが、詳細は不明です。
特に使用しない場合は00で良いようです。
Channel1の先頭で最低1回は設定する必要があります。
曲の途中で変更することもできます。

F9,FA (効果不明)
F9: INC $7B
FA: MOV $7B, #$00

FB (効果不明)
OR $61, $8F

FC xx yy
イベントコードでF7が設定されている場合に限り、xxyyにジャンプします。

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

記事メニュー
目安箱バナー