IMAGO Orpheus Module Format (IMF) Version 1.00

			   File format specification


		     Copyright (C) 1993-1994 Lutz Roeder,
			      All rights reserved.


				Module header
				-------------

	   0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F
	 ЪДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДї
    0000 і Songname (ASCIIZ-String, max. 31 chars)                       і
	 ГДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДґ
    0010 і ... Songname ...                                              і
	 ГДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДґ
    0020 і  [O]  і  [P]  і  [I]  і  [F]  і x і x і x і x і x і x і x і x і
	 ГДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДґ
    0030 і[T]і[B]і[V]і[A]і x і x і x і x і x і x і x і x і'I'і'M'і'1'і'0'і
	 ГДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДґ

	 [O] = Number of orders saved
	 [P] = Number of patterns saved
	 [I] = Number of instruments saved
	 [F] = Module flags
	       Bit 0: 0 = Amiga frequency table
		      1 = Linear frequency table
	 [T] = Default tempo (1..255)
	 [B] = Default beats per minute (BPM) (32..255)
	 [V] = Default mastervolume (0..64)
	 [A] = Amplification factor (4..127)


			       Channel settings
			       ----------------

	 After the module header following 32 blocks. Every block contains
	 the name, pan position and status settings for one of the
	 32 channels.

	   0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F
	 ЪДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДї
    xxxx і Channelname (ASCIIZ-String, max. 11 chars)    і[C]і[R]і[P]і[S]і
	 ГДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДґ

	 [S] = Channel status:
	       0x00 = Channel enabled
	       0x01 = Mute (processed but not played)
	       0x02 = Channel disabled (not processed)

	 [P] = Pan positions:
	       0x00 = Left ... 0x80 = Middle ... 0xFF = Right
	 [C] = Default chorus
	 [R] = Default reverb

				  Order list
				  ----------

	 Next at offset 0x0240 starting the order list. The complete
	 256 byte list will be saved but only the length from the order
	 list field in the header will be used. Every byte presents a
	 single order position. The value 0xFF is used as marker ('--')
	 which will be skipped while playing.


				Pattern format
				--------------

	 After the order (at offset 0x0340) starting the pattern data ...

	   0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F
	 ЪДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДї
    xxxx і Size  і Rows  і Pattern data ...                              і
	 ГДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДґ

	 The size field contains the size of the patterns and the
	 row field the number of rows (64 by default). The pattern itself
	 is packed using a S3M like algorithm:

	 byte_ Status = Pattern[Index++];
	 if (Status == 0x00)
	   NextRow();
	 else
	 {
	   byte_ Note,Instrument;
	   byte_ FirstEffectCommand,FirstEffectData;
	   byte_ SecondEffectCommand,SecondEffectData;
	   byte_ Channel = Status & 0x1F;
	   if ((Status & 0x20) != 0)
	   {
	     Note = Pattern[Index++];
	     Instrument = Pattern[Index++];
	   }
	   if ((Status & 0x40) != 0)
	   {
	     FirstEffectCommand = Pattern[Index++];
	     FirstEffectData = Pattern[Index++];
	   }
	   if ((Status & 0x80) != 0)
	   {
	     SecondEffectCommand = Pattern[Index++];
	     SecondEffectData = Pattern[Index++];
	   }


			       Effect commands
			       ---------------

	 Most Protracker, Scream Tracker and Fasttracker commands
	 should be implemented right ...

		 0x01 1xx Set Tempo
		 0x02 2xx Set BPM
		 0x03 3xx Tone Portamento                  (*)
		 0x04 4xy Tone Portamento + Volume Slide   (*)
		 0x05 5xy Vibrato                          (*)
		 0x06 6xy Vibrato + Volume Slide           (*)
		 0x07 7xy Fine Vibrato                     (*)
		 0x08 8xy Tremolo                          (*)
		 0x09 9xy Arpeggio                         (*)
		 0x0A Axx Set Pan Position
		 0x0B Bxy Pan Slide                        (*)
		 0x0C Cxx Set Volume
		 0x0D Dxy Volume Slide                     (*)
		 0x0E Exy Fine Volume Slide                (*)
		 0x0F Fxx Set Finetune
		 0x10 Gxy Note Slide Up                    (*)
		 0x11 Hxy Note Slide Down                  (*)
		 0x12 Ixx Slide Up                         (*)
		 0x13 Jxx Slide Down                       (*)
		 0x14 Kxx Fine Slide Up                    (*)
		 0x15 Lxx Fine Slide Down                  (*)
		 0x16 Mxx Set Filter Cutoff
		 0x17 Nxy Filter Slide + Resonance
		 0x18 Oxx Set Sample Offset                (*)
		 0x19 Pxx Set Fine Sample Offset
		 0x1A Qxx Key Off
		 0x1B Rxy Retrig                           (*)
		 0x1C Sxy Tremor                           (*)
		 0x1D Txx Position Jump
		 0x1E Uxx Pattern Break
		 0x1F Vxx Set Mastervolume
		 0x20 Wxy Mastervolume Slide               (*)
		 0x21 Xxx Extended Effect
		      X1x Set Filter
		      X3x Glissando
		      X5x Vibrato Waveform
		      X8x Tremolo Waveform
		      XAx Pattern Loop
		      XBx Pattern Delay
		      XCx Note Cut
		      XDx Note Delay
		      XEx Ignore Envelope
		      XFx Invert Loop
		 0x22 Yxx Chorus
		 0x23 Zxx Reverb

	 (*) = If the effect data is zero, the last nonzero data
	       should be used.


			      Instrument header
			      -----------------

	   0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F
	 ЪДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДї
    0000 і Instrumentname (ASCIIZ-String, max. 31 chars)                 і
	 ГДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДґ
    0010 і ...Instrumentname...                                          і
	 ГДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДґ
    0020 і Multisample settings                                          і
	 ГДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДґ
    0030 і ...multisample settings...                                    і
	 ГДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДґ
    0040 і ...multisample settings...                                    і
	 ГДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДґ
    0050 і ...multisample settings...                                    і
	 ГДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДґ
    0060 і ...multisample settings...                                    і
	 ГДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДґ
    0070 і ...multisample settings...                                    і
	 ГДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДґ
    0080 і ...multisample settings...                                    і
	 ГДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДґ
    0090 і ...multisample settings...    і x і x і x і x і x і x і x і x і
	 ГДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДґ
    00A0 і Volume envelope settings                                      і
	 ГДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДґ
    00B0 і ...volume envelope...                                         і
	 ГДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДґ
    00C0 і ...volume envelope...                                         і
	 ГДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДґ
    00D0 і ...volume envelope...                                         і
	 ГДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДґ
    00E0 і Pan envelope settings                                         і
	 ГДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДґ
    00F0 і ...pan envelope...                                            і
	 ГДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДґ
    0100 і ...pan envelope...                                            і
	 ГДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДґ
    0110 і ...pan envelope...                                            і
	 ГДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДґ
    0120 і Pitch envelope settings                                       і
	 ГДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДґ
    0130 і ...pitch envelope...                                          і
	 ГДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДґ
    0140 і ...pitch envelope...                                          і
	 ГДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДґ
    0150 і ...pitch envelope...                                          і
	 ГДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДґ
    0160 і[1]і[2]і[3]і[4]і[5]і x і x і x і[1]і[2]і[3]і[4]і[5]і x і x і x і
	 ГДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДґ
    0170 і[1]і[2]і[3]і[4]і[5]і x і x і x і  [F]  і  [S]  і'I'і'I'і'1'і'0'і
	 ГДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДґ

	 [1] = Number of envelope points
	 [2] = Envelope sustain point
	 [3] = Envelope loop start point
	 [4] = Envelope loop end point
	 [5] = Envelope flags
	       Bit 0: 0 = Envelope on
		      1 = Envelope off
	       Bit 1: 0 = Sustain on
		      1 = Sustain off
	       Bit 2: 0 = Envelope loop on
		      1 = Envelope loop off

	 Vibrato / Tremolo - type, sweep, depth, rate

	 [F] = Fadeout rate (0...0FFFH)
	 [S] = Number of samples in instrument

		  Fadeout   Envelope   Global   Volume
	 Volume = ------- * -------- * ------ * ------ * Scale
		   32768       64        64       64

	 Pan ( >=0 and <=255 ) = envelope-pan + (sample/channel pan)

	 Linear frequency table:

	 Period = 7680-(Note*64)
	 Frequency = Samplerate * 2^((4608-Period-(Finetune/2)
					-((Envelope-128)/2))/768)


				Sample header
				-------------

	   0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F
	 ЪДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДї
    0000 і Sample filename (12345678.ABC)                    і x і x і x і
	 ГДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДґ
    0010 і Length        і Loop start    і Loop end      і Samplerate    і
	 ГДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДґ
    0020 і[V]і[P]і x і x і x і x і x і x і x і x і x і x і x і x і x і x і
	 ГДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДґ
    0030 і[F]і x і x і x і x і x і  EMS  і DRAM Position і'I'і'S'і'1'і'0'і
	 ГДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДґ

	 [V] = Default volume (0..64)
	 [P] = Default pan (00h = Left / 80h = Middle / FFh = Right)
	 [F] = Sample flags
	       Bit 0: 0 = Loop off
		      1 = Loop on
	       Bit 1: 0 = Normal loop
		      1 = Bidirectional loop
	       Bit 2: 0 = 8 Bit sample
		      1 = 16 Bit sample
	       Bit 3: 0 = Use channel pan position
		      1 = Use sample pan position

	 EMS and DRAM Position are reserved fields for internal usage.