Strudelify

Vorrei

Lunapop

KeyD majorTempo140 bpm
0:00/0:00
// Vorrei — Lunapop
// 140 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 7 electric guitar jazz (copy of ch 3 electric guitar clean)
// note: Full arrangement: all 81 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(140/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
const piano = note(`<
  A@3 B@4 C@4 D E@4 B@4 C@4 D F G@6 B@4 C@4 D H@3 I@2 J K L@2 J K M N O P Q@2 R S@3 T@4 U@4 V W X Y Z AA AB AC AD@3
>`.pickRestart({
  A: "[~@12 f#5@2 ~@6 a4@4 f#4@4 f#5@2 ~@6 b4@4 f#4@4 e5@2 f#5 ~, ~@14 a5@13 ~ a4@4 b2@13 ~@3, ~ [d3,d4] b3, ~@30 d5@13 ~ d4@4]/3", // D
  B: "[g5 ~ g5@2 ~@6 d5@2 ~@6 c#5@2 ~@4 e4@4 [a4,f#5]@2 ~@6 a4@4 f#4@4 f#5@2 ~@6 b4@4 f#4@3 ~ [d4,c#6]@4, [g2,g3] [a2,a3] [d3,d4] b3, ~@4 g4@4 d4@4 g4@4 ~@4 a4@4 ~@20 a4@4 b2@13 ~@3, ~@6 g5@4 ~@4 d5@4 ~@4 e5@5 ~@3 a5@13 ~@3 d6@12 ~ [e5,a5]@5]/4", // D Dmaj7 G A D A5
  C: "[b5 ~ b5@2 ~@6 a5@2 ~@6 f#5@2 ~@6 d5@2 [a4,g5]@2 ~@6 a4@4 ~@2 d5@2 e5@2 ~@10 f#4@4 e5@2 f#5@2, [g2,g3] [a2,a3] [d3,d4] b3, ~@4 g4@4 d4@4 g4@4 ~@4 a4@4 e4@4 ~@12 f#4@4 a4@6 ~@2 b4@9 ~@3, ~@3 b5@2 ~@2 g5@2 ~@2 g5@2 ~@2 f#5@4 ~@4 f#5@5 ~@4, ~@12 b2@3 d4]/4", // A7 G A D
  D: "g4 ~ a4@2 b4@2 c#5@2 d5@2 e5 ~ f#5@2 g5@2, [g2,g3], ~ d4 b3 d4", // G
  E: "[a4@2 b4@2 c#5@2 d5@2 e5@2 f#5@2 g5@2 ~@14 f#5@2 ~@6 a4@4 f#4@4 f#5@2 ~@6 b4@4 f#4@4 e5@2 f#5 ~, a2@32 [d3,d4]@16 b2@13 ~@3, a3 a3 ~ b3, ~@4 e4@4 c#4@4 e4@4 ~@28 a4@5 ~@11 d4@4, ~@14 a5@11 ~@5 a5@13 ~@3 d5@13 ~@5]/4", // D
  F: "a4 b4 c#5 d5 e5 f#5 g5 d5, [a2,a3], ~ e4 c#4 e4", // A
  G: "[~@10 [d5,f#5,c#6]@2 ~@10 [f#5,d6]@2 ~@2 [f#5,c#6]@2 d4@2 ~@6 d5@2 ~@6 g4@2 ~@12 d5@2 f#5@2 ~@6 a4@4 f#4@4 f#5@2 ~@6 b4@4 f#4@4 e5@2 f#5 ~, [d3,d4]@12 ~@4 [b2,b3]@16 [g2,g3]@15 ~ [a2,a3,e4,a4]@16 [d3,d4]@16 b3@16, ~@4 a4@4 f#4@8 ~@8 f#4@6 g5@5 ~@3 g5@4 [d5,g5,d6]@4 a5@13 ~@3 a5@13 ~@3 d5@13 ~@5, ~@5 d5@4 ~@3 a4@4 ~@4 b4@11 ~@5 g4@4 d4@4 ~@2 e5@11 ~@19 a4@5 ~@11 d4@4, ~@6 [f#5,d6]@4 ~@4 [f#5,d6]@7 ~@9 d6@7 ~@9 c#6@18 ~@16 b2@13 ~@3]/6", // Dmaj7 D F#5 D B G A5 D …
  H: "[a4@2 b4@2 c#5@2 d5@2 e5@2 f#5@2 g5@2 ~@12 [d5,f#5,c#6]@2 ~@10 [f#5,d6]@2 ~@4 d4@3 ~, [a2,a3]@4 [d3,d4]@3 ~ [b2,b3]@4, ~@4 e4@4 c#4@4 e4@4 ~@4 a4@4 f#4@8 ~@8 f#4@7 ~, ~@14 d5@6 ~ d5@4 ~@3 a4@4 ~@4 b4@11 ~, ~@22 [f#5,d6]@4 ~@4 [f#5,d6]@7 ~@5 [f#5,c#6]@6]/3", // Dmaj7 D A D B D F#5
  I: "[[g2,g4,d5,b5]@5 ~ [g2,b3,d4,g4]@4 [g#2,c4,d#4,g#4]@4 [c#4,e4,a4]@6 [a3,e4,g4,a4] ~ [a3,e4,g4,a4] ~ [e4,g4,a4] ~ [e4,g4,a4] ~ [a3,e4,g4,a4]@3 ~, ~@7 a2@9, ~@12 a3 ~@3]/2", // G G# A A7
  J: "d4@3 ~@2 [d4,g4]@2 ~, g2, g4@9 ~@7, b3@5 ~ b3@6 ~@4", // G5
  K: "[c#4,a4]@5 ~ a4@3 ~ [e4,a4]@5 ~, a2@15 ~, e4@9 ~@7, ~@3 c#4@3 ~@2", // F#m A5
  L: "[[d3,d4,f#4,a4]@5 ~ [c#4,f#4,a4]@3 ~@3 b3@7 ~ b3@3 ~ a3@3 ~ a3@3 ~, ~@3 c#3@3 [b2,d4,f#4]@6 [a2,d4,f#4]@4]/2", // D F#m Bm D
  M: "[d3,d4,f#4,a4] [c#3,c#4,f#4,a4]", N: "b3@7 ~ b3@8, [b2,d4,f#4]", O: "b3@5 ~ b3@4 e4@5 ~, [e2,g4], e4 ~",
  P: "e4@6 ~@6 c#4@3 ~, a2@15 ~, c#4@5 e4@3, a3@4 ~@2 a3@9 ~, ~ a4",
  Q: "[a3@3 ~ a3@3 ~ [c#2,c#3,a3,c#4]@7 ~ b3@7 ~ b3@7 ~, [d2,d3,d4,f#4]@7 ~ f#4@24, ~ [b1,b2,d4]]/2", // F#m D Bm
  R: "d4@2 ~@3 g4@3, [g1,g2]@15 ~, g4@9 ~@7, b3@3 ~ b3@12, ~@3 d4@5", // G
  S: "[~@12 f#4@2 ~@6 a4@4 f#4@4 ~@8 b4@4 f#4@4 e4@2 f#4 ~, [a1,a2,c#4,e4,a4]@14 a4@5 ~@9 a4@4 b2@13 ~@3, ~ d3 b3, ~@16 d4@14 d4@13 ~@5]/3", // A
  T: "[g4 ~ g4@3 ~ g4@4 d4@2 ~@6 c#4@2 ~@2 e4@5 ~ f#4@2 ~@6 a4@4 f#4@4 ~@8 b4@4 f#4@4 [d4,c#5]@4, [g2,g3] [a2,a3] [d3,d4] b3, ~@12 g4@4 ~@4 a4@4 ~@6 a4@5 ~@9 a4@4 b2@13 ~@3, ~@7 d4@2 ~@14 d5@6 ~@3]/4", // Dmaj7 G A D
  U: "[~@2 b4@2 ~@6 a4@3 ~@5 f#4@2 ~@6 d4@2 g4@2 ~@6 a4@4 ~@4 e4@2 ~@10 f#4@4 e3@2 f#3@2, [g2,g3]@8 [a2,a3]@8 d3@7 f#4@4 ~@3 d4@2, ~@4 g4@4 d4@4 ~@10 g4@4 ~@4 f#4@8 ~@2 f#4@4 a4@6 ~@2 b4@9 ~@3, ~@3 b4@2 ~@2 g4@2 ~ a4@2 e4@2 ~@2 d4@5 d4@3 b3@8, ~@12 b2@3 ~]/4", // G A
  V: "~@2 a3@2 b3@2 c#4@2 d4@2 e4 ~ f#4@2 g4@2, [g2,g3]", W: "~ b3 c#4 d4 e4 f#4 g4 a4, [a2,a3]",
  X: "[a3,a4]@7 ~ [g3,g4]@8", Y: "[f#3,f#4] [e3,e4]", Z: "f#3@3 ~@2 f#3@3, [d2,a3], d3@2 ~ d3@5",
  AA: "[g2,d3,g3]@3 [f#2,f#3]@3 [e2,e3]@2, b3@15 ~", AB: "[d3,f#3]@10 ~@2 f#3@3 ~, [d2,a3], ~@10 d3@5 ~",
  AC: "[g2,d3]@3 [f#2,f#3]@3 [e2,e3]@2, b3, g3@5 ~@3", // G5 F# E
  AD: "[~@8 d5@5 ~@3 d6@28 ~@4, a3@14 d5 f#5@29 ~@4, [d3,f#3]@2 a4@9 ~, d2@7 f#4@36 ~@5, ~@6 d4@37 ~@5]/3", // D
})).s("gm_piano").gain(0.46).pan(0.4)

// bass · electric bass finger
const bass = note(`<
  ~ A B C D E B C D E B C F@2 A B C D E B C D E B C D E G H ~ E B C D E B C D E B C D E G H I C D J@2 C D K B L D M B C
  N E B C D E B C D E B C D O P A Q E ~@4
>`.pickRestart({
  A: "d2@15 ~", B: "b1", C: "g1", D: "a1", E: "d2", F: "a1/2", G: "f#2", H: "g2", I: "a2",
  J: "[d2@3 c#2@3 b1@6 a1@2 a1@2]/2", K: "d2@7 ~ c#2@8", L: "e1", M: "d2 c#2", N: "a1@15 ~", O: "a1@7 ~ g1@8",
  P: "f#1 e1", Q: "g1@3 f#1@3 e1@2",
})).s("gm_electric_bass_finger").gain(0.55)

// bass · electric bass finger · soft notes
const bass_soft = note("<~@29 A ~@47 B C@3>".pickRestart({
  A: "a2", B: "g1@3 f#1@3 e1@2", C: "[d1@15 ~]/3",
})).s("gm_electric_bass_finger").gain(0.31)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~@30 A B C D E F G H I J K L M N O@2 P Q R@2 S T@2 U V W X Y Z AA A B C D E F AB H I J K AC AD AE AF AG AH@4 ~
>`.pickRestart({
  A: "~@3 a3, d3, ~@2 a3@3 ~@3, ~ d4", B: "~@12 a3@3 ~, b2, ~@2 a3@3 ~@3, ~ d4", C: "~ g3 ~ g3, g2@15 ~, ~ d4",
  D: "~@4 a3@4 e4@4 a3@3 ~, a2@15 ~", E: "~ d4, d3@15 ~, ~@4 a3@11 ~", F: "~@8 d4@7 ~, b2@15 ~, ~@4 a3@11 ~",
  G: "~@12 g3@3 ~, g2, ~@2 g3@3 ~@3, ~ d4", H: "~@12 a3@3 ~, a2@15 ~, ~@4 a3@7 ~@5, ~ e4",
  I: "~@8 d4@7 ~, d3@15 ~, ~@4 a3@11 ~", J: "~ d4, b2@15 ~, ~ a3@3", K: "~@3 g3, g2@3 ~, ~@2 g3@3 ~@3, ~ d4",
  L: "~@4 a3@4 e4@4 a3@3 ~, a2", M: "~ a3 d4 a3, d3", N: "~@4 a3@4 d4@4 a3@3 ~, f#2",
  O: "[g3@5 ~ g3@4 g#3@4 ~@2 a2@15 ~, ~@7 a3@3 ~@6]/2", P: "~@12 g3@3 ~, g2@15 ~, ~@2 g3@3 ~@3, ~@8 d4@7 ~",
  Q: "~@4 e3@4 ~@4 e3@3 ~, a2, ~ a3", R: "[d3@3 c#3@3 ~@4 a3 ~ [a2,a3]@4, ~@6 b2@5 f#4@5]/2",
  S: "~@3 d4, g2, ~ g3@3, ~ g4", T: "[~@8 b3@4 a3@2 ~@2 d4@7 ~ c#3@8, a2@15 [f#3,a3]@9 ~@8, ~ e3@3 ~@4]/2",
  U: "b2@2 ~ a3, ~ f#4, ~@5 d4@3", V: "~ e3 ~ e3, e2@15 ~, ~ b3", W: "~ a3 ~ a3, a2@15 ~, ~@4 c#4@3 ~",
  X: "~ d4 c#3@2, d3 ~", Y: "~@3 d4, b2@15 ~, ~ b3@3, ~ f#4", Z: "~@4 g3@4 d4@4 g3@3 ~, g2@15 ~", AA: "[a2,e3,a3]@15 ~",
  AB: "~@12 g3@3 ~, g2, ~@4 g3@7 ~@5, ~ d4", AC: "~@4 e3@4 a3@7 ~, a2", AD: "~@2 d4 a3 g3@2 d4 a3, a2 g2",
  AE: "f#3@2 d4 a3 e3@2 d4 a3, f#2@8 e2@7 ~", AF: "~@4 a3@4 d4@4 a3@3 ~, d3@15 ~",
  AG: "~@3 e3, [g3,d4]@4 d3@6 a3@5 ~, ~@2 a3@6 d4@7 ~, ~@3 f#3@3 ~@2", // G5
  AH: "[~@2 a3@2 d4@2 a3@2 d4 a3 ~@3 a3 e3 ~ d4@12 ~@4, d3@18 ~@2 d3@7 ~@3 d3@18 ~@16, ~@16 g3@6 f#3@6 ~@3 f#3@21 ~@12, ~@24 d4@5 ~@35]/4",
})).s("gm_electric_guitar_clean").gain(0.44).pan(0.7)

// chords · synth strings 1
const synth_strings_1 = note(`<
  ~ A@3 B@4 C@4 D@2 E@3 F@8 G@4 H I@3 F@8 J@4 H K L M@2 N O P@2 Q@2 R@2 N S E@3 T@8 U@3 V@7
>`.pickRestart({
  A: "[a3@16 ~@14 g4@17 ~, d4@47 ~, f#4@31 ~@17, ~@16 b3@31 ~]/3",
  B: "[[c#4,e4]@15 ~@32 g4@16 ~, a3@31 ~ b3@31 ~, ~@15 f#4@32 ~@17, ~@16 d4@47 ~]/4", // C#m
  C: "[[c#4,e4]@15 ~@32 g4@16 ~, a3@31 b3@32 ~, ~ d4@3]/4", D: "[[c#4,e4]@15 ~]/2",
  E: "[a3@15 ~@17 g4@16, d4@47 ~, f#4@5 ~@3, ~@15 b3@32 ~]/3",
  F: "[[c#4,e4]@14 ~@33 g4@16 ~@49 g4@16, a3@31 ~ b3@31 ~ a3@32 b3@32, ~@15 f#4@32 ~@33 f#4@31 ~@17, ~@16 d4@47 c#4@16 ~ d4@48]/8", // C#m
  G: "[~ e4@15 ~@31 g4@16 ~, a3@31 ~ b3@32, c#4 d4@3, ~@8 f#4@15 ~@9]/4", H: "[a3,c#4]@15 ~",
  I: "[a3@15 ~@17 g4@16, d4@47 ~, f#4@31 ~@17, ~@15 b3@32 ~]/3",
  J: "[~ e4@15 ~@31 g4@17, a3@31 ~ b3@32, c#4@15 ~ d4@48, ~@16 f#4@31 ~@17]/4", K: "[b3,d4,g4]", L: "[c#4,e4]@7 ~",
  M: "[d4@5 c#4@6 ~ b3@11 ~ a3@8, f#4, a4@11 d4@20 ~]/2", N: "[b3,d4,g4]@15 ~", O: "[c#4,a4]@15 ~",
  P: "[d4@8 c#4@7 ~ d4@16, f#4, a4@15 b3@16 ~]/2", Q: "[[g3,b3]@15 ~ a3@14 ~@2, e4@15 ~, ~@15 c#4@15 ~@2]/2",
  R: "[d4@8 c#4@7 ~ b3@15 ~, f#4@31 ~, a3@14 ~ d4@16 ~]/2", S: "[a3,c#4,e4]@15 ~",
  T: "[[c#4,e4]@15 ~@32 g4@16 ~@49 g4@16, a3@31 ~ b3@31 ~ a3@31 ~ b3@31 ~, ~@15 f#4@32 ~@33 f#4@31 ~@17, ~@16 d4@47 c#4@16 ~ d4@47 ~]/8", // C#m
  U: "[[a3,c#4,e4]@23 ~ [b3,g4]@7 ~ f#4@7 ~ [c#4,e4]@8, ~@8 d4@5 ~@3, ~@32 a3@15 ~]/3", // A Em C#m
  V: "[[a3,f#4]@14 ~@2 [b3,g4]@5 ~ f#4@5 ~ [c#4,e4]@3 ~ f#4@15 ~ [b3,g4]@5 ~ f#4@4 ~@2 c#4@3 ~ [d4,f#4]@45 ~@3, d4@26 ~@6 d4@26 ~ e4@3 ~@50, ~@22 a3@24 ~@8 a3@53 ~@5]/7", // D Em C#m Em D
})).s("gm_synth_strings_1").gain(0.29)

// chords · synth strings 1 · soft notes
const synth_strings_1_soft = note("<~@8 A@3 ~ B@2 ~@7 C ~@7 C ~@7 C ~@7 C ~ D ~@3 E ~@15 C ~@13>".pickRestart({
  A: "[~@15 f#4@32 ~]/3", B: "[a3@15 ~]/2", C: "e4", D: "a4@7 ~", E: "e4@7 ~",
})).s("gm_synth_strings_1").gain(0.17)

// chords · piano
const piano_2 = note(`<
  ~ A B C D A B C D A B C E@2 A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D C D F@2 C D G B H D G B C
  D A B C D A B C D A B C I@2 J A K A K L@3
>`.pickRestart({
  A: "[d4,f#4,a4,d5]", B: "[b4,d5,f#5,b5]", C: "[g4,b4,d5,g5]", D: "[a4,c#5,e5,a5]", E: "[a4,c#5,e5,a5]/2",
  F: "[[d4,f#4,a4,d5]@3 [c#4,f#4,a4,c#5]@3 [b4,d5,f#5,b5]@6 [b4,d5,f#5,a5]@4]/2", G: "[d4,f#4,a4,d5] [c#4,f#4,a4,c#5]",
  H: "[e4,g4,b4,e5]", I: "[[a4,c#5,e5,a5]@3 [g4,b4,d5,g5]]/2", J: "[d4,f#4,a4,d5] [a4,c#5,e5,a5]",
  K: "[g4,b4,d5,g5]@3 [d4,f#4,a4,d5]@3 [a4,c#5,e5,a5]@2", L: "[d4,f#4,a4,d5]/3",
})).s("gm_piano").gain(0.2)

stack(piano, bass, bass_soft, electric_guitar_clean, synth_strings_1, synth_strings_1_soft, piano_2)

More by Lunapop