Strudelify

Volo cosi

Paola Turci

KeyD majorTempo80 bpm
0:00/0:00
// Volo cosi — Paola Turci
// 80 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// 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(80/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 B C@2 D E@6 F G@7 H@4 I@2 J@2 K L M N O P Q@2 J@2 R@2 S@6 F T U@5 V W X Y@3 Z AA@2 I@2 J@2 K L M N AB@2 AC AD@2 AE
  AF AG@2 AH@3
>`.pickRestart({
  A: "g3@3 f#3@3 e3@10", B: "g2@3 f#2@3 e2@10", C: "[~@16 f#2@3 e2@3 d2@9 ~, d1@31 ~]/2", D: "g1",
  E: "[g2@3 f#2@3 e2@18 d1@16 f#3@3 e3@3 ~@3 d1@6 ~@17 g2@3 f#2@3 e2@18, ~@46 d3@9 ~ g1@32 ~@8]/6", F: "d1",
  G: "[f#3@3 e3@3 ~@4 d2@13 ~ g1@2 ~@9 g2@3 ~ g2 a1@9 a2@5 a1 a2 ~@7 f#2@7 f#1 f#2 f#1@15 ~ g1@2 ~@9 g2@3 ~ g2 a1@8, ~@6 d3@18 ~@2 g1@11 ~ g1@2 ~@16 f#1@12 ~@22 g1@11 ~ g1@2 ~@8]/7",
  H: "[~ a2@5 a1 a2 ~@7 f#2@7 f#1 f#2 f#1@6 f#2 f#2@2 f#1 e2 c#2 f#2 e2 f#1@2 d2@6 ~ d2@2 ~ d2@4 d1@2 d2@5 ~ d2 ~, ~@2 f#1@3 ~@11]/4",
  I: "[d2@4 d1@2 d2 d1 g1@6 ~ g1@2 ~ g1@6 g1 ~ g1@2 ~@2 g1 ~]/2",
  J: "[g1@2 ~ g1@2 g2 e2 g1 a1@6 ~ a1@2 ~ a1@6 e2 f#2 a2@5 a1]/2", K: "a1@3 a2@3 a1@2 f#1@2 f#1@5 f#2",
  L: "~@2 f#2@3 c#2 f#2 f#1 f#1@8", M: "~ f#2 c#2 f#2 f#1@2 f#2 f#1 g1@2 g1@5 g2", N: "~@2 g2@3 d2 g2 g1 g1@8",
  O: "~ g2 d2 g2 g1@2 g2 g1 a1@2 a1@5 a2", P: "~@2 a2@3 e2 a2 a1 a1@6 ~ a1",
  Q: "[a2 ~ e2@2 a1 e2 a1 ~ g1@6 ~ g1@2 ~ g1@6 g1 ~ g1@2 ~@2 g1 ~]/2",
  R: "[a1@3 a2@3 a1@2 g1@6 ~ g1@2 ~ g1@6 g1 ~ g1@2 ~@2 g1 ~]/2",
  S: "[g1@2 ~ g1@2 g2 e2 g1 a1@6 ~ a1@2 ~ a1@6 g3@3 f#3@3 e3@10 f#3@3 e3@3 d3@6 d2@3 ~@17 g2@3 f#2@3 e2@18, ~@7 g1@4 ~]/6",
  T: "f#3@3 e3@3 ~@3 d1@6 ~, ~@6 d3@9 ~",
  U: "[~@16 g2@3 f#2@3 ~@10 e1@7 ~ d1@16 f#2@3 e2@3 ~@6 d1@11 ~, g1@2 ~@3, ~@22 e2@18 ~@22 d2@17 ~]/5",
  V: "g1@2 ~@9 g2@3 ~ g2, ~@2 g1@11 ~ g1@2", W: "a1@9 a2@5 a1 a2", X: "f#1@7 f#2 f#1@7 c#2",
  Y: "[f#2@4 f#2@4 g1@2 ~@9 g2@3 ~ g2 a1@9 a2@5 a1 a2 f#1@6 f#2!2, ~@10 g1@11 ~ g1@2 ~@24]/3",
  Z: "f#2@6 ~ f#2!2 g2 f#2 e2 f#2@4", AA: "[f#1@2 f#2 c#2@2 f#1 c#2 ~ d2@6 ~ d2@2 ~ d2@4 d1@2 d2@5 ~ d2 ~]/2",
  AB: "[~ g2 d2 g2 g1@2 g2 g1 a1@6 ~ a1@2 ~ a1@5 e2 a2 a1 a2@2 a2@3 a1]/2", AC: "a2 a1 a2!3 e2 a1 ~ a1@3 ~@5",
  AD: "[~@8 g1@6 ~ g1@2 ~ g1@6 g1 ~ g1@2 ~@2 g1 ~]/2", AE: "g1@2 ~ g1@2 g2 e2 g1 d2@6 ~ d2",
  AF: "d2@6 a1 b1 d2@4 d2@2 d2@2", AG: "[f#2@3 e2@3 d2 ~ g1@6 ~ g1@2 ~ g1@6 g1 ~ g1@2 ~@2 g1 ~]/2",
  AH: "[g1@2 ~ g1@2 g2 e2 g1 ~@2 d1@30 ~@8, ~ d2@4 ~]/3",
})).s("gm_fretless_bass").gain(0.46)

// other · overdriven guitar
const overdriven_guitar = note("<~@34 A B@4 C@3 ~@32 D@2 E@2 F@2 ~>".pickRestart({
  A: "~ g5", B: "[g5@6 f#5@2 g5@16 b5@11 c6 b5@3 ~ b5@14 a5@7 ~@3, ~@40 a5 ~@23]/4",
  C: "[a4@6 a4 g4 a4 e4@13 d4 c#4 g4@2 ~ f#4@3 e4@10 ~@8]/3", D: "[b5@3 b5@2 ~ a5@2 b5@11 c6 b5@2 c6 b5@9]/2",
  E: "[f#5@3 ~ d6@8 e6@3 f6]/2", F: "[e6@2 f6@2 e6 d6 c6@2 b5@24]/2",
})).s("gm_overdriven_guitar").gain(0.26).pan(0.7)

// chords · string ensemble 2
const string_ensemble_2 = note("<~@19 A@4 B@2 C@2 D@2 E@2 F@2 G@4 H@4 ~@16 A@4 B@2 C@2 D@2 E@2 I@3 J@8 ~>".pickRestart({
  A: "[~ f#5@4 d5@2 e5]/4", B: "[b4@2 d5@4 e5 b4]/2", C: "[c#5@4 d5@3 ~ e5@16 f#5@8, ~ c#5@3]/2",
  D: "[[e5,a5] [c#5,f#5]@3]/2", E: "[[c#5,f#5] [d5,g5]@3]/2", F: "[[d5,g5] [e5,a5]@3]/2",
  G: "[[a4,a5]@3 [g4,g5]@3 [f#4,f#5]@2 [d5,g5,d6]@32 e5@16 f#5@8, ~@5 c#5@3]/4", // A G F# G5
  H: "[[e5,a5] [d5,g5,d6]@4 [c#5,e5]@2 ~]/4", I: "[[d5,g5] [e5,a5]@4 ~]/3",
  J: "[~ [d5,g5,d6]@4 [d5,f#5]@4 [d5,g5,d6]@4 [d5,f#5]@3]/8", // G5 D G5 D
})).s("gm_string_ensemble_2").gain(0.36).pan(0.6)

// chords · piano
const piano = note(`<
  A@2 B C D@2 E@5 F@2 G@2 H@8 I J@8 K@7 L@5 M N O P Q R@2 ~ S T U@8 V@8 W@2 X@2 Y@2 Z@2 AA@2 ~
>`.pickRestart({
  A: "[[g2,b3,d4,f#4]@7 ~]/2", B: "[d2,f#4,a4]@15 d5", C: "[c#4,a4,c#5]@7 ~, d2 ~@15",
  D: "[~@3 b3@13 ~@5 b4@2 b4@7 ~@2, g2@29 ~@3, f#4@17 ~@15]/2",
  E: "[~@4 f#5@3 ~@4 a4@11 ~@2 f#3@3 e3@3 d3@9 ~@4 b3@13 ~@3 e5 b5@2 b5@7 a5@8 ~@3, ~@8 [d2,f#4,c#5]@14 ~@2 d2@15 ~ [g2,f#4]@16 ~ a4@16 ~@7, ~@58 b4@15 ~@7]/5", // Dmaj7 Gmaj7
  F: "[[f#4,c#5]@12 ~@2 c#6@3 a5@3 c#6@3 ~@9, d2@15 ~]/2", // F#5
  G: "[~@10 b3 ~ b3@9 ~ g3 ~@4 c#4 b3@2 e4@2, ~@8 [g2,g3]@13 g2@2 ~ [a2,a3]@8, ~@3 g4@3 ~@2, ~@12 d4@8 ~@7 e4@3 c#4 ~]/2", // G A
  H: "[~ c#4 ~@2 e4@3 ~ [f#2,c#4,f#4]@4 [a#3,c#4,f#4]@2 ~@10 f#2@4 f#4@2 ~ [a#3,c#4,f#4]@7 ~@4 b3 ~ b3@9 ~ g3 ~ c#4@3 b3@3 [a2,a3,b3,c#4]@10 [f#2,c#4,f#4]@4 [a#3,c#4,f#4]@2 ~@10 f#2@4 f#4@2 ~ [a#3,c#4,f#4]@7 ~@2 [a3,f#4]@4 f#4@2 ~@4 d2@4 ~@6 [a3,d4,f#4]@3 ~, ~@2 b3@4 ~@2 a#3@3 ~@3 f#2@10 ~@6 f#2@8 ~@2 [g2,g3]@13 g2@2 ~ [a2,a3]@6 ~@16 f#2@10 ~@6 f#2@8 ~@2 d2@10 ~@6 d2@8, ~@15 [a#3,c#4,f#4]@13 ~@16 g4@12 ~@55 [d4,f#4]@7 d4@6 ~@4, ~@44 d4@8 ~@20 a#3@3 ~@4 [a#3,c#4,f#4]@13 ~@12 d4@6 d3@10 ~@2 d3@4 ~@2, ~@111 a3@5 ~@3 a3@4 ~@5]/8", // F#5 F# A F#5 F# D G A …
  I: "[a3,d4,f#4]@2 ~ [a3,d4,f#4]@3 d3@2 [g2,g3,a3,b3,d4]@5 ~@2 [g3,a3,b3,d4], ~ d3 ~@5 g2", // D G
  J: "[~@8 g3@3 ~ [g3,b3,d4]@2 ~ g3@2 g2@3 g3 ~ g3 ~ [a3,c#4]@8 ~@3 a2@3 c#4 ~@3 c#4 d4@2 ~@9 a2 ~ [f#3,a#3]@8 ~@3 f#2@3 a#3 ~@3 a#3 b3@2 ~@9 f#2 ~ [g3,b3]@8 ~@3 g2@3 b3 ~@3 [d4,b4]@2 ~ a4@3 ~@6 g4 ~ [a2,a3,c#4]@8, ~ [b3,d4]@11 ~@3 [b3,d4]@5 [a3,b3,d4]@3 ~@9 c#4@5 ~@8 c#4@6 ~@2 c#4@2 ~@22 a#3@6 ~@2 a#3@2 ~@9 b3@5 ~@11 [d4,g4]@5 d4@2 ~@9, ~ [g3,a3]@7 ~@35 a3@7 ~ a3@4 ~@9 a#3@5 ~@6 f#3@7 ~ f#3@4 ~@21 g3@7 ~ g3@3 ~@9, ~@6 g2@7 ~ g2@3 ~@4 g2@3 a2@10 ~@6 a2@7 ~ a2@5 ~@3 f#2@10 ~@6 f#2@7 ~ f#2@5 ~@3 g2@10 ~@6 g2@10 ~ g2@4 ~@9]/8", // G A F# G A Bm Bm7 G5 …
  K: "[~@3 a2@3 c#4 ~ [a2,a3,b3]@3 [c#4,e4]@2 ~ [b3,e4]@3 [c#4,e4]@2 ~ [c#4,e4]@2 [a2,a3] ~ [d4,g4]@4 [d4,g4]@2 g3@2 [d4,b4]@2 ~ [e4,c#5]@2 ~ [g4,d5]@4 ~@12 g2 ~ [a2,a3,c#4]@4 ~@6 [c#4,a4]@2 [d4,a4]@2 ~@6 a3@6 ~@2 [e4,a4] ~ [e4,a4] ~ [g2,g3,d4]@4 d4@2 ~@2 [d4,b4]@2 ~ [c#4,a4]@2 ~ [b3,g4] [a3,b3,f#4] f#4 ~@6 g3, c#4@5 ~@3 e4@2 ~@24 g3@7 ~@3 g3@2 g4@5 d4@4 ~@5 e4@5 ~@6 [e4,a4]@10 ~ [e4,a4]@2 ~@28, ~@8 g3 ~@4 [a2,a3]@5 ~ [a2,a3]@2 ~@3 g2@17 ~ g2@5 g2@6 g4@2 ~@8 a3@5 ~@2 a3@4 ~@11 a3@2 ~@17 [b3,g4]@8, ~@45 d4@5 g3@4 ~@8 a2@11 ~ a2@8 ~ a2@4 ~@7 [g2,g3]@16 g2@2]/7", // Asus2 C#m E5 C#m A G5 G C#m …
  L: "[b3@2 g2@2 g3@2 g2 ~ [a2,a3,c#4]@4 ~@6 [c#4,a4]@2 [d4,a4]@2 ~ [e4,a4] [g2,b3,d4,f#4]@16 [d2,f#4,a4]@15 d5 [g2,f#3,d4]@15 ~@9, ~@12 e4@5 ~@63, ~@7 a2@5 ~@28, ~@15 a3@5 ~@2 a3@2 ~@56]/5", // A F#m D5 A5 Gmaj7 D Gmaj7
  M: "~@12 d5!4", N: "~@7 c#5 ~@8", O: "~@13 c#5 ~@2", P: "[g2,d4]@13 ~@3", Q: "~@4 b4@3 ~ b4@7 ~",
  R: "[~@8 c#5@8 ~@2 a5@3 b5@3 e5@7 ~, ~@8 d3@23 ~]/2", S: "~@2 b3 ~ b3@9 ~ g3 ~, [g2,g3]@13 g2@2 ~, ~ g4@3, ~ d4@2 ~",
  T: "~@3 c#4 b3@2 e4@3 c#4 ~@2 e4@3 ~, [a2,a3]@15 ~, ~@3 e4@3 c#4 ~@3 b3@4 ~@2", // A
  U: "[[f#2,c#4,f#4]@4 [a#3,c#4,f#4]@2 ~@2 f#2@4 f#4@2 ~ [a#3,c#4,f#4]@7 ~@4 b3 ~ b3@9 ~ g3 ~ c#4@3 b3@3 [a2,a3,b3,c#4]@10 [f#2,c#4,f#4]@4 [a#3,c#4,f#4]@2 ~@10 f#2@4 f#4@2 ~ [a#3,c#4,f#4]@7 ~@2 [a3,d4]@4 ~@4 d3@4 a3 d2@2 ~ [a3,c#4] d4 a3 ~@2 d3@3 ~@2 d3@2 ~@2 d3 ~@5 [g3,b3,d4]@4, a#3@3 ~@3 f#2@2 ~@6 f#2@8 ~@2 [g2,g3]@13 g2@2 ~ [a2,a3]@6 ~@16 f#2@10 ~@6 f#2@8 ~@2 d2@12 ~@4 d2@5 ~@3 d2@4 ~ d2@2 ~ g2@6 ~@2, ~@7 [a#3,c#4,f#4]@5 ~@16 g4@12 ~@60 d4@3 ~@4 [a3,d4]@7 ~@2 [a3,d4]@3 ~@9, ~@28 d4@8 ~@20 a#3@3 ~@4 [a#3,c#4,f#4]@13 ~@16 [a3,d4]@6 ~@6 d3@2 ~@22]/8", // F#5 F# A F#5 F# D5 A G …
  V: "[g2@3 b3@2 ~@3 [a3,d4] ~ a3 ~@3 g3@4 g2@2 g3 ~ g3 ~ [a3,c#4]@8 ~@3 a2@3 c#4 ~@3 c#4 d4@2 ~@9 a2 ~ [f#3,a#3]@8 ~@3 f#2@3 a#3 ~@3 a#3 b3@2 ~@9 f#2 ~ [g3,b3]@8 ~@3 g2@3 b3 ~@3 [a3,d4,f#4] [b3,d4,g4]@2 ~@9 d4 ~ [a2,a3,c#4]@8, ~@5 g2@6 [b3,d4]@8 ~ b3@3 ~@9 c#4@5 ~@6 a3@7 ~ a3@4 ~@9 a#3@5 ~@6 f#3@7 ~ f#3@4 ~@22 d3@6 g4@4 ~@9, ~@13 g2@3 ~@5 g2@2 ~ a2@10 ~@6 a2@7 ~ a2@5 ~@3 f#2@10 ~@6 f#2@7 ~ f#2@5 ~@3 g2@10 ~@6 g2@11 ~@2 g2@3 ~@8, ~@45 c#4@6 ~@2 c#4@2 ~@22 a#3@6 ~@2 a#3@2 ~@9 b3@5 ~@9 [d4,b4]@8 ~@10]/8", // D5 A F# G D G A Bm …
  W: "[~@3 a2@3 c#4 ~ [a2,a3,b3]@3 [c#4,e4]@2 ~ [b3,e4]@3 [c#4,e4]@2 ~ [c#4,e4]@2 [a2,a3] ~ [a2,e4,c#5]@3 ~@5, c#4@5 ~@3 e4@2 ~@22, ~@8 g3 ~@4 [a2,a3]@5 ~ [a2,a3]@2 ~@11]/2", // Asus2 C#m E5 C#m A
  X: "[~@8 [g2,g3,b3,d4]@4 [b3,d4] ~ b3 ~ [b3,d4,g4]@2 ~ [a3,d4,f#4]@3 b3@5 ~ g3@2 b3 ~, ~@13 g3@14 ~@5, ~@13 g2@12 ~@2 g2@4 ~, ~@11 e4@4 ~]/2", // G Bm G D
  Y: "[~@3 b3@2 ~ g3@2 [a3,f#4]@3 ~ [a3,f#4]@3 ~ d4 f#4 a4@2 d5 f#5 ~@2 f#6@3 d3@2 ~ d3@2, [g2,g3]@5 g2@3 [d2,d3]@6 ~ d2@8 d6@3 ~@6, ~@11 a5@2 ~@3, ~@12 d2@3 ~]/2", // D G D
  Z: "[[a3,c#4]@2 ~ [g3,b3]@3 [f#3,a3] ~ [g2,g3,b3,d4]@4 [b3,d4] ~ b3 ~ [b3,d4,g4]@2 ~ [a3,d4,f#4]@3 b3@5 ~ g3@2 b3 ~, ~@2 d3@6 ~@5 g3@14 ~@5, ~@13 g2@12 ~@2 g2@4 ~, ~@11 e4@4 ~]/2", // A G F#m G Bm G D
  AA: "[~@3 b3@2 ~ g3@2 [d2,a3,d4,f#4]@24, [g2,g3]@5 g2@3 ~@24]/2", // D G
})).s("gm_piano").gain(0.44).pan(0.4)

// chords · piano · soft notes
const piano_soft = note(`<
  ~@2 A ~ B C ~@6 D ~ E F G ~ H ~ G I J K L M N ~ O ~ P ~ Q ~@8 R@2 ~ S T U V W X ~@2 Y Z G ~ H ~ G ~ AA AB AC ~ N ~ O ~
  P ~ Q ~@10
>`.pickRestart({
  A: "[d4,c#5]@15 ~", B: "b3 ~@7", C: "~@4 d4@2 ~ d4@7 ~@2", D: "~@7 a5@6 ~@3", E: "~@3 b3 ~@3 b3, ~ d4 ~@2",
  F: "~ e4@3 ~@2 b3 ~@9", G: "~@6 [a#3,c#4] ~", H: "~@3 b3 ~@4, ~ d4 ~@2", I: "~@6 a3 ~", J: "~@5 a3 ~@10",
  K: "~@6 [b3,d4] ~, ~@12 [g3,a3] ~@3", L: "~ g2@3 ~@4 a3@3 ~@5", M: "~ g3 ~@6", N: "a3@3 ~@2 a3@2 ~@9",
  O: "f#3@3 ~@2 f#3@2 ~@9", P: "g3@3 ~@2 g3@2 ~@9", Q: "a3@3 ~@2 a3@2 ~@4 b3 ~@4", R: "[~@8 [d4,c#5]@15 ~@9]/2",
  S: "~@9 [c#5,d5]!2 d5 c#5!4", T: "c#5 [c#5,d5]!6 d5 [c#5,d5]!8", U: "[c#5,d5]!13 d5 [c#5,d5] ~", V: "f#3@13 ~@3",
  W: "~@7 a4 ~@8, ~@3 a4@2 ~@11, ~@4 d4@11 ~", X: "~@8 f#4@7 ~", Y: "~@7 b3, ~@3 d4", Z: "~@6 b3@3 e4@3 ~@2 b3 ~",
  AA: "~@2 a3 ~@7 d3 ~@2 d2@2 ~", AB: "~@10 g3 ~@5", AC: "~@2 g3@3 ~ g3 ~@9",
})).s("gm_piano").gain(0.25).pan(0.4)

// chords · distortion guitar
const distortion_guitar = note(`<
  ~@13 A@7 B C@6 D@2 E@2 F@2 G@7 H@2 ~@10 I J K L@3 M@7 D@2 E@2 F@2 N O@4 P@5
>`.pickRestart({
  A: "[~@8 [g2,d3]@15 ~ [a2,e3] ~@2 [a2,e3] ~@2 [a2,e3]@10 [a#3,f#4]@15 ~ a#3@11 ~@5 [g2,d3]@15 ~ [a2,a3,c#4] ~ a3 [a3,b3]@3 [a2,a3,c#4]@10 [f#2,c#3]@7 ~]/7", // G5 A5 D#m G5 A Asus2 A F#5
  B: "[f#2,c#3] ~ [f#2,c#3] ~ [f#2,c#3] ~ [f#2,c#3] ~ [f#2,c#3] ~ [f#2,c#3] ~ [f#2,c#3] ~ [f#2,c#3] ~", // F#5
  C: "[[c#3,f#3]@6 f#2 c#3 d3@30 [d3,e3]@2 g2@28 g2@4 a2@23 ~, f#2 ~@23]/6", D: "[a2@3 a2@4 ~ f#2@23 ~]/2",
  E: "[f#2@3 f#2@4 ~ g2@23 ~]/2", F: "[g2@3 g2@4 ~ a2@23 ~]/2",
  G: "[a2@3 a2@4 ~ g2@28 g2@4 a2@15 [e3,a3] a2 ~@7 a2@7 ~ g2@18 ~ g2 [d3,g3]@12 ~@8, ~@4 [e3,a3] ~@3]/7", // A5 G5 A5
  H: "[~ [g2,g3]@2 ~]/2", I: "[g2,d3]@15 ~", J: "[a2,e3] ~@2 [a2,e3] ~@2 [a2,e3]@10", K: "f#4@15 ~",
  L: "[~@8 [g2,d3]@15 ~ [a2,a3,c#4] ~ a3 [a3,b3]@3 [a2,a3,c#4]@10 f#2@6 [c#3,f#3]!2]/3", // G5 A Asus2 A F#5
  M: "[~@8 f#2@5 ~@6 f#2@3 f#3@2 d3@30 [d3,e3]@2 g2@28 g2@4 a2@23 ~, [c#3,f#3]@7 f#2@2 ~@47, ~@16 c#3@7 ~@89, ~@16 f#3@5 ~@91]/7", // Dsus2 F#5
  N: "a2@3 a2@4 ~ [a2,e3] ~@7", O: "[~@4 g2@14 g2@2 [a2,d3]@7 ~ [a2,d3]@4]/4",
  P: "[f#3@3 e3@3 d3@2 g2@28 g2@4 [d3,a3]@32 ~@8]/5", // D5
})).s("gm_distortion_guitar").gain(0.37).pan(0.3)

// other · electric guitar jazz
const electric_guitar_jazz = note("<A B@2 C@2 ~ D E@2 ~ F G@2 ~@27 H@2 ~@2 F ~ I@2 J@3 ~@30>".pickRestart({
  A: "g2@7 ~", B: "[~@8 f#5@3 d5@3 d5@9 ~@9]/2", C: "[~@9 c#3 d3 a3@10 ~@11]/2", D: "~ f#5 ~@2",
  E: "[~@5 c#3 d3 a3@16 ~@9]/2", F: "~@3 f#5", G: "[~@13 c#3 d3 a3@16 ~]/2", H: "[~@4 g2@7 ~@5]/2",
  I: "[~@8 f#5@3 g5@3 b4@5 ~@13]/2", J: "[~@14 d5@9 ~@5 c#4@10 ~@10, ~@8 d5@5 ~@35, ~@11 c#5@5 ~@32]/3",
})).s("gm_electric_guitar_jazz").gain(0.23).pan(0.3)

// chords · pad choir
const pad_choir = note("<A@2 B@2 C@4 D@7 E@6 F@8 G@8 H@7 I@3 J@5 K L M N@4 F@8 O@5 P@4 Q@5>".pickRestart({
  A: "[g3,b3,e4,b4]/2", B: "[d3,a3,c#4,a4]/2", C: "[~@5 f#4@3, [d4,g4] ~, ~@25 a3@39]/4",
  D: "[~@48 [d3,d4,f#4]@39 ~ [d4,b4]@16 [e4,a4]@8, ~ [d4,g4]@4 ~@9, ~@33 a3@31 ~@48]/7", // D G A5 G5
  E: "[~@8 a#4@2 ~@2 c#5@2 a#4@2 f#5@24 [d4,b4]@16 [e4,a4]@15 ~ a#4@2 ~@2 c#5@2 a#4@2 f#5@16, ~@5 f#4@15 ~@17 f#4@11]/6", // G A5
  F: "[~@8 [a3,f#4]@3 ~ [a3,f#4]@28 [b3,g4]@32 [e4,a4]@32 [c#4,f#4]@24, ~@8 g3 ~@119]/8", // D Em A5 F#5
  G: "[~ [d4,g4]@4 [e4,a4]@4 [b3,g4]@4 [e4,a4]@3]/8", // G5 A5 Em A5
  H: "[~ [b3,g4]@4 [e4,a4]@2 [g3,b3,e4,b4]@2 [d3,a3,c#4,a4]@2 [d4,g4]@3]/7", I: "[~@16 f#4@31 ~, ~ a3@46 ~]/3",
  J: "[~@40 [d3,d4,f#4]@39 ~, [d4,g4]@2 ~@3, ~@25 a3@31 ~@24]/5", K: "[d4,b4]", L: "[e4,a4]@15 ~", M: "[c#5,f#5]",
  N: "[~@4 [c#5,f#5]@3 ~ [d4,b4]@16 [e4,a4]@15 ~ a#4@2 ~@2 c#5@2 a#4@2 f#5@16, ~@21 f#4@11]/4", // F#5 G A5
  O: "[~ [d4,g4]@4 [e4,a4]@4 ~]/5", P: "[~ [b3,g4]@4 [d4,a4]@3]/4", Q: "[~ [b3,g4]@4 [d4,a4]@4 ~]/5",
})).s("gm_pad_choir").gain(0.19)

// chords · pad choir · soft notes
const pad_choir_soft = note("<~@4 A@2 B@5 ~@31 C@3 D@2 E@2 ~@32>".pickRestart({
  A: "b4/2", B: "[~@8 [d4,a4]@31 ~ b4@31 ~@9]/5", C: "[~@8 b4@31 ~@9]/3", D: "[[d4,a4]@31 ~]/2", E: "[b4@31 ~]/2",
})).s("gm_pad_choir").gain(0.14)

// chords · percussive organ
const percussive_organ = note("<~@13 A@8 ~@31 B C D@6 ~@16 E ~@4>".pickRestart({
  A: "[~ [d5,g5]@2 [e5,a5]@2 [c#5,f#5]@4 [d5,g5]@2 [e5,a5]@2 [c#5,f#5]@3]/8", B: "[d5,g5]", C: "[e5,a5]",
  D: "[[c#5,f#5]@23 ~ [d5,g5]@16 [e5,a5]@16 [c#5,f#5]@32 ~@8]/6", E: "[a5,c#6]@2 ~ [g5,b5]@2 ~ a5@2 ~@8, ~@6 f#5 ~@9",
})).s("gm_percussive_organ").gain(0.18)

// drums · kick
const kick = s("bd").struct(`<
  A@6 B C@3 D A@2 E F@6 G F H I H I H I H I H I H E H I H I H I J K L H@2 M@4 N H C O@2 N P F@2 Q R H I H I H I S I H I
  T U K H I H V H W ~@2
>`.pickRestart({
  A: "x!2 ~@3 x ~@2", B: "x ~@3 x!2 ~@2", C: "~ x ~@2 x!2 ~@2", D: "~ x ~@2 x ~@3", E: "x ~ x ~@5 x ~ x ~@4 x",
  F: "~ x!2 ~@5 x ~ x ~@4 x", G: "~ x!2 ~@4 x!2 ~ x!2 ~@3 x", H: "~@2 x ~@5 x ~ x ~@4 x",
  I: "x ~ x ~@3 x ~ x ~ x ~@4 x", J: "~@2 x ~@5 x ~@2 x ~@2 x ~", K: "~@8 x ~ x ~@4 x", L: "~ x ~ x ~@4 x ~ x ~@4 x",
  M: "x ~ x ~@4 x ~@2 x ~@5", N: "x ~ x ~@4 x!2 ~ x ~@4 x", O: "x ~ x ~@4 x ~ x!2 ~@5", P: "x!3 ~@5 x ~ x ~@4 x",
  Q: "~ x!2 ~@4 x!2 ~ x ~@4 x", R: "~ x ~@6 x ~ x ~@4 x", S: "~@2 x ~@5 x ~ x!2 ~@3 x", T: "~@2 x ~@5 x ~@2 x ~@3 x",
  U: "x!7 ~@3 x ~@5", V: "x ~@2 x ~@2 x ~ x ~ x ~@4 x", W: "x ~@2 x ~@2 x ~ x ~@7",
})).gain(0.61)

// drums · rim
const rim = s("rim").struct("<~@14 A@27 B C@9 A B@2 ~ A@16 ~@2 A@3 ~ A ~@3>".pickRestart({
  A: "~ x ~@2", B: "~@3 x", C: "~ x ~ x",
})).gain(0.46)

// drums · snare
const snare = s("sd").struct(`<
  A B C D C D E F G F H I D J K@8 L@11 M L@6 N ~ L K@2 N@4 L K E N@2 O L K P Q R L@6 S T L@3 U K L@4 O N ~@2
>`.pickRestart({
  A: "~@4 x ~@2 x ~ x ~ x ~@4", B: "~@7 x ~ x ~@3 x ~@2", C: "~@4 x ~@2 x ~ x ~ x ~@3 x",
  D: "~@4 x ~@2 x ~ x ~@3 x ~@2", E: "~@12 x ~@2 x", F: "~ x ~ x ~@3 x ~@4 x ~@2 x", G: "~ x ~@3 x ~@9 x",
  H: "~ x ~@3 x ~@10", I: "~@7 x ~ x ~ x ~@3 x", J: "~@4 x ~@2 x ~@4 x ~@3", K: "~@3 x", L: "~ x ~ x",
  M: "~ x ~@2 x!2 ~@6 x ~@3", N: "~ x ~@2", O: "~@4 x ~@7 x!2 ~@2", P: "~@6 x!2", Q: "~@11 x!2 ~@3",
  R: "~@2 x ~@2 x ~@6 x ~@3", S: "~@2 x ~@3 x!2", T: "~@3 x!3 ~@6 x ~@3", U: "x!7 ~ x ~@3 x ~@3",
})).gain(0.61)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<A B ~@4 C ~ D ~ E B ~@32 F ~@4 G ~@31>".pickRestart({
  A: "~@15 x", B: "~ x ~@2", C: "~ x ~@2 x ~@2 x ~@8", D: "~@3 x", E: "~@9 x ~@2 x ~@2 x", F: "~@9 x ~@6",
  G: "~ x ~@14",
})).gain(0.38)

// drums · low tom
const low_tom = s("lt").struct("<~@17 A ~ B C D ~@11 E ~@6 F G ~@15 B H I ~@7 F ~@3 J ~@3 K ~@5>".pickRestart({
  A: "~ x ~@2", B: "~@15 x", C: "~ x!2 ~@3 x ~@9", D: "~@3 x ~ x!2 ~@9", E: "~@2 x!2 ~@4", F: "~@7 x ~@8",
  G: "~@3 x!2 ~@11", H: "x!3 ~@3 x ~@7 x ~", I: "~@3 x ~@4", J: "~@13 x!2 ~", K: "~@7 x",
})).gain(0.53)

// drums · hihat
const hihat = s("hh").struct(`<
  A@6 B C@4 A@2 D C@3 E C E@3 C F C G C G C G C G E@2 C G C G C G H I J K@2 L@2 M L B K N O A B E C E C E C G C G C G C
  G C G E ~ D C G C G C P ~@2
>`.pickRestart({
  A: "x!6 ~ x", B: "x!8", C: "x!2 ~ x!5", D: "~@5 x!3", E: "x!2 ~ x ~ x!3", F: "x ~@2 x!5", G: "x ~@2 x ~ x!3",
  H: "x ~@2 x ~@4", I: "~@10 x!2 ~@2 x!2", J: "~@2 x!2 ~@2 x ~@3 x ~ x ~ x ~", K: "~ x!3 ~@2 x ~ x ~ x ~ x ~ x ~",
  L: "x ~ x ~ x ~ x ~@2 x!3 ~@2 x ~", M: "~@2 x ~ x ~ x ~@2 x!3 ~@2 x ~", N: "~ x!3 ~@2 x ~@9", O: "~ x!5 ~ x", P: "x",
})).gain(0.31)

// drums · mid tom
const mid_tom = s("mt").struct("<~@17 A ~@3 B ~@18 C D ~@13 E ~@11 C ~@3 F ~@3 F ~@5>".pickRestart({
  A: "~@3 x!2 ~@11", B: "x", C: "~@3 x ~@4", D: "~ x ~@2", E: "~@3 x ~@12", F: "~@13 x ~@2",
})).gain(0.53)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~ A ~ A ~ A ~@2 B ~ B ~ A ~@7 C ~@2 D ~ D ~ D ~ D ~ D E D ~ D ~ D ~ D@2 C F ~@11 G ~@3 H ~@2 D ~ D ~ D ~ D ~ D E I ~@2
  D ~@6
// … 45 more lines

More by Paola Turci