User Tools

Site Tools


sd:appendix_5_sound_system

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
sd:appendix_5_sound_system [2026/02/25 04:33] appledogsd:appendix_5_sound_system [2026/03/28 09:05] (current) appledog
Line 1: Line 1:
 = Appendix 5 Sound System = Appendix 5 Sound System
 +This is Appendix 5 of the [[SD-8516 Programmer's Reference Guide]].
  
-The SD-8516 is paired with the SD-450 sound subsystem; named for featuring 4 independent voices with 5 waveforms available, each with a programmable ADSR envelope.+== Introduction 
 +The SD-8516 is paired with the SD-450 sound subsystem; named for featuring 4 independent voices with 5 waveforms available, each with a programmable ADSR envelope. Let's dive in with an overview of the architecture and a quick look at INT 11h, the sound services library. If you are just interested in how to play sounds and music in your own games, you can skip ahead to [[#sound_and_music|Sound and Music.]]
  
-== Voice Architecture+=== Voice Architecture
 Each voice occupies 16 bytes of memory in Bank 1: Each voice occupies 16 bytes of memory in Bank 1:
  
 |= Offset |= Register |= Description | |= Offset |= Register |= Description |
-| +$00 | FREQ_LO | Frequency low byte | +| +$00 | FREQ_LO  | Frequency low byte | 
-| +$01 | FREQ_HI | Frequency high byte | +| +$01 | FREQ_MID | Frequency mid byte | 
-| +$02 | GATE | Waveform/gate control | +| +$02 | FREQ_HI  | Frequency high byte | 
-| +$03 | VOLUME | Volume (0-255) | +| +$03 | GATE | Waveform/gate control | 
-| +$04 | ATTACK | Attack time | +| +$04 | VOLUME | Volume (0-255) | 
-| +$05 | DECAY | Decay time | +| +$05 | ATTACK | Attack time | 
-| +$06 | SUSTAIN | Sustain level | +| +$06 | DECAY | Decay time | 
-| +$07 | RELEASE | Release time | +| +$07 | SUSTAIN | Sustain level | 
-| +$08 | DATA1 | Pulse width / noise type | +| +$08 | RELEASE | Release time | 
-| +$09-$0F | Reserved | Future expansion |+| +$09 | DATA1 | Pulse width / noise type | 
 +| +$09-$0F | DATA2-7 Reserved - Future expansion |
  
 **Voice base addresses:** **Voice base addresses:**
-* Voice 0: {{{$1ED00}}} +* Voice 0: {{{$1EF80}}} 
-* Voice 1: {{{$1ED10}}} +* Voice 1: {{{$1EF90}}} 
-* Voice 2: {{{$1ED20}}} +* Voice 2: {{{$1EFA0}}} 
-* Voice 3: {{{$1ED30}}}+* Voice 3: {{{$1EFB0}}}
  
-== Waveforms+=== Waveforms
 Gate register values: Gate register values:
 * 0: Silent (gate off) * 0: Silent (gate off)
Line 34: Line 37:
 * 6: White/pink/brown noise (type via DATA1) * 6: White/pink/brown noise (type via DATA1)
  
-== ADSR Envelope+=== ADSR Envelope
 The Attack-Decay-Sustain-Release envelope shapes each note: The Attack-Decay-Sustain-Release envelope shapes each note:
 * **Attack:** Time to reach peak volume (0-255 × 10ms) * **Attack:** Time to reach peak volume (0-255 × 10ms)
Line 45: Line 48:
 ; Play middle C on voice 0 ; Play middle C on voice 0
     LDA $112B           ; C4 frequency (262 Hz / 0.0596)     LDA $112B           ; C4 frequency (262 Hz / 0.0596)
-    STA [$1ED00]         ; FREQ_LO/HI+    STA [$1ED00]        $01ED00 = FREQ_LO/MID 
 +    LDAL #0 
 +    STAL [$1ED02]       ; $01ED02 = FREQ_HI 
 + 
 +    LDAL $4D            ; Initialize volume to ~30% 
 +    STAL [$1ED03]       ; $1ED03 = VOLUME 
 +    
     LDAL $01            ; Square wave     LDAL $01            ; Square wave
-    STAL [$1ED02]        ; GATE +    STAL [$1ED02]       set GATE to square wave (i.e. turn on)
-    LDAL $4D            ; ~30% volume +
-    STAL [$1ED03]        ; VOLUME+
 </codify> </codify>
  
 +You can also use the sound services library (I
  
 == Sound System Memory Map == Sound System Memory Map
 Also see [[Appendix 3 Memory Map]]. Also see [[Appendix 3 Memory Map]].
  
-=== Sound System ($01EF80–$01EFBF) – 64 bytes total+=== Sound System Memory Map 
 +The sound system memory map occupies  ($01EF80–$01EFBF) – 64 bytes total
  
 ^ Address Range ^ Size ^ Symbol / Register ^ Description ^ ^ Address Range ^ Size ^ Symbol / Register ^ Description ^
Line 113: Line 122:
 | $01EFB9 | 1 byte | SOUND3_DATA2 | Extra control 2 | | $01EFB9 | 1 byte | SOUND3_DATA2 | Extra control 2 |
 | $01EFBA–$01EFBF | 6 bytes | — | **Reserved / unused / future expansion** for Voice 3 | | $01EFBA–$01EFBF | 6 bytes | — | **Reserved / unused / future expansion** for Voice 3 |
 +
 +== INT 11h Sound Services
 +    ; ============================================================================
 +    ; INT 11h - SOUND & MUSIC SERVICES
 +    ; SD-450 Sound Interface Device + Music Player
 +    ; ============================================================================
 +    ;
 +    ; REGISTER CONVENTION:
 +    ;   AH = command
 +    ;   AL = voice (1-4 for music commands, 0-3 for hardware channel)
 +    ;    = data (BL=low, BH=high; or BL=single byte)
 +    ;    = additional data
 +    ;   D, E, F = extended data (for AH=30h "new instrument")
 +    ;
 +    ; FUNCTION MAP:
 +    ;   --- Music Player Control ---
 +    ;   AH=00h: Poll music player (check tick timer, advance if ready)
 +    ;   AH=01h: Execute next note group from song data
 +    ;   AH=02h: Set clock for next note group
 +    ;   AH=03h: Execute a single music command
 +    ;   AH=04h: Reset music player (stop + rewind to start)
 +    ;   AH=05h: Start / continue music player
 +    ;   AH=06h: Pause / unpause (AL=00 pause, AL=01+ unpause)
 +    ;   AH=07h: Load new song (pointer, tempo, calc tick length)
 +    ;   AH=08h: Insert note data by index
 +    ;   AH=09h: Delete note data by index
 +    ;   AH=0Ah: Ask JavaScript to LOAD a music file
 +    ;   AH=0Bh: Ask JavaScript to SAVE a music file
 +    ;
 +    ;   --- Direct Sound Commands (also used by music file data) ---
 +    ;   AH=10h: Turn off voice
 +    ;   AH=11h: Turn on as square   (+3 bytes freq: BL, BH, CL)
 +    ;   AH=12h: Turn on as triangle (+3 bytes freq)
 +    ;   AH=13h: Turn on as sawtooth (+3 bytes freq)
 +    ;   AH=14h: Turn on as sine     (+3 bytes freq)
 +    ;   AH=15h: Turn on as PWM      (+3 bytes freq)
 +    ;   AH=16h: Turn on as noise    (+3 bytes freq)
 +    ;   AH=17h: Turn on as waveform byte + note index
 +    ;            (BL=note index 1-88, BH=waveform 01-06)
 +    ;   AH=21h: Set GATE        (BL = gate byte)
 +    ;   AH=22h: Set FREQ        (BL=lo, BH=mid, CL=hi)
 +    ;   AH=23h: Set ATTACK      (BL = attack byte)
 +    ;   AH=24h: Set SUSTAIN     (BL = sustain byte)
 +    ;   AH=25h: Set RELEASE     (BL = release byte)
 +    ;   AH=26h: Set DATA1       (BL = data1 byte)
 +    ;   AH=27h: Set DATA2       (BL = data2 byte)
 +    ;   AH=28h: Set VOLUME      (BL = volume byte)
 +    ;   AH=29h: Set DECAY       (BL = decay byte)
 +    ;   AH=30h: Set new voice data at-once (10 bytes: BCDEF)
 +    ;
 +    ;   --- Legacy / Utility ---
 +    ;   AH=40h: Initialize sound system
 +    ;   AH=41h: Play note (blocking, with duration)
 +    ;   AH=42h: Stop channel
 +    ;   AH=43h: Stop all channels
 +    ;   AH=44h: Set master volume
 +    ;   AH=45h: Get channel status
 +    ;   AH=46h: Sound effect (bell, beep, buzz, etc.)
 +    ;   AH=47h: Play startup sound (GECF)
 +    ;   AH=48h: Wait milliseconds (C = ms)
 +    ;   AH=49h: Note index to frequency lookup (BH=index, returns B:CL)
 +    ;
 +    ; ============================================================================
 +
 +== Sound and Music
 +It is possible to play sound sound and music in the background (or while-you-wait) on the SD-8516. The boot chime "GECF" is proof of this.
 +
 +There are two main ways you can play sound and music. One is by directly controlling the music registers. As listed above, you can write data to these registers and the "SD-450 Sound Chip" will play the sounds. This can be a good way to make sound effects. Alternately you can use the Music Player system in INT 11h. 
 +
 +Although INT 11h is used to make music, you can create short scripts to play sound effects. Each channel operates independently so you can have up to four simultaneous sounds playing at the same time. Making a sound effect relies entirely on your own creativity. Here's an example of the sound we use for the system beep; it's a good example of a directly programmed sound:
 +
 +<codify armasm>
 +.equ SOUND_CH0_BASE    $01EF80
 +.equ SOUND_CH0_GATE    $01EF83
 +.equ SOUND_CH0_VOLUME  $01EF84
 +.equ SOUND_CH0_DATA1   $01EF89
 +
 +play_beep:
 +    ; Play a beep (~880hz A4)
 +    
 +    ; Set channel 0 frequency to A4
 +    LDELM $001CD7               ; A4 freq (3 bytes: $D7, $1C, $00)
 +    STELM [@SOUND_CH0_BASE]     ; write freq_lo/mid/hi
 +
 +    ; Set pulse width 50%
 +    LDAL $40
 +    STAL [@SOUND_CH0_DATA1]
 +
 +    ; Set volume
 +    LDAL $4D
 +    STAL [@SOUND_CH0_VOLUME]
 +
 +    ; Gate on with pulse waveform
 +    LDAL @WAVE_PWM
 +    STAL [@SOUND_CH0_GATE]
 +
 +    ; Wait 100ms
 +    LDC #100
 +    LDAH $48     ; wait_ms -- wait for C ms (blocking)
 +    INT 0x11
 +
 +    ; Gate off
 +    LDAL $00
 +    STAL [@SOUND_CH0_GATE]
 +
 +    ; Release delay
 +    LDC #20
 +    LDAH $48     ; wait_ms -- wait for C ms (blocking)
 +    INT 0x11
 +</codify>
 +
 +As you can see -- nothing to it!
 +
 +=== Music Player System
 +First you will define a series of commands such as:
 +
 +<codify armasm>
 +BOOT_CHIME_DATA:
 +    ; Tick 1: setup + G/C
 +    .byte $01, $00                      ; tick index 1
 +    .byte $F1, $83, $00                 ; set tempo = 131ms
 +    .byte $F2, $03                      ; min_note = 3 (eighth)
 +    .byte $01, $28, $20                 ; v1 duty 12.5%
 +    .byte $01, $17, $2F, $05            ; v1 PWM + G4
 +    .byte $02, $17, $1C, $02            ; v2 tri + C3
 +    .byte $00
 +
 +    ; Tick 2: E/A
 +    .byte $02, $00
 +    .byte $01, $28, $80                 ; v1 duty 50%
 +    .byte $01, $17, $2C, $05            ; v1 PWM + E4
 +    .byte $02, $17, $14, $02            ; v2 tri + E2
 +    .byte $00
 +
 +    ; Tick 3: C/F
 +    .byte $03, $00
 +    .byte $01, $28, $40                 ; v1 duty 25%
 +    .byte $01, $17, $28, $05            ; v1 PWM + C4
 +    .byte $02, $17, $10, $02            ; v2 tri + C2
 +    .byte $00
 +
 +    ; Tick 4: F/G
 +    .byte $04, $00
 +    .byte $01, $28, $20                 ; v1 duty 12.5%
 +    .byte $01, $17, $2D, $05            ; v1 PWM + F4
 +    .byte $02, $17, $14, $02            ; v2 tri + E2
 +    .byte $00
 +
 +    ; Tick 5: silence
 +    .byte $05, $00
 +    .byte $01, $10                      ; v1 off
 +    .byte $02, $10                      ; v2 off
 +    .byte $00
 +    ; End
 +    .byte $00, $00
 +</codify>
 +
 +With this data, you can play it like this:
 +
 +<codify armasm>
 +    ; Initialize sound system
 +    LDAH $40
 +    INT 0x11
 +
 +    ; Point ELM at our song data and load it (AH=07h)
 +    LDELM @MUSIC_DATA
 +    LDAH $07
 +    INT 0x11
 +
 +    ; Start playback: set state and prime the clock
 +    LDAH $05
 +    INT 0x11
 +
 +    ; Blocking playback loop: poll until song finishes
 +player_loop:
 +    YIELD
 +    LDAH $00    ; Poll Music Player
 +    INT 0x11    ; This checks if there is a note, and plays it.
 +    LDAH $0F    ; Check player state
 +    INT 0x11
 +    CMP AL, 1   ; 1 = still playing (0 = song is finished)
 +    JZ @player_loop
 +
 +    ; Done
 +    LDAH $43    ; Stop player (turn off all channels)
 +    INT 0x11    ; This causes the music player to stop.
 +
 +</codify>
 +
 +Now, if you have a game loop, you can just put this code in your main loop:
 +
 +    LDAH $00    ; Poll Music Player
 +    INT 0x11    ; This checks if there is a note, and plays it.
 +
 +It will quickly check if there is a note and play it. In this way you can have "background music".
 +
 +=== DATA2 mode
 +If DATA2 is set to 1 on a voice channel (default is 0) then it will experience a momentary shutoff before the next note is played. If you cannot achieve the correct ADSR envelope to separate notes, you can enable this mode. It is especially useful for guitar strum-like sounds -- "chugging". Then again, I think the kids say 'djenting' these days. I read that somewhere.
 +
 +
 +== Example Song
 +Here is an example song using the INT 11h SOUND SERVICES LIBRARY. Feel free to cut and paste into your own programs, or make your own music!
 +
 +INSTRUCTIONS:
 +* save this as "danube.sda".
 +* type LOAD on your SD-8516 / VC-3 computer system
 +* select the danube.sda file
 +* optionally save it on your SuperDATA-sette 1532N Tape Drive Backup system using the DSAVE DANUBE.SDA command!
 +
 +<codify ARMASM>
 +; ============================================================================
 +; The Blue Danube Waltz - Johann Strauss II (Op. 314, 1867)
 +; Arranged for SD-450 Sound Chip (64 bars)
 +; "C64-style": PWM melody, Triangle bass, Sawtooth chords
 +; 3/4 waltz time, ~180 BPM (tick_ms = 144ms, eighth note resolution)
 +;
 +; Voice 1 (ch 0): Melody - PWM waveform, 25% duty cycle
 +; Voice 2 (ch 1): Bass - Triangle waveform (oom)
 +; Voice 3 (ch 2): Chords - Sawtooth waveform (pah-pah)
 +;
 +; Structure: Theme A (16 bars) - Theme A repeat (16 bars)
 +;            Theme B (16 bars) - Theme A reprise (16 bars) + coda
 +;
 +; ============================================================================
 +
 +    LDELM @the_blue_danube
 +    LDAH $07
 +    INT $11                          ; load song
 +
 +    LDAH $05
 +    INT $11                          ; start player
 +    RET
 +
 +the_blue_danube:
 +; --- Tempo setup ---
 +.byte $01, $00                      ; tick 1: setup
 +.byte $F1, $90, $00                 ; tick_ms = 144ms
 +.byte $01, $28, $40                 ; v1 duty 25%
 +.byte $00
 +
 +; ===== THEME A - First statement =====
 +; --- Bars 1-2: Intro (D major, pickup to D4) ---
 +.byte $02, $00  ; beat 1
 +.byte $02, $17, $12, $02            ; v2 D2
 +.byte $00
 +.byte $03, $00
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $04, $00  ; beat 2
 +.byte $03, $17, $22, $03            ; v3 F#3
 +.byte $00
 +.byte $05, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $06, $00  ; beat 3
 +.byte $03, $17, $25, $03            ; v3 A3
 +.byte $00
 +.byte $07, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $08, $00  ; beat 1
 +.byte $02, $17, $12, $02            ; v2 D2
 +.byte $00
 +.byte $09, $00
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $0A, $00  ; beat 2
 +.byte $03, $17, $22, $03            ; v3 F#3
 +.byte $00
 +.byte $0B, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $0C, $00  ; beat 3
 +.byte $03, $17, $25, $03            ; v3 A3
 +.byte $01, $17, $2A, $05            ; v1 D4
 +.byte $00
 +.byte $0D, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +; --- Bars 3-4: D4-F#4, A4 held (D major) ---
 +.byte $0E, $00  ; beat 1
 +.byte $02, $17, $12, $02            ; v2 D2
 +.byte $01, $17, $2A, $05            ; v1 D4
 +.byte $00
 +.byte $0F, $00
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $10, $00  ; beat 2
 +.byte $03, $17, $22, $03            ; v3 F#3
 +.byte $01, $17, $2E, $05            ; v1 F#4
 +.byte $00
 +.byte $11, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $12, $00  ; beat 3
 +.byte $03, $17, $25, $03            ; v3 A3
 +.byte $00
 +.byte $13, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $14, $00  ; beat 1
 +.byte $02, $17, $12, $02            ; v2 D2
 +.byte $01, $17, $31, $05            ; v1 A4
 +.byte $00
 +.byte $15, $00
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $16, $00  ; beat 2
 +.byte $03, $17, $22, $03            ; v3 F#3
 +.byte $00
 +.byte $17, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $18, $00  ; beat 3
 +.byte $03, $17, $25, $03            ; v3 A3
 +.byte $00
 +.byte $19, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +; --- Bars 5-6: A4 sustained (A major) ---
 +.byte $1A, $00  ; beat 1
 +.byte $02, $17, $19, $02            ; v2 A2
 +.byte $00
 +.byte $1B, $00
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $1C, $00  ; beat 2
 +.byte $03, $17, $1D, $03            ; v3 C#3
 +.byte $00
 +.byte $1D, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $1E, $00  ; beat 3
 +.byte $03, $17, $20, $03            ; v3 E3
 +.byte $00
 +.byte $1F, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $20, $00  ; beat 1
 +.byte $02, $17, $19, $02            ; v2 A2
 +.byte $00
 +.byte $21, $00
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $22, $00  ; beat 2
 +.byte $03, $17, $1D, $03            ; v3 C#3
 +.byte $00
 +.byte $23, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $24, $00  ; beat 3
 +.byte $03, $17, $20, $03            ; v3 E3
 +.byte $00
 +.byte $25, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +; --- Bars 7-8: Pickup C#4, C#4-E4 (A major) ---
 +.byte $26, $00  ; beat 1
 +.byte $02, $17, $19, $02            ; v2 A2
 +.byte $00
 +.byte $27, $00
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $28, $00  ; beat 2
 +.byte $03, $17, $1D, $03            ; v3 C#3
 +.byte $00
 +.byte $29, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $2A, $00  ; beat 3
 +.byte $03, $17, $20, $03            ; v3 E3
 +.byte $01, $17, $29, $05            ; v1 C#4
 +.byte $00
 +.byte $2B, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $2C, $00  ; beat 1
 +.byte $02, $17, $19, $02            ; v2 A2
 +.byte $01, $17, $29, $05            ; v1 C#4
 +.byte $00
 +.byte $2D, $00
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $2E, $00  ; beat 2
 +.byte $03, $17, $1D, $03            ; v3 C#3
 +.byte $01, $17, $2C, $05            ; v1 E4
 +.byte $00
 +.byte $2F, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $30, $00  ; beat 3
 +.byte $03, $17, $20, $03            ; v3 E3
 +.byte $00
 +.byte $31, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +; --- Bars 9-10: A4 held (D major) ---
 +.byte $32, $00  ; beat 1
 +.byte $02, $17, $12, $02            ; v2 D2
 +.byte $01, $17, $31, $05            ; v1 A4
 +.byte $00
 +.byte $33, $00
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $34, $00  ; beat 2
 +.byte $03, $17, $22, $03            ; v3 F#3
 +.byte $00
 +.byte $35, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $36, $00  ; beat 3
 +.byte $03, $17, $25, $03            ; v3 A3
 +.byte $00
 +.byte $37, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $38, $00  ; beat 1
 +.byte $02, $17, $12, $02            ; v2 D2
 +.byte $00
 +.byte $39, $00
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $3A, $00  ; beat 2
 +.byte $03, $17, $22, $03            ; v3 F#3
 +.byte $00
 +.byte $3B, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $3C, $00  ; beat 3
 +.byte $03, $17, $25, $03            ; v3 A3
 +.byte $00
 +.byte $3D, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +; --- Bars 11-12: Pickup D4, D4-F#4 (D major) ---
 +.byte $3E, $00  ; beat 1
 +.byte $02, $17, $12, $02            ; v2 D2
 +.byte $00
 +.byte $3F, $00
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $40, $00  ; beat 2
 +.byte $03, $17, $22, $03            ; v3 F#3
 +.byte $00
 +.byte $41, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $42, $00  ; beat 3
 +.byte $03, $17, $25, $03            ; v3 A3
 +.byte $01, $17, $2A, $05            ; v1 D4
 +.byte $00
 +.byte $43, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $44, $00  ; beat 1
 +.byte $02, $17, $12, $02            ; v2 D2
 +.byte $01, $17, $2A, $05            ; v1 D4
 +.byte $00
 +.byte $45, $00
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $46, $00  ; beat 2
 +.byte $03, $17, $22, $03            ; v3 F#3
 +.byte $01, $17, $2E, $05            ; v1 F#4
 +.byte $00
 +.byte $47, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $48, $00  ; beat 3
 +.byte $03, $17, $25, $03            ; v3 A3
 +.byte $00
 +.byte $49, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +; --- Bars 13-14: A4-D5, D5-C#5 (D major) ---
 +.byte $4A, $00  ; beat 1
 +.byte $02, $17, $12, $02            ; v2 D2
 +.byte $01, $17, $31, $05            ; v1 A4
 +.byte $00
 +.byte $4B, $00
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $4C, $00  ; beat 2
 +.byte $03, $17, $22, $03            ; v3 F#3
 +.byte $01, $17, $36, $05            ; v1 D5
 +.byte $00
 +.byte $4D, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $4E, $00  ; beat 3
 +.byte $03, $17, $25, $03            ; v3 A3
 +.byte $00
 +.byte $4F, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $50, $00  ; beat 1
 +.byte $02, $17, $12, $02            ; v2 D2
 +.byte $01, $17, $36, $05            ; v1 D5
 +.byte $00
 +.byte $51, $00
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $52, $00  ; beat 2
 +.byte $03, $17, $22, $03            ; v3 F#3
 +.byte $01, $17, $35, $05            ; v1 C#5
 +.byte $00
 +.byte $53, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $54, $00  ; beat 3
 +.byte $03, $17, $25, $03            ; v3 A3
 +.byte $00
 +.byte $55, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +; --- Bars 15-16: B4 (G major), A4 resolving (A major) ---
 +.byte $56, $00  ; beat 1
 +.byte $02, $17, $17, $02            ; v2 G2
 +.byte $01, $17, $33, $05            ; v1 B4
 +.byte $00
 +.byte $57, $00
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $58, $00  ; beat 2
 +.byte $03, $17, $27, $03            ; v3 B3
 +.byte $00
 +.byte $59, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $5A, $00  ; beat 3
 +.byte $03, $17, $1E, $03            ; v3 D3
 +.byte $00
 +.byte $5B, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $5C, $00  ; beat 1
 +.byte $02, $17, $19, $02            ; v2 A2
 +.byte $01, $17, $31, $05            ; v1 A4
 +.byte $00
 +.byte $5D, $00
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $5E, $00  ; beat 2
 +.byte $03, $17, $1D, $03            ; v3 C#3
 +.byte $00
 +.byte $5F, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $60, $00  ; beat 3
 +.byte $03, $17, $20, $03            ; v3 E3
 +.byte $00
 +.byte $61, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +
 +; ===== THEME A - Second statement =====
 +; --- Bars 17-18: Intro repeat (D major, pickup D4) ---
 +.byte $62, $00  ; beat 1
 +.byte $02, $17, $12, $02            ; v2 D2
 +.byte $00
 +.byte $63, $00
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $64, $00  ; beat 2
 +.byte $03, $17, $22, $03            ; v3 F#3
 +.byte $00
 +.byte $65, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $66, $00  ; beat 3
 +.byte $03, $17, $25, $03            ; v3 A3
 +.byte $00
 +.byte $67, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $68, $00  ; beat 1
 +.byte $02, $17, $12, $02            ; v2 D2
 +.byte $00
 +.byte $69, $00
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $6A, $00  ; beat 2
 +.byte $03, $17, $22, $03            ; v3 F#3
 +.byte $00
 +.byte $6B, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $6C, $00  ; beat 3
 +.byte $03, $17, $25, $03            ; v3 A3
 +.byte $01, $17, $2A, $05            ; v1 D4
 +.byte $00
 +.byte $6D, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +; --- Bars 19-20: D4-F#4, A4 (D major) ---
 +.byte $6E, $00  ; beat 1
 +.byte $02, $17, $12, $02            ; v2 D2
 +.byte $01, $17, $2A, $05            ; v1 D4
 +.byte $00
 +.byte $6F, $00
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $70, $00  ; beat 2
 +.byte $03, $17, $22, $03            ; v3 F#3
 +.byte $01, $17, $2E, $05            ; v1 F#4
 +.byte $00
 +.byte $71, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $72, $00  ; beat 3
 +.byte $03, $17, $25, $03            ; v3 A3
 +.byte $00
 +.byte $73, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $74, $00  ; beat 1
 +.byte $02, $17, $12, $02            ; v2 D2
 +.byte $01, $17, $31, $05            ; v1 A4
 +.byte $00
 +.byte $75, $00
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $76, $00  ; beat 2
 +.byte $03, $17, $22, $03            ; v3 F#3
 +.byte $00
 +.byte $77, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $78, $00  ; beat 3
 +.byte $03, $17, $25, $03            ; v3 A3
 +.byte $00
 +.byte $79, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +; --- Bars 21-22: A4 sustained (A major) ---
 +.byte $7A, $00  ; beat 1
 +.byte $02, $17, $19, $02            ; v2 A2
 +.byte $00
 +.byte $7B, $00
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $7C, $00  ; beat 2
 +.byte $03, $17, $1D, $03            ; v3 C#3
 +.byte $00
 +.byte $7D, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $7E, $00  ; beat 3
 +.byte $03, $17, $20, $03            ; v3 E3
 +.byte $00
 +.byte $7F, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $80, $00  ; beat 1
 +.byte $02, $17, $19, $02            ; v2 A2
 +.byte $00
 +.byte $81, $00
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $82, $00  ; beat 2
 +.byte $03, $17, $1D, $03            ; v3 C#3
 +.byte $00
 +.byte $83, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $84, $00  ; beat 3
 +.byte $03, $17, $20, $03            ; v3 E3
 +.byte $00
 +.byte $85, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +; --- Bars 23-24: Pickup C#4, C#4-E4 (A major) ---
 +.byte $86, $00  ; beat 1
 +.byte $02, $17, $19, $02            ; v2 A2
 +.byte $00
 +.byte $87, $00
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $88, $00  ; beat 2
 +.byte $03, $17, $1D, $03            ; v3 C#3
 +.byte $00
 +.byte $89, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $8A, $00  ; beat 3
 +.byte $03, $17, $20, $03            ; v3 E3
 +.byte $01, $17, $29, $05            ; v1 C#4
 +.byte $00
 +.byte $8B, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $8C, $00  ; beat 1
 +.byte $02, $17, $19, $02            ; v2 A2
 +.byte $01, $17, $29, $05            ; v1 C#4
 +.byte $00
 +.byte $8D, $00
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $8E, $00  ; beat 2
 +.byte $03, $17, $1D, $03            ; v3 C#3
 +.byte $01, $17, $2C, $05            ; v1 E4
 +.byte $00
 +.byte $8F, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $90, $00  ; beat 3
 +.byte $03, $17, $20, $03            ; v3 E3
 +.byte $00
 +.byte $91, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +; --- Bars 25-26: A4 held (D major) ---
 +.byte $92, $00  ; beat 1
 +.byte $02, $17, $12, $02            ; v2 D2
 +.byte $01, $17, $31, $05            ; v1 A4
 +.byte $00
 +.byte $93, $00
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $94, $00  ; beat 2
 +.byte $03, $17, $22, $03            ; v3 F#3
 +.byte $00
 +.byte $95, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $96, $00  ; beat 3
 +.byte $03, $17, $25, $03            ; v3 A3
 +.byte $00
 +.byte $97, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $98, $00  ; beat 1
 +.byte $02, $17, $12, $02            ; v2 D2
 +.byte $00
 +.byte $99, $00
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $9A, $00  ; beat 2
 +.byte $03, $17, $22, $03            ; v3 F#3
 +.byte $00
 +.byte $9B, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $9C, $00  ; beat 3
 +.byte $03, $17, $25, $03            ; v3 A3
 +.byte $00
 +.byte $9D, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +; --- Bars 27-28: Pickup D4, D4-F#4 (D major) ---
 +.byte $9E, $00  ; beat 1
 +.byte $02, $17, $12, $02            ; v2 D2
 +.byte $00
 +.byte $9F, $00
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $A0, $00  ; beat 2
 +.byte $03, $17, $22, $03            ; v3 F#3
 +.byte $00
 +.byte $A1, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $A2, $00  ; beat 3
 +.byte $03, $17, $25, $03            ; v3 A3
 +.byte $01, $17, $2A, $05            ; v1 D4
 +.byte $00
 +.byte $A3, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $A4, $00  ; beat 1
 +.byte $02, $17, $12, $02            ; v2 D2
 +.byte $01, $17, $2A, $05            ; v1 D4
 +.byte $00
 +.byte $A5, $00
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $A6, $00  ; beat 2
 +.byte $03, $17, $22, $03            ; v3 F#3
 +.byte $01, $17, $2E, $05            ; v1 F#4
 +.byte $00
 +.byte $A7, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $A8, $00  ; beat 3
 +.byte $03, $17, $25, $03            ; v3 A3
 +.byte $00
 +.byte $A9, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +; --- Bars 29-30: A4-D5, D5 held (D major) ---
 +.byte $AA, $00  ; beat 1
 +.byte $02, $17, $12, $02            ; v2 D2
 +.byte $01, $17, $31, $05            ; v1 A4
 +.byte $00
 +.byte $AB, $00
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $AC, $00  ; beat 2
 +.byte $03, $17, $22, $03            ; v3 F#3
 +.byte $01, $17, $36, $05            ; v1 D5
 +.byte $00
 +.byte $AD, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $AE, $00  ; beat 3
 +.byte $03, $17, $25, $03            ; v3 A3
 +.byte $00
 +.byte $AF, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $B0, $00  ; beat 1
 +.byte $02, $17, $12, $02            ; v2 D2
 +.byte $01, $17, $36, $05            ; v1 D5
 +.byte $00
 +.byte $B1, $00
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $B2, $00  ; beat 2
 +.byte $03, $17, $22, $03            ; v3 F#3
 +.byte $00
 +.byte $B3, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $B4, $00  ; beat 3
 +.byte $03, $17, $25, $03            ; v3 A3
 +.byte $00
 +.byte $B5, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +; --- Bars 31-32: C#5-B4, A4 resolving to D (D major) ---
 +.byte $B6, $00  ; beat 1
 +.byte $02, $17, $17, $02            ; v2 G2
 +.byte $01, $17, $35, $05            ; v1 C#5
 +.byte $00
 +.byte $B7, $00
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $B8, $00  ; beat 2
 +.byte $03, $17, $27, $03            ; v3 B3
 +.byte $01, $17, $33, $05            ; v1 B4
 +.byte $00
 +.byte $B9, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $BA, $00  ; beat 3
 +.byte $03, $17, $1E, $03            ; v3 D3
 +.byte $00
 +.byte $BB, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $BC, $00  ; beat 1
 +.byte $02, $17, $12, $02            ; v2 D2
 +.byte $01, $17, $31, $05            ; v1 A4
 +.byte $00
 +.byte $BD, $00
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $BE, $00  ; beat 2
 +.byte $03, $17, $22, $03            ; v3 F#3
 +.byte $00
 +.byte $BF, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $C0, $00  ; beat 3
 +.byte $03, $17, $25, $03            ; v3 A3
 +.byte $01, $17, $2A, $05            ; v1 D4
 +.byte $00
 +.byte $C1, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +
 +; ===== THEME B - Contrasting theme =====
 +; --- Bars 33-34: G major, melody G4-B4 ---
 +.byte $C2, $00  ; beat 1
 +.byte $02, $17, $17, $02            ; v2 G2
 +.byte $01, $17, $2F, $05            ; v1 G4
 +.byte $00
 +.byte $C3, $00
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $C4, $00  ; beat 2
 +.byte $03, $17, $27, $03            ; v3 B3
 +.byte $00
 +.byte $C5, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $C6, $00  ; beat 3
 +.byte $03, $17, $1E, $03            ; v3 D3
 +.byte $00
 +.byte $C7, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $C8, $00  ; beat 1
 +.byte $02, $17, $17, $02            ; v2 G2
 +.byte $01, $17, $33, $05            ; v1 B4
 +.byte $00
 +.byte $C9, $00
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $CA, $00  ; beat 2
 +.byte $03, $17, $27, $03            ; v3 B3
 +.byte $00
 +.byte $CB, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $CC, $00  ; beat 3
 +.byte $03, $17, $1E, $03            ; v3 D3
 +.byte $00
 +.byte $CD, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +; --- Bars 35-36: B4 sustained, then A4 (D major) ---
 +.byte $CE, $00  ; beat 1
 +.byte $02, $17, $12, $02            ; v2 D2
 +.byte $01, $17, $33, $05            ; v1 B4
 +.byte $00
 +.byte $CF, $00
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $D0, $00  ; beat 2
 +.byte $03, $17, $22, $03            ; v3 F#3
 +.byte $00
 +.byte $D1, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $D2, $00  ; beat 3
 +.byte $03, $17, $25, $03            ; v3 A3
 +.byte $00
 +.byte $D3, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $D4, $00  ; beat 1
 +.byte $02, $17, $12, $02            ; v2 D2
 +.byte $01, $17, $31, $05            ; v1 A4
 +.byte $00
 +.byte $D5, $00
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $D6, $00  ; beat 2
 +.byte $03, $17, $22, $03            ; v3 F#3
 +.byte $00
 +.byte $D7, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $D8, $00  ; beat 3
 +.byte $03, $17, $25, $03            ; v3 A3
 +.byte $00
 +.byte $D9, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +; --- Bars 37-38: G4-F#4 (G major) ---
 +.byte $DA, $00  ; beat 1
 +.byte $02, $17, $17, $02            ; v2 G2
 +.byte $01, $17, $2F, $05            ; v1 G4
 +.byte $00
 +.byte $DB, $00
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $DC, $00  ; beat 2
 +.byte $03, $17, $27, $03            ; v3 B3
 +.byte $01, $17, $2E, $05            ; v1 F#4
 +.byte $00
 +.byte $DD, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $DE, $00  ; beat 3
 +.byte $03, $17, $1E, $03            ; v3 D3
 +.byte $00
 +.byte $DF, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $E0, $00  ; beat 1
 +.byte $02, $17, $17, $02            ; v2 G2
 +.byte $01, $17, $2F, $05            ; v1 G4
 +.byte $00
 +.byte $E1, $00
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $E2, $00  ; beat 2
 +.byte $03, $17, $27, $03            ; v3 B3
 +.byte $00
 +.byte $E3, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $E4, $00  ; beat 3
 +.byte $03, $17, $1E, $03            ; v3 D3
 +.byte $00
 +.byte $E5, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +; --- Bars 39-40: A4-G4 (D major) ---
 +.byte $E6, $00  ; beat 1
 +.byte $02, $17, $12, $02            ; v2 D2
 +.byte $01, $17, $31, $05            ; v1 A4
 +.byte $00
 +.byte $E7, $00
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $E8, $00  ; beat 2
 +.byte $03, $17, $22, $03            ; v3 F#3
 +.byte $01, $17, $2F, $05            ; v1 G4
 +.byte $00
 +.byte $E9, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $EA, $00  ; beat 3
 +.byte $03, $17, $25, $03            ; v3 A3
 +.byte $00
 +.byte $EB, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $EC, $00  ; beat 1
 +.byte $02, $17, $12, $02            ; v2 D2
 +.byte $01, $17, $2E, $05            ; v1 F#4
 +.byte $00
 +.byte $ED, $00
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $EE, $00  ; beat 2
 +.byte $03, $17, $22, $03            ; v3 F#3
 +.byte $00
 +.byte $EF, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $F0, $00  ; beat 3
 +.byte $03, $17, $25, $03            ; v3 A3
 +.byte $00
 +.byte $F1, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +; --- Bars 41-42: E4-F#4-G4 rising (C major) ---
 +.byte $F2, $00  ; beat 1
 +.byte $02, $17, $10, $02            ; v2 C2
 +.byte $01, $17, $2C, $05            ; v1 E4
 +.byte $00
 +.byte $F3, $00
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $F4, $00  ; beat 2
 +.byte $03, $17, $20, $03            ; v3 E3
 +.byte $01, $17, $2E, $05            ; v1 F#4
 +.byte $00
 +.byte $F5, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $F6, $00  ; beat 3
 +.byte $03, $17, $23, $03            ; v3 G3
 +.byte $00
 +.byte $F7, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $F8, $00  ; beat 1
 +.byte $02, $17, $10, $02            ; v2 C2
 +.byte $01, $17, $2F, $05            ; v1 G4
 +.byte $00
 +.byte $F9, $00
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $FA, $00  ; beat 2
 +.byte $03, $17, $20, $03            ; v3 E3
 +.byte $00
 +.byte $FB, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $FC, $00  ; beat 3
 +.byte $03, $17, $23, $03            ; v3 G3
 +.byte $00
 +.byte $FD, $00
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +; --- Bars 43-44: A4-B4 (Em) ---
 +.byte $FE, $00  ; beat 1
 +.byte $02, $17, $14, $02            ; v2 E2
 +.byte $01, $17, $31, $05            ; v1 A4
 +.byte $00
 +.byte $FF, $00
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $00, $01  ; beat 2
 +.byte $03, $17, $23, $03            ; v3 G3
 +.byte $01, $17, $33, $05            ; v1 B4
 +.byte $00
 +.byte $01, $01
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $02, $01  ; beat 3
 +.byte $03, $17, $27, $03            ; v3 B3
 +.byte $00
 +.byte $03, $01
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $04, $01  ; beat 1
 +.byte $02, $17, $14, $02            ; v2 E2
 +.byte $01, $17, $33, $05            ; v1 B4
 +.byte $00
 +.byte $05, $01
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $06, $01  ; beat 2
 +.byte $03, $17, $23, $03            ; v3 G3
 +.byte $00
 +.byte $07, $01
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $08, $01  ; beat 3
 +.byte $03, $17, $27, $03            ; v3 B3
 +.byte $00
 +.byte $09, $01
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +; --- Bars 45-46: D5-C5 (G major) ---
 +.byte $0A, $01  ; beat 1
 +.byte $02, $17, $17, $02            ; v2 G2
 +.byte $01, $17, $36, $05            ; v1 D5
 +.byte $00
 +.byte $0B, $01
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $0C, $01  ; beat 2
 +.byte $03, $17, $27, $03            ; v3 B3
 +.byte $01, $17, $34, $05            ; v1 C5
 +.byte $00
 +.byte $0D, $01
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $0E, $01  ; beat 3
 +.byte $03, $17, $1E, $03            ; v3 D3
 +.byte $00
 +.byte $0F, $01
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $10, $01  ; beat 1
 +.byte $02, $17, $17, $02            ; v2 G2
 +.byte $01, $17, $33, $05            ; v1 B4
 +.byte $00
 +.byte $11, $01
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $12, $01  ; beat 2
 +.byte $03, $17, $27, $03            ; v3 B3
 +.byte $00
 +.byte $13, $01
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $14, $01  ; beat 3
 +.byte $03, $17, $1E, $03            ; v3 D3
 +.byte $00
 +.byte $15, $01
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +; --- Bars 47-48: A4 resolving (D major) ---
 +.byte $16, $01  ; beat 1
 +.byte $02, $17, $12, $02            ; v2 D2
 +.byte $01, $17, $31, $05            ; v1 A4
 +.byte $00
 +.byte $17, $01
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $18, $01  ; beat 2
 +.byte $03, $17, $22, $03            ; v3 F#3
 +.byte $00
 +.byte $19, $01
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $1A, $01  ; beat 3
 +.byte $03, $17, $25, $03            ; v3 A3
 +.byte $00
 +.byte $1B, $01
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $1C, $01  ; beat 1
 +.byte $02, $17, $12, $02            ; v2 D2
 +.byte $01, $17, $2A, $05            ; v1 D4
 +.byte $00
 +.byte $1D, $01
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $1E, $01  ; beat 2
 +.byte $03, $17, $22, $03            ; v3 F#3
 +.byte $00
 +.byte $1F, $01
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $20, $01  ; beat 3
 +.byte $03, $17, $25, $03            ; v3 A3
 +.byte $00
 +.byte $21, $01
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +
 +; ===== THEME A - Final reprise =====
 +; --- Bars 49-50: D major, pickup D4 ---
 +.byte $22, $01  ; beat 1
 +.byte $02, $17, $12, $02            ; v2 D2
 +.byte $00
 +.byte $23, $01
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $24, $01  ; beat 2
 +.byte $03, $17, $22, $03            ; v3 F#3
 +.byte $00
 +.byte $25, $01
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $26, $01  ; beat 3
 +.byte $03, $17, $25, $03            ; v3 A3
 +.byte $00
 +.byte $27, $01
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $28, $01  ; beat 1
 +.byte $02, $17, $12, $02            ; v2 D2
 +.byte $00
 +.byte $29, $01
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $2A, $01  ; beat 2
 +.byte $03, $17, $22, $03            ; v3 F#3
 +.byte $00
 +.byte $2B, $01
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $2C, $01  ; beat 3
 +.byte $03, $17, $25, $03            ; v3 A3
 +.byte $01, $17, $2A, $05            ; v1 D4
 +.byte $00
 +.byte $2D, $01
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +; --- Bars 51-52: D4-F#4, A4 (D major) ---
 +.byte $2E, $01  ; beat 1
 +.byte $02, $17, $12, $02            ; v2 D2
 +.byte $01, $17, $2A, $05            ; v1 D4
 +.byte $00
 +.byte $2F, $01
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $30, $01  ; beat 2
 +.byte $03, $17, $22, $03            ; v3 F#3
 +.byte $01, $17, $2E, $05            ; v1 F#4
 +.byte $00
 +.byte $31, $01
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $32, $01  ; beat 3
 +.byte $03, $17, $25, $03            ; v3 A3
 +.byte $00
 +.byte $33, $01
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $34, $01  ; beat 1
 +.byte $02, $17, $12, $02            ; v2 D2
 +.byte $01, $17, $31, $05            ; v1 A4
 +.byte $00
 +.byte $35, $01
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $36, $01  ; beat 2
 +.byte $03, $17, $22, $03            ; v3 F#3
 +.byte $00
 +.byte $37, $01
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $38, $01  ; beat 3
 +.byte $03, $17, $25, $03            ; v3 A3
 +.byte $00
 +.byte $39, $01
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +; --- Bars 53-54: A4 sustained (A major) ---
 +.byte $3A, $01  ; beat 1
 +.byte $02, $17, $19, $02            ; v2 A2
 +.byte $00
 +.byte $3B, $01
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $3C, $01  ; beat 2
 +.byte $03, $17, $1D, $03            ; v3 C#3
 +.byte $00
 +.byte $3D, $01
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $3E, $01  ; beat 3
 +.byte $03, $17, $20, $03            ; v3 E3
 +.byte $00
 +.byte $3F, $01
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $40, $01  ; beat 1
 +.byte $02, $17, $19, $02            ; v2 A2
 +.byte $00
 +.byte $41, $01
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $42, $01  ; beat 2
 +.byte $03, $17, $1D, $03            ; v3 C#3
 +.byte $00
 +.byte $43, $01
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $44, $01  ; beat 3
 +.byte $03, $17, $20, $03            ; v3 E3
 +.byte $00
 +.byte $45, $01
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +; --- Bars 55-56: Pickup C#4, C#4-E4 (A major) ---
 +.byte $46, $01  ; beat 1
 +.byte $02, $17, $19, $02            ; v2 A2
 +.byte $00
 +.byte $47, $01
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $48, $01  ; beat 2
 +.byte $03, $17, $1D, $03            ; v3 C#3
 +.byte $00
 +.byte $49, $01
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $4A, $01  ; beat 3
 +.byte $03, $17, $20, $03            ; v3 E3
 +.byte $01, $17, $29, $05            ; v1 C#4
 +.byte $00
 +.byte $4B, $01
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $4C, $01  ; beat 1
 +.byte $02, $17, $19, $02            ; v2 A2
 +.byte $01, $17, $29, $05            ; v1 C#4
 +.byte $00
 +.byte $4D, $01
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $4E, $01  ; beat 2
 +.byte $03, $17, $1D, $03            ; v3 C#3
 +.byte $01, $17, $2C, $05            ; v1 E4
 +.byte $00
 +.byte $4F, $01
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $50, $01  ; beat 3
 +.byte $03, $17, $20, $03            ; v3 E3
 +.byte $00
 +.byte $51, $01
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +; --- Bars 57-58: A4 (D major) ---
 +.byte $52, $01  ; beat 1
 +.byte $02, $17, $12, $02            ; v2 D2
 +.byte $01, $17, $31, $05            ; v1 A4
 +.byte $00
 +.byte $53, $01
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $54, $01  ; beat 2
 +.byte $03, $17, $22, $03            ; v3 F#3
 +.byte $00
 +.byte $55, $01
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $56, $01  ; beat 3
 +.byte $03, $17, $25, $03            ; v3 A3
 +.byte $00
 +.byte $57, $01
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $58, $01  ; beat 1
 +.byte $02, $17, $12, $02            ; v2 D2
 +.byte $00
 +.byte $59, $01
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $5A, $01  ; beat 2
 +.byte $03, $17, $22, $03            ; v3 F#3
 +.byte $00
 +.byte $5B, $01
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $5C, $01  ; beat 3
 +.byte $03, $17, $25, $03            ; v3 A3
 +.byte $00
 +.byte $5D, $01
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +; --- Bars 59-60: Pickup D5, D5-F#5 (D major) ---
 +.byte $5E, $01  ; beat 1
 +.byte $02, $17, $12, $02            ; v2 D2
 +.byte $00
 +.byte $5F, $01
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $60, $01  ; beat 2
 +.byte $03, $17, $22, $03            ; v3 F#3
 +.byte $00
 +.byte $61, $01
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $62, $01  ; beat 3
 +.byte $03, $17, $25, $03            ; v3 A3
 +.byte $01, $17, $36, $05            ; v1 D5
 +.byte $00
 +.byte $63, $01
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $64, $01  ; beat 1
 +.byte $02, $17, $12, $02            ; v2 D2
 +.byte $01, $17, $36, $05            ; v1 D5
 +.byte $00
 +.byte $65, $01
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $66, $01  ; beat 2
 +.byte $03, $17, $22, $03            ; v3 F#3
 +.byte $01, $17, $3A, $05            ; v1 F#5
 +.byte $00
 +.byte $67, $01
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $68, $01  ; beat 3
 +.byte $03, $17, $25, $03            ; v3 A3
 +.byte $00
 +.byte $69, $01
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +; --- Bars 61-62: A5 climax! (D major) ---
 +.byte $6A, $01  ; beat 1
 +.byte $02, $17, $12, $02            ; v2 D2
 +.byte $01, $17, $3D, $05            ; v1 A5
 +.byte $00
 +.byte $6B, $01
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $6C, $01  ; beat 2
 +.byte $03, $17, $22, $03            ; v3 F#3
 +.byte $00
 +.byte $6D, $01
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $6E, $01  ; beat 3
 +.byte $03, $17, $25, $03            ; v3 A3
 +.byte $00
 +.byte $6F, $01
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $70, $01  ; beat 1
 +.byte $02, $17, $12, $02            ; v2 D2
 +.byte $01, $17, $3A, $05            ; v1 F#5
 +.byte $00
 +.byte $71, $01
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $72, $01  ; beat 2
 +.byte $03, $17, $22, $03            ; v3 F#3
 +.byte $01, $17, $36, $05            ; v1 D5
 +.byte $00
 +.byte $73, $01
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $74, $01  ; beat 3
 +.byte $03, $17, $25, $03            ; v3 A3
 +.byte $00
 +.byte $75, $01
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +; --- Bars 63-64: Final cadence B4-A4, D4 (D major) ---
 +.byte $76, $01  ; beat 1
 +.byte $02, $17, $17, $02            ; v2 G2
 +.byte $01, $17, $33, $05            ; v1 B4
 +.byte $00
 +.byte $77, $01
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $78, $01  ; beat 2
 +.byte $03, $17, $27, $03            ; v3 B3
 +.byte $01, $17, $31, $05            ; v1 A4
 +.byte $00
 +.byte $79, $01
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $7A, $01  ; beat 3
 +.byte $03, $17, $1E, $03            ; v3 D3
 +.byte $00
 +.byte $7B, $01
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $7C, $01  ; beat 1
 +.byte $02, $17, $12, $02            ; v2 D2
 +.byte $01, $17, $2A, $05            ; v1 D4
 +.byte $00
 +.byte $7D, $01
 +.byte $02, $10                      ; v2 off
 +.byte $00
 +.byte $7E, $01  ; beat 2
 +.byte $03, $17, $22, $03            ; v3 F#3
 +.byte $00
 +.byte $7F, $01
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +.byte $80, $01  ; beat 3
 +.byte $03, $17, $25, $03            ; v3 A3
 +.byte $00
 +.byte $81, $01
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +
 +; --- Final D major chord ---
 +.byte $82, $01  ; D major final
 +.byte $01, $17, $2A, $05            ; v1 D4
 +.byte $02, $17, $12, $02            ; v2 D2
 +.byte $03, $17, $22, $03            ; v3 F#3
 +.byte $00
 +.byte $83, $01  ; hold
 +.byte $00
 +.byte $84, $01  ; hold
 +.byte $00
 +.byte $85, $01  ; hold
 +.byte $00
 +.byte $86, $01  ; hold
 +.byte $00
 +.byte $87, $01  ; hold
 +.byte $00
 +.byte $88, $01  ; hold
 +.byte $00
 +.byte $89, $01  ; hold
 +.byte $00
 +.byte $8A, $01  ; hold
 +.byte $00
 +.byte $8B, $01  ; hold
 +.byte $00
 +.byte $8C, $01  ; hold
 +.byte $00
 +.byte $8D, $01  ; hold
 +.byte $00
 +
 +; --- Silence ---
 +.byte $8E, $01  ; all off
 +.byte $01, $10                      ; v1 off
 +.byte $02, $10                      ; v2 off
 +.byte $03, $10                      ; v3 off
 +.byte $00
 +
 +; --- End of song ---
 +.byte $00, $00                      ; song terminator
 +</codify>
sd/appendix_5_sound_system.1771993984.txt.gz · Last modified: by appledog

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki