669 and Extended 669 file format:
offset |length&type |description
---------------+---------------+----------------------------------------------
0 |2 bytes |marker, 'if' for 669, 'JN' for Extended 669
2 |108 bytes |song message
0x6e |1 byte |NOS = number of samples saved (0-64)
0x6f |1 byte |NOP = number of patterns saved (0-128)
0x70 |1 byte |loop order number
0x71 |0x80 bytes |order list
0xf1 |0x80 bytes |tempo list for patterns
0x171 |0x80 bytes |break location list for patterns
0x1f1 |NOS*size struct|sample data
| samp |
+--------------+---------------+
|struct samp {
| 13 bytes ASCIIZ filename of instrument
| 1 dword length of instrument
| 1 dword offset of beginning of loop
| 1 dword offset of end of loop
|} smp[NOS]
+--------------+---------------+----------------------------------------------
0x1f1+ |NOP*0x600 |patterns
(NOS*0x19) | |
+--------------+---------------+
|this is repeated 8 times for every row and the array of 8 of these is
| repeated 64 times for each pattern.
|
| bits:
| BYTE[0]: BYTE[1]: BYTE[2]:
| aaaaaaaa bbbbbbbb cccccccc
| +----++-----------------++--+ +--++--+
| | | | | |
| | | 4 bit volume | command value
| | | |
| | aabbbb = 6 bit instrument number command:
| | 0 = a
| note value = (12*oct)+note 1 = b
| 2 = c
| special values for byte 0: 3 = d
| 0xfe = no note, only volume change 4 = e
| 0xff = no note or volume change 5 = f
|
| special value for byte 2:
| 0xff = no command
|
+--------------+---------------+----------------------------------------------
0x1f1+ |rest of file |samples
(NOS*0x19)+ | |
(NOP*0x600) | |
There are six special commands you can enter. To enter a special command hit
Backspace in the pattern edit screen, enter a letter (a-f) then a number
(1-F). The first 5 commands alter the way the note will be played, the
sixth, 'f', changes the tempo in the pattern and has no effect on the note
being played. All commands except 'c' can be specified as part of a note or
alone. If they are specified alone, their effect starts where they were
placed, not when the note was struck. If no instrument is playing on the
channel where the command was encountered, there will be no effect (except
for command 'f', it always changes the tempo). The commands continue to
affect the way the instrument is played untill another note or command
is encountered in the pattern (an 'f' command will cancel the effects of
any previous command, but nothing cancels the effect of the 'f' command).
The format of the commands is c#, where c is the command and # is the
command value which is the user defined parameter for how much the command
will affect the instrument.
669 Commands:
=============
a - Portamento up - This command will cause the frequency of the note to
increase over time, the command value indicates how fast the pitch
will increase. (For those of you who know what this means, the port
is linear, not logarithmic).
b - Portamento down - Same as 'a' but in the other direction.
c - Port to note - This is the only command that requires there to be a
note on the same line. This commands sets the note to portamento at
the speed defined by the command value towards the note on the line.
The instrument value of the note is ignored, but the volume is set
to the volume in the note on this line. When the note reaches the
destination note, the portamento is stopped and it continues playing
at the destination note frequency.
d - Frequency adjust - This command adjusts the frequency of the note
currently playing a little bit. This is useful for when you have 2
notes playing at the same pitch using the same instrument, use this
command to adjust the frequency of one of the notes to make it sound
a little more harmonic.
e - Frequency vibrato - This command sets the frequency of the note that
is playing to vibrate. The command value specifies how much to
vibrato the note by.
Note: A command value of 0 on any of the previous commands cancels the effect
of any previous command and sets the note to play normally.
f - Set tempo - Usually you will set the tempo for the patterns through
their basic tempo. But there are times when you may want to change
the tempo within a pattern. Use this command to do it. The tempo will
remain at this tempo untill another set tempo command or untill
another pattern is reached in the order list (even the same pattern
that is playing now).
Extended 669 Commands:
======================
f0 - Super Fast Tempo. In COMPOSD1, this tempo is unused,
in UNIS 669 Extended mode, this is a super fast tempo.
g - G of Commands
Subcommand:
0 - Balance fine slide Left 8 - Unused
1 - Balance fine slide Right 9 - Unused
2 - Unused 10 - Unused
3 - Unused 11 - Unused
4 - Unused 12 - Unused
5 - Unused 13 - Unused
6 - Unused 14 - Unused
7 - Unused 15 - Unused
h - Slot Retrig. This command rapidly fires 4 slots.
The command parameter specifies the speed at which to do it.
The speed difference across the values is exponential.
Info from: - 669.DOC and COMPOSD.DOC by Tran
- UNIS669.HLP by Jason Nunn
Prime/Inertia