diff --git a/audio.asm b/audio.asm index fa6d181..89d21f3 100644 --- a/audio.asm +++ b/audio.asm @@ -175,6 +175,7 @@ INCLUDE "audio/music/SavoyCity.asm" INCLUDE "audio/music/FloodedShrine.asm" INCLUDE "audio/music/AlphalithBattle.asm" INCLUDE "audio/music/FortunaSF.asm" +INCLUDE "audio/music/JasperForest.asm" SECTION "Sound Effects", ROMX diff --git a/audio/music/JasperForest.asm b/audio/music/JasperForest.asm new file mode 100644 index 0000000..3a9ce21 --- /dev/null +++ b/audio/music/JasperForest.asm @@ -0,0 +1,609 @@ +; Jasper Forest theme +; 4/4 rhythm, I have no idea about the key except for D being the root. +; A somewhat chaotic and "funny spooky" kind of theme. With a bit of inspiration from the RBY Viridian Forest theme, very random notes(Seriously, I have no idea if this theme has a key or not), +; and *lots* of vibrato, this theme works well in the context of a spoopy forest with dancing skeletons or something like that. +; Honestly it's just really refreshing to do something so wacky after all the recent tryharding in my composing work. +; Composed by LuciShrimp. + + +Music_JasperForest: + channel_count 4 + channel 1, Music_JasperForest_Ch1 + channel 2, Music_JasperForest_Ch2 + channel 3, Music_JasperForest_Ch3 + channel 4, Music_JasperForest_Ch4 + +Music_JasperForest_Ch1: + volume 7, 7 + note_type 12, 11, 2 + octave 2 + tempo 160 + duty_cycle 2 + vibrato 2, 4, 1 + note F#, 2 + note G_, 2 + note G#, 2 + note A_, 2 + note A#, 2 + note B_, 2 + octave 3 + note C_, 2 + note C#, 2 + octave 8 +.mainLoop: + duty_cycle 2 + octave 3 + volume_envelope 11, 2 + tempo 160 + vibrato 2, 4, 1 + note D_, 4 + rest 4 + note C_, 4 + note C#, 4 + octave 2 + note A_, 4 + rest 12 + octave 3 + note C#, 4 + rest 4 + octave 2 + note B_, 4 + note B_, 2 + octave 3 + note C_, 2 + note D#, 4 + rest 4 + note E_, 4 + rest 4 + note D_, 4 + note D_, 2 + octave 2 + note B_, 2 + octave 3 + note C_, 2 + octave 2 + note B_, 2 + octave 3 + note C#, 2 + note D_, 2 + octave 2 + note A_, 4 + rest 12 + octave 3 + note C#, 4 + rest 4 + octave 2 + note B_, 2 + note A#, 2 + note B_, 2 + octave 3 + note C_, 2 + note D#, 4 + rest 4 + note E_, 4 + note F#, 4 + note D_, 4 + note G_, 4 + note G_, 4 + note G_, 4 + note D_, 4 + note F#, 4 + note F#, 2 + note F#, 2 + note F#, 2 + note F#, 2 + note D_, 4 + note F_, 4 + note F_, 2 + note F_, 2 + note F_, 2 + note F_, 2 + note D_, 4 + note E_, 4 + note E_, 4 + note C_, 4 + note D_, 4 + note G_, 4 + note G_, 2 + note G_, 2 + note G_, 2 + note F#, 2 + note D_, 4 + note F#, 4 + note F#, 2 + note F#, 2 + note F#, 2 + note F_, 2 + note D_, 4 + note F_, 4 + note F_, 2 + note F_, 2 + note F_, 2 + note E_, 2 + note D_, 4 + note E_, 4 + note E_, 2 + note D#, 2 + note D_, 2 + note C_, 2 + note_type 12, 12, 2 + octave 4 + vibrato 6, 2, 1 + note D_, 2 + note D_, 4 + octave 3 + note B_, 4 + octave 4 + note E_, 2 + note F#, 4 + note E_, 8 + note D_, 8 + note G_, 2 + note G_, 4 + note F#, 6 + note D_, 1 + note E_, 1 + note F#, 1 + note G_, 1 + note A_, 4 + note G_, 2 + note F#, 2 + note E_, 3 + note D_, 3 + note C#, 2 + note D_, 2 + note D_, 4 + octave 3 + note B_, 4 + octave 4 + note E_, 2 + note F#, 4 + note G_, 8 + note E_, 8 + note G_, 2 + note A_, 4 + note F#, 6 + note D_, 1 + note E_, 1 + note F#, 1 + note G_, 1 + note B_, 4 + note A_, 2 + note B_, 2 + note G_, 3 + note F#, 3 + note E_, 2 + octave 8 + sound_loop 0, .mainLoop + +Music_JasperForest_Ch2: + note_type 12, 2, 4 + octave 3 + vibrato 1, 2, 1 + duty_cycle 3 + note E_, 2 + note F_, 2 + volume_envelope 3, 4 + note F#, 2 + volume_envelope 4, 4 + note G_, 2 + volume_envelope 5, 4 + note G#, 2 + note A_, 2 + volume_envelope 6, 4 + note A#, 2 + note B_, 2 + octave 8 +.mainLoop: + duty_cycle 3 + vibrato 2, 2, 1 + octave 4 + volume_envelope 7, 4 + note C_, 4 + rest 12 + octave 3 + note A_, 4 + rest 12 + note A#, 4 + rest 12 + note B_, 4 + rest 12 + octave 4 + note C_, 4 + rest 2 + note C_, 4 + rest 6 + octave 3 + note A_, 4 + rest 2 + note A_, 4 + rest 6 + note A#, 4 + rest 2 + note A#, 4 + rest 6 + note B_, 4 + rest 2 + note B_, 4 + rest 2 + octave 4 + note C#, 4 + note D_, 4 + rest 12 + octave 3 + note B_, 4 + rest 4 + octave 4 + note E_, 4 + rest 4 + note C_, 4 + rest 12 + octave 3 + note A#, 4 + octave 4 + note D_, 4 + octave 3 + note A_, 4 + octave 4 + note C#, 4 + note D_, 4 + rest 12 + octave 3 + note B_, 4 + rest 4 + octave 4 + note E_, 4 + rest 4 + note C_, 4 + rest 12 + octave 3 + note A#, 4 + octave 4 + note D_, 4 + octave 3 + note A_, 4 + octave 4 + note C#, 4 + rest 2 + vibrato 6, 2, 1 + volume_envelope 5, 2 + duty_cycle 2 + note D_, 2 + note D_, 4 + octave 3 + note B_, 4 + octave 4 + note E_, 2 + note F#, 4 + note E_, 8 + note D_, 8 + note G_, 2 + note G_, 4 + note F#, 6 + note D_, 1 + note E_, 1 + note F#, 1 + note G_, 1 + note A_, 4 + note G_, 2 + note F#, 2 + note E_, 3 + note D_, 3 + note C#, 2 + note D_, 6 + octave 3 + note B_, 4 + octave 4 + note E_, 2 + note F#, 4 + note G_, 8 + note E_, 8 + note G_, 2 + note A_, 4 + note F#, 6 + note D_, 1 + note E_, 1 + note F#, 1 + note G_, 1 + note B_, 4 + note A_, 2 + note B_, 2 + note G_, 3 + note F#, 3 + octave 8 + note_type 12, 15, 8 + sound_loop 0, .mainLoop + +Music_JasperForest_Ch3: + note_type 12, 2, 2 + octave 2 + note D_, 4 + note F#, 4 + note D_, 2 + note C#, 2 + octave 1 + note B_, 2 + octave 2 + note C#, 2 + octave 8 +.mainLoop: + octave 2 + volume_envelope 2, 2 +.loop1: + volume_envelope 2, 2 + note D_, 2 + volume_envelope 3, 2 + note D_, 1 + rest 1 + volume_envelope 2, 2 + note F#, 2 + volume_envelope 3, 2 + note F#, 1 + rest 1 + volume_envelope 2, 2 + note D_, 2 + volume_envelope 3, 2 + note D_, 1 + rest 1 + volume_envelope 2, 2 + note F_, 2 + volume_envelope 3, 2 + note F_, 1 + rest 1 + volume_envelope 2, 2 + note D_, 2 + volume_envelope 3, 2 + note D_, 1 + rest 1 + volume_envelope 2, 2 + note F#, 2 + volume_envelope 3, 2 + note F#, 1 + rest 1 + volume_envelope 2, 2 + note D_, 2 + volume_envelope 3, 2 + note D_, 1 + rest 1 + volume_envelope 2, 2 + note F_, 2 + volume_envelope 3, 2 + note F_, 1 + rest 1 + volume_envelope 2, 2 + note D_, 2 + volume_envelope 3, 2 + note D_, 1 + rest 1 + volume_envelope 2, 2 + note G_, 2 + volume_envelope 3, 2 + note G_, 1 + rest 1 + volume_envelope 2, 2 + note D_, 2 + volume_envelope 3, 2 + note D_, 1 + rest 1 + volume_envelope 2, 2 + note A_, 2 + volume_envelope 3, 2 + note A_, 1 + rest 1 + volume_envelope 2, 2 + note G_, 2 + volume_envelope 3, 2 + note G_, 1 + rest 1 + volume_envelope 2, 2 + note F#, 2 + volume_envelope 3, 2 + note F#, 1 + rest 1 + volume_envelope 2, 2 + note E_, 2 + volume_envelope 3, 2 + note E_, 1 + rest 1 + volume_envelope 2, 2 + note C_, 2 + volume_envelope 3, 2 + note C_, 1 + rest 1 + sound_loop 4, .loop1 + note_type 12, 3, 2 + octave 2 + note D_, 2 + rest 2 + note F#, 2 + rest 2 + note D_, 2 + rest 2 + note F_, 2 + rest 2 + note D_, 2 + rest 2 + note F#, 2 + rest 2 + note D_, 2 + rest 2 + note F_, 2 + rest 2 + note D_, 2 + rest 2 + note G_, 2 + rest 2 + note D_, 2 + rest 2 + note A_, 2 + rest 2 + note G_, 2 + rest 2 + note F#, 2 + rest 2 + note E_, 2 + rest 2 + note C_, 2 + rest 2 + volume_envelope 2, 2 + note D_, 2 + volume_envelope 3, 2 + note D_, 1 + rest 1 + volume_envelope 2, 2 + note F#, 2 + volume_envelope 3, 2 + note F#, 1 + rest 1 + volume_envelope 2, 2 + note D_, 2 + volume_envelope 3, 2 + note D_, 1 + rest 1 + volume_envelope 2, 2 + note F_, 2 + volume_envelope 3, 2 + note F_, 1 + rest 1 + volume_envelope 2, 2 + note D_, 2 + volume_envelope 3, 2 + note D_, 1 + rest 1 + volume_envelope 2, 2 + note E_, 2 + volume_envelope 3, 2 + note E_, 1 + rest 1 + volume_envelope 2, 2 + note D_, 2 + volume_envelope 3, 2 + note D_, 1 + rest 1 + volume_envelope 2, 2 + note D#, 2 + volume_envelope 3, 2 + note D#, 1 + rest 1 + volume_envelope 2, 2 + note D_, 2 + volume_envelope 3, 2 + note D_, 1 + rest 1 + volume_envelope 2, 2 + note G_, 2 + volume_envelope 3, 2 + note G_, 1 + rest 1 + volume_envelope 2, 2 + note D_, 2 + volume_envelope 3, 2 + note D_, 1 + rest 1 + volume_envelope 2, 2 + note A_, 2 + volume_envelope 3, 2 + note A_, 1 + rest 9 + octave 1 + note A#, 2 + note B_, 2 + octave 2 + note C_, 2 + note C#, 2 + volume_envelope 2, 2 + octave 8 + sound_loop 0, .mainLoop + +Music_JasperForest_Ch4: + toggle_noise 0 + drum_speed 12 + octave 6 + toggle_noise + toggle_noise 3 + drum_note 8, 4 + drum_note 8, 4 + drum_note 8, 2 + drum_note 8, 2 + drum_note 8, 1 + drum_note 8, 1 + drum_note 8, 1 + drum_note 8, 1 + octave 8 +.mainLoop: + octave 6 + toggle_noise + toggle_noise 3 +.loop1: + drum_note 8, 4 + drum_note 8, 4 + drum_note 8, 4 + drum_note 8, 2 + drum_note 9, 2 + drum_note 8, 4 + drum_note 8, 4 + drum_note 8, 4 + drum_note 8, 1 + drum_note 9, 1 + drum_note 10, 1 + drum_note 9, 1 + drum_note 8, 4 + drum_note 8, 1 + drum_note 8, 3 + drum_note 8, 2 + drum_note 8, 2 + drum_note 9, 1 + drum_note 8, 1 + drum_note 9, 1 + drum_note 8, 1 + drum_note 8, 2 + drum_note 8, 4 + drum_note 9, 2 + drum_note 8, 2 + drum_note 8, 2 + octave 7 + drum_note 1, 1 + drum_note 2, 1 + octave 6 + drum_note 10, 1 + octave 7 + drum_note 2, 1 + octave 6 + sound_loop 4, .loop1 + rest 16 + rest 16 + rest 16 + rest 16 + drum_note 8, 4 + drum_note 8, 4 + drum_note 8, 4 + drum_note 8, 2 + drum_note 9, 2 + drum_note 8, 4 + drum_note 8, 4 + drum_note 8, 4 + drum_note 8, 1 + drum_note 9, 1 + drum_note 10, 1 + drum_note 9, 1 + drum_note 8, 4 + drum_note 8, 1 + drum_note 8, 3 + drum_note 8, 2 + drum_note 8, 2 + drum_note 9, 1 + drum_note 8, 1 + drum_note 9, 1 + drum_note 8, 1 + drum_note 8, 2 + drum_note 8, 4 + drum_note 9, 2 + drum_note 8, 2 + drum_note 8, 2 + drum_note 12, 1 + drum_note 12, 1 + drum_note 10, 1 + drum_note 12, 1 + octave 8 + drum_speed 12 + sound_loop 0, .mainLoop diff --git a/audio/music_pointers.asm b/audio/music_pointers.asm index 4e77877..ea69d68 100644 --- a/audio/music_pointers.asm +++ b/audio/music_pointers.asm @@ -127,4 +127,5 @@ Music: dba Music_FloodedShrine dba Music_AlphalithBattle dba Music_FortunaSF + dba Music_JasperForest assert_table_length NUM_MUSIC_SONGS diff --git a/constants/music_constants.asm b/constants/music_constants.asm index 3ad9f24..82c300e 100644 --- a/constants/music_constants.asm +++ b/constants/music_constants.asm @@ -125,6 +125,7 @@ const MUSIC_FLOODEDSHRINE ; 78 const MUSIC_ALPHALITHBATTLE ; 79 const MUSIC_FORTUNASF ; 7a + const MUSIC_JASPERFOREST ; 7b DEF NUM_MUSIC_SONGS EQU const_value ; GetMapMusic picks music for this value (see home/map.asm)