home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 February / PCWorld_2000-02_cd.bin / Software / Servis / FFE / MOD.SWG / 0031_669.pas < prev    next >
Pascal/Delphi Source File  |  1997-03-02  |  6KB  |  135 lines

  1. 669 and Extended 669 file format:
  2.  
  3. offset         |length&type    |description
  4. ---------------+---------------+----------------------------------------------
  5. 0              |2 bytes        |marker, 'if' for 669, 'JN' for Extended 669
  6. 2              |108 bytes      |song message
  7. 0x6e           |1 byte         |NOS = number of samples saved (0-64)
  8. 0x6f           |1 byte         |NOP = number of patterns saved (0-128)
  9. 0x70           |1 byte         |loop order number
  10. 0x71           |0x80 bytes     |order list
  11. 0xf1           |0x80 bytes     |tempo list for patterns
  12. 0x171          |0x80 bytes     |break location list for patterns
  13. 0x1f1          |NOS*size struct|sample data
  14.                | samp          |
  15. +--------------+---------------+
  16. |struct samp {
  17. |  13 bytes ASCIIZ filename of instrument
  18. |  1 dword length of instrument
  19. |  1 dword offset of beginning of loop
  20. |  1 dword offset of end of loop
  21. |} smp[NOS]
  22. +--------------+---------------+----------------------------------------------
  23. 0x1f1+         |NOP*0x600      |patterns
  24. (NOS*0x19)     |               |
  25. +--------------+---------------+
  26. |this is repeated 8 times for every row and the array of 8 of these is
  27. | repeated 64 times for each pattern.
  28. |
  29. | bits:
  30. |   BYTE[0]:             BYTE[1]:            BYTE[2]:
  31. |  aaaaaaaa             bbbbbbbb            cccccccc
  32. |  +----++-----------------++--+            +--++--+
  33. |  |     |                  |               |   |
  34. |  |     |                  4 bit volume    |   command value
  35. |  |     |                                  |
  36. |  |     aabbbb = 6 bit instrument number   command:
  37. |  |                                         0 = a
  38. |  note value = (12*oct)+note                1 = b
  39. |                                            2 = c
  40. |  special values for byte 0:                3 = d
  41. |    0xfe = no note, only volume change      4 = e
  42. |    0xff = no note or volume change         5 = f
  43. |
  44. |                                           special value for byte 2:
  45. |                                             0xff = no command
  46. |
  47. +--------------+---------------+----------------------------------------------
  48. 0x1f1+         |rest of file   |samples
  49. (NOS*0x19)+    |               |
  50. (NOP*0x600)    |               |
  51.  
  52.  
  53.   There are six special commands you can enter. To enter a special command hit
  54.   Backspace in the pattern edit screen, enter a letter (a-f) then a number
  55.   (1-F). The first 5 commands alter the way the note will be played, the
  56.   sixth, 'f', changes the tempo in the pattern and has no effect on the note
  57.   being played. All commands except 'c' can be specified as part of a note or
  58.   alone. If they are specified alone, their effect starts where they were
  59.   placed, not when the note was struck. If no instrument is playing on the
  60.   channel where the command was encountered, there will be no effect (except
  61.   for command 'f', it always changes the tempo). The commands continue to
  62.   affect the way the instrument is played untill another note or command
  63.   is encountered in the pattern (an 'f' command will cancel the effects of
  64.   any previous command, but nothing cancels the effect of the 'f' command).
  65.   The format of the commands is c#, where c is the command and # is the
  66.   command value which is the user defined parameter for how much the command
  67.   will affect the instrument.
  68.  
  69.  
  70. 669 Commands:
  71. =============
  72.  
  73.     a - Portamento up - This command will cause the frequency of the note to
  74.         increase over time, the command value indicates how fast the pitch
  75.         will increase. (For those of you who know what this means, the port
  76.         is linear, not logarithmic).
  77.  
  78.     b - Portamento down - Same as 'a' but in the other direction.
  79.  
  80.     c - Port to note - This is the only command that requires there to be a
  81.         note on the same line. This commands sets the note to portamento at
  82.         the speed defined by the command value towards the note on the line.
  83.         The instrument value of the note is ignored, but the volume is set
  84.         to the volume in the note on this line. When the note reaches the
  85.         destination note, the portamento is stopped and it continues playing
  86.         at the destination note frequency.
  87.  
  88.     d - Frequency adjust - This command adjusts the frequency of the note
  89.         currently playing a little bit. This is useful for when you have 2
  90.         notes playing at the same pitch using the same instrument, use this
  91.         command to adjust the frequency of one of the notes to make it sound
  92.         a little more harmonic.
  93.  
  94.     e - Frequency vibrato - This command sets the frequency of the note that
  95.         is playing to vibrate. The command value specifies how much to
  96.         vibrato the note by.
  97.  
  98. Note: A command value of 0 on any of the previous commands cancels the effect
  99.   of any previous command and sets the note to play normally.
  100.  
  101.     f - Set tempo - Usually you will set the tempo for the patterns through
  102.         their basic tempo. But there are times when you may want to change
  103.         the tempo within a pattern. Use this command to do it. The tempo will
  104.         remain at this tempo untill another set tempo command or untill
  105.         another pattern is reached in the order list (even the same pattern
  106.         that is playing now).
  107.  
  108.  
  109. Extended 669 Commands:
  110. ======================
  111.  
  112.     f0 - Super Fast Tempo. In COMPOSD1, this tempo is unused,
  113.          in UNIS 669 Extended mode, this is a super fast tempo.
  114.  
  115.     g  - G of Commands
  116.          Subcommand:
  117.          0 - Balance fine slide Left        8 - Unused
  118.          1 - Balance fine slide Right       9 - Unused
  119.          2 - Unused                        10 - Unused
  120.          3 - Unused                        11 - Unused
  121.          4 - Unused                        12 - Unused
  122.          5 - Unused                        13 - Unused
  123.          6 - Unused                        14 - Unused
  124.          7 - Unused                        15 - Unused
  125.  
  126.     h  - Slot Retrig. This command rapidly fires 4 slots.
  127.          The command parameter specifies the speed at which to do it.
  128.          The speed difference across the values is exponential.
  129.  
  130. Info from: - 669.DOC and COMPOSD.DOC by Tran
  131.            - UNIS669.HLP by Jason Nunn
  132.  
  133.  
  134. Prime/Inertia <sdanes@marvels.hacktic.nl>
  135.