Strudelify

I Dubbi dell'Amore

Fiorella Mannoia

KeyD minorTempo72 bpm
0:00/0:00
// I Dubbi dell'Amore — Fiorella Mannoia
// 72 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: Full arrangement: all 92 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(72/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 · electric bass finger · "IDUBBIDE"
const bass = note(`<
  ~ A@4 B C A@4 D@2 E A@4 D@2 F G H I J K L M N O P Q R S P ~ T@4 U@2 V T@4 U@2 W X Y Z AA AB AC AD AE AF S AG AH AI AH
  AI AJ AD AE AF S AK AL AM S AN AO AK AP ~ AQ AR AS@2 AT AR AS@2 AU@3 ~@2
>`.pickRestart({
  A: "[bb1 c2!2 g1 bb1 c2 eb1@4 c1@15 ~@6 g1]/2", B: "bb1 c2!2 g1 bb1 c2 eb1@4 f1@6", C: "g1@15 g1",
  D: "[eb2@4 bb1 eb2 c1@19 ~@6 d1]/2", E: "f1 g1!2 d1 f1 g1 g1@9 g1", F: "f1 g1!2 d1 f1 g1 g1@10", G: "c1@3 bb1",
  H: "eb2@7 d2 ~ d2@4 d2!2 ~", I: "c2@8 bb1 ~ bb1@5 bb1", J: "eb2@7 d2@3 d2@3 d2@2 d2", K: "c2@8 bb1 ~ bb1@3 bb1@2 bb1",
  L: "c2 ~ c2@5 c2 ~ bb1 bb1@3 bb1 g1 bb1", M: "a1 ~ a1@4 ~ a1 ab1 eb1 ab1 ~ g1@4",
  N: "c2 ~ c2@5 bb1 ~ f1 bb1@3 bb1 f1 bb1", O: "a1 ~ a1@4 ~ a1 ab1@5 ab1 eb1 ab1", P: "g1", Q: "c1", R: "bb1", S: "a1",
  T: "[c2 d2!2 a1 c2 d2 f1@4 d1@15 ~@6 a1]/2", U: "[f2@4 c2 f2 d1@19 ~@6 e1]/2", V: "g1 a1!2 e1 g1 a1 a1@9 a1",
  W: "g1 a1!2 e1 g1 a1 a1@10", X: "d1@3 c2", Y: "f2@7 e2 ~ e2@4 e2!2 ~", Z: "d2@8 c2 ~ c2@5 c2",
  AA: "f2@7 e2@3 e2@3 e2@2 e2", AB: "d2@8 c2 ~ c2@3 c2@2 c2", AC: "d2 ~ d2@5 d2 ~ c2 c2@3 c2 a1 c2",
  AD: "b1 ~ b1@4 ~ b1 bb1 f1 bb1 ~ a1@4", AE: "d2 ~ d2@5 c2 ~ g1 c2@3 c2 g1 c2", AF: "b1 ~ b1@4 ~ b1 bb1@5 bb1 f1 bb1",
  AG: "d1@3 c1", AH: "f1 ~ f1@5 e2 ~ e2@4 e2!2 ~", AI: "d2 ~ d2@5 ~ c2 ~ c2@3 c2!3",
  AJ: "d2 ~ d2@5 c2 ~ c2 c2@3 c2 a1 c2", AK: "d1", AL: "c2", AM: "b1", AN: "d1 ~ d1@14", AO: "bb1@6 ~ bb1 a1 ~ a1@5 a1",
  AP: "bb1 a1", AQ: "c2 d2!2 a1 c2 d2 f1@4 g1@4 g1 ~", AR: "~@2 d1 ~@2 d1 ~ d1 ~ d1 d1@4 f2@2",
  AS: "[c2 d2!2 a1 c2 d2 f1@4 e1@12 f3@3 f2 b2@2 ~@2 f2@2]/2", AT: "c2 d2 ~ a1 c2 d2 f1@4 g1@4 g1 ~",
  AU: "[d1@37 ~@11]/3",
})).s("gm_electric_bass_finger").gain(0.58)

// chords · synth strings 1 · "IDUBBIDE"
const synth_strings_1 = note(`<
  ~@7 A B A B C D E F B A B C D E G H@4 I@2 J@2 K@4 L ~ M N M N O P Q R N M N O P Q S T@4 U@2 V@2 W@2 T@4 U@2 V@2 X@4 Y
  Z@4 ~ AA@4 AB@7 ~@2
>`.pickRestart({
  A: "[g3,c4,eb4]", B: "[ab3,c4,eb4] [bb3,d4,f4]", C: "[g3,bb3,eb4]", D: "[ab3,c4,f4]", E: "[g3,b3,d4]",
  F: "[c4,eb4], g3 ~@15", G: "[c4,eb4]@3 [f3,bb3,d4], g3 ~@15",
  H: "[[eb4,g4] [d4,f4] [c4,g4] [bb3,d4,f4], bb4, eb5@3 ~]/2", // Eb Dm C5 Bb
  I: "[c5@2 bb4@2 [f4,a4]@2 ab4 [b3,d4,g4], [c4,eb4]@7 ~, g4 ~]/2", J: "[c5 bb4 [f4,a4] ab4, [c4,eb4], g4 ~]/2",
  K: "[b3 ~@4 bb4 [f4,a4]@2, g4@5 ~@3, d4@15 ~ eb4@48, ~ c4@7]/4", L: "[b3,d4,g4]@9 ~@7", M: "[a3,d4,f4]",
  N: "[bb3,d4,f4] [c4,e4,g4]", O: "[a3,c4,f4]", P: "[bb3,d4,g4]", Q: "[a3,db4,e4]", R: "[d4,f4], a3 ~@15",
  S: "[d4,f4]@3 [g3,c4,e4], a3 ~@15", T: "[[f4,a4] [e4,g4] [d4,a4] [c4,e4,g4], c5, f5@3 ~]/2",
  U: "[d5@2 c5@2 [g4,b4]@2 bb4 [db4,e4,a4], [d4,f4]@7 ~, a4 ~]/2", V: "[d5 c5 [g4,b4] bb4, [d4,f4], a4 ~]/2",
  W: "[db4@2 ~@2 f4@3 [c4,e4,g4], a4@7 ~, e4@15 ~@17, ~@2 d4@5 ~]/2", // C
  X: "[db4 ~@4 c5 [g4,b4]@2, a4@5 ~@3, e4@15 ~ f4@48, ~ d4@7]/4", Y: "[db4,e4,a4]",
  Z: "[a4@2 bb4 [db4,e4] ~@2 bb4 [db4,e4,a4], [d4,f4]@3 a4@3 ~@2, ~@4 [d4,f4]@3 ~]/4", AA: "[a3,d4]/4",
  AB: "[a3@99 ~@13, d4 ~@111]/7",
})).s("gm_synth_strings_1").gain(0.23)

// chords · string ensemble 1 · "IDUBBIDE"
const string_ensemble_1 = note(`<
  ~ A B A B C D A B A B E F G A B A B E F G H ~@14 I J I J K L M I J I J K L M N ~@28 I J O J I J I J I J ~@3
>`.pickRestart({
  A: "[c4,eb4,g4]!2 ~@9 [c4,eb4,g4]!5", B: "[c4,eb4,g4]!5 [c4,g4] [c4,eb4,g4]!2 [c4,g4] ~@7",
  C: "[c4,eb4,g4]!2 ~@3 [c4,eb4,g4] ~@5 [c4,eb4,g4]!5", D: "[b3,eb4,g4]!5 [b3,eb4] [b3,eb4,g4]!2 [b3,eb4] ~@7",
  E: "[bb3,eb4,g4]!2 ~@9 [bb3,eb4,g4]!5", F: "[c4,f4,ab4]!5 [c4,ab4] [c4,f4,ab4]!2 [c4,ab4] ~@7",
  G: "[b3,d4,g4]!2 ~@9 [b3,d4,g4]!5", H: "[c4,eb4,g4]!2 ~@9 [c4,eb4,g4] [bb3,d4,f4]!4",
  I: "[d4,f4,a4]!2 ~@9 [d4,f4,a4]!5", J: "[d4,f4,a4]!5 [d4,a4] [d4,f4,a4]!2 [d4,a4] ~@7",
  K: "[c4,f4,a4]!2 ~@9 [c4,f4,a4]!5", L: "[d4,g4,bb4]!5 [d4,bb4] [d4,g4,bb4]!2 [d4,bb4] ~@7",
  M: "[db4,e4,a4]!2 ~@9 [db4,e4,a4]!5", N: "[d4,f4,a4]!2 ~@9 [d4,f4,a4] [c4,e4,g4]!4",
  O: "[d4,f4,a4] [f4,a4] ~@9 [d4,f4,a4]!5, ~ d4@10 ~@5", // Dm F Dm
})).s("gm_string_ensemble_1").gain(0.26).pan(0.4)

// chords · string ensemble 1 · "IDUBBIDE" · soft notes
const string_ensemble_1_soft = note(`<
  ~@2 A ~ A ~ B ~ A ~ A ~ C ~@2 A ~ A ~ C ~@17 D ~ D ~ E ~@2 D ~ D ~ E ~@31 F ~ F ~ D ~ D ~ D ~@3
>`.pickRestart({
  A: "~@5 eb4 ~@2 eb4 [c4,eb4,g4] ~@6", B: "~@5 g4 ~@2 g4 [b3,eb4,g4] ~@6", C: "~@5 f4 ~@2 f4 [c4,f4]@7, ~@9 ab4 ~@6",
  D: "~@5 f4 ~@2 f4 [d4,f4,a4] ~@6", E: "~@5 g4 ~@2 g4 [d4,g4]@7, ~@9 bb4 ~@6",
  F: "~@5 f4 ~@2 f4 [f4,a4] ~@6, ~@9 d4@7", // F
})).s("gm_string_ensemble_1").gain(0.1).pan(0.4)

// other · whistle · "IDUBBIDE"
const whistle = note("<~@60 A B@5 ~@26>".pickRestart({
  A: "~@6 d5 e5",
  B: "[f5@8 c6@2 g5 a5@3 bb5 a5@2 f5@7 e5@4 d5@2 c5 f5@8 c6@2 ~ g5 a5@3 bb5 a5@2 f5@7 e5@4 d5@2 c5 d5@17]/5",
})).s("gm_whistle").gain(0.41)

// chords · distortion guitar · "IDUBBIDE"
const distortion_guitar = note("<~@36 A B A B C D E A B A B C D E F G ~@4 H I ~@8 H I ~@24>".pickRestart({
  A: "~@4 [a3,d4,f4] ~@2 [a3,d4,f4] ~@2 [a3,d4,f4] ~ [a3,d4,f4]!2 ~@2", // Dm
  B: "~ [a3,d4,f4] ~@2 [a3,d4,f4]!2 ~@3 [a3,d4,f4] ~@2 [a3,d4,f4]!2 ~@2", // Dm
  C: "~@4 [c4,f4,a4] ~@2 [c4,f4,a4] ~@2 [c4,f4,a4] ~ [c4,f4,a4]!2 ~@2", // F
  D: "~ [bb3,d4,g4] ~@2 [bb3,d4,g4]!2 ~@3 [bb3,d4,g4] ~@2 [bb3,d4,g4]!2 ~@2", // Gm
  E: "~@4 [db4,e4,a4] ~@2 [db4,e4,a4] ~@2 [db4,e4,a4] ~ [db4,e4,a4]!2 ~@2", F: "~@4 c5@6 d5 c5 a4@2 g4@2", G: "f4 ~",
  H: "~@4 g4@3 ~@2 d5 a4 g4!2 f4 d4 c4", I: "f4 d4 ~@6",
})).s("gm_distortion_guitar").gain(0.36).pan(0.3)

// other · percussive organ · "IDUBBIDE"
const percussive_organ = note(`<
  ~@22 A@4 B@3 C D E@2 F ~@17 G H G H I J K L M N G H G H I J K L O P@2 Q ~ R S R S ~@14
>`.pickRestart({
  A: "eb5!9 f5!7", B: "c5!15 d5", C: "c5!12 g4!4", D: "d5!8 eb5!4 d5!4", E: "c5!16", F: "eb5!16",
  G: "f5 c6!2 f5!2 ~ f5!2 ~ f5!2 ~ c6!2 f5 e5", H: "f5!3 c6 f5 ~ f5!2 ~ f5!2 ~ g5!2 f5 e5",
  I: "f5 ~ g5 ~ g5!2 f5 e5 f5!3 ~ f5!3 d5", J: "f5!6 d5!2 f5!4 d5 f5 d5 db5",
  K: "f5 d5 d6 d5 d6 d5!3 ~ d5!2 ~ f5!2 d5 c5", L: "d5!6 g5 d5 f5 d5!7", M: "e5!4 g5 e5!11", N: "d5!12 c5!4",
  O: "e5!8 f5!4 e5!4", P: "d5!16", Q: "f5!16", R: "d5!5 ~ d5!2 ~ d5!2 ~ d5!4", S: "bb4!5 ~ bb4 a4 ~ a4!2 ~ a4!4",
})).s("gm_percussive_organ").gain(0.41)

// other · synth brass 1 · "IDUBBIDE"
const synth_brass_1 = note(`<
  ~@31
  [c5 ~ g5 d5 ~ eb5 ~ d5 ~ c5 c5@4 ~@2]
  [c5@2 g5 d5 ~ eb5 ~ d5 ~ c5 c5@3 ~@3]
  ~@37
  [d5 ~ a5 e5 ~ f5 ~ e5 ~ d5 d5@4 ~@2]
  [d5@2 a5 e5 ~ f5 ~ e5 ~ d5 d5@3 ~@3]
  ~@20
>`).s("gm_synth_brass_1").gain(0.34).pan(0.7)

// chords · pad choir · "IDUBBIDE"
const pad_choir = note(`<
  ~ A B A B C D A E A B F G H A E A B F G I J K L K L M N M O P Q@3 R ~@8 S T S U V W X Y Z AA Z AA AB AC AB AD AE AF Z
  AA Z AA AB AC AB AD AE AG@3 AH AI AJ AI AJ ~ AK AL@3 AM AN AM AO AP AQ@4
>`.pickRestart({
  A: "~ c4@2 ~@3 eb4 d4@2 ~ d4@4 c4 d4, eb4@2 ~ eb4@2 ~@11, ~@4 c4@5 c4@3 ~@4",
  B: "eb4 c4@2 ~@3 eb4 ~@8 bb3, ~@3 eb4@2 ~@2 d4@6 bb3@2 ~, ~@4 c4@7 ~ f3@4, ~@7 d4",
  C: "~ c4@2 ~@3 eb4 d4@2 ~ d4@6, eb4@2 ~ eb4@2 ~@11, ~@4 c4@5 c4@5 ~@2", D: "[g3,eb4], b3 ~@15",
  E: "~ c4@2 ~@12 bb3, eb4@3 eb4@3 eb4@2 ~@5 bb3@2 ~, ~@4 c4@7 ~ f3@4, ~@7 d4@7 d4@2",
  F: "~ eb4@2 ~@3 g4 ab4@2 ~@2 eb4 ab4 g4 eb4 [e4,f4], g4@2 ~ g4@2 ~@5 g4@2 ~@4, ~@4 eb4@5 eb4@2 ~@5", // Fmaj7
  G: "ab4 f4@2 ~ f4@2 ab4 eb4 ~ c4@2 ~ c4@2 eb4 c4, ~@3 ab4@2 ~@3 eb4@2 ~ eb4@2 ~@3",
  H: "~ b3@2 ~ b3@2 ~ b3 eb4 ~ b3 ~ b3 ~ b3 g3, d4@3 d4@3 d4@3 d4@7, ~@11 eb4@2 f4@3",
  I: "~ b3@2 ~ b3@2 ~ b3 eb4 ~ g3 ~ g3 ~ g3 d3, d4@3 d4@3 d4@3 d4@7, ~@11 c4@2 b3@3",
  J: "d4@4 ~@2 bb4@3 bb4 eb4 ~ [bb3,d4,f4]@4, ~@4 eb4@5 ~@7", // Bb
  K: "[g4,bb4,eb5]@4 [g4,bb4,eb5]@3 [g4,bb4,eb5] ~ [f4,bb4,d5] [f4,bb4,d5]@2 [f4,bb4,d5]!2 ~@2", // Eb Bb
  L: "[eb4,g4,c5]@4 [eb4,g4,c5]@3 [eb4,g4,c5] ~ [d4,f4,bb4]!2 ~ [d4,f4,bb4]!3 ~", // Cm Bb
  M: "[eb4,g4,c5]@4 [eb4,g4,c5]@3 [eb4,g4,c5] ~ [c4,g4,bb4] [c4,g4,bb4]@2 [c4,g4,bb4]!2 ~@2", // Cm C7
  N: "[c4,eb4,a4]@4 [c4,eb4,a4]@3 [c4,eb4]@2 [c4,eb4,ab4] [c4,eb4]@2 [b3,d4,g4]!3 ~, ~@7 ab4 ~@2 ab4 ~@5", // Adim Cm Ab Cm G
  O: "[c4,eb4,a4]!2 [c4,eb4,ab4]@2", // Adim Ab
  P: "[b3,d4,g4]@4 [b3,d4,g4]@3 [c4,d4,g4] ~ [c4,d4,g4] [c4,d4,g4]@2 [b3,d4,g4]!2 ~@2", // G Csus2 G
  Q: "[[c4,eb4,g4]@4 [c4,eb4,g4]@3 [c4,eb4,g4]@2 [c4,eb4,g4] [c4,eb4,g4]@2 [c4,eb4,g4]!2 [c4,eb4]@2 [c4,eb4,bb4]@4 [c4,eb4,bb4]@3 [c4,eb4]@2 [c4,eb4,bb4] [c4,eb4,bb4]@2 [c4,eb4,bb4] c4@3 [c4,f4,a4]@4 [c4,f4,a4]@3 [c4,f4,a4]@2 [c4,f4,a4] [c4,f4,a4]@2 [c4,f4,a4]!2 [c4,f4,a4]@2, ~@14 g4@9 bb4 ~@5 eb4@19, ~@29 bb4 ~@18]/3", // Cm Cm7 Cm Cm7 F
  R: "[d3,g3,g4], b3@9 ~@7", S: "~ d4@2 ~@3 f4 e4@2 ~ e4@4 d4 e4, f4@2 ~ f4@2 ~@11, ~@4 d4@5 d4@3 ~@4",
  T: "~ d4@2 ~@12 c4, f4@3 f4@3 f4@2 ~@5 c4@2 ~, ~@4 d4@7 ~ g3@4, ~@7 e4@7 e4@2",
  U: "f4 d4@2 ~@3 f4 ~@8 c4, ~@3 f4@2 ~@2 e4@6 c4@2 ~, ~@4 d4@7 ~ g3@4, ~@7 e4",
  V: "~ f4@2 ~@3 a4 bb4@2 ~@2 f4 bb4 a4 f4 [gb4,g4], a4@2 ~ a4@2 ~@5 a4@2 ~@4, ~@4 f4@5 f4@2 ~@5", // Gmaj7
  W: "bb4 g4@2 ~ g4@2 bb4 f4 ~ d4@2 ~ d4@2 f4 d4, ~@3 bb4@2 ~@3 f4@2 ~ f4@2 ~@3",
  X: "~ db4@2 ~ db4@2 ~ db4 f4 ~ a3 ~ a3 ~ a3 e3, e4@3 e4@3 e4@3 e4@7, ~@11 d4@2 db4@3",
  Y: "e4@4 ~@2 c5@3 c5 f4 ~ [c4,e4,g4]@4, ~@4 f4@5 ~@7", // C
  Z: "[a4,c5,f5]@4 [a4,c5,f5]@3 [a4,c5,f5] ~ [g4,c5,e5] [g4,c5,e5]@2 [g4,c5,e5]!2 ~@2", // F C
  AA: "[f4,a4,d5]@4 [f4,a4,d5]@3 [f4,a4,d5] ~ [e4,g4,c5]!2 ~ [e4,g4,c5]!3 ~", // Dm C
  AB: "[f4,a4,d5]@4 [f4,a4,d5]@3 [f4,a4,d5] ~ [d4,a4,c5] [d4,a4,c5]@2 [d4,a4,c5]!2 ~@2", // Dm D7
  AC: "[d4,f4,b4]@4 [d4,f4,b4]@3 [d4,f4]@2 [d4,f4,bb4] [d4,f4]@2 [db4,e4,a4]!3 ~, ~@7 bb4 ~@2 bb4 ~@5", // Bdim Dm Bb Dm A
  AD: "[d4,f4,b4]!2 [d4,f4,bb4]@2", // Bdim Bb
  AE: "[db4,e4,a4]@4 [db4,e4,a4]@3 [d4,e4,a4] ~ [d4,e4,a4] [d4,e4,a4]@2 [db4,e4,a4]!2 ~@2", // A Dsus2 A
  AF: "[d4,f4,a4]@4 [d4,f4,a4]@3 [d4,f4,a4]@2 [d4,f4,a4] [d4,f4,a4]@2 [c4,e4,g4]@4", // Dm C
  AG: "[[d4,f4,a4]@4 [d4,f4,a4]@3 [d4,f4,a4]@2 [d4,f4,a4] [d4,f4,a4]@2 [d4,f4,a4]!2 [d4,f4]@2 [d4,f4,c5]@4 [d4,f4,c5]@3 [d4,f4]@2 [d4,f4,c5] [d4,f4,c5]@2 [d4,f4,c5] d4@3 [d4,g4,b4]@4 [d4,g4,b4]@3 [d4,g4,b4]@2 [d4,g4,b4] [d4,g4,b4]@2 [d4,g4,b4]!2 [d4,g4,b4]@2, ~@14 a4@9 c5 ~@5 f4@19, ~@29 c5 ~@18]/3", // Dm Dm7 Dm Dm7 G
  AH: "[e3,a3,db4,a4]", AI: "[f4,a4,d5]@4 [f4,a4,d5]@3 [f4,a4,d5] ~ [f4,a4,d5] [f4,a4,d5]@2 [f4,a4,d5]!2 ~@2",
  AJ: "[f4,bb4,d5]@4 [f4,bb4,d5]@3 [f4,bb4,d5] ~ [e4,a4,db5]!2 ~ [e4,a4,db5]!3 ~", // Bb A
  AK: "~ f4@2 ~@2 c4 ~ b3@3 c4@2 b3@3 b3, e4@2 ~ e4@2 ~@5 b3 ~@5, ~@2 f4 ~@5",
  AL: "[~@2 f3 ~@3 d3 e3 f3 ~@3 e3 ~@2 f2 ~ f4@2 ~@2 c4 ~ b3@3 c4@2 b3@3 b3 ~@2 f3 ~@3 d3 e3 f3 ~@3 e3 ~@2 f2, b3@2 ~@8 d4@3 ~ d4@28 d4@4 d4@2, ~ a3@2 a3@6 g3@2 g3@2 g3@3 d2@16 ~@16, ~@16 e4@2 ~ e4@2 ~@5 b3 ~@5 b3@2 ~@14, ~@20 f4@2 ~@11 a3@2 a3@6 g3@2 g3@2 g3@3]/3",
  AM: "~ f4@2 ~@2 c4 ~ b3@3 c4@2 b3@3 b3, d2, e4@2 ~ e4@2 ~@5 b3 ~@5, ~@2 f4 ~@5",
  AN: "~@2 f3 ~@3 d3 e3 f3 ~@3 e3 ~@2 f2, b3@2 ~@8 d4@3 ~ d4@2, ~ a3@2 a3@6 g3@2 g3@2 g3@3",
  AO: "~@2 f3 ~@3 d3 e3 f3 g3 ~@2 e3 ~@2 f2, b3@2 ~@8 d4@3 ~ d4@2, ~ a3@2 a3@6 ~@2 g3@2 g3@3",
  AP: "~ [f4,f5]@2 ~@2 [c4,c5] ~ [b3,b4]@3 [c4,c5]@2 [b3,b4]@3 [b3,b4], d2, [e4,e5]@2 ~ [e4,e5]@2 ~@5 [b3,b4] ~@5, ~@2 [f4,f5] ~@5", // F C B C B E B F
  AQ: "[~@2 [f3,f4] ~@3 [d3,d4] [e3,e4] [f3,f4] ~@2 [g3,g4]@2 [e3,e4] ~@3 [f2,f3]@2 [d2,d3]@31 ~@14, [b3,b4]@2 ~@8 [d4,d5]@3 ~@2 [d4,d5]@4 ~@45, ~ [a3,a4]@2 [a3,a4]@6 [g3,g4]@2 ~@3 [g3,g4]@5 ~@45]/4", // F D E F G E F D …
})).s("gm_pad_choir").gain(0.5).pan(0.6)

// chords · acoustic guitar steel · "IDUBBIDE"
const acoustic_guitar_steel = note("<~@14 A@2 ~@3 B@2 ~@14 C@3 ~@5 D@2 ~@3 E@2 ~@29 F G@3 H I H J H K@4>".pickRestart({
  A: "[c4@3 ~]/2", B: "[c6@27 ~@5]/2", C: "[~@3 [f5,f6,f7]@8 ~]/3", D: "[d4@3 ~]/2", E: "[d6@27 ~@5]/2",
  F: "~ f4@2 ~@2 c4 ~ b3@3 [b3,c4]@2 b3@3 b3, e4@2 ~ e4@2 ~@11, ~@2 f4 ~@5", // Cmaj7
  G: "[~@2 f3 ~@3 d3 e3 f3 ~@3 e3 ~@2 f2 ~ f4@2 ~@2 c4 ~ b3@3 [b3,c4]@2 b3@3 b3 ~@2 f3 ~@3 d3 e3 f3 ~@3 e3 ~@2 f2, b3@2 ~@8 d4@3 ~ d4@28 d4@4 d4@2, ~ a3@2 a3@6 g3@2 g3@2 g3@3 d2@16 ~@16, ~@16 e4@2 ~ e4@2 ~@11 b3@2 ~@14, ~@20 f4@2 ~@11 a3@2 a3@6 g3@2 g3@2 g3@3]/3", // Cmaj7
  H: "~ f4@2 ~@2 c4 ~ b3@3 [b3,c4]@2 b3@3 b3, d2, e4@2 ~ e4@2 ~@11, ~@2 f4 ~@5", // Cmaj7
  I: "~@2 f3 ~@3 d3 e3 f3 ~@3 e3 ~@2 f2, b3@2 ~@8 d4@3 ~ d4@2, ~ a3@2 a3@6 g3@2 g3@2 g3@3",
  J: "~@2 f3 ~@3 d3 e3 f3 g3 ~@2 e3 ~@2 f2, b3@2 ~@8 d4@3 ~ d4@2, ~ a3@2 a3@6 ~@2 g3@2 g3@3",
  K: "[~@2 f3 ~@3 d3 e3 f3 ~@3 e3 ~@4 f2@2 d2@31 ~@14, b3@2 ~@8 d4@3 ~@2 d4@4 ~@45, ~ a3@2 a3@6 g3@2 g3@2 ~ g3@5 ~@45]/4",
})).s("gm_acoustic_guitar_steel").gain(0.21).pan(0)

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

// drums · snare
const snare = s("sd").struct(`<
  ~ A B A B A B A B A B A B A@2 B A B A B A B C D C D C D C D C D C D C B A B A B A B A@2 B A B A B A B C D C D C D C D
  C D C D C D C D C D C D C D C D@4 B A B A B A B A B ~@5
>`.pickRestart({
  A: "~ x ~@2 x ~@7 x ~@3", B: "~ x ~ x", C: "~@4 x ~@4 x ~@2 x ~@3", D: "~@4 x ~@2 x ~ x ~@2 x ~@3",
})).gain(0.53)

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~@2 A B A B ~@2 A B A ~ A C ~ A B A ~ A C B ~@15 A B A ~ A C ~ A B A ~ A C B ~@29 A ~ A ~ A ~ A ~@5
>`.pickRestart({
  A: "~@15 x", B: "x", C: "x ~@14 x",
})).gain(0.2)

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

// … 38 more lines

More by Fiorella Mannoia