Strudelify

Daar gaat ze

Clouseau

KeyF majorTempo85 bpm
0:00/0:00
// Daar gaat ze — Clouseau
// 85 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 99 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(85/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.

// chords · piano · "A.PIANO 1"
const piano = note("<A@2 ~@20 B C D E F ~@20 B C D E F ~@16 B C D E F ~@26>".pickRestart({
  A: "[~@7 [f4,c5,eb5,g5]@7 ~@2]/2", B: "[c5,f5,a5]@3 [c5,f5,a5] [c5,e5,g5]@3 [c5,e5,g5]", C: "[d5,f5,a5] [c5,e5,g5]",
  D: "[d5,f5,bb5]", E: "[d5,g5,bb5]", F: "[e5,g5,c6]@11 ~@5",
})).s("gm_piano").gain(0.39)

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  A@2 B C D A E F D E G H I G@2 J I D K L G D M N O P Q B C D A E F D E G H I G@2 J I D R L G D M N O P Q E F D E G H I
  G@2 J I D R L G D M N O P Q B C D A E F D E B C D A E F D E B C D A E F D E S ~
>`.pickRestart({
  A: "f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~", B: "f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2@2 c2@2",
  C: "c3 ~ c3 ~ c3@2 a2@2 d3 ~ d3 ~ d3 ~ d3@2", D: "bb2 ~ bb2 ~ bb2 ~ bb2 ~ bb2 ~ bb2 ~ bb2 ~ bb2@2",
  E: "f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2@2", F: "c3 ~ c3 ~ c3 ~ c3@2 d3 ~ d3 ~ d3 ~ d3@2",
  G: "bb2 ~ bb2 ~ bb2 ~ bb2 ~ bb2 ~ bb2 ~ bb2 ~ bb2 ~", H: "f2 ~ f2 ~ f2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2@2",
  I: "eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2@2", J: "f2 ~ f2 ~ f2@2 g2 ~ g2 ~ g2 ~ g2 ~ g2@2",
  K: "f3@4 ~@2 f3@2 e3@5 ~ e3@2", L: "d3@2 ~ d3 c3@2 ~ c3", M: "f3@5 ~ f3@2 e3@4 ~@2 e3@2",
  N: "d3@5 ~ d3@2 c3@5 ~ c3@2", O: "bb2 ~ bb2 ~ bb2 ~ bb2 ~ bb2 ~ bb2 ~ bb2@2 e2 f2",
  P: "g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2@2", Q: "c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3@2",
  R: "f3@5 ~ f3@2 e3@5 ~ e3@2", S: "bb2 ~@15",
})).s("gm_acoustic_bass").gain(0.38)

// chords · english horn · "ENGL.HORN"
const english_horn = note(`<
  A@3 B C D E F G H G I J K@2 I L M N O K@2 N P Q R S E F G T@2 F G H G I J K@2 I L M N O K@2 N P Q R S E F G H G I J
  K@2 I L M N O K@2 N P Q R S E F G T@2 F G T@2 F G T@2 F G T@2 F G T@2 F G U@2 ~
>`.pickRestart({
  A: "[f3,f4]/3", B: "[c3,c4]@3 [d3,d4]@5", C: "[bb2,bb3]", D: "[f3,f4]", E: "[f4,a4,c5]",
  F: "[e4,g4,c5]@3 [d4,f4,a4,d5]@5", G: "[d4,f4,bb4]", H: "[c4,f4,a4]", I: "[c4,f4,a4]@3 [d4,g4,bb4]@5",
  J: "[eb4,g4,bb4]", K: "[f4,bb4,d5]/2", L: "[g4,bb4,eb5]", M: "[f4,bb4,d5]@15 ~",
  N: "[a4,c5,f5]@3 [a4,f5] [g4,e5]@3 [g4,c5,e5], ~@3 c5@4 ~", O: "[a4,d5,f5]@3 [a4,d5,f5] [g4,c5,e5]@4",
  P: "[a4,d5,f5]@3 [a4,d5,f5] [g4,c5,e5]@3 [g4,c5,e5]", Q: "[f4,bb4,d5]", R: "[d4,g4,bb4]", S: "[e4,g4,c5]",
  T: "[[f4,a4] [f4,a4,c5], c4]/2", U: "[c4,f4,a4]/2",
})).s("gm_english_horn").gain(0.33)

// other · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  ~@2 A B C A D B C E F G H F@2 G I J K L M ~ N O P Q R A B C A D B C E F G H F@2 G I J K L M ~ N O P Q R S B C E F G H
  F@2 G I J K L M ~ N O P Q R A B C A D B C T A B C A D B C T A B C A D B C U@3
>`.pickRestart({
  A: "a4 ~ f5@6, ~ c5@7", B: "g4 c5 e5 a4@2 d5 f5@2", C: "bb4 d5 f5@6", D: "a4 c5 f5@6", E: "a4 c5 f5@5 ~",
  F: "d5 f5 bb5@6", G: "c5 f5 a5 d5@2 g5 bb5@2", H: "eb5 g5 bb5@6", I: "eb5@2 g5@2 bb5@11 ~", J: "d5 f5 bb5@5 ~",
  K: "a4 ~@2 a4 ~ c5 ~ g4, ~ c5@3 g4@2 ~@2, ~ f5 ~ e5", L: "~ d5 f5 d5 c5 ~@2 c5, a4@3 ~@2 e5@3, ~@3 g5",
  M: "~@4 f5@11 ~, bb4@15 ~, ~@2 d5@13 ~", N: "~@3 a4 ~ c5 ~ g4, a4@3 ~ g4@3 ~, ~ c5@3 ~@4, ~ f5 ~ e5",
  O: "~ d5 f5 d5 ~@3 c5, a4@7 ~ c5@6 ~@2, ~@5 e5@3, ~@3 g5", P: "~ f5@3, bb4, ~ d5@7", Q: "~ g5@3, bb4, ~ d5@7",
  R: "~@4 g5@11 ~, c5@15 ~, ~@2 e5@13 ~", S: "~ c5 f5@6", T: "~ c5 f5@5 ~", U: "[~ c5 f5@16 ~@6]/3",
})).s("gm_acoustic_guitar_steel").gain(0.43)

// other · distortion guitar · "DISTORTION"
const distortion_guitar = note(`<
  ~@20 A B ~ C@2 D E F G H F@2 G H F H I J H@2 I J H ~@2 A B ~ C@2 D E ~@14 A B ~ C@2 D E K L B M N L B K@2 L B M N L B
  K@2 L B M N L B K ~@2
>`.pickRestart({
  A: "~@15 [ab2,bb2]", B: "bb2", C: "[~@14 bb2 bb2@15 e2 f2, ~@15 ab2 ~@16]/2", D: "g2@14 g2 bb2", E: "c3@15 ~",
  F: "f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~", G: "c3 ~ c3 ~ c3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~",
  H: "bb2 ~ bb2 ~ bb2 ~ bb2 ~ bb2 ~ bb2 ~ bb2 ~ bb2 ~", I: "f2 ~ f2 ~ f2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~",
  J: "eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~", K: "f3", L: "c3@3 d3@5", M: "f3@15 ~", N: "f3@7 f3",
})).s("gm_distortion_guitar").gain(0.47)

// chords · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note("<~@56 A B@2 C@2 D E F ~@13 G H@2 I ~@18>".pickRestart({
  A: "[f5,bb5]", B: "[[f5,a5]@3 [g5,bb5]@13]/2", C: "[f5,bb5]/2", D: "[f5,a5,c6]@3 [g5,bb5,d6]@5", E: "[g5,bb5,eb6]",
  F: "[f5,bb5,d6]", G: "f6", H: "[e6@3 d6@13]/2", I: "c6",
})).s("gm_string_ensemble_2").gain(0.29)

// other · acoustic guitar nylon · "NYLON GTR"
const acoustic_guitar_nylon = note(`<
  ~@52
  [~@6 c4@2 f4@2 bb4@2 a4@2 g4 f4]
  [g4@6 f4@7 ~@3]
  [~@2 c5 d5!5 d5@2 c5!2 c5@2 bb4@2]
  [~ f4 c5 bb4 a4 g4 f4 d4]
  [bb4 ~]
  ~@42
>`).s("gm_acoustic_guitar_nylon").gain(0.5)

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

// drums · rim
const rim = s("rim").struct(`<
  ~@2 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@10 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@10 A ~ A ~@3 A ~ A ~ A ~@10 A ~ A ~ A ~ A ~ A ~
  A ~ A ~ A ~ A ~ A ~ A ~ A ~@3
>`.pickRestart({
  A: "~@3 x",
})).gain(0.72)

// drums · rim · soft notes
const rim_soft = s("rim").struct("<~@17 A ~@8 A ~@15 A ~@8 A ~@11 A ~@8 A ~@26>".pickRestart({
  A: "~@12 x ~ x!2",
})).gain(0.4)

// drums · snare
const snare = s("sd").struct("<~@17 A ~@8 B ~@15 A ~@8 B ~@3 C ~@7 A ~@8 B ~@26>".pickRestart({
  A: "~@12 x ~ x!2", B: "~@14 x!2", C: "~@12 x!4",
})).gain(0.4)

// drums · hihat
const hihat = s("hh").struct("<[x!16]!96 [x!15 ~] ~@2>").gain(0.64)

// drums · crash
const crash = s("cr").struct("<~@18 A ~@24 A ~@12 A ~@7 A ~@34>".pickRestart({
  A: "x",
})).gain(0.64)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@2 [~ x!11 ~@4]!95 ~@2>").gain(1.62)

// drums · cabasa · soft notes
const cabasa_soft = s("cabasa:4").struct("<~@2 [x ~@11 x!4]!94 [x ~@11 x!3 ~] ~@2>").gain(0.81)

stack(
  piano, bass, english_horn, acoustic_guitar_steel, distortion_guitar, string_ensemble_2, acoustic_guitar_nylon, kick,
  rim, rim_soft, snare, hihat, crash, cabasa, cabasa_soft
)

More by Clouseau