English
SOUND Manualトーンエディタユーザーズマニュアル/
戻る|   ■
トーンエディタユーザーズマニュアル

付 録 3


●バイナリファイルのフォーマットについて

ここでは送信ファイルのフォーマットを記述します。基本的にはYAMAHAが提出 したフォーマットに未記載の部分や欠落部分、誤った部分を修正した完全版を収録します。 SATURN SCSP フォーマットの大まかな構造は以下のようになっています。

項   目
サ イ ズ
 先頭からMixerの先頭オフセット
 2バイト
 先頭からVelocityの先頭オフセット
 2バイト
 先頭からPEGの先頭オフセット
 2バイト
 先頭からPLFOの先頭オフセット
 2バイト
 先頭から0番Voiceデータのオフセット
  2*a バイト
 :
 先頭からa番Voiceデータのオフセット
 Mixer Data  0
 18*b バイト
:
 Mixer Data  b
 VelocityData  0
 10*c バイト
:
 VelocityData  c
 PEGData  0
 10*d バイト
:
 PEGData  d
 PLFOData  0
  4*e バイト
:
 PLFOData  e
 VoiceData 0
a{F(x)は各voiceが4*a+Σ(F(i)*32)
内包するLayer数i=0を返します}
:
 VoiceData  a
 WaveData  0
  f
 ΣW(i) W(x)は波形のサイズを返します
 i=0
:
 WaveData  f

●詳細

次に各項目について詳しく解析います。

◆Mixerパートのフォーマット
Mixerは1チャンネル1バイトで7-5ビットはEffect Send Level残りにEffect PANが割り当てられています。
サイズは18バイトになります。

7
6
5
4
3
2
1
0
チャンネル 0
EffectSendLev
EffectPAN
1バイト
チャンネル17
EffectSendLev
EffectPAN
1バイト

◆Velocityパートのフォーマット
Velocityのフォーマットはトーンエディター上で設定されるパラメータ以外にも う一つ各ポイントにつきパラメータを計算してやる必要があります。
このパラメータについてはSound Tool Guide Vol1を参照してください。
サイズは10バイトになります。
傾き符号化値 0
1バイト
VelocityPoint 0
1バイト
VelocityLevel 0
1バイト
傾き符号化値 1
1バイト
VelocityPoint 1
1バイト
VelocityLevel 1
1バイト
傾き符号化値 2
1バイト
VelocityPoint 2
1バイト
VelocityLevel 2
1バイト
傾き符号化値 3
1バイト

◆PEGパートのフォーマット
トーンエディター上での操作性を優先させているためエディットする値と送信する 値とは別のものが割り当てられています。
エディットするPEGのレベルはテーブル番号になっています。
long LevelTable[128] = { 
 	     0,   125,   250,   375,   500,   625,   750,   875,  
 	  1000,  1125,  1250,  1375,  1500,  1625,  1750,  1875,  
 	  2000,  2125,  2250,  2375,  2500,  2625,  2750,  2875,  
 	  3000,  3125,  3250,  3375,  3500,  3625,  3750,  3875,  
 	  4000,  4250,  4500,  4750,  5000,  5250,  5500,  5750,  
 	  6000,  6250,  6500,  6750,  7000,  7250,  7500,  7750,  
 	  8000,  8250,  8500,  8750,  9000,  9250,  9500,  9750,  
 	 10000, 10250, 10500, 10750, 11000, 11250, 11500, 11750,  
 	 12000, 12500, 13000, 13500, 14000, 14500, 15000, 15500,  
 	 16000, 16500, 17000, 17500, 18000, 18500, 19000, 19500,  
 	 20000, 21000, 22000, 23000, 24000, 25000, 26000, 27000,  
 	 28000, 29000, 30000, 31000, 32000, 33000, 34000, 35000,  
 	 36000, 37000, 38000, 39000, 40000, 41000, 42000, 43000,  
 	 44000, 45000, 46000, 47000, 48000, 49000, 50000, 51000,  
 	 52000, 54000, 56000, 58000, 60000, 62000, 64000, 66000,  
 	 68000, 72000, 76000, 80000, 84000, 88000, 92000, 95990 };
このテーブルとPEGTimeから
	PEGRate=LevelTable/PEGTime;

の計算を行いPEGRateを求めます。これよりテーブル番号を求め送信データとします。
PEGのレートテーブルはCコードにして以下のように記述されます。

	long	PEGRateTable[128];

	/*PEGレートテーブルの作成(実際の数値の100倍)*/

	for(i=0L;i<128L;++i)
		PEGRateTable[i]=(long)(((float)i*(float)i*(float)100)	
				/(float)16384*(float)100);	/* 傾きを求める */

Delayテーブル値
1バイト
OffsetLevelテーブル値
1バイト
AttackRateテーブル値
1バイト
AttackLevelテーブル値
1バイト
DecayRateテーブル値
1バイト
DecayLevelテーブル値
1バイト
SustainRateテーブル値
1バイト
SustainLevelテーブル値
1バイト
ReleaseRateテーブル値
1バイト
ReleaseLevelテーブル値
1バイト

◆PLFOパートのフォーマット
このパラメータはトーンエディターで実際にエディットする際にも実際の値は使わ ずにテーブル値でエディットします。エディットした値がそのまま書き込まれます。
Delayテーブル値
1バイト
PLFO周波数テーブル値
1バイト
AMPテーブル値
1バイト
フェードタイムテーブル値
1バイト

◆Voiceパートのフォーマット
FM
ベンドレンジ幅(0 -13)
1バイト
×
ポルタメントタイム(0 -127)
1バイト
×
レイヤー数
1バイト
Volume Bias(-127 - 127)
1バイト
Layer Data 0
32バイト
::
Layer Data n
32バイト
FM:このボイスがFMフォーマットかどうかのチェック用

◆Layerパートのフォーマット
LayerパートはVoiceフォーマットに内包されます。
フォーマットの一部にSCSPレジスタに直接書かれる部分があります。
この部分は少々複雑なので後述します。
データサイズは32バイトです。
×
MIDIノートの始まり(0 -127)
1バイト
×
MIDIノートの終わり(0 -127)
1バイト
 
SCSPレジスタパート
23バイト
 
23バイト
ベースノート    (  0 -127)
1バイト
ファインチューン(-63 - 63)
1バイト
FM結線用1      (  0 -127)
1バイト
FM結線用2      (  0 -127)
1バイト
Velocity番号    (  0 -255)
1バイト
PEG番号         (  0 -255)
1バイト
PLFO番号        (  0 -255)
1バイト

●SCSPレジスタパートについて
このレジスタは直接SCSPに書かれるので一つのパラメータが1バイト確保していません。

参照
「HARDWARE MANUAL」/SCSPユーザーズマニュアル/■スロット別制御レジスタ
 15 
 14 
 13 
 12 
 11 
 10 
PEG
PLFO
-
(1)
(2)
(3)
(4)
ループ制御
8Bit
StaetAddress(19:16)
波形の Start Address(15-0)
ループ Start Address(15-0)
ループ End Address(15-0)
DecayRate2(4-0)
DecayRate1(4-0)
EGHold
AttackRate(4-0)
-
(5)
KeyRateScaling(3-0)
DecayLevel(4-0)
ReleaseRate(4-0)
LFO M
PEG M
PLFO M
-
-
-
(6)
(7)
TotalLevel(7-0)
FM Modulation(3-0)
FM結線用1(5-0)
FM結線用2(5-0)
-
(8)
TMod
(9)
LFOR
LFO周波数(4-0)
PLFO波形
PLFO深度(2-0)
ALFO波形
ALFO深度(2-0)
-
-
-
-
-
-
-
-
-
EffectSelect(3-0)
EffectSend(2-0)
DirectSend(2-0)
DirectPAN(4-0)

スペースの関係上省略形で書かれたパラメータ
省略形
内 容
8Bit
波形のサンプルサイズ(16Bitのとき立てる)
PEG
PEGスイッチ
PLFO
PLFOスイッチ
LFO M
LFOモジュレーション
PEGM
PEGモジュレーション
PLFOM
PLFOMモジュレーション
TMod
トータルレベルモジュレーション
LFOR
LFOリセット

この表ではSEGA SatToneEd Ver1.00で使用されているパラメータのみを表記し てあります。使用されていないパラメータは表中の(1)から(9)までで内容は以下 の通りです。
番号
名  称
内  容
(1)
KEYONEX
Key ON実行(ドライバーにより書き込み)
(2)
KEYONB
Key ON、Key OFFの登録(ドライバーにより書き込み)
(3)
SBCTL
ソースビットの制御(ドライバーにより書き込み)
(4)
SSCTL
サウンドソースの制御(ドライバーにより書き込み)
(5)
LSLNK
ループスタートリンク(ドライバーにより書き込み)	
(6)
STWINH
スタック書き込み禁止(ドライバーにより書き込み)
(7)
SDIR
サウンドダイレクト(ドライバーにより書き込み)
(8)
OCT
オクターブ(ドライバーにより書き込み)
(9)
FNS
周波数番号スイッチ(ドライバーにより書き込み)

◆波形パートのフォーマット
波形フォーマットは決められた波形の順番に波形を並べて保存してあります。
ヘッダー部分はなく純粋な音声データです。
再生情報や波形のアドレス等はすべてレイヤーに格納されています。

┌─────────────┐
│  波形データ1     │
├─────────────┤
│  波形データ2     │
├─────────────┤
│  波形データ3     │
├─────────────┤
│    :        │
├─────────────┤
│    :        │
├─────────────┤
│  波形データX     │
└─────────────┘

戻る|   ■
SOUND Manualトーンエディタユーザーズマニュアル/
Copyright SEGA ENTERPRISES, LTD., 1997