music_file_format
This is an old revision of the document!
Table of Contents
Music File Format
How to do it?
Proposal 1
MUSIC FILE FORMAT v1.0
- Header (16 bytes):
- +0: [2] Magic: “SD” ($53 $44)
- +2: [1] Version (1)
- +3: [1] Flags
- +4: [2] Tempo (ms per row)
- +6: [1] Number of instruments
- +7: [1] Number of patterns
- +8: [1] Song length (orders)
- +9: [7] Reserved
- Instrument Table (8 bytes each):
- +0: [1] Waveform (WAVE_xx constant)
- +1: [1] Pulse width / duty cycle
- +2: [1] Attack
- +3: [1] Decay
- +4: [1] Sustain
- +5: [1] Release
- +6: [1] Default volume
- +7: [1] Reserved
NOTE: This might support sample playback later. Waveform can be 0x10 to indicate sample? Address can be in +1, +2, +3, followed by volume envelope, speed, effects and (reserved) remains intact.
- Order List (1 byte each):
- Pattern numbers in playback order
- Terminated by $FF ($FFFF or $0000?)
- Patterns:
- Each pattern is a sequence of rows
- Each row is a sequence of channel commands
- Row terminated by $00
- Pattern terminated by $FF (see above)
Row Command Format
Command Byte:
- Bits 7-6: Channel (0-3)
- Bits 5-4: Command type
- Bits 3-0: Depends on command type
OR
- Command Byte
- Channel Byte
- Data Word + Data Word + Data Word (Reserved)
Command Types:
- 00 = Note On (3 bytes total)
- [Cmd] [Note] [Instrument]
- 01 = Note Off (1 byte)
- [Cmd]
- 10 = Set Volume (2 bytes)
- [Cmd] [Volume]
- 11 = Effect (3 bytes)
- [Cmd] [Effect Type] [Effect Param]
music_file_format.1770038534.txt.gz · Last modified: by appledog
