Strudelify
Non e Francesca cover art

Lucio Battisti

Non e Francesca

Battisti

KeyA minorTempo108 bpm
0:00/0:00
// Non e Francesca — Battisti
// 108 bpm, 4/4, key A 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 83 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(108/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 · "NON E'FRAN"
const bass = note("<~@54 A@2 B@3 C D@4 E F@5 G H I J@3 K L M@2 N@3>".pickRestart({
  A: "[d2@11 a1@11 ~ b1@3 ~ c2@3 d2@7 ~ e2@7 ~ g2@7 a2@4 c3@3 ~ d3@3]/2",
  B: "[~ c3@4 a2@3 ~ a1@14 ~ e2@4 a1@7 ~ b1@3 ~ c2@3 d2@4 e2@4 g2@4 a2@3 ~ b2@4 a2@3 ~ e2@3 a2@4 ~@4 a2@7 ~ g2@4 f#2@6]/3",
  C: "~ f#2@7 ~ e2@3 ~ d2@7 ~ c2@3 ~ b1@7",
  D: "[a#1@3 ~ a1@4 ~@4 a1@7 ~ a2@11 g2@8 e2@2 ~@2 d3@4 e2@4 a2@3 g2@7 ~ e2@4 a1@4 ~@4 a1@7 a2@4 g2@4 e2@3 ~ d2@7 ~ c2@3 d2@4 c2@7 ~ b1@7 ~ a#1@4]/4",
  E: "a1@4 ~@3 a1@6 ~@2 b1@7 ~ c2@4 d2@5",
  F: "[~@2 e2@6 ~@2 a2@7 ~ g2@3 ~ e2@7 a1@10 ~@2 a1@4 ~@4 a1@4 ~@3 a1@3 ~ a1@9 ~@3 a1@4 ~@3 a1@4 ~@4 a1@3 ~ a1@9 ~@3 a1@4 ~@3 a1@4 ~@4 a1@3 ~ a1@9 ~@2 a1@4 ~@4 a1@4 ~@4 a1@3 ~ a1@7]/5",
  G: "~@4 a1@4 ~@4 a1@4 ~@4 a1@3 ~ a1@8", H: "~@3 a1@4 ~@4 a1@4 ~@4 a1@3 ~ a1@9",
  I: "~@2 a1@4 ~@4 a1@4 ~@3 a1@3 ~ a1@8 ~@3",
  J: "[~ d2@4 ~@4 a1@5 ~@2 a1@3 ~ a1@4 ~@4 a1@7 ~ a2@4 g2@3 e2@4 g2@7 ~ f2@7 ~ e2@7 d2@4 c2@3 ~ b1@3 ~ a1@7 ~ a2@6]/3",
  K: "~ g2@4 e2@7 ~ d2@7 ~ c2@3 ~ d2@3 c2@4", L: "b1@4 c2@4 b1@4 a#1@3 ~ a1@7 a2@9",
  M: "[~@3 g2@14 ~ e2@11 ~ d2@7 ~ c2@3 d2@3 ~ a1@4 ~@4 a1@11]/2",
  N: "[~ b1@4 c2@3 d2@7 ~ e2@7 ~ g2@11 a2@4 g2@4 a1@3 ~@5 a1@21 ~@24]/3",
})).s("gm_electric_bass_finger").gain(0.47)

// chords · acoustic guitar steel · "A.GUITAR"
const acoustic_guitar_steel = note(`<
  ~ A B@3 C D@3 E F G H@7 I@8 J@4 K L@8 M@3 N@2 O@5 P@6 Q@7 R@3 S@6 T U@6 V@4
>`.pickRestart({
  A: "~@3 c4 ~@3 g3, a2 g2, ~ e3@3 ~ b2@3, ~ a3 ~ d3",
  B: "[~@12 c4@4 ~@8 e2@4 ~@12 c4@7 ~ e2@3 ~ e2@3 ~ g2@3 ~@33 a3@4, c3@4 e2@2 ~@3 a3@3 ~@5 a3@3 c4 a3 c4@2, ~@4 e3@12 ~@4 b2@8 a2@20 ~@12 a2@35 ~, ~@8 g3@8 ~@16 e3@15 ~@17 e3@31 ~, ~@18 c4 e4@5]/3",
  C: "~@12 c4@4 ~@12 g3@3 ~, a2 g2, ~ e3@3 ~ b2@3, ~ a3 ~ d3",
  D: "[~@12 c4@4 ~@8 e3@4 ~@12 c4@8 e2@4 e2@3 ~ g2@3 ~@13 c4@7 ~@2 a4@7 ~ g4@7, c3@16 e2@12 ~@8 a3@12 ~@20 a3@11 ~@17, ~@4 e3@12 ~@4 b2@8 a2@20 ~@12 a2@19 ~ [a2,e3,a3,c4,e4]@8 [g2,d3,g3,b3,d4]@8, ~@8 g3@8 ~@16 e3@15 ~@17 e3@15 ~@17]/3", // Am G
  E: "~@3 a3 ~@3 g3, f2@16 g2@15 ~, ~@4 c3@12 ~@4 b2@11 ~, ~ f3 ~ d3",
  F: "~@7 c4, a2, ~ e3@7, ~@2 a3@3 c4 a3@2, ~@3 c4 e4@4",
  G: "~@12 g3@4 ~@9 f3@5 a3@2, g2@16 ~ f2@15, ~@4 b2@12 ~@5 c3@11, ~ d3 ~@2",
  H: "[~@19 g#3@55 ~@13 c4@4 ~@12 f4@4 ~@12 c4@4 ~@11 g#3@4 ~@12 c4@4 ~@12 f4@4 ~@12 c4@4 ~@11 g#3@4 ~@12 c4@4 ~@4 a3@3, ~@2 e2@72 ~@9 a3@8 ~@4 a3@12 ~@4 e3@12 ~@4 b2@12 a2@16 ~@7 d4@8 ~@8 a3@8 ~@7 d3@8 ~@4 e3@11 ~ d3@7, ~@7 b2@67 ~@2 a2@16 ~@7 d4@8 ~@8 a3@8 ~@8 d3@8 ~@3 e3@12 d3@16 a2@16 e2@16 ~@7 a3@8 ~@7, ~@12 e3@61 ~@7 e3@11 d3@16 a2@16 e2@15 ~@8 a3@8 ~@4 a3@12 ~@4 e3@12 ~@3 b2@12 a2@15 ~@8]/7",
  I: "[~@5 f4@3 ~@13 c4@3 ~@13 g3@4 ~@29 g#3@4 ~@12 c4@4 ~@12 g3@3 ~@29 d3@4 ~@12 [g#3,b3,e4]@19 ~@13 c4@4 ~@12 g3@4 ~@12 c4@4 ~@24 [c4,e4]@8 e2@3 ~ e2@2, ~ d4@8 a2@16 g2@16 e2@25 b2@8 a2@16 g2@16 e2@19 ~ e2@12 e2@32 ~@48 e2@8 e2@8 ~@22, ~@13 e3@11 ~@5 b2@12 ~@4 b2@13 e4@16 ~@44 [g#3,b3,e4]@19 ~@41 a3@8 ~@8 d3@8 ~@4 e3@12 ~@16 e3@15 ~@7, ~@17 a3@7 ~@9 d3@8 ~@8 d3@24 ~@5 e3@12 ~@4 b2@11 ~@5 b2@19 ~ b2@7 ~@5 b2@27 ~ a2@16 g2@16 ~@8 g3@8 ~@20 a3@12 ~@6, ~@54 g#3@8 b3@12 ~@8 a3@8 ~@8 d3@7 ~@9 d3@19 ~@13 d3@24 ~@4 e3@12 ~@4 b2@12 c3@16 ~@4 b2@8 a2@20 ~@6]/8", // E C E
  J: "[~@2 g2@3 ~@33 a3@4 ~@12 c4@4 ~@12 g3@3 ~@13 c4@4 ~@8 e3@4 ~@12 [c4,e4]@8 e2@4 e2@2, ~@6 a2@35 ~ a2@16 g2@16 ~@16 e2@12 ~@26, ~@10 e3@31 ~@5 e3@12 ~@4 b2@12 c3@16 ~@4 b2@8 a2@20 ~@6, ~@14 a3@12 c4@4 a3@4 c4@8 ~@8 a3@8 ~@8 d3@8 ~@4 e3@12 ~@16 e3@15 ~@7, ~@9 c4@2 e4@10 ~@20 g3@4 ~@10 a3@6 ~@3]/4", // C
  K: "~@2 g2@3 ~@21 e4@4 g3@2, ~@3 a2@12 ~, ~@14 e3@15 ~@3, ~@18 a3@11 ~@3, ~@11 c4@4 ~",
  L: "[~@2 [d3,g3,b3,d4,g4]@7 ~ [f2,c3,f3,a3,c4,f4]@15 ~@2 g4@15 ~@28 c4@4 ~@12 g3@4 ~@14 a3@4 ~@17 g#3@55 ~@13 c4@4 ~@12 f4@4 ~@12 c4@4 ~@11 g#3@4 ~@8 a3@4, ~ g2@7 ~@17 g2@16 ~ a2@32 g2@16 ~ f2@17 e2@72 ~@33 a2@16 e2@15 a2@12, ~@26 [d3,g3,b3,d4]@15 ~@5 e3@28 ~@4 b2@12 ~@5 c3@13 ~@5 b2@67 ~@2 a2@16 ~@7 d4@8 ~@43, ~@50 a3@12 c4@4 a3@8 ~@8 d3@8 ~@9 f3@8 ~@11 e3@61 ~@7 e3@11 d3@16 ~@4 e3@12 ~@4 b2@12 ~@11, ~@54 c4@4 e4@16 ~@115 a3@8 ~@4 a3@12 ~@8 a3@8 ~@8 d3@8 ~@3 e3@8]/8", // G F G
  M: "[c4@4 ~@12 f4@4 ~@12 c4@3 ~@12 g#3@4 ~@12 c4@4 ~@12 f4@3 ~@9 a3@4 c4, ~@4 d3@16 a2@15 e2@16 ~@8 a3@8 ~@4 a3@11 ~@5 e3@9, ~@8 a3@12 ~@4 e3@12 ~@3 b2@12 a2@15 ~@9 d4@8 ~@13, ~@12 d4@8 ~@8 a3@8 ~@7 d3@8 ~@4 e3@11 ~ d3@15 a2@14]/3",
  N: "[~@15 g3@4 ~@29 b2@4 ~@8 a3@4, ~@3 g2@16 e2@33 a2@12, ~@7 b2@12 ~@4 b2@13 b3@4 e4@12 ~@12, ~@11 d3@8 ~@8 d3@25 ~@4 e3@8, ~@31 g#3@13 b3@8 ~@12]/2",
  O: "[c4@4 ~@12 g3@3 ~@29 b2@4 ~@8 [a3,c4,e4,b4]@7 ~ e4@7 [a3,c4,e4]@4 [e3,a3,c4,e4,b4]@7 ~ [a3,c4,e4,b4]@3 ~ [c4,e4]@3 ~ [a3,c4]@3 ~ [e4,b4]@7 ~@16 [c4,e4,b4]@7 [a3,c4,e4]@8 [a3,c4,e4]@4 [e3,a3,c4,e4,b4]@7 ~ [e4,b4]@3 [e3,a3,c4,e4]@4 [e3,a3,c4,e4]@4, ~@4 g2@16 e2@32 a2@61 ~ a2@46, ~@8 b2@11 ~@5 b2@16 e4@4 g#3@7 ~@16 [a3,c4]@8 ~@15 a3@4 e4@4 ~@8 [a3,c4,e4,b4]@15 a3@8 ~@31, ~@12 d3@7 ~@9 d3@23 ~@8 e3@8 e3@11 ~@8 e3@4 e3@8 [e3,a3,c4]@8 e3@35 ~@7 [e3,a3,c4]@4 ~@8, ~@32 g#3@4 b3@15 ~@17 b4@11 ~@12 b4@8 ~@30 b4@11 ~@12 b4@8]/5", // Am C Am E5 Cmaj7 Am E5 Am
  P: "[[e3,a3,c4,e4,b4]@8 ~@16 b4@7 [a3,c4,e4]@8 [a3,c4,e4]@3 ~ [e4,b4]@7 [a3,c4,e4,b4]@4 [a3,c4,e4]@4 [a3,c4,e4]@4 [e3,a3,c4,e4,b4]@7 ~@4 a2@3 ~@9 [a3,c4,e4,b4]@7 ~ [a3,c4,e4]@7 [a3,c4,e4]@4 [e3,a3,c4,e4,b4]@7 ~ [a3,c4,e4,b4]@4 [a3,c4,e4]@4 [a3,c4,e4]@4 [e3,a3,c4,e4,b4]@7 [e3,a3,c4,e4,b4]@8 ~ [e4,b4]@26 [e3,a3,c4,e4,b4]@7 ~ [c4,e4,b4]@7 [a3,c4,e4]@8 [a3,c4,e4]@3, ~@8 [e3,a3,c4,e4,b4]@15 [e3,a3,c4,e4]@8 [e3,b4]@11 e3@11 ~ [e3,b4]@8 ~@7 [e3,a3,c4]@15 e3@8 e3@11 ~@8 e3@4 ~ [e3,b4]@8 ~@15 [e3,a3,c4]@27 ~@7 [e3,a3]@7 ~ [e3,b4]@11, ~@16 a2@56 ~@5 a2@61 ~ a2@53, ~@42 [a3,c4]@8 ~@20 [e4,b4]@15 ~@8 b4@11 ~@88]/6", // Am E5 Am E5 Am Cmaj7 Am E5 …
  Q: "[~ [a3,c4,e4]@4 [a3,c4,e4]@4 [e3,a3,c4,e4,b4]@7 [e3,a3,c4,e4,b4]@8 [a3,c4]@8 [a3,c4]@4 [a3,c4,e4,b4]@7 ~ a3@3 ~@4 e4@4 [e3,a3,c4,e4,b4]@7 ~@28 [c4,e4,b4]@5 ~ [e4,b4]@5 [e3,a3,c4,e4,b4]@6 [a3,c4,e4,b4]@6 [a3,c4,e4,b4]@5 ~ [e4,b4]@5 ~@27 [e3,a3,c4,e4,b4]@6 [e3,a3,c4,e4,b4]@6 [e3,a3,c4,e4,b4]@5 ~ [a3,c4,e4,b4]@5 ~ [a3,c4,e4,b4]@5 ~ b4@5 [e3,a3,c4,e4,b4]@4 ~@23 [e3,a3,c4,e4,b4]@6 [e3,a3,c4,e4,b4]@5, ~ [e3,b4]@8 a2@60 ~@2 a2@60 ~ a2@60 ~@2 a2@30, ~@24 [e3,e4,b4]@12 e3@11 [e3,a3,c4]@8 ~@7 e3@23 ~@4 [e3,a3]@6 [e3,a3,c4]@6 ~@6 e3@11 [e3,a3,c4]@6 [e3,a3,c4,e4]@23 ~@21 e3@6 e3@6 [e3,a3,c4,e4]@6 ~@4 [e3,a3,c4,e4,b4]@18 ~@16, ~@43 [c4,e4,b4]@4 e4@3 ~@13 [a3,c4,e4,b4]@23 ~@138, ~@48 b4@7 ~@70 b4@23 ~@76]/7", // Am Cmaj7 E5 Am E5 Am E5 Am …
  R: "[~ [e4,b4]@5 ~ [c4,e4,b4]@5 ~ [e4,b4]@5 [e3,a3,c4,e4,b4]@5 ~ [e3,a3,c4,e4,b4]@4 a2@3 ~@18 [e3,a3,c4,e4,b4]@5 ~ [c4,e4,b4]@5 ~ b4@5 ~ b4@5 [e3,a3,c4,e4,b4]@5 ~ [e3,a3,c4,e4,b4]@3 ~ [a3,c4,e4,b4]@3 ~ [a3,c4,e4,b4]@3 ~ [e4,b4]@4 ~@2, [e3,a3,c4]@6 [e3,a3]@6 [e3,a3,c4]@5 ~@11 [e3,a3,c4,e4,b4]@20 ~@6 [e3,a3]@6 [e3,a3,c4,e4]@6 [e3,a3,c4,e4]@5 ~@10 e3@4 e3@4 [e3,a3,c4]@4 ~@3, ~@32 a2@61 ~@3]/3", // E5 Cmaj7 E5 Am Cmaj7 Am E5 Am …
  S: "[~ [e3,a3,c4,e4,b4]@6 [e3,a3,c4,e4,b4]@4 a3@2 a3@3 ~ [a2,e3] ~@4 [a2,e3]@2 [a2,e3,a3,c4,e4,b4]@4 [a2,e3]@2 [a2,e3,a3,c4,e4,b4]@4 ~@2 [e3,a3,c4,e4,b4]@4 [a2,e3,a3] ~ [a3,c4]@3 ~ [a2,e3] ~ [c4,e4,b4]@4 a2 ~@4 [a2,e3,a3]@2 [a2,e3,a3,e4,b4]@4 ~@2 c4@3 ~@3 e3@3 ~ a2 ~@4 [a2,e3,a3]@2 [a2,e3,a3,c4,e4,b4]@4 a2 ~ [a2,e3,a3,c4,e4,b4]@4 [a2,e3,a3] ~@5 a2 ~ b4@4 a2 ~@4 a2@2 [a2,e3,a3,c4,e4,b4]@4 [a2,e3,a3]@2 [a2,e3,a3,c4,b4]@4 ~@2 [c4,e4]@3 ~ e3 ~ a3@3 ~ a2 [a2,e3,a3,b4]@4 [a2,e3,a3,c4,e4]@2 [a2,e3,a3,c4,e4,b4]@4 [a2,e3,a3,c4,e4]@4 [a2,e3,a3,c4,e4]@3 ~ c4@3 ~ a2 ~@4 [a2,e3,a3]@2 [a2,e3,a3,c4,e4,b4]@4 [a2,e3,a3,c4,e4]@2 [a2,e3,a3,c4,e4,b4]@4 ~@4 a2 ~ [e3,a3,c4,e4,b4]@3 ~@5 a2 ~ [e4,b4]@3, ~@11 a2@5 a3@2 [a2,e3,a3]@6 ~@10 [a2,e3,a3]@2 ~@5 [a2,e3]@4 [a3,c4]@2 [a2,e3,a3]@6 [a2,e3,a3]@4 ~@6 [a2,e3,a3,c4]@2 [e3,a3,e4,b4]@4 [a2,a3]@2 [a3,c4,e4,b4]@6 [e4,b4]@5 ~@12 [a3,c4,e4,b4]@5 ~@7 b4@5 ~@6 e4@3 ~@2 a2@4 [c4,e4]@2 e3@4 a3@2 ~@18 [e4,b4]@6 ~@16 a2@3 ~ a2@3 ~ [a2,e3,a3,c4,e4]@6 [a2,e3,a3,c4]@4, ~@13 [e3,c4,e4,b4]@6 [c4,e4,b4]@5 ~@11 a2@4 ~@3 [e4,b4]@6 ~@6 [c4,e4,b4]@5 c4@3 ~@2 a2@4 c4@2 a2@4 e3@2 [a2,e3,a3,c4]@6 ~@11 [a2,e3]@4 e3@2 [a2,e3,a3,c4,e4]@6 [a2,e3,a3,c4,e4]@6 ~@10 [a2,e3,a3,c4,e4]@2 [e3,a3,b4]@4 a2@6 ~@18 [a2,e3,a3]@4 [e3,a3,c4]@2 [a2,e3,a3,c4,e4]@6 ~@10 [a2,e3,a3,c4,e4]@2 [e3,a3,c4,e4,b4]@4 ~@7 [e3,a3,c4]@2 ~@4, ~@127 a3@2 [c4,e4,b4]@5 [c4,e4]@3 ~@7 b4@7 ~@7 b4@5 ~@20 b4@6 ~@3]/6", // Am A5 Am A5 Am A5 Am A5 …
  T: "[a2,e3,a3,c4,e4]@2 [a2,e3,a3,c4,b4]@4 [a2,e3,a3,c4,e4]@2 [c4,e4]@3 ~@3 [e3,a3,c4,e4,b4]@3 ~ [a3,c4,e4,b4]@3 ~@4 [a2,a3]@2 [a2,e3,a3,c4,e4,b4]@4 [a2,e3,a3,c4], ~@2 e4@3 ~@3 [a2,e3,a3,b4]@4 [a2,e3,a3,c4]@2 ~@3 [a2,e3]@4 [a2,e3,a3,c4,e4]@6 ~@5, ~@11 e4@2 a2@4 ~@5 b4@5 ~@5", // Am C Am A Am Asus2 Am A5 …
  U: "[~ e4@3 ~@3 a3@3 ~ a2 ~ b4@3 ~ b4@3 [a2,e3,a3,c4,e4,b4]@7 ~ [e3,a3,c4,e4,b4]@8 ~@3 [e3,a3,c4,e4,b4]@6 [e3,a3,c4,e4,b4]@6 [e3,a3,c4,e4,b4]@6 [a3,c4,e4,b4]@5 ~ [c4,e4,b4]@5 [e3,a3,c4,e4,b4]@6 ~@27 [e3,a3,c4,e4,b4]@5 ~ [a3,c4,e4,b4]@5 ~ [a3,c4,e4,b4]@5 ~ [e4,b4]@5 ~ b4@5 [e3,a3,c4,e4,b4]@6 [e3,a3,c4,e4,b4]@3 ~@24 [a3,c4,e4,b4]@5 ~ [c4,e4,b4]@5 [e3,a3,c4,e4,b4]@6 [e3,a3,c4,e4,b4]@6 [e3,a3,c4,e4,b4]@5 ~, a2@4 e4@2 [a2,e3]@4 [e3,a3]@2 [a2,e3,a3,c4,e4]@4 [a2,e3,a3,c4,e4]@4 ~@7 a2@8 ~@22 e3@11 ~@6 [e3,a3,c4,e4,b4]@23 ~@9 e3@6 e3@6 [e3,a3,c4]@6 [e3,a3,c4,e4]@6 ~@9 e3@18 ~@5 e3@6 [e3,a3]@5 ~@19, ~ [e3,a3,c4,b4]@4 [a2,e3,a3,c4]@2 [c4,e4,b4]@5 ~@50 a3@6 ~@14 a2@58 [a3,c4,e4,b4]@18 ~@34, ~@3 a2]/6", // Am Cmaj7 Am E5 Am Cmaj7 Am A5 …
  V: "[[e3,a3,c4,e4,b4]@5 ~ [c4,e4,b4]@3 ~@22 [e3,a3,c4,e4,b4]@5 ~ b4@5 [e3,a3,c4,e4,b4]@6 [e3,a3,c4,e4,b4]@5 ~ [e3,a3,c4,e4,b4]@5 ~ [e4,b4]@3 ~ [e4,b4]@3 [e3,a3,c4,e4,b4]@4 [e3,a3,c4,e4,b4]@4 [a2,e3,a3,c4,e4,b4]@7 ~ [a3,c4,e4,b4]@22 ~@23, ~@5 [e3,a3]@4 [e3,a3,c4]@20 ~@7 [e3,a3,c4,e4]@5 ~@18 [e3,a3,c4]@4 [e3,a3,c4]@4 ~@61, ~@9 a2@3 ~ a2@61 ~@8 [a2,e3]@23 ~@23, ~@10 [e4,b4]@19 ~@99]/4", // Am Cmaj7 Am E5 Am A5 Am A5 …
})).s("gm_acoustic_guitar_steel").gain(0.26).pan(0.6)

// chords · string ensemble 1 · "STRINGS 1"
const string_ensemble_1 = note(`<
  ~@5 A B C ~ D E F G@2 H I J K L M@5 ~@4 N@4 O@6 P Q R S T U V@2 W@8 ~@14 X@4 Y Z@8 ~@2
>`.pickRestart({
  A: "c4@15 ~ b3@16", B: "d4@8 c4@8 b3@15 ~", C: "a3@27 ~@5", D: "[a4,c5] [b4,d5]", E: "b4@7 ~ c5@8 d5@8 c5@7 ~, e5",
  F: "[b4,d5]@16 ~ a4@15, ~ c5", G: "[~@2 [g#4,b4]@53 ~@9]/2",
  H: "~@12 [a4,e5]@2 ~@6 e5@2 ~@5 [a4,d5]@2 ~@3, ~@19 a4@2 ~@11", // A5 D5
  I: "~@3 [a4,d5]@2 ~@6 [a4,c5] ~@7 c5@2 ~@6 [g#4,b4]@2 ~@3, ~@19 a4 ~@12", // D5 Am G#m
  J: "~@3 b4@2 ~@6 e5@2 ~@5 [a4,e5]@2 ~@6 [a4,d5]@2 ~@4, ~ g#4 ~@3 a4 ~@10", // A5 D5
  K: "~ [a4,d5] ~@3 c5 ~@3 [a4,c5] ~@3 [g#4,b4] ~@2, ~@10 a4 ~@21", // D5 Am G#m
  L: "~@2 b4@2 ~@5 e5@2 ~@6 [a4,e5]@2 ~@6 [d5,f5]@4 [c5,e5]@3, ~ g#4@2 ~@6 a4 ~@22", // A5 Dm C
  M: "[~ [b4,d5]@4 [c5,e5]@10 ~@2 [c5,e5]@8 [b4,d5]@48 ~ [a4,c5]@16 [b4,d5]@64 ~@6]/5", // Bm C Bm Am Bm
  N: "[~@10 c4@15 ~ b3@16 d4@8 c4@8 b3@15 ~ a3@27 ~@27]/4",
  O: "[~@10 [a4,c5]@16 [b4,d5]@16 b4@7 ~ c5@8 d5@8 c5@7 ~ [b4,d5]@16 ~ a4@17 [g#4,b4]@53 ~@21 [a4,e5]@2 ~@6 e5@2, ~@42 e5@32 ~@16 c5@17 ~@82 a4@2 ~]/6", // Am Bm G#m A5
  P: "~@5 [a4,d5]@2 ~@6 [a4,d5]@2 ~@6 [a4,c5] ~@7 c5@2 ~, ~@29 a4 ~@2", // D5 Am
  Q: "~@5 [g#4,b4]@2 ~@6 b4@2 ~@5 [a4,e5]@2 ~@6 [a4,e5]@2 ~@2, ~@6 g#4 ~@9", // G#m A5
  R: "~@2 [a4,d5] ~@3 [a4,d5] ~@3 c5 ~@3 [a4,c5] ~, ~@20 a4 ~@11", // D5 Am
  S: "~@4 b4@2 ~@5 [g#4,b4]@2 ~@6 e5@2 ~@6 [a4,e5]@2 ~@3, ~@3 g#4@2 ~@14 a4 ~@12", // G#m A5
  T: "~@3 [d5,f5]@4 [c5,e5]@4 [b4,d5]@4 [c5,e5]@10 ~@2 [c5,e5]@5", U: "~@3 [b4,d5]@29",
  V: "[~@20 [a4,c5]@16 d5@15 ~ e5@12, ~@5 b5@11, ~@9 b4@7]/2", W: "[~@5 [b4,e5,b5]@59]/8",
  X: "[~@3 e4@52 ~@2 e4@5 d4@5 e4@5 d4@5 e4@5 d4@5 ~ c4@4 ~ g4@5 [c4,e4]@5 [d4,g4]@5 [e4,a4]@5 [d4,g4]@5 ~ a4@4 ~ c5@4, ~@87 e4@5 d4@6 ~@20 e4@5 g4@5]/4", // C G5 A5 G5
  Y: "~ [e4,a4]@5 [g4,c5]@5 [a4,d5]@5 [g4,c5]@5 [a4,d5]@5 [c5,e5]@5 d5", // A5 C5 D5 C5 D5 C
  Z: "[a4@5 [c5,e5]@5 [e5,g5]@5 [c5,a5]@5 [b4,e5,b5]@236]/8", // C Em F E5
})).s("gm_string_ensemble_1").gain(0.17).pan(0.2)

// chords · string ensemble 1 · "STRINGS 2"
const string_ensemble_1_2 = note(`<
  ~@5 A@2 B C D E F G@2 H I J K L@6 ~@4 M@2 N@2 O@6 P Q R S T U@2 V W@8 ~@13 X@4 Y@2 Z@8 ~@2
>`.pickRestart({
  A: "[a3 g3@2 g#3]/2", B: "a3@29 ~@3", C: "~@16 a2@8 g2@7 ~", D: "[f2,a3] [g2,b3]",
  E: "b3@8 c4@7 ~ d4@8 c4@8, a2@31 ~", F: "[g2,b3]@16 ~ a3@15, ~ f2", G: "[~ [e2,g#3]@27 ~@4]/2",
  H: "~@12 [c3,e4]@2 ~@6 e4@2 ~@5 [d3,f4]@2 ~@3, ~@19 c3@2 ~@11", // C Dm
  I: "~@3 [d3,f4]@2 ~@6 [e3,e4] ~@7 [e3,e4] ~@7 [e3,e4] ~@4", // Dm E
  J: "~@3 e3@2 ~@6 e4 ~@6 [c3,e4]@2 ~@6 [d3,f4]@2 ~@4, ~@3 e4 ~@6 c3@2 ~@20", // C Dm
  K: "~ [d3,f4] ~@3 [e3,e4] ~@3 [e3,e4] ~@3 [e3,e4] ~@2", // Dm E
  L: "[~@2 e4@2 ~@5 [c3,e4]@2 ~@6 c3@2 ~@6 d3@16 e3@16 g3@16 g#3@32 ~ [e3,c4]@16 [g3,b3]@16 [e3,g#3]@48 ~@6, ~ e3@2 ~@14 e4 ~@7 a3@32 b3@48 ~@87]/6", // C G E
  M: "[~@5 a3@8 g3@16 a3@3]/2", N: "[~@2 g#3@8 a3@29 ~@19 a2@6]/2",
  O: "[~@2 g2@7 ~ [f2,a3]@16 [g2,b3]@16 b3@8 c4@7 ~ d4@8 c4@8 [g2,b3]@16 ~ a3@17 [e2,g#3]@54 ~@20 [c3,e4]@2 ~@6 e4@2, ~@42 a2@31 ~@17 f2@17 ~@82 c3@2 ~]/6", // F G E C
  P: "~@5 [d3,f4]@2 ~@6 [d3,f4]@2 ~@6 [e3,e4] ~@7 [e3,e4] ~@2", // Dm E
  Q: "~@5 [e3,e4] ~@6 e4 e3@2 ~@6 e4 ~@6 [c3,e4]@2 ~@2, ~@10 c3 ~@5", // E C
  R: "~@2 [d3,f4] ~@3 [d3,f4] ~@3 [e3,e4] ~@3 e4 ~, ~@27 e3@2 ~@3", // Dm E
  S: "~@4 e3@2 ~@5 [e3,e4]@2 ~@6 [c3,e4]@2 ~@6 c3@2 ~@3, ~@3 e4@2 ~@22 e4 ~@4", T: "~@3 d3@16 e3@13, ~@3 a3@29",
  U: "[~@3 g3@16 g#3@32 ~ [e3,c4]@12, ~@3 b3@48 ~@13]/2", V: "~ [g3,b3]@4 [e3,g#3]@3", W: "[~@5 [e3,a3,e4]@59]/8",
  X: "[~@27 b3@91 ~ b3@5 ~ a3@3]/4", Y: "[~@2 b3@5 a3@5 g3@5 a3@5 c4@15 ~ e4@15 g4@11]/2",
  Z: "[~@5 a4@15 [e3,a3,e4]@236]/8", // A5
})).s("gm_string_ensemble_1").gain(0.17).pan(0.8)

// drums · kick
const kick = s("bd").struct("<~@50 A B C D B E F G H I J K L M N O P Q R S T H U V W X Y Z AA C ~ AB ~>".pickRestart({
  A: "~@16 x ~@14 x", B: "~@11 x ~@14 x ~@5", C: "~@13 x ~@15 x ~@2", D: "~ x ~@2", E: "~@10 x ~@14 x ~@6",
  F: "~@9 x ~@14 x ~@7", G: "~@7 x ~@15 x ~@8", H: "~@7 x ~@14 x ~@9", I: "~@9 x ~@11 x ~@10", J: "~ x ~@6",
  K: "~@9 x ~@8 x ~ x ~@11", L: "~@2 x ~@14 x ~@14", M: "~@5 x ~@26", N: "x ~@14 x ~@16", O: "~@29 x ~@2",
  P: "~@13 x ~@14 x ~@3", Q: "~@12 x ~@14 x ~@4", R: "~@5 x ~@7 x ~@2", S: "~@9 x ~@15 x ~@6", T: "~ x ~ x",
  U: "~@6 x ~@14 x ~@10", V: "~@5 x ~@14 x ~@11", W: "~@4 x ~@18 x ~@8", X: "~ x ~@7 x ~@6", Y: "~@23 x ~@8",
  Z: "x ~ x ~@13 x ~@14 x", AA: "~@9 x ~@6", AB: "~@11 x ~@7 x ~@12",
})).gain(0.47)

// drums · rim
const rim = s("rim").struct("<~@50 [~@23 x ~@8] [~@3 x ~@14 x ~@11 x ~] [~@6 x ~@14 x ~@10] [~ x ~@6] ~@29>").gain(0.53)

// drums · snare
const snare = s("sd").struct("<~@49 A ~@3 B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC ~@2>".pickRestart({
  A: "~@17 x ~@6 x ~@3 x ~@3", B: "~@6 x ~@2 x ~@6", C: "~@3 x ~@15 x ~@12", D: "~ x ~@7 x ~@6", E: "~ x ~@14 x ~@15",
  F: "x ~@14 x ~@15 x", G: "~ x!2 ~@4 x ~@8", H: "~ x ~@11 x ~@10 x ~@7", I: "~@12 x ~@14 x ~@3 x",
  J: "~@5 x ~@5 x ~@4 x ~@5 x ~@5 x ~@3", K: "~@10 x ~@18 x ~@2", L: "~@3 x ~@4 x ~@7 x ~ x ~ x ~ x ~@9",
  M: "~@7 x ~@19 x ~@4", N: "~@5 x!2 ~@25", O: "~@5 x ~@15 x ~@10", P: "~@4 x ~@14 x ~@12", Q: "~@3 x ~@14 x ~@13",
  R: "~@2 x ~@14 x ~@14", S: "x ~@15 x ~@14 x", T: "~@15 x ~@14 x ~", U: "~@13 x ~@15 x ~@2", V: "~@6 x ~ x!2 ~@4 x ~",
  W: "~@15 x ~@11 x ~@4", X: "~@3 x ~@9 x ~@2", Y: "~@9 x ~@3 x ~@5 x ~@4 x ~@5 x ~", Z: "~@4 x ~@5 x ~@12 x ~@8",
  AA: "~@11 x ~@5 x ~@4 x ~@7 x ~", AB: "x ~ x ~ x ~@16 x ~@10", AC: "~@8 x ~@10 x!2 ~@11",
})).gain(0.53)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@49 A ~@4 B ~@8 C ~@5 D ~@8 E ~@4>".pickRestart({
  A: "~@18 x!5 ~@9", B: "~@7 x ~ x ~@22", C: "~@10 x!2 ~@2 x!2 ~@16", D: "~@21 x ~ x ~@8", E: "~@24 x!2 ~@2 x!2 ~@2",
})).gain(0.2)

// drums · low tom
const low_tom = s("lt").struct("<~@50 [~@3 x ~@4] ~@14 [~@11 x ~@4] ~@15 [~@3 x ~@28] ~>").gain(0.53)

// drums · mid tom
const mid_tom = s("mt").struct("<~@50 [~@2 x!3 ~@11] ~@10 [~@15 x] x ~@14 [~@6 x!2 ~@8] ~@5>").gain(0.47)

// drums · high tom
const high_tom = s("ht").struct("<~@50 A ~@2 B ~@5 C D ~@2 B ~ E ~@9 F ~@3 G H ~@2>".pickRestart({
  A: "x!2 ~@14", B: "~@3 x", C: "~@14 x!2", D: "x", E: "~@7 x ~ x ~@6", F: "~@5 x!3 ~@8", G: "~@3 x ~@12",
  H: "~@28 x ~@2 x",
})).gain(0.53)

// drums · crash
const crash = s("cr").struct("<~@54 A ~@3 B ~ C ~ D ~ E F ~@7 G ~ H ~ I ~ J ~ K ~>".pickRestart({
  A: "~@11 x ~@20", B: "~@7 x ~@6 x ~@17", C: "~ x ~ x ~@4", D: "~ x ~@3 x ~@10", E: "x ~@6 x ~@24", F: "~@29 x ~@2",
  G: "~@5 x ~ x", H: "~@9 x ~@3 x ~@2", I: "~@16 x ~@6 x ~@8", J: "~@13 x ~@7 x ~@10", K: "~@11 x ~@7 x ~@12",
})).gain(0.47)

// drums · ride
const ride = s("rd").struct("<~@50 A B C D E F G H I J K L M N O ~ P Q B R S T U V W X Y Z AA AB AC ~@2>".pickRestart({
  A: "~@16 x ~@2 x ~@3 x ~@3 x ~@3 x", B: "~@3 x ~@3 x ~@3 x ~@2 x ~@3 x ~@3 x ~@3 x ~@3 x ~",
  C: "~@2 x ~@3 x ~@2 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@2", D: "~ x ~@2 x ~@3 x ~@23",
  E: "~@15 x ~@3 x ~@3 x ~@2 x ~@3 x ~", F: "~@2 x ~@3 x ~@3 x ~@3 x ~@2 x ~@3 x ~@3 x ~@3 x ~@2",
  G: "~ x ~@3 x ~@3 x ~@3 x ~@2 x ~@3 x ~@3 x ~@3 x ~@3", H: "x ~@3 x ~@2 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@4",
  I: "~@11 x ~ x ~ x", J: "~@5 x ~@3 x ~@3 x ~@3 x ~@3 x ~@10", K: "~@20 x ~@2 x ~@3 x ~@3 x",
  L: "~@3 x ~@3 x ~@7 x ~@6 x ~@3 x ~@5", M: "~@17 x ~@3 x ~@3 x ~@3 x ~@2", N: "~ x ~@3 x ~@6 x ~@19",
  O: "~@15 x ~@3 x ~@3 x ~@3 x ~@2 x ~", P: "~ x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@2 x ~@3 x ~@3",
  Q: "x ~@3 x ~@3 x ~@3 x ~@3 x ~@2 x ~@3 x ~@3 x ~@3 x", R: "~@2 x ~@2 x ~@3 x ~@3 x ~@3 x ~@7 x ~@3 x ~@2",
  S: "x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@2 x ~@3 x", T: "~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@2 x ~@3 x ~@3 x ~",
  U: "~@2 x ~@3 x ~@3 x ~@2 x ~@3 x ~@3 x ~@3 x ~@3 x ~@2", V: "~ x ~@3 x ~@2 x ~@23",
  W: "~@4 x ~@2 x ~@3 x ~@7 x ~@3 x ~@3 x ~@3 x", X: "~ x ~@14", Y: "~ x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@6 x ~@3",
  Z: "~@4 x ~@3 x ~@22 x", AA: "~@3 x ~@3 x ~@3 x ~@3 x ~@2 x ~@7 x ~@5", AB: "~@29 x ~@2",
  AC: "~ x ~@2 x ~@3 x ~@3 x ~@19",
})).gain(0.27)

stack(
  bass, acoustic_guitar_steel, string_ensemble_1, string_ensemble_1_2, kick, rim, snare, snare_soft, low_tom, mid_tom,
  high_tom, crash, ride
)

More by Battisti