TFMX

TFMX

TFMX (The Final Musicsystem eXtended) ist ein kommerzielles Musikprogramm für den Commodore Amiga von Chris Hülsbeck und Peter Thierolf. Chris Hülsbeck entwickelte das Konzept, die Musikroutine und die Grafik, während Peter Thierolf den Editor programmierte. TFMX wurde 1988/89 von der Firma Demonware veröffentlicht. Eine Neuveröffentlichung erfolgte im Jahre 1994 durch die Firma Magnamedia auf der Amiga Power Disc Nr. 21.

Der TFMX-Editor

Grundlegendes

TFMX-Editor

Der TFMX-Editor zählt zu den Trackern. Abweichend von den damals üblichen Trackern verwendet der TFMX-Editor dabei kein reines Liniensystem, sondern basiert auf Tracks, Patterns und Macros. Die Eingabe der Werte erfolgt hierbei stets im Hexadezimalsystem.

Zur Bearbeitung eines Songs stellt der TFMX-Editor die Track-Page (auch als Track-Step bezeichnet), die Pattern-Page und die Macro-Page zur Verfügung.

Die Track-Page

Track-Page

Die Track-Page bietet acht voneinander unabhängige Spuren (Tracks). In jeder Spur können zwei Werte (jeweils ein Byte) eingetragen werden: zum einen die Nummer des zu spielenden Patterns und zum anderen die Höhe der Transponierung des zu spielenden Patterns. Die acht Spuren werden in Schritten (Steps) gleichzeitig abgespielt. Pro Schritt besitzt der Track-Step also eine Datenmenge von acht Wörtern (8× 2 Bytes). Die Anzahl der Schritte ist auf 512 begrenzt.

Gültige Patternnummern für die Track-Page sind $00 bis $7F. Das entspricht einer maximalen Anzahl von 128 Patterns. Darüber hinaus existieren spezielle Pattern-Kommandos, die sich auf einen einzelnen Track, und Track-Step-Kommandos, die sich auf den gesamten Song auswirken.

Pattern-Kommandos:

  • $80 – Weiterspielen des vorherigen Patterns
  • $FE – Löschen des im Transposewert angegebenen Tonkanals
  • $FF – Leeres Pattern

Track-Step-Kommandos:

BefehlParameterKommandoFunktion
EFFE 0000keineSTOPDer Song wird gestoppt.
EFFE 0001yyyyLOOPDer Song loopt zu Track-Step-Zeile yyyy.
EFFE 0002yyyySPEEDDie Songgeschwindigkeit wird auf yyyy geändert.
EFFE 0003yyyyTIMESHARE*Verringerung der Rechenzeit des Players ein- (yyyy = 0001) bzw. ausschalten (yyyy = 0000).
* Dieses Kommando funktioniert nur mit TFMX Musikroutinen ohne Unterstützung des 7-stimmigen Modus.
EFFE 000300yy 00zz7-VOICE**Wiedergaberate des Songs in yy kHz, Feineinstellung der Songgeschwindigkeit um zz.
** Dieses Kommando funktioniert nur mit TFMX Musikroutinen, die den 7-stimmigen Modus unterstützen.
EFFE 000400yy 00zzFADEDie Lautstärke des Songs wird auf zz mit einer Geschwindigkeit von yy gefadet.

Beispiel: Fade-In eines Songs mit der Geschwindigkeit $28 auf die Lautstärke $3F:

Track 1Track 2Track 3Track 4Track 5Track 6Track 7Track 8
STEPPT TRPT TRPT TRPT TRPT TRPT TRPT TRPT TR
0000EF FE00 0400 2800 3FFF 00FF 00FF 00FF 00

Die Pattern-Page

Pattern-Page

Die Pattern bilden die Grundbausteine des TFMX-Songs. In der Track-Page zusammengefügt, ergeben sie den Gesamtsong. In der Pattern-Page werden die Noten und die jeweils dazugehörigen Macros, sowie die Lautstärke und der Tonkanal eingegeben. Weiterhin gibt es eine Vielzahl an Patternbefehlen, die ebenfalls in den Pattern verwendet werden können. Die Anzahl der Pattern ist auf 128 begrenzt. Die Länge eines einzelnen Pattern ist variabel und gliedert sich, ebenso wie die Track-Page, in Schritte. Ein Schritt eines Pattern enthält entweder eine Note oder einen Patternbefehl und besitzt jeweils die Größe eines Langwortes. Jedes Pattern wird immer mit dem Patternbefehl $F0 END abgeschlossen. Das Ende eines einzelnen Pattern lässt sich daher in der Datenstruktur des TFMX-Songs am Langwort $F0000000 erkennen.

Schematischer Aufbau eines Pattern:

STEPNOTESTATUSMACRONR.NAMEVOLUMECHANNELDETUNE
000018F#200F100
0001F3WAIT0FCount 00-FF0000
0002F0END00Next track step0000

Dieses Pattern spielt die Note F#2 mittels des Macros Nummer $00 in maximaler Lautstärke ab und wartet einen Zeitraum von $0F Schritten, bis das Pattern beendet wird. Im TFMX-Song liegt dieses Pattern in Form von drei Langworten vor (je ein Langwort pro Schritt): 1800F100 F30F0000 F0000000

Notenwerte können in drei unterschiedlichen Varianten eingegeben werden:

  • Bei Notenwerten kleiner als $80 wird mit Abarbeitung der Note automatisch der nächste Schritt ausgeführt. Ein Patternbefehl wie z. B. $F3 WAIT ist hier also erforderlich, damit die Note hörbar wird und die TFMX-Musikroutine nicht gleich die nächste Note abspielt.
  • Notenwerte ab $80, die kleiner als $C0 sind, beinhalten einen solchen WAIT Befehl. Die Anzahl der Warteschritte wird dafür im letzten, ursprünglich für DETUNE vorgesehenen Byte eingegeben.
  • Notenwerte ab $C0, die kleiner als $F0 sind, beinhalten einen PORTAMENTO Befehl. Die Tonhöhe wird auf den hier eingegebenen Notenwert hingezogen, vorausgesetzt, dass zuvor eine Note anderer Tonhöhe auf dem gleichen Tonkanal abgespielt wurde. Hierbei wird in dem für die MACRONUMMER vorgesehenen Byte der Wert für den Portamentozähler (standardmäßig auf $01 eingestellt) und in dem für DETUNE vorgesehenen Byte die Portamentogeschwindigkeit eingestellt. Die Kombination beider Werte ergibt die Geschwindigkeit des Portamentoeffekts.
  • Werte ab $F0 stellen reine Patternbefehle dar.

Patternbefehle:

NOTESTATUSMACRONR.NAMEVOLUMECHANNELDETUNEParameter
F0END--Next track step----keine
F1LOOPaacount / step.wbbbbProgrammierung einer Schleife
aa = Anzahl der Schleifendurchläufe (00 entspricht unendlich)
bbbb = Schritt, zu dem geloopt wird
F2CONTaapatternno./step.wbbbbFortsetzen in einem anderen Pattern (JMP)
aa = Patternnummer, an der fortgesetzt wird
bbbb = Schritt im Zielpattern, an dem fortgesetzt wird
F3WAITaacount 00-ff----aa = Anzahl der Warteschritte
F4STOP--Stop this pattern----keine
F5KUP^--Set key up / channel-a--Sendet den Befehl KEYUP an das Macro auf dem Tonkanal a
F6VIBRaaspeed / rate.b-bccVibrato
aa = Geschwindigkeit des Vibrato
b = Tonkanal
cc = Stärke des Vibrato
F7ENVEaaspeed / endvolume.b-bccEnvelope
aa = Geschwindigkeit der Lautstärkeveränderung
b = Tonkanal
cc = Ziellautstärke
F8GSPTaapatternno./ step.wbbbbVerzweigen in ein Subpattern (JSR)
aa = Patternnummer, zu dem verzweigt wird
bbbb = Schritt im Zielpattern, an dem fortgesetzt wird
F9ROPT--Return old pattern----Return to old pattern (RTS)
FAFADEaaspeed / endvolume.b--bbFade-in/Fade-out der Gesamtlautstärke
aa = Geschwindigkeit der Lautstärkeveränderung
bb = Ziellautstärke
FBPPATaapatt./track+transp-bccPlay Pattern
Spielt das Pattern aa im Track b mit einer Transponierung von cc ab
FCFXPRaaprio / channel+len.b-bcc(Funktion ist nicht dokumentiert)
FDFLAGaaflagnr. 0-3 / value.wbbbb(Funktion ist nicht dokumentiert)
FESTOP--Stop custompattern----Endmarkierung eines Custompatterns (für eigene Programmierung der Musikroutine)
FFNOP!--no operation----Keine Funktion (dient als Füllnote für einige Funktionen des TFMX-Editors)

Die Macro-Page

Macro-Page

Bevor Samplematerial im Musikstück verwendet werden kann, muss zunächst ein Macro erstellt werden. Dazu bietet der TFMX-Editor die Möglichkeit, ein Standardmacro zu erstellen, das notwendigste Daten zur Wiedergabe des Samplematerials enthält (z. B. Beginn- und Länge des Samples). Abgesehen davon stellt der TFMX-Editor eine Vielzahl an Macrobefehlen zur Verfügung, die zur Entwicklung komplexer Macros verwendet werden können. Die Anzahl der Macros ist auf 128 begrenzt.

Das TFMX-Fileformat

Der TFMX-Editor speichert einen TFMX-Song in drei Dateien gesplittet ab. Gespeichert werden:

  1. Präfix info. – Infodatei, welche die Namen der Pattern, Macros und Samples enthält
  2. Präfix mdat. – Musikdatei, welche sämtliche Daten des Musikstückes exklusive der Sampledaten enthält
  3. Präfix smpl. – Sampledatei, welche die reinen Sampledaten enthält

Um einen TFMX-Song abzuspielen, genügen die Musik- und Sampledateien. Die Infodatei wird lediglich zur Weiterbearbeitung des TFMX-Songs im TFMX-Editor benötigt.

Bekannte TFMX-Musiker

  • Chris Hülsbeck (z. B. Apidya, Jim Power, Turrican-Trilogie)
  • Rudolf Stember (z. B. Das Schwarze Auge: Die Nordland-Trilogie, Mad TV, Mr. Nutz)
  • Peter Thierolf (z. B. Fatal Heritage, Ooops Up, The Power)
  • Dirk Magerkord (z. B. Brainball, PP Hammer)
  • Jonathan Pickard (z. B. PreFlightCheck, Rush of Discovery)
  • Jan Krolzig (z. B. Cheeky Twins)
  • Markus Schneider (z. B. Gordian Tomb, Tusker)

Weblinks

Auf dieser Seite verwendete Medien

TFMX-Trackstep.png
Autor/Urheber:

Zaurak

, Lizenz: CC-BY-SA-3.0

TFMX Trackstep Screenshot

TFMX-Pattern.png
Autor/Urheber:

Zaurak

, Lizenz: CC-BY-SA-3.0

TFMX Pattern Screenshot

TFMX.png
Autor/Urheber:

Zaurak

, Lizenz: CC-BY-SA-3.0

TFMX title screen

TFMX-Editor.png
Autor/Urheber:

Zaurak

, Lizenz: CC-BY-SA-3.0

TFMX Editor Screenshot

TFMX-Macro.png
Autor/Urheber:

Zaurak

, Lizenz: CC-BY-SA-3.0

TFMX Macro screenshot