Extension: .DMF Version: 8, (4 in the 2nd part) Created by: Delusion Tracker: X-Tracker Players: Cubic, ... Description by: Delusion Taken from: DDMF Description v0.25, FileFormats List v1.50 Note: Digital music format 1st part in german (sorry :) 컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴 DELUSION DIGITAL MUSIC FORMAT - rev 0.25 (10/6/94) 컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴 Beschreibung des DELUSION DIGITAL MUSIC FORMAT Fileversion 8. Die Dateikennung ist ".DMF". Alle fr갿eren DDMF Versionen sind Betaformate und sollten nicht weiter benutzt werden, Xtracker 1.0 l꼋t alle Vorg꼗ger Versionen korrekt und speichert sie als Version 8 ab. Das DDMF Format ist in folgenden Bl봠ke unterteilt: [DDMF] Format Kennzeichnung [INFO] reserviert [CMSG] Text Mitteilungen [SEQU] Sequencer, Abspielreihenfolge der Pattern [PATT] Patterndaten [INST] reserviert [SMPI] Defintionen der Samples. [SMPD] Daten der Samples. Mu� hinter dem SMPI Block gespeichert sein. [ENDE] Endmarkierung des DDMFs 旼컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴커 � DDMF Header � 팠袴袴袴袴袴錮袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴佶袴袴袴袴袴孤 � Fileoffset � Bezeichner � Datentyp � 쳐컴컴컴컴컴컵컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴탠컴컴컴컴컴캑 � 0h � ID � 4 Chars � 쳐컴컴컴컴컴컨컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴좔컴컴컴컴컴캑 � Filekennung ist "DDMF" � 쳐컴컴컴컴컴컫컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴쩡컴컴컴컴컴캑 � 4h � FILE VERSION � 1 Byte � 쳐컴컴컴컴컴컨컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴좔컴컴컴컴컴캑 � DDMF Fileversion, diese Beschreibung gilt nur f걊 Version 8. � 쳐컴컴컴컴컴컫컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴쩡컴컴컴컴컴캑 � 5h � TRACKER NAME � 8 Chars � 쳐컴컴컴컴컴컨컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴좔컴컴컴컴컴캑 � Name des benutzten Trackers. � 쳐컴컴컴컴컴컫컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴쩡컴컴컴컴컴캑 � 0dh � SONG NAME � 30 Chars � 쳐컴컴컴컴컴컨컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴좔컴컴컴컴컴캑 � Name des Musikst갷kes, nicht benutzte Zeichen sollten auf 0 stehen. � 쳐컴컴컴컴컴컫컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴쩡컴컴컴컴컴캑 � 2bh � COMPOSER NAME � 20 Chars � 쳐컴컴컴컴컴컨컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴좔컴컴컴컴컴캑 � Name des Komponisten, nicht benutzte Zeichen sollten auf 0 stehen. � 쳐컴컴컴컴컴컫컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴쩡컴컴컴컴컴캑 � 3fh � DATE � 3 Bytes � 쳐컴컴컴컴컴컨컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴좔컴컴컴컴컴캑 � Erstellungsdatum: je ein Byte Tag, Monat, Jahr+1900 � 읕컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴켸 旼컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴커 � CMSG Block: Mitteilungen � 팠袴袴袴袴袴錮袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴佶袴袴袴袴袴孤 � Blockoffs. � Bezeichner � Datentyp � 쳐컴컴컴컴컴컵컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴탠컴컴컴컴컴캑 � 0h � BLOCKID � 1 Dword � 쳐컴컴컴컴컴컨컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴좔컴컴컴컴컴캑 � Blockkennung "CMSG" � 쳐컴컴컴컴컴컫컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴쩡컴컴컴컴컴캑 � 4h � BLOCKLENGTH � 1 Dword � 쳐컴컴컴컴컴컨컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴좔컴컴컴컴컴캑 � L꼗ge in Bytes bis zum n꼊hsten Block. � 쳐컴컴컴컴컴컫컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴쩡컴컴컴컴컴캑 � 8h � FILLER � 1 Byte � 쳐컴컴컴컴컴컨컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴좔컴컴컴컴컴캑 � reserviert � 쳐컴컴컴컴컴컫컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴쩡컴컴컴컴컴캑 � 9h � MESSAGE � Chars � 쳐컴컴컴컴컴컨컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴좔컴컴컴컴컴캑 � ASCII-Text mit einer festen Zeilenl꼗ge von 40 Zeichen. � � L꼗ge von MESSAGE = (BLOCKLENGTH - 1) Bytes. � 읕컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴켸 旼컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴커 � SEQU Block: Sequencer, Abspielreihenfolge der Pattern � 팠袴袴袴袴袴錮袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴佶袴袴袴袴袴孤 � Blockoffs. � Bezeichner � Datentyp � 쳐컴컴컴컴컴컵컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴탠컴컴컴컴컴캑 � 0h � BLOCKID � 1 Dword � 쳐컴컴컴컴컴컨컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴좔컴컴컴컴컴캑 � Blockkennung "SEQU" � 쳐컴컴컴컴컴컫컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴쩡컴컴컴컴컴캑 � 4h � BLOCKLENGTH � 1 Dword � 쳐컴컴컴컴컴컨컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴좔컴컴컴컴컴캑 � L꼗ge in Bytes bis zum n꼊hsten Block. � 쳐컴컴컴컴컴컫컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴쩡컴컴컴컴컴캑 � 8h � SEQUENCER LOOP START � 1 Word � 쳐컴컴컴컴컴컨컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴좔컴컴컴컴컴캑 � Sequencer Schleifenanfang � 쳐컴컴컴컴컴컫컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴쩡컴컴컴컴컴캑 � 0ah � SEQUENCER LOOP END � 1 Word � 쳐컴컴컴컴컴컨컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴좔컴컴컴컴컴캑 � Sequencer Schleifenende � 쳐컴컴컴컴컴컫컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴쩡컴컴컴컴컴캑 � 0ch � SEQUENCER � Words � 쳐컴컴컴컴컴컨컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴좔컴컴컴컴컴캑 � Liste der Patternnummern die nacheinander abgespielt werden. � � L꼗ge von SEQUENCER = (BLOCKLENGTH - 4) Bytes � 읕컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴켸 旼컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴커 � PATT Block: Patterndaten � 팠袴袴袴袴袴錮袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴佶袴袴袴袴袴孤 � Blockoffs. � Bezeichner � Datentyp � 쳐컴컴컴컴컴컵컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴탠컴컴컴컴컴캑 � 0h � BLOCKID � 1 Dword � 쳐컴컴컴컴컴컨컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴좔컴컴컴컴컴캑 � Blockkennung "PATT" � 쳐컴컴컴컴컴컫컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴쩡컴컴컴컴컴캑 � 4h � BLOCKLENGTH � 1 Dword � 쳐컴컴컴컴컴컨컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴좔컴컴컴컴컴캑 � L꼗ge in Bytes bis zum n꼊hsten Block. � 쳐컴컴컴컴컴컫컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴쩡컴컴컴컴컴캑 � 8h � PATTERN ENTRIES (1-1024) � 1 Word � 쳐컴컴컴컴컴컨컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴좔컴컴컴컴컴캑 � Anzahl der gespeicherten Pattern. � 쳐컴컴컴컴컴컫컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴쩡컴컴컴컴컴캑 � 0ah � MAX TRACKS (1-32) � 1 Byte � 쳐컴컴컴컴컴컨컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴좔컴컴컴컴컴캑 � Anzahl der der maximal benutzten Tracks. � 쳐컴컴컴컴컴컫컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴쩡컴컴컴컴컴캑 � 0bh � PATTERNS � Words � 쳐컴컴컴컴컴컨컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴좔컴컴컴컴컴캑 � Folgende Struktur PATTERN ENTRIES mal wiederholt � 넬컴컴컴컴컴컴쩡컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴쩡컴컴컴컴컴캑 납 Patternoff.� Bezeichner � Datentyp � 냉컴컴컴컴컴컴탠컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴탠컴컴컴컴컴캑 납 0h � TRACK ENTRIES (1-1024) � 1 Byte � 냉컴컴컴컴컴컴좔컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴좔컴컴컴컴컴캑 납 Anzahl der gespeicherten Tracks in diesem Pattern. � 냉컴컴컴컴컴컴쩡컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴쩡컴컴컴컴컴캑 납 1h � BEAT � 1 Byte � 냉컴컴컴컴컴컴좔컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴좔컴컴컴컴컴캑 납 BEAT = xxxxyyyy � 납 납납읒좋� reserviert � 납 읒좋컴컴� Notenzeilen pro Beatschlag � 냉컴컴컴컴컴컴쩡컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴쩡컴컴컴컴컴캑 납 2h � TICK ENTRIES � 1 Word � 냉컴컴컴컴컴컴좔컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴좔컴컴컴컴컴캑 납 Anzahl der gespeicherten Notenzeilen in diesem Pattern � 냉컴컴컴컴컴컴쩡컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴쩡컴컴컴컴컴캑 납 4h � PATTERNLENGTH � 1 Dword � 냉컴컴컴컴컴컴좔컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴좔컴컴컴컴컴캑 납 L꼗ge der Patterndata, Bytes bis zum n꼊hsten Pattern. � 냉컴컴컴컴컴컴쩡컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴쩡컴컴컴컴컴캑 납 6h � PATTERDATA � Bytes � 냉컴컴컴컴컴컴좔컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴좔컴컴컴컴컴캑 납 Der Patterndatenstrom ist folgendermassen codiert: � 납 � 납 Folgende Struktur TICK ENTRIES mal wiederholt � 납旼컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴캑 납� ( * TRACK ENTRIES) � 납쳐컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴캑 납� GLOBAL TRACK � 납� � 납� INFO 1 Byte � 납� (COUNTER) 1 Byte � 납� (DATA) 1 Byte � 납� � 납� INFO = xxxxxxxx � 납� 납납납납 � 납� 납읒좋좋� Global Track Ereigniss � 납� 냅컴컴컴� reserviert � 납� 읕컴컴컴� Pack � 납� � 납� Falls Pack=1 ist das n꼊hst gelesene Byte COUNTER. � 납� COUNTER ist ein Z꼑ler der jede Notenzeile herunter gez꼑lt wird, � 납� es sind keine GLOBAL Track Informationen gespeichert bis COUNTER � 납� wieder auf 0 steht. COUNTER wird bei einem Patternwechsel auf 0 � 납� gesetzt. Ist Pack=0 so ist kein COUNTER gespeichert und f걊 � 납� COUNTER gilt der Wert 0, d.h. im n꼊hsten Tick ist wieder ein � 납� GLOBAL TRACK gespeichert. � 납� � 납� Falls Global Track Ereigniss > 0 ist folgt ein weiters Byte DATA, � 납� das die Effektdaten f걊 den zugeh봱ige Ereigniss liefert. Ist das � 납� Global Track Ereigniss = 0 ist DATA nicht gespeichert. � 납� � 납� Definition der Global Track Ereignisse siehe DMF_EFF.TXT � 납� � 납쳐컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴캑 납� TRACK � 납� 컴컴컴 � 납� � 납� INFO 1 Byte � 납� (COUNTER) 1 Byte � 납� (INSTRUMENT) 1 Byte � 납� (NOTE) 1 Byte � 납� (VOLUME) 1 Byte � 납� (INSTRUMENT EFFECT) 2 Bytes � 납� (NOTE EFFECT) 2 Bytes � 납� (VOLUME EFFECT) 2 Bytes � 납� � 납� � 납� INFO � 납� 컴컴� � 납� � 납� INFO = xxxxxxxx � 납� 납납납납 � 납� 납납납퀈 reserviert � 납� 납납납1=VOLUME EFFECT gespeichert / 0=nicht gespeichert � 납� 납납�1=NOTE EFFECT gespeichert / 0 ... � 납� 납납1=INSTRUMENT EFFECT gespeichert / 0 ... � 납� 납�1=VOLUME gespeichert / 0 ... � 납� 납1=NOTE gespeichert / 0 ... � 납� �1=INSTRUMENT gespeichert / 0 ... � 납� 1=COUNTER gespeichert / 0 ... � 납� � 납� Folgende Werte sind also nur gespeichert wenn die entsprechenden � 납� Bits in INFO gesetzt sind, wenn nicht bedeuted das keine 럑derung � 납� des entsprechenden Parameters. � 납� � 납� � 납� COUNTER � 납� 컴컴컴컴 � 납� � 납� COUNTER ist ein Z꼑ler der jeden Tick herunter gez꼑lt wird, es � 납� sind keine Informationen f걊 diesen Track gespeichert bis COUNTER � 납� wieder auf 0 steht. COUNTER wird bei einem Patternwechsel auf 0 � 납� gesetzt. Ist COUNTER nicht gespeichert so gilt f걊 COUNTER der � 납� Wert 0, d.h. f걊 die n꼊hsten Notenzeilen sind wieder Daten f걊 � 납� diesen Track gespeichert. � 납� � 납� � 납� INSTRUMENT � 납� 컴컴컴컴컴� � 납� � 납� Die Samplenummer des Samples das Angeschlagen wird. � 납� � 납� � 납� NOTE � 납� 컴컴� � 납� � 납� 0 = Keine 럑derung � 납� 1-108 = Note in Halbtonschritten, C0=1 bis H8=108. � 납� Dies entspricht einer Midi Note mit 1 addiert. � 납� 109-128 = Nicht definiert � 납� 129-236 = Die Note wird in den Notenpuffer gespeichert und nicht � 납� gespielt, eine spielende Note wird nicht ver꼗dert. � 납� Das MSBit wird gel봲cht die Noten entsprechen dann den � 납� Noten 1-108. � 납� Der Notenpuffer wird als 2 Parameter f걊 Noten-Effekte � 납� verwendet z.B. f걊 Note Portamentos, wo die Effekt- � 납� daten schon f걊 den Steigungsgrad vergeben sind. � 납� � 납� 237-254 = Nicht definiert � 납� 255 = Note Off, setzt die Notenfrequenz auf 0 hz � 납� � 납� � 납� VOLUME � 납� 컴컴컴� � 납� � 납� 0 = Nicht definiert � 납� 1-255 = Neue Lautst꼛ke des Tracks, lineare Skalierung � 납� � 납� � 납� INSTRUMENT EFFECT � 납� 컴컴컴컴컴컴컴컴컴 � 납� � 납� 1.Byte: Instrument Effekt Nr. � 납� 2.Byte: Instrument Effekt Daten � 납� � 납� � 납� NOTE EFFECT � 납� 컴컴컴컴컴컴 � 납� � 납� 1.Byte: Noten Effekt Nr. � 납� 2.Byte: Noten Effekt Daten � 납� � 납� � 납� VOLUME EFFECT � 납� 컴컴컴컴컴컴컴 � 납� � 납� 1.Byte: Volume Effekt Nr. � 납� 2.Byte: Volume Effekt Daten � 납� � 납� � 납� Definition der Volume,Noten,Instrument Effekte in DMF_EFF.TXT � 납� � 납읕컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴캑 냅컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴캑 읕컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴켸 旼컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴커 � SMPI Block: Sample Defintionen � 팠袴袴袴袴袴錮袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴佶袴袴袴袴袴孤 � Blockoffs. � Bezeichner � Datentyp � 쳐컴컴컴컴컴컵컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴탠컴컴컴컴컴캑 � 0h � BLOCKID � 1 Dword � 쳐컴컴컴컴컴컨컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴좔컴컴컴컴컴캑 � Blockkennung "SMPI" � 쳐컴컴컴컴컴컫컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴쩡컴컴컴컴컴캑 � 4h � BLOCKLENGTH � 1 Dword � 쳐컴컴컴컴컴컨컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴좔컴컴컴컴컴캑 � L꼗ge in Bytes bis zum n꼊hsten Block. � 쳐컴컴컴컴컴컫컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴쩡컴컴컴컴컴캑 � 8h � SAMPLE ENTRIES (1-255) � 1 Word � 쳐컴컴컴컴컴컨컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴좔컴컴컴컴컴캑 � Anzahl der gespeicherten Samples, maximal 255. � 쳐컴컴컴컴컴컫컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴쩡컴컴컴컴컴캑 � 6h � SAMPLES � Bytes � 쳐컴컴컴컴컴컨컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴좔컴컴컴컴컴캑 � Folgende Struktur SAMPLE ENTRIES mal wiederholt � 넬컴컴컴컴컴컴쩡컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴쩡컴컴컴컴컴캑 납 Sampleoff. � Bezeichner � Datentyp � 냉컴컴컴컴컴컴탠컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴탠컴컴컴컴컴캑 납 0h � Y = NAME LENGTH (0-30) � 1 Byte � 냉컴컴컴컴컴컴좔컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴좔컴컴컴컴컴캑 납 L꼗ge des Samplenamens, die L꼗ge des ist auf maximal 30 Zeichen � 납 beschr꼗kt. � 냉컴컴컴컴컴컴쩡컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴쩡컴컴컴컴컴캑 납 1h � SAMPLE NAME � X Chars � 냉컴컴컴컴컴컴좔컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴좔컴컴컴컴컴캑 납 Name des Samples in ASCII Zeichen. L꼗ge des Namens ist NAME LENGTH � 납 Zeichen. � 냉컴컴컴컴컴컴쩡컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴쩡컴컴컴컴컴캑 납 Y + 1h � SAMPLE LENGTH � 1 Dword � 냉컴컴컴컴컴컴좔컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴좔컴컴컴컴컴캑 납 L꼗ge des Samples in Bytes. � 냉컴컴컴컴컴컴쩡컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴쩡컴컴컴컴컴캑 납 Y + 5h � SAMPLE LOOP START � 1 Dword � 냉컴컴컴컴컴컴좔컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴좔컴컴컴컴컴캑 납 Sample Schleifen Start Position. � 냉컴컴컴컴컴컴쩡컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴쩡컴컴컴컴컴캑 납 Y + 9h � SAMPLE LOOP END � 1 Dword � 냉컴컴컴컴컴컴좔컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴좔컴컴컴컴컴캑 납 Sample Schleifen End Position. � 냉컴컴컴컴컴컴쩡컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴쩡컴컴컴컴컴캑 납 Y + 0dh � C3 FREQUENCY � 1 Word � 냉컴컴컴컴컴컴좔컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴좔컴컴컴컴컴캑 납 Frequenz, in Hz, mit der das Sample bei der Note C-3 gespielt wird. � 납 Das Sample kann dadurch beliebig gestimmt werden. G걄tiger Bereich � 납 f걊 C3 FREQUENCY ist 1000-45000 Hz. � 냉컴컴컴컴컴컴쩡컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴쩡컴컴컴컴컴캑 납 Y + 0fh � VOLUME � 1 Byte � 냉컴컴컴컴컴컴좔컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴좔컴컴컴컴컴캑 납 Samplelautst꼛ke. � 납 � 납 VOLUME = 0 kein Auswirkung � 납 1-255 Lautst꼛ke, linearer Skalierung � 냉컴컴컴컴컴컴쩡컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴쩡컴컴컴컴컴캑 납 Y + 10h � TYPE � 1 Byte � 냉컴컴컴컴컴컴좔컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴좔컴컴컴컴컴캑 납 � 납 TYPE = xxxxxxx0 = kein Schleife � 납 xxxxxxx1 = Sample wird mit einer Schleife gespielt, das � 납 Sample spielt vom Start bis SAMPLE LOOP END und � 납 wiederholt danach den Bereich von SAMPLE LOOP � 납 START bis SAMPLE LOOP END. � 납 xxxxxx0x = 8BIT Sample � 납 xxxxxx1x = 16BIT Sample � 납 xxxxXXxx = Kompremierungsverfahren � 납 xxxx00xx = Unkompremiert vorzeichenbehaftet � 납 xxxx01xx = Kompremierungs Typ0 � 납 xxxx10xx = (Kompremierungs Typ1) � 납 xxxx11xx = (Kompremierungs Typ2) � 납 xXXXxxxx = nicht Definiert � 납 0xxxxxxx = --> Die Sampledaten sind im SMPD Block des DMFs � 납 gespeichert. � 납 1xxxxxxx = --> Die Sampledaten sind in einer Biblothek � 납 gespeichert. � 납 � 냉컴컴컴컴컴컴쩡컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴쩡컴컴컴컴컴캑 납 Y + 11h � LIBRARY NAME � 8 Byte � 냉컴컴컴컴컴컴좔컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴좔컴컴컴컴컴캑 납 Biblotheks Kennzeichnung unter der das Sample zu finden ist. � 냉컴컴컴컴컴컴쩡컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴쩡컴컴컴컴컴캑 납 Y + 19h � FILLER � 1 Word � 냉컴컴컴컴컴컴좔컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴좔컴컴컴컴컴캑 납 reserviert � 냉컴컴컴컴컴컴쩡컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴쩡컴컴컴컴컴캑 납 Y + 1bh � ID CRC32 � 1 DWord � 냉컴컴컴컴컴컴좔컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴좔컴컴컴컴컴캑 납 Pr갽summe der Sampledaten. � 냅컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴캑 읕컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴켸 旼컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴커 � SMPD Block: Sample Daten � 팠袴袴袴袴袴錮袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴佶袴袴袴袴袴孤 � Blockoffs. � Bezeichner � Datentyp � 쳐컴컴컴컴컴컵컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴탠컴컴컴컴컴캑 � 0h � BLOCKID � 1 Dword � 쳐컴컴컴컴컴컨컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴좔컴컴컴컴컴캑 � Blockkennung "SMPD" � 쳐컴컴컴컴컴컫컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴쩡컴컴컴컴컴캑 � 4h � BLOCKLENGTH � 1 Dword � 쳐컴컴컴컴컴컨컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴좔컴컴컴컴컴캑 � L꼗ge in Bytes bis zum n꼊hsten Block. � 쳐컴컴컴컴컴컫컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴쩡컴컴컴컴컴캑 � 8h � SAMPLE DATA � Bytes � 쳐컴컴컴컴컴컨컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴좔컴컴컴컴컴캑 � Folgende Struktur SAMPLE ENTRIES (SMPI) wiederholt � 넬컴컴컴컴컴컴쩡컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴쩡컴컴컴컴컴캑 납 Sampleoff. � Bezeichner � Datentyp � 냉컴컴컴컴컴컴탠컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴탠컴컴컴컴컴캑 납 0h � SAMPLE DATA LENGTH � 1 Dword � 냉컴컴컴컴컴컴좔컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴좔컴컴컴컴컴캑 납 L꼗ge des Sampledatenstroms. Bei kompremierten Samples die L꼗ge � 납 des Samplepackstroms. Bei einem Sample das in einer Biblothek � 납 gespeichert ist steht SAMPLE DATA LENGTH auf 0. � 냉컴컴컴컴컴컴쩡컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴쩡컴컴컴컴컴캑 납 4h � SAMPLE DATA STREAM � X Bytes � 냉컴컴컴컴컴컴좔컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴좔컴컴컴컴컴캑 납 Sampledatenstrom. � 냅컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴캑 읕컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴켸 旼컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴커 � ENDE Block: End-Markierung des DDMFs � 팠袴袴袴袴袴錮袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴袴佶袴袴袴袴袴孤 � Blockoffs. � Bezeichner � Datentyp � 쳐컴컴컴컴컴컵컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴탠컴컴컴컴컴캑 � 0h � "ENDE" � 1 Dword � 읕컴컴컴컴컴컨컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴좔컴컴컴컴컴켸 ------------------------------------------------------------------------------- The Digital Music Files are high quality MOD style files with up to 32 channels/1024 beats per track. The X-Tracker by the demo group D-Lusion produces this format. In general, the format is well organised due to the ID/Blocklength structure wich makes downward compatibility to older version files easy, but the Version 4 (current version) of the file format, produced by X-Tracker 0.30� still requires some manual scanning for the next ID which I regard as not so nice. Version 5 of the format has the [SEQU] block length fixed, but the [SMPD] block has the length 0. The file consists of several blocks, each with a 4 char (dwordint) ID tag and a length of the record data. The main file header looks as follows : OFFSET Count TYPE Description 0000h 4 char ID='DDMF' 0004h 1 byte Version id. 4 -> XTracker 0.30� 0005h 8 char Tracker name, e.g. 'XTRACKER', 'HACKTRAK' :-) 000Dh 30 char Song name (ASCIIZ?) 002Bh 20 char Name of composer (ASCIIZ?) 0049h 1 byte Day of creation 004Ah 1 byte Month of creation 004Bh 1 byte Year of creation The other headers have the standard skip record format, in this section named DMFblock. The offsets start _after_ this header record : OFFSET Count TYPE Description 0000h 4 char Record tag (see below) 0004h 1 dword Size of data bedwording to this tag DMFblock [INFO] Contains some message in ASCII. Length of the message is the size of the record. DMFblock [CMSG] Contains the message the composer wants to bring to us. After the ID record, another fill byte preceeds the real message ! OFFSET Count TYPE Description 0000h 1 byte Junk byte 0001h ? char Composer message DMFblock [SEQU] Contains the information necessary for sequencing the different tracks. OFFSET Count TYPE Description 0000h 1 word Song loop start 0002h 1 word Song loop end 0004h ? word Sequencer data DMFblock [PATT] This block contains the information about the different patterns and tracks. 0000h 1 word Maximum pattern (=Songlength) ="MPT" 0004h 1 byte Number of channels of this song (<= 16) 0005h "MPT" rec Pattern data. 1 byte Track entries. (<=32) ="TET" How many tracks this pattern has. XTracker allows a different number of tracks for each pattern. 1 byte Beat information High nibble : Ticks per beat Low nibble : Beats per measure 1 word Maximum number of ticks (<=512) 1 dword Number of bytes to skip for the next pattern information. ? rec Track data stream 1 byte Global track effect 1 byte Global track data (only if global effect >0 !!!) "TET" rec 1 byte Information byte, bitmapped For each bit set in the info byte, one or two data byte(s) follow. This info byte must not always be there, see below. For effects, 2 bytes follow. 0 - reserved 1 - Volume effect 2 - Note effect 3 - Instrument effect 4 - Volume set 5 - Note set 6 - Instrument set 7 - Counter to next information byte. Not set means, that next info byte follows in 1 tick, unit is in ticks. The maximum number of effects is 3 at a time, the maxximum size of a track information is 11 bytes (with info=0FEh). ? rec Effect bytes 1 byte Effect number 1 byte Effect data ? byte Set data ** Here follows the pattern data, but it's too late today ** DMFblock [INST] This block contains the information about the instrument data. If this block does not exists, then the instrument numbers in the patterns point directly to the samples in the [SMPI] block. OFFSET Count TYPE Description 0000h 1 byte Number of instruments 0001h ? rec Instrument information block 30 char The name of the instrument 1 byte Instrument type, bitmapped 0 - Instrument type 1 - Instrument type 00 - Sample in [SMPI] block 01 - MIDI device 10 - FM instrument 11 - reserved 2 - valid attack envelope 3 - sustain on 4 - reserved 5 - reserved 6 - reserved 7 - reserved 1 byte Range entries ="REN" Like the GF1 patterns, an instrument can consist of several samples. "REN" rec Range definition 1 byte Sample to be played in this range 1 byte Length of this range in half tone steps up 6 byte Not yet defined 6-point envelope DMFblock [SMPI] This block contains the information about the samples stored in the file. OFFSET Count TYPE Description 0000h 1 byte Number of samples (<= 250) ="NUM" "NUM" rec Sample record 1 byte Length of sample name ? char Name of the sample 1 dword Length of sample in bytes 1 dword Start of sample loop 1 dword End of sample loop 1 word Frequency used for C-3 1 byte Volume for sample 0 - Don't change current volume otherwise volume (linear scale) 1 byte Sample type, bitmapped 0 - not looped/looped 1 - 8/16-bit sample (16-bit not supported with X-Tracker v0.30) 2,3 - Pack type : 00 - unpacked, signed sample 01 - pack type 0 10 - pack type 1 11 - pack type 2 4-6 - reserved, set to zero 7 - Sample stored in dmf/bib 1 word reserved, set to zero 1 dword crc32 of sample to identify samples in BIB. DMFblock [SMPD] This block contains the sample data (raw or packed, see [SMPI] block) in the following format : etc. OFFSET Count TYPE Description 0000h 1 dword Length of the following sample ? byte Sample data (might be packed) DMFBlock [ENDE] This block serves as a end of file marker and can be used for validation. Note that the four ID characters are _not_ followed by a length dword ! Each DMF file simply ends with the four characters 'ENDE'.