home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 26 / CD_ASCQ_26_1295.iso / vrac / pp3_1.zip / AMM.DOC next >
Text File  |  1995-08-02  |  22KB  |  517 lines

  1. []---------------------------------------------------------------------[]
  2. | AMM (Audio Manager Module) Format by TechnoMaestro/RDG.  1995.        |
  3. | Technical documentation. Revision 1.1                                 |
  4. []---------------------------------------------------------------------[]
  5.  
  6. Below are the file formats supported by AudioManager 3.x and Platinum Play III.
  7. This DOC is meant for programmers only.
  8. Enjoy!
  9.  
  10. PROS:
  11.     ■ It's supports what S3M, MOD, 669, MTM ... can do. Except some
  12.       formats, like XM! (Argh!)
  13.     ■ It's usually smaller, and compresses quite well.
  14.     ■ Quite expandable? (Not expandable for XM compatibility)
  15.  
  16. CONS:
  17.     ■ It's proprietary, and thus, there's little support.
  18.     ■ Not easy to implement
  19.     ■ I myself will be dumping it for a newer no-limit and XM-compatible
  20.       format!
  21.  
  22. TERMS USED:
  23.     Track           =       Channel
  24.  
  25.  
  26. ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
  27.  
  28.     F I L E     F O R M A T S
  29.  
  30. ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
  31.  
  32. ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
  33. AUDIO MANAGER MODULE (AMM)▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
  34. Bytes │ Stuff ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
  35. ──────┼───────────────────────────────────────────────────────────────────
  36. 3     │ Signature 'AMM' (Audio Manager Module)
  37. ──────┼───────────────────────────────────────────────────────────────────
  38. 1     │ Character 1Ah. (End Of File marker).
  39. ──────┼───────────────────────────────────────────────────────────────────
  40. 2     │ Version of AM tracker used. LO=Minor HI=Major. 0205h = 2.05.
  41.       │ Since there ain't any AM tracker yet (maybe will never be one),
  42.       │ set this version to 0.
  43. ──────┼───────────────────────────────────────────────────────────────────
  44. 2     │ Info
  45.       │         Bit 0   1=Set MOD note range limit. (Octave 1-6) (MOD)
  46.       │                 (S3M uses limit 2-5! But what the hell!)
  47.       │             1   Reserved
  48.       │             2   1=S3M effect bugs emulation
  49.       │             3   1=Force mono playback
  50.       │             4   1=Stereo music
  51.       │          4-13   Reserved. Set to 0.
  52.       │            14  0=Standard packed patterns 1=Extra packed
  53.       │                (Bit 15 must be set for this bit to take effect)
  54.       │            15  0=Unpacked patterns (standard) 1=Packed
  55. ──────┼───────────────────────────────────────────────────────────────────
  56. 40    │ Song name.
  57. ──────┼───────────────────────────────────────────────────────────────────
  58. 2     │ Number of Tracks (Suggested max = 32) (Also PP3 max)
  59. ──────┼───────────────────────────────────────────────────────────────────
  60. 2     │ Number of patterns (Suggested max = 128. True max = 255)
  61. ──────┼───────────────────────────────────────────────────────────────────
  62. 2     │ Number of samples (Suggested max = 128. True max = 255)
  63. ──────┼───────────────────────────────────────────────────────────────────
  64. 2     │ Song length (number of orders) (Suggested max = 255)
  65. ──────┼───────────────────────────────────────────────────────────────────
  66. 2     │ Master volume (Affects the note volume.) (S3M's Global vol)
  67.       │ The resultant volume = (NoteVolume*MasterVolume)/64
  68. ──────┼───────────────────────────────────────────────────────────────────
  69. 2     │ Amplification/Mixing mode. Controls amount of multiplication on
  70.       │ resultant mixed sound wave. (S3M's Master volume)
  71.       │ 0-32767 = Amplification. Observe the below chunk of code for signed
  72.       │           samples multiplication. Note: This multiplication is not
  73.       │           done on individual samples, but on the final resultant
  74.       │           waveform to ensure quality and speed!
  75.       │
  76.       │         MOV  AX,TheSignedSoundWaveWord
  77.       │         IMUL AmplificationValue
  78.       │         SAR  AX,8
  79.       │         (CLIP WAVEFORM HERE)
  80.       │
  81.       │           This is not the actual code in AudioManager/PP3. It's
  82.       │           actually some sort more complicated.
  83.       │           I realize that there are better methods other than
  84.       │           this...but I dare not touch my code again!! Hahaha.
  85.       │           For 16-bit waveform output, the amplification is multiplied
  86.       │           by 256. (That means you can throw off the SAR AX,8 there).
  87.       │
  88.       │ 32768   = Quality SHIFT mode. Real quality shift value = Value-32768.
  89.       │ -32775    0 being the loudest. This is a method faster than using
  90.       │           master volume, but slower than the standard mixing mode.
  91.       │           The final waveform is SHIFTED x-32768 number of bits to
  92.       │           the right. (Div by exponents of 2).
  93.       │
  94.       │ 65535   = Standard mixing mode. Lowest quality, but ensures all sound
  95.       │           are played correctly without clippings.
  96. ──────┼───────────────────────────────────────────────────────────────────
  97. 1     │ Startup speed (as in effect 1)
  98. ──────┼───────────────────────────────────────────────────────────────────
  99. 1     │ Startup tempo (as in effect 2)
  100. ──────┼───────────────────────────────────────────────────────────────────
  101. 1     │ Song source
  102.       │ 0=Unknown
  103.       │ 1=AM Tracker
  104.       │ 2=MOD/NST
  105.       │ 3=S3M
  106.       │ 4=MTM
  107.       │ 5=669
  108. ──────┼───────────────────────────────────────────────────────────────────
  109.       │
  110. ──────┼───────────────────────────────────────────────────────────────────
  111. 4     │ Number of bytes in extra data section (located after samples).
  112.       │
  113. ──────┼───────────────────────────────────────────────────────────────────
  114. 13    │ Reserved
  115. ──────┼───────────────────────────────────────────────────────────────────
  116.           UP TO HERE, HEADER IS 80 BYTES LONG
  117.           AFTER THIS, ALMOST ALL DATA ARE VARIABLE SIZED
  118. ──────┼───────────────────────────────────────────────────────────────────
  119. x     │ Track pan flags. Each Track has one byte flag here.
  120.       │ These Track flags contains the position of of Track at
  121.       │ startup.
  122.       │  0 (Left most)           64 (Middle)            128 (Right)
  123.       │  255=Disabled Track      254=Surround (not supported yet)
  124.       │  129-137=Adlib channel 1-9. (NOT SUPPORTED YET & WILL CAUSE PROBLEMS)
  125. ──────┼───────────────────────────────────────────────────────────────────
  126. x     │ Pattern sequence. Each element is 2 bytes long.
  127.       │ 65534=Skipped order (padding...S3M)
  128.       │ 65535=End of song marker.
  129. ──────┼───────────────────────────────────────────────────────────────────
  130. x     │ Patterns in this format...
  131.       │ All notes throughout the song are divided into Tracks.
  132.       │ Therefore, patterns for Track 1 comes first, followed by Track 2,
  133.       │ etc... There are 64 rows per pattern. Therefore, for one pattern
  134.       │ of a one Track song, 5*64 = 320 bytes are required.
  135.       │
  136.       │ aaaabbbb cccccccc dddddddd 00yyyyyy zzzzzzzz
  137.       │ BYTE 1  (255=No note, 254=Key off (stop sample))
  138.       │         aaaa = Octave (0-7...maybe next time up to 15? :)
  139.       │         bbbb = Note (0=C, 1=C#, etc... B=B)
  140.       │ BYTE 2  (0=No sample/instrument)
  141.       │         cccccccc = Instrument number (1=1st instrument, etc...)
  142.       │ BYTE 3  dddddddd = Volume (0-64)
  143.       │ BYTE 4  xx = Unused. Keep to 0.
  144.       │         yyyyyy = Effect number
  145.       │ BYTE 5  zzzzzzzz = Effect data
  146.       │
  147.       │ Value 255 is used throughout the patterns as no-data.
  148.       │ Note 255   = No note (use previous)
  149.       │ Volume 255 = No volume
  150.       │ Sample 255 = No sample (use previous)
  151.       │ Efx 255    = No efx
  152.       │
  153.       │ However, this method wastes alot of space, and thus, I've abandoned
  154.       │ it (I still, however, use it in memory) for a new packed format.
  155.       │ As before, each tracks are separated into separate blocks...
  156.       │ For one Track, the format is as follows...
  157.       │
  158.       │ 4       Length of whole block, excluding these 4 bytes.
  159.       │ x       Event
  160.       │ x       Event
  161.       │ x       ..
  162.       │ .       ..
  163.       │
  164.       │ Each event is as follows...
  165.       │ aa [bb] [cc] [dd] [ee & ff]
  166.       │ BYTE 1  - Information byte
  167.       │           BIT 0 1=Note & instrument present (Val 255=Use previous)
  168.       │               1 1=Volume present
  169.       │               2 1=Change in effect number
  170.       │               3 1=Change in effect data
  171.       │               7 1=Data present  0=Empty rows RLE encoded .
  172.       │                   If bit set, then Bit 0-6 = Number of empty rows-1.
  173.       │                   We do not have a signal for end of pattern because
  174.       │                   it isn't necessary, as each pattern must be 64-rows
  175.       │                   and if we reach more than 64 rows, it's time to
  176.       │                   increment the pattern count.
  177.       │                   This bit can save up to 128 empty rows with just
  178.       │                   one byte! :-) Now that's COOL! :-)
  179.       │
  180.       │                   In Extended Compression mode (Bit 14 of info word)
  181.       │                   is set, this bit 7 may remain to be 0, but the next
  182.       │                   3 bits after the events (bit 4-6) = number of empty
  183.       │                   rows follows this event, 0-7.
  184.       │ aa = Info byte
  185.       │ bb = Optional note number
  186.       │ cc = Optional instrument number
  187.       │ dd = Optional volume number
  188.       │ ee = Optional effect number
  189.       │ ff = Optional effect data
  190.       │
  191.       │ All of them can be present at one time, and after this info byte,
  192.       │ it is followed by...
  193.       │ 1-BYTE Note & Instrument number (if present)
  194.       │ 1-BYTE Volume number (if present)
  195.       │ 1-BYTE New effect number (if present)
  196.       │ 1-BYTE New effect data (if present)
  197.       │
  198.       │ I used change in effect number as opposed to present effect because
  199.       │ I notice many songs, particularly S3Ms by Purple Motion/Skaven
  200.       │ uses a same effect for more than 1 row. (Esp. Vibrato,etc...)
  201.       │ Thus, I took advantage of this to create smaller files.
  202.       │ For each track, by startup, the previous effect and effect data are
  203.       │ assumed to be 255 (no efx).
  204.       │
  205.       │ The RLE, however, *DOES NOT FALL INTO THIS CONTEXT*. It is purely
  206.       │ meant for really empty tracks, with all it's values 255 in memory.
  207. ──────┼───────────────────────────────────────────────────────────────────
  208. x     │ Sample structure x NumberSamples (info for each sample)
  209.       │ Each info is 80 bytes long and is identical to the AMS format.
  210. ──────┼───────────────────────────────────────────────────────────────────
  211. x     │ Sample data
  212. ──────┼───────────────────────────────────────────────────────────────────
  213. x     │ Special data (Author name, etc...)
  214. ──────┼───────────────────────────────────────────────────────────────────
  215. x     │ Any other data that would not be loaded. :)
  216. ──────┼───────────────────────────────────────────────────────────────────
  217.  
  218.  
  219. ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
  220. AUDIO MANAGER SAMPLE (AMS)▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
  221. Bytes │ Stuff ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
  222. ──────┼───────────────────────────────────────────────────────────────────
  223. 3     │ Signature 'AMS' (Audio Manager Digital Sample)
  224. ──────┼───────────────────────────────────────────────────────────────────
  225. 1     │ Character 1Ah. (End Of File marker).
  226. ──────┼───────────────────────────────────────────────────────────────────
  227. 4     │ Reserved for internal use. Used to store memory handle.
  228. ──────┼───────────────────────────────────────────────────────────────────
  229. 4     │ Position within the memory block
  230. ──────┼───────────────────────────────────────────────────────────────────
  231. 4     │ Reserved. TO BE USED IN SAMPLE LIBRARY AS POINTERS TO POS IN FILE.
  232. ──────┼───────────────────────────────────────────────────────────────────
  233. 4     │ Length (NOTE! AMM can use samples much larger than 64k)
  234. ──────┼───────────────────────────────────────────────────────────────────
  235. 4     │ Loop begin offset
  236. ──────┼───────────────────────────────────────────────────────────────────
  237. 4     │ Loop past offset (the offset right after the last byte in sample)
  238. ──────┼───────────────────────────────────────────────────────────────────
  239. 4     │ C2 Sample rate (8363 is the standard value) (Not C2 actually)
  240. ──────┼───────────────────────────────────────────────────────────────────
  241. 2     │ Default playback rate (for SFX in games) ??????????????/
  242. ──────┼───────────────────────────────────────────────────────────────────
  243. 1     │ Volume (0-64)
  244. ──────┼───────────────────────────────────────────────────────────────────
  245. 2     │ Info
  246.       │         Bit 0-1 Type. 00=Adlib 01=4 bit 10=8 bit 11=16 bit
  247.       │                 4 bit samples are not linear, but logarithmic
  248.       │                 values based on internal tables.
  249.       │               2 0=Mono 1=Stereo (left right left right)
  250.       │               3 1=Looped (Loop past offset must not be 0)
  251.       │               4 0=Unsigned 1=Signed
  252.       │               5 0=Normal RAW samples 1=Delta-encoded samples
  253.       │            6-14 Reserved
  254.       │              15 0=Not loaded 1=Loaded
  255.       │
  256.       │
  257.       │                 Delta-Encoded samples use difference between two
  258.       │                 sample bytes/words to encode sample. This method,
  259.       │                 while produces the same file size, compresses
  260.       │                 better using a general purpose compressor, as
  261.       │                 their value ranges are usually small, which helps
  262.       │                 considerably the Huffman Coding compression algo.
  263.       │
  264.       │                 RAW TO DELTA-ENCODED:
  265.       │                 The starting 'previous value' for each sample is 0.
  266.       │                 Then, as each sample element is taken, it is subtracted
  267.       │                 by 'PreviousValue'. The new 'previous value' is taken
  268.       │                 as the current sample value (not the delta-encoded val)
  269.       │
  270.       │                 DELTA-ENCODED TO RAW:
  271.       │                 The starting 'previous value' for each sample is 0.
  272.       │                 Then, a delta-encoded sample is taken and added with
  273.       │                 'previous value'. The new 'previous value' is taken
  274.       │                 as the current decoded value.
  275. ──────┼───────────────────────────────────────────────────────────────────
  276. 30    │ Sample name
  277. ──────┼───────────────────────────────────────────────────────────────────
  278. 13    │ Sample file name
  279. ──────┼───────────────────────────────────────────────────────────────────
  280.  
  281. 80      TOTAL BYTES
  282.  
  283.  
  284.  
  285. ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
  286.  
  287.     E F F E C T S
  288.  
  289. ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
  290.  
  291. 00xx    No effect
  292.  
  293. 01xx    Set speed
  294.     00      Use previous value
  295.     Others  Set speed. Default is 6.
  296.  
  297. 02xx    Set tempo (BPM)
  298.     00      Use previous value
  299.     Others  Set tempo (BPM) to xx. Default is 125.
  300.  
  301. 03xx    Set master volume (global volume in S3M)
  302.     Set master volume. Varies from 0 to 64.
  303.     Internally, it is multiplied by 4 for range of 0-256 used in AM3.
  304.  
  305. 04xx    Jump to order xx (hexadecimal)
  306.     Jump to next order, at row 0 (if Pattern break was not set) or
  307.     the row specified by pattern break if pattern break was set on
  308.     the same line as this command.
  309.  
  310. 05xx    Pattern break to row xx (hexdecimal! Not decimal as in other formats)
  311.     Jump to next order (if jump to order command was not used to set
  312.     the next target order), row xx.
  313.  
  314. 06xy    Volume slide.
  315.     00      Continue previous (fine/slide)
  316.     x0      Volume slide up by x
  317.     0y      Volume slide down by y
  318.     xF      Fine volume slide up by x
  319.     Fy      Fine volume slide down by y
  320.     FF      Fine volume slide up by F (slide up has more priority).
  321.  
  322. 07xy    Slide up
  323.     00      Continue previous (extra/fine/slide)
  324.     Ey      Extra fine slide up with speed y.
  325.     Fy      Fine slide up with speed y.
  326.     Others  Slide up with speed xy (if xy not [extra] fine).
  327.  
  328. 08xy    Slide down
  329.     00      Continue previous (extra/fine/slide)
  330.     Ey      Extra fine slide down with speed y.
  331.     Fy      Fine slide down with speed y.
  332.     Others  Slide down with speed xy (if xy not [extra] fine).
  333.  
  334. 09xx    Slide to note
  335.     00      Continue slide with previous *slide to note* speed.
  336.     xx      Slide to note by with speed xx.
  337.  
  338. 0Axy    Vibrato
  339.     00      Continue previous.
  340.     xy      Vibrate pitch using active waveform with speed x and
  341.         depth y.
  342.     0y      Retains speed. Sets depth to y.
  343.  
  344. 0Bxy    Tremolo
  345.     00      Continue previous.
  346.     Others  Vibrate volume using active waveform with speed x and
  347.         depth y.
  348.  
  349. 0Cxy    Arpeggio
  350.     00      Continue previous.
  351.     Others  Switch between 3 notes, including the current note quickly
  352.         at every tick. Plays in the order... Current Note,
  353.         Current Note+x semitones, Current Note+y semitones.
  354.  
  355. 0Dxy    Continue vibrato and do volume slide
  356.     00      Continue previous volume slide speed.
  357.     Others  Volume slide, with the same parameters as the normal volume
  358.         slide.
  359.  
  360. 0Exy    Continue slide to note and do volume slide
  361.     00      Continue previous volume slide speed.
  362.     Others  Volume slide, with the same parameters as the normal volume
  363.         slide.
  364.  
  365. 0Fxx    Set sample offset
  366.     Sets sample offset to xx*256.
  367.  
  368. 10xy    Retrigger note [+ optional volume slide]
  369.     Retriggers note and optionally do volume slide too.
  370.     x=Volume slide type
  371.         0: 0    (No volumeslide)
  372.         1: -1
  373.         2: -2
  374.         3: -4
  375.         4: -8
  376.         5: -16
  377.         6: 2/3 times the original volume
  378.         7: 1/2 times the original volume
  379.         8: ?
  380.         9: +1
  381.         A: +2
  382.         B: +4
  383.         C: +8
  384.         D: +16
  385.         E: 3/2 times the original volume
  386.         F: 2 times the original volume
  387.         Where the original volume is the CURRENT volume.
  388.     y=Retrigger note at every y ticks.
  389.  
  390. 11xx    Set panning
  391.     00-128  Left(0)   Middle(64)    Right(128)
  392.     254     Surround (Not supported yet)
  393.     255     Disable channel
  394.  
  395. 12xx    Cut note
  396.     00      No cut
  397.     Others  Cut notes after xx ticks.
  398.  
  399. 13xx    Delay note
  400.     00      Note not played.
  401.     Others  Delays note and triggers it only after xx ticks.
  402.  
  403. 14xy    Tremor
  404.     Turns sound on for x+1 ticks and off for y+1 ticks throughout
  405.     the row.
  406.  
  407. 15xx    Pattern loop
  408.     00      Set start of loop
  409.     Others  Set end of loop and number of repetitions.
  410.  
  411. 16xx    Pattern delay
  412.     00      No delay
  413.     Others  Repeats current row x times without triggering the notes again,
  414.         but applyin the effects.
  415.  
  416. 17xx    Set vibrato waveform to
  417.                          xx VALUES
  418.     Waveform   Name                Retriggered  No Retrigger
  419.     ---------- ------------------- -----------  ------------
  420.     /\  /\     Sine (default)           0            4
  421.       \/  \/
  422.  
  423.     |\ |\      Ramp down                1            5
  424.       \| \|
  425.  
  426.     ,-, ,-,    Square                   2            6
  427.       '-' '-'
  428.  
  429.     ?????????  Random                   3            7
  430.  
  431.     Retrigger means that it will reset the position within the sine
  432.     table everytime a new note is encountered. By default, the
  433.     waveform is 0.
  434.  
  435. 18xx    Set tremolo waveform to xx.
  436.     See 17xx, Set vibrato waveform.
  437.  
  438. 19xx    Set glissando (Slide to note will slide in halfnotes).
  439.     00      Disable glissando
  440.     Others  Enable glissando. Usually, people use value 1 for enabling
  441.         glissando.
  442.  
  443. 1Axx    Set sample fine tune (set C-2's frequency)
  444.     Set sample fine tune, where xx corresponds to the appropriate
  445.     frequency of C-2.
  446.     Values for X:
  447.         0       - 7895 Hz
  448.         1       - 7941 Hz
  449.         2       - 7985 Hz
  450.         3       - 8046 Hz
  451.         4       - 8107 Hz
  452.         5       - 8169 Hz
  453.         6       - 8232 Hz
  454.         7       - 8280 Hz
  455.         8       - 8363 Hz (No finetune)
  456.         9       - 8413 Hz
  457.         A       - 8463 Hz
  458.         B       - 8529 Hz
  459.         C       - 8581 Hz
  460.         D       - 8651 Hz
  461.         E       - 8723 Hz
  462.         F       - 8757 Hz
  463.     To convert old amiga fine tunes to current fine tune value,
  464.     perform [(ADD 8) AND 1111b].
  465.  
  466. 1Bxx    Set filter
  467.     Amiga hardware stuff (plays with Amiga LED or something).
  468.     Not implemented.
  469.  
  470. 1Cxx    Set stereo control.
  471.     An old Scream Tracker command. Not implemented.
  472.  
  473. 1Dxx    Invert loop (aka InvertFunk/FunkRepeat?)
  474.     Plays sample backwards with speed xx. Not implemented.
  475.  
  476. 1Exx    Set event.
  477.     Sets the event flag in AM3 and sets the value of AM.MI_Event to xx.
  478.     Similar command in Scream Tracker is Zxx.
  479.  
  480. 1Fxx    Fine vibrato (S3M)
  481.     Similar to Vibrato, but 4x finer.
  482.  
  483.  
  484. SUMMARY:
  485.     MI@EFXnoEffect                  = 000h
  486.     MI@EFXsetSpeed                  = 001h
  487.     MI@EFXsetTempo                  = 002h
  488.     MI@EFXsetMasterVolume           = 003h
  489.     MI@EFXpatternJump               = 004h
  490.     MI@EFXpatternBreak              = 005h
  491.     MI@EFXvolumeSlide               = 006h
  492.     MI@EFXslideUp                   = 007h
  493.     MI@EFXslideDown                 = 008h
  494.     MI@EFXslideToNote               = 009h
  495.     MI@EFXvibrato                   = 00Ah
  496.     MI@EFXtremolo                   = 00Bh
  497.     MI@EFXarpeggio                  = 00Ch
  498.     MI@EFXvibrato_VolumeSlide       = 00Dh
  499.     MI@EFXslidetoNote_VolumeSlide   = 00Eh
  500.     MI@EFXsetSampleOffset           = 00Fh
  501.     MI@EFXretrigger                 = 010h
  502.     MI@EFXsetPan                    = 011h
  503.     MI@EFXcutNote                   = 012h
  504.     MI@EFXdelayNote                 = 013h
  505.     MI@EFXtremor                    = 014h
  506.     MI@EFXpatternLoop               = 015h
  507.     MI@EFXpatternDelay              = 016h
  508.     MI@EFXsetVibratoWaveform        = 017h
  509.     MI@EFXsetTremoloWaveform        = 018h
  510.     MI@EFXsetGlissando              = 019h
  511.     MI@EFXsetFineTune               = 01Ah
  512.     MI@EFXsetFilter                 = 01Bh
  513.     MI@EFXstereoControl             = 01Ch
  514.     MI@EFXinvertLoop                = 01Dh
  515.     MI@EFXevent                     = 01Eh
  516.  
  517.