Strudelify

Veggie Tales Theme Song

Mike Nowraki

KeyG majorTempo145 bpm
0:00/0:00
// Veggie Tales Theme Song — Mike Nowraki
// 145 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Transcription provider: pdmx. https://musescore.com/score/5936138; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 50 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(145/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once · [...]/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 · trombone
const trombone = note("<~@6 A@3 B@4 C@2 ~@4 D E F G D E F H I J K L M N O L M N O P Q R@2 S@6 T ~>".pickRestart({
  A: "[~@3 g3@9 g3@8 g3@9 g3@9 g3@8 a3@9 a#3@17]/3",
  B: "[g3@9 g3@9 g3@9 g3@8 g3@9 g3@6 a3@2 ~ g3@4 e3@13 d4@9 d4@8 d4@9]/4", C: "[d4@9 d4@9 e4@8 f4@17 ~@5]/2",
  D: "f3@2 f3 f3@2 e3 a#3@2", E: "f3@2 f3 f3@2 f3 a3@2", F: "e3@2 e3 e3@2 f3 e3@2", G: "f3@2 f3 f3@2 a3 a3@2",
  H: "f3 e3 c3 ~", I: "~@3 a#3@3 ~@3 a#3@3 ~@3 a#3!2 ~@4 a#3@3", J: "~@3 a3@3 ~@3 a3@3 ~@3 a3!2 ~@4 a3@3",
  K: "~@3 e3@3 ~@3 e3@3 ~@3 e3!2 ~@4 e3@3", L: "a3 f3 ~ f3@3 ~@18", M: "~@3 d4@3 ~@3 d4@3 ~@3 d4!2 ~@4 d4@3",
  N: "~@3 c4@3 ~@3 c4@3 ~@3 c4!2 ~@4 c4@3", O: "~@3 g3@3 ~@3 g3@3 ~@3 g3!2 ~@4 g3@3", P: "a3 f3 ~ f3@3 ~@15 a#3@3",
  Q: "c4@2 c4 c4@2 c4 c4@2 c4 c4@2 c4@2 c4 c4@2 c4 c4@2 c4@3 d#4@2",
  R: "[~ d4@2 a#3 a#3@3 ~@16 a#3@3 c4 c4@2 c4 c4@2 c4@2 c4 c4@2 c4 c4@2 c4 c4@2 c4 c4@3 ~]/2",
  S: "[d#4@3 ~ a#3@2 a#3@3 ~@12 f3@6 ~ f3@6 f3@6 g3@6 g3@6 a3@22 g3@3 a3@22 g3@3 a3@9 g3@3 ~ a3@9 g3@3 a3@3 g3@3 a3@3 g3@3 a3@3 g3@2, ~@3 d4@2 ~@139]/6",
  T: "~@2 a3@3 g3@3 a3@3 ~@13",
})).s("gm_trombone").gain(0.3)

// other · trombone
const trombone_2 = note("<~@9 A@4 B@2 ~@4 C D E F C D E G H I J K L M N K L M N O P Q@2 R@6 S ~>".pickRestart({
  A: "[c4@9 c4@9 c4@9 c4@8 c4@9 c4@6 d4@2 ~ c4@4 a3@13 g3@9 g3@8 g3@9]/4", B: "[g3@9 g3@9 a3@8 a#3@17 ~@5]/2",
  C: "d3@2 d3 d3@2 e3 f3@2", D: "c3@2 c3 c3@2 d3 f3@2", E: "c3@2 c3 c3@2 c3 c3@2", F: "c3@2 c3 c3@2 f3 f3@2",
  G: "c3!2 a2 ~", H: "~@3 d4@3 ~@3 d4@3 ~@3 d4!2 ~@4 d4@3", I: "~@3 c4@3 ~@3 c4@3 ~@3 c4!2 ~@4 c4@3",
  J: "~@3 g3@3 ~@3 g3@3 ~@3 g3!2 ~@4 g3@3", K: "a3 f3 ~ f3@3 ~@18", L: "~@3 a#3@3 ~@3 a#3@3 ~@3 a#3!2 ~@4 a#3@3",
  M: "~@3 a3@3 ~@3 a3@3 ~@3 a3!2 ~@4 a3@3", N: "~@3 e3@3 ~@3 e3@3 ~@3 e3!2 ~@4 e3@3", O: "a3 f3 ~ f3@3 ~@15 f3@3",
  P: "g3@2 g3 g3@2 g3 g3@2 g3 g3@2 g3@2 g3 g3@2 g3 g3@2 g3@3 a#3@2",
  Q: "[~ a3@2 f3 f3@3 ~@16 f3@3 g3 g3@2 g3 g3@2 g3@2 g3 g3@2 g3 g3@2 g3 g3@2 g3 g3@3 ~]/2",
  R: "[a#3@3 ~ f3@2 f3@3 ~@12 f3@6 ~ f3@6 f3@6 g3@6 c3@6 f3@22 e3@3 f3@22 e3@3 f3@9 e3@3 ~ f3@9 e3@3 f3@3 e3@3 f3@3 e3@3 f3@3 e3@2, ~@3 a3@2 ~@139]/6",
  S: "~@2 f3@3 e3@3 f3@3 ~@13",
})).s("gm_trombone").gain(0.3)

// bass · tuba
const bass = note(`<
  A B C D@2 E F G@2 H I J@2 K@3 ~@2 L M N O P Q R S T U V S W Q X S Y Q X S Z AA AB AC AD AE@3 AF AG AH@2
>`.pickRestart({
  A: "~@2 f2 ~ c2 ~", B: "~ f2@4 ~@5 c2@4 ~@4 f2@4 ~@2", C: "~@3 c2@4 ~@5 f2@2 ~@2 c2@2 ~@3 d2@2 ~",
  D: "[~ e2@2 ~@2 f2@4 ~@5 c2@4 ~@5 f2@4 ~@4 c2@4 ~@5 f2@4 ~@4]/2", E: "~ c2@4 ~@4 f2@4 ~@5 c2@4 ~@2",
  F: "~@3 g2@4 ~@5 c2@4 ~@4 g2@4", G: "[~@5 c2@4 ~@5 g2@4 ~@4 c2@4 ~@5 g2@2 ~@2 c2@2 ~@3 d2@2 ~@2 e2@2 ~@2]/2",
  H: "f2@4 ~@5 c2@4 ~@5 f2@4 ~@2", I: "~@3 c2@4 ~@4 f2@4 ~@5 c2@4", J: "[~@5 f2@4 ~@4 c2@4 ~@5 a#2@9 a2@8 g2@9]/2",
  K: "[f2@9 e2@9 d2@8 c2 ~ c#2 ~@2 c2@30 ~@11]/3", L: "~@15 f2 ~@2 g2 ~@2 a2 ~@2",
  M: "a#2@3 ~@3 f2@3 ~@3 a#2@3 ~@3 a2 ~@2 g2 ~@2", N: "f2@3 ~@3 c2@3 ~@3 f2@3 ~@3 a2 ~@2 a#2 ~@2",
  O: "c3 ~ g2 ~ c3 ~ g2 ~", P: "a2 ~ f2 ~ e2 ~ d2 ~", Q: "a#2 ~ f2 ~ a#2 ~ f2 ~",
  R: "a2@3 ~@3 f2@3 ~@3 a2@3 ~@3 f2 ~@2 e2 ~@2", S: "g2 ~ e2 ~ g2 ~ e2 ~", T: "a2 ~ g2 ~ f2 ~@3",
  U: "a#2@3 ~@3 f2@3 ~@3 a#2@3 ~@3 f2 ~@2 g2 ~@2", V: "a2@3 ~@3 f2@3 ~@3 a2@3 ~@3 g2 ~@2 f2 ~@2",
  W: "f2@3 ~@3 c3@3 ~@3 f2!2 ~@2 f2 ~ g2 ~@2 a2 ~@2", X: "a2 ~ f2 ~ a2 ~ f2 ~",
  Y: "f2@3 ~@3 c3@3 ~@3 f2 ~@2 f2 ~@2 g2 ~@2 a2 ~@2", Z: "f2@3 ~@3 c3@3 ~@3 a#2 ~@2 a#2 ~@2 a2 ~@2 g2@2 ~",
  AA: "g2@3 ~@3 e2@3 ~@4 g2@3 ~@3 e2@3 ~@2", AB: "~ a2@3 ~@3 f2@3 ~@3 a2@3 ~@4 f2@3 ~",
  AC: "~@2 g2@3 ~@3 e2@3 ~@3 g2@3 ~@3 e2@3 ~", AD: "~ a2 ~ f2 ~ a2 ~ f2",
  AE: "[~@4 a#2@6 a#2@6 c3@6 c3@6 c3@22 a#2@3 f3@2 ~ d3@2 ~ c3@2 ~@2 a2@2 ~ f3@2 ~ d3@2 ~]/3",
  AF: "c3@2 ~ a2@2 ~ f3@2 ~ d3@2 ~ c3@2 ~ a2@2 ~@2 f3@2 ~ d3@2",
  AG: "~ c3@2 ~ a2@2 ~ f3@2 ~ d3@2 ~ c3@2 ~ a2@2 ~ f3@2 ~ d3@2", AH: "[~@2 c3@2 ~ a2@2 ~ [f2,f3]@2 ~@10 f1@6 ~@22]/2",
})).s("gm_tuba").gain(0.48)

stack(trombone, trombone_2, bass)