Difference between revisions of "Buzz BMX format"

From Jeskola Buzz Wiki
Jump to: navigation, search
(Created page with "<pre>Header: Type/Size Description ------------------------------------------------------------------------- 4 "Buzz" dword number of sections 1...")
 
Line 46: Line 46:
 
...
 
...
  
x                       state of global parameters
+
x               state of global parameters
word            number of tracks
+
word            number of tracks ## SEEMS TO BE WRONG ##
x                       state of track parameters for each track
+
x               state of track parameters for each track
 +
 
 +
## SOMETHING SEEMS MISSING HERE ##
  
 
(second machine)
 
(second machine)
Line 108: Line 110:
 
byte            bytes per event pos
 
byte            bytes per event pos
 
byte            bytes per event (2 if there are more than 112 patterns)
 
byte            bytes per event (2 if there are more than 112 patterns)
x                       event list (pos, event, pos, event, pos, event...). events:
+
x               event list (pos, event, pos, event, pos, event...). events:
 
                                 00 = mute, 01 = break, 02 = thru
 
                                 00 = mute, 01 = break, 02 = thru
 
                                 0x10 = first pattern, 0x11 = second pattern, etc.
 
                                 0x10 = first pattern, 0x11 = second pattern, etc.

Revision as of 14:27, 11 September 2016

Header:

Type/Size       Description
-------------------------------------------------------------------------
4               "Buzz"
dword           number of sections
12*31           up to 31 section dir entries

=========================================================================

Section dir entry:

Type/Size       Description
-------------------------------------------------------------------------
4               four-char name of section
dword           offset from begin of file
dword           size in bytes


=========================================================================


Section 'MACH' - machines

v1.2 note: machines with MIF_CONTROL_MACHINE flag should be the last machines in this section

Type/Size       Description
-------------------------------------------------------------------------
word            number of machines

(first machine - always master)
asciiz          name
byte            type (0 = master, 1 = generator, 2 = effect)
asciiz          name of DLL if type is 1 or 2
float           X coordinate in machines view [-1..1]
float           Y coordinate in machines view [-1..1]
dword           size of machine specific data
x               data
word            number of attributes

(first attribute)
asciiz          key
dword           value

(second attribute)
...

x               state of global parameters
word            number of tracks  ## SEEMS TO BE WRONG ##
x               state of track parameters for each track

## SOMETHING SEEMS MISSING HERE ##

(second machine)
...

=========================================================================

Section 'CONN' - machine connections

Type/Size       Description
-------------------------------------------------------------------------
word            number of connections

(first connection)
word            index of source machine
word            index of destination machine
word            amp
word            pan

(second connection)
...


=========================================================================

Section 'PATT' - patterns for each machine

Type/Size       Description
-------------------------------------------------------------------------
(first machine)
word            number of patterns
word            number of tracks

(first pattern)
asciiz          name
word            length of pattern in number of ticks (rows)
x               pattern data

(second pattern)
...

(second machine)
...

=========================================================================

Section 'SEQU' - pattern sequences

Type/Size       Description
-------------------------------------------------------------------------
dword           end of song
dword           begin of loop
dword           end of loop
word            number of sequences

(first sequence)
word            index of machine
dword           number of events
byte            bytes per event pos
byte            bytes per event (2 if there are more than 112 patterns)
x               event list (pos, event, pos, event, pos, event...). events:
                                00 = mute, 01 = break, 02 = thru
                                0x10 = first pattern, 0x11 = second pattern, etc.
                                msb=1 indicates loop

(second sequence)
...

=========================================================================

Section 'WAVT' - wavetable

Type/Size       Description
-------------------------------------------------------------------------
word            number of waves

(first wave)
word            index
asciiz          full file name, e.g. "c:\waves\blah.wav"
asciiz          name
float           volume
byte            flags:
                                bit 0: loop
                                bit 1: don't save
                                bit 2: floating point memory format
                                bit 3: stereo (since 1.2)
                                bit 4: bidirectional loop (since 1.2)
                                bit 7: envelopes follow (since alpha 14)

if flag bit 7 --------->
        word            number of envelopes

        (first envelope)
        word            Attack time
        word            Decay time
        word            Sustain level
        word            Release time
        byte            ADSR Subdivide
        byte            ADSR Flags: 0-1 = attack mode, 2-3 = release mode, 4 = linear decay, 5 = sustain

        word            number of points (can be zero) (bit 15 set = envelope disabled)

        (first point)
        word            x
        word            y
        byte            flags: bit 0 = sustain

        (second point)
        ...

        (second envelope)
        ...
<----------- end of if flag bit 7

byte            number of levels

(first level)
dword           number of samples
dword           loop begin
dword           loop end
dword           samples per second
byte            root note

(second level)
...

(second wave)
...


=========================================================================

Section 'CWAV' or 'WAVE' - wave data, check for 'CWAV' first then for 'WAVE'


Type/Size       Description
-------------------------------------------------------------------------
word            number of waves

(first wave)
word            index of wave
byte            format:
                                0 - raw 16bit, intel byteorder
                                1 - proprietary compressed format (v1.2 uses this one by default)

format 0:

dword           number of bytes in all levels

(data for first level)
..

(data for second level)
...

(second wave)
...

=========================================================================

Section 'BLAH' - song info

Type/Size       Description
-------------------------------------------------------------------------
dword           number of characters
x               raw ascii text (no zero at end)

=========================================================================

Section 'PARA' - parameter information for machines

 - added in v1.2. This section is not required for loading the song if user
   has right versions of all machines installed. otherwise the information
   here can be used to convert pattern data to the new format.

Type/Size       Description
-------------------------------------------------------------------------
dword           number of machines

(first machine)
asciiz          name
asciiz          type (for example "Jeskola Tracker")
dword           number of global parameters
dword           number of track parameters

(first parameter - all global first followed track-parameters)
 see CMachineParameter in MachineInterface.h for more information
 all fields except "Description" are saved

byte            type
asciiz          name
int             minvalue
int             maxvalue
int             novalue
int             flags
int             defvalue

(second parameter)
...

(second machine)
...


=========================================================================

Section 'PDLG' - parameter dialog placements on screen
- added in v1.2

byte            flags:
                        bit 1: dialogs visible

list of positions followed by terminating zero byte:

asciiz          name of machine
WINDOWPLACEMENT win32 window placement structure (see win32 documentation)


=========================================================================

Section 'MIDI' - midi controller bindings
- added in v1.2

list of bindings followed by terminating zero byte:

asciiz          name of machine
byte            parameter group
byte            parameter track
byte            parameter number
byte            midi channel
byte            midi controller number


=========================================================================

Section 'BVER' - buzz version information
- added in v1.2

asciiz          buzz version, date and time of build


=========================================================================