Skip to content

Instantly share code, notes, and snippets.

@moduscreate
Last active November 22, 2017 17:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save moduscreate/f3c16a41b448bda1b32ec0f8979c22ce to your computer and use it in GitHub Desktop.
Save moduscreate/f3c16a41b448bda1b32ec0f8979c22ce to your computer and use it in GitHub Desktop.
#ifndef SONG_H
#define SONG_H
#define Song const uint8_t PROGMEM
Song music[] = {
0x14, // Number of tracks
0x00, 0x00, // Address of track 0
0x27, 0x00, // Address of track 1
0x42, 0x00, // Address of track 2
0x43, 0x00, // Address of track 3
0x50, 0x00, // Address of track 4
0x56, 0x00, // Address of track 5
0x5d, 0x00, // Address of track 6
0x6e, 0x00, // Address of track 7
0x77, 0x00, // Address of track 8
0x80, 0x00, // Address of track 9
0x93, 0x00, // Address of track 10
0x9c, 0x00, // Address of track 11
0xa5, 0x00, // Address of track 12
0xb2, 0x00, // Address of track 13
0xbf, 0x00, // Address of track 14
0xd0, 0x00, // Address of track 15
0xe1, 0x00, // Address of track 16
0xf0, 0x00, // Address of track 17
0x12, 0x01, // Address of track 18
0x1f, 0x01, // Address of track 19
0x00, // Channel 0 entry track
0x01, // Channel 1 entry track
0x02, // Channel 2 entry track
0x03, // Channel 3 entry track
//"Track channel 0"
0x40, 64, // FX: SET VOLUME: volume = 64
0x9D, 22, // FX: SET TEMPO: tempo = 22
0xFD, 2, 6, // REPEAT: count = 2 + 1 / track = 6
0xFC, 7, // GOTO track 7
0xFD, 2, 6, // REPEAT: count = 2 + 1 / track = 6
0xFC, 8, // GOTO track 8
0xFC, 10, // GOTO track 10
0xFC, 11, // GOTO track 11
0xFC, 10, // GOTO track 10
0xFC, 11, // GOTO track 11
0xFC, 10, // GOTO track 10
0xFC, 12, // GOTO track 12
0xFC, 10, // GOTO track 10
0xFC, 11, // GOTO track 11
0xFC, 10, // GOTO track 10
0xFC, 11, // GOTO track 11
0xFC, 10, // GOTO track 10
0xFC, 13, // GOTO track 13
0x9F, // FX: STOP CURRENT CHANNEL
//"Track channel 1"
0x40, 50, // FX: SET VOLUME: volume = 50
0xFD, 11, 14, // REPEAT: count = 11 + 1 / track = 14
0xFD, 3, 15, // REPEAT: count = 3 + 1 / track = 15
0xFD, 11, 14, // REPEAT: count = 11 + 1 / track = 14
0xFD, 3, 16, // REPEAT: count = 3 + 1 / track = 16
0xFD, 9, 14, // REPEAT: count = 9 + 1 / track = 14
0xFD, 1, 15, // REPEAT: count = 1 + 1 / track = 15
0xFD, 9, 14, // REPEAT: count = 9 + 1 / track = 14
0xFD, 1, 16, // REPEAT: count = 1 + 1 / track = 16
0x9F, // FX: STOP CURRENT CHANNEL
//"Track channel 2"
0x9F, // FX: STOP CURRENT CHANNEL
//"Track channel 3"
0x40, 64, // FX: SET VOLUME: volume = 64
0xFD, 6, 9, // REPEAT: count = 6 + 1 / track = 9
0xFC, 17, // GOTO track 17
0xFD, 10, 18, // REPEAT: count = 10 + 1 / track = 18
0xFC, 19, // GOTO track 19
0x9F, // FX: STOP CURRENT CHANNEL
//"Track tick"
0x40, 32, // FX: SET VOLUME: volume = 32
0x9F + 1, // DELAY: ticks = 1
0x40, 0, // FX: SET VOLUME: volume = 0
0xFE, // RETURN
//"Track snare"
0x40, 32, // FX: SET VOLUME: volume = 32
0x41, -16, // FX: VOLUME SLIDE ON: steps = -16
0x9F + 2, // DELAY: ticks = 2
0x43, // FX: VOLUME SLIDE OFF
0xFE, // RETURN
//"Track ld 1"
0x00 + 25, // NOTE ON: note = 25
0x9F + 5, // DELAY: ticks = 5
0x00 + 0, // NOTE ON: note = 0
0x9F + 4, // DELAY: ticks = 4
0x00 + 25, // NOTE ON: note = 25
0x9F + 3, // DELAY: ticks = 3
0x00 + 0, // NOTE ON: note = 0
0x9F + 1, // DELAY: ticks = 1
0x00 + 27, // NOTE ON: note = 27
0x9F + 4, // DELAY: ticks = 4
0x00 + 0, // NOTE ON: note = 0
0x9F + 4, // DELAY: ticks = 4
0x00 + 28, // NOTE ON: note = 28
0x9F + 7, // DELAY: ticks = 7
0x00 + 0, // NOTE ON: note = 0
0x9F + 4, // DELAY: ticks = 4
0xFE, // RETURN
//"Track ld 2"
0x00 + 30, // NOTE ON: note = 30
0x9F + 8, // DELAY: ticks = 8
0x00 + 0, // NOTE ON: note = 0
0x9F + 4, // DELAY: ticks = 4
0x00 + 32, // NOTE ON: note = 32
0x9F + 8, // DELAY: ticks = 8
0x00 + 0, // NOTE ON: note = 0
0x9F + 12, // DELAY: ticks = 12
0xFE, // RETURN
//"Track ld 3"
0x00 + 35, // NOTE ON: note = 35
0x9F + 8, // DELAY: ticks = 8
0x00 + 0, // NOTE ON: note = 0
0x9F + 5, // DELAY: ticks = 5
0x00 + 32, // NOTE ON: note = 32
0x9F + 11, // DELAY: ticks = 11
0x00 + 0, // NOTE ON: note = 0
0x9F + 8, // DELAY: ticks = 8
0xFE, // RETURN
//"Track perc"
0xFC, 4, // GOTO track 4
0x9F + 7, // DELAY: ticks = 7
0xFC, 4, // GOTO track 4
0x9F + 7, // DELAY: ticks = 7
0xFC, 4, // GOTO track 4
0x9F + 7, // DELAY: ticks = 7
0xFC, 4, // GOTO track 4
0x9F + 3, // DELAY: ticks = 3
0xFC, 4, // GOTO track 4
0x9F + 1, // DELAY: ticks = 1
0xFC, 4, // GOTO track 4
0x9F + 1, // DELAY: ticks = 1
0xFE, // RETURN
//"Track ld 4"
0x00 + 25, // NOTE ON: note = 25
0x9F + 6, // DELAY: ticks = 6
0x00 + 0, // NOTE ON: note = 0
0x9F + 2, // DELAY: ticks = 2
0x00 + 35, // NOTE ON: note = 35
0x9F + 7, // DELAY: ticks = 7
0x00 + 0, // NOTE ON: note = 0
0x9F + 1, // DELAY: ticks = 1
0xFE, // RETURN
//"Track LD 5"
0x00 + 25, // NOTE ON: note = 25
0x9F + 7, // DELAY: ticks = 7
0x00 + 0, // NOTE ON: note = 0
0x9F + 1, // DELAY: ticks = 1
0x00 + 37, // NOTE ON: note = 37
0x9F + 7, // DELAY: ticks = 7
0x00 + 0, // NOTE ON: note = 0
0x9F + 1, // DELAY: ticks = 1
0xFE, // RETURN
//"Track ld 6"
0x00 + 23, // NOTE ON: note = 23
0x9F + 3, // DELAY: ticks = 3
0x00 + 0, // NOTE ON: note = 0
0x9F + 2, // DELAY: ticks = 2
0x00 + 28, // NOTE ON: note = 28
0x9F + 6, // DELAY: ticks = 6
0x00 + 0, // NOTE ON: note = 0
0x9F + 2, // DELAY: ticks = 2
0x00 + 27, // NOTE ON: note = 27
0x9F + 2, // DELAY: ticks = 2
0x00 + 0, // NOTE ON: note = 0
0x9F + 1, // DELAY: ticks = 1
0xFE, // RETURN
//"Track LD 8"
0x00 + 23, // NOTE ON: note = 23
0x9F + 3, // DELAY: ticks = 3
0x00 + 0, // NOTE ON: note = 0
0x9F + 2, // DELAY: ticks = 2
0x00 + 40, // NOTE ON: note = 40
0x9F + 5, // DELAY: ticks = 5
0x00 + 0, // NOTE ON: note = 0
0x9F + 2, // DELAY: ticks = 2
0x00 + 39, // NOTE ON: note = 39
0x9F + 2, // DELAY: ticks = 2
0x00 + 0, // NOTE ON: note = 0
0x9F + 2, // DELAY: ticks = 2
0xFE, // RETURN
//"Track Bass C"
0x00 + 13, // NOTE ON: note = 13
0x9F + 1, // DELAY: ticks = 1
0x00 + 0, // NOTE ON: note = 0
0x9F + 1, // DELAY: ticks = 1
0x00 + 25, // NOTE ON: note = 25
0x9F + 1, // DELAY: ticks = 1
0x00 + 0, // NOTE ON: note = 0
0x9F + 1, // DELAY: ticks = 1
0x00 + 13, // NOTE ON: note = 13
0x9F + 1, // DELAY: ticks = 1
0x00 + 0, // NOTE ON: note = 0
0x9F + 1, // DELAY: ticks = 1
0x00 + 25, // NOTE ON: note = 25
0x9F + 1, // DELAY: ticks = 1
0x00 + 0, // NOTE ON: note = 0
0x9F + 1, // DELAY: ticks = 1
0xFE, // RETURN
//"Track BASS A#"
0x00 + 11, // NOTE ON: note = 11
0x9F + 1, // DELAY: ticks = 1
0x00 + 0, // NOTE ON: note = 0
0x9F + 1, // DELAY: ticks = 1
0x00 + 23, // NOTE ON: note = 23
0x9F + 1, // DELAY: ticks = 1
0x00 + 0, // NOTE ON: note = 0
0x9F + 1, // DELAY: ticks = 1
0x00 + 11, // NOTE ON: note = 11
0x9F + 1, // DELAY: ticks = 1
0x00 + 0, // NOTE ON: note = 0
0x9F + 1, // DELAY: ticks = 1
0x00 + 23, // NOTE ON: note = 23
0x9F + 1, // DELAY: ticks = 1
0x00 + 0, // NOTE ON: note = 0
0x9F + 1, // DELAY: ticks = 1
0xFE, // RETURN
//"Track BASS D"
0x00 + 15, // NOTE ON: note = 15
0x9F + 1, // DELAY: ticks = 1
0x00 + 27, // NOTE ON: note = 27
0x9F + 1, // DELAY: ticks = 1
0x00 + 0, // NOTE ON: note = 0
0x9F + 2, // DELAY: ticks = 2
0x00 + 15, // NOTE ON: note = 15
0x9F + 1, // DELAY: ticks = 1
0x00 + 0, // NOTE ON: note = 0
0x9F + 1, // DELAY: ticks = 1
0x00 + 27, // NOTE ON: note = 27
0x9F + 1, // DELAY: ticks = 1
0x00 + 0, // NOTE ON: note = 0
0x9F + 1, // DELAY: ticks = 1
0xFE, // RETURN
//"Track PERC2"
0xFC, 4, // GOTO track 4
0x9F + 3, // DELAY: ticks = 3
0xFC, 4, // GOTO track 4
0x9F + 1, // DELAY: ticks = 1
0xFC, 4, // GOTO track 4
0x9F + 1, // DELAY: ticks = 1
0xFC, 4, // GOTO track 4
0x9F + 3, // DELAY: ticks = 3
0xFC, 4, // GOTO track 4
0x9F + 3, // DELAY: ticks = 3
0xFC, 4, // GOTO track 4
0x9F + 3, // DELAY: ticks = 3
0xFC, 4, // GOTO track 4
0x9F + 3, // DELAY: ticks = 3
0xFC, 4, // GOTO track 4
0x9F + 1, // DELAY: ticks = 1
0xFC, 4, // GOTO track 4
0x9F + 1, // DELAY: ticks = 1
0xFC, 4, // GOTO track 4
0x9F + 1, // DELAY: ticks = 1
0xFC, 4, // GOTO track 4
0x9F + 1, // DELAY: ticks = 1
0xFE, // RETURN
//"Track PERC3"
0xFC, 5, // GOTO track 5
0x9F + 2, // DELAY: ticks = 2
0xFC, 4, // GOTO track 4
0x9F + 3, // DELAY: ticks = 3
0xFC, 5, // GOTO track 5
0x9F + 2, // DELAY: ticks = 2
0xFC, 4, // GOTO track 4
0x9F + 3, // DELAY: ticks = 3
0xFE, // RETURN
//"Track PERC 4"
0xFC, 5, // GOTO track 5
0x9F + 2, // DELAY: ticks = 2
0xFC, 5, // GOTO track 5
0xFC, 4, // GOTO track 4
0x9F + 1, // DELAY: ticks = 1
0xFC, 5, // GOTO track 5
0xFC, 4, // GOTO track 4
0x9F + 1, // DELAY: ticks = 1
0xFC, 5, // GOTO track 5
0xFC, 4, // GOTO track 4
0xFC, 4, // GOTO track 4
0xFE, // RETURN
};
#endif
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment