229 lines
8.0 KiB
Plaintext
229 lines
8.0 KiB
Plaintext
This Document release Date: 11/8/93 (ver 1.0 of "SSS-form.txt")
|
|
|
|
THE STUDIO SESSION SONG FILE FORMAT (Editor version 1.0)
|
|
--------------------------------------------------------
|
|
Format created by: Steve Capps <capps@applelink.apple.com>, Mark Zimmer,
|
|
Tom Hedges, Ed Bogas, Nick Borelli, Ty Roberts, and Neil Cormia
|
|
of Bogas Software in 1986.
|
|
|
|
This hacked-together description by: Jamal Hannah <jamal@gnu.ai.mit.edu>
|
|
|
|
There are 12 fields and 6 tracks to this format.. on old Macs, since you
|
|
use complex waveforms for these sounds, you'll probabaly have to
|
|
simulate the multiple sound channels by combining them on the fly
|
|
with some fancy math. I think there is actualy a Mac Toolbox call
|
|
to do this in the origional "Sound Driver" chapter of Inside Macintosh.
|
|
|
|
File Signatures (Macintosh Only)
|
|
Type: 'XSNG' (sometimes 'DSNG' or 'JSNG')
|
|
Creator: 'XPRT'
|
|
|
|
Offset Field Length
|
|
0 Tempo 2 range: 10-450
|
|
2 unused 2 should be nul ($0000)
|
|
4 TimeSignature 2 decimal ranges of each byte: 1-32,1-32
|
|
6 Pascal string names of Instrument Files begin here, each followed
|
|
by 2 nul bytes. ($00 $00)
|
|
?? unused 1 (should be $00.. if there are no instruments,
|
|
this will come right after TimeSignature)
|
|
?? unused 64
|
|
?? Data for track 1, terminated by $B0
|
|
?? Data for track 2, terminated by $B0
|
|
?? Track 3 "
|
|
?? Track 4 "
|
|
?? Track 5 "
|
|
?? Track 6 "
|
|
|
|
Instruments are implicitly numbered from 01 onward, starting with the
|
|
first one listed. They are the exact name of the Studio Session
|
|
Instrument file, which should be on the same volume or directory.
|
|
|
|
Track data consists of the following commands, which represent notes
|
|
and other components on a musical staff:
|
|
|
|
COMMANDS (with fields and field names):
|
|
|
|
ending $C0 xx (endingNumber)
|
|
timeSignature $BD xx xx (timeSigTop,timeSigBottom)
|
|
barLine $BA
|
|
newInstrument $B9 xxxx (instrumentNumber)
|
|
dashedBarLine $B5
|
|
keySignature $B4 xx (keyMode)
|
|
tempoChange $B3 xxxx (tempoSpeed)
|
|
repeatBarEnd $B2
|
|
repeatBarStart $B1 xxxx (numRepeats)
|
|
coda $B0
|
|
musicalNote xx xx xx (pitch, unit#, slurStatus)
|
|
|
|
NOTE UNITS:
|
|
A "musicalNote" is really either a rest, or a note. Normaly a unit is
|
|
a rest, but if it has anything in the pitch field (mentioned above)
|
|
then it is a note. A rest always has $00 in the pitch and slurStatus
|
|
fields.
|
|
|
|
unit32 $03 1/32nd rest or note
|
|
unit32_3 $02 1/32nd rest or note triplet
|
|
unit32_2 none
|
|
unit32_1 none
|
|
unit16 $06 1/16th rest or note
|
|
unit16_3 $04 1/16th rest or note triplet
|
|
unit16_2 none
|
|
unit16_1 $09 1/16th rest or note, dotted
|
|
unit8 $0C 1/8th rest or note
|
|
unit8_3 $08 1/8th rest or note triplet
|
|
unit8_2 $15 1/8th rest or note, double-dotted
|
|
unit8_1 $12 1/8th rest or note, dotted
|
|
unit4 $18 1/4th rest or note
|
|
unit4_3 $10 1/4th rest or note triplet
|
|
unit4_2 $2A 1/4th rest or note, double-dotted
|
|
unit4_1 $24 1/4th rest or note, dotted
|
|
unit2 $30 1/2 rest or note
|
|
unit2_3 $20 1/2 rest or note triplet
|
|
unit2_2 $54 1/2 rest or note, double-dotted
|
|
unit2_1 $48 1/2 rest or note, dotted
|
|
unit1 $60 Whole rest or note
|
|
unit1_3 $40 Whole rest or note, triplet
|
|
unit1_2 $A8 Whole rest or note, double-dotted
|
|
unit1_1 $90 Whole rest or note, dotted
|
|
|
|
(A triplet is a rest/note with a little 3 over it, with playing length
|
|
multiplied by 2/3 (shortened). A double-dotted unit's length is multiplied
|
|
by 1 3/4, and a single dotted unit length is multiplied by 1 1/2... if
|
|
I am wrong, a good book on musical notation can clear this up!)
|
|
|
|
PITCH:
|
|
Pitch values range from "C0" (lower C, at the bottom of the scale) up to
|
|
"C6" (upper C, at the top of the scale).. and are represented by the
|
|
numbers $01-$2B (1-43).
|
|
Accidentals: If the pitch value has $40 added to it, then it is "flat".
|
|
If it is "sharp", it has $80 added.
|
|
|
|
SLUR STATUS:
|
|
The slur is that little curvy line that links two notes together and "slurs"
|
|
them together at playtime. Here are the byte values:
|
|
|
|
$00 No slur on this note
|
|
$01 Slur start/line curving from this note toward one on the right
|
|
$02 Slur end/line coming from a note to the left
|
|
$03 Slur joint (two slur lines coming from both left and right)
|
|
|
|
(There are other codes that go here too.. sometimes a note has a little
|
|
letter floating over it. I still have yet to decode these variations.)
|
|
|
|
BAR LINE:
|
|
This byte represents the vertical bar line that marks the end of a measure.
|
|
I'm not sure what a dashed bar line is for!
|
|
|
|
ENDING:
|
|
An "ending" command is followed by the number that the ending is repeated,
|
|
ranging from 1-10 ($01-$0A)
|
|
|
|
REPEAT BAR:
|
|
The Command byte is followed by a word-length number representing the number
|
|
of times to repeat the following notes. The repeated section is terminated
|
|
by the next instance of a "repeatBarEnd" command.
|
|
|
|
TIME SIGNATURE:
|
|
The "timeSignature" command is followed by bytes representing the top and
|
|
bottom of the time signature, respectivly.
|
|
|
|
KEY SIGNATURE:
|
|
The key signature command is followed by codes representing the following
|
|
modes of the notes that follow:
|
|
|
|
Value Key Number to add to pitch-bytes of notes following
|
|
$00 C Major $00
|
|
$01 G Major $00
|
|
$02 D Major $80
|
|
$03 A Major $80
|
|
$04 E Major $80
|
|
$05 B Major $80
|
|
$06 F Sharp Major $80
|
|
$07 C Sharp Major $80
|
|
$08 F Major $00
|
|
$09 B flat Major $00
|
|
$0A E flat Major $00
|
|
$0B A flat Major $00
|
|
$0C D flat Major $00
|
|
$0D G flat Major $40
|
|
(note: dont add this value if the note already has
|
|
a sharp or a flat)
|
|
|
|
TEMPO CHANGE:
|
|
A tempo change command byte is followed by a word-length value representing
|
|
the new tempo speed, ranging (in decimal) from 10-450.
|
|
|
|
CODA
|
|
A coda is a byte representing the end of a track. If a track is empty,
|
|
the coda byte holds it's place. Since the file ends with the end of the
|
|
6th track, there will always be at least one $B0 at the end of the file.
|
|
|
|
|
|
SUPER STUDIO SESSION SONG FILE FORMAT (Editor version 2.1)
|
|
----------------------------------------------------------
|
|
The only real difference between verion 1 and 2 is the addition of two more
|
|
tracks, for a total of eight. The second two are represented just like
|
|
the 1st six, with $B0 bytes as ending markers. There is also one additional
|
|
command:
|
|
|
|
VOLUME:
|
|
The volume command is represented by (hex) byte $BF, with a word-length
|
|
value following, and 3 bytes after that which I havn't figured out.
|
|
Volume always defaults at "fff" (loudest). "ppp" is the softest volume.
|
|
|
|
BF xxxx xx xx xx Volume
|
|
|
|
BF 0000 58 88 9A ppp
|
|
BF 0001 12 40 80 pp
|
|
BF 0002 12 40 80 p
|
|
BF 0003 12 40 80 mp
|
|
BF 0004 58 88 9A mf
|
|
BF 0005 12 40 80 f
|
|
BF 0006 58 88 9A ff
|
|
BF 0007 58 88 9A fff
|
|
|
|
Editor version 2 also places a (incremental) number above most bar lines,
|
|
but this has nothing to do with the file format.
|
|
|
|
|
|
(SUPER) STUDIO SESSION INSTRUMENT FILES (From Bogus Prod. Docs)
|
|
---------------------------------------------------------------
|
|
The format of instrument files is very simple. The samples are eight bit
|
|
unsigned samples (silence =128). There is an eight byte header with the
|
|
following format followed by the samples themselves.
|
|
|
|
No. Bytes Description
|
|
|
|
2 Loop Start: byte offset of loop start
|
|
2 Loop End: byte offset of loop end
|
|
1 Recorded pitch: #37 is middle C
|
|
1 0: reserved
|
|
2 Length in bytes
|
|
n The samples
|
|
|
|
Note: If loopback is used, there must be at least 370 samples after the
|
|
loop end.
|
|
|
|
For more information, look at "Flute mid" in SoundEdit(tm) and then look at
|
|
the binary version of the file with any file utility.
|
|
Note: some older files are compressed on disk so they won't follow the above
|
|
description and some files have "0" for the pitch which implies middle C.
|
|
|
|
(Special Note: This file format is basicly the origional Macintosh "Sound Cap"
|
|
and SoundEdit recorded instrument format (Type/Creator: 'DEWF'/'FSSC' or
|
|
'DEWF'/'SFX!') respectivly. - JH )
|
|
|
|
The SoundEdit manual has a good explanation of sampling techniques.
|
|
SoundEdit will create Super Studio Session(tm) or Jam Session(tm) instrument
|
|
files or convert them from most other formats.
|
|
|
|
|
|
Bogas Productions
|
|
751 Laurel Street, #213
|
|
San Carlos, California 94070
|
|
Phone: (415) 592-5129
|
|
Fax: (415) 592-5196
|
|
|
|
(April, 1992)
|
|
---
|