Atari XL/XE: RMT

RMT can be used to produce 2 (16bit) or 4 (8bit) channels of music for the POKEY chip.

The Instrument slot is selected by clicking 00: Instrument 00. Instrument definitions can be loaded into these slot using the menu Instrument > Load and Paste to Actual Instrument. (note it is possible to use instruments from other tracks by saving/loading to instrument files).

Notes are entered by typing on the keyboard; the allowed range spans 6 octaves, which are selected by clicking Octave 1-2.

Tracks are numbered, and can therefore be re-used inside the song definition list on the right side of the screen.

To finalize the song, click below the last line of your song definition list, and press the key “G” to insert Go to line 00. The song can now be saved with File > Export As… Make sure the export options match those shown below, including the address (HEX) C000.

(NOTE: In case you would like to use “ready-made” RMTs in your project, make sure to relocate them to address $C000 by loading and re-exporting through the RMT software)

Keyboard Shortcuts

Hotkeys

 ESC Stop playing song, mute all sounds. If PROVE mode is active, deactivate it.
 F2 Play song from the begin include beat speed initialization.
 SHIFT  F2 Similar to F2, but with autofollow of the currently played position.
 F3 Play song from currently edited position.
 SHIFT  F3 Similar to F3, but with autofollow of the currently played position.
 F4 Cyclicly play the currently edited set of tracks.
 SHIFT  F4 Similar to F4, but with autofollow of the currently played position.
 F5 Switch to TRACK EDIT.
 F6 Switch to INSTRUMENT EDIT.
 F7 Go to INFO EDIT.
 F8 Go to SONG EDIT.
 F9 PROVE mode 1 – mono / 2 – stereo / off.
 F11 RESPECT VOLUME mode on / off.
 F12 Switch to TRACK EDIT / INSTRUMENT EDIT.
 PAUSE Mute all sounds and reinitialize the Atari sound routine.
 SHIFT  PAUSE Similar to PAUSE, but with reinitialize of the sound output.
 numblock / Move left to previous track (i.e. previous sound generator).
 numblock * Move right to following track (i.e. following sound generator).
 numblock – Decrease volume for newly entered notes.
 numblock + Increase volume for newly entered notes.
 SHIFT  tonekeys Play note with current instrument and volume on the selected sound generator.
 SHIFT  CONTROL  tonekeys Play stereo note with current instrument and volume on the selected sound generator (i.e. on the both, left and right, sound generators).
 SHIFT  SPACE Stop playing note on the selected sound generator.
 SHIFT  CONTROL  SPACE Stop playing stereo note (i.e. on the both, left and right, sound generators).
 CAPSLOCK Turn on / off CapsLock mode (indicated by "CAP" in the statusbar). CapsLock mode is used while the text parameters are edited for entering uppercase and other special characters (!@#$%^&*()_+:"<>?|) by Shift key.
 CONTROL  1-8 Turn on / off the sound generator (track) 1 to 8.
 CONTROL  9 Turn on all the sound generators (tracks).
 CONTROL  0 Turn off all the sound generators (tracks).
 CONTROL  BACKQUOTE Turn on / off the active sound generator (track).
 SHIFT  BACKQUOTE Inversion of on/off states of the all sound generators (tracks).
 BACKQUOTE Solo play of the active sound generator (track) / turn on all the generators (tracks).
 NUMLOCK Increase parameter for cursor scroll down after entering note or space key.
 SHIFT  NUMLOCK Decrease parameter for cursor scroll down after entering note or space key.

TRACK EDIT

NNN TT VSS
NNNNotes from C-1 to C-6.
TTNumber of instrument from $00 to $3F.
VVolume from $0 to $F (also can be used without note and instrument).
SSBeat speed from $01 to $FF (speed column).

Hotkeys

 UP ,  DOWN ,  LEFT ,  RIGHT ,  TAB ,  SHIFT+TAB ,  PAGE UP ,  PAGE DOWN Move cursor.
 SHIFT  PAGE UP ,  PAGE DOWN Preset octave up / down.
 SHIFT  LEFT ,  RIGHT ,  numblock 0-9 Set current instrument.
 CONTROL  UP ,  DOWN Move up / down in the song.
 CONTROL  LEFT ,  RIGHT ,  BACKSPACE Set track number into the song at current possition.
 CONTROL  S Go to the speed column.
 CONTROL  G Turn on / off "go to line" command in the song at current position.
 HOME Move cursor to begin of the track / begin of the "track loop".
 CONTROL  HOME Set up / clear begin of the "track loop".
 END Move cursor to the end of track.
 CONTROL  END Set up / clear the end of track.
 ENTER Replay note at the cursor position.
 SHIFT  ENTER Replay note at the cursor position and get its instrument number and volume for preset values.
 CONTROL  ENTER Replay all notes at the currently edited line.
 INSERT ,  DELETE Insert / delete lines in the track.
 CONTROL  I ,  U Insert / delete lines in the song (with auto-change of the all relevant "go to line" values).
 CONTROL  P Insert new line with unused empty tracks.
 CONTROL  O Insert copy or clone of song line(s).
 CONTROL  N Put new empty unused track to actual song position.
 SPACE Delete note, instrument, volume and speed values in the track at the cursor position.

Note column

 tonekeys Insert note and play it. (Note: If RESPECT VOLUME is active, previous volume value won’t be replaced.)
 numblock 1-6 Change octave of the note at the cursor position and play it.
 BACKSPACE Delete note and instrument values (volume and speed values will not be cleared).

Instrument number column

 0-F Set up / change instrument number.
 BACKSPACE Delete note and instrument values (volume and speed values will not be cleared).

Volume column

 0-F Set up / change volume.
 BACKSPACE Delete note, instrument and volume values (speed value will not be cleared).

Speed column

 0-F Set up / change beat speed.
 BACKSPACE Delete beat speed.

Block operations

 SHIFT  UP ,  DOWN ,  HOME ,  END Select block.
 CONTROL  A Select all valid data in the currently edited track to block.
 CONTROL  INSERT ,  C Copy block data to the clipboard.
 SHIFT+INSERT ,  CONTROL+V Paste data from the clipboard to the cursor position.
 CONTROL  E Exchange of block select data and the clipboard data.
 CONTROL  X Move block data to the clipboard.
 DELETE Delete block data.
 CONTROL  B Restore block data from backup. The backup is created when the block is getting start to select.
 HOME ,  END Go to the begin / the end of the block.
 CONTROL  F4 Cyclicly play all tracks in the area according to the block top-bottom.
 SHIFT  CONTROL  F4 Similar to CONTROL+F4, but with autofollow of the currently played position.
 ENTER Replay notes step-by-step cyclicly inside the block.

Block data modifications

 SHIFT  CONTROL  A Block modifications mode. All changes are provided either on each line of the block, or only on lines with instrument numbers equal to preset instrument.
 SHIFT  CONTROL  PAGE UP ,  PAGE DOWN Transpose note up / down by semitones (5 octaves max.).
 SHIFT  CONTROL  LEFT ,  RIGHT Instrument change (by $3F value max.).
 SHIFT  CONTROL  numblock + ,  numblock – Volume up / down (by $F value max.).
 CONTROL  F Block effects/tools.

Mouse control

Track head area (titles TRACK_L1 to TRACK_R4)

 LeftMouseButton Turn on / off the relevant sound generator (track).
 RightMouseButton Solo play of the relevant sound generator (track) / turn on all the generators (tracks).

INSTRUMENT EDIT

NAMEName of the instrument, 32 chars max.
ENVELOPE LENLength of the envelope, from $01 to $20 (i.e. 32 max.).
ENVELOPE GOJump to given envelope column when envelope end reached.
VSLIDEVolume slide when end of envelope reached for the first time. $00 = no volume slide, $FF = maximal volume slide.
VMINMinimal volume value reached by VSLIDE parameter.
TABLE LENLength of the table, from $01 to $20 steps (i.e. 32 max.).
TABLE GOJump to given table line when table end reached.
TABLE SPDSpeed for the each table step, from $01 to $40 vbi.
TABLE TYPETable type. 0 = notes, 1 = frequencies
TABLE MODETable mode. 0 = add note (or frequency) to base note, 1 = add note (or frequency) to last calculated note (or frequency). Notice: If resulting note by reason of note adding is out of C-1 to C-6 range (hex values $00 to $3D), then output volume will be zero. But frequency addings are not limited.
EFFECT DELAYDelay before start of VIBRATO and FSHIFT effects by $01 to $FF vbi, $00 = no effects.
EFFECT VIBRATOEffect vibrato, 3 levels from $01 to $03, $00 = no vibrato.
EFFECT FSHIFTEffect "frequency shifting" from $00 to $FF for each vbi.
AUDCTL 15KHZTurn on / off AUDCTL bit "main clock base 15khz".
AUDCTL FI2+4Turn on / off AUDCTL bit "high pass filter to channel 2 clocked by channel 4".
AUDCTL FI1+3Turn on / off AUDCTL bit "high pass filter to channel 1 clocked by channel 3".
AUDCTL CH4+3Turn on / off AUDCTL bit "join channels 4 and 3.
AUDCTL CH2+1Turn on / off AUDCTL bit "join channels 2 and 1.
AUDCTL 1.79CH3Turn on / off AUDCTL bit "clock channel 3 with 1.79MHz.
AUDCTL 1.79CH1Turn on / off AUDCTL bit "clock channel 1 with 1.79MHz.
AUDCTL POLY9Turn on / off AUDCTL bit "9 bit poly counter".

Table of notes / freqs

TABLE $00 – $1FFrom 1 to 32 parameters for table. It contains array of note (in halftones) or frequency addings according to TABLE TYPE value. For negative values there are complementary numbers used, for example -1 = $FF.

Envelope

VOLUME RVolume from $0 to $F for right channels. It will be used for stereo songs in tracks R1 to R4.
VOLUME LVolume from $0 to $F. It will be used on tracks L1 to L4.
DISTORTIONSound type from $0 to $E, even values only.
COMMANDEnvelope command, from $0 to $7.
X, YTwo parameters from $0 to $F for special command. It can be used as a two separate parameters or as one hexadecimal value $XY.
FILTERFilter. $0 = no active, $1 = acitve. It works with sound generator 1 or 2 only. It engage two generators: 1+3 or 2+4. It has higher priority than 16bit bass tones and non filtered voices, therefore it can occupy their sound generators or it can switch 16bit bass tones to 8bit and use its high byte for filtering. If resulting volume is zero, filtering won’t be used (and no occupation of other generators arrive).
PORTAMENTOPortamento. $0 = no active, $1 = acitve. If active, then "portamento volatile frequency" is used instead of current frequency.

Sound type (DISTORTION parameter)

0Distortion 0. (AUDC $0v)
2Distortion 2. (AUDC $2v)
4Distortion 4. (AUDC $4v)
6Distortion 12 (AUDC $Cv) plus join of two sound generators for 16bit resolution bass tones. It works with generator 2 or 4 only, It engage two generators: 2+1 or 4+2. On other generators it works as a distortion 12 with bass table 1.
8Distortion 8. (AUDC $8v)
ADistortion 10, pure tones. (AUDC $Av)
CDistortion 12, bass tones – bass table 1. (AUDC $Cv)
EDistortion 12, bass tones – bass table 2. (AUDC $Cv)

Envelope command (COMMAND parameter)

0Play the base note shifted by $XY semitones. If resulting note by reason of note shifting is out of C-1 to C-6 range (hex values $00 to $3D), then output volume will be zero.
1Play the frequency $XY directly.
2Play the base note shifted by frequency $XY.
3Add $XY semitones to base note. Play base note (new value). If resulting note by reason of note shifting is out of C-1 to C-6 range (hex values $00 to $3D), then output volume will be zero.
4Add frequency $XY to FSHIFT register. Play base note.
5Set up portamento speed $X, step $Y (each $X vbi will be "volatile portamento frequency" shifted up or down by $Y value in a direction of actual frequency). If $XY=$00, then set current frequency directly to volatile portamento frequency.
6Add $XY value to FILTER_SHFRQ. (Whenever the new note in track is getting started, FILTER_SHFRQ is initialized to $01, so that default join filter generator frequency is higher by 1.)
7Set the base note to $XY value directly. Play base note (new value). If $XY=$80, then use the current volume for VOLUME ONLY forced output.

Hotkeys

 LEFT ,  RIGHT ,  UP ,  DOWN Move cursor.
 TAB Move cursor to set up the instrument parameters / the envelope parameters.
 SHIFT  TAB Move cursor to set up the name of the instrument.
 0-F ,  CONTROL+LEFT ,  CONTROL+UP ,  CONTROL+RIGHT ,  CONTROL+DOWN ,  BACKSPACE Settings of the parameter values (in a valid ranges only).
 SHIFT  PAGE UP ,  PAGE DOWN Preset octave up / down.
 SHIFT  LEFT ,  RIGHT ,  numblock 0-9 Select current instrument.
 SHIFT  CONTROL  numblock + ,  numblock – Change the R+L volume envelopes up/down. If cursor is at line "VOLUME L" or "VOLUME R", then volume envelope for left or right channel only is changed.

Table of notes / freqs changes

 HOME Move cursor to the begin of the table / to the begin of "table loop".
 CONTROL  HOME Set up the begin of "table loop".
 END Move cursor to the end of the table.
 CONTROL  END Set up the end of the table.

Envelope parameters

 HOME Move cursor to the begin of the envelope / to the begin of "envelope loop".
 CONTROL  HOME Set up the begin of "envelope loop".
 END Move cursor to the end of the envelope.
 CONTROL  END Set up the end of the envelope / set up a maximal length of the envelope.
 INSERT Insert columns into the envelope (shift to the right).
 DELETE Delete columns into the envelope (shift to the left).

Mouse control

Volume envelope area

 LeftMouseButton Draw the volume curve.
 RightMouseButton Set the zero volume.

INFO EDIT

NAMEName of the song and author, 64 chars max.
MUSIC SPEED: AA/MM/S
AACurrent beat speed, from $01 to $FF.
MMMain speed, from $01 to $FF. Actual beat speed is initialized by main speed when whole song is getting started to play.
SSpeed of the instruments, from $1 to $4. (X times per 1 frame.)

Hotkeys

 LEFT ,  RIGHT ,  TAB Move cursor.
 SHIFT  TAB Move cursor to set up name of the song.
 0-F ,  CONTROL+LEFT ,  CONTROL+UP ,  CONTROL+RIGHT ,  CONTROL+DOWN Settings of parameter values (in valid ranges only).
 ENTER Exit from INFO EDIT.

SONG EDIT

 LEFT ,  RIGHT ,  UP ,  DOWN Move cursor.
 0-F ,  CONTROL+LEFT ,  CONTROL+RIGHT ,  BACKSPACE Set up number of track or "go to line" value in the song.
 G Turn on / off "go to line" command in the song.
 INSERT ,  CONTROL+I ,  DELETE ,  CONTROL+U Insert / delete lines in the song (with auto-change of all relevant "go to line" values).
 CONTROL  P Prepare song line with unused empty tracks.
 CONTROL  O Insert copy or clone of song line(s).
 CONTROL  N Put new empty unused track to actual song position.

PROVE mode 1 – mono / 2 – stereo

 tonekeys Play note only (without tracks modify).
 SPACE Stop playing note on the selected sound generator.
 ESC Mute all sounds, deactivate PROVE mode.