music_file_format
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| music_file_format [2026/02/02 13:32] – appledog | music_file_format [2026/02/02 13:35] (current) – appledog | ||
|---|---|---|---|
| Line 88: | Line 88: | ||
| ** C4 = (4 * 12) + 0 + 1 = 49 = $31 | ** C4 = (4 * 12) + 0 + 1 = 49 = $31 | ||
| ** A4 = (4 * 12) + 9 + 1 = 58 = $3A | ** A4 = (4 * 12) + 9 + 1 = 58 = $3A | ||
| + | |||
| + | === Example Data File | ||
| + | <codify armasm> | ||
| + | ; ============================================================================ | ||
| + | ; Simple test song: C-E-G-C chord progression | ||
| + | ; ============================================================================ | ||
| + | |||
| + | music_test_song: | ||
| + | |||
| + | ; Header (16 bytes) | ||
| + | music_header: | ||
| + | .bytes " | ||
| + | .byte 1 ; Version | ||
| + | .byte 0 ; Flags | ||
| + | .word 250 ; Tempo: 250ms per row (240 BPM) | ||
| + | .byte 2 ; 2 instruments | ||
| + | .byte 2 ; 2 patterns | ||
| + | .byte 4 ; 4 orders (play pattern 0, 1, 0, 1) | ||
| + | .fill 7, 0 ; Reserved | ||
| + | |||
| + | ; Instruments (8 bytes each) | ||
| + | music_instruments: | ||
| + | ; Instrument 0: Lead (pulse wave) | ||
| + | .byte WAVE_PULSE | ||
| + | .byte $40 ; 50% duty | ||
| + | .byte $10 ; Attack | ||
| + | .byte $20 ; Decay | ||
| + | .byte $80 ; Sustain | ||
| + | .byte $40 ; Release | ||
| + | .byte $C0 ; Volume | ||
| + | .byte 0 ; Reserved | ||
| + | |||
| + | ; Instrument 1: Bass (triangle) | ||
| + | .byte WAVE_TRIANGLE | ||
| + | .byte 0 ; Duty (ignored for triangle) | ||
| + | .byte $08 ; Attack | ||
| + | .byte $10 ; Decay | ||
| + | .byte $A0 ; Sustain | ||
| + | .byte $30 ; Release | ||
| + | .byte $FF ; Volume | ||
| + | .byte 0 ; Reserved | ||
| + | |||
| + | ; Order list | ||
| + | music_orders: | ||
| + | .byte 0 ; Play pattern 0 | ||
| + | .byte 1 ; Play pattern 1 | ||
| + | .byte 0 ; Play pattern 0 again | ||
| + | .byte 1 ; Play pattern 1 again | ||
| + | .byte $FF ; End of song | ||
| + | |||
| + | ; Patterns | ||
| + | music_patterns: | ||
| + | |||
| + | ; Pattern 0 offset (for seeking) | ||
| + | music_pattern_0: | ||
| + | ; Row 0: Channel 0 plays C4 with instrument 0 | ||
| + | .byte $00, $31, $00 ; Ch0, Note On, C4, Inst 0 | ||
| + | .byte $40, $19, $01 ; Ch1, Note On, C3, Inst 1 (bass) | ||
| + | .byte $FF ; End of row | ||
| + | |||
| + | ; Row 1: Channel 0 plays E4 | ||
| + | .byte $00, $35, $00 ; Ch0, Note On, E4, Inst 0 | ||
| + | .byte $FF ; End of row | ||
| + | |||
| + | ; Row 2: Channel 0 plays G4 | ||
| + | .byte $00, $38, $00 ; Ch0, Note On, G4, Inst 0 | ||
| + | .byte $FF ; End of row | ||
| + | |||
| + | ; Row 3: Channel 0 plays C5 | ||
| + | .byte $00, $3D, $00 ; Ch0, Note On, C5, Inst 0 | ||
| + | .byte $FF ; End of row | ||
| + | |||
| + | .byte $FF ; End of pattern | ||
| + | |||
| + | music_pattern_1: | ||
| + | ; Row 0: Note off on channel 0, bass plays G2 | ||
| + | .byte $10 ; Ch0, Note Off | ||
| + | .byte $40, $14, $01 ; Ch1, Note On, G2, Inst 1 | ||
| + | .byte $FF ; End of row | ||
| + | |||
| + | ; Row 1: Channel 0 plays G4 | ||
| + | .byte $00, $38, $00 ; Ch0, Note On, G4, Inst 0 | ||
| + | .byte $FF ; End of row | ||
| + | |||
| + | ; Row 2: Channel 0 plays B4 | ||
| + | .byte $00, $3C, $00 ; Ch0, Note On, B4, Inst 0 | ||
| + | .byte $FF ; End of row | ||
| + | |||
| + | ; Row 3: Channel 0 plays D5 | ||
| + | .byte $00, $3F, $00 ; Ch0, Note On, D5, Inst 0 | ||
| + | .byte $FF ; End of row | ||
| + | |||
| + | .byte $FF ; End of pattern | ||
| + | |||
| + | music_end: | ||
| + | </ | ||
music_file_format.1770039173.txt.gz · Last modified: by appledog
