Strudelify
Un'avventura cover art

Lucio Battisti

Un'avventura

Battisti

KeyA♭ majorTempo140 bpm
0:00/0:00
// Un'avventura — Battisti
// 140 bpm, 4/4, key G# 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: Full arrangement: all 117 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(`<
  ~@10 A@5 B@2 C@8 D@3 E@2 ~@2 F G H@2 I@2 J K L@2 M@6 N ~ O@2 P@2 Q@2 R S T@2 U@2 V@2 W@2 X Y ~ Z@3 ~ AA@2 AB@2 AC@2 AD
  AE@6 AF AG@2 AH@2 AI@2 AJ ~ AK@2 U@2 AL@2 AM AN AK@2 U@2 V@2 AM AN AK@2 U@2 V@2
>`.pickRestart({
  A: "[~@13 eb4@39 ~ eb4@27, ~@13 ab3@32 ~@35, ~@13 ab2@19 ~@21 ab2@20 ~@7]/5",
  B: "[~@4 ab2@2 ab2@3 ab3@2 ab2@2 ~ eb4@7 eb4@4 ~ eb4@3 ~@3, ~ eb4@11 ~@20, ~ ab3@7 ~@6 [c3,g4]@18]/2", // C5
  C: "[~@15 c3@4 ~ c3@2 f2@4 ~@16 f4@7 ~ a4@10 ~@20 bb3@9 ~ db4@4 ~@4 bb2@5 bb3@6 ~@2 bb3@17, ~@10 [eb4,g4]@10 ~@2 c4@16 ~@2 c4@21 ~@9 db4@19 ~@6 [db4,f4]@7 ~ eb4@25, ~@22 bb4@7 ~ [f4,a4]@11 ~@22 f4@32 ~@33, ~@27 f2@6 ~@2 f2@9 ~@19 bb2@12 ~@28 eb3@12 ~@13]/8", // Eb Db F
  D: "[~@13 bb3@2 [db3,db4,f4]@20 ~ eb3@4 ~@3 bb3@4 ~, ~@3 eb4@12 ~@20 eb4@12 ~, ~@3 bb3@9 ~@23 bb3@6 ~@7, ~@10 eb3@5 ~@26 eb3@4 ~@3]/3", // Db
  E: "[eb4@7 ~ [db3,db4,f4]@19 ~ [eb3,bb3,eb4]@2 ~@2, bb3 ~@7]/2", // Db Eb5
  F: "[ab3,c4]@5 ~ c4@2 ~@2 c4@4 ab3 ~, ~@10 ab3@3 ~@3", G: "[ab3,c4]@15 ~",
  H: "[ab3@7 ~ ab3 ~@5 c4@7 ~@3 ab3@2 c4@2 ab3@2 ~@2, c4@7 ab3@2 ~@7]/2",
  I: "[[g3,c4]@13 ~ c4@6 g3@2 ~@2 g3@3 ~ g3@3 ~, ~@14 g3@5 ~@3 c4@9 ~]/2", J: "[f3,c4]@13 ~ [f3,c4]@2",
  K: "~@2 [f3,c4]@3 ~ f3 ~ f3@3 ~ c4@4, ~@3 c4@3 f3 ~", L: "[[bb3,db4]@13 ~ db4@11 ~ db4@6, ~@14 bb3@9 ~@9]/2",
  M: "[bb3@13 ~ bb3@4 [bb3,eb4]@3 ~ bb3 ~@3 bb3 ~ bb3 ~ [ab3,db4]@15 ~ [bb3,eb4]@15 ~ [ab3,db4]@15 ~ eb4@18, eb4@17 ~@5 eb4@7 ~@49 bb3@15 ~@3]/6", // Eb5 Db5 Eb5 Db5
  N: "~@2 ab2 ~ ab2 ~ [ab2,ab3] ~ [ab2,ab3] ~ [ab2,ab3] ~ [ab2,ab3] ~ [ab2,ab3] ~", // Ab
  O: "[ab3 ~@9 ab3 ~@5 ab3@6 ab2@6 ab2@2 ~@2, ab2@21 ~@11]/2", P: "[c3@15 ~, c4@7 ~]/2", Q: "[f4@31 ~, db3@29 ~@3]/2",
  R: "[ab2,eb4]", S: "eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~", T: "ab2/2", U: "[c3@31 ~]/2", V: "[db3@31 ~]/2",
  W: "[ab2@12 ~@2 eb2@17 ~]/2", X: "ab2@13 ~@3", Y: "eb2@3 ~@13", Z: "[[ab2,c4]@13 ~@3]/3", AA: "[[c3,eb4]@31 ~]/2",
  AB: "[c4@15 ~, f3@27 ~@5]/2", AC: "[[bb3,db4]@31 ~]/2", AD: "[bb3,eb4]",
  AE: "[eb4@14 [ab3,db4]@15 ~ [bb3,eb4]@15 ~ [ab3,f4]@16 [bb3,g4]@16 ab4@16 ~@2, bb3@11 ~@67 ab3@14 ~@4]/6", // Db5 Eb5 Db Eb
  AF: "ab2 ~@3 ab2@2 ~@10", AG: "[[ab3,eb4]@31 ~]/2", AH: "[[c4,eb4]@29 ~@3]/2", AI: "[[ab3,db4]@31 ~]/2",
  AJ: "[ab3,eb4]@15 ~", AK: "[ab2@31 ~]/2", AL: "[db3@15 ~]/2", AM: "ab2", AN: "eb2@15 ~",
})).s("gm_piano").gain(0.37)

// chords · piano · soft notes
const piano_soft = note("<~@12 A@4 ~ B ~ C@2 D@2 ~ E@2 ~ F@2 ~@3 G ~ H I ~@5 J ~ K ~@4 L ~@68>".pickRestart({
  A: "[~@14 ab3@6 ~@2 ab3@7 ab3@9 ~@4 ab2@9 ~@13, ~ ab2@19 ~@19 ab3@8 ~@17]/4", B: "~@2 c3@11 ~@3, eb4@9 ~@7",
  C: "[~@23 f2@4 ~ f2@2 ~@2, ~@10 bb4@7 ~ f4@12 ~@2, ~@15 f2@6 ~@11]/2", D: "[~@11 bb2@21]/2", E: "[~@2 eb3@11 ~@3]/2",
  F: "[~@14 eb3@4 ~@3 bb3 ~@10, ~@19 eb3@4 ~@9]/2", G: "~@6 ab3@3 ~@7", H: "~@10 ab3@3 ~@3",
  I: "~@2 ab3@2 ab3 ~ c4@3 ~@5 c4 ~, ~@6 ab3 ~@9", J: "~@8 bb3@3 ~ bb3@3 ~", K: "~@8 bb3 ~@7",
  L: "ab2 ~ ab3 ~ ab3 ~@11",
})).s("gm_piano").gain(0.24)

// bass · fretless bass
const bass = note(`<
  ~@10 A B@2 C@2 D@2 E F@2 G@2 H@3 I@2 J K@2 ~@2 L M N O P Q R S T U V W X Y Z AA AB AC AD@2 AE@2 AF@2 AG AH AD@2 AI@2
  AJ@2 AG AH AK AL ~ AM M@2 AN AO AP AQ AR AS AT V W X W X AU AB AV AD@2 AW@2 AX@2 AG AY AD@2 AW@2 AZ@2 AG AY AD@2 AW@2
  BA@2 AG AY AD@2 AW@2 BB ~
>`.pickRestart({
  A: "~@13 ab2@3", B: "[~@5 ab2@7 db3 ~ c3 ~@2 ab2@4 ~@4 ab2@7, ~@15 db3@2 ~@15, ~@8 c3 ~@7]/2",
  C: "[db3 ~ c3 ~ c3 ~ ab2@5 ~@2 ab2@8 db3 c3 ~ c3 ~ ab2@6, ~@3 db3@2 ~@18 db3@2 ~@7]/2",
  D: "[~ ab2@4 ~ eb2@3 ab2@2 ab1@2 ~ c2@6 ~ c2@7 ~ g2@3]/2", E: "~ c2@3 ~ c2@3",
  F: "[~ g2@3 c2@2 f2@6 ~@2 f2@7 bb2 ~ a2 ~ a2 f2@5 ~, ~@12 bb2 ~@3]/2",
  G: "[~@2 f2@7 ~ c2@2 f2@2 ~ bb2@5 ~@2 f2@3 ~@2 db2@3 ~@2]/2",
  H: "[c2@2 ~ bb1@6 ~ bb1@4 ~ bb1@3 ~@2 bb1@2 ~ eb2@8 eb3@2 eb2 ~@4 eb2 bb2 ~ g2@2 eb2@5, ~@9 bb2@2 ~@7 db3@2 ~@4]/3",
  I: "[~@3 eb2@4 ~ eb2@3 ~@2 eb2@2 db2@7 ~ ab2@2 db2 ~@2 f2@4]/2", J: "db2 d2@2 ~ eb2@7 bb2@2 ~ eb2@2",
  K: "[g2@3 eb2 ~ eb2@2 ~ db2@7 ab2@2 ~ db2 ~ f2@4 ~ db2@2 ~ eb2@2 ~@2]/2",
  L: "ab1 ~ ab1@2 c2@2 ab1 ~ db2@2 d2@2 eb2@2 ab1@2", M: "~ ab1 c2 ab1 db2 d2 eb2 ab1",
  N: "~@2 ab1@2 c2@2 ab1 ~ db2@2 d2@2 eb2@2 ab1@2", O: "~ ab1 c2 ab1 db2 d2 eb2 c2", P: "~ c2 eb2 c2 f2 gb2 g2 c2",
  Q: "~@2 c2@2 eb2@2 c2@2 f2@2 gb2@2 g2 ~ f2@2", R: "~@2 f2 ~ a2@2 f2 ~ bb2@2 b2@2 c3@2 f2@2",
  S: "f2 ~ f2@2 a2@2 f2 ~ bb2@2 b2@2 c3@2 bb1@2", T: "bb1 ~ bb1@2 db2@2 bb1@2 eb2@2 e2@2 f2@2 bb1@2",
  U: "~@2 bb1@2 db2@2 bb1 ~ eb2@2 e2@2 f2@2 eb2@2", V: "~ eb2 g2 eb2 ab2 a2 bb2 eb2", W: "~ eb2 g2 eb2 ab2 a2 bb2 db2",
  X: "~ db2 f2 db2 gb2 g2 ab2 eb2", Y: "~@2 eb2@2 g2@2 eb2 ~ ab2@2 a2@2 bb2@2 db2@2",
  Z: "~@2 db2@2 f2@2 db2 ~ gb2@2 g2@2 ab2@2 eb2@2", AA: "~ eb2 g2 eb2 ab2 a2 bb2 ab1",
  AB: "~@2 ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~", AC: "ab1@2 ~@2 ab1 ~@11",
  AD: "[ab2 eb2 f2 ab2@2 eb2 f2 ab2@2 eb2 f2 ab2@2 eb2 f2 ab2]/2",
  AE: "[c3@2 g2@2 bb2@2 c3@4 g2@2 bb2 ~ c3@4 g2@2 bb2@2 c3@4 g2@2 bb2 ~ c3@2]/2",
  AF: "[db3@2 bb2@2 ab2@2 db3@4 bb2@2 ab2@2 db3@4 bb2@2 ab2@2 db3@4 bb2@2 ~@2 db3 ~, ~@7 ab2]/2",
  AG: "ab2 eb2 f2 ab2@2 eb2 f2 eb2", AH: "~@2 eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2@2",
  AI: "[c3@2 g2@2 bb2@2 c3@4 g2@2 bb2@2 c3@4 g2@2 bb2@2 c3@4 g2@2 bb2 ~ c3@2]/2",
  AJ: "[db3@2 bb2@2 ab2 ~ db3@4 bb2@2 ab2@2 db3@4 bb2@2 ab2@2 db3@4 bb2@2 ab2@2 db3 ~]/2",
  AK: "ab2 eb2 f2 ab2@2 eb2 f2 ab2", AL: "eb2@3 ~@13", AM: "ab1@2 c2 ab1 db2 d2 eb2 ab1",
  AN: "~@2 ab1@2 c2@2 ab1@2 db2@2 d2@2 eb2@3 c2", AO: "c2 ~ c2@2 eb2@2 c2 ~ f2@2 gb2@2 g2@2 c2@2",
  AP: "~ c2 eb2 c2 f2 gb2 g2 f2", AQ: "~ f2 a2 f2 bb2 b2 c3 f2", AR: "~ f2 a2 f2 bb2 b2 c3 bb1",
  AS: "~ bb1 db2 bb1 eb2 e2 f2 bb1", AT: "~ bb1 db2 bb1 eb2 e2 f2 eb2",
  AU: "eb2 ~ eb2@2 g2@2 eb2@2 ab2@2 a2@2 bb2@2 ab1@2", AV: "ab1 ~ ab1 ~@5",
  AW: "[c3 g2 bb2 c3@2 g2 bb2 c3@2 g2 bb2 c3@2 g2 bb2 c3]/2",
  AX: "[db3@2 bb2@2 ab2@2 db3@4 bb2@2 ab2@2 db3@4 bb2@2 ab2@2 db3@4 bb2@2 ab2 ~ ab2@2]/2",
  AY: "~@2 eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~",
  AZ: "[db3@2 bb2@2 ab2@2 db3@4 bb2@2 ab2@2 db3@4 bb2@2 ab2@2 db3@4 bb2@2 ab2 ~ ab2 ~]/2",
  BA: "[db3 bb2 ab2 db3@2 bb2 ab2 db3@2 bb2 ab2 db3@2 bb2 ab2 bb2]/2", BB: "db3 bb2 ab2 ~@5",
})).s("gm_fretless_bass").gain(0.55)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note("<A@3 B@8 ~@106>".pickRestart({
  A: "[~@13 [c4,eb4]@18 ~@2 db4@15, ~@11 ab2@17 ~@3 [db2,db3]@17, ~@12 ab3@19 ~ [f3,ab3]@16]/3", // Cm Db Fm
  B: "[~@5 eb4@36 ~@4 [c4,eb4]@18 ~@2 [ab3,db4]@18 ~@3 [bb3,eb4]@37 ~@5, ~@3 eb2@37 ~@3 ab2@20 db2@17 ~@4 eb2@35 ~@9, ~@4 bb3@39 ~@85, ~@4 g3@37 ~@3 ab3@19 ~ db3@17 ~@3 eb3@28 ~@16, ~@4 eb3@35 ~@25 f3@19 ~@2 g3@34 ~@9]/8", // Cm Db5 Eb5
})).s("gm_acoustic_guitar_nylon").gain(0.4).pan(0.2)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  A@2 B@5 C D E@2 F G H I@2 J K L M@5 N O@3 P Q ~@2 R S T U V W X@2 Y Z AA AB AC@2 AD AE AF AG AH AI AJ AK AL AM AN AO
  AP@2 AQ AR AS AT AU@2 AV AW ~ AX AY AZ BA BB BC BD BE BF BG BH BI@3 BJ@2 BK BL BM BN BO BP BQ BR BS BT BU BV BW BX BY
  BZ CA CB CC CD CE CF CG CH CI CJ CK CL CM CN CO ~
>`.pickRestart({
  A: "[~@12 [eb4,ab4]@3 [eb4,ab4] ~@3 [eb4,ab4] ~ [eb4,ab4] ~ [eb4,ab4] ~@5 ab3@3, ~@12 ab3@11 ab3@4 [eb4,ab4]@4 ~]/2", // Ab5
  B: "[[db4,ab4]@3 ~ [db4,ab4] ~@2 [db4,ab4] ~ [db4,ab4] db3 [db4,ab4] db3@3 [db4,ab4]@3 db3@2 [eb4,bb4]@3 ~ [eb4,bb4] ~@3 [eb4,bb4]!2 ~ [eb4,bb4] ~@3 [eb4,bb4]@3 eb3@2 [f4,bb4]@3 ~ [f4,bb4] ~@3 [f4,bb4]!2 eb4 ~ [f4,bb4] eb4 ~ [f4,bb4]@3 eb3@2 [eb4,ab4]@3 ~ [eb4,ab4]@2 ~@2 [eb4,ab4]!2 ~ ab3 [eb4,ab4] ab3@3 ~@2 ab3@2, db3@9 ~@11 eb3@16 ~@4 eb3@17 ~@3 ab3@9 ~@7 [eb4,ab4]@4]/5", // Db5 Eb5 Bb5 Ab5
  C: "~ [db4,ab4]@3 [db4,ab4] ~@3 [db4,ab4]!2 ~@2 [db4,ab4] ~@3, ~ db3@10 db3@5", // Db5
  D: "~@2 db3@2 ~ [eb4,bb4]@3 ~ [eb4,bb4] ~@2 [eb4,bb4] ~ [eb4,bb4] ~, [db4,ab4]@4 ~ eb3@11", // Eb5 Db5
  E: "[[eb4,bb4] eb3@3 eb4@2 eb3@2 ~ [f4,bb4]@3 ~ [f4,bb4] ~@3 [f4,bb4]!2 eb3 [f4,bb4] ~@3 [f4,bb4]@3 eb3@2 [ab3,eb4,ab4]@3, ~@4 bb4@5 eb3@9 ~@4 eb3@4 ~@6]/2", // Eb5 Bb5 Ab5
  F: "~ [eb4,ab4] ab3@3 [db4,ab4]!2 ab3 [db4,ab4] ~ ab3@2 [db4,ab4]@3 ab3", // Ab5 Db5
  G: "~ [eb4,ab4]@2 ~@2 [eb4,ab4] ab3@2 ~ [db4,ab4]!2 ab3 ~ [db4,ab4] ab3@2, ~ ab3@4 ~@11", // Ab5 Db5
  H: "[db4,ab4]@3 ab3 ~@2 [ab3,db4]@3 [db4,ab4] ~ ab3@2 [db4,ab4]!2 ~, ~@3 ab4 ~@4", // Db5
  I: "[ab3 [db4,ab4] ab3@3 ~@2 ab3 ~@2 [eb4,ab4]@2 ~ [eb4,ab4] ~@3 [eb4,ab4] ~ [eb4,ab4] ab3 [eb4,ab4] ab3@3 ~@2 ab3@2 ~ [c4,eb4,g4]@2, ~@5 [db4,ab4]@4 ~ ab3@8 ~@7 [eb4,ab4]@4 ~@3]/2", // Db5 Ab5 Cm Db5 Ab5
  J: "~@2 [eb4,g4] ~@2 [eb4,gb4,g4] ~ [eb4,g4] c4 [eb4,g4] c4@3 [eb4,g4]@3, ~@2 c4 ~@5", // Eb
  K: "c4 ~ [c4,eb4,g4]@3 ~ [eb4,g4] c4 ~@2 [eb4,g4]!2 c4 [eb4,g4] ~ c4", // Cm Eb
  L: "~ [eb4,g4]@3 c4@2 [f4,bb4]@2 ~@2 [f4,bb4] f3@3 [f4,a4]!2, ~@3 f3@2 ~@3", // Eb Bb5 F
  M: "[f3 ~ [f4,a4] ~@2 f4@3 f3@2 [f3,f4,bb4]@3 ~ [f4,bb4] f3@3 [f4,a4]!2 f3 ~ [f4,a4] f3 ~@2 a4@2 f3 ~@2 [f4,ab4] ~@2 [db4,f4] ~ bb3@2 [db4,f4]!2 ~ bb3 [db4,f4] bb3@3 ~@2 bb3 ~@2 [bb3,f4]@4 [db4,f4] bb3 ~ [db4,f4] ~ [db4,f4] bb3 [db4,f4] bb3@3 [db4,f4]@2 bb3@2 g4 [eb4,g4]@3 ~ [eb4,g4] ~@3 [eb4,g4], ~@3 f3@4 ~@19 f3 ~@4 bb3@5 ~@10 [db4,f4]@4 ~ db4@2 ~@18 eb3@8 ~, ~@5 a4@2 ~@19 f4@4 ~@50]/5", // F Bb5 F Fm Db Bb5 Db Eb …
  N: "[eb4,g4] ~ [eb4,g4] ~ eb3 ~ [eb4,g4]@3 ~@2 [eb4,g4]@3 ~ [eb4,g4], ~@9 eb3@7", // Eb
  O: "[eb3 ~@2 [eb4,g4]!2 eb3 [eb4,g4] ~ eb3@2 [eb4,g4]@3 eb3@2 [db4,f4]@2 ~@2 [db4,f4,ab4] db3@3 [db4,ab4]!2 db3 ~ [db4,ab4] db3@2 [db4,ab4]@3 db3@2 ~ eb3@3 [g4,bb4] ~ eb3@2 [g4,bb4]!2 ~ eb3 [g4,bb4], ~@15 db3@4 ~@17 g4@2 ~@10, ~@36 bb4 ~@11]/3", // Eb Db Db5 Gm
  P: "eb3 ~@2 [g4,bb4]@2 eb3 ~@2 [db3,f4,ab4]@3 [f4,ab4] ~ db3 ~ [f4,ab4,bb4]", // Gm Db Fm Bb7
  Q: "ab4 f4 db3 [f4,ab4] db3 ~@3 db3 db3@2 ~ [eb3,g4,bb4]@2 ~@2, ~@7 [f4,ab4]@3 ~@6", // Fm Eb Fm
  R: "[ab3,c4]@2 ab3 ~ [ab2,ab3,c4] ~ [ab2,ab3] ~ [ab2,ab3,c4] ~ [ab3,c4] ~ [ab2,ab3,c4] ~ [ab3,c4]@2", // Ab
  S: "~ ab2 [ab3,c4] ~ [ab2,ab3,c4] ~ ab3 ~ ab3 ~ [ab3,c4] ~ [ab2,ab3] ~ [ab3,c4] ~", // Ab
  T: "ab2@2 [ab3,c4] ~ [ab2,ab3,c4] ~ ab3 ~ [ab2,ab3,c4] ~ [ab3,c4] ~ ab2 ~ [ab3,c4]@2, ~@14 ab2 ~", // Ab
  U: "~@2 [ab3,c4] ~ [ab2,ab3,c4] ~ ab3 ~ ab3 ~ ab3@2 [ab2,c4] ~ [ab3,c4] ~, ~@10 c4 ~@5", // Ab
  V: "[g3,c4] ~ [g3,c4] ~ [c3,g3,c4] ~ g3 ~ [g3,c4] ~ [g3,c4] ~ g3 ~ [g3,c4]@2", // C5
  W: "~@2 [g3,c4] ~ [c3,g3,c4] ~ g3 c4 g3 ~ [g3,c4]@2 c3 ~ [g3,c4] ~", // C5
  X: "[[f3,c4] ~ [f3,c4] ~ [f3,c4]@2 f3 ~ [f3,c4] ~ [f3,c4] ~ f3 ~ [f3,c4]@4 [f3,c4] ~ [f3,c4]@2 [f3,c4] ~ f3 ~ f3 ~ c4@2 f3 ~, ~@28 f3 ~@3]/2", // F5
  Y: "[f3,bb3] ~ f3 ~ [bb2,f3,bb3] ~ f3 ~ f3 ~ [f3,bb3] ~ f3 ~ [f3,bb3]@2", // Bb5
  Z: "~@2 [f3,bb3] ~ [f3,bb3]@2 [f3,bb3] ~ bb3 ~ [f3,bb3] ~ [f3,bb3]@2 f3 ~", // Bb5
  AA: "[g3,bb3] ~ [g3,bb3] ~ [g3,bb3]@2 g3 ~ bb3 ~ [g3,bb3] ~ g3 ~ [g3,bb3]@2", // Gm
  AB: "~@2 [g3,bb3] ~ [g3,bb3]@2 g3 ~ [g3,bb3] ~ [g3,bb3]@2 [g3,bb3] ~ [ab3,db4]@2", // Gm Db5
  AC: "[~@2 ab3 ~ [ab3,db4]@2 ab3 ~ [ab3,db4] ~ [ab3,db4]@2 g3 ~ [g3,bb3]@4 g3 ~ [g3,bb3] ~@3 [g3,bb3] ~ [g3,bb3] ~ [g3,bb3] ~ [ab3,db4]@2]/2", // Db5 Gm Db5
  AD: "~@2 [ab3,db4] ~ [ab3,db4]@2 ab3 ~ [ab3,db4] ~ [ab3,db4]@2 g3 ~ [bb3,eb4]@2", // Db5 Eb5
  AE: "~@2 [bb3,eb4] ~ [bb3,eb4]@2 bb3 eb4!2 bb3 [bb3,eb4]@2 [bb3,eb4] ~ [ab3,eb4] ~", // Eb5 Ab5
  AF: "ab3 ~ [ab3,eb4] ~ [ab3,eb4] ~ [ab3,eb4] ~ [ab3,eb4] ~ [ab3,eb4] ~ [ab3,eb4] ~ [ab3,eb4] ~", // Ab5
  AG: "[ab3,eb4] ~@3 [ab3,eb4] ~@11", AH: "[ab3,c4] ~ [ab3,c4] ~ [ab3,c4] ~ ab3 ~ ab3 ~ [ab3,c4] ~ ab3 ~ [ab3,c4]@2",
  AI: "~@2 ab3 ~ [ab3,c4] ~ ab3 ~ [ab3,db4] ~ ab3 ~ [ab3,c4]@2 ab3 ~", // Ab Db5 Ab
  AJ: "[g3,c4] ~ g3 ~ [g3,c4]@2 g3 ~ [g3,c4] ~ [g3,c4] ~ g3 ~ [g3,c4]@2", // C5
  AK: "~@2 g3 ~ [g3,c4]@2 g3 ~ g3 ~ g3 ~ [g3,c4]@2 g3 ~", // C5
  AL: "[ab3,db4]@2 ab3 ~ [ab3,db4] ~ [ab3,db4] ~ [ab3,db4] ~ ab3 ~ [ab3,db4] ~ [ab3,db4]@2", // Db5
  AM: "~@2 ab3 ~ [ab3,db4]@2 ab3 ~ [ab3,db4] ~ ab3 ~ [ab3,db4]@2 [ab3,db4] ~", // Db5
  AN: "ab3 ~ ab3 ~ [ab3,eb4]@2 ab3 ~ ab3 ~ ab3 ~ [ab3,eb4] d4 ab3 eb4", // Ab5
  AO: "bb3 ~ [bb3,eb4] ~ [bb3,eb4] ~ [bb3,eb4] ~ [bb3,db4,eb4] ~ [bb3,db4,eb4] ~ [bb3,eb4] ~ [bb3,db4,eb4] ~", // Eb5 Eb7 Eb5 Eb7
  AP: "[[ab3,eb4] ~ ab3 ~ [ab3,eb4] ~ [ab3,eb4] ~ ab3 ~ ab3 ~ [ab3,eb4] ~ [ab3,eb4]@4 ab3 ~ [ab3,eb4] ~ ab3 ~ ab3 ~ ab3 ~ [ab3,c4] ~ ab3 ~, ~@14 eb4 ~]/2", // Ab5 Ab
  AQ: "[g3,c4]@2 g3 ~ [g3,c4] ~ g3 ~ g3 ~ g3 ~ [g3,c4] ~ g3@2", // C5
  AR: "~@2 [g3,c4] ~ [g3,c4]@2 g3 c4!2 ~ g3 ~ [g3,c4,db4] ~ g3 ~", // C5 C
  AS: "[ab3,db4] ~ [ab3,db4] ~ [ab3,db4]@2 [ab3,db4] ~ ab3 ~ ab3 ~ [ab3,db4] ~ [ab3,db4]@2", // Db5
  AT: "~@2 [ab3,db4] ~ [ab3,db4]@2 [ab3,db4] ~ [ab3,db4] ~ ab3 ~ [ab3,db4]@2 [ab3,db4] ~", // Db5
  AU: "[[ab3,eb4]@2 ~@2 [ab3,eb4]@2 ab3 ~ [ab3,eb4] ~ [ab3,eb4] ~ [ab3,eb4] ~ eb4@4 bb3 ~ [bb3,db4,eb4] ~ [bb3,eb4] ~ [bb3,eb4] ~ bb3 ~ [bb3,eb4] ~ [bb3,eb4] ~, ~@14 bb3@3 ~@15]/2", // Ab5 Eb7 Eb5
  AV: "~@4 [ab3,eb4]@2 ab3 ~ ab3 ~ eb4@3 ~ ab3 ~, ~@10 ab3 ~@5", AW: "[bb3,eb4] ~@15",
  AX: "[ab3,c4] ~ [ab3,c4] ~ [ab3,c4] ~ ab3 ~ [ab3,c4] ~ [ab3,c4] ~ [ab3,c4] ~ [ab3,c4]@2", // Ab
  AY: "~@2 [ab3,c4] ~ [ab3,c4]@2 ab3 ~ [ab3,c4] ~ ab3 ~ [ab3,c4]@2 ab3 ~", // Ab
  AZ: "[ab3,c4] ~ ab3 ~ [ab3,c4] ~ ab3 ~ ab3 ~ [ab3,c4] ~ [ab3,c4] ~ [ab3,c4]@2", // Ab
  BA: "~@2 [ab3,c4] ~ [ab3,c4]@2 [ab3,c4] ~ ab3 ~ [ab3,c4] ~ [ab3,c4] ~ [ab3,c4] ~", // Ab
  BB: "[g3,c4] ~ g3 ~ [g3,c4]@2 [g3,c4] ~ [g3,c4] ~ g3 ~ [g3,c4] ~ [g3,c4]@2", // C5
  BC: "~@2 [g3,c4] ~ [g3,c4] ~ g3 ~@3 g3 ~ [g3,c4]@2 f3 ~", // C5
  BD: "[f3,c4] ~ f3 ~ c4@2 f3 ~ [f3,c4] ~ f3 ~ [f3,c4] ~ [f3,c4]@2, ~@4 f3 ~@11", // F5
  BE: "~@2 [f3,c4] ~ [f3,c4]@2 [f3,c4] ~ [f3,c4] ~ f3 ~ [f3,c4]@2 f3 ~", // F5
  BF: "[f3,bb3] ~ [f3,bb3] ~ [f3,bb3] ~ [f3,bb3] ~@3 [f3,bb3] ~ [f3,bb3] ~ [f3,bb3]@2", // Bb5
  BG: "~@2 [f3,bb3] ~ [f3,bb3]@2 [f3,bb3] ~ [f3,bb3] ~ [f3,bb3] ~ bb3@2 f3 ~, ~@12 f3 ~@3", // Bb5
  BH: "bb3 ~@3 [g3,bb3]@2 [g3,bb3] ~ [g3,bb3] ~ g3 ~ [g3,bb3] ~ [g3,bb3]@2", // Gm
  BI: "[~@2 [g3,bb3] ~ [g3,bb3] ~ [g3,bb3] ~ [g3,bb3] ~ g3 ~ [g3,bb3] ~ [ab3,db4]@4 ab3 ~ [ab3,db4]@2 ab3 ~ ab3 ~ [ab3,db4]@2 [ab3,db4] ~ eb4@4 bb3 ~ [bb3,eb4] ~ [bb3,eb4] ~ [bb3,eb4] ~ bb3 ~ [bb3,eb4] ~ [ab3,db4]@2, ~@10 bb3 ~@5]/3", // Gm Db5 Eb5 Db5
  BJ: "[[ab3,db4]@2 ab3 ~ [ab3,db4]@3 ~ [ab3,db4] ~ [ab3,db4] ~ [ab3,db4] ~ eb4@4 bb3 ~ [bb3,eb4]@2 [bb3,eb4] ~ [bb3,eb4] ~ [bb3,eb4] ~ bb3 eb4 [bb3,eb4] ~, ~@14 bb3@3 ~@15]/2", // Db5 Eb5
  BK: "[eb3,ab3] ~ [eb3,ab3] ~ [eb3,ab3] ~ [eb3,ab3] ~ [eb3,ab3] ~ [eb3,ab3] ~ [eb3,ab3] ~ [eb3,ab3] ~", // Ab5
  BL: "[eb3,ab3] ~@3 [eb3,ab3] ~@11", BM: "[ab3,c4] ~ ab3 ~ [ab3,c4]@2 ab3 ~ [ab3,c4] ~ ab3 ~ [ab3,c4] ~ ab3@2",
  BN: "~@2 [ab3,c4] ~ [ab3,c4] ~ ab3 ~ ab3 ~ ab3 c4 [ab3,c4] ~ ab3 ~", // Ab
  BO: "[g3,c4] ~@3 [g3,c4]@2 [g3,c4] ~ c4 ~ g3 ~ [g3,c4]@2 [g3,c4] ~", // C5
  BP: "[g3,c4] ~ g3 ~ [g3,c4] ~ [g3,c4] ~ c4 g3!2 ~ c4@2 g3 ~, ~@12 g3 ~@3", // C5
  BQ: "[ab3,db4] ~ [ab3,db4] ~ [ab3,db4] ~ [ab3,db4] ~ ab3 ~ f3 ~ [ab3,db4]@2 [ab3,db4] ~", // Db5
  BR: "ab3 db4 f3 ~ [ab3,db4] ~ [ab3,db4] ~ db4 ~ f3 ~ [ab3,db4] ~ [ab3,db4] ~", // Db5
  BS: "~@2 ab3 ~ [ab3,eb4]@2 ab3 ~ eb4 ~ [ab3,eb4] ~ eb4@2 ab3 ~, ~@12 ab3 ~@3", // Ab5
  BT: "[bb3,eb4] ~ [bb3,eb4] ~ [bb3,eb4]@2 [bb3,eb4] ~ [bb3,eb4] ~ [bb3,eb4] ~ [bb3,eb4] ~ [bb3,eb4] ~", // Eb5
  BU: "~@2 ab3 ~ [ab3,c4]@2 [ab3,c4] ~@3 ab3 ~ [ab3,c4] ~ [ab3,c4]@2", // Ab
  BV: "~@2 ab3 ~ [ab3,c4] ~ [ab3,c4] ~ ab3 ~ ab3 ~ [ab3,c4]@2 [ab3,c4] ~", // Ab
  BW: "~ g3!2 ~ [g3,c4]@2 [g3,c4] ~@3 g3 ~ [g3,c4] ~ [g3,c4]@2", // C5
  BX: "~@2 g3 ~ [g3,c4] ~ [g3,c4] ~@3 g3 ~ [g3,c4] ~ [g3,c4] ~", // C5
  BY: "ab3 ~@3 [ab3,db4] ~ [ab3,db4] ~ ab3 ~ f3 ~ [ab3,db4] ~ [ab3,db4]@2", // Db5
  BZ: "~@2 [ab3,db4] ~ [ab3,db4] ~ [ab3,db4] ~ ab3 ~ ab3 ~ [ab3,db4]@2 [ab3,db4] ~", // Db5
  CA: "c4 ~ ab3 ~ [ab3,c4] ~ [ab3,c4] ~@3 [ab3,c4] ~ [ab3,c4] ~ bb3 ~", // Ab
  CB: "bb3 ~ [bb3,eb4] ~ [bb3,eb4] ~ [bb3,eb4] ~ [bb3,eb4] ~ [bb3,eb4] ~ [bb3,eb4] ~ [bb3,eb4] ~", // Eb5
  CC: "ab2 ~ ab3 ~ [ab3,c4] ~ [ab3,c4] ~@3 ab3 ~ [ab3,c4] ~ [ab3,c4]@2", // Ab
  CD: "~@2 [ab3,c4] ~ [ab3,c4]@2 [ab3,c4] ~ ab3 ~ ab3 ~ [ab3,c4] ~ [ab3,c4] ~", // Ab
  CE: "c4 ~ g3 ~ [g3,c4] ~ [g3,c4] ~ c4 ~ g3 ~ [g3,c4]@2 [g3,c4] ~", // C5
  CF: "~@2 g3 ~ [g3,c4]@2 c4 ~@3 g3 ~ g3@2 c4 ~, ~@12 c4 ~@3", // C5
  CG: "g3 ~@3 [ab3,db4]@2 [ab3,db4] ~ ab3 ~ f3 ~ [ab3,db4]@2 [ab3,db4] ~", // Db5
  CH: "~@2 ab3 ~ [ab3,db4]@2 [ab3,db4] ~@3 ab3 ~ db4@2 ab3 ~, ~@12 ab3 ~@3", // Db5
  CI: "~@2 ab3 ~ [ab3,c4]@2 [ab3,c4] ~ ab3 ~ ab3 ~ [ab3,c4]@2 ~@2", // Ab
  CJ: "~@2 bb3 ~ bb3 ~ bb3 ~ [g3,bb3] ~ [g3,bb3] ~ [g3,bb3] ~ [g3,bb3] ~", // Gm
  CK: "[ab3,c4]@2 f3 ~ [ab3,c4] ~ [ab3,c4] ~ ab3 ~ [ab3,c4] ~ [ab3,c4]@2 [ab3,c4] ~", // Ab
  CL: "~@2 ab3 c4 [ab3,c4]@2 [ab3,c4] ~@3 ab3 ~ [ab3,c4]@2 [ab3,c4] ~", // Ab
  CM: "~@2 g3 ~ [g3,c4]@2 [g3,c4] ~@3 g3 ~ [g3,c4]@2 [g3,c4] ~", // C5
  CN: "c4 ~ g3 ~ [g3,c4]@2 [g3,c4] ~@3 g3 ~ g3@2 c4 ~, ~@12 c4 ~@3", CO: "~@2 ab3 ~ [ab3,db4]@2 [ab3,db4] ~ ab3 ~@7",
})).s("gm_electric_guitar_clean").gain(0.12).pan(0.3)

// chords · percussive organ
const percussive_organ = note(`<
  ~@5 A@7 B@7 C@8 D@4 ~ E F E F E G H I J K L M@6 N O@4 P@3 Q O@4 R@4 S T ~ U V U W X Y Z AA J AB AC AD@4 AE@2 AF O@4
  AG@2 S Q O@4 P@3 Q O@4 P@3 Q O@4 AG@2
>`.pickRestart({
  A: "[~@13 c5@20 db5@20 eb5@39 ~@2 gb6@2 f6@5 eb6@5 db6@6, ~@13 ab4@40 bb4@29 ~@12 ab5@18]/7",
  B: "[~@2 gb6@2 f6@5 eb6@5 db6@8 ~@2 f6@5 eb6@6 ~@7 gb6@3 f6@4 eb6@5 db6@7 ~@9 eb6@32 ~@3 eb6@5 db6@2, ~ ab5@60 ~ g5@38 ~@2 f6@3 ~@7, ~@22 gb6@4 ~@9 db6@10 ~@17 c6@41 bb5@9]/7",
  C: "[~@13 eb6@5 db6@5 c6@7 ~ bb5@20 ab5@20 [g5,bb5,eb6]@40 ~ ab5@16, ~@3 c6@15 ~@12 db6@40 ~@58, ~@10 f6@3 ~@115, ~@11 a5@19 ~ f5@39 ~@41 [f5,db6]@17]/8", // Eb Db
  D: "[~@4 [g5,eb6]@19 ~ [ab5,db6]@19 ~ [g5,bb5]@15 ~@5, ~@4 bb5@20 f5@18 ~ eb6@15 ~@6]/4", // Cm Db5 Gm
  E: "~@4 [c6,eb6] ~@5 [c6,eb6] ~@5", F: "[c6,eb6]@5 ~@3", G: "[c6,eb6]@3 ~", H: "~@4 [a5,c6,eb6] ~@5 [c6,eb6] ~@5",
  I: "[c6,eb6]@15 ~", J: "~@4 [bb5,db6] ~@5 [bb5,db6] ~@5", K: "[bb5,db6]@7 ~", L: "~@4 [bb5,eb6] ~@5 [bb5,eb6] ~@5",
  M: "[[bb5,eb6]@14 [ab5,db6]@15 ~ [bb5,eb6]@16 [ab5,db6]@16 [bb5,eb6]@16 [eb5,ab5]@18, ~@78 c6 ~@17]/6", // Eb5 Db5 Eb5 Db5 Eb5 Ab5
// … 188 more lines

More by Battisti