Strudelify

Tomfoolery - Spongebob

David Snell

KeyG majorTempo120 bpm
0:00/0:00
// Tomfoolery - Spongebob — David Snell
// 120 bpm, 6/8, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5947448; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 85 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/3)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/2 spreads a riff over 2 bars.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// other · piccolo
const piccolo = note(`<
  A B C ~@3 D@2 E F D@2 E G ~@8 H I J K L ~@11 M N O P M N Q R ~@8 H I J K L ~@3 D@2 E F D@2 E G ~@8 S@4 T C U
>`.pickRestart({
  A: "d6 ~@2 c#6 ~ d6 ~@2 d#6 ~@2 d6 ~ d#6 ~@2", B: "e6 ~@2 d#6 ~ e6 ~@2 f#6 ~@2 f6 ~ f#6 ~@2", C: "g6@3 ~@13",
  D: "d6 ~@4 g6@3 c#6@8", E: "d6 ~@2 e6 ~ f#6 ~@2 g6 ~@2 a6 ~ b6 ~@2", F: "g6 ~@2 f#6 ~ e6 ~@2 d#6@5 d6@3",
  G: "c7 ~@2 b6 ~ a6 ~@2 g6@3 ~@5", H: "d6@3 g6 ~ d6 ~@2 c#6@3 f#6 ~ c#6 ~@2", I: "c6@3 f6 ~ c6 ~@2 b5@3 e6 ~ b5 ~@2",
  J: "a#5@3 d#6 ~ a#5 ~@2 a5@3 d6 ~ a5 ~@2", K: "g#5@3 c#6 ~ c6 ~@2 b5@3 g5 ~ e5 ~@2", L: "d5@3 ~@13",
  M: "g5 ~@2 f#5 ~ g5 ~@2 c6 ~@2 b5 ~ c6 ~@2", N: "e6 ~@2 d#6 ~ e6 ~@2 g6 ~@4 a6 ~@2",
  O: "f#6 ~@4 g6 ~@2 f#6 ~@2 d6 ~ b5 ~@2", P: "f#5", Q: "f#6 ~@2 g6 ~ f#6 ~@2 f6 ~@2 d6 ~ b5 ~@2",
  R: "e6 ~@2 f#6 ~ e6 ~@2 d#6 ~@2 c6 ~ g#5 ~@2", S: "[d6 ~@4 g6@3 c#6@56]/4", T: "c#6@3 d6 ~ d#6 ~@2 e6@3 f6 ~ f#6 ~@2",
  U: "~@3 [c#6,d6] ~@3 g6@2 ~@7", // Dmaj7
})).s("gm_piccolo").gain(0.4)

// chords · trumpet · "B♭ Trumpet"
const trumpet = note(`<
  A B C@11 D C@7 D E F G H I@2 J@2 K L M N K L O P Q@2 R@2 Q@2 S T K L M N K L O P E F G H I@2 J@2 C@7 D C@7 D ~ U@3 V W
  X
>`.pickRestart({
  A: "d4@5 ~@3 c#4@5 ~@3", B: "c4@5 ~@3 c4@5 ~@3", C: "~@5 [b3,d4] ~@7 [b3,d4] ~@2", D: "~@5 c4 ~@2 b3 ~@7",
  E: "a4@5 ~@3 g#4@5 ~@3", F: "g4@5 ~@3 f#4@5 ~@3", G: "f4@5 ~@3 e4@5 ~@3", H: "d#4 ~@7 c#4 ~@7", I: "d4/2",
  J: "[e4 d4@31]/2", K: "g4 ~@2 f#4 ~ g4 ~@2 d4 ~@4 b4 ~@2", L: "a4 ~@4 b4 ~@2 c5 ~@4 e5 ~@2",
  M: "d5 ~@4 b4 ~@2 g4 ~@4 b4 ~@2", N: "d#4@11 ~@5", O: "d5 ~@2 b4 ~ g4 ~@2 d#4 ~@4 d4 ~@2", P: "g4@11 ~@5",
  Q: "~@5 [c4,e4] ~@7 [c4,e4] ~@2", R: "~@5 [d4,f#4] ~@7 [d4,f#4] ~@2", S: "[g4,b4] ~@7 [f#4,a4] ~@7",
  T: "g4 ~@7 d4 ~@7", U: "[d4 ~@4 g4@3 c#4@40]/3", V: "c#5@3 c5 ~ b4 ~@2 a#4@3 a4 ~ g#4 ~@2", W: "g4@3 ~@13",
  X: "~@3 [c#5,d5] ~@3 g4@2 ~@7", // Dmaj7
})).s("gm_trumpet").gain(0.35)

// other · xylophone
const xylophone = note("<A B C ~@19 D E F G H ~@27 D E F G H ~@2 I J@2 K L M J K N ~@15>".pickRestart({
  A: "d6 ~@2 c#6 ~ d6 ~@2 d#6 ~@2 d6 ~ d#6 ~@2", B: "e6 ~@2 d#6 ~ e6 ~@2 f#6 ~@2 f6 ~ f#6 ~@2", C: "g6@3 ~@13",
  D: "d6@3 g6 ~ d6 ~@2 c#6@3 f#6 ~ c#6 ~@2", E: "c6@3 f6 ~ c6 ~@2 b5@3 e6 ~ b5 ~@2",
  F: "a#5@3 d#6 ~ a#5 ~@2 a5@3 d6 ~ a5 ~@2", G: "g#5@3 c#6 ~ c6 ~@2 b5@3 g5 ~ e5 ~@2", H: "d5@3 ~@13",
  I: "~@15 [b5,c#6]", J: "d6 ~@4 g6@3 c#6@8", K: "d6 ~@2 e6 ~ f#6 ~@2 g6 ~@2 a6 ~ b6 ~@2",
  L: "g6 ~@2 f#6 ~ e6 ~@2 d#6@5 d6@3", M: "d6 ~@4 g6@3 c#6@5 ~@2 [b5,c#6]", N: "c7 ~@2 b6 ~ a6 ~@2 g6@3 ~@5",
})).s("gm_xylophone").gain(0.4)

stack(piccolo, trumpet, xylophone)