|
|
Appendix B: ittyMIDI Player Technical Information
-
Files
-
File Types
ittyMIDI Player plays only type 0 files. Type 1 files are converted to
type 0 in SongLoader. Type 2 files are not supported. (The vast majority
of MIDI files are type 1 or type 0).
-
Database Format
MIDI files are stored as records in Palm SMF databases. ittyMIDI Player
only opens databases with names of 10 characters or less, created by
SongLoader. The files are stored in the
standard SMF format for Palm, provided they are under 60k.
-
Extended Memory
Player version 2.0 now supports extended memory. This allows
SMF databases to be located on cards for extra storage space. Devices
with this feature include: Sony Clies (Memory Stick), Most newer
Palms (SD cards) and Handera (SD and CF). (Handspring memory modules are
also supported, but this section does not apply to them, as they operate
as traditional memory).
A few considerations need to be made when using extended memory:
-
Player only reads databases from the default directory for PDB's on the
extended memory card (For example, /Palm/Launcher on Palm devices). This
will not present a problem if you use the Palm desktop to install
databases, but if you use another installation method, such as the Memory
Stick slot on a Sony laptop, you must make sure it is in the correct
directory. To find out the correct directory, use the file utility on
the handheld to copy any program to the expansion card. The directory it
is placed in should be the default directory for PDB's.
-
Because ittyMIDI Player must load a song into main memory before playing
it, you will not be able to play songs that
are larger than the amount of free
memory you have on the handheld. For example, if your largest song is
200k, you need slightly more than 200k free to play that song.
-
Finally, there may be noticeable load times at startup when using
extended memory. When starting
the application for the first time after loading
a new book or editing playlists, you may have to
wait for several seconds. Subsequent startup times will be much faster.
-
Large File Handling
The Palm database format only supports files of up to 64k. When a file is
60k or larger, it is split into 60k chunks.
-
The first chunk is stored in the SMF database. It is playable as
a standalone file, although the track length will be incorrect.
-
Additional chunks are stored in proprietary databases. The naming
scheme for these databases is: the name of the SMF database padded to
10 characters with spaces, with the word "data" appended. Underscores
may be used instead of spaces on extended memory, depending on the card
type and how the database was loaded.
-
Each chunk begins with a sequencer specific meta event (Event number
01). See section VI for details of MicroTools, Inc. events.
-
Each chunk ends with the hexadecimal bytes FF 2F 00, the MIDI end-of-file
message, even though it may not be the true end of the file. This is
to make the first chunk be playable by other programs that do not know
this message format.
-
SysEx messages are limited to 60K in size.
-
Timing
-
Accuracy
ittyMIDI Player is accurate to within 10ms, the timing resolution
available on Palm OS®.
-
Timing errors are not cumulative. The time will always be within
10ms.
-
The default MIDI timing resolution is 96 PPQ--about 5ms for a song
at a tempo of 120.
-
ittyMIDI Player normally operates at 10ms resolution, meaning that
every 10 milliseconds, all outstanding messages are sent. However, when
no song is playing, ittyMIDI Player reduces this rate to 30ms. This
was done to preserve the battery in the handheld. This only effects
thru data
-
Rate
-
Data Send Rate
-
All Notes Off
-
During Play
When stopped during play, Player individually turns off each note that
was on.
-
Otherwise
When stop is pressed and no song is playing, Player sends an All Notes
Off message on each channel.
-
Automation
-
Automation Support
-
MicroTools, Inc. proprietary events.
-
Meta Events
Each sequencer specific meta-event starts with the following bytes. All
values are in hexadecimal.
FF 7F This is the code for a sequencer specific
event.
xx This is the length of the remainder of the
message, in bytes. ( This may be more than
one byte. See the MIDI Spec.)
00 01 3E This is the manufacturer ID for MicroTools,
Inc.
-
MicroTools, Inc. Meta Events
The next byte tells which MicroTools message it is.
- Big File Message
Type byte: 01. A message telling the location of file chunks for files
> 60k.
xx xx xx The rest of the message is made up
of 3-byte values. The first is the
unique record ID of the first
chunk, in "Midi Song Files". Each
subsequent value is the unique
record ID AND record name of a
chunk in "Midi Song Data".
- Break Message
Type Byte: 02. This is a break message. When a song with this message
is encountered, Player advances to the next song and stops, no matter
what the play mode is set to. This only appears in a MIDI file with no
other data. There are no other bytes in this message.
- Chain Message
Type byte: 03. This is a chain message. It is the same as a break message
in every aspect, except play continues rather than stops, once again
regardless of the play mode. This is not currently supported but is
reserved for future use.
-
Miscellaneous Information
-
Time Signature
If a time signature message
is encountered in the MIDI file, the measure will immediately advance
and the beat will be reset to 1.
-
Reset Controllers
We reset all controllers at
the beginning of every song. This restores the controllers to a known
value so that one song will not affect how the next song sounds.
-
Volume Slider
The Volume Slider on the play
screen proportionally adjusts the volume on each channel. It does not use
the master volume controller. Many synthesizers do not implement master
volume support.
| |