Strudelify

L'amore va oltre

Gatto Panceri

KeyD♭ majorTempo94 bpm
0:00/0:00
// L'amore va oltre — Gatto Panceri
// 94 bpm, 4/4, key C# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 103 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 29.
setcpm(94/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(`<
  A B C D E F C G@2 H I J K L M N O H I J P Q M N O ~@8 R S T U V W X Y ~@16 Z AA AB AC AD AE AF AG ~@38
>`.pickRestart({
  A: "db2@7 ~", B: "bb2@15 ~", C: "gb2@15 ~", D: "db3@5 ~ ab2@9 ~", E: "db3@15 ~", F: "bb2@7 ~",
  G: "[db3@3 ab2@9 ~@4]/2", H: "[ab3,db4,f4]", I: "[bb3,db4,f4]@15 ~", J: "[bb3,db4,gb4]@15 ~", K: "[ab3,db4,f4]@15 ~",
  L: "[ab3,b3,eb4]@8 [gb3,bb3,db4]@7 ~", M: "[ab3,db4,f4]@7 ~", N: "[gb3,bb3,db4]@6 [gb3,b3,db4]@9 ~",
  O: "[f3,ab3,db4]@7 ~", P: "[ab3,db4,f4]@12 eb4 ~ db4@2, ~@3 ab3, ~@13 f4@2 ~",
  Q: "[ab3,b3,eb4]@7 ~ [gb3,bb3,db4]@7 ~", R: "[ab3,db4,f4]@5 ~ db4@4 ab3@2 db4@2 ab3 ~, ~@3 f4@4 ~, ~@6 ab3@3 ~@7",
  S: "[bb3,db4,f4]@5 ~ [bb3,db4]@4 eb5 f5 eb5 db5 bb4@2, ~@3 f4 ~ ab5 ~@2", // Bbm
  T: "[bb3,db4,gb4]@5 ~ bb3@3 ~ bb3@2 [bb3,db4,gb4]@3 ~, ~@3 [db4,gb4]@3 ~@2", // Gb Gb5
  U: "[ab3,db4,f4]@4 ~@2 [ab3,db4,f4]@3 ~ [ab3,eb4] ~ eb4 f4 db4 ab3, ~@6 ab3 ~", // Db Ab5
  V: "[ab3,b3]@3 ~ b3@2 [bb3,db4]@4 gb3 ~ [gb3,bb3,db4]@3 ~, eb4@4 ab3 ~ gb3@3 ~@7", // Abm Bbm Gb
  W: "db4@2 ab3@2 db4 ~ ab3@3 ~ ab3@2 [db4,f4]@2 ab3 ~, f4@5 ~ [db4,f4]@6 ~@4, ab3 ~@11 ab3 ~@3", // Db
  X: "[gb3,bb3,db4]@4 db4@2 [gb3,b3,db4]@3 ~ [gb3,b3,db4]@2 gb3 ~ [gb3,b3,db4] ~, ~@4 gb3 ~@11", // Gb Gbsus4
  Y: "[bb3,db4,gb4]@3 ~ [bb3,gb4] ~ [db4,f4]@4 ab3 ~ [db4,f4]@3 ~, ~@4 db4@2 ab3@2 ~@4 ab3 ~@3", // Gb Ebm Db
  Z: "[bb3,eb4,g4]@5 ~ [bb3,eb4,g4]@3 ~ [f4,bb4] g4 f4@2 eb4 ~", // Eb Bb5
  AA: "[c4,eb4,g4]@5 ~ [eb4,g4]@4 c4@2 [eb4,g4]@2 c4 ~, ~@6 c4@3 ~@3 c4 ~@3", // Cm Eb
  AB: "[ab3,c4,eb4]@3 ~ [ab3,c4] ~ [ab3,c4,eb4]@3 ~ [bb4,eb5] ~ [bb4,eb5] c5 ab4 ~", // Ab Eb5
  AC: "[eb4,g4]@4 bb3@2 [eb4,g4]@4 bb3@2 [eb4,g4]@2 bb3 ~, bb3@3 ~@3 bb3@3 ~@3 bb3 ~@3", // Eb
  AD: "[db4,f4]@4 ab3 ~ [c4,eb4]@4 ab3@2 [bb3,eb4] ~ ab3 ~, ab3@3 ~@3 ab3@3 ~ c4 ~@2 bb3@2 ~", // Db Cm Eb5
  AE: "[bb3,eb4]@4 bb3 ~ eb4@4 bb3 ~ eb4@2 ~@2, ~@6 bb3@3 ~@3 bb3 ~@3", // Eb5
  AF: "[ab3,c4]@3 ~ [ab3,c4] ~ [ab3,db4,eb4]@3 ~ [ab3,db4,eb4]@4 [ab3,db4,eb4] ~, eb4 ~@3", // Ab Absus4
  AG: "[eb4,ab4]@2 c4 ~ [c4,eb4,ab4] ~ [eb4,g4]@4 eb4@2 [bb3,eb4,g4]@3 ~, c4 ~@5 bb3@3 ~ bb3 ~@5", // Ab5 Ab Eb
})).s("gm_piano").gain(0.54)

// bass · slap bass 1
const bass = note(`<
  A B C D E F G H@2 I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG F AH AI AJ AK AL AM AN AO AP AQ AR AS AT AU
  AV AW AX AY AZ BA BB BC BD BE BF BG BH BI BJ BK BL BM BN BO BL BP BQ BR BS BM BT BU BV BW BX@2 BL BM BY BR BZ BP CA CB
  BS CC CD CE CF CG CH CI CJ CK CL CM ~@2
>`.pickRestart({
  A: "db1@3 db1 ~@2 db1@10", B: "bb1@3 bb1 ~@2 bb1@9 ~", C: "gb1@2 ~ gb1 ~@2 gb1@7 ~ ab1 ~",
  D: "db1@2 eb1 ~ f1 ~ ab1@4 ab1@2 ab1@4", E: "f1@2 ~ f1 ~@2 f1@8 ~ f1", F: "bb1@2 ~ bb1 ~@2 bb1@10",
  G: "gb1@2 ~ gb1 ~@2 gb1@7 ~@3", H: "[db1@3 gb1 ~@2 ab1@25 ~]/2", I: "db1@2 ~ db1 ~@2 db1@5 ~@3 ab1@2",
  J: "bb1@2 ~ bb1 ~@2 bb1@8 bb1@2", K: "gb1@2 ~ gb1 ~@2 gb1@7 ~ gb1 ab1", L: "db1@3 db1 ~@2 db1@7 ~ db1 ~",
  M: "ab1@3 ab1 ~@2 ab1@2 gb1@7 ~", N: "db1@2 ~ db1 ~@2 db1@7 ~ db1 eb1", O: "gb1@2 ab1 ~ bb1 ~ b1@10",
  P: "db1@2 ~ db1 ~@2 db1@9 ~", Q: "db1@3 db1 ~@2 db1@8 ~ db1", R: "bb1@2 ~ bb1 ~@2 bb1@8 ~ bb1",
  S: "gb1@2 ~ gb1 ~@2 gb1@6 ~@2 gb1 ab1", T: "db1@2 ~ db1 ~@2 db1@7 ~@2 db1",
  U: "ab1@2 ~ ab1@2 ~ ab1@2 gb1@2 ~@4 gb1@2", V: "db1@2 ~ db1 ~@2 db1@8 db1!2", W: "gb1@2 ab1 ~ bb1 ~ b1@7 ~ b1 db2",
  X: "db1@2 ~ db1@2 ~ db1@9 ~", Y: "bb1@2 ~ bb1 ~ bb1 ~ bb1 bb1@3 bb1 bb1@2 bb1!2",
  Z: "gb1@2 ~ gb1 ~@3 gb1 gb1@2 ~ gb1 bb1@4", AA: "ab1@2 ~ ab1 ~@2 ab1@3 ~ ab1!2 ~ ab1!2 ~",
  AB: "ab1@2 ~ ab1 ~@2 ab1@2 ~ ab1@2 ab1!2 eb2 ab1 ~", AC: "bb1@3 bb1@2 ~ bb1!2 bb1@3 bb1@3 bb1@2",
  AD: "gb1@2 ~ gb1 ~@2 gb1!2 gb1@2 ~ gb1 gb1@2 bb1@2", AE: "ab1@3 ab1 ~@2 ab1@3 ab1!2 ~ ab1@3 ~",
  AF: "ab1@2 ~ ab1 ~@2 ab1@3 ~ ab2 ab1 eb2 ab1@3", AG: "db1@2 ~ db1 ~@2 db1@8 ~ db1",
  AH: "gb1@2 ~ gb1 ~@2 gb1@6 gb1 ~ gb1 ab1", AI: "db1@2 ~ db1 ~@2 db1@5 ~ db1@3 ~", AJ: "ab1@3 ab1 ~@2 gb1@7 ~ gb1 ab1",
  AK: "db1@2 ~ db1 ~@2 db1@4 db1 ~ db1 db2 db1!2", AL: "gb1@2 ab1 ~ bb1 ~ b1@3 ~ b1@4 b1 db2",
  AM: "db1@2 ~ db1 ~@2 db1@3 ~ db1 ~ db1@2 db1 ~", AN: "bb1@2 ~ bb1@2 ~@2 bb1!2 ~@2 bb1!2 ~ bb1 ~",
  AO: "gb1 ~@2 gb1 ~ gb1!4 ~ gb1!2 gb1@2 gb1 ~", AP: "ab1@2 ~ ab1@2 ~ ab1@3 ~ ab1 ~ ab1@2 eb2!2",
  AQ: "ab1@2 ~ ab1@2 ~ ab1@3 ab1 ab2 ab1!2 eb2 ab1 db2", AR: "bb1@3 bb1!2 ~ bb1!3 ~@2 bb1!2 ~ bb1 ~",
  AS: "gb1 ~@2 gb1!3 ~ gb1!2 ~@2 gb1 gb1@2 gb1 ~", AT: "ab1@2 ~ ab1@2 ~ ab1@3 ~ ab1 ~ ab1@2 db2 eb2",
  AU: "ab1@2 ~ ab1@2 ~ ab1@3 ~ ab1 ~ ab1 ab2 ab1 ~", AV: "eb1@3 gb2 eb1 ~ gb1@3 ~ gb1 ~ gb1@2 gb1 ~",
  AW: "db1@2 db2 ~ db1 ~ ab1@3 ~ ab1 ~ ab1@2 ab2 ab1", AX: "eb1@2 eb1 ~ f1 ~ gb1@4 gb1 ~ gb1 gb2 gb1 ~",
  AY: "db1@3 db1 ~@2 ab1@3 ~ ab1 ~ ab1 ab2 ab1 ab2", AZ: "eb1@2 gb2 ~ f1 ~ gb1@3 ~ gb1 ~ gb1@2 gb2 gb1",
  BA: "db1@2 db2 ~ db1 ~ ab1@3 ~ ab1 ~ ab1 ab2 ab1!2", BB: "eb1@2 gb2 ~ f1 ~ gb1@3 ~ gb1 ~ gb1 ~ gb1 ~",
  BC: "db1@2 db1 ~ db1 ~ bb1@3 ~ bb1 ~ bb1@2 bb1 ~", BD: "eb1@2 ~ eb1@2 ~ eb1@5 ~ eb1@2 bb1 b1",
  BE: "c2@2 ~ c2 ~@2 c2@6 ~ c2 ~ eb1", BF: "ab1@2 ~ ab1 ~@2 ab1@4 ab1 ~ ab1 ~ ab1 bb1",
  BG: "eb1@2 ~ eb1 ~@2 eb1@3 ~ eb1 ~ eb1 ~ eb1 eb2", BH: "bb1@2 ~ bb1@2 ~ ab1@4 ab1 ~ ab1 eb2 ab1 ~",
  BI: "eb1@2 ~ eb1 ~@2 eb1@3 ~ eb1 ~ eb1 ~ eb1 ~", BJ: "ab1@2 bb1 ~ c2 ~ db2@4 db2@2 db2 ~ db2 eb2",
  BK: "eb1@2 ~ eb1 ~@2 eb1@3 ~ eb1 ~ eb1 eb2 eb1 ~", BL: "c2@3 c3 ~ c3 c2!2 c2@3 c3 c2 c3 c2 ~",
  BM: "ab1@3 ab2 ~ ab2 ab1!2 ab1@3 ab2 ab1 ab2 ab1 ~", BN: "bb1@3 bb2 bb1 ~ bb1@3 ~ bb1 ~ bb1 bb2 bb1 bb2",
  BO: "bb1@3 bb2 ~@2 bb1@3 bb2 bb1 bb2 bb1 bb2 bb1 ~", BP: "ab1@3 ab2 ~ ab2 ab1!2 ab1@3 ab2 ~ ab2 ab1 ~",
  BQ: "bb1@3 bb2 ~@2 bb1@3 bb2 ~ bb2 bb1 ~ bb1 ~", BR: "bb1@3 bb2 bb1 ~ bb1@3 bb2 ~ bb2 bb1 bb2 bb1 ~",
  BS: "c2@3 c3 ~ c3 c2!2 c2@3 c3 ~ c3 c2 ~", BT: "bb1@3 bb2 bb1 bb2 bb1@3 bb2 ~ bb2 bb1 bb2 f2 bb2",
  BU: "bb1@3 bb2 bb1 bb2 bb1@3 bb2 ~ bb2 bb1 bb2 bb1 ~", BV: "c2@3 c3 ~@2 c2!2 c2@3 c3 ~ c3 c2 ~",
  BW: "ab1@3 ab2 ab1 ab2 ab1!2 ab1@3 ab2 ab1 ab2 ab1 ~", BX: "bb1@3 bb2 ~ bb2 bb1@3 bb2 ~ bb2 bb1 bb2 bb1 ~",
  BY: "bb1 ~ bb1 bb2 bb1 ~ bb1@3 bb2 ~ bb2 bb1@3 ~", BZ: "c2@3 ~@2 c3 ~ c2 c2@3 c3 ~ c3 c2 ~",
  CA: "bb1 ~@2 bb2 bb1 bb2 bb1@4 bb2 ~ bb1 bb2 bb1@2", CB: "bb1 ~@2 bb2 ~ bb2 bb1@3 bb2 ~ bb2 bb1 bb2 bb1 ~",
  CC: "ab1@3 ab2 ab1 ~ ab1!2 ab1@3 ab2 ~ ab2 ab1 ~", CD: "bb1 ~ bb1 bb2 ~ bb2 bb1@3 ~ bb1 ~ bb1 bb2 ~ bb2",
  CE: "bb1 ~@2 bb2 ~ bb2 bb1@3 ~ bb1 ~ bb1 bb2 bb1 ~", CF: "c2@3 ~ c2 c3 c2!2 c2@3 c3 c2@2 c3 ~",
  CG: "ab1@3 ab2 ~ ab2 ab1 ~ ab1@3 ab2 ~ ab2 ab1 ~", CH: "bb1 ~@2 bb2 ~ bb2 bb1@4 bb1 ~ bb1 bb2 ~ bb2",
  CI: "bb1 ~@2 bb2 ~ bb2 bb1@3 ~ bb1@2 bb1 bb2 bb1 ~", CJ: "c2@3 ~@3 c2 ~ c2@3 c3 ~@2 c2 ~",
  CK: "ab1@3 ab2 ~ ab2 ab1 ab2 ab1@3 ab2 ~ ab2 ab1 ab2", CL: "bb1@3 bb2 ~ bb2 bb1@4 bb1 ~ bb1 bb2 ~@2",
  CM: "bb1@3 bb2 ~ bb2 bb1@3 ~ bb1@2 bb1 bb2 ~@2",
})).s("gm_slap_bass_1").gain(0.7)

// bass · slap bass 1 · soft notes
const bass_soft = note(`<
  ~@2 A ~@3 B ~@2 C ~@7 D E F G H ~@4 I J ~@2 K L ~ M ~@2 N ~ N ~ N O P ~@2 Q R ~@11 S ~@6 T U ~ V T J W X T U Y ~ Z ~ V
  W T U X@2 AA U AB AC AD AE AF AG AH AI AJ AG AK J AF V ~@2
>`.pickRestart({
  A: "~@15 gb1", B: "~@14 gb1!2", C: "~@6 db1 ~", D: "~@5 db1 ~@8 db1 ~", E: "~@14 bb1 ~", F: "~@12 gb1 ~@3",
  G: "~@4 db1 ~@9 db1 ~", H: "~@11 gb1 ~@4", I: "~@6 gb1 ~@3 gb1 ~@5", J: "~@4 ab1 ~@7 ab1 ~@3", K: "~@5 gb1 ~@10",
  L: "~@11 ab1 ~@4", M: "~@14 db1 ~", N: "~@5 db1 ~@10", O: "~@5 bb1!2 ~@3 bb1 ~@4 bb1", P: "~ gb1 ~@2 f1 ~@11",
  Q: "~@5 bb1 ~@4 bb1 ~@5", R: "~@2 gb1 ~@3 gb1 ~@9", S: "~@12 eb1 ~ eb1 ~", T: "~@4 c2 ~@11", U: "~@4 ab1 ~@11",
  V: "~@4 bb1 ~@11", W: "~@4 bb1 ~@5 bb1 ~@5", X: "~@5 bb2 ~@4 bb1 ~@5", Y: "~@10 bb1 ~@5", Z: "~@4 c2 c3 ~@6 c2 ~@3",
  AA: "~@3 c3 c2 ~ c2 ~@5 c2 ~@3", AB: "~@2 bb1 ~@13", AC: "~@2 bb1 ~ bb1 ~@11", AD: "~@4 c2 ~@7 c2 ~@3",
  AE: "~@5 ab2 ~@6 ab1 ~@3", AF: "~@4 bb1 ~@9 bb1 ~", AG: "~@2 bb1 ~ bb1 ~@10 bb2", AH: "~@3 c3 ~@12",
  AI: "~@4 ab1 ~@2 ab2 ~@4 ab1 ~@3", AJ: "~@2 bb1 ~ bb1 ~@9 bb1 ~", AK: "~@5 c3 ~ c3 ~@4 c2 c3 ~@2",
})).s("gm_slap_bass_1").gain(0.39)

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

// chords · electric guitar clean · soft notes
const electric_guitar_clean_2 = note(`<
  ~@3 A ~@2 B ~@2 C ~@2 D E F ~@2 G H ~ I ~ J K ~ L ~@3 M N O P Q ~ R S ~ T U ~ V W ~@2 X ~@7 Y ~ Z AA AB AC AD AE ~@2
  AF AG AH ~ AI AJ ~ AK ~ R ~ AL ~@2 AK AM ~ AN ~ AO ~@3 AP ~ R AK AQ ~@2 AR AS AT AN ~ AK AU AN ~@2
>`.pickRestart({
  A: "~@14 ab3 ~", B: "~@14 gb3 ~", C: "~@5 ab3@3", D: "~@10 ab3@3 ~ ab3 ~", E: "eb4 ~", F: "~@6 ab3@4 ~ ab3 ~@3 ab3",
  G: "~@4 ab3@2 ~@4 ab3@3 ~@3", H: "db4@2 ~@3 f3@3, ~@4 bb3@11 ~", I: "~@4 db4 ~@11", J: "~@15 ab3", K: "~@7 b3",
  L: "~@2 bb3 ~@4 bb3", M: "~@7 bb3", N: "~@2 gb3@4 ~@6 gb3 ~@3", O: "~@2 ab3 ~@13", P: "~@5 ab3 ~@10",
  Q: "~@3 ab3@6 ~@7", R: "~@14 bb3 ~", S: "~ eb4!2 ~@5", T: "~@6 ab3@3 ~ ab3 ~ eb4 ~@3", U: "~@3 db4@2 ~@9 bb3 ~",
  V: "~@6 bb3 ~", W: "~@2 bb3 ~@5", X: "~@4 bb3 ~@3", Y: "~@4 gb3@2 ~@4 bb3@3 ~@3", Z: "~@10 bb3@4 ab3 ~",
  AA: "~@6 bb3@8 bb3 ~", AB: "~@5 bb3@3", AC: "eb4@5 ~@11", AD: "~@4 c4!2 ~@10", AE: "eb4@3 ~@13", AF: "~@7 ab3@2 ~@7",
  AG: "~@2 eb4 ~@5", AH: "~@2 eb4@3 ~@3", AI: "~@3 eb4@2 ~@10 eb4", AJ: "~ eb4@2 ~@11 bb3@2", AK: "~@14 eb4 ~",
  AL: "eb4@9 ~@6 eb4", AM: "~@4 c4 ~@11", AN: "~@3 eb4@2 ~@11", AO: "~@12 eb4@3 ~", AP: "~@2 ab3@3 ~@11",
  AQ: "~@6 eb4@4 ~@5 eb4", AR: "~@7 c4", AS: "~@4 ab3@3 ~@7 eb4 ~", AT: "~@5 bb3 ~@2", AU: "eb4@2 ~ eb4@2 ~@11",
})).s("gm_electric_guitar_clean").gain(0.16).pan(0.4)

// chords · string ensemble 2
const string_ensemble_2 = note(`<
  ~@25 A@2 B@2 C@4 ~@8 D@2 E@2 F@4 ~@16 G@2 H@2 I@4 J@4 K@2 L@2 M@2 L@2 N@4 O@2 L@2 P@4 M@2 L@2 Q ~
>`.pickRestart({
  A: "[f4@15 gb4@17, db4]/2", B: "[eb4@8 db4@3 c4@5, ab4]/2",
  C: "[f4@16 gb4@16 ~@6 c4@10 db4@6 c4@9 ~, db4@19 ~@13, ~@32 ab4@31 ~]/4", D: "[~@15 gb4@16 ~, db4]/2",
  E: "[eb4,ab4]/2", F: "[f4@8 gb4@8 ~@3 c4@5 db4@3 c4@4 ~, db4@19 ~@13, ~@32 ab4@31 ~]/4", G: "[c4@15 ab4@16 ~, eb4]/2",
  H: "[f4,bb4]/2", I: "[g4@15 ~ ab4@15 ~ f4@32, eb4@31 bb4@32 ~]/4",
  J: "[[g4,g5]@8 [ab4,ab5]@8 ~@3 f4@13, eb4@19 ~@13, ~ [bb4,bb5]]/4", // G Ab Bb
  K: "[g5@8 bb5@3 ab5@2 g5@3 eb5@8 bb5@3 ab5@2 g5@3, eb4, g4 ab4]/2", L: "[f4,bb4,f5]/2",
  M: "[eb5@8 bb5@3 ab5@2 g5@3 eb5@8 bb5@3 ab5@2 g5@3, eb4, g4 ab4]/2",
  N: "[eb5@8 bb5@3 ab5@3 g5@2 eb5@8 bb5@3 ab5@2 g5@2 ~ [f4,bb4]@32, eb4@31 f5@32 ~, g4 ab4 ~@2]/4", // Bb5
  O: "[eb5@8 bb5@3 ab5@3 g5@2 eb5@7 bb5@4 ab5@2 g5@3, eb4, g4 ab4]/2",
  P: "[eb5@8 bb5@3 ab5@3 g5@2 eb5@7 bb5@4 ab5@2 g5@2 ~ [f4,f5]@32, eb4 ~, g4@16 ab4@15 bb4@33]/4", // F
  Q: "eb5@7 bb5@4 ab5@2 g5@3, [c3,eb4,g4]", // Cm
})).s("gm_string_ensemble_2").gain(0.52).pan(0.6)

// other · overdriven guitar
const overdriven_guitar = note("<~@4 A@2 ~ B@2 ~@94>".pickRestart({
  A: "[~@10 db4@21 ~]/2", B: "[~@2 gb4@2 f4@2 eb4@23 ~@3]/2",
// … 147 more lines

More by Gatto Panceri