Strudelify

ducktales theme

Mark Mueller

KeyF♯ majorTempo176 bpm
0:00/0:00
// ducktales theme — Mark Mueller
// 176 bpm, 4/4, key F# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/6421427; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 44 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(176/4)

// 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 · trumpet · "B♭ Trumpet"
const trumpet = note("<~@11 A@3 B C@3 D@4 B ~@4 E F G H I@3 J K@3 J L M@2 H N>".pickRestart({
  A: "[~@10 b3@2 c#4@2 e4@27 e3 ~ f#3 g#3 b3 ~ c#4]/3", B: "e4!2 ~@2",
  C: "[~@4 e3@4 g3 g#3 b3@2 c#4@2 e4@26 ~@2 g4@2 f#4@4]/3",
  D: "[e4@4 e4@4 ~@2 b3@2 c#4@2 e4@4 ~@6 g4 f#4 ~ e4 d4@2 e4@26 ~@2 b3@2 c#4@4]/4", E: "~@7 f#3", F: "a#3 c#4@7",
  G: "~ f#3 ~ g#3 a3 a#3 ~ b3 c#4 f#3 ~ g#3 a#3 c#4 ~ d#4", H: "f#4!2 ~@2",
  I: "[~@4 f#3@4 a3 a#3 c#4@2 d#4@2 f#4@26 ~@2 a4@2 g#4@4]/3", J: "f#4@2 f#4@2 ~ c#4 d#4 f#4",
  K: "[~@8 a4 g#4 ~ f#4 e4@2 f#4@26 ~@2 c#4@2 d#4@4]/3", L: "~ f#4 g#4 f#4 a#4 c#5@3",
  M: "[~@2 f#4@3 f#4 g#4 b4@6 f#4 g#4@2]/2", N: "~ f#5 ~@2",
})).s("gm_trumpet").gain(0.17)

// chords · piano · "Grand Piano"
const piano = note(`<
  ~@2 A B C@2 A B D@2 E F G H I J K L I J K L I ~ M N O P Q R S T U V S T U W S X U V S Y
>`.pickRestart({
  A: "[b3,e4] [e4,g#4] [g#4,b4] [a4,c#5]", B: "[b4,d5]@2 [b4,d5] [a4,c#5]@2 [g#4,b4] [f#4,a4]@2",
  C: "[c#4,e4,a4]@3 [b3,e4,g#4]@4 ~", D: "[e4,a4,d5]@3 [e4,a4,c#5]@4 ~", E: "~ [c#4,f#4] [f#4,a4] [a4,c#5]",
  F: "[a4,c#5]@3 [f#4,b4]@4 ~", G: "~ [a4,c#5] [c#5,e5] [c#5,f#5]", H: "[e5,g#5]@3 [d#5,f#5]@4 ~",
  I: "[e4,g#4,b4,e5]@2 [e4,g#4,b4,e5]@2 ~ e4 b5@2", J: "g#5 ~@3", K: "[g4,c5,e5] [g4,c5,d5] [g4,c5] [g4,c5,d5]",
  L: "[a4,e5] [a4,d5] [a4,c5] [a4,d5]", M: "~ e5!3 g#5@2 e5@2", N: "b4!2 c#5 e5", O: "~@2 e5!2 g#5@2 e5@2",
  P: "g#5 a5 g#5 e5", Q: "~@2 f#5!2 f#5@2 g#5@2", R: "a#5 g#5 f#5 g#5",
  S: "[f#4,a#4,c#5,f#5]@2 [f#4,a#4,c#5,f#5]@2 ~ f#4 c#6@2", T: "a#5 ~@3",
  U: "[a4,d5,f#5] [a4,d5,e5] [a4,d5] [a4,d5,e5]", V: "[b4,f#5] [b4,e5] [b4,d5] [b4,e5]",
  W: "[b4,f#5] [b4,e5] [b4,d5] [c#5,e5,a5]", X: "a#5 ~@2 e5", Y: "a#5 [f#4,a#4,c#5,f#5] ~@2",
})).s("gm_piano").gain(0.45)

// bass · electric bass pick · "Bass Guitar"
const bass = note(`<
  A B A B A B A B C D E F E F A B G H A B G H A I J K L M J@2 E N H A E N H A E N H A O P
>`.pickRestart({
  A: "e2@3 ~ e3@3 ~ e2@3 ~ e3@3 ~", B: "e2@3 ~ e3 ~ e2@2 ~@2 d2 ~ e3@3 ~", C: "a2@3 ~ a3@3 ~ a2@3 ~ a3@3 ~",
  D: "a2@3 ~ a3 ~ a2@2 ~@2 a2 ~ g#2@3 ~", E: "f#2@3 ~ f#3@3 ~ f#2@3 ~ f#3@3 ~", F: "b2@3 ~ b3 ~ b2@2 ~@2 b2 ~ b3@3 ~",
  G: "c2@3 ~ c3@3 ~ c2@3 ~ c3@3 ~", H: "d2@3 ~ d3@3 ~ d2@3 ~ d3@3 ~", I: "e2@3 ~ f#2@3 ~ g#2@3 ~ b2@3 ~",
  J: "f#2@3 ~@3 f#2@5 ~@5", K: "g#2@3 ~@3 g#2@5 ~@5", L: "d3@3 ~@3 d3@5 ~@5", M: "e2@3 ~@3 e2@5 ~@5",
  N: "f#2@3 ~ f#3 ~ f#2@2 ~@2 e2 ~ f#3@3 ~", O: "f#2@3 ~ f#3@3 ~@9", P: "~@4 f#3@3 ~@9",
})).s("gm_electric_bass_pick").gain(0.2).pan(0.7)

// bass · electric bass finger · "Electric Bass"
const bass_2 = note(`<
  A B A B A B A B C D E F E F A B G H A B G H A I J K L M J@2 E N H A E N H A E N H A O P
>`.pickRestart({
  A: "e1@3 ~ e2@3 ~ e1@3 ~ e2@3 ~", B: "e1@3 ~ e2 ~ e1@2 ~@2 d1 ~ e2@3 ~", C: "a1@3 ~ a2@3 ~ a1@3 ~ a2@3 ~",
  D: "a1@3 ~ a2 ~ a1@2 ~@2 a1 ~ g#1@3 ~", E: "f#1@3 ~ f#2@3 ~ f#1@3 ~ f#2@3 ~", F: "b1@3 ~ b2 ~ b1@2 ~@2 b1 ~ b2@3 ~",
  G: "c1@3 ~ c2@3 ~ c1@3 ~ c2@3 ~", H: "d1@3 ~ d2@3 ~ d1@3 ~ d2@3 ~", I: "e1@3 ~ f#1@3 ~ g#1@3 ~ b1@3 ~",
  J: "f#1@3 ~@3 f#1@5 ~@5", K: "g#1@3 ~@3 g#1@5 ~@5", L: "d2@3 ~@3 d2@5 ~@5", M: "e1@3 ~@3 e1@5 ~@5",
  N: "f#1@3 ~ f#2 ~ f#1@2 ~@2 e1 ~ f#2@3 ~", O: "f#1@3 ~ f#2@3 ~@9", P: "~@4 f#2@3 ~@9",
})).s("gm_electric_bass_finger").gain(0.4)

// drums · kick
const kick = s("bd").struct(`<
  A B A B A B A B A B A B A B A B A B A B A B A C A B A B A B A B A B A B A B A B A B D ~
>`.pickRestart({
  A: "x!2", B: "x ~@2 x ~ x ~@2", C: "x ~@3 x!2 ~ x!2 ~@2 x!2 ~@3", D: "x",
})).gain(0.4)

// drums · snare
const snare = s("sd").struct("<[~ x ~ x]!23 ~ [~ x ~ x]!18 [~ x ~@2] ~>").gain(0.4)

// drums · hihat
const hihat = s("hh").struct("<[x!2]!23 ~@5 [x!2]!14 x ~>").gain(0.4)

// drums · crash
const crash = s("cr").struct("<~@43 [~ x ~@2]>").gain(0.4)

stack(trumpet, piano, bass, bass_2, kick, snare, hihat, crash)