Strudelify

Mr. Bean: Getting Up Late For The Dentist

Tim Tierholz

KeyC majorTempo120 bpm
0:00/0:00
// Mr. Bean: Getting Up Late For The Dentist — Tim Tierholz
// 120 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 3 "Tenor/Bass" named as a bass, played on electric bass finger (its choir aahs patch is not one); ch 4 "Bassaaxophon" named as a bass, played on electric bass finger (its baritone sax patch is not one)
// note: Transcription provider: pdmx. https://musescore.com/score/5984754; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 104 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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.

// bass · electric bass finger · "Tenor/Bass"
const bass = note("<~@32 A B C D E F G H I J C D K L M N@2 ~@25 A B C D K L O ~@3 A B C D K L M N@2 ~@11>".pickRestart({
  A: "c3@3 e3, c4", B: "[f3,c4]", C: "[d3,c4]", D: "c4 b3, e3", E: "[c#3,a#3]", F: "[d3,a3]", G: "[f#3,d#4]",
  H: "g3@4 g3 f3 e3 d3, d4", I: "c3@3 e3, e4", J: "[f3,f4]", K: "[c3,a#3]", L: "f3@2 f3 e3, a3", M: "[d3,a3] [g3,b3]",
  N: "[a3 b3 d4 c4, c3]/2", O: "[c3,c4] ~@3",
})).s("gm_electric_bass_finger").gain(0.25)

// bass · electric bass finger · "Bassaaxophon"
const bass_2 = note(`<
  ~@8 A@8 B C D E B C F B@2 C D E B C F B@2 C D E G D H I B C D E B C F B@2 C D E B C F B A@2 J K L M N O M@2 P ~@7 B C
  D E B C Q R S T B C D E B C F B@2 U@8 V@2 W
>`.pickRestart({
  A: "g2@2 g3 ~ g2@2 g3 ~ g2@2 ~@2 g3!4", B: "c2 ~ c2 ~ c2 ~ c2 ~", C: "f2 ~ f2 ~ f2 ~ f2 ~", D: "d2 ~ d2 ~ d2 ~ d2 ~",
  E: "e2 ~ e2 ~ e2 ~ e2 ~", F: "d2 ~ d2 ~ g2 ~ g2 ~", G: "c#2 ~ c#2 ~ c#2 ~ c#2 ~", H: "f#2 ~ f#2 ~ f#2 ~ f#2 ~",
  I: "g2 ~ g2 ~ g2 ~ g2 ~", J: "e3 ~ e3!3 ~ e3!3 ~ e3!6", K: "f3 ~ f3!3 ~ f3!3 ~ f3!6",
  L: "f#3 ~ f#3!3 ~ f#3!3 ~ f#3!6", M: "g3 ~ g3!3 ~ g3!3 ~ g3!6", N: "g#3 ~ g#3!3 ~ g#3!3 ~ g#3!6",
  O: "g#3 ~ g#3!3 ~ g#3!3 ~ g#3!4 f3 f#3", P: "c3 ~@3", Q: "c2 ~ c2!3 ~ c2!3 ~ c2!6", R: "e2 ~ e2!3 ~ e2!3 ~ e2!6",
  S: "f2 ~ f2!3 ~ f2!3 ~ f2!5 e2", T: "d2 ~ d2!3 ~ d2!3 ~ d2!6", U: "c2@2 c3 ~ c2@2 c3 ~ c2@2 ~@2 e3!4",
  V: "c2 ~@3 c2 ~@3", W: "c2 ~@7",
})).s("gm_electric_bass_finger").gain(0.2)

// bass · synth bass 1 · "Bass Synthesizer"
const bass_3 = note(`<
  ~@16 A B C D A B E A@2 B C D A B E A@2 B C D F C G H A B C D A B E A@2 B C D A B E A I@2 D B G I J K I@2 L ~@7 A B C D
  A B ~@13 M@8 N@2 O
>`.pickRestart({
  A: "c2 ~ c2!3 ~ c2!3 ~ c2!6", B: "f2 ~ f2!3 ~ f2!3 ~ f2!6", C: "d2 ~ d2!3 ~ d2!3 ~ d2!6",
  D: "e2 ~ e2!3 ~ e2!3 ~ e2!6", E: "d2 ~ d2!3 ~ d2!2 g2 ~ g2!6", F: "c#2 ~ c#2!3 ~ c#2!3 ~ c#2!6",
  G: "f#2 ~ f#2!3 ~ f#2!3 ~ f#2!6", H: "g2 ~ g2!3 ~ g2!4 f2!2 e2!2 d2!2", I: "g2 ~ g2!3 ~ g2!3 ~ g2!6",
  J: "g#2 ~ g#2!3 ~ g#2!3 ~ g#2!6", K: "g#2 ~ g#2!3 ~ g#2!3 ~ g#2!4 f2 f#2", L: "c2 ~@3",
  M: "c2@2 c3 ~ c2@2 c3 ~ c2@2 ~@2 e3!4", N: "c2 ~@3 c2 ~@3", O: "c2 ~@7",
})).s("gm_synth_bass_1").gain(0.2)

// bass · synth bass 1 · "Bass Synthesizer"
const bass_4 = note("<~@80 A B C D A E D B A E F A@2 ~@11>".pickRestart({
  A: "c2 ~ c2!3 ~ c2!3 ~ c2!6", B: "e2 ~ e2!3 ~ e2!3 ~ e2!6", C: "f2 ~ f2!3 ~ f2!3 ~ f2!5 e2",
  D: "d2 ~ d2!3 ~ d2!3 ~ d2!6", E: "f2 ~ f2!3 ~ f2!3 ~ f2!6", F: "d2 ~ d2!3 ~ d2!2 g2 ~ g2!6",
})).s("gm_synth_bass_1").gain(0.4)

// drums · kick
const kick = s("bd").struct("<~@4 [x!4]!97 [x!2]!2 x>").gain(0.18)

// drums · snare
const snare = s("sd").struct("<~@15 A B@23 C B@12 C B@8 C B@3 C ~@7 D B@6 E@4 B@8 C B@6 ~@5>".pickRestart({
  A: "~@12 x!4", B: "~ x ~ x", C: "~@4 x ~@4 x ~ x!5", D: "~@9 x ~ x!5", E: "~@4 x ~@2 x ~@4 x ~@3",
})).gain(0.12)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@15 A B@23 ~ B@12 ~ B@8 ~ B@3 ~@9 B@6 ~@4 B@8 ~ B@6 ~ C ~@3>".pickRestart({
  A: "~@11 x ~@4", B: "~@15 x", C: "~@11 x!5",
})).gain(0.06)

// drums · hihat
const hihat = s("hh").struct("<[x!16]!99 ~@5>").gain(0.12)

// drums · china
const china = s("cr").struct("<~@16 A ~@7 A ~@15 A ~@12 A ~@8 A ~@3 A ~@7 A ~@5 A ~@3 A ~@8 A ~@7 A ~@2>".pickRestart({
  A: "x",
})).gain(0.18)

// drums · tambourine
const tambourine = s("tb").struct("<[~ x ~ x ~ x ~ x]!99 ~@5>").gain(0.12)

stack(bass, bass_2, bass_3, bass_4, kick, snare, snare_soft, hihat, china, tambourine)