Strudelify
KeyE♭ majorTempo110 bpm
0:00/0:00
// Mr Wendal — Arrested Development
// 110 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: ch 11 "MELO TOM 1" (melodic tom patch on one pitch) is played as the kit's tom
// note: Full arrangement: all 114 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(110/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 · "FINGERDBAS"
const bass = note("<~@2 A@8 B@16 A@8 B@11 C ~@4 B@4 A@8 B@16 A@8 ~@12 D A@7 ~@8>".pickRestart({
  A: "eb1 ~@2 eb1 ~@2 ab1@5 ~ bb1@2 bb1@2", B: "eb1 ~@2 eb1 ~@2 ab1@5 ~@3 bb1@2", C: "eb1 ~@2 eb1 ~@2 ab1@5 ~@5",
  D: "eb1 ~@2 eb1 ~@2 ab1@5 ~ bb1 ~ bb1@2",
})).s("gm_electric_bass_finger").gain(0.45)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  ~@2 A@5 B@2 A ~@8 A@5 B@2 A@6 B@2 A ~@8 A@5 B@2 A@10 B@2 A ~@24 A@8 ~@20
>`.pickRestart({
  A: "[bb2,eb4,f4] ~@2 [bb2,eb4,f4] ~@2 [eb3,eb4,g4]@9 ~", B: "[bb2,eb4,f4] ~@2 [bb2,eb4,f4] ~@2 [eb3,eb4,g4]@8 ~@2",
})).s("gm_acoustic_guitar_steel").gain(0.25)

// other · clarinet
const clarinet = note("<~@55 A B@2 C A D@2 ~@15 A E@2 F@2 E@2 G@2 H@4 ~@24>".pickRestart({
  A: "~@12 g4 ~ g4@2", B: "[f4@4 eb4@4 g4@4 f4@2 eb4@4 ~@2 bb4@8 g4 ~ g4@2]/2", C: "f4 eb4@3",
  D: "[f4@4 eb4@4 g4@4 f4@2 eb4@7 ~ g4@10]/2", E: "[f4@4 eb4@24 g4 ~ g4@2]/2",
  F: "[f4@4 eb4@4 g4@3 ~ f4@2 eb4@8 g4@5 ~ g4 ~ g4@2]/2", G: "[f4@4 eb4@4 g4@4 f4@2 eb4@8 g4@5 ~ g4 ~ g4@2]/2",
  H: "[f4@4 eb4@47 ~@13]/4",
})).s("gm_clarinet").gain(0.22)

// other · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  ~@2 A@2 B A@4 B ~@16 A@2 B A@4 B ~@20 A@2 B A@4 B ~@16 A@2 B A@4 B ~@12 A@2 B A@4 B ~@8
>`.pickRestart({
  A: "~@2 eb3 ~@2 d3 ~@2 c3 ~@2 bb2@5", B: "~@2 eb3 ~@2 d3 ~@2 c3 ~@2 bb2@4 ~",
})).s("gm_electric_guitar_muted").gain(0.3).pan(0.3)

// other · electric guitar muted · "MUTED GTR"
const electric_guitar_muted_2 = note(`<
  ~@3 A ~ A ~ A ~ A ~@17 A ~ A ~ A ~ A ~@3 B C ~@2 B C ~@2 B C ~@8 A ~ A ~ A ~ A ~@16 D E D F D E D F ~@12 D G H F D G H
  I ~@8
>`.pickRestart({
  A: "~@8 c4 ~@2 bb3 ~@2 g3@2", B: "~@9 eb3 ~ eb3 d3@2 c3@2", C: "bb2 ~@15", D: "eb3 ~ eb3!2 ~@2 ab3@6 ~@2 bb3 ~",
  E: "eb3 ~ eb3!2 ~@4 c4 ~@2 bb3 ~@2 g3@2, ~@6 ab3@6 ~@2 bb3 ~",
  F: "eb3 ~ eb3!2 ~@4 c4 ~@2 bb3 ~@2 bb3!2, ~@3 ab3@3 ~ g3",
  G: "eb3 ~ eb3!2 ~@4 c4 ~@2 bb3 ~@2 g3@2, ~@6 ab3@7 ~ bb3 ~", H: "eb3 ~ eb3!2 ~@2 ab3@7 ~ bb3 ~",
  I: "eb3 ~ eb3!2 ~@4 c4 ~@2 bb3 ~@2 bb3!2, ~@6 ab3@7 ~ g3@2",
})).s("gm_electric_guitar_muted").gain(0.25).pan(0.7)

// chords · kalimba
const kalimba = note("<~@5 A ~@3 A ~@19 A ~@3 A ~@23 A ~@3 A B C D E B C D E F G H I F G H I ~@36>".pickRestart({
  A: "~@14 [f5,f6] ~", B: "~ eb5 f5 g5 ~ g5 ~ g5 ~@2 f5 ~ eb5 f5 g5 ~", C: "~ eb5 f5 g5 ~ g5 ~ g5 ~@2 f5 ~ eb5 ~@3",
  D: "~ eb5 f5 g5 ~ g5 ~ g5 ~@2 f5 ~ eb5 f5 g5 bb5", E: "~ bb5 ~ g5 ~ g5 ~ f5 ~@2 f5 ~ eb5 ~@3",
  F: "~ [c5,eb5] [d5,f5] [eb5,g5] ~ [eb5,g5] ~ [eb5,g5] ~@2 [d5,f5] ~ [c5,eb5] [d5,f5] [eb5,g5] ~", // Cm Dm Eb Dm Cm Dm Eb
  G: "~ [c5,eb5] [d5,f5] [eb5,g5] ~ [eb5,g5] ~ [eb5,g5] ~@2 [d5,f5] ~ [c5,eb5] ~@3", // Cm Dm Eb Dm Cm
  H: "~ [c5,eb5] [d5,f5] [eb5,g5] ~ [eb5,g5] ~ [eb5,g5] ~@2 [d5,f5] ~ [c5,eb5] [d5,f5] [eb5,g5] bb5", // Cm Dm Eb Dm Cm Dm Eb
  I: "~ [g5,bb5] ~ [f5,g5] ~ [f5,g5] ~ f5 ~ f5 ~ [c5,eb5] ~ c5 eb5 bb4", // Gm Fsus2 Cm
})).s("gm_kalimba").gain(0.35)

// chords · kalimba · soft notes
const kalimba_soft = note(`<
  ~@3 A ~ A ~ A ~ A ~@17 A ~ A ~ A ~ A ~@21 A ~ A ~ A ~ A ~@10 B C ~@2 B C ~@36
>`.pickRestart({
  A: "~@2 eb5 ~@2 d5 ~@2 c5 ~@7", B: "~@15 g5", C: "~@7 eb5 ~ eb5 ~@6",
})).s("gm_kalimba").gain(0.22)

// chords · electric guitar clean · "CLEAN GTR" · Eb5
const electric_guitar_clean = note("<[~@2 [eb1,bb1] ~@3 [eb1,bb1] ~@4 [eb1,bb1] ~@2 [bb1,eb2] ~]!2 ~@112>")
  .s("gm_electric_guitar_clean").gain(0.11)

// drums · kick
const kick = s("bd").struct("<A@94 B@3 A@9 C D C D C D C D>".pickRestart({
  A: "x ~@4 x ~@2", B: "x ~@9 x ~@4 x", C: "x ~@2 x ~@6 x ~@4 x", D: "x ~@2 x ~@2 x ~@3 x ~@5",
})).gain(0.45)

// drums · snare
const snare = s("sd").struct("~ x ~ x").gain(0.45)

// drums · low tom
const low_tom = s("lt").struct("<~@89 A ~@7 B ~@3 B ~@3 B ~@3 B ~@3 B>".pickRestart({
  A: "~@9 x ~ x ~ x ~@2", B: "~@11 x ~ x ~@2",
})).gain(0.3)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@2 A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A
  B A B A B A B A B A B A B A B A B A B A B A B A B A B ~@4 A B A B C@3 D A B A B A B A B A B A B A B A@2
>`.pickRestart({
  A: "x!8", B: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!2", C: "x!7 ~ x!8", D: "x!14 ~@2",
})).gain(0.2)

// drums · mid tom
const mid_tom = s("mt").struct("<~@89 A ~@3 B ~@3 C ~@3 C ~@3 C ~@3 C ~@3 C>".pickRestart({
  A: "~@4 x!4", B: "~@8 x!8", C: "~@8 x!3 ~ x ~ x ~",
})).gain(0.35)

// drums · open hat
const open_hat = s("oh").struct("<~@94 [~@7 x ~@8]!3 ~@17>").gain(0.3)

// drums · tambourine
const tambourine = s("tb").struct("<~@106 [~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2]!7 [~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x ~]>")
  .gain(0.2)

// drums · cowbell
const cowbell = s("cb").struct("<~@106 [~ x ~ x ~ x ~ x]!8>").gain(0.15)

// drums · bongos
const bongos = s("bongo:4").struct("<~@106 x ~@7>").gain(0.65)

stack(
  bass, acoustic_guitar_steel, clarinet, electric_guitar_muted, electric_guitar_muted_2, kalimba, kalimba_soft,
  electric_guitar_clean, kick, snare, low_tom, hihat, mid_tom, open_hat, tambourine, cowbell, bongos
)

More by Arrested Development