home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Datafile PD-CD 3
/
PDCD_3.iso
/
utilities
/
utilsf
/
ifftext
/
SMUS
< prev
Wrap
Text File
|
1993-06-24
|
49KB
|
1,142 lines
"SMUS" IFF Simple Musical Score
Date: February 5, 1986
From: Jerry Morrison, Electronic Arts
Status: Adopted
1. Introduction
This is a reference manual for the data interchange format "SMUS",
which stands for Simple MUsical Score. "EA IFF 85" is Electronic Arts'
standard for interchange format files. A FORM (or "data section")
such as FORM SMUS can be an IFF file or a part of one. [See "EA IFF
85" Electronic Arts Interchange File Format.]
SMUS is a practical data format for uses like moving limited scores
between programs and storing theme songs for game programs. The format
should be geared for easy read-in and playback. So FORM SMUS uses
the compact time encoding of Common Music Notation (half notes, dotted
quarter rests, etc.). The SMUS format should also be structurally
simple. So it has no provisions for fancy notational information needed
by graphical score editors or the more general timing (overlapping
notes, etc.) and continuous data (pitch bends, etc.) needed by
performance-oriented MIDI recorders and sequencers.
A SMUS score can say which "instruments" are supposed play which notes.
But the score is independent of whatever output device and driver
software is used to perform the notes. The score can contain device-
and driver-dependent instrument data, but this is just a cache. As
long as a SMUS file stays in one environment, the embedded instrument
data is very convenient. When you move a SMUS file between programs
or hardware configurations, the contents of this cache usually become
useless.
Like all IFF formats, SMUS is a filed or "archive" format. It is completely
independent of score representations in working memory, editing operations,
user interface, display graphics, computation hardware, and sound
hardware. Like all IFF formats, SMUS is extensible.
SMUS is not an end-all musical score format. Other formats may be
more appropriate for certain uses. (We'd like to design an general-use
IFF score format "GSCR". FORM GSCR would encode fancy notational data
and performance data. There would be a SMUS to/from GSCR converter.)
Section 2 gives important background information. Section 3 details
the SMUS components by defining the required property score header
"SHDR", the optional text properties name "NAME", copyright "(c) ",
and author "AUTH", optional text annotation "ANNO", the optional instrument
specifier "INS1", and the track data chunk "TRAK". Section 4 defines
some chunks for particular programs to store private information.
These are "standard" chunks; specialized chunks for future needs can
be added later. Appendix A is a quick-reference summary. Appendix
B is an example box diagram. Appendix C names the committee responsible
for this standard.
Update: This standard has been revised since the draft versions. The
"INST" chunk type was revised to form the "INS1" chunk type. Also,
several SEvent types and a few text chunk types have been added.
Note: This is a MacWrite[tm] 4.5 document. If you strip it down to a
text file, you'll lose pictures, significant formatting information
like superscripts, and characters like ")". Don't do it.
----------------------------------------------------------------
|(Sorry, EA. We had to strip it down for ease of distribution, |
| but we did convert pictures to text-form and where we could |
| not do that, we provided ILBM illustrations that people |
| could actually show using the standard "showilbm" program) |
----------------------------------------------------------------
References:
"EA IFF 85" Standard for Interchange Format Files describes the underlying
conventions for all IFF files.
"8SVX" IFF 8-Bit Sampled Voice documents a data format for sampled
instruments.
Electronic Arts[tm] is a trademark of Electronic Arts.
MIDI: Musical Instrument Digital Interface Specification 1.0, International
MIDI Association, 1983.
MacWrite[tm] is a trademark of Apple Computer, Inc.
SSSP: See various articles on Structured Sound Synthesis Project in
Foundations of Computer Music.
2. Background
Here's some background information on score representation in general
and design choices for SMUS.
First, we'll borrow some terminology from the Structured Sound Synthesis
Project. [See the SSSP reference.] A "musical note" is one kind of
scheduled event. It's properties include an event duration, an event
delay, and a timbre object. Theevent duration tells the scheduler
how long the note should last. The event delay tells how long after
starting this note to wait before starting the next event. The timbre
object selects sound driver data for the note; an "instrument" or
"timbre". A "rest" is a sort of a null event. Its only property is
an event delay.
Classical Event Durations
SMUS is geared for "classical" scores, not free-form performances.
So its event durations are classical (whole note, dotted quarter rest,
etc.). It can tie notes together to build a "note event" with an unusual
event duration.
The set of useful classical durations is very small. So SMUS needs
only a handful of bits to encode an event duration. This is very compact.
It's also very easy to display in Common Music Notation (CMN).
Tracks
The events in a SMUS score are grouped into parallel "tracks". Each
track is a linear stream of events.
Why use tracks? Tracks serve 4 functions:
1. Tracks make it possible to encode event delays very compactly.
A "classical" score has chorded notes and sequential notes; no overlapping
notes. That is, each event begins either simultaneous with or immediately
following the previous event in that track. So each event delay is
either 0 or the same as the event's duration. This binary distinction
requires only one bit of storage.
2. Tracks represent the "voice tracks" in Common Music Notation.
CMN organizes a score in parallel staves, with one or two "voice tracks"
per staff. So one or two SMUS tracks represents a CMN staff.
3. Tracks are a good match to available sound hardware. We can
use "instrument settings" in a track to store the timbre assignments
for that track's notes. The instrument setting may change over the
track.
Furthermore, tracks can help to allocate notes among available
output channels or performance devices or tape recorder "tracks".
Tracks can also help to adapt polyphonic data to monophonic output
channels.
4. Tracks are a good match to simple sound software. Each track
is a place to hold state settings like "dynamic mark pp ", "time signature
3/4", "mute this track", etc., just as it's a context for instrument
settings. This is a lot like a text stream with running "font" and
"face" properties (attributes). Running state is usually more compact
than, say, storing an instrument setting in every note event. It's
also a useful way to organize "attributes" of notes. With "running
track state" we can define new note attributes in an upward- and
backward-compatible way.
Running track state can be expanded (run decoded) while loading
a track into memory or while playing the track. The runtime track
state must be reinitialized every time the score is played.
Separated vs. interleaved tracks. Multi-track data could be stored
either as separate event streams or interleaved into one stream. To
interleave the streams, each event has to carry a "track number" attribute.
If we were designing an editable score format, we might interleave
the streams so that nearby events are stored nearby. This helps when
searching the data, especially if you can't fit the entire score into
memory at once. But it takes extra storage for the track numbers and
may take extra work to manipulate the interleaved tracks.
The musical score format FORM SMUS is intended for simple loading
and playback of small scores that fit entirely in main memory. So
we chose to store its tracks separately.
There can be up to 255 tracks in a FORM SMUS. Each track is stored
as a TRAK chunk. The count of tracks (the number of TRAK chunks) is
recorded in the SHDR chunk at the beginning of the FORM SMUS. The
TRAK chunks appear in numerical order 1,