Strudelify

Doe 'n stapje naar voren

De Deurzakkers

KeyC majorTempo132 bpm
0:00/0:00
// Doe 'n stapje naar voren — De Deurzakkers
// 132 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 100 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(132/4)

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

// chords · steel drums · "STEEL DRUM"
const steel_drums = note(`<
  A B A B ~@14 C D C E C D C E F ~ G ~ B ~ G ~ B H I H I H I H I ~@8 C D C E C D C E F ~ G ~ B ~ G ~ B H I H I H I H I J
  K J K ~@4 H I H I H I H I H I H I H I H L
>`.pickRestart({
  A: "[g4,e5] ~ [g4,e5] [c5,e5] ~ [c5,e5]!2 ~ a4@2 [c5,f5] ~@5, ~@8 f5 ~@7", // C F5
  B: "[g4,e5] ~ [g4,e5] [c5,e5] ~ [c5,e5]!2 ~ b4@2 ~@6, ~@8 g5 ~@7", // C
  C: "~@2 [c5,e5] g4 ~ [c5,e5] g4 ~ [g4,c5,e5] [c5,e5] [g4,c5] [g4,e5] [c5,e5] g4 [g4,c5,e5] ~", // C C5 C
  D: "~@2 [c5,f5] a4 ~ [c5,f5] a4 ~ [a4,c5,f5] [c5,f5] [a4,c5] [a4,f5] [c5,f5] a4 [a4,c5,f5] ~", // F5 F F5 Am Dm F5 F
  E: "~@2 [b4,d5] f4 ~ [b4,d5] f4 ~ [f4,b4,d5] [b4,d5] [f4,b4] [f4,d5] [b4,d5] f4 [f4,b4,d5] ~", // Bm Bdim Bm Fdim Dm Bm Bdim
  F: "~@2 [g4,c5] e4 ~ [g4,c5] e4 ~ [e4,g4,c5] [g4,c5] [e4,g4] [e4,c5] [g4,c5] e4 [e4,g4,c5] ~", // C5 C C5 Em C C5 C
  G: "[g4,e5] ~ [g4,e5] [c5,e5] ~ [c5,e5]!2 ~ b4@2 [b4,f5] ~@5, ~@8 f5 ~@7", // C Bdim
  H: "~@2 [g4,c5] e4 ~ [g4,c5] e4 ~ [f4,a4,c5] [a4,c5] [f4,a4] [f4,c5] [a4,c5] f4 [f4,a4,c5] ~", // C5 F Am F F5 Am F
  I: "~@2 [g4,c5] e4 ~ [g4,c5] e4 ~ [d4,f4,b4] [f4,b4] [d4,f4] [d4,b4] [f4,b4] d4 [d4,f4,b4] ~", // C5 Bdim Fdim Dm G Fdim Bdim
  J: "~@2 c4 ~ e4 ~ g4 ~ f4 ~ f4 a4 ~ a4 c5 ~", K: "~@2 e4 ~ g4 ~ c5 ~ b4 ~ c5 d5 ~ d5 b4 ~",
  L: "~@2 [g4,c5] e4 ~ [g4,c5] e4 ~@9", // C5
})).s("gm_steel_drums").gain(0.32)

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  ~@6 A B A B C D C E C D C E F G F H F G F I F A B A B A B A B A B A B A B A B C D C E C D C E F G F H F G F I F 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 A B A B A B A B A B A B
>`.pickRestart({
  A: "c2 ~ e2 ~ f2 ~ a2 ~", B: "c3 ~ a2 ~ g2 ~ d2 ~", C: "c2 ~ c2 ~ c2 ~ c2 ~", D: "f1 ~ f1 ~ f1 ~ f1 ~",
  E: "g1@2 ~@2 g1@2 ~@2 g1@2 ~ g1 d2@2 g1@2", F: "c2 ~ g1 ~ c2 ~ g1 c2", G: "f2 ~ c2 ~ f2 ~ c2 f2",
  H: "g2 ~ d2 ~ g2 ~ d2 g2", I: "g2 ~ d2 ~ g2 ~ d2 ~",
})).s("gm_electric_bass_finger").gain(0.35)

// chords · brass section · "BRASS 1"
const brass_section = note(`<
  ~@6 A B A B ~@41 C D E ~ C D E ~ F ~ G ~@3 G ~ H I J K L I J K L I J K L ~@4 I J K L I J K L I J K L I J K L
>`.pickRestart({
  A: "[e3,g3,c4,e4,g4] ~ [e3,g3,c4,e4,g4] [e3,c4,e4,c5] ~ [e3,c4,e4,c5]!2 ~ [f3,a3,c4,f4,a4]@2 [f3,c4,f4,c5] ~@5", // C F F5
  B: "[e3,g3,c4,e4,g4] ~ [e3,g3,c4,e4,g4] [e3,c4,e4,c5] ~ [e3,c4,e4,c5]!2 ~ [f3,b3,d4,f4,b4] ~@7", // C Bdim
  C: "~@6 [g3,c4,e4,g4,c5,e5]@3 ~@7", // C
  D: "~@2 [a3,c4,a4,c5] [a3,c4,d4,a4,c5,d5] [a3,c4,f4,a4,c5,f5] ~ [a3,c4,f4,a4,c5,f5]!2 ~@8", // Am D7 F
  E: "~@6 [g3,c4,g4,c5] [g3,c4,d4,g4,c5,d5] [g3,c4,e4,g4,c5,e5] ~ [g3,c4,e4,g4,c5,e5]!2 ~@4", // C5 Gsus4 C
  F: "~@4 [g3,c4,e4,g4,c5,e5]@2 ~ [g3,c4,e4,g4,c5,e5]!2 ~@7", G: "~@12 [g3,d4,g4,b4,d5,g5]!3 ~",
  H: "~@6 [g3,d4,f4,b4,d5] ~", I: "[g3,c4,e4,g4,c5]!2 ~@10 [f3,c4,f4,a4,c5,f5]@2 ~@2",
  J: "[g3,c4,e4,g4,c5]!2 ~@10 [g3,d4,f4,b4,d5,g5]@2 ~@2", // C G7
  K: "[g3,c4,e4,g4,c5]!2 ~@10 [f3,c4,f4,a4,c5,f5]@2 [f3,c4,f4,a4,c5,f5] ~", // C F
  L: "[g3,c4,e4,g4,c5]!2 ~@10 [g3,d4,f4,b4,d5,g5]!3 ~", // C G7
})).s("gm_brass_section").gain(0.48)

// chords · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  ~@6 A B A B C D C E C D C E C D C E C D C E C A B A B A B A B A B A B A B A B C D C E C D C E C D C E C D C E C 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 A B A B A B A B A B A F
>`.pickRestart({
  A: "~@2 [e4,g4,c5] ~@3 [e4,g4,c5]!2 ~@2 [f4,a4,c5] ~@3 [f4,a4,c5]!2", // C F
  B: "~@2 [e4,g4,c5] ~@3 [e4,g4,c5]!2 ~@2 [d4,f4,b4] ~@3 [d4,f4,b4]!2", // C Bdim
  C: "~@2 [e4,g4,c5] ~@3 [e4,g4,c5]!2 ~@2 [e4,g4,c5] ~@3 [e4,g4,c5]!2", // C
  D: "~@2 [f4,a4,c5] ~@3 [f4,a4,c5]!2 ~@2 [f4,a4,c5] ~@3 [f4,a4,c5]!2", // F
  E: "~@2 [d4,f4,b4] ~@3 [d4,f4,b4]!2 ~@2 [d4,f4,b4] ~@3 [d4,f4,b4]!2", // Bdim
  F: "~@2 [e4,g4,c5] ~@3 [e4,g4,c5]!2 ~@2 [d4,f4,b4] ~@3 [d4,f4,b4] ~", // C Bdim
})).s("gm_electric_guitar_muted").gain(0.18).pan(0.3)

// chords · electric guitar clean · "+CHORUSGTR"
const electric_guitar_clean = note(`<
  ~@6 A B A B C D C E C D C E C D C E C D C E C A B A B A B A B A B A B A B A B C D C E C D C E C D C E C D C E C 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 A B A B A B A B A B A F
>`.pickRestart({
  A: "~@2 [g4,c5] [e4,g4,c5] ~ c5 [e4,g4,c5] ~@3 [a4,c5] [f4,a4,c5] ~ c5 [f4,a4,c5] ~", // C5 C Am F
  B: "~@2 [g4,c5] [e4,g4,c5] ~ c5 [e4,g4,c5] ~@3 [g4,b4] [d4,g4,b4] ~ b4 [d4,g4,b4] ~", // C5 C G
  C: "~@2 [g4,c5] [e4,g4,c5] ~ c5 [e4,g4,c5] ~@3 [g4,c5] [e4,g4,c5] ~ c5 [e4,g4,c5] ~", // C5 C C5 C
  D: "~@2 [a4,c5] [f4,a4,c5] ~ c5 [f4,a4,c5] ~@3 [a4,c5] [f4,a4,c5] ~ c5 [f4,a4,c5] ~", // Am F Am F
  E: "~@2 [g4,b4] [d4,g4,b4] ~ b4 [d4,g4,b4] ~@3 [g4,b4] [d4,g4,b4] ~ b4 [d4,g4,b4] ~", // G
  F: "~@2 [g4,c5] [e4,g4,c5] ~ c5 [e4,g4,c5] ~@3 [g4,b4] [d4,g4,b4] ~ b4 [d4,g4,b4]@2", // C5 C G
})).s("gm_electric_guitar_clean").gain(0.32).pan(0.8)

// chords · electric guitar clean · "+CHORUSGTR" · soft notes
const electric_guitar_clean_2 = note(`<
  ~@6 A B A B C D C E C D C E C D C E C D C E C A B A B A B A B A B A B A B A B C D C E C D C E C D C E C D C E C 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 A B A B A B A B A B A B
>`.pickRestart({
  A: "~@2 e4 ~@2 [e4,g4] ~@4 f4 ~@2 [f4,a4] ~@2", B: "~@2 e4 ~@2 [e4,g4] ~@4 d4 ~@2 [d4,g4] ~@2",
  C: "~@2 e4 ~@2 [e4,g4] ~@4 e4 ~@2 [e4,g4] ~@2", D: "~@2 f4 ~@2 [f4,a4] ~@4 f4 ~@2 [f4,a4] ~@2",
  E: "~@2 d4 ~@2 [d4,g4] ~@4 d4 ~@2 [d4,g4] ~@2", // G5
})).s("gm_electric_guitar_clean").gain(0.24).pan(0.8)

// drums · kick
const kick = s("bd").struct("x!4").gain(0.56)

// drums · snare
const snare = s("sd").struct("<~@6 [~ x ~ x]!74 ~@4 [~ x ~ x]!16>").gain(0.48)

// drums · clap
const clap = s("cp").struct("<~@4 [x!4]!2 ~@74 [x!4]!20>").gain(0.48)

// drums · hihat
const hihat = s("hh").struct("<~@4 [x!4]!76 ~@4 [x!4]!16>").gain(0.4)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@4 [~@5 x ~@10]!76 ~@4 [~@5 x ~@10]!16>").gain(0.24)

// drums · open hat
const open_hat = s("oh").struct("<~@4 [~ x ~ x ~ x ~ x]!76 ~@4 [~ x ~ x ~ x ~ x]!16>").gain(0.4)

// drums · crash
const crash = s("cr").struct("<~@10 A ~@16 A ~@7 B C@7 A ~@16 A ~@7 B C@11 ~@4 B C@15>".pickRestart({
  A: "x", B: "x ~@2 x", C: "~@3 x",
})).gain(0.48)

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

// drums · tambourine · soft notes
const tambourine_soft = s("tb").struct("~ x ~ x").gain(0.16)

// drums · cowbell
const cowbell = s("cb").struct("<~@6 [x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~]!74 ~@4 [x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~]!16>")
  .gain(0.32)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@35 [x!16]!8 ~@25 [x!16]!12 ~@4 [x!16]!15 [x!15 ~]>").gain(1.62)

// drums · guiro
const guiro = s("guiro:0").struct(`<
  ~@18
  [x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~]!25
  ~@8
  [x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~]!29
  ~@4
  [x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~]!16
>`).gain(8.45)

// drums · triangle
const triangle = s("triangles:35").struct("<~@6 A@4 ~@17 A@16 ~@17 A@20 ~@4 A@15 B>".pickRestart({
  A: "x!2 ~ x ~@2 x!4 ~ x ~@2 x!2", B: "x!2 ~ x ~@2 x!4 ~ x ~@2 x ~",
})).gain(2.79)

// drums · triangle · soft notes
const triangle_soft = s("triangles:35").struct("<~@6 [~ x ~ x]!4 ~@17 [~ x ~ x]!16 ~@17 [~ x ~ x]!20 ~@4 [~ x ~ x]!16>")
  .gain(1.39)

stack(
  steel_drums, bass, brass_section, electric_guitar_muted, electric_guitar_clean, electric_guitar_clean_2, kick, snare,
  clap, hihat, hihat_soft, open_hat, crash, tambourine, tambourine_soft, cowbell, cabasa, guiro, triangle, triangle_soft
)

More by De Deurzakkers