Strudelify

Your Clown

Eiffel 65

KeyA majorTempo110 bpm
0:00/0:00
// Your Clown — Eiffel 65
// 110 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 114 bars on a 16-step grid, each part at one level. 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.

// other · lead 2 sawtooth
const lead_2_sawtooth = note(`<
  A@2 B@2 C D E@2 ~ C ~ C ~ C ~@2 F G H I@2 J K@2 L G H M@2 N ~@19 O P O P O P ~ Q R@2 S T U@2 V@2 W@2 S T X@2 ~@43
>`.pickRestart({
  A: "[f#2!5 f#2@2 f#2@3 f#2 f#2@2 ~@2 f#2]/2", B: "[a2 f#2!4 f#2@2 f#2@2 f#2@2 f#2@2 ~@3]/2",
  C: "b2 c#3 f#2!2 e2 f#2@3", D: "b2 c#3 f#2 f#2@2 ~ f#2!2", E: "[d2@3 d2@2 d2!2 d2@5 ~@4]/2",
  F: "~ c#3 d3 c#3 d3 c#3 d3 c#3", G: "d3 c#3@2 a2@2 ~@3", H: "~ c#3 d3 c#3 d3@2 ~ c#3",
  I: "[d3@2 c#3@2 e3 d3 c#3 a2@2 c#3 d3 c#3 d3@2 ~ c#3]/2", J: "g#2!3 a2@2 ~@2 b2",
  K: "[d3@2 b2@2 a2@2 b2 d3@4 c#3@2 ~@3]/2", L: "~ c#3 d3 c#3 e3@2 d3 c#3",
  M: "[d3@2 c#3@2 e3 d3 c#3 a2@2 c#3 d3 c#3 d3 c#3 d3 c#3]/2", N: "d3!2 e3 d3@2 c#3@2 ~", O: "~@4 b2 c#3 f#2!2",
  P: "e2 f#2@3 ~@4", Q: "~@5 c#3 d3 c#3", R: "[d3 c#3 d3 c#3 d3 c#3@2 a2@2 ~@4 c#3 d3 c#3]/2",
  S: "d3@2 ~ c#3 d3@2 c#3@2", T: "e3 d3 c#3 a2@2 c#3 d3 c#3", U: "[d3@2 ~ c#3 g#2!3 a2@2 ~@2 b2 d3@2 b2@2]/2",
  V: "[a2@2 b2 d3@4 c#3@2 ~@4 c#3 d3 c#3]/2", W: "[e3@2 d3 c#3 d3 c#3@2 a2@2 ~@4 c#3 d3 c#3]/2",
  X: "[d3 c#3 d3 c#3 d3!2 e3 d3@2 c#3@2 ~@5]/2",
})).s("gm_lead_2_sawtooth").gain(0.64)

// other · lead 1 square
const lead_1_square = note(`<
  ~@4 A B C D E B E D E B F G E B E D E B F G E B E D E B F G ~@17 H I H J H K L M H I H J H K L M H I H J H K L N ~@41
>`.pickRestart({
  A: "c#4 ~@2 a4 ~@4", B: "f#4@2 ~@4 e4@2 ~@4 f#4 f#5 f#4@2", C: "~@3 a4 ~@4",
  D: "f#4@2 ~@4 e4@2 ~@2 c#4@2 c#4 c#5 c#4@2", E: "d4 ~@2 a4 ~@4", F: "~@10 a4@2 a4 a5 a4 ~",
  G: "g4@2 g4@2 g4 g5 f#4@2 ~@2 f#4 ~ f#5 ~ f#4@2", H: "~@4 f#4 ~@2 e4", I: "~@4 f#4 f#5 f#4@2 d4@2 ~@4 a4@2",
  J: "~@2 c#4@2 c#4 c#5 c#4@2 d4@2 ~@4 a4@2", K: "~@4 f#4 f#5 f#4@2 ~@8",
  L: "~@2 a4@2 a4 a5 a4 ~ g4@2 g4@2 g4 g5 f#4@2", M: "~@2 f#4 ~ f#5 ~ f#4@2 d4@2 ~@4 a4@2",
  N: "~@2 f#4 ~ f#5 ~ f#4@2 ~@8",
})).s("gm_lead_1_square").gain(0.57)

// bass · electric bass finger
const bass = note(`<
  ~@8 A B A C A B D E A B A C A B D E A B A C A B D F G@8 H@4 I@8 J@16 K@5 L M N O L P Q R S T L U L P Q R L M N O L P Q
  R L M N O L P Q R S T L U L P Q R ~
>`.pickRestart({
  A: "d1@3 a1@3 ~@2", B: "b1@3 f#1@3 ~ c#1", C: "b1@3 f#1@3 ~@2", D: "b1@3 a1@5", E: "g1@3 f#1@5", F: "g1@3 c#2@4 ~",
  G: "[~@4 f#1@3 f#1@5 c#1@3 c#1@5 d1@3 d1@5 d1@3 a1@5 f#1@3 f#1@5 g#1@3 g#1@5 a1@3 a1@5 b1@3 b1]/8",
  H: "[~@4 d2@3 d2@4 ~ e2@3 e2@4 ~ f#1@3 f#1@5 f#1@3 f#1]/4",
  I: "[~@4 f#1@3 f#1@5 g#1@3 g#1@5 a1@3 a1@5 b1@3 b1@5 d1@3 a1@3 ~@2 b1@3 f#1@3 ~ c#1 d1@3 ~ d3 c#3@2 ~ b1@3 f#1, ~@55 a1@3 ~@6]/8",
  J: "[~@4 d1@3 a1@3 ~@2 b1@3 f#1@3 ~ c#1 b1@3 a1@5 g1@3 f#1@5 d1@3 a1@3 ~@2 b1@3 f#1@3 ~ c#1 d1@3 a1@3 ~@2 b1@3 f#1]/8",
  K: "[~@4 d1@3 a1@3 ~@2 b1@3 f#1@3 ~ c#1 b1@3 a1@5 g1@3 c#2@4 ~@5]/5", L: "f#1@3 f#1@5", M: "c#1@3 c#1@5",
  N: "d1@3 d1@5", O: "d1@3 a1@5", P: "g#1@3 g#1@5", Q: "a1@3 a1@5", R: "b1@3 b1@5", S: "d2@3 d2@4 ~", T: "e2@3 e2@4 ~",
  U: "f#1@3 f#1@4 ~",
})).s("gm_electric_bass_finger").gain(0.5).pan(0)

// chords · piano · "'Europop'"
const piano = note(`<
  ~@24 A B A B A B ~@2 C@4 D@8 E@5 ~@15 F G@4 H@2 ~@2 I J K L I M N O K P I@3 M N O I J K L I M N O I J K L I M N O K P
  I@3 M N O ~
>`.pickRestart({
  A: "f#4 ~@2 g#4", B: "a4@3 g#4@3 e4@2", C: "[~ [f#2,a2,c#3]@2 [c#2,e2,g#2]@2 [d2,f#2,a2]@2 [d2,f#2,a2]]/4",
  D: "[[a2,c#3,e3] [f#2,a2,c#3]@2 [g#2,b2,d3]@2 [a2,c#3,e3]@2 [b2,d3,f#3]@2 [d2,f#2,a2]@2 [e2,g#2,b2]@2 [f#2,a2,c#3]@2 [f#2,a2,c#3]]/8", // A F#m G#dim A Bm D E F#m
  E: "[~ [f#2,a2,c#3]@2 [g#2,b2,d3]@2 [a2,c#3,e3]@2 [b2,d3,f#3]@2 ~]/5", F: "~@2 f#4 ~",
  G: "[~@2 g#4@2 a4@3 g#4@3 e4@2 f#4@2 ~@2]/2", H: "[~@2 g#4@2 a4@3 g#4@3 e4@2 ~@4]/2", I: "[f#2,a2,c#3]",
  J: "[c#2,e2,g#2]", K: "[d2,f#2,a2]", L: "[d2,f#2,a2] [a2,c#3,e3]", M: "[g#2,b2,d3]", N: "[a2,c#3,e3]",
  O: "[b2,d3,f#3]", P: "[e2,g#2,b2]",
})).s("gm_piano").gain(0.25)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  ~@29 A B C D@4 E@4 F@4 G@4 H ~@21 I J@2 K L M N O P Q R M S K T U V W R K L M N O P Q R K L M N O P Q R M S K T U V W
  R ~
>`.pickRestart({
  A: "~@7 b5", B: "d6 b5 ~ a5 c#6 a5 ~ g5", C: "b5 g5 ~ c#5@3 ~@2", D: "[~ f#6@2 c#6@2 d6@2 d6]/4",
  E: "[a5@4 f#5@8 g#5@8 a5@8 b5 g#5 a5 f#5]/4", F: "[g#5 f5 f#5 c#5 d6@8 e6@8 f#6@8 f#6@4]/4",
  G: "[~@4 f#4@8 g#4@8 a4@8 b5 g#5 a5 f#5]/4", H: "g#5 f5 f#5 c#5 ~@4", I: "~@3 b5 d6 b5 ~ a5",
  J: "[c#6 a5 ~ g5 b5 g5 ~ c#5@3 ~@6]/2", K: "f#6", L: "c#6", M: "d6", N: "d6 a5", O: "f#5", P: "g#5", Q: "a5",
  R: "b5 g#5 a5 f#5 g#5 f5 f#5 c#5", S: "e6", T: "f#6 ~", U: "f#4", V: "g#4", W: "a4",
})).s("gm_string_ensemble_1").gain(0.48).pan(0.2)

// other · french horn
const french_horn = note("<~@40 A@8 ~@33 B C D E F G E H ~@16 B C D E F G E H ~>".pickRestart({
  A: "[~ d5@2 e5@2 f#5@2 a4@2 f#4@2 g#4@2 a4@2 b4]/8", B: "d5", C: "e5", D: "f#5", E: "a4", F: "f#4", G: "g#4", H: "b4",
})).s("gm_french_horn").gain(0.25).pan(0)

// other · tubular bells · "Daniel J. Hill"
const tubular_bells = note("<~@14 A B ~@19 C@2 ~@6 D@2 ~@9 E@3 ~@19 F ~@7 G ~@7 F ~@7 F ~@7 G ~@5>".pickRestart({
  A: "b4@3 a4@5", B: "g5@3 f#5@5", C: "[~@4 f#7@3 a5@4 ~@5]/2", D: "[~@4 f#6@3 a5@4 ~@5]/2",
  E: "[~@4 b4@3 a4@5 g5@3 f#5@5 ~@4]/3", F: "f#7@3 a5@4 ~", G: "f#6@3 a5@4 ~",
})).s("gm_tubular_bells").gain(0.48).pan(0.7)

// other · pad metallic
const pad_metallic = note("<~@89 A B C D A E F G ~@17>".pickRestart({
  A: "f#5@3 g#5@3 a5@2", B: "c#5@3 d5@3 e5@2", C: "a4@3 ~@3 b4@2", D: "d5@3 c#5@4 ~", E: "g#4@3 a4@3 b4@2",
  F: "a4@3 e4@3 a4@2", G: "b4@3 a4@3 ~@2",
})).s("gm_pad_metallic").gain(0.64).pan(0.6)

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

// drums · snare
const snare = s("sd").struct("<[~@3 x]!7 [~@8 x!5 ~@3] [~@3 x]!22 ~@3 [~ x ~@2]!38 ~@2 [~@3 x]!32 ~@9>").gain(0.64)

// drums · hihat
const hihat = s("hh").struct("<A@4 B@4 C@22 ~@2 D E@37 F ~@2 C@32 ~@9>".pickRestart({
  A: "x!4", B: "x ~@2 x ~@4", C: "x!3 ~ x ~ x ~ x ~ x ~@5", D: "~@8 x!3 ~ x ~ x ~", E: "x ~ x ~@5 x!3 ~ x ~ x ~",
  F: "x!2 ~@6",
})).gain(0.64)

// drums · ride
const ride = s("rd").struct("<~@8 [~@7 x]!22 ~@20 [~@3 x ~@4]!21 ~@43>").gain(0.64)

// drums · woodblocks
const woodblocks = s("woodblock:5").struct("<[~@3 x]!7 [~@8 x!5 ~@3] [~@3 x]!22 ~@20 [~ x ~@2]!21 ~@43>").gain(0.93)

stack(
  lead_2_sawtooth, lead_1_square, bass, piano, string_ensemble_1, french_horn, tubular_bells, pad_metallic, kick, snare,
  hihat, ride, woodblocks
)

More by Eiffel 65