Strudelify

Quelli che non hanno eta

Eiffel 65

KeyB minorTempo135 bpm
0:00/0:00
// Quelli che non hanno eta — Eiffel 65
// 135 bpm, 4/4, key B minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 13 choir aahs (copy of ch 5 choir aahs)
// note: Full arrangement: all 133 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(135/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 · fretless bass
const bass = note(`<
  ~ A@2 B C D E F G A@2 B C D E F G ~@58 H@2 I@2 J K L ~@25 M N O P Q E F R@2 ~@12 D E F G ~
>`.pickRestart({
  A: "f#0/2", B: "f#1 e1", C: "d1 c#1", D: "b1", E: "g1", F: "d1", G: "c#1 f1", H: "b0/2", I: "a#0/2", J: "b0",
  K: "c#1 d1", L: "a#0", M: "b0@3 c#1", N: "d1 e1", O: "b0@3 d1", P: "e1", Q: "f#1", R: "[c#1@8 f1@17 ~@7]/2",
})).s("gm_fretless_bass").gain(0.36)

// other · synth brass 1
const synth_brass_1 = note(`<
  ~@18 A@2 B@2 A@2 B@2 A@2 B@2 C@2 D E ~@17 F@2 G H I@2 J K F@2 G H I@2 J K A@2 B@2 A@2 B@2 ~@16 F@2 G H I@2 J K F@2 G H
  I@2 J K L ~@8 F@2 G H I@2 J K F@2 G H ~@5
>`.pickRestart({
  A: "b2 ~ b3 ~ b2 ~ b3 ~ b2 ~ b3 ~ b2 ~ b3 ~", B: "a#2 ~ a#3 ~ a#2 ~ a#3 ~ a#2 ~ a#3 ~ a#2 ~ a#3 ~",
  C: "g2 ~ g3 ~ g2 ~ g3 ~ g2 ~ g3 ~ g2 ~ g3 ~", D: "c#3 ~ c#4 ~ c#3 ~ c#4 ~ c#3 ~ c#4 ~ c#3 ~ c#4 ~",
  E: "f2 ~ f3 ~ f2 ~ f3 ~ f2 ~ f3 ~ f2 ~ f3 ~", F: "f#3 ~ f#4 ~ f#3 ~ f#4 ~ f#3 ~ f#4 ~ f#3 ~ f#4 ~",
  G: "f#3 ~ f#4 ~ f#3 ~ f#4 ~ e3 ~ e4 ~ e3 ~ e4 ~", H: "a#3 ~ a#4 ~ a#3 ~ a#4 ~ a#3 ~ a#4 ~ a#3 ~ a#4 ~",
  I: "b3 ~ b4 ~ b3 ~ b4 ~ b3 ~ b4 ~ b3 ~ b4 ~", J: "d4 ~ d5 ~ d4 ~ d5 ~ d4 ~ d5 ~ d4 ~ d5 ~",
  K: "c#4 ~ c#5 ~ c#4 ~ c#5 ~ c#4 ~ c#5 ~ c#4 ~ c#5 ~", L: "b4 ~@2 b4 ~@2 b4 ~@2 b4 ~@6",
})).s("gm_synth_brass_1").gain(0.49)

// other · lead 2 sawtooth
const lead_2_sawtooth = note("<~@18 A B C D E B F G A B C D ~@37 A B C D E B F G ~@58>".pickRestart({
  A: "~@2 d5!2 f#4 d5 b4 d5", B: "~@5 d4 f#4 b4", C: "f#4@2 b3@2 f#4@2 c#5 ~ c#5@2 a#4 ~ a#4@2 a#4 ~",
  D: "~@6 a#4 ~ a#4@2 c#4@2 f#4@2 a#4@2", E: "~@2 d5 f#4 ~ d5 b4 d5", F: "~@2 b3@2 f#4@2 c#5 ~ c#5@2 a#4 ~ a#4@2 a#4 ~",
  G: "a#4@2 ~@4 a#4 ~ a#4@2 c#4@2 f#4@2 a#4 ~",
})).s("gm_lead_2_sawtooth").gain(0.17).pan(1)

// other · lead 2 sawtooth · soft notes
const lead_2_sawtooth_soft = note("<~@19 A ~ B ~ C ~ D ~ A ~ B ~@38 A ~ B ~ C ~ D ~@58>".pickRestart({
  A: "b4 d5 b4 d5 b4 ~@3", B: "a#4@2 a#4 ~ a#4@2 ~@10", C: "b4 d5 b4 ~@5", D: "~@2 a#4 ~ a#4@2 ~@10",
})).s("gm_lead_2_sawtooth").gain(0.08).pan(1)

// chords · tremolo strings
const tremolo_strings = note(`<
  A@3 B C D@2 E F G@3 H I J K@2 ~@13 L M N@2 ~@17 O P Q@2 R@2 S T G@3 H I J K@2 ~@8 U V W X U V W Y ~@4 Z@2 AA@2 O P Q@2
  R@2 S T G@3 H I J K@2 AB AC AD AE AF AG AH AI@2 AJ P Q@2 R@2 S T G@3 H I J K@2 ~
>`.pickRestart({
  A: "[f#5@11 e5]/3", B: "c#5 f#5", C: "g#5 c#5 f#5 c#6", D: "[d6@6 c#6 b5]/2", E: "a5@3 d6", F: "c#6@3 f5",
  G: "[a4@2 ~ a4@2 ~ b4@8 ~@2 a4@2 ~ a4@3 f#4@3 ~ g#4@3 f#4@2 ~@9 e6@8, f#6@5 ~, ~@2 a#4]/3", H: "d6 c#6",
  I: "[f#5,d6]", J: "[g4,b5,g6]", K: "[[f#4,a5]@8 f#5@3 [f5,f6]@5, f#6@11 ~@5, ~ c#4]/2", L: "[g4,g5] [b4,b5]",
  M: "[d5,d6] [g5,g6]", N: "[f5,f6]/2", O: "a4@2 ~ a4@2 ~ [f#4,b4]@9 ~, f#4@5 ~@11",
  P: "a4@2 ~ a4@3 f#4@3 ~ g#4@3 f#4@2 ~, e4@3 c#4@5", Q: "[f#4 e4 f#4@2, a#4]/2", R: "[f#4 d5, b4]/2", S: "[f#3,a4,d5]",
  T: "f#4@3 f4@5, c#5", U: "d5", V: "e5 f#5", W: "c#5", X: "g5 f#5", Y: "f#4", Z: "b4/2", AA: "[f5@3 g#5]/2",
  AB: "[b4,b5]@2 ~ [b4,b5]@3 ~@2 [b4,b5]@4 [c#5,c#6]@4", AC: "[d5,d6] [e5,e6]", AD: "[b4,b5]@2 [e4,e5] [f#4,f#5]",
  AE: "[g#4,g#5]@6 [a4,a5]@5 ~ [e5,e6]@4", AF: "[c#5,c#6]@3 [b4,b5]@3 [a4,a5]@2", AG: "[d5,d6]@3 [e5,e6]@3 [g5,g6]@2",
  AH: "[f#5,f#6]@3 [e5,e6]@3 [d5,d6]@2", AI: "[[c#5,c#6] [f5,f6]@3]/2", AJ: "a4@2 ~ a4@2 ~ [f#4,b4]@9 ~",
})).s("gm_tremolo_strings").gain(0.35)

// chords · string ensemble 2
const string_ensemble_2 = note(`<
  ~ A@6 B C D@6 E F ~@13 G@2 H@2 ~@13 G@2 H@2 I J K L M@2 E N I J O@2 M@2 E N ~@8 P@2 Q@2 R@2 S@2 ~@4 G@2 H@2 I J K L
  M@2 E N I J O@2 M@2 E N T U V W X Y Z AA@2 I J K L M@2 E N I J O@2 M@2 E N ~
>`.pickRestart({
  A: "[a3@3 b3@5 c#4@4 a3@2 g#3@2 f#3@4 e3@4 d3@4 ~@2 f#2@2 b2@8 d3@6 e3 d3, f#4@5 ~, ~@3 a#2 ~ [g2,g4], ~@7 c#3 d4@4]/6", // G
  B: "a2@3 d3, [d2,d4,f#4]", C: "[c#2,c#3,c#4]",
  D: "[a3@3 b3@5 c#4@4 a3@2 g#3@2 f#3@4 e3@4 d3@4 ~@2 f#2@2 b2@8 d3@6 e3 d3, f#4@5 ~, ~@3 a#2 ~ g2, ~@7 c#3 d4@4]/6",
  E: "a2@3 d3, [d2,d4]", F: "[c#2,c#3]", G: "[g4,b4]/2", H: "[~ f2, [g#4,c#5]]/2", I: "a3@3 b3@5, f#4",
  J: "c#4@2 a3 g#3", K: "f#3 e3", L: "d3@2 ~ f#2, ~ c#3", M: "[b2@8 d3@6 e3 d3, d4, ~ g2]/2", N: "c#3",
  O: "[f#3@2 e3@2 d3@2 ~ f#2, f#4, ~@3 c#3]/2", P: "[d5@2 e5 f#5, [f#4,b4]]/2", Q: "[~@2 g5 f#5, [f#4,a#4,c#5]]/2",
  R: "[d5@4 e5@2 ~ c#5, [f#4,b4], ~@3 f#5]/2", S: "[[a#4,c#5] [a#3,c#4], f#4]/2", T: "[b1,d5,f#5]@3 [c#2,e5,a5]",
  U: "[d2,f#5,a5] [e2,g#5,b5]", V: "[d5,f#5]@2 e5 f#5, b2", W: "[b4,e5]@3 [b4,e5,g#5], e2", X: "[f#2,a4,c#5]",
  Y: "[g2,b4,d5]", Z: "[d2,a4,d5]", AA: "[c#2,g#4,c#5]/2",
})).s("gm_string_ensemble_2").gain(0.32)

// bass · clavinet
const bass_2 = note("<~@47 A B C D ~@38 C D ~@42>".pickRestart({
  A: "~ g1 ~ g1 ~ g1 ~ g1", B: "~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1 ~", C: "~ c#2 ~ c#2 ~ c#2 ~ c#2",
  D: "~@2 f1@2 ~@2 f1@2 ~@2 f1@2 ~@2 f1 ~",
})).s("gm_clavinet").gain(0.51)

// other · celesta
const celesta = note("<~@35 A B C D E F C D E F C D ~@35 D E F C D ~@46>".pickRestart({
  A: "[d6,f#6,b6] ~ f#5 ~@3 d6 ~@3 [d6,f#6] ~@5", B: "b4 ~@5 f#5 ~ f#5 ~ f#5 ~ b5 ~ d6 ~",
  C: "~@2 c#6 ~@3 a#5 ~@3 f#5 ~ e5 ~@3", D: "~@2 f#5 ~ f#5 ~ a#5 ~ a#5 ~ c#6 ~ c#6 ~ f#6 ~",
  E: "[d6,f#6,b6] ~ f#5 ~@3 d6 ~@3 [d6,f#6] ~ b5 [d6,f#6] ~@2", F: "~@6 f#5 ~ f#5 ~ b5 ~ d6 ~ f#6 ~",
})).s("gm_celesta").gain(0.3)

// chords · synth strings 1
const synth_strings_1 = note(`<
  ~ A@3 B C D E F A@3 B C D E G ~@13 H@2 I@2 ~@13 H@2 I@2 J@3 B K L M G J@3 B K L M G ~@8 N@2 O@2 P Q R ~@5 H@2 I@2 J@3
  B K L M G J@3 B K L M G S T U V W X Y@6 B K L M G J@3 B K L M G ~
>`.pickRestart({
  A: "[~@6 c#4@10 [e4,a4]@6 [c#4,f#4]@5 ~ b3@4 c#4@5 ~@3 c#4@2 ~@2 c#4@2 ~@2, f#1@5 ~, a2@2 ~@3 e2]/3", // A5 F#5
  B: "c#4@3 ~ c#4@3 ~ c#4@3 ~ c#4@3 ~, d2 c#2",
  C: "[b3,f#4]@2 ~@2 f#4@2 ~ [b3,f#4]@4 ~ [b3,f#4] ~ [b3,f#4]@2, b1, ~@4 b3 ~@11", // B5
  D: "[b3,g4]@2 ~ [b3,g4]@2 ~ [b3,g4]@3 ~ [b3,g4]@2 ~ [b3,g4]@2 ~, g1", E: "[a3,f#4]!2 ~ [a3,f#4] ~ [a3,f#4]@2 ~, d2",
  F: "f#4@3 ~ f1@4, [c#3,g#3], ~@3 f4@5", G: "f#4@3 f4@5, [c#3,g#3]", H: "[g3,d4]/2", I: "[[c#3,c#4] f3, f4]/2",
  J: "[~@6 c#4@10 [e4,a4]@6 [c#4,f#4]@5 ~ b3@4 c#4@5 ~@3 c#4@2 ~@2 c#4@2 ~@2, f#2@5 e2]/3", // A5 F#5
  K: "[b3,f#4]@4 [b3,f#4]@2 ~ [b3,f#4]@5 [b3,f#4]@2 [b3,f#4]@2", // B5
  L: "[b3,g4]@2 ~ [b3,g4]@2 ~ [b3,g4]@3 ~ [b3,g4]@2 ~ [b3,g4]@2 ~", M: "[a3,f#4]!2 ~ [a3,f#4] ~ [a3,f#4]@2 ~",
  N: "[b2,b3]/2", O: "[a#2,a#3]/2", P: "[b2,b3]", Q: "[c#3,c#4] [d3,d4]", R: "[a#2,a#3]",
  S: "d4@2 ~ d4@3 ~@2 f#4@4 [a4,c#5]@4, b4@3 ~", T: "[a4,d5] [b4,e5]", U: "[f#4,b4]@2 [e4,g#4] [d4,a4]",
  V: "b3, e4@3 ~", W: "[c#4,f#4]", X: "[d4,g4]",
  Y: "[f#4@24 f4@24 ~@6 c#4@10 [e4,a4]@6 [c#4,f#4]@5 ~ b3@4 c#4@5 ~@3 c#4@2 ~@2 c#4@2 ~@2, ~@6 f#2@5 e2]/6", // A5 F#5
})).s("gm_synth_strings_1").gain(0.34)

// bass · synth bass 1
const bass_3 = note(`<
  ~@18 A B C D A B C D A B C D E F G H ~ A B C D A B C D A B C D ~@4 I J K D A F L M I J K D A F L M A B C D A B C N ~@8
  A B C D E F ~@2 I J K D A F L M I J K D A F L M ~@9 I J K D A F L M I J K D ~@5
>`.pickRestart({
  A: "~ b1 ~ b1 ~ b1 ~ b1", B: "~@2 b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1 ~", C: "~ a#1 ~ a#1 ~ a#1 ~ a#1",
  D: "~@2 a#1@2 ~@2 a#1@2 ~@2 a#1@2 ~@2 a#1 ~", E: "~ g1 ~ g1 ~ g1 ~ g1", F: "~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1 ~",
  G: "~ c#2 ~ c#2 ~ c#2 ~ c#2", H: "~@2 f1@2 ~@2 f1@2 ~@2 f1@2 ~@2 f1 ~", I: "~ f#1 ~ f#1 ~ f#1 ~ f#1",
  J: "~@2 f#1@2 ~@2 f#1@2 ~@2 f#1@2 ~@2 f#1 ~", K: "~ f#1 ~ f#1 ~ e1 ~ e1", L: "~ d2 ~ d2 ~ d2 ~ d2",
  M: "~@2 c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~@2 c#2 ~", N: "~ a#1 ~ a#1 ~@4",
})).s("gm_synth_bass_1").gain(0.5)

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

// drums · rim
const rim = s("rim").struct("<~@9 A B C@6 ~@19 D ~@3 D ~@3 D ~@30 A B C@5 E ~ D ~@43 A B C F ~>".pickRestart({
  A: "x ~ x ~@3 x ~@3 x!2 ~ x!2 ~", B: "~@2 x ~ x ~ x ~@4 x ~ x!2 ~", C: "x ~ x ~ x ~ x ~@3 x!2 ~ x!2 ~",
  D: "~@3 x!2 ~@3", E: "~@3 x ~@12", F: "x ~ x ~ x ~ x ~@3 x!2 ~ x!3",
})).gain(0.48)

// drums · rim · soft notes
const rim_soft = s("rim").struct("<~@9 A B C@6 ~@58 A B C@5 ~@46 A B C@2 ~>".pickRestart({
  A: "~ x!2 ~", B: "x ~@3 x!2 ~@2", C: "~ x",
})).gain(0.24)

// drums · snare
const snare = s("sd").struct(`<
  ~@9 A@7 B ~@8 C A@4 ~@19 D E A@7 F A@7 G A@15 E ~@6 D E A@7 F A@7 G ~@8 H A@7 F A@8 ~
>`.pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@7 x ~ x!2", C: "~@2 x ~ x ~@3 x ~ x ~ x!4", D: "~ x!3", E: "x ~ x ~ x ~ x ~ x ~ x ~ x!4",
  F: "~@4 x ~@2 x ~@2 x ~ x!4", G: "~@2 x ~ x ~ x ~ x ~@3 x ~ x!2", H: "~@8 x ~ x ~ x!4",
})).gain(0.72)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@25 A ~@23 B ~@8 A ~@7 C D@8 ~@14 B ~@8 A ~@7 C ~@16 A ~@9>".pickRestart({
  A: "~@11 x ~@4", B: "x", C: "~@5 x ~@2", D: "~@7 x ~@7 x",
})).gain(0.24)

// drums · clap
const clap = s("cp").struct("<~@18 A@12 ~@5 A@40 ~@8 A@24 ~@9 A@12 ~@5>".pickRestart({
  A: "~ x ~ x",
})).gain(0.56)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@9 A@8 ~@9 B C@3 ~@7 D E ~@2 D E ~@2 D E ~@4 F G H I F G H I F G H I F G H I F G H I F G H@2 A@8 ~@2 D E ~@4 F G H I
  F G H I F G H I F G H I ~@9 F G H I F G H I F G H I A@3 J ~
>`.pickRestart({
  A: "x!8", B: "~ x!3", C: "x!4", D: "x ~ x!3 ~ x!3 ~@3 x ~@3", E: "x", F: "~@4 x ~@3 x!2 ~@2 x ~@3",
  G: "x!2 ~@2 x ~@3 x!2 ~@2 x ~@3", H: "x!2 ~@2 x ~@3 x ~@3 x!2 ~@2", I: "x ~@3 x!2 ~@2 x ~@3 x!2 ~@2", J: "x!7 ~",
})).gain(0.24)

// drums · open hat
const open_hat = s("oh").struct("<~@26 A@4 ~@7 B ~@3 B ~@3 B ~@5 A@24 ~@10 B ~@5 A@16 ~@9 A@12 ~@3 B ~>".pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~@7 x",
})).gain(0.48)

// drums · crash
const crash = s("cr").struct(`<
  ~ A ~@7 A ~@7 A@2 ~@3 B@12 A@2 ~@3 A ~@3 B@32 A ~@7 B@24 A ~@8 B@12 A ~@3 A
>`.pickRestart({
  A: "x", B: "x!4",
})).gain(0.24)

// drums · ride
const ride = s("rd").struct("<~@22 A@12 ~@9 A@32 ~@8 A@24 ~@9 A@12 ~@5>".pickRestart({
  A: "x!4",
})).gain(0.56)

// drums · vibraslap
const vibraslap = s("vibraslap:0").struct("<~@38 A ~@3 A ~@3 A ~@39 A ~@46>".pickRestart({
  A: "~ x",
})).gain(8.46)

// drums · agogo bells
const agogo_bells = s("agogo:2").struct("<~@38 A ~@3 A ~@3 A ~@39 A ~@46>".pickRestart({
  A: "~@12 x!2 ~@2",
})).gain(2.55)

// drums · agogo bells
const agogo_bells_2 = s("agogo:4").struct("<~@38 A ~@3 A ~@3 A ~@39 A ~@46>".pickRestart({
  A: "~@15 x",
})).gain(2.55)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@36 A ~@2 B A ~@2 B A ~@38 B A ~@48>".pickRestart({
  A: "~@3 x!5", B: "~ x ~ x ~ x ~@2",
})).gain(2.03)
// … 52 more lines

More by Eiffel 65