Strudelify

waiting for love

Avicii

KeyA majorTempo128 bpm
0:00/0:00
// waiting for love — Avicii
// 128 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5963520; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 122 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(128/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 · violin
const violin = note(`<
  ~@3 A B C D E F G@3 B C D E F H@2 I ~@8 J K L M N O P Q R@2 ~@18 J S T U V W X Y B Z B AA F AB@2 AC ~@32 J S T U V W X
  AD J S T U V W X AE AF ~
>`.pickRestart({
  A: "~@5 e5!3", B: "e5@2 c#5!2 c#5@2 b4!2", C: "b4 a4 a4@2 ~ e5!3", D: "e5@2 c#5!2 c#5@2 b4@2",
  E: "b4 c#5 c#5@2 ~ e5!3", F: "e5@2 c#5!2 f#5@2 c#5 b4",
  G: "[b4 a4 a4@2 ~@2 e4 c#5@3 b4 a4 ~@2 e4 c#5@3 b4 a4 ~ e5!3]/3", H: "[b4 a4 a4@2 ~@2 e4 c#5@3 b4 a4 ~@2 e4 c#5]/2",
  I: "c#5@2 b4 a4 ~@4", J: "f#4@3 e4 f#4@3 e4", K: "f#4 a4@2 a4 c#5!2 e5!2", L: "f#5@2 f#5@2 e5@3 e5",
  M: "c#5 b4 a4@6 c#5@2 c#5@2 e5@2 e5@2", N: "f#5!2 f#5@2 g#5@3 c#5", O: "c#5 b4@3 c#5@2 e5@2",
  P: "d5@3 c#5@3 b4@2 a4@4 ~@4", Q: "d5@3 c#5@3 d5@2 e5@4 ~@2 e5@2", R: "[f#5 e5 e5@10 ~@4]/2",
  S: "f#4 a4@3 c#5@2 e5@2", T: "f#5@3 f#5 e5@3 e5", U: "c#5 b4 a4@6 c#5@4 e5@4", V: "f#5@3 f#5 g#5@3 c#5",
  W: "c#5 b4 a4@6 c#5@4 a4@4", X: "b4@3 e4 f#4@3 e4", Y: "f#4 a4@3 ~@2 e5!2", Z: "b4 a4 a4@2 ~@2 e5!2",
  AA: "b4 c#5 c#5@2 ~@2 e5!2", AB: "[b4 a4 a4@2 ~ e4!2 c#5@3 b4 a4 ~@2 e4 c#5]/2", AC: "~@2 b4 a4 ~@4",
  AD: "f#4@2 a4@6 ~@2 c#4@2 c#4@2 c#4 e4", AE: "f#4@2 a4@6 ~@4 c#4 e4 f#4 a4", AF: "f#4 ~",
})).s("gm_violin").gain(0.4)

// other · pizzicato strings
const pizzicato_strings = note("<~@40 A B C D E F G H ~@40 A B C D E F G I ~@26>".pickRestart({
  A: "f#4 ~@2 e4 f#4 ~@2 e4", B: "f#4 a4 ~@2 c#5 ~ e5 ~", C: "f#5 ~@2 f#5 e5 ~@2 e5", D: "c#5 a4 ~@2 c#5 ~ e5 ~",
  E: "f#5 ~@2 f#5 g#5 ~@2 c#5", F: "c#5 a4 ~@2 c#5 ~ a4 ~", G: "b4 ~@2 e4 f#4 ~@2 e4", H: "f#4 a4 ~@2 a4 ~@3",
  I: "f#4@2 a4@2 ~@4 a4 ~@7",
})).s("gm_pizzicato_strings").gain(0.46)

// other · cello
const cello = note(`<
  ~@12 A B C D A B C E ~@19 F ~@15 G H I J K H I J D A B C D A B C E L M N O P Q R S ~@24 T U V W T U V X L M N Y Z AA
  AB AC ~@2
>`.pickRestart({
  A: "f#2 c#2", B: "d2", C: "d2 e2", D: "f#2", E: "f#2 ~", F: "f#3", G: "~@4 a3!2 g#3!2", H: "f#2!2 ~ f#2 c#2!2 ~ c#2",
  I: "d2!2 ~ d2!3 ~ d2", J: "d2!2 ~ d2 e2!2 ~ e2", K: "f#2!2 ~ f#2!3 ~ f#2", L: "f#3@3 e3 f#3@3 e3",
  M: "f#3 a3@3 c#4@2 e4@2", N: "f#4@3 f#4 e4@3 e4", O: "c#4 a3@3 c#4@2 e4 f#4", P: "f#4@2 f#4@2 g#4@3 c#4",
  Q: "c#4 b3@3 c#4@2 e4@2", R: "d4@3 c#4@3 b3@2 a3@4 ~@4", S: "d4@3 c#4@3 d4@2 e4@4 ~@4", T: "f#3!2 ~ f#3 c#3!2 ~ c#3",
  U: "d3!2 ~ d3!3 ~ d3", V: "d3!2 ~ d3 e3!2 ~ e3", W: "f#3!2 ~ f#3!3 ~ f#3", X: "f#3@2 a3@6 ~@2 c#3@2 c#3@2 c#3 e3",
  Y: "c#4 b3 a3@6 c#4@4 e4@4", Z: "f#4@3 f#4 g#4@3 c#4", AA: "c#4 b3 a3@6 c#4@4 a3@4", AB: "b3@3 e3 f#3@3 e3",
  AC: "f#3 a3@3 ~@4",
})).s("gm_cello").gain(0.4)

// other · pizzicato strings
const pizzicato_strings_2 = note("<~@40 A B C D E F G H ~@40 A B C D E F G H ~@26>".pickRestart({
  A: "f#3 ~@2 e3 f#3 ~@2 e3", B: "f#3 a3 ~@2 c#4 ~ e4 ~", C: "f#4 ~@2 f#4 e4 ~@2 e4", D: "c#4 a3 ~@2 c#4 ~ e4 ~",
  E: "f#4 ~@2 f#4 g#4 ~@2 c#4", F: "c#4 a3 ~@2 c#4 ~ a3 ~", G: "b3 ~@2 e3 f#3 ~@2 e3", H: "f#3 a3 ~@2 a3 ~@3",
})).s("gm_pizzicato_strings").gain(0.4)

// chords · piano
const piano = note(`<
  A B C D E F G H E F I J E F G H E F I J ~@6 K L M F N H M F K L ~@9 O P Q M F N H M F N R M F N H M F N S E F G H E F
  I T ~@6 K L M F N H M F K L U V W T U V P Q M F N H M F N R M F N H M F N H M F N H M F N H X@2
>`.pickRestart({
  A: "[a3,c#4,f#4] ~ [a3,c#4,f#4] [f#2,f#3] [g#3,c#4,f4,f#4] ~ [g#3,c#4,f4,f#4] [c#2,c#3], [f#2,f#3]@3 ~ [c#2,c#3]@3 ~", // F#m F# C# F# C#
  B: "[a3,d4,f#4] ~ [a3,d4,f#4] ~ [a3,d4,f#4] ~ [a3,d4,f#4] ~, [d2,d3]@15 ~", // D
  C: "[a3,d4,f#4]@3 e4 [b3,e4,f#4]@3 e4, [d1,d2] [e1,e2]", D: "f#4@2 a4@13 ~, [f#1,f#2,a3,c#4]@15 ~",
  E: "[a3,c#4,f#4]@2 ~ [f#2,f#3] [g#3,c#4,f4,f#4]@2 ~ [c#2,c#3], [f#2,f#3]@3 ~ [c#2,c#3]@3 ~, ~ [a3,c#4,f#4] ~ [g#3,c#4,f4,f#4]", // F#m F# C# F# C# F#m C#
  F: "[a3,d4,f#4]!4, [d2,d3]@15 ~", // D
  G: "[a3,d4,f#4]@2 ~ [d2,d3] [b3,e4,f#4]@2 ~ [e2,e3], [d2,d3]@3 ~ [e2,e3]@3 ~, ~ [a3,d4,f#4] ~ [b3,e4,f#4]", // D Bsus4 E D E D Bsus4
  H: "[a3,c#4,f#4]!4, [f#2,f#3]@15 ~", I: "[a3,d4,f#4]@3 e4 [b3,e4,f#4]@3 e4, [d2,d3] [e2,e3]",
  J: "f#4@2 a4@13 ~, [f#2,f#3,a3,c#4]@15 ~", // F#m
  K: "[a3,d4,f#4]@3 [a3,d4,f#4]@3 [a3,d4,f#4]@2 [e2,e3,b3,e4,f#4]@8, [d2,d3] ~", // D Esus2 D
  L: "[a3,d4,f#4]@3 [a3,d4,f#4]@3 [a3,d4,f#4]@2 [a3,c#4,g#4]@8, [f#2,f#3]@15 ~", // D Amaj7 F#
  M: "[a3,c#4,f#4]!2 [g#3,c#4,f4,f#4]!2, [f#2,f#3] [c#2,c#3]", N: "[a3,d4,f#4]!2 [b3,e4,f#4]!2, [d2,d3] [e2,e3]",
  O: "~@2 [a3,d4,f#4]!2", P: "[d2,d3,a3,d4,f#4] [e2,e3,b3,e4,f#4]", Q: "[f#2,f#3,a3,c#4,f#4]@15 ~",
  R: "[a3,c#4,f#4]@4 [f#4,a4]!2 [f#4,g#4]!2, [f#2,f#3]@15 ~", S: "[a3,c#4,f#4] ~, [f#2,f#3]@15 ~", T: "[f#2,f#3]@15 ~",
  U: "[f#2,f#3] [c#2,c#3]", V: "[d2,d3]@15 ~", W: "[d2,d3] [e2,e3]", X: "[~ f#4@31, [f#2,f#3,a3,c#4]@31 ~]/2",
})).s("gm_piano").gain(0.25)

// chords · piano · soft notes
const piano_soft = note("<~@20 A B C D A B ~@10 E@3 ~@3 C D A F ~@26 A B C D A B ~@44>".pickRestart({
  A: "[a3,c#4,f#4]!2 [g#3,c#4,f4,f#4]!2, [f#2,f#3] [c#2,c#3]", B: "[a3,d4,f#4]!4, [d2,d3]@15 ~",
  C: "[a3,d4,f#4]!2 [b3,e4,f#4]!2, [d2,d3] [e2,e3]", D: "[a3,c#4,f#4]!4, [f#2,f#3]@15 ~",
  E: "[[a4,d5,f#5]!4 [a4,d5,f#5]!4 [a4,d5,f#5]!4, [d1,d2]@23 ~]/3", F: "[a3,d4,f#4]!2 ~@2, [d2,d3]@15 ~",
})).s("gm_piano").gain(0.17)

// drums · kick
const kick = s("bd").struct("<~@4 A@6 ~@2 A@6 ~@30 B ~@7 A@6 ~@2 A@6 ~@26 B ~@7 A@6 ~@2 A@6 ~@4>".pickRestart({
  A: "x!4", B: "x",
})).gain(0.27)

// drums · rim
const rim = s("rim").struct("<~@5 A ~ B ~@7 C ~@51 C ~@54>".pickRestart({
  A: "~ x", B: "~@5 x ~@2", C: "~@5 x!3",
})).gain(0.21)

// drums · snare
const snare = s("sd").struct("<~@7 A ~@40 B@3 C D E F ~@41 B@3 C D E F ~@19>".pickRestart({
  A: "~ x", B: "~ x ~ x", C: "~ x!3", D: "x!4", E: "x ~ x ~ x!4", F: "x!8",
})).gain(0.31)

// drums · hihat
const hihat = s("hh").struct("<~@7 A ~@4 B@7 C ~@36 B@6 D E B@7 C ~@32 B@6 D E B@6 D E ~@2>".pickRestart({
  A: "~@5 x ~@2", B: "~ x ~ x ~ x ~ x", C: "~ x ~@6", D: "x!2 ~ x!2 ~@2 x", E: "x!2 ~@6",
})).gain(0.27)

stack(violin, pizzicato_strings, cello, pizzicato_strings_2, piano, piano_soft, kick, rim, snare, hihat)

More by Avicii