home *** CD-ROM | disk | FTP | other *** search
-
- BM* format. I wrote this for myself so it may be a bit hard to understand. :)
- BMW is just like BMX except it doesn't include the 'WAVE' section.
-
- 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
- x state of track parameters for each track
-
- (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
-
-
- =========================================================================