Strudelify
I treni a vapore cover art

1991 · I Treni A Vapore

I treni a vapore

Fiorella Mannoia

KeyA minorTempo111 bpm
0:00/0:00
// I treni a vapore — Fiorella Mannoia
// 111 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 145 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(111/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 · "FINGERDBAS"
const bass = note(`<
  ~ A B C@2 D E F@2 G H I J K@2 L@2 A M N@2 A B O P Q M R S T U V W A M A P A B O P Q M X Y Z U AA W A AB AC P A AD AC
  AE Q AF AG AH AG AI AJ AK A AL AM AN AO AP AQ AR R AS AT AU AV AW AX AY AZ BA BB BC BD A BE BF BG S BH BI BJ BK AX BL
  O BM BN BO BP AW AX BQ BR BS BT BQ BU A BT BV BT BW BN BX BY BZ BN CA BN CB CC CD CE CF AQ CG CH B CI CJ CK AV CL CM
  CN CO CE CP CQ CR CS@2
>`.pickRestart({
  A: "a1", B: "d2@15 ~", C: "[f#1@29 ~@3]/2", D: "b1@5 c#2@3", E: "d2@13 ~ d2 b1", F: "[a1@29 ~@3]/2", G: "a1@5 c#2@3",
  H: "d2@7 e2", I: "f#2", J: "d2@3 b1@3 c#2@2", K: "[d2@29 ~ b1@2]/2", L: "[a1@7 f#1]/2", M: "d2",
  N: "[a1@25 ~ a2 a2@2 ~ e2@2]/2", O: "a1@7 ~", P: "e2", Q: "f#1", R: "a1@15 ~", S: "a1@13 ~ a1@2",
  T: "f#1@5 ~ f#1@7 ~ f#1@2", U: "d1@7 f#1", V: "a1@9 ~ a2@2 ~@2 a2@2", W: "a1@5 ~ a2@2 ~@2 a2@2 f#1@4", X: "a1@6 a2 ~",
  Y: "a1@3 a2 ~ a2 a1@2", Z: "f#1@5 ~ f#1@7 ~ e1@2", AA: "a1@9 ~ a2@3 ~@3", AB: "d2@7 e1", AC: "a1@3 a2 ~ a2@2 ~",
  AD: "d2@13 ~ e1@2", AE: "e2@7 e1", AF: "d2@3 d2@5", AG: "a1@3 a1@5", AH: "d1@3 d2@2 d1 g1 g#1", AI: "d1@3 d2@4 d1",
  AJ: "a1@3 a1 e1@4", AK: "a1@5 ~ a2@5 ~ f#1@4", AL: "d1@6 d2@9 ~", AM: "a1 e1", AN: "a1@3 a2@4 e1",
  AO: "a1@3 a2@2 e2 c#2 a1", AP: "c2@6 c1 ~ c1 ~ c1@6", AQ: "f1", AR: "a1@13 ~ e1@2", AS: "f1@7 ~", AT: "d1",
  AU: "c1@2 c1 g1 c2@4", AV: "c1", AW: "c2@7 ~ c1@7 ~", AX: "f1@14 f2 g2", AY: "c2@7 ~ c2@2 g2@3 ~ g1@2", AZ: "c2@7 g1",
  BA: "c1@6 c1 c2 g1@4 g1@4", BB: "f1@15 ~", BC: "c2@6 c2 c3 g2@4 g2@4", BD: "g2@10 g2!2 g2@2 g2@2", BE: "f1@13 ~ d1@2",
  BF: "c1@6 e1 g1", BG: "c2@4 g1@4 ~ g1 ~ g1 g1@2 g1@2", BH: "f1@3 f1 f1@3 g1", BI: "c2@9 ~ a2@2 ~@2 g2@2",
  BJ: "c2@9 g2 ~ g2 g2@2 g2@2", BK: "c2@7 ~ c1@5 ~ d1 e1", BL: "c2@7 ~ c2@2 g2@6", BM: "g1@3 ~", BN: "f1@14 g1 a1",
  BO: "c2@6 c2 c3 g1@2 g2@3 ~ g2@2", BP: "c2 c3", BQ: "c2@9 ~ g2@6", BR: "g1@7 g1", BS: "c1@8 ~@2 c1@2 e1 ~ e1@2",
  BT: "f1@13 ~ g1 a1", BU: "g1@13 ~ g1@2", BV: "c2@13 ~ e1!2", BW: "c2@3 g1 g1@4", BX: "c2@8 g1@2 g1@3 ~ g1@2",
  BY: "c2@11 ~ c1 ~@3", BZ: "c1@14 f1 g1", CA: "c2@9 ~ g2@3 ~@3", CB: "c2@7 g2 g2@8", CC: "f2@14 g1 a1",
  CD: "c2@6 c2!2 g1@2 g2@3 ~ g2@2", CE: "c2@13 ~ g1@2", CF: "c1@7 e1", CG: "a1@9 ~ a2@2 ~@4",
  CH: "a1@9 ~ a2@2 ~@2 c2@2", CI: "c2 g1", CJ: "c2@9 ~ g2@2 ~@4", CK: "c1@7 g1", CL: "f1@13 ~ f1!2",
  CM: "f1@13 ~ g1 g#1", CN: "a1@7 e1", CO: "d1@6 f2 f#2 g2 d2 g1@5 ~", CP: "c2@9 ~ c3@5 ~", CQ: "c1@10 ~ g1@5",
  CR: "c2@6 g1 ~", CS: "c1/2",
})).s("gm_electric_bass_finger").gain(0.74)

// chords · acoustic guitar steel · "PRG.CHANGE"
const acoustic_guitar_steel = note(`<
  A@6 B@4 C D@2 E F@4 G@3 H I J K L M N ~ O@5 P@3 Q I J K L M R@7 S@3 Q I J K L T U M U M V U@2 M V U W@3 X@2 Y@2 Z AA@2
  AB@4 AC AD AE AF AG AH@6 AI AJ@2 AK AL AM AN@3 AO@2 AP AL AM AD AE AF AG AQ AG AQ AG AR AQ@2 AG AQ AG AQ AS AR AQ AT@2
  AU@4 AQ AV AW@3 AX AY AQ AZ AQ BA ~@2
>`.pickRestart({
  A: "[~@32 [d4,f#4,a4]@15 ~ [e4,a4]@31 ~ [f#4,a4]@10 [c#4,e4,g#4,b4]@6, ~@15 [a3,c#4]@16 d3@16 [f#3,c#4]@33 b4 ~@15, ~@16 [e4,b4]@17 ~@46 [b3,d4]@11 ~@6]/6", // D A5 F#m C#m7 A F#5 E5 Bm
  B: "[[d4,f#4,a4,d5]@15 ~ e4@7 ~@5 b4@2 ~@6 e4@2 ~@4 c#5@5 ~ [c#4,e4,b4]@16, ~@15 a3@31 ~ a3@16 ~, ~@16 c#4@31 ~@17, ~@16 b4@10 a4@4 c#5@8 e4@9 ~@17, ~@12 e4@5 a4@7 ~@8]/4", // D C#m7
  C: "[d4,f#4,a4,d5]", D: "[[f#3,c#4,e4,a4]@15 ~ d5@6 [b3,d5]@6 [c#4,e5]@4, ~@15 d4@7 ~@10, ~ [f#4,a4]]/2",
  E: "[d4,a4] a4 ~ a4@2 a4@3, e5, f#4 ~@3 d4@11 ~", // D5
  F: "[~@2 a4@2 d5@2 [a4,e5]@9 ~ b4@6 ~@16 e5@9 ~ a4@6 ~@6 e4@4, d4@15 a3@15 c#5@6 a4@12 c#5@14 ~@2, ~@16 c#4@33 ~@5 a4@10, ~@16 e4@16 a3@14 ~ a3@16 ~, ~@22 b4@12 e4@13 ~ e4@11 ~@5]/4", // A5
  G: "[a4@5 ~ [a4,d5]@9 ~ b4@6 a4@10 [a4,c#5]@6 a4@10, [d4,f#4]@15 a3@28 ~@5, ~ c#4@2, ~@16 e4@16 e4@15 ~]/3", // D5 A D
  H: "[a3,e4,a4,c#5]", I: "[f#4,a4,d5]@3 [f#4,a4]@5, d4", J: "[e4,a4]@3 [e4,a4]@5, [a3,c#5]@15 ~",
  K: "[e4,g#4]@5 ~ [e4,g#4]@2 [d4,f#4]@2 [e4,g#4]@4 [e4,g#4]@2, b4@15 ~", L: "[f#3,c#4,e4,a4]",
  M: "[f#4,a4]@6 [f#4,a4]@9 ~, [d4,d5]@15 ~", N: "[e4,a4]@6 [e4,a4]@9 ~, c#5@15 ~, a3@13 ~@3",
  O: "[[c#4,e4,a4]@15 ~ [f#4,a4,d5]@15 ~ [e4,a4]@5 ~ [e4,a4]@4 [e4,a4]@4 [a3,e4,a4]@7 ~ a3 ~ a3 ~ [a3,e4,a4]@5 ~ e4@6 ~@6 e4@4, ~@15 d4@16 a3@14 ~@9 [e4,a4]@4 ~@5 a3@16 ~, ~@32 c#5@31 ~ b4@16, ~@16 c#4@3 ~, ~@7 a4]/5", // A D A5
  P: "[a4@5 ~ [a4,d5]@9 ~@3 [e3,a3]@2 ~@2 [e3,a3]@2 [e3,a3] ~ [e3,a3]@2 [e3,a3]@2 ~@2 [e4,a4]@2 [e4,a4]@2 ~@2 [e4,a4]@2 [b3,g#4]@2 [e4,g#4]@2 [e4,g#4]@3 ~, [d4,f#4]@5 a3 ~@10, ~ c#4@2, ~ e4 ~, ~@16 b4@6 a4@10 b4@15 ~]/3", // D5 A5 E D
  Q: "[a3,a4,c#5], e4@3 ~", // A
  R: "[[e4,a4]@6 e4@8 ~@2 e4@5 ~ [e4,a4]@4 [e4,a4]@4 ~@2 [e4,a4]@6 [e4,a4]@8 ~@2 [f#4,a4]@6 [f#4,a4]@8 ~ e4 [e4,a4]@6 [e4,a4]@4 [e4,a4]@4 [a3,e4,a4]@8 a3@2 a3@2 [a3,e4]@5 ~ e4@6 ~@6 e4@4, c#5@30 ~@18 d5@15 ~ c#5@31 ~ b4@16, a3@13 ~ a3@16 ~ f#3@15 ~@17 a3@15 ~@8 [e4,a4]@4 a4@4 ~@2 c#4@12 ~@4, ~@6 a4@15 ~@11 c#4@15 d4@16 b3@32 a3@16 ~, ~@51 a4@5]/7", // A5 F#m A5
  S: "[a4@5 ~ [a4,d5]@9 ~@3 [e3,a3]@2 ~@2 [e3,a3]@2 [e3,a3]@2 [e3,a3]@2 [e3,a3]@2 ~@2 [e4,a4]@2 [e4,a4]@2 ~@2 [e4,a4]@2 [b3,g#4]@2 [e4,g#4]@2 [e4,g#4]@3 ~, [d4,f#4]@5 a3 ~@10, ~ c#4@2, ~ e4 ~, ~@16 b4@6 a4@10 b4@15 ~]/3", // D5 A5 E D
  T: "[f#4,a4]@5 ~ [f#4,a4]@9 ~, [d4,d5]@15 ~", U: "[e4,a4]@6 ~@6 a3@3 ~, c#5@15 ~, a3@3 ~, ~@3 [e4,a4]@5",
  V: "[a3,e4,a4,c#5]@8 [e4,g#4,b4]@7 ~", // A E
  W: "[[e4,a4]@6 ~@6 a3@3 ~ [e4,g4]@4 e4@2 [e4,g4]@2 [e4,g4]@2 [e4,g4]@5 ~ f4@6 ~@4 f4@2 ~@2 f4@2, c#5@15 ~@17 [c5,f5]@16, a3@3 ~ [c4,c5]@4 ~@2 c4@2, ~@6 a4@16 ~@10 a4@5 ~ a4@10, ~@6 e4@9 ~@16 f3@11 ~@2 f3@4]/3", // A5 Em F5 C
  X: "[e4@4 ~@6 a4 ~@17 e4@4, a3, b4@3 a4 e4 e5@3, a4@3 ~ a4@4 e5@10 a4@4 e4@4 b4@6, ~@6 e4@7 ~ b4@10 a4@8]/2",
  Y: "[~@7 a4 ~@4 a4 ~ a4!2, f3@6 ~@5 g5@5, ~@2 f4@8 g5@8 ~@2 c5@5 ~ c5@6, ~@4 g5@4 c5@10 a4@5 ~@9, ~@6 a4@6 f4@4 d4@11 ~ d4@4]/2",
  Z: "~@5 g4 ~ g4, c4@3 d5@5, ~ g4@3 c4@4, ~@2 c5@3 ~ c5@2",
  AA: "[~@4 e5 ~@5 g4@2 ~@4 c5@5 ~@7 g4@4, c4@6 e5@9 c4@17, ~@2 g4@5 ~ c4@6 g4@2 g4@11 ~@5, ~@6 c5@2 e5@7 ~, ~@11 c5@5]/2",
  AB: "[c5@5 ~ [c5,f5]@9 ~ d5@6 c5@10 [c5,e5]@6 c5@10 [c4,g4,c5,e5]@16, [f4,a4]@15 c4@28 ~@21, ~@16 e4@47 ~, ~@16 g4@16 g4@15 ~@17]/4", // F5 C F
  AC: "[a4,f5]@3 [a4,c5]@5, f4, c5@5 ~@11", AD: "[g4,c5]@3 [g4,c5]@5, [c4,e5]@15 ~",
  AE: "[g4,b4,d5]@5 ~ g4@2 [f4,a4]@2 [g4,b4]@4 [g4,b4]@2, ~@3 b4@2 ~@3", AF: "[a3,e4,g4,c5]",
  AG: "[a4,c5]@6 [a4,c5]@9 ~, [f4,f5]@15 ~", // Am F
  AH: "[[g4,c5]@6 g4@8 ~@2 g4@5 ~ [g4,c5]@8 ~@2 [e4,g4,c5]@15 ~ [a4,c5,f5]@15 ~ [g4,c5]@5 ~ [g4,c5]@3 ~ [g4,c5]@4 [c4,g4,c5]@7 ~ c4 ~ c4 ~ [c4,g4,c5]@5 ~, e5@30 ~@34 e5@31 ~, c4@13 ~ c4@16 ~ a3@15 ~@17 c4@14 ~@19, ~@6 c5@15 ~@26 f4@16 ~@23 [g4,c5]@4 ~@6]/6", // C5 C F C5
  AI: "~@3 g4, e5@7 ~, ~@3 c5@5", AJ: "[c5@5 ~ [c5,f5]@9 ~ d5@6 c5@10, [f4,a4]@15 c4@12 ~@5, ~ [e4,g4]]/2",
  AK: "c5@5 ~ [c5,f5]@10, [f4,a4]@15 ~", AL: "[c4,g4,c5,e5]", AM: "[a4,c5,f5]@3 [a4,c5]@5, f4",
  AN: "[[g4,c5]@5 ~ [g4,c5]@2 g4@2 g4@3 ~ g4@2 [c4,g4,c5]@6 c4@2 c4@2 [c4,g4,c5]@4 ~@2 c5@5 ~@7 g4@4, [c4,e5]@4 [b4,d5]@3 b4@5 ~@4 e5@7 ~, ~@16 e4@10 ~@5 c4@17, ~@22 [g4,c5]@4 ~@6 g4@11 ~@5, ~@19 c5@5]/3", // C5 C Bm C5
  AO: "[c5@5 ~ [c5,f5]@9 ~ c5@6 c5@10, [f4,a4]@15 c4@12 ~@5, ~ [e4,g4]]/2", AP: "[b4,d5]@3 b4@5, g4@15 ~",
  AQ: "[g4,c5]@6 ~@6 c4@3 ~, e5@15 ~, c4@3 ~, ~@3 [g4,c5]@5", AR: "[c4,g4,c5,e5]@8 [g4,b4,d5]@7 ~",
  AS: "[a4,c5]@5 ~ [a4,c5]@9 ~, [f4,f5]@15 ~", // Am F
  AT: "[[e4,g4]@4 e4 ~ [e4,g4]@2 [e4,g4]@2 [e4,g4]@5 ~ f4@6 ~@4 f4@2 ~@2 f4@2, [c4,c5]@15 f3@11 ~@2 f3@4, ~ [c5,f5], ~@16 a4@5 ~ a4@10, ~@3 c4]/2", // Em C F5
  AU: "[e4@4 ~@6 a4 ~@17 e4@3 ~ f4@6 ~@4 f4@2 ~@2 f4@2 [c4,g4,e5]@8 [g4,b4,d5]@7 ~, a3@31 d4@9 d4@8 ~@16, b4@6 a4@2 e4@2 e5@6 f5@8 c5@7 ~, a4@3 ~ a4@4 e5@10 a4@4 e4@4 b4@6 c5@12 a3@4 ~@16, ~@6 e4@7 ~ b4@10 a4@8 a4@5 ~ a4@14 ~@12]/4", // C G
  AV: "e4@4 e4 ~ [e4,g4]@2 [e4,g4]@2 [e4,g4]@6, c4@15 ~, [g4,c5]@3 ~@5", // Em C5
  AW: "[[g4,c5]@6 ~@6 c4@3 ~ f4@6 ~@4 f4@2 ~@2 f4@2 [a4,c5]@6 ~@6 f4@3 ~, e5@15 ~ [c5,f5]@15 ~@17, c4@11 ~@4 f3@11 ~@2 f3@4 [f3,f5]@16, ~@6 [g4,c5]@10 a4@5 ~ a4@9 ~@7 [a4,c5]@10, ~@24 c4@19 ~@5]/3", // C5 Am F5 F C5 Am
  AX: "e4@4 ~@6 a4 ~@3 b4@2, a3, b4@3 a4, a4@3 ~ a4@4 e5@7 ~, ~@6 e4@7 ~@3", AY: "[d4,a4,d5,f5]@8 [g4,b4,d5]@7 ~",
  AZ: "e4@2 e4 [e4,g4]!2 [e4,g4]@3, c4@15 ~, [g4,c5]@3 ~@5", // Em C5
  BA: "e4@4 e4 ~ [e4,g4]@2 [e4,g4]@2 [e4,g4]@5 ~, c4@15 ~, [g4,c5]@3 ~@5", // Em C5
})).s("gm_acoustic_guitar_steel").gain(0.46)

// other · string ensemble 1 · "PRG.CHANGE"
const string_ensemble_1 = note("<~@28 [~ a4@2 g#4@2 a4@2 g#4@2 a4@2 g#4@2 a4 ~@2] ~@116>")
  .s("gm_string_ensemble_1").gain(0.46)

// chords · accordion · "PRG.CHANGE" · Em
const accordion = note("<~@143 [[e4,g4]@2 [e4,g4]!2 ~ [e4,g4]!3 ~ [e4,g4]!3 ~ [e4,g4]!3] [[e4,g4]@2 [e4,g4]!2 ~@12]>")
  .s("gm_accordion").gain(0.46)

// other · flute · "PRG.CHANGE"
const flute = note("<~@7 A B ~ C@3 ~@2 D@2 ~@78 E F@2 G@3 H@2 ~@42>".pickRestart({
  A: "e4 [a4,c#5] d5 [a4,c#5] e4 [a4,c#5] d5 [a4,c#5] e4 [a4,c#5] d5 [a4,c#5] e4 [a4,c#5] d5 [a4,c#5]", // A
  B: "e4 [a4,c#5] d5 [a4,c#5] e4 [a4,c#5] d5 [a4,c#5] e4 [a4,c#5] d5 [a4,c#5] ~@4", // A
  C: "[~@12 e4@2 c#5@4 e4@8 a4@4 a4@9 ~@9]/3", D: "[e4@3 ~]/2", E: "f5", F: "[~ f5, e5]/2",
  G: "[~@2 f5@2 ~ d5, e5@5 ~]/3", H: "[c5@15 ~]/2",
})).s("gm_flute").gain(0.5)

// other · flute · "PRG.CHANGE" · soft notes · A
const flute_soft = note("<~@8 [~@12 e4 [a4,c#5] d5 [a4,c#5]] [e4 ~@15] ~@135>").s("gm_flute").gain(0.21)

// chords · accordion · "PRG.CHANGE"
const accordion_2 = note(`<
  ~@9 A B ~@25 C D ~@11 E@2 F G D H I J K L@2 M N O P I ~ Q R S T ~@8 U@8 V@3 W@5 X@8 ~@7 Y Z AA Z AA Z AA AB AC@8 ~@20
>`.pickRestart({
  A: "~@6 e5@3 e5!7", B: "e5!8 ~ e5!3 ~@4", C: "~@5 g#4 c#5 b4", D: "a4", E: "[~ [e4,c#5] [f#4,d5]@2, ~ a4@3]/2",
  F: "[e4,c#5]", G: "b4@5 a4 c#5 b4", H: "[f#4,a4]@5 a4@3", I: "[e4,a4]", J: "e4@5 ~@3", K: "a4@5 g#4@3",
  L: "[f#4@8 ~ a4@3 g#4@4, a4@9 ~@7, ~ e4]/2", M: "f#4 e4, a4", N: "a4 g#4, e4", O: "f#4@8 e4@7 ~, a4",
  P: "[a4,c#5] [g#4,b4]", Q: "a4@15 ~", R: "a4@2 c#5@4 a4@2 c#5!2 b4@6", S: "~@3 [c#4,e4,a4]!2 ~ [c#4,e4,a4] ~@9",
  T: "[c#4,e4,a4]@3 [c#4,e4,a4] ~@2 [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~@5", // A
  U: "[~@3 e4 [e4,g4] ~ [e4,g4] ~@3 [e4,g4] ~@8 f4 [f4,a4] ~ [f4,a4] ~@3 [f4,a4] ~@8 e4 [e4,g4] ~ [e4,g4] ~@3 [e4,g4] ~@8 [e4,g4]!2 ~ [e4,g4] ~@3 c4@3 c4@5 [c4,g4]@4 c4@6 g4 ~@5 [f4,a4]!2 ~@6 [f4,a4] ~ [f4,a4] ~@5 e4 [g4,c5] ~@2 c5 ~@11 [b3,d4,g4]!2 ~@2 [b3,d4,g4] ~@3 [b3,d4,g4] ~ [b3,d4,g4] ~@3, ~@2 c4@16 c4@16 c4@16 c4@8 e4 ~@2 e4 ~@8 g4 ~@5 c4@52]/8", // Em F Em C5 F C5 G
  V: "[~@2 [b3,c4,e4]@4 [b3,e4] ~@3 [b3,c4,e4] [b3,e4] ~@6 c5 [b3,b4] ~@2 [f4,a4] ~@3 [f4,a4] ~@7 [c4,e4,g4] [e4,g4] ~@2 [e4,g4] ~@3 [e4,g4] ~@3 [e4,g4] ~, ~@6 c4@4 ~ c4@7 c4@4 c4@4 c4@8 ~ c4@3 c4@4 c4@4 c4@2]/3", // Cmaj7 E5 Cmaj7 E5 B F C Em
  W: "[~ [c4,e4,g4]@2 [e4,g4] ~@2 [c4,e4,g4] [e4,g4] ~ [e4,g4] ~ [c4,e4,g4] [e4,g4] ~ [b3,c4,e4] [b3,e4] ~@2 [b3,c4,e4] [b3,e4] ~@2 [b3,c4,e4] [b3,e4] ~@3 [b3,c4,e4] [b3,e4] ~@5 [c4,f4,g4] [f4,a4] ~@2 [f4,a4] ~@3 [f4,a4] ~@2 [f4,a4] ~@4 [c4,e4,g4] [e4,g4] ~@2 [e4,g4] ~@3 [e4,g4] ~@7 [c4,e4,g4] [e4,g4] ~@4 [c4,e4,g4] [e4,g4] ~ [c4,e4,g4] [e4,g4] ~@3, ~@3 c4@3 ~ c4@2 c4@2 ~ c4@2 ~ c4@3 ~ c4@3 ~ c4@4 ~ c4@6 ~ c4@3 c4@4 c4@3 c4@5 ~ c4@3 c4@4 c4@8 ~ c4@5 ~ c4@2 ~ c4@4]/5", // C Em C Em C Em Cmaj7 E5 …
  X: "[~@3 e4 [e4,g4] ~ [e4,g4] ~@3 [e4,g4] ~@117, ~ c4@63]/8", Y: "d5@5 c5 e5 d5", Z: "c5 b4", AA: "a4 g4",
  AB: "g4@7 ~ g4@7 ~", AC: "[~@6 c5 b4 a4 ~ c5 b4 a4 g4 g4!2, c4]/8",
})).s("gm_accordion").gain(0.57)

// other · acoustic guitar steel · "PRG.CHANGE"
const acoustic_guitar_steel_2 = note("<~@29 A ~@6 B ~@4 C D ~@2 E F ~@98>".pickRestart({
  A: "~@2 e5@2 g#5@2 a5@9 ~", B: "a4@5 ~@3", C: "~@4 g#5@2 a5@4 g#5@5 ~", D: "f#5@2 f#5@4 f#5@4 f#5@5 ~",
  E: "~@2 e5@2 g#5@2 a5@4 g#5@5 ~", F: "f#5 f#5@2 f#5@2 f#5@3",
})).s("gm_acoustic_guitar_steel").gain(0.64)

// other · accordion · "PRG.CHANGE"
const accordion_3 = note("<~ A@2 B@2 C D E@2 F@2 D G H@2 I@2 ~@128>".pickRestart({
  A: "[e4@31 ~]/2", B: "[e4@21 ~@11]/2", C: "d4@10 e4@5 ~", D: "e4", E: "[e4@27 ~@5]/2", F: "e4/2", G: "d4@3 e4",
  H: "[e4@15 ~]/2", I: "[e4@13 ~@3]/2",
})).s("gm_accordion").gain(0.44)

// chords · lead 1 square · "PRG.CHANGE"
const lead_1_square = note(`<
  ~@18 A B@2 C D E@2 F G B@2 H G B@2 I A C J C D E@2 K G B@2 H G B@2 I A C J C D E@2 K G C G C G L C@2 G L B@2 M N O@2 P
  N Q@2 M N M@3 R S@2 O P T U O P V@2 M N M N W N X@2 Y N M Z M R S@2 O P U P U P AA Y@2 P M P M P AB@2 M N AC@2 N AD Y
  Q@2 AE@2 O AF Y@2 V@2 AG@2
>`.pickRestart({
  A: "[a3,d4,f#4,a4]", B: "[a3,c#4,e4]/2", C: "[a3,c#4,e4]", D: "[a3,d4,f#4]", E: "[[a3,c#4] [g#3,b3], e4]/2",
  F: "f#3 e3 g#3 a3@5, [c#4,e4], a3 ~@3", G: "[a3,d4,e4]", H: "[f#3,a3,c#4,e4]", I: "[a3,b3,e4]", J: "a3 g#3, [b3,e4]",
  K: "a3!2 b3 c#4@5, [f#3,e4], c#4@3 ~@5", L: "[a3,c#4] [g#3,b3], e4", M: "[c4,d4,e4,g4]", N: "[a3,c4,f4]",
  O: "[b3,c4,e4]", P: "[a3,c4,f4,g4]", Q: "[c4,d4,e4,g4]/2", R: "[c4,f4,a4]", S: "[[c4,d4,e4] [b3,d4], g4]/2",
  T: "~ g4, [g3,c4,e4]", U: "[g3,c4,e4]", V: "[c4,e4,g4]/2", W: "[g3,c4,d4,e4]",
  X: "[[c4,d4,e4] [b3,d4] [c4,e4]@2, g4]/2", Y: "[c4,e4,g4]", Z: "[b3,d4,g4]", AA: "[c4,e4] [b3,d4], g4",
  AB: "[[c4,d4,e4] [b3,d4] [c4,e4]@2, g4@31 ~]/2", AC: "[b3,c4,e4]/2", AD: "[c4,e4] [b3,d4], g3", AE: "[a3,c4,f4]/2",
  AF: "[c4,f4] [b3,d4,g4], a3", AG: "[[e4,g4] ~@15, c4]/2",
})).s("gm_lead_1_square").gain(0.5)

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

// drums · snare
const snare = s("sd").struct("<~@61 A@8 B A@23 C A@8 D A@15 E A@13 D A@5 D A@4 ~@2>".pickRestart({
  A: "~@3 x!2 ~@6 x!2 ~@3", B: "~@3 x!2 ~@11", C: "~@3 x!2 ~@6 x!5", D: "~@3 x!2 ~@6 x!2 ~ x!2",
  E: "~@3 x!2 ~@5 x!3 ~ x!2",
})).gain(0.57)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@4 A B ~ B A B ~@2 A B ~ B C B ~@2 A B ~ B A B ~@2 A B ~ B C B ~@2 A B ~ B D B ~@2 D B ~ B E B ~@2 A B ~ B F B ~@2 C
  ~@8 G B H ~ A B H B I B ~@2 J B ~ B K B ~@2 J B ~@2 L B ~@2 A B ~ B A B ~@2 A B ~ B A B ~@2 A B ~@2 C B ~@2 A B ~ B M
  B ~@2 A B ~ B@2 ~@2 A B ~ B ~@2 M B ~
>`.pickRestart({
  A: "~@7 x", B: "x", C: "~@3 x", D: "~@6 x!2", E: "~@10 x!2 ~@4", F: "~@12 x!3 ~", G: "~@12 x!2 ~@2", H: "~@5 x!2 ~",
  I: "~@9 x!3 ~@2 x ~", J: "~@11 x ~@2 x ~", K: "~@11 x!2 ~ x ~", L: "~@11 x!2 ~@3", M: "~@14 x!2",
})).gain(0.5)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A B@2 C B D E F G H I J G K L M A B@2 C B D E F G H I J G K L N A B@2 C B D E F G H I J G K L N A B@2 C B D E F G H
  I J I O I P Q R I S T U V W X U Y@3 U V W X U Y@2 Z U V W X U V W X U V W X U Y@2 AA AB V W X U Y@2 Z U V W X U V W AC
  Y AD W X U Y@2 AA U V W X U Y@2 U V W X U Y X V AE X ~@2
>`.pickRestart({
  A: "~@2 x!3 ~@3 x ~@3 x!2 ~@2", B: "x ~@2 x!2 ~ x ~ x ~@3 x ~@3", C: "x ~@2 x!2 ~@2 x!2 ~ x ~ x ~ x ~", D: "x!4",
  E: "x!5 ~ x ~", F: "x ~ x!5 ~ x ~@3 x ~ x ~", G: "x ~ x!3 ~@3 x ~@3 x ~ x ~", H: "x ~ x!3 ~ x ~ x ~@3 x ~@3",
  I: "x ~ x!3 ~ x!2", J: "x ~ x!3 ~@6 x!3 ~@2", K: "x ~@3 x ~ x ~ x ~ x!3 ~@3", L: "x ~ x ~ x ~ x!2",
  M: "x ~ x ~ x!3 ~@7 x ~", N: "x ~ x ~ x!3 ~ x ~ x ~ x!3 ~", O: "x ~ x!3 ~@4 x ~ x!3 ~@2", P: "~@2 x!3 ~@4 x ~ x!5",
  Q: "~@2 x ~ x ~ x!4 ~@2 x ~ x ~", R: "~@2 x!3 ~@6 x!5", S: "x ~ x!2 ~@2 x!2 ~@3 x!5",
  T: "x ~ x!2 ~@2 x!2 ~@3 x!3 ~@2", U: "~@2 x!14", V: "x!7 ~ x!8", W: "x ~ x!14", X: "~ x!15", Y: "x!16",
  Z: "x!9 ~ x!2 ~ x!3", AA: "x!12 ~ x!3", AB: "~@2 x!4 ~@2 x!8", AC: "~ x!14 ~", AD: "~ x!6 ~ x!8", AE: "x ~ x!7 ~ x!6",
})).gain(0.57)

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

// … 79 more lines

More by Fiorella Mannoia