SOUND ManualTone Editor User's Manual /
Back | ■
Tone Editor User's Manual

Appendix 3


● About the format of binary files

Here, the format of the transmission file is described. Basically, the complete version of the format submitted by YAMAHA with undescribed parts, missing parts, and incorrect parts corrected is recorded. The general structure of the SATURN SCSP format is as follows.

 Item
 size
 Mixer start offset from start
 2 bytes
 Velocity head offset from head
 2 bytes
 PEG start offset from start
 2 bytes
 PLFO head offset from head
 2 bytes
 Offset of 0th Voice data from the beginning
 2 * a bytes
 ::
 Offset of voice data a from the beginning
 Mixer Data 0
 18 * b bytes
 ::
 Mixer Data b
 VelocityData 0
 10 * c bytes
 ::
 VelocityData c
 PEGData 0
 10 * d bytes
 ::
 PEGData d
 PLFOData 0
 4 * e bytes
 ::
 PLFOData e
 VoiceData 0
a {F (x) has 4 * a + Σ (F (i) * 32) for each voice
Returns the number of layers i = 0 to be included}
 ::
 VoiceData a
 WaveData 0
  f
 ΣW (i) W (x) returns the size of the waveform i = 0
::
 WaveData f

● Details

Next, we will analyze each item in detail.

◆ Mixer part format
Mixer is 1 byte per channel, and 7-5 bits are assigned to Effect Send Level and Effect PAN is assigned to the rest.
The size will be 18 bytes.

 7
 6
 Five
 Four
 3
 2
 1
 0
 Channel 0
 EffectSendLev
EffectPAN
 1 byte
 :
 :
:
 :
 Channel 17
 EffectSendLev
EffectPAN
 1 byte

◆ Velocity part format
In the Velocity format, in addition to the parameters set on the tone editor, it is necessary to calculate another parameter for each point.
See Sound Tool Guide Vol1 for this parameter.
The size will be 10 bytes.
 Slope-coded value 0
 1 byte
 VelocityPoint 0
 1 byte
 VelocityLevel 0
 1 byte
 Slope-coded value 1
 1 byte
 VelocityPoint 1
 1 byte
 VelocityLevel 1
 1 byte
 Slope-coded value 2
 1 byte
 VelocityPoint 2
 1 byte
 VelocityLevel 2
 1 byte
 Slope-coded value 3
 1 byte

◆ PEG part format
Since the operability on the tone editor is prioritized, different values are assigned for editing and sending.
The level of PEG to be edited is the table number.
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};
From this table and PEG Time
	PEGRate = LevelTable / PEGTime;

Is calculated to obtain the PEG Rate. From this, the table number is calculated and used as the transmission data.
The PEG rate table is written in C code as follows.

	long PEGRateTable [128];

	/ * Creation of PEG rate table (100 times the actual value) * /

	for (i = 0L; i <128L; ++ i)
		PEGRateTable [i] = (long) (((float) i * (float) i * (float) 100)	
				/ (float) 16384 * (float) 100); / * Find the slope * /

Delay table value
 1 byte
 OffsetLevel table value
 1 byte
 AttackRate table value
 1 byte
 AttackLevel table value
 1 byte
 DecayRate table value
 1 byte
 DecayLevel table value
 1 byte
 SustainRate table value
 1 byte
 SustainLevel table value
 1 byte
 ReleaseRate table value
 1 byte
 ReleaseLevel table value
 1 byte

◆ PLFO part format
This parameter is not used when actually editing in the tone editor, but is edited as a table value. The edited value is written as it is.
 Delay table value
 1 byte
 PLFO frequency table value
 1 byte
 AMP table value
 1 byte
 Fade timetable value
 1 byte

◆ Voice part format
 7
 6
 5
 4
 3
 2
 1
 0
 FM
 Bend range width (0 -13)
 1 byte
 ×
 Portamento time (0 -127)
 1 byte
 ×
 Number of layers
 1 byte
 Volume Bias (-127 --127)
 1 byte
 Layer Data 0
 32 bytes
:: ::
 Layer Data n
 32 bytes
FM: For checking if this voice is in FM format

◆ Layer part format
The Layer part is contained in the Voice format.
Part of the format is written directly in the SCSP register.
This part is a little complicated, so I will explain it later.
The data size is 32 bytes.
 7
 6
 5
 4
 3
 2
 1
 0
 ×
 Beginning of MIDI notes (0 -127)
 1 byte
 ×
 End of MIDI note (0 -127)
 1 byte

SCSP register part
23 bytes

23 bytes
 Base note (0 -127)
 1 byte
 Fine tune (-63 --63)
 1 byte
 FM connection 1 (0 -127)
 1 byte
 For FM connection 2 (0 -127)
 1 byte
 Velocity number (0 -255)
 1 byte
 PEG number (0 -255)
 1 byte
 PLFO number (0 -255)
 1 byte

● About SCSP register part
Since this register is written directly in SCSP, one parameter does not reserve 1 byte.

reference
"HARDWARE MANUAL" / SCSP User's Manual / ■ Control register for each slot
 15
 14
 13
 12
 11
 Ten
 9
 8
 7
 6
 5
 4
 3
 2
 1
 0
 PEG
 PLFO
 ---
 (1)
 (2)
 (3)
 (Four)
 Loop control
 8Bit
 StaetAddress (19:16)
 Waveform Start Address (15-0)
 Loop Start Address (15-0)
 Loop End Address (15-0)
 DecayRate2 (4-0)
 DecayRate1 (4-0)
 EG Old
 Attack Rate (4-0)
 ---
 (Five)
 KeyRateScaling (3-0)
 DecayLevel (4-0)
 Release Rate (4-0)
 LFO M
 PEG M
 PLFO M
 ---
 ---
 ---
 (6)
 (7)
 TotalLevel (7-0)
 FM Modulation (3-0)
 FM connection 1 (5-0)
 FM connection 2 (5-0)
 ---
 (8)
 TMod
 (9)
 LFOR
 LFO frequency (4-0)
 PLFO waveform
 PLFO depth (2-0)
 ALFO waveform
 ALFO depth (2-0)
 ---
 ---
 ---
 ---
 ---
 ---
 ---
 ---
 ---
 EffectSelect (3-0)
 EffectSend (2-0)
 DirectSend (2-0)
 DirectPAN (4-0)

Parameters written in abbreviated form due to space limitations
 Abbreviation
 Contents
 8Bit
 Waveform sample size (stands at 16 Bit)
 PEG
 PEG switch
 PLFO
 PLFO switch
 LFO M
 LFO modulation
 PEGM
 PEG modulation
 PLFOM
 PLFOM modulation
 TMod
 Total level modulation
 LFOR
 LFO reset

In this table, only the parameters used in SEGA SatToneEd Ver1.00 are listed. The unused parameters are (1) to (9) in the table, and the contents are as follows.
 number
 Name
 Contents
 (1)
 KEYONEX
 Key ON execution (written by driver)
 (2)
 KEYONB
 Key ON, Key OFF registration (written by driver)
 (3)
 SBCTL
 Source bit control (written by driver)
 (Four)
 SSCTL
 Sound source control (written by driver)
 (Five)
 LSLNK
 Loop start link (written by driver)
 (6)
 STWINH
 Stack write protection (write by driver)
 (7)
 SDIR
 Sound Direct (written by driver)
 (8)
 OCT
 Octave (written by driver)
 (9)
 FNS
 Frequency number switch (written by driver)

◆ Waveform part format
The waveform format is saved by arranging the waveforms in the specified waveform order.
There is no header part and it is pure audio data.
Playback information, waveform addresses, etc. are all stored in the layer.

┌─────────────┐
│ Waveform data 1 │
├─────────────┤
│ Waveform data 2 │
├─────────────┤
│ Waveform data 3 │
├─────────────┤
│: │
├─────────────┤
│: │
├─────────────┤
│ Waveform data X │
└─────────────┘

Back | ■
SOUND ManualTone Editor User's Manual /
Copyright SEGA ENTERPRISES, LTD., 1997