TFMX
TFMX ( T he F inal M usicsystem e X tended ) is a commercial music program for the Commodore Amiga from Chris Hülsbeck and Peter Thierolf. Chris Hülsbeck developed the concept, the music routine and the graphics, while Peter Thierolf programmed the editor. TFMX was published by Demonware in 1988/89. A new publication took place in 1994 by the company Magnamedia on the Amiga Power Disc No. 21.
The TFMX editor
Basics
The TFMX editor is one of the trackers . In contrast to the trackers customary at the time, the TFMX editor does not use a pure line system, but is based on tracks, patterns and macros. The values are always entered in the hexadecimal system .
The TFMX editor provides the track page (also known as track step), the pattern page and the macro page for editing a song.
The track page
The track page offers eight independent tracks . Two values (one byte each ) can be entered in each track : on the one hand, the number of the pattern to be played and, on the other hand, the amount of transposition of the pattern to be played. The eight tracks in steps ( Steps played) at the same time. The track step therefore has a data volume of eight words (8 × 2 bytes) per step . The number of steps is limited to 512.
Valid pattern numbers for the track page are $ 00 to $ 7F. This corresponds to a maximum number of 128 patterns. In addition, there are special pattern commands that affect a single track and track-step commands that affect the entire song.
Pattern commands:
- $ 80 - Continue playing the previous pattern
- $ FE - Deletion of the audio channel specified in the transpose value
- $ FF - Empty pattern
Track-Step commands:
command | parameter | command | function |
---|---|---|---|
EFFE 0000 | no | STOP | The song will stop. |
EFFE 0001 | yyyy | LOOP | The song loops to track step line yyyy. |
EFFE 0002 | yyyy | SPEED | The song speed will be changed to yyyy. |
EFFE 0003 | yyyy | TIMESHARE * | Switch the player's computing time on (yyyy = 0001) or off (yyyy = 0000). * This command only works with TFMX music routines that do not support 7-voice mode. |
EFFE 0003 | 00yy 00zz | 7-VOICE ** | Playback rate of the song in yy kHz, fine adjustment of the song speed by zz. ** This command only works with TFMX music routines that support the 7-voice mode. |
EFFE 0004 | 00yy 00zz | FADE | The song volume is faded to zz at a rate of yy. |
Example: Fade-in a song with speed $ 28 to volume $ 3F:
Track 1 | Track 2 | Track 3 | Track 4 | Track 5 | Track 6 | Track 7 | Track 8 | |
---|---|---|---|---|---|---|---|---|
STEP | PT TR | PT TR | PT TR | PT TR | PT TR | PT TR | PT TR | PT TR |
0000 | EF FE | 00 04 | 00 28 | 00 3F | FF 00 | FF 00 | FF 00 | FF 00 |
The pattern page
The patterns form the basic building blocks of the TFMX song. Combined in the track page, they result in the overall song. The notes and the corresponding macros as well as the volume and the sound channel are entered in the pattern page. There are also a variety of pattern commands that can also be used in the pattern. The number of patterns is limited to 128. The length of an individual pattern is variable and, like the track page, is divided into steps. A step of a pattern contains either a note or a pattern command and each has the size of a long word . Each pattern is always terminated with the $ F0 END pattern command. The end of an individual pattern can therefore be recognized in the data structure of the TFMX song by the long word $ F0000000.
Schematic structure of a pattern:
STEP | GRADE | STATUS | MACRONR. | SURNAME | VOLUME | CHANNEL | DETUNE |
0000 | 18th | F # 2 | 00 | F. | 1 | 00 | |
0001 | F3 | WAIT | 0F | Count 00-FF | 0 | 0 | 00 |
0002 | F0 | END | 00 | Next track step | 0 | 0 | 00 |
This pattern plays the note F # 2 using the macro number $ 00 at maximum volume and waits for a period of $ 0F steps until the pattern is ended. In the TFMX song, this pattern is available in the form of three long words (one long word per step):1800F100 F30F0000 F0000000
Note values can be entered in three different ways:
- If the grade is less than $ 80, the next step is automatically carried out when the grade is processed. A pattern command such as B. $ F3 WAIT is required here so that the note can be heard and the TFMX music routine does not play the next note straight away.
- Note values from $ 80, which are smaller than $ C0, contain such a WAIT command. The number of waiting steps is entered in the last byte originally intended for DETUNE.
- Note values from $ C0 that are less than $ F0 contain a PORTAMENTO command. The pitch is applied to the note value entered here, provided that a note with a different pitch has previously been played on the same sound channel. The value for the portamento counter (set to $ 01 by default) is set in the byte provided for the MACRONUMMER and the portamento speed is set in the byte provided for DETUNE. The combination of both values gives the speed of the portamento effect.
- Values from $ F0 represent pure pattern commands.
Pattern commands:
GRADE | STATUS | MACRONR. | SURNAME | VOLUME | CHANNEL | DETUNE | parameter |
F0 | END | - | Next track step | - | - | - | no |
F1 | LOOP | aa | count / step.w | b | b | bb | Programming a loop aa = number of loop runs (00 corresponds to infinite) bbbb = step to which the loop is to be performed |
F2 | CONT | aa | patternno./step.w | b | b | bb | Continue in another pattern (JMP) aa = pattern number to be continued at bbbb = step in the target pattern to be continued from |
F3 | WAIT | aa | count 00-ff | - | - | - | aa = number of waiting steps |
F4 | STOP | - | Stop this pattern | - | - | - | no |
F5 | KUP ^ | - | Set key up / channel | - | a | - | Sends the KEYUP command to the macro on sound channel a |
F6 | VIBR | aa | speed / rate.b | - | b | cc | Vibrato aa = speed of vibrato b = sound channel cc = strength of vibrato |
F7 | ENVE | aa | speed / endvolume.b | - | b | cc | Envelope aa = speed of volume change b = sound channel cc = target volume |
F8 | GSPT | aa | patternno./ step.w | b | b | bb | Branch into a subpattern (JSR) aa = pattern number to which branching is made bbbb = step in the target pattern to which the continuation is made |
F9 | ROPT | - | Return old pattern | - | - | - | Return to old pattern (RTS) |
FA | FADE | aa | speed / endvolume.b | - | - | bb | Fade-in / fade-out of the overall volume aa = speed of volume change bb = target volume |
FB | PPAT | aa | patt./track+transp | - | b | cc | Play Pattern Plays the pattern aa in track b with a transposition of cc |
FC | FXPR | aa | prio / channel + len.b | - | b | cc | (Function is not documented) |
FD | FLAG | aa | flag no. 0-3 / value.w | b | b | bb | (Function is not documented) |
FE | STOP | - | Stop customizing | - | - | - | End marking of a custom pattern (for your own programming of the music routine) |
FF | NOP! | - | no operation | - | - | - | No function (serves as a filler note for some functions of the TFMX editor) |
The macro page
Before sample material can be used in the piece of music, a macro must first be created. For this purpose, the TFMX editor offers the option of creating a standard macro that contains the data necessary for playing back the sample material (e.g. start and length of the sample). Apart from that, the TFMX editor provides a large number of macro commands that can be used to develop complex macros. The number of macros is limited to 128.
The TFMX file format
The TFMX editor saves a TFMX song split into three files. Get saved:
- Prefix info. - Info file, which contains the names of the patterns, macros and samples
- Prefix mdat. - Music file which contains all the data of the piece of music excluding the sample data
- Prefix smpl. - Sample file which contains the pure sample data
To play a TFMX song, the music and sample files are sufficient. The info file is only required for further processing of the TFMX song in the TFMX editor.
Well-known TFMX musicians
- Chris Hülsbeck (e.g. Apidya , Jim Power, Turrican trilogy)
- Rudolf Stember (e.g. The Black Eye: The Nordland Trilogy , Mad TV , Mr. Nutz)
- Peter Thierolf (e.g. Fatal Heritage, Ooops Up, The Power)
- Dirk Magerkord (e.g. Brainball, PP Hammer)
- Jonathan Pickard (e.g. PreFlightCheck, Rush of Discovery)
- Jan Krolzig (e.g. Cheeky Twins)
- Markus Schneider (e.g. Gordian Tomb, Tusker)
Web links
- Chris Hülsbeck - Official website of Chris Hülsbeck
- Exotica Editors Page - different versions of the TFMX editor
- Exotica TFMX Page - extensive collection of TFMX songs