Strudelify
Anna e Marco cover art

1987 · Lucio Dalla

Anna e Marco

Dalla

KeyB♭ majorTempo134 bpm
0:00/0:00
// Anna e Marco — Dalla
// 134 bpm, 4/4, key A# major. 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: sustain pedal (CC 64) lengthens the held notes
// note: duplicate parts dropped: ch 9 lead 1 square (copy of ch 5 lead 1 square)
// note: Full arrangement: all 121 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(134/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(`<
  ~@12 A B C ~ D E F@2 G H I@2 G J C K L M N@2 C O E P Q R S T U V W X Y Z AA AB E AC AD AE AF AE AG AH@3 AI AJ AK AL M
  N@2 C O E P AH@3 AI AJ AK AL M N@2 C O E P Q R S T U V W X Y Z AM AB E AC AD AE AF AE AG AN@3 ~@3 AE AF AE AG AE AF AE
  AO AP@4 ~
>`.pickRestart({
  A: "g1@15 ~", B: "g2@10 ~@2 f2@3 ~", C: "eb2", D: "f2@12 ~@2 c2 ~", E: "f1@15 ~", F: "[bb1@7 ab2@7 ~@2]/2", G: "bb2",
  H: "~@2 bb1@2 f2@2 bb1 ~ f1@2 f1@2 f2@3 ~", I: "[bb1@7 g2]/2", J: "f2@6 f2 ~ bb1@8", K: "f2@3 f2", L: "bb1@3 bb1",
  M: "bb1@6 f1 ~ bb1@2 f1 ~ a1@4", N: "[g1@23 ~ g1@4 f1@4]/2", O: "eb2 c2", P: "f1@6 f1 ~ f2@4 f2@4", Q: "bb1@14 bb1 ~",
  R: "bb2 ~ bb2@9 bb2 bb1@4", S: "f1 f1@3", T: "f1@11 ~ f2@4", U: "c2@14 g2 ~", V: "c3 ~@2 c2@3 g1@2, ~ c3@5 ~@2",
  W: "f1@2 f1@4 f1 c2", X: "f2@11 ~ f2@4", Y: "c2@10 c3@4 c2 ~", Z: "eb2@6 eb2 e2", AA: "f2@3 c2", AB: "eb2 c2@5 c2@2",
  AC: "f1@10 f2@5 ~", AD: "c2@2 f1@5 c2 f2@4 f1@2 g1 ~", AE: "bb1@4 bb2@3 bb1", AF: "bb1@2 ab2 ~",
  AG: "bb1@2 bb1@2 f2@2 bb1 ~ bb1@2 bb1@2 ab2@4", AH: "bb1@15 ~", AI: "bb1 ~ bb1@11 ~ bb1@2", AJ: "eb2@6 ~ eb2",
  AK: "f2 f1", AL: "bb1@13 ~ bb1@2", AM: "f2@12 c2@3 ~", AN: "bb1/3", AO: "bb1@2 bb1@2 f2@2 bb1 ~ bb1@2 bb1@2 eb2@4",
  AP: "[~ bb1@48 ~@15]/4",
})).s("gm_fretless_bass").gain(0.36)

// bass · fretless bass · soft notes
const bass_soft = note("<~@19 A ~@18 B ~@13 C ~@32 B ~@13 C ~@9 C ~@3 C ~@7>".pickRestart({
  A: "~@12 [d2,eb2] [e2,f2] [gb2,g2] [ab2,a2]", B: "~ f2", C: "~@12 [d2,eb2] [e2,f2] [gb2,g2] ab2",
})).s("gm_fretless_bass").gain(0.12)

// other · string ensemble 2
const string_ensemble_2 = note(`<
  ~@22 A@2 B@2 ~@4 C@4 ~@4 D@4 E@7 F@2 G@4 H I J K ~@4 C@4 ~@2 L@2 M@2 ~@4 C@4 ~@3 N O@4 P@7 Q@2 R@3 S@3 ~@4 T U V W X Y
  Z AA AB@4 ~
>`.pickRestart({
  A: "[~@7 d5@5 c5@2 d5@16 ~@2]/2", B: "[~@7 eb5@4 ~ d5@2 eb5@17 ~]/2", C: "[g4@19 a4@5 bb4@4 g4@3 g5@30 ~@3]/4",
  D: "[[a3,f4]@31 [g3,g4]@5 [ab3,ab4]@4 [g3,g4]@13 [ab3,ab4]@6 [g3,g4]@5, ~@31 eb4@33]/4", // Dm G Ab G Ab G
  E: "[[a3,c4,f4]@31 [g3,g4]@5 [ab3,ab4]@4 g4@23 f4@16 eb4@16 f4@15 g4@2, ~@31 eb4@16 ~@65, ~@40 g3@9 ~@63]/7", // F G Ab
  F: "[~@3 g5, ~@7 bb4@25]/2", G: "[bb5@59 ~@5]/4", H: "~@7 d3@5 c3@4", I: "d3@15 ~", J: "~@7 eb3@5 d3@4", K: "eb3@7 ~",
  L: "[~@7 d6@5 c6@2 d6@16 ~@2]/2", M: "[~@7 eb6@4 ~ d6@2 eb6@17 ~]/2", N: "~@7 d5@5 eb5@4",
  O: "[f4@31 ~@6 ab5@8 [g4,g5]@8 ~ ab5@5 ~ g5@4, f5@30 ~ g4@5 ab4@9 ~@8 ab4@6 g4@5, ~@16 g5@3 ~@13]/4", // G
  P: "[[f4,f5]@31 g4@5 ~@9 g5@18 f4@16 eb4@16 f4@15 g4@2, ~@31 g5@7 ab5@8 ~@66, ~@36 ab4@8 g4@19 ~@49]/7", // F
  Q: "[~@24 g5@7 ~, ~@7 bb4@25]/2", R: "[bb5@4 g5@4 f5@4 d5@2 c5@8 bb4@2 c5@2 d5@2 bb4@7 g4@4 f4@5 d4@4]/3",
  S: "[c4@6 bb3@2 c4@2 d4@2 bb3@35 ~]/3", T: "bb5", U: "c6", V: "d6", W: "eb6", X: "f6", Y: "g6", Z: "a6", AA: "bb6",
  AB: "[~ [bb2,d4]@48 ~@15]/4", // Bb
})).s("gm_string_ensemble_2").gain(0.17).pan(0.3)

// other · lead 1 square
const lead_1_square = note(`<
  ~@30 A@2 B@2 C@2 D@2 ~@25 A@2 B@2 C@2 D@2 ~@6 A@2 B@2 C@2 D@2 ~@23 E@2 F G E@2 F G H@4 ~
>`.pickRestart({
  A: "[g3@3 a3 bb3@2 g3 g4@7 d4@2, bb2 ~@31]/2", B: "[c4@3 d4 eb4@2 c4 bb4@7 ~ g4]/2",
  C: "[f4@4 g4@2 c4@14 ~@2 d4@2 c4@3 ~ bb3@4]/2", D: "[bb3@15 ~]/2", E: "[bb3@6 c4@2 d4@3 ~ bb3@2 bb4@15 ~ g4@2]/2",
  F: "f4@2 g4 d4@4 g4", G: "f4@2 g4 c4@2 d4@3", H: "[~ bb3@48 ~@15]/4",
})).s("gm_lead_1_square").gain(0.2).pan(0.1)

// chords · string ensemble 2
const string_ensemble_2_2 = note("<~@22 A@5 B@3 C@8 ~@24 D E@8 F@3 B@3 C@8 ~@31 G@3 ~@2>".pickRestart({
  A: "[d4@2 eb4@3, bb3@79 ~]/5", B: "[[a3,c4]@15 d4@7 eb4@6 ~@15 a3@5, ~@15 bb3@28 ~@5, ~@28 d4@19 ~]/3",
  C: "[d4@31 eb4@31 ~ [a3,c4]@32 d4@9 eb4@6 d4@18, [g3,bb3]@63 f3@64 ~, ~@95 bb3@32 ~]/8", D: "~@11 a3@5",
  E: "[d4@31 eb4@31 ~ [a3,c4]@32 [bb3,d4] bb3@31 ~, [g3,bb3]@63 f3@64 ~, ~@12 d4 ~@3]/8", F: "eb4/3", G: "[~ bb3@47]/3",
})).s("gm_string_ensemble_2").gain(0.17).pan(0.7)

// other · epiano1
const epiano1 = note(`<
  A@5 ~@7 B C D E F ~@13 G H I J ~@12 K ~@4 L M N O ~@8 G H I J ~@10 G H I J ~@12 K ~@4 L M N O ~@6 L M N O L M N O ~@5
>`.pickRestart({
  A: "[[bb3,d4]@6 f3@2 bb3 ~ [a3,eb4]@5 ~@7 f3@2 bb3 ~ [a3,eb4]@5 ~@7 f3@2 bb3 ~ [a3,eb4]@6 ~@6 f3 ~ bb3 ~ [a3,eb4]@5 ~ [bb3,d4]@7 ~@9, bb2@9 ~, f3@3 ~@13 [bb3,d4]@8 ~@8 [bb3,d4]@8 ~@8 [bb3,d4]@8 ~@24]/5", // Bb Adim Bb
  B: "~@2 [bb4,bb5] ~ [bb4,bb5]@3 ~ bb4 ~ [bb4,bb5]@2 ~@2 [bb4,bb5]@2", // Bb
  C: "~@2 bb4 ~ [bb4,bb5]@3 ~ [bb4,bb5]@2 ~@2 bb4 ~ [bb4,bb5]@2", // Bb
  D: "~@2 bb5 ~ [bb4,bb5]@2 ~@2 [bb4,bb5] ~ [bb4,bb5] ~ [bb4,bb5]@2 ~@2", // Bb
  E: "[bb4,bb5] ~ [bb4,bb5] ~ [bb4,bb5]@2 ~@2 [bb4,bb5]@2 bb4 ~ [bb4,bb5]@2 bb4 ~", // Bb
  F: "[c5,c6] ~ [c5,c6] ~ [c5,c6]@2 ~@10", G: "~@2 [bb4,bb5] ~ [bb4,bb5]@3 ~ bb4 ~ [bb4,bb5]@2 ~@2 [bb4,bb5] ~",
  H: "[bb4,bb5]@3 ~ [bb4,bb5] ~ [bb4,bb5]@3 ~ [bb5,bb6] ~ [bb5,bb6]@3 ~", // Bb
  I: "~@2 [bb4,bb5]@2 ~@2 [bb4,bb5] ~ [bb4,bb5]@3 ~ bb4 ~ [bb4,bb5]@2", // Bb
  J: "~@2 [bb4,bb5] ~ [bb4,bb5]@3 ~ [bb5,bb6] ~ [bb5,bb6]@3 ~@3", // Bb
  K: "~@4 [c5,g5] ~@3 [a4,c5,f5]@4 [a4,c5,g5] ~@3, ~@3 a4@2 ~@11", // C5 F Am7
  L: "~@2 [bb4,bb5] ~ bb4@2 ~@4 [bb4,bb5]@2 ~@2 [bb5,bb6] ~, ~@4 bb5 ~@11", // Bb
  M: "[bb5,bb6]@3 ~@3 [bb4,bb5]@2 ~@2 [bb5,bb6] ~ [bb5,bb6]@2 ~@2", // Bb
  N: "~@2 [bb4,bb5]@2 ~@2 [bb4,bb5] ~ [bb4,bb5]@2 ~@2 bb5 ~ [bb5,bb6]@2", // Bb
  O: "~@2 bb5 ~ [bb4,bb5]@2 ~@2 [bb4,bb5]@2 ~@2 [bb4,bb5]@2 ~@2", // Bb
})).s("gm_epiano1").gain(0.12)

// chords · piano
const piano = note(`<
  ~@11 A B@2 C@2 D@2 E F G H@3 I@3 J K@2 L@2 M@2 N@2 O@4 P@2 Q@2 R S T U V@3 W F G H@3 I@3 J K@2 L@2 M@2 N@2 X@2 I@3 J
  K@2 L@2 M@2 N@2 O@4 P@2 Q@2 R S T U V@3 W F G Y@3 ~@4 W F G Z@2 F G AA@6
>`.pickRestart({
  A: "~@2 [bb2,f3,bb3,d4] [a2,f3,a3,c4]", B: "[g2,g3,bb3,d4]/2",
  C: "[eb3@6 ~ [g3,bb3,f4]@5 ~ [g3,bb3,eb4]@3, [g3,bb3,eb4]@7 ~@9, ~@3 eb3@3 eb3@2]/2", // Gm7 Eb
  D: "[f3@9 ~@5 [a3,c4]@2, [a3,c4]@7 ~, ~@9 f3@2 [f3,f4]@5, ~@10 c3@3 c3@3]/2", // Am F
  E: "bb2@2 ~ f3@2 [f3,bb3]@3, d4, bb3@5 ~@3, f3@3 c4@5, ~ bb2@3", // Bb5
  F: "bb2 ~@2 g3, g3@3 ~, c4@5 c4@3, eb3@3 ~@5, ~ bb2@3",
  G: "bb2 ~@2 a3, [f3,a3,d4]@3 d4@5, ~@2 bb2@3 bb2@3, ~@3 f3@4 ~, ~@3 a3@3 ~@2", // Dm
  H: "[bb2@2 ~ [eb3,c4]@2 ~@3 [f3,bb3,d4]@3 [f3,bb3,d4]@13, [g3,c4]@3 g3@8 ~@13, ~@2 bb2@9 ~@13, ~@5 c4@6 ~@13]/3", // Cm Bb C5
  I: "[[g3,bb3,eb4]@12 [g3,f4] ~ f4@4 ~@4 g3@2 eb4@2 d4@2 c4@2 bb3 ~ c4@10 [g3,bb3,f4]@6, ~@7 bb3@5 bb3@2 ~@10, ~@7 g3@4 ~ g3@9 ~@3, ~@3 eb4 ~@4]/3", // Eb G7 Gm7
  J: "[f3,a3,c4]@3 [f3,a3,c4]@5", // F
  K: "[[f3,bb3,d4]@6 [bb3,d4]@6 eb4@2 ~@8 f3@2 [f3,bb3,d4]@3 ~ [a3,d4]@4, ~@3 f3@2 ~ bb3@6 ~@4, ~@6 f3@5 ~@5, ~@7 d4@5 ~@4]/2", // Bb D5
  L: "[g3@5 g3@2 [g3,bb3,d4]@9, [bb3,d4]@7 ~@9]/2", // Gm Bb
  M: "[[g3,bb3,eb4]@3 g3@6 ~@5 bb3@2, eb3@10 eb3@3 eb3@3, ~@3 bb3@11 ~@2, ~@3 eb4@8 eb4@5, ~@9 g3@2 g3@4 ~]/2", // Eb
  N: "[[f3,a3,c4]@3 f3@6 ~@2 [f3,a3,c4,f4]@5, ~@3 [a3,c4]@8 ~@5, ~@5 c3@3]/2", // F Am
  O: "[[f3,bb3,d4]@6 eb4 ~@4 [bb3,d4]@3 f3@2 [a3,c4,f4]@7 [a3,c4]@9, ~@12 bb3@10 ~@6 [bb3,d4]@11 ~@25, ~@6 f3@3 f3@2 f3@2 ~@3 f3@16, ~@7 d4@4 ~@21, ~@20 bb2@19 ~@25]/4", // Bb F Am Bb
  P: "[c4@10 ~ g4@5, [c3,eb4], g3@9 ~ c4@6]/2", Q: "[[a3,c4,f4]@13 ~ [a3,c4,f4]@18, f3]/2",
  R: "[g3,c4,eb4]@3 [g3,c4,eb4]@5", S: "eb3@4 ~@3 eb4, eb4@7 ~, bb3@3 bb3, g3@5 g3@3, ~ eb3",
  T: "[a3,c4]@3 ~@3 [a3,c4,f4]@10, f3, f4@3 ~@5", U: "[g3,bb3,eb4]@3 [g3,bb3,eb4]@5, eb3",
  V: "[[a3,c4,f4]@8 [bb3,eb4,g4]@3 [eb4,g4,bb4]@3 bb4@3 ~@2 [bb4,bb5]@2 [g5,bb5,eb6,g6]@2 ~, f2@15 ~, f3@17 bb4@2 ~@5, ~@14 [g4,eb5]@7 ~@3, ~@18 f3@5 ~]/3", // F Eb Bb Eb Cm
  W: "~@3 f3@2 [f3,bb3]@3, d4, bb3@5 ~@3, f3@3 c4@5, ~ bb2@3", X: "[[f3,bb3,d4]@3 [f3,bb3,d4]@13]/2",
  Y: "[bb2@2 ~ [eb3,c4]@2 c4@16 ~@3, [g3,c4]@3 g3@16 ~@5, ~ bb2@8 ~@3]/3", // Cm C5
  Z: "[bb2@2 ~ [eb3,c4]@2 ~@6 f3@2 [f3,bb3]@3, [g3,c4]@3 g3@13, ~@2 bb2@6 bb3@3 c4@5, ~@5 c4@3 f3@2 bb2@6, ~ d4]/2", // Cm Bb5 C5
  AA: "[bb2@4 ~@2 [eb3,c4]@4 ~@41 [d6,f6]@32 ~@13, [g3,c4]@3 g3@16 d7@16 ~@13, ~@4 bb2@13 [bb2,bb3]@48 ~@31, ~@5 c4@16 ~ bb6@16 ~@10]/6", // Cm Dm C5 Bb
})).s("gm_piano").gain(0.39).pan(0.4)

// chords · piano · soft notes
const piano_soft = note(`<
  ~@16 A@2 ~ B C D@2 ~@5 E ~ F@2 ~ G ~ H ~ E I@2 ~ J ~@10 B C D@2 ~@5 E ~ F@2 ~ G ~ H ~@6 E ~ F@2 ~ G ~ H ~ E I@2 ~ J
  ~@10 B C K@3 ~@5 B C L@2 B C K@3 ~@3
>`.pickRestart({
  A: "[~@4 c3 ~@3, f2]/2", B: "~@3 eb3@2 eb3@2 eb3", C: "~@7 f3", D: "[~@5 eb3@6 ~@5]/2", E: "~@5 f3 ~@2",
  F: "[~@3 g2@5]/2", G: "~@7 g3", H: "~ f3@2 ~@5", I: "[~@7 f4@9]/2", J: "~ g3@7", K: "[~@5 eb3@16 ~@3]/3",
  L: "[~@5 eb3@11]/2",
})).s("gm_piano").gain(0.2).pan(0.4)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~@12 A@2 B@2 C@2 D@4 E@2 F@2 G H E@2 A@2 B@2 C@2 I@2 J@2 K@2 J@2 K L M L N ~@2 D@4 E@2 F@2 G H E@2 A@2 B@2 C@2 E@2 F@2
  G H E@2 A@2 B@2 C@2 I@2 J@2 K@2 J@2 K L M L N ~@2 D@4 ~@6 D@6 O@6 ~
>`.pickRestart({
  A: "[[d4,g4]!2 [bb3,d4,g4] [bb3,d4]!2 [bb3,d4,g4]!3 [d4,g4]!2 [bb3,d4,g4] [bb3,d4]!2 [bb3,d4,g4]!3, g2, d3 d3, [g3,bb3] g3!3 [g3,bb3] g3!3, ~@3 g4@2 ~@6 g4@2 ~@3]/2", // G5 Gm Bb Gm G5 Gm Bb Gm
  B: "[[eb4,g4]!2 [bb3,eb4,g4] [bb3,eb4]!2 [bb3,eb4,g4]!3 [eb4,g4]!2 [bb3,eb4,g4] [bb3,eb4]!2 [bb3,eb4,g4]!3, bb2, eb3 eb3, [g3,bb3] g3!3 [g3,bb3] g3!3, ~@3 g4@2 ~@6 g4@2 ~@3]/2", // Eb Eb5 Eb Eb5 Eb Gm
  C: "[[f4,a4]!2 [c4,f4,a4] [c4,f4]!2 [c4,f4,a4]!2 [c4,f4,bb4] [f4,bb4]!2 [c4,f4,bb4] [c4,f4]!2 [c4,f4,a4]!3, c3, f3 f3, [a3,c4] a3!3 [a3,c4] a3!3, ~@3 a4@2 ~@6 a4@2 ~@3]/2", // F F5 F Fsus4 Bb5 Fsus4 F5 F …
  D: "[[d4,f4]!2 [bb3,d4,f4] [bb3,d4]!2 [bb3,d4,f4] [f3,bb3,d4,f4] [g3,bb3,eb4,g4] [eb4,g4]!2 [bb3,eb4,g4] [bb3,eb4]!2 [bb3,eb4,g4]!3, [f2,bb2]@7 [g2,c3]@9, [f3,bb3] f3!2 ~ [g3,bb3] g3!3, ~@3 f4@2 ~@6 g4@2 ~@3]/2", // Dm Bb Eb Eb5 Eb Bb5 C5 Bb5 …
  E: "[[d4,f4]!2 [bb3,d4,f4] [bb3,d4]!2 [bb3,d4,f4] [f3,bb3,d4,f4]!2 [d4,f4]!2 [bb3,d4,f4] [bb3,d4]!2 [bb3,d4,f4] [f3,bb3,d4,f4]!2, f2, bb2 bb2, [f3,bb3] f3!2 ~ [f3,bb3] f3!2 ~, ~@3 f4@2 ~@6 f4@2 ~@3]/2", // Dm Bb Dm Bb Bb5
  F: "[eb4,g4]!2 [bb3,eb4,g4] [bb3,eb4]!2 [bb3,eb4,g4]!3, [g2,c3], [g3,bb3] g3!3, ~@3 g4@2 ~@3", // Eb Eb5 Eb C5 Gm
  G: "[eb4,g4]!2 [bb3,eb4,g4] [bb3,eb4]!2 [bb3,eb4,g4]!3, [bb2,eb3], [g3,bb3] g3!3, ~@3 g4@2 ~@3", // Eb Eb5 Eb Eb5 Gm
  H: "[eb4,a4]!2 [c4,eb4,a4] [c4,eb4]!2 [c4,eb4,a4]!3, [f2,c3], [a3,c4] a3!3, ~@3 a4@2 ~@3", // Ebdim Adim Cm Adim F5 Am
  I: "[[d4,f4]!2 [bb3,d4,f4] [bb3,d4]!2 [bb3,d4,f4] [f3,bb3,eb4,f4] [f3,bb3,d4,f4] [d4,f4]!2 [bb3,d4,f4] bb3!2 [bb3,d4,f4] [f3,bb3,d4,f4]!2, f2, bb2 bb2, [f3,bb3] f3!2 ~ [f3,bb3] f3!2 ~, ~@3 f4@2 ~@6 [eb4,f4]@2 ~@3]/2", // Dm Bb Ebsus2 Bb Dm Bb Bb5 Ebsus2
  J: "[[f4,a4]!2 [c4,f4,a4] [c4,f4]!2 [c4,f4,a4]!3 [f4,a4]!2 [c4,f4,a4] [c4,f4]!2 [c4,f4,a4]!3, c3, f3 f3, [a3,c4] a3!3 [a3,c4] a3!3, ~@3 a4@2 ~@6 a4@2 ~@3]/2", // F F5 F F5 F Am
  K: "[eb4,g4]!2 [c4,eb4,g4] [c4,eb4]!2 [c4,eb4,g4]!3, [g2,c3], [g3,c4] g3!3, ~@3 g4@2 ~@3", // Eb Cm C5
  L: "[eb4,g4]!2 [bb3,eb4,g4] [bb3,eb4]!2 [bb3,eb4,g4]!3, [g2,eb3], [g3,bb3] g3!3, ~@3 g4@2 ~@3", // Eb Eb5 Eb Cm Gm
  M: "[f4,a4]!2 [c4,f4,bb4] [c4,f4]!2 [c4,f4,bb4]!2 [c4,f4,a4], [c3,f3], [a3,c4] a3!3, ~@3 a4@2 ~@3", // F Fsus4 F5 Fsus4 F F5 Am
  N: "[c3,f3,a3,c4,f4,a4]", // F
  O: "[[d4,f4]@2 [d4,f4]@2 [bb3,d4,f4]@2 [bb3,d4]@2 [bb3,d4]@2 [bb3,d4,f4]@2 [f3,bb3,d4,f4]@2 [g3,bb3,eb4,g4]@2 [eb4,g4]@2 [eb4,g4]@2 [bb3,eb4,g4]@2 [bb3,eb4]@2 [bb3,eb4]@2 [bb3,eb4,g4]@2 ~@2 bb3 [eb4,g4]@2 [bb2,f3,bb3,d4,f4,bb4]@48 ~@15, [f2,bb2]@14 [g2,c3]@19 ~@63, [f3,bb3] f3!2 ~ [g3,bb3] g3!3 ~@16, ~@3 f4@2 ~@6 g4@2 ~ [bb3,eb4] ~@33, ~@29 g4@2 ~@65]/6", // Dm Bb Eb Eb5 Eb Bb Bb5 C5 …
})).s("gm_acoustic_guitar_steel").gain(0.07).pan(0.6)

// chords · epiano2
const epiano2 = note("<~@4 A@2 B@2 C D E@2 F@2 ~@88 A@2 G@2 C H@3 ~@11>".pickRestart({
  A: "[~@15 f3, bb2, d4@3 d4@4 eb4@4 d4@5, ~ f3@3 eb4@2 bb3@3 f3@3 eb4@4, ~@2 bb3@3 f3@3 d4@2 bb3@3 f3 bb3@2]/2",
  B: "[~@28 eb4@2 g3 ~, bb2@31 ~, eb4@3 eb4@4 f4@4 eb4@2 g3@2 ~, ~@2 g3@6 f4@4 c4@6 g3@6 f4@7 ~, ~@4 c4@6 g3@6 eb4@4 c4@11 ~]/2",
  C: "~@7 g3, eb3, eb4@3 eb4@3 eb4@2, ~ g3@3 g3@3 ~, ~@2 bb3@3 bb3@3",
  D: "~@7 a3, f3, eb4@3 eb4@3 eb4@2, ~ a3@3 a3@3 ~, ~@2 c4@3 c4@3",
  E: "[~@11 d4 [bb2,f3,bb3,d4]@2 [a2,a3,d4]@2, bb2@23 ~@9, d4@3 d4@4 eb4@5 ~@4, ~ f3@3 eb4@2 bb3@3 f3@3 ~@4, ~@2 bb3@3 f3@3 d4@2 bb3@2 ~@4]/2", // Bb D5
  F: "[g2,g3,bb3,d4]/2", // Gm
  G: "[~@15 g3, bb2, eb4@3 eb4@4 f4@4 eb4@2 g3 eb4@2, ~ g3@3 f4@2 c4@3 g3@3 f4@4, ~@2 c4@3 g3@3 eb4@2 c4@6]/2",
  H: "[~@7 a3@16 ~, f3@2 ~, eb4@3 eb4@3 eb4@16 ~@2, ~ a3@3 a3@3 ~@17, ~@2 c4@3 c4@16 ~@3]/3",
})).s("gm_epiano2").gain(0.13)

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

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@62 A ~@6 B ~@6 A ~@34 C ~@2 A ~@6>".pickRestart({
  A: "~@5 x ~@2", B: "~@7 x", C: "~@3 x",
})).gain(0.32)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@18 A@3 ~@8 A ~@10 A@2 ~@2 A ~ A ~@2 B C ~@11 D ~ A ~@5 A ~@5 D ~ A ~@8 A@2 ~@2 A@3 E ~@2 F ~@3 A ~@5 G ~@13
>`.pickRestart({
  A: "~@3 x", B: "~@3 x ~@4", C: "~ x!2 ~ x ~@3", D: "~@15 x", E: "~@12 x ~@2 x", F: "~@4 x!3 ~", G: "~@7 x",
})).gain(0.39)

// drums · low tom · soft notes
const low_tom_soft = s("lt").struct("<~@39 A ~@3 A ~@6 B ~@19 C ~@50>".pickRestart({
  A: "~ x", B: "~@5 x!2 ~", C: "~@5 x ~@2",
})).gain(0.19)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@12 A B@9 C B@6 D B@5 E B E B@2 D@2 B@2 D B D B ~ F G H B@2 I J B@6 K J B@4 L B M J B@4 K J B@4 L N O J D P D J D P Q
  P R ~ S G H J B T ~@6 H J B U V J W X ~@5
// … 35 more lines

More by Dalla