Monotone by Hornet [web]

(note: this documentation is unfinished)

A tracker for simple output devices on the PC

A Trixter/Hornet Production
"On the Leading Edge of the Trailing Edge!"

---[Quickstart for the experienced tracker musician:

If you already know what a tracker is, you can get started with just
this information:

- Look at KEYLIST.TXT (the shipping keyboard configuration).

  - If you like it, print out KEYLIST.TXT and use it as a reference.
  - If you don't like it, run MTCONFIG and redefine keys to your liking.

- Because MONOTONE was written to support simple devices, the interface
  favors note entry over all other operations.  This means it probably
  doesn't navigate like you are used to.  The shipping navigation scheme
  is this:

  - Left hand on letter keys to enter notes
  - Right hand on numeric keypad to move around and change the default octave
  - Moving left/right immediately moves to the prev/next track's note entry

  With this scheme, you can enter the bulk of the song (the note data)
  with single keystrokes (no shift/ctrl/etc.) and without moving your hands
  from their default positions.

---[Design and Concepts:

MONOTONE is a tracker.  For those unfamiliar with trackers, a tracker is
a song editor/player that lets you compose a song by entering notes and
effects into a "pattern" made up of rows and columns.  (Each column is
called a "track", hence the name.)  Patterns are then strung together by
an "order list" to make a complete song.

While several PC trackers already exist, MONOTONE was designed from the
ground up as a tracker for extremely simple sound devices (ie.
significantly less capabilities than the Adlib or Sound Blaster cards).
Until MONOTONE, such devices have had no representation whatsoever on
the PC.

A "simple" sound device is one with the following characteristics:

  - MUST produce sound (ie. a tone at a particular frequency)
  - MAY have volume control
  - MAY have more than one hardware channel
  - MAY have one or more noise generators

Sound devices which meet only the basic criteria include:

  - The internal PC speaker
  - Any simple sine/sawtooth/triangle/square wave generator

Sound devices which meet (and are generally limited to) all four
criteria that have appeared on the PC in one form or another include:

  - Texas instruments SN76489 (IBM PCjr, Tandy 1000 series)
  - Phillips SAA 1099 (Creative Music System/Game Blaster)
  - General Instrument AY-3-8910 (Bank Street Music Writer card)

(While many other sound devices available on the PC can greatly exceed
these criteria, such as General MIDI or the Yamaha YM3812 (Adlib), they
are not the target audience for MONOTONE.  Using such devices is still
possible in MONOTONE, but none of their extended features will be

For maximum output device flexibility, all tracking is done against a
"virtual" sound device that matches one or more of the above criteria.
This is done by implementing a simple state machine in software, which
takes the song data and processes it into virtual channels.  For actual
output, the virtual channel data is mapped to the hardware via each
hardware's software object.  This allows the song to sound as consistent
as possible across different hardware devices.

Because the hardware these devices are found on is usually quite limited
(IBM PCjr, Tandy 1000, x86 8-bit ISA clones, etc.), MONOTONE was
designed for maximum compatibility with that hardware.  This was quite
intentional -- what good is support for the IBM PCjr 3-voice sound chip
if the program itself won't run on an IBM PCjr?  To that end, MONOTONE's
minimum hardware and software requirements are:

- Any IBM PC or true compatible
- 128KB of RAM
- One floppy disk drive
- Color display (monochrome support will be in a future release)

---[Implementation Details:

MONOTONE differs from previous Amiga and PC trackers in a few ways,
mostly because it was designed from the ground up to be as hardware
"agnostic" as possible.  Some of these differences are because we are
not limited to the Amiga's legacy (hardware periods, etc.) and others
are because of a rethinking of how a tracker should be designed for a
low-resource PC:

- Full octave range (A0 to C9, one more octave than an 88-key piano)
- Perfect equal temperament (ie. middle C is *exactly* middle C)
- Pattern navigation is optimized for note entry, not data entry

Despite these differences, the basic interface "concept" in MONOTONE
remains identical to most other trackers.

---[Known Limitations:

Several features were omitted to meet an initial April 2008 release
date.  As a result, the 0.3 release of MONOTONE has the following

- PC Speaker arpeggiator output only
- Number of tracks limited to 4
- No support for monochrome cards/monitors

The complete feature list described in this manual will be implemented
incrementally at later dates.

For practical reasons, MONOTONE is limited to the following:

- Maximum number of tracks: 12

---[User Notes:

- If you want a particular keyboard combination and the keyboard config
utility isn't registering it, blame your keyboard BIOS.  For maximum
compatibility on PC clones, MONOTONE uses the BIOS keyboard routine for
input. Some combinations are simply not registered depending on the
clone BIOS.  (If it's any consolation, some keypresses aren't registered
by IBM's own XT BIOS! For example, keypad "5" all by itself isn't
processed, nor is Ctrl+Insert, nor Alt+Enter.)  If your keypress combo
isn't picked up by the utility, blame the BIOS and choose another.

- Until I have a chance to optimize it, the pattern "repaint" routine
takes up enough CPU time that it interferes with playback slightly.  If
you are using MONOTONE on a 4.77MHz 8088, try tabbing over to the Order
List (or switching to the Status Screen) before starting playback for
smoother results.  (Any machine 8 MHz or faster will not have this

---[Composer Notes:

Output Device: PC Speaker

- If targeting the PC Speaker, whether 1-voice or multivoice, try not to
sustain notes if it's not necessary.  The pc speaker is not good at
reproducing harmony, so as much time as you can give each invidual
channel is best.  (In other words, the more staccato the note, the
better the chance that other notes may be heard.)

- Due to the nature of the "dominant channel" arpeggiator, the only way
each note will have a chance to be heard is if the speed is (numtracks)
or higher. For example, if you have three tracks with notes on them and
the tickspeed is set at 2 ticks, the first and second notes will sound
but the third won't because on the third tick the row is advanced.
Unless the third note was still sounding in the next row, it will never
have a chance to sound.

Output Device: Tandy/PCjr 3-voice

- to be written

Output Device: Creative Music System/Gameblaster 12-voice

- to be written

Output Device: Bank Street Music Writer card

- No notes, but if you actually own one of these you can consider yourself one
of the luckiest people alive.  There is only one of these left in the world
documented to still exist (owned by me) -- if you have one, drop me a line!

---[Special Thanks

Jason B.


MONOTONE will flesh out every feature possible for the first version of
the file format, which does not account for more than 8 effects, or a
concept of "instruments" or volume.  Future plans for MONOTONE includes
a second file format that does support these features, which would then
naturally lend itself to:

- More than 4 channels (although this is mainly held back by screen repaint)
- Descendant TSong objects to load Protracker MODs, which also means:
- Descendant TPlayer object to play Protracker MODs
- ADSR "instrument" envelopes (attack, decay, sustain, release) handled
  by the player engine

---[Contact Information

I can be reached at trixter@oldskool.org.

If you'd like to follow MONOTONE development and releases, subscribe to
the MONOTONE mailing list at http://list.oldskool.org/listinfo/monotone