Strudelify

A testa in giu

Daniele

KeyD majorTempo85 bpm
0:00/0:00
// A testa in giu — Daniele
// 85 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 89 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(85/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 · epiano2
const epiano2 = note(`<
  A B C D E F G H I J@2 K L M@2 N@2 O@2 P@2 Q R S T U@7 V@2 W X Y Z@2 K AA AB@2 AC@2 AD@2 AE@2 Q R S AF U@7 V@2 AG AH Y
  AI@2 AJ AK AL AM AN@2 AO@2 AP AQ K AR AS@2 K AT AU AV@5
>`.pickRestart({
  A: "~@23 a2",
  B: "~@3 [c#4,f#4] ~@2 [a3,c#4,f#4] ~ [g3,b3,e4] ~@2 a2 ~@3 [c#4,f#4] ~@2 [a3,c#4,f#4] ~ [g3,b3,e4] ~@2 a2, d2@8 ~@4 d2@9 ~@3, ~ a3 ~@5 a3 ~@4", // F#5 F#m Em F#5 F#m Em
  C: "~@3 [c#4,f#4] ~@2 [a3,f#4] ~ [g3,b3,e4] ~@14 a2, d2@3 ~@5, ~ a3 ~ c#4 ~@8", // F#5 D Em
  D: "~@3 [c#4,f#4] ~@2 [a3,c#4,f#4] ~ [g3,b3,e4] ~@2 a2 ~@3 [c#4,f#4]@2 ~ [a3,c#4,f#4] ~ [g3,b3,e4] ~@2 a2, d2@7 ~@5 d2@9 ~@3, ~ a3 ~@5 a3 ~@4", // F#5 F#m Em F#5 F#m Em
  E: "~@3 [c#4,f#4]@2 ~ [a3,c#4,f#4] ~ [g3,b3,e4] ~@3 [e3,g3,b3,d4]@6 [a2,g3,b3,c#4,d#4]@6, d2@3 ~@5, ~@2 a3@3 ~@19", // F#5 F#m Em Em7
  F: "~@2 a3 [c#4,f#4] ~ a3 [a3,c#4,f#4] ~ [g3,b3,e4]@2 ~ a2 ~@2 a3 f#4@2 a3 [a3,c#4,f#4] ~ [g3,b3,e4]@2 ~ a2, d2@9 ~@3 d2@10 ~@2, ~@15 c#4 ~@8", // F#5 F#m Em F#m Em
  G: "~@2 a3 [c#4,f#4]@2 a3 [a3,c#4,f#4] ~ [g3,b3,e4]@2 ~ a2 ~@2 a3 f#4@2 a3 [a3,c#4,f#4] ~ [g3,b3,e4]@3 f#2, d2@10 ~@2 d2@11 ~, ~@15 c#4 ~@8", // F#5 F#m Em F#m Em
  H: "~@3 [d4,f#4]@2 a3 [a3,d4,f#4] ~ [a3,c#4,e4]@3 f#2 ~@2 a3 [d4,f#4]@2 ~ [d4,f#4] ~ [a3,c#4,e4]@3 f#2, b2@9 ~@3 b2@10 ~@2, ~@2 a3@2 ~@13 a3@2 ~@5", // D A D A
  I: "~@2 a3 [d4,f#4]@2 a3 [d4,f#4] ~ [c#4,e4]@3 f#2 ~@2 a3 f#4@2 a3 [d4,f#4] ~ [c#4,e4]@3 f2, b2@3 ~ b2@3 ~, ~@6 a3@4 ~@5 d4 ~@2 a3@5 ~", // D C#m D C#m
  J: "[~@3 e4@2 ~ [e4,g4] ~ [a3,d4,f4]@3 ~@3 a3 e4@2 a3 g4@2 [d4,f4]@3 ~ [a4,d5,g5]@4 [g4,c5,f5]@5 [f4,a4,d5]@5 [d4,g4,c5]@4 [a3,d4,g4]@6, a#2@10 ~ f2@2 ~@5 e4 ~@4 f2@2 ~@23, ~@2 a3@2 ~ a3@2 ~@5 a#2@12 a#2@24, ~@3 g4 ~@11 g4 ~@2 a3@6 ~@24]/2", // Em Dm Dsus4 Csus4 Dm Csus2 Dsus4
  K: "[d2,d3,a3,c#4,e4,f#4,a4]", L: "[e5,e6]@6 [d5,d6]@5 [d2,c#6]@2 ~@11, d2@11 c#5 ~@12", M: "[d3,a3,c#4,e4,f#4,a4]/2",
  N: "[f#4@8 ~@3 [d4,a4]@5, [b2,c#4], [d4,a4]@11 ~@5, ~ [f#4,d5], ~@7 [e4,c#5]@5]/2", // D5 Bsus2 D5 D C#m
  O: "[a#3@11 ~ [a4,c6]@8 ~@4, [a#2,a3,c4,g4]@23 [f5,g5]@17 ~@8, ~@11 [a#3,f4,c5]@9 ~@4]/2", // Am C7 Fsus2 A#sus2
  P: "[[d3,a3,c#4,e4,f#4,a4]@20 [b3,e4] c#4 ~@2 [a3,e4]@3 b3 ~ d3 b3 c#4@2 a3 ~ [b3,e4]@4 a3 ~@8, d2@7 ~, ~@23 d3@4 ~@3 e4@3 ~@15]/2", // Dmaj7 E5 A5 E5
  Q: "[e2,e3,g3,b3,d4]@2 b3 c#4 ~@2 [g3,b3,d4] ~@2 [g3,b3,c#4] ~@2 [g3,b3,d4] ~@2 [g3,b3,c#4] ~ [g3,b3,d4] ~@2 [g3,b3,c#4] ~ e3 b2", // Em7 G C#m7b5 G C#m7b5 G C#m7b5
  R: "[f3,a#3,d4]@15 [g3,a#3,d4,a4]@5 [g3,a#3,d4,g4]@4, g2", // A# Gm
  S: "~@7 f#3, [f#2,a3,b3,c#4,e4], f#3@5 a4, ~@5 [b4,c#5,e5]@3", // F#m7 C#m7
  T: "~@9 [e4,c#5]@2 [f#4,d5]@5 ~@8, b2@2 ~, [a3,d4,f#4]@11 ~@13", // C#m D
  U: "[[e2,e3,g3,b3,d4,f#4]@3 ~@17 [f2,f3,g4]@2 ~ [f#2,f#3,a3,c#4,e4,g#4]@2 ~@19 [f2,f3,g#3,c4,g4] ~@2 [e2,e3,g3,b3,d4,f#4]@2 ~@19 [f2,f3,g#3,c4] ~@2 [f#2,f#3,a3,c#4,e4,g#4]@2 ~@19 [f2,f3,g#3,c4,g4] ~@2 [e2,e3,g3,b3,d4,f#4]@2 ~@11 [f#4,g4,b4,d5]@3 ~@5 [f2,f3,g#3,c4] ~@2 [f#2,f#3,a3,c#4,e4,g#4]@3 ~@18 [f3,g#3,c4,g4] ~@2 [e2,e3,g3,b3,d4,f#4]@2 ~@11 [f#4,g4,b4,d5]@3 ~@5 [f2,g#3,c4,d#4,g4]@2 ~ [f#2,f#3,a3,c#4,e4,g#4], ~@20 [g#3,c4,d#4] ~@23 d#4@2 ~@22 [d#4,g4]@2 ~@22 d#4@2 ~@22 [d#4,g4]@2 ~@22 [f2,d#4]@2 ~@22 f3 ~@3]/7", // Em7 Fsus2 F#m7 Fm Em7 Fm F#m7 Fm …
  V: "[~@20 [f2,f3,g#3,c4,d#4,g4] ~@2 f#4@13 ~@5 [d4,a4]@7, ~@23 [e2,e3,g3,b3]@25, ~@23 d4@18 ~@7, ~@3 [f#4,d5]]/2", // Fm7 D5 Em D
  W: "f4@9 ~@2 [d4,a#4]@13, [g2,g3,a#3], d4@11 ~@13, ~@3 [f4,c5]@5", X: "[f#2,f#3,a3,c#4,e4,g#4]",
  Y: "[b2,a3,c#4,e4,g#4] [b2,a3,d#4,g4]", // C#m7 Baug
  Z: "[d4@18 d4@2 e4 d4 ~@8 [a4,d5,g5]@6 ~@6 [f4,a4,d5]@6, [e2,e3,g3,b3,f#4]@21 ~@2 [a#2,a#3]@25, ~@23 [a3,d4]@13 [g4,c5,f5]@12]/2", // Dsus4 Dm Em A# D5 Csus4
  AA: "~@6 [d5,d6]@5 [c#5,c#6] ~@12, [d2,d3,e5,e6]@11 ~@13", // D C# Dsus2
  AB: "[[a3,c#4,e4,f#4,a4]@14 ~ [a3,c#4,e4,f#4] ~@3 [a3,c#4,e4,f#4]@7 ~ [a3,c#4,e4,f#4] ~@4 [a3,c#4,e4,f#4]@16, d2, d3@15 ~@3 d3@8 ~@4 d3@18]/2", // F#m7
  AC: "[~@16 [g4,e5] [f#4,d5]@7, b2, [f#3,a3,c#4,d4,f#4]@29 [a4,f#5]@6 ~@13, a4@21 f#5@3 [d5,a5]@11 ~@13, ~@21 d6@14 ~@13]/2", // C D Dmaj7 D D5
  AD: "[a#3@11 ~ [a4,d6,e6,g6]@12, [a#2,c4,d4,g4]@25 ~@23, ~@11 a#3@13, ~@23 [f4,g5,c6]@25]/2", // Asus4 Gm Fsus2
  AE: "[[d3,a3,c#4,e4,f#4,a4]@15 e5 ~ a4 [d3,a4,b4,e5] ~ [b4,e5] ~@3 d3 b4 [c#5,e5] ~@2 d3 b4@3 ~ a4@13 ~, d2@47 ~, ~@15 b4@2 ~@16 d3@15, ~@8 c#5 ~@6 e5@9]/2", // Dmaj7 Dsus2 E5 C#m
  AF: "~@9 [e4,c#5]@2 [f#4,d5]@12 ~, b2@23 ~, [a3,d4,f#4]@11 ~@13", // C#m D
  AG: "f4@9 ~@2 [d4,a#4]@13, [g2,f3,a#3], d4@11 ~@13, ~@3 [f4,c5]@5", AH: "~@5 [a4,b4,e5]@3, [f#2,f#3,a3,c#4,e4,g#4]",
  AI: "[[e3,g3,b3,d4,f#4]@17 ~ d4@2 e4 d4 ~ [a3,d4]@3 [d5,d#5,g5] e5 ~ d#5 ~@12 a4@6, e2@19 ~@4 [a#2,a#3]@25, ~@17 e3@2 ~@9 g5@19 ~, ~@29 e5@2 ~@5 c5@12, ~@5 d5@3]/2", // Em7 D5 D#maj7 A#
  AJ: "~@3 [c#4,f#4]@2 a3 [a3,c#4,f#4] ~ [g3,b3,e4] ~@2 a2 ~@3 [c#4,f#4]@2 ~ [c#4,f#4] ~ [g3,b3,e4] ~@2 a2, d2@5 ~ d2@5 ~, ~ a3 ~@5 a3 ~ a3 ~@2", // F#5 F#m Em F#5 Em
  AK: "~@3 [c#4,f#4]@2 a3 [a3,c#4,f#4] ~ [g3,b3,e4] ~@14 a2, d2@5 ~@7, ~ a3 ~@10", // F#5 F#m Em
  AL: "~@3 [c#4,f#4]@2 ~ [c#4,f#4] ~ [g3,b3,e4] ~@2 a2 ~@3 [c#4,f#4]@2 ~ [c#4,f#4] ~ [g3,b3,e4] ~@2 a2, d2@3 ~ d2@3 ~, ~@2 a3@2 ~ a3@2 ~@7 a3@2 ~ a3@2 ~@5", // F#5 Em F#5 Em
  AM: "~@3 [c#4,f#4]@2 ~ [c#4,f#4] ~ [g3,b3,e4] ~@5 a2 d3@2 ~ f3@2 f#3 ~@3, d2@11 ~@13, ~@2 a3@2 ~ a3@2 ~@10 e3@2 ~@5", // F#5 Em
  AN: "[~ [c#5,d5,f#5,a5], [b2,f#3,c#4,d4,f#4,a4]]/2", AO: "[~ [a4,b4,e5], [f#2,a3,c#4,e4,g#4]]/2",
  AP: "[e2,e3,g3,b3,d4,f#4]", AQ: "[g2,g3,a#3,d4,f4,a4]", AR: "[b2,a3,c#4,e4,f#4] [b2,a3,d#4,g4], b1",
  AS: "[[e2,e3,g3,b3,d4,f#4]@18 d4@2 e4 d4 ~@8 [a4,d5,g5]@6 [a#3,g4,c5,f5]@6 [a#3,f4,a4,d5]@6, ~@23 a#2@25, ~@23 [a3,a#3,d4]@13 ~@12]/2", // Em7 Dsus4 A#sus2 A#maj7
  AT: "[c#4,d4,f#4,a4]@12 ~@5 d4@7, [b2,f#3,a3], ~ c#4", AU: "[a#2,a#3,c4,d4,g4]",
  AV: "[[a3,a4,d5,g5]@5 [a3,g4,c5,f5]@5 [f4,a4,d5]@94 ~@16, a#2@17 ~@3, ~@5 a3@46 ~@9]/5", // Dsus4 F Dm
})).s("gm_epiano2").gain(0.24)

// bass · electric bass finger
const bass = note(`<
  ~@5 A B C D E F G H I J K L M N I J O P Q R S@7 T@2 U V W X@2 Y Z I J K L M N I J O P Q R S@7 T@2 U V W X@2 AA@2 AB@2
  AC AD AE AF AG AH AI AJ AK@2 AL AM AN AO@2 ~@3
>`.pickRestart({
  A: "d1@10 ~ a1 d1@11 a1", B: "d2@11 a1 d1@8 a1 d2@2 a1", C: "b1@11 f#1 b1@11 ~", D: "b1@11 f#1 b1@8 f#1 b1@2 f#1",
  E: "a#1@11 f1 a#1@11 ~", F: "a#1@10 ~ a#1@2 ~@2 a#1@4 ~ c2@4", G: "d2@11 a1 d1@11 ~", H: "d1@10 ~ d1@2 ~@11",
  I: "d2 ~@2 d2 ~@4 d2 ~@2 a1 d2@11 a1", J: "d1@20 a1 d2@2 a1", K: "b1@2 ~ b1 ~@4 b1 ~@2 f#1 b1@11 f#1",
  L: "b1@20 f#1 b1@2 f#1", M: "a#1 ~@2 a#1 ~@4 a#1 ~@2 f1 a#1@11 ~", N: "a#1",
  O: "e1 ~@2 e1 ~@2 f#1 ~@2 f#1 ~@2 g1 ~@2 g1 ~ b1@3 g1 e2@3", P: "g1 ~@2 g1 ~@2 a1 ~@2 a1 ~@2 a#1 ~@2 a#1@3 d2@6",
  Q: "f#2@6 c#2@6 f#1@7 ~@2 a#1@3, ~@10 f#1 ~", R: "b1@12 f#2@6 d2@5 ~",
  S: "[e1@2 ~@9 e1 e1@2 ~@6 f1 ~@2 f#1@2 ~@10 f#1 f#1@2 ~@6 f1@2 ~ e1@2 ~@10 e1 e1@3 ~@5 f1@2 ~ f#1@2 ~@10 f#1 f#1@3 ~@5 f1@2 ~ e1@2 ~@10 e1 e1@3 ~@5 f1 ~@2 f#1@2 ~@10 f#1 f#1@2 ~@6 f1 ~@2 e1@2 ~@10 e1 e1@2 ~@6 f1 ~@2 f#1]/7",
  T: "[~@11 f#1 f#1@8 f1@3 e1@7 b1@6 e2@6 b1@5 f#1]/2", U: "g1 a1 a#1 d2", V: "f#2@6 c#2@6 f#1@10 ~ f#1",
  W: "b1@2 f#1 b1", X: "[e1@19 ~ f#1 ~@2 g1@7 a1@6 a#1@12]/2", Y: "d2@23 a1", Z: "d1@9 ~@2 d1@2 ~@11",
  AA: "[d2@23 ~@19 a1@6, d1@47 ~]/2", AB: "[d1@34 ~ a1 ~@2 a1 d2@2 e2 f2@2 f#2 a1@2 ~]/2",
  AC: "b1 ~@2 b1@2 ~@3 b1@2 ~ f#1 b1@2 ~@9 f#1", AD: "b1 ~@2 b1 ~@4 b1 ~@2 f#1 b1@3 c#2@3 d2@3 b1@3",
  AE: "f#1 ~@2 f#1 ~@4 f#1 ~@2 e1 f#1@2 ~@9 f#2", AF: "f#1 ~@2 f#1 ~@4 f#1 ~@2 f#2 f#1@5 ~ c#2@6",
  AG: "e1 ~@2 e1@2 ~@3 b1@3 e1 e2@6 b1@5 f#1", AH: "g1@6 d2@6 g2@6 d2@5 ~", AI: "d2@6 a1@6 d1@6 d2@4 a1 a#1",
  AJ: "b1@11 f#2 b2@6 b1@5 ~", AK: "[e1 ~@2 e1@2 ~@3 e1 ~@2 e1 e1@7 ~ e2@3 g1@6 ~ a1@6 a#1@6 g2@6]/2",
  AL: "d2 ~@2 d2 ~@4 d2 ~@2 a1 d2@4 ~ d2 ~@2 a1@4", AM: "b1 ~@2 b1 ~@4 b1 ~@2 f#1 b1@3 ~@2 b1 ~@2 f#1@4",
  AN: "a#1 ~@2 a#1 ~@4 a#1 ~@2 f1 a#1@3 ~@2 a#1 ~@2 f1@4", AO: "[a#1@5 ~]/2",
})).s("gm_electric_bass_finger").gain(0.54)

// chords · electric guitar jazz
const electric_guitar_jazz = note(`<
  ~@5 A@8 B@2 C@2 D ~ E@2 ~@4 F G H I H J H K ~@6 L@2 B@2 C@2 D ~ E@2 ~@4 F G H I H J H K ~@10 M@2 N O P Q R S T U V W X
  ~@5
>`.pickRestart({
  A: "[[a3,c#4,f#4]@2 [a3,c#4,f#4] ~@3 [a3,c#4,f#4] ~ [a3,c#4,f#4] ~@2 [a3,c#4,f#4] ~@2 [a3,c#4,f#4] ~@2 [a3,c#4,f#4] ~@2 [a3,c#4,f#4] ~@2 [a3,c#4,f#4]@2 ~ [a3,c#4,f#4] ~@3 [a3,c#4,f#4]@2 [a3,c#4,f#4] ~@2 [a3,c#4,f#4] ~@2 [a3,c#4,f#4] ~@2 [a3,c#4,f#4] ~@2 [a3,c#4,f#4] ~@2 [a3,d4,f#4]@2 ~ [a3,d4,f#4] ~@3 [a3,d4,f#4]@2 [a3,d4,f#4] ~@2 [a3,d4,f#4] ~@2 [a3,d4,f#4] ~@2 [a3,d4,f#4] ~@2 [a3,d4,f#4] ~@2 [a3,d4,f#4]@2 ~ [a3,d4,f#4] ~@3 [a3,d4,f#4] ~ [a3,d4,f#4] ~@2 [a3,d4,f#4] ~@2 [a3,d4,f#4] ~@2 [a3,d4,f#4] ~@2 [a3,d4,f#4] ~@2 [a3,d4,f4]@3 [a3,d4,f4] ~@3 [a3,d4,f4] ~ [a3,d4,f4] ~@2 [a3,d4,f4] ~@2 [a3,d4,f4] ~@2 [a3,d4,f4] ~@2 [a3,d4,f4] ~@2 [a3,d4,f4]@3 [a3,d4,f4] ~@3 [a3,d4,f4] ~@4 [a3,d4,f4] ~@2 [a3,d4,f4] ~@2 [a3,d4,f4] ~@2 [a3,d4,f4] ~@2 [a3,c#4,f#4]@3 [a3,c#4,f#4] ~@3 [a3,c#4,f#4] ~ [a3,c#4,f#4] ~@2 [a3,c#4,f#4] ~@2 [a3,c#4,f#4] ~@2 [a3,c#4,f#4] ~@2 [a3,c#4,f#4] ~@2 [a3,c#4,f#4]@3 [a3,c#4,f#4] ~@3 [a3,c#4,f#4] ~@4 [a3,c#4,f#4]@2 ~@11]/8", // F#m D Dm F#m
  B: "[[a3,c#4,f#4] ~ [a3,c#4,f#4] ~@3 [a3,c#4,f#4] ~ [a3,c#4,f#4] ~@2 [a3,c#4,f#4] ~@2 [a3,c#4,f#4] ~@2 [a3,c#4,f#4] ~@2 [a3,c#4,f#4] ~@2 [a3,c#4,f#4]@2 ~ [a3,c#4,f#4] ~@3 [a3,c#4,f#4] ~ [a3,c#4,f#4] ~@2 [a3,c#4,f#4] ~@2 [a3,c#4,f#4] ~@2 [a3,c#4,f#4] ~@2 [a3,c#4,f#4] ~@2 [a3,c#4,f#4]]/2", // F#m
  C: "[[a3,d4,f#4] ~ [a3,d4,f#4] ~@3 [a3,d4,f#4] ~ [a3,d4,f#4] ~@2 [a3,d4,f#4] ~@2 [a3,d4,f#4] ~@2 [a3,d4,f#4] ~@2 [a3,d4,f#4] ~@2 [a3,d4,f#4]@2 ~ [a3,d4,f#4] ~@3 [a3,d4,f#4] ~ [a3,d4,f#4] ~@2 [a3,d4,f#4] ~@2 [a3,d4,f#4] ~@2 [a3,d4,f#4] ~@2 [a3,d4,f#4] ~@2 [a3,d4,f#4]]/2", // D
  D: "[a3,c4,f4]@2 [a3,c4,f4] ~@3 [a3,c4,f4] ~ [a3,c4,f4] ~@2 [a3,c4,f4] ~@2 [a3,c4,f4] ~@2 [a3,c4,f4] ~@2 [a3,c4,f4] ~@3", // F
  E: "[[a3,c#4,f#4] ~ [a3,c#4,f#4] ~@3 [a3,c#4,f#4] ~ [a3,c#4,f#4] ~@2 [a3,c#4,f#4] ~@2 [a3,c#4,f#4] ~@2 [a3,c#4,f#4] ~@2 [a3,c#4,f#4] ~@2 [a3,c#4,f#4]@2 ~ [a3,c#4,f#4] ~@3 [a3,c#4,f#4] ~ [a3,c#4,f#4] ~@2 [a3,c#4,f#4] ~@2 [a3,c#4,f#4] ~@2 [a3,c#4,f#4] ~@2 [a3,c#4,f#4] ~@3]/2", // F#m
  F: "~@2 e3 [b3,d4,g4,b4] ~@2 [b3,d4,g4,b4] ~@2 [b3,d4,g4,b4]@2 e3 [b3,d4,f#4,b4] ~ [b3,d4,g4,b4] ~@2 [b3,d4,g4,b4] ~@6", // G Bm G
  G: "~@2 f#3 [a3,c#4,g#4] ~ [a3,c#4,g#4] ~@2 f#3 [a3,c#4,g#4] ~ [a3,c#4,g#4] ~@2 f#3 [a3,c#4,g#4] ~ [a3,c#4,g#4] ~ f#3 [a3,c#4,g#4] ~@3", // Amaj7
  H: "~@2 e3 [b3,d4,g4,b4] ~ e3 [b3,d4,g4,b4] ~@2 [b3,d4,g4,b4] ~ e3 [b3,d4,f#4,b4] ~ [b3,d4,g4,b4] ~@2 [b3,d4,g4,b4] ~@6", // G Bm G
  I: "~@2 f#3 [a3,c#4,g#4] ~ [a3,c#4,g#4] ~@2 f#3 [a3,c#4,g#4] ~ [a3,c#4,g#4]@2 ~ f#3 [a3,c#4,g#4]@2 [a3,c#4,g#4] f#3 ~@5", // Amaj7
  J: "~@2 f#3 [a3,c#4,g#4] ~ [a3,c#4,g#4] ~@2 f#3 [a3,c#4,g#4] ~ [a3,c#4,g#4]@2 ~ f#3 [a3,c#4,g#4] ~ [a3,c#4,g#4] ~ f#3 ~@4", // Amaj7
  K: "~@2 f#3 [a3,c#4,g#4] ~ [a3,c#4,g#4] ~@2 f#3 [a3,c#4,g#4] ~ [a3,c#4,g#4] ~@2 f#3 [a3,c#4,g#4] ~ [a3,c#4,g#4] ~@2 [g#3,c4,g4]@3 ~", // Amaj7 G#maj7
  L: "[[a3,c#4,f#4]@2 [a3,c#4,f#4] ~@3 [a3,c#4,f#4] ~ [a3,c#4,f#4] ~@2 [a3,c#4,f#4] ~@2 [a3,c#4,f#4] ~@2 [a3,c#4,f#4] ~@2 [a3,c#4,f#4] ~@2 [a3,c#4,f#4]@2 ~ [a3,c#4,f#4] ~@3 [a3,c#4,f#4] ~ [a3,c#4,f#4] ~@2 [a3,c#4,f#4] ~@12]/2", // F#m
  M: "[[a3,d4,f#4]@2 [a3,d4,f#4] ~@3 [a3,d4,f#4] ~ [a3,d4,f#4] ~@2 [a3,d4,f#4] ~@2 [a3,d4,f#4] ~@2 [a3,d4,f#4] ~@5 [a3,d4,f#4]@2 ~ [a3,d4,f#4] ~@3 [a3,d4,f#4]@2 [a3,d4,f#4] ~@2 [a3,d4,f#4] ~@6 [a3,d4,f#4] ~@2 [a3,d4,f#4] ~@2]/2", // D
  N: "[a3,c#4,g#4] ~@5 [a3,c#4,g#4] ~ [a3,c#4,g#4] ~@2 [a3,c#4,g#4] ~@2 [a3,c#4,g#4] ~@2 [a3,c#4,g#4] ~@2 [a3,c#4,g#4] ~@2 [a3,c#4,f#4]", // Amaj7 F#m
  O: "[a3,c#4,f#4,g#4] ~ [a3,c#4,g#4] ~@3 [a3,c#4,g#4] ~ [a3,c#4,g#4] ~@6 [a3,c#4,g#4] ~ [a3,c#4,f#4] ~@2 [a3,c#4,g#4] ~@3", // F#m Amaj7 F#m Amaj7
  P: "[a3,d4,f#4] ~ [a3,d4,f#4] ~@3 [a3,d4,f#4] ~ [a3,d4,f#4] ~@2 [a3,d4,f#4] ~@2 [a3,d4,f#4] ~@2 [a3,d4,f#4] ~@2 [a3,d4,f#4] ~@2 [a3,f#4]", // D
  Q: "[a#3,d4,g4] ~ [a#3,d4,g4] ~@3 [a#3,d4,g4] ~ [a#3,d4,g4] ~@2 [a#3,d4,g4] ~@2 [a#3,d4,g4] ~@3 [a#3,d4,g4] ~@2 [a#3,d4,g4] ~@2", // Gm
  R: "[a3,c#4,f#4] ~ [a3,c#4,f#4] ~@3 [a3,c#4,f#4] ~ [a3,c#4,f#4] ~@2 [a3,c#4,f#4] ~@2 [a3,c#4,f#4] ~@2 [a3,c#4,f#4] ~@2 [a3,c#4,f#4] ~@3", // F#m
  S: "[a3,c#4,f#4] ~ [a3,c#4,f#4] ~@3 [a3,c#4,f#4] ~ [a3,c#4,f#4] ~@2 [a3,d#4,g4] ~@2 [a3,d#4,g4] ~@2 [a3,d#4,g4] ~@2 [a3,d#4,g4]@2 ~@2", // F#m Am7b5
  T: "[b3,d4,f#4] ~ [b3,d4,f#4] ~@3 [b3,d4,f#4] ~ [b3,d4,f#4] ~@3 [b3,d4,f#4] ~ [b3,d4,f#4] ~@2 [b3,d4,f#4] ~@2 [b3,d4,f#4] ~@2 [a#3,d4,g4]", // Bm Gm
  U: "~@3 [a#3,d4,g4] ~ [a#3,d4,g4] ~@3 [a#3,d4,g4] ~ [a#3,d4,g4] ~@3 [a#3,d4,g4] ~ [a#3,d4,g4] ~@3 [a#3,d4,g4] ~@2", // Gm
  V: "[a3,c#4,f#4] ~ [a3,c#4,f#4] ~@3 [a3,c#4,f#4] ~ [a3,c#4,f#4] ~@3 [a3,c#4,f#4] ~ [a3,c#4,f#4] ~@2 [a3,c#4,f#4] ~@2 [a3,c#4,f#4] ~@3", // F#m
  W: "[a3,d4,f#4] ~ [a3,d4,f#4] ~@3 [a3,d4,f#4] ~ [a3,d4,f#4] ~@3 [a3,d4,f#4] ~ [a3,d4,f#4] ~@2 [a3,d4,f#4] ~@2 [a3,d4,f#4] ~@3", // D
  X: "~@3 [a#3,d4,g4] ~ [a#3,d4,g4] ~@3 [a#3,d4,g4] ~@2 [a#3,d4,g4] ~ [a#3,d4,g4] ~@2 [a#3,d4,g4] ~@2 [a#3,d4,g4] ~@3", // Gm
})).s("gm_electric_guitar_jazz").gain(0.13).pan(0.8)

// other · electric guitar muted
const electric_guitar_muted = note(`<
  ~@25 A B@2 C@2 B@2 ~@5 A ~@15 A B@2 C@2 B@2 ~@5 A ~@5 D ~ E ~ F@2 G H ~@10
>`.pickRestart({
  A: "d3@3 b2 ~@2 d3 ~@2 b2 ~@2 d3@3 b2 ~ f#3 ~@6", B: "[~@23 d3@4 b2 ~@2 d3 ~@2 b2 ~@2 d3@2 ~ b2 ~ f#2 ~@6]/2",
  C: "[~@23 d3@4 b2 ~@2 d3 ~@2 b2 ~@2 d3@3 b2 ~ f#3 ~@6]/2", D: "c#4 ~@2 d4 ~ c#4 ~@2 d4 ~@2 c#4 ~@12",
  E: "c#4 ~@2 d4 ~ e4 ~@2 d4 ~@2 c#4 ~@12", F: "d4 ~@2 e4 ~ d4 ~@2 e4 ~@2 d4 ~@12",
  G: "c#4 ~@2 d4 ~ c#4 ~@2 d4 ~@2 c#4 ~@8 e3 f#3@2 a3", H: "b3@2 b3 ~@2 a3 b3 ~@2 a3 ~ b3@2 ~@11",
})).s("gm_electric_guitar_muted").gain(0.27).pan(0.2)

// chords · string ensemble 2
const string_ensemble_2 = note("<~@71 A@2 B@2 C D E@2 ~@4 F@3 ~@3>".pickRestart({
  A: "[[c#4,d4,f#4,a4]@5 ~]/2", B: "[~@2 [a3,c#4,e4,g#4]@39 ~@7]/2", C: "~ [g3,d4,f#4]@11",
  D: "~ [a#3,f4,a4]@10 ~, d4@5 ~", E: "[~@2 [a3,c#4,e4,f#4]@27 ~@19]/2", F: "[~@12 [a#3,c5,d5,g5]@49 ~@11]/3",
})).s("gm_string_ensemble_2").gain(0.29)

// bass · slap bass 2
const bass_2 = note("<~@26 A ~@3 B ~@23 A ~@3 B ~@30>".pickRestart({
  A: "~ f#2 ~@10", B: "~@2 f#2 ~@21",
})).s("gm_slap_bass_2").gain(0.6)

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

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

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~@6 A ~ B ~ C D E ~@9 F ~ G ~@7 H ~@6 B ~@10 F ~ G ~@7 H ~@9 I ~@3 D J ~@13
>`.pickRestart({
  A: "~@19 x!5", B: "~@21 x!3", C: "~@10 x!2 ~@12", D: "~@22 x!2", E: "~@2 x!2 ~@20", F: "~@20 x!4", G: "~@15 x!3 ~@6",
  H: "~@8 x!4 ~@12", I: "~@9 x!3 ~@12", J: "x",
})).gain(0.12)

// drums · low tom
const low_tom = s("lt").struct("<~@12 A ~@5 B ~ C ~@15 D ~@9 B ~ C ~@15 D ~@3 B ~@20>".pickRestart({
  A: "~@8 x!2 ~@14", B: "~@3 x", C: "~@21 x ~ x", D: "~@18 x ~ x!2 ~ x",
})).gain(0.54)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@5 A B C D E F C G H I J@2 K ~ L M N O P Q R S T U R S T U V W X Y Z AA AB AC H I J@2 K ~ L M N O P Q R S T U R S T U
  V W X Y Z AA AD AE AF AG AH I AI AJ AK@2 AL AM AN AO L AP AQ ~@5
>`.pickRestart({
  A: "x ~@2 x ~@2 x ~@2 x ~ x!2 ~@5 x ~@2 x ~ x", B: "x ~@5 x ~@2 x ~ x!2 ~@2 x ~@8",
  C: "x ~@2 x ~ x!2 ~@2 x ~ x!2 ~@5 x ~@2 x ~ x", D: "x ~@5 x ~@2 x ~ x!2 ~@5 x ~@2 x ~ x",
  E: "x ~@5 x ~@2 x ~@2 x ~@5 x ~@2 x ~ x", F: "x ~ x!6", G: "x!5 ~@3",
  H: "x ~@2 x ~ x!2 ~ x!2 ~@2 x ~ x!2 ~ x!2 ~ x ~@3", I: "x ~ x ~@3 x ~ x!2 ~ x!2 ~ x ~@3 x ~ x!2 ~ x",
  J: "x ~ x!2 ~@2 x ~ x!2 ~ x!2 ~ x ~@3 x ~ x!2 ~ x", K: "x ~ x ~@3 x ~@2 x ~ x!2 ~ x!2 ~@2 x ~@4 x",
  L: "x ~@2 x ~@2 x ~ x!2 ~ x!2 ~ x ~@3 x ~ x!2 ~ x", M: "x ~ x ~@3 x ~ x!2 ~ x!2 ~ x ~@3 x ~@5",
  N: "x ~@2 x ~ x ~@3 x ~ x!2 ~@2 x ~@4 x!2 ~ x", O: "~@3 x ~@2 x ~ x!2 ~ x ~@3 x ~@8",
  P: "~@2 x!2 ~@5 x ~@2 x ~@2 x ~@5 x ~ x", Q: "~@3 x ~ x ~@3 x ~ x ~@5 x ~@2 x ~@2 x",
  R: "x ~ x!2 ~@2 x ~ x!2 ~@2 x ~ x ~@3 x ~@2 x ~@2", S: "x ~@2 x ~ x!2 ~@2 x ~ x!2 ~ x ~@3 x ~@2 x ~@2",
  T: "~@3 x ~ x!2 ~ x!2 ~@2 x ~@5 x ~@2 x ~@2", U: "x ~@2 x ~ x!2 ~@2 x ~ x!2 ~@5 x ~@3 x ~",
  V: "~ x ~@4 x ~@5 x ~@5 x ~@5", W: "x!4", X: "x ~@2 x ~ x!2 ~@2 x ~ x!2 ~@2 x ~ x!2 ~@2 x ~@2",
  Y: "x ~@2 x ~ x!2 ~@2 x ~@2 x ~@11", Z: "x ~@2 x ~ x!2 ~@2 x ~ x!2 ~@5 x ~@2 x ~@2",
  AA: "x ~@2 x ~ x!2 ~@2 x ~ x!2 ~@2 x ~ x!2 ~@5", AB: "x!3 ~ x!4", AC: "x ~@2 x ~@2 x ~@2 x ~ x ~@12",
  AD: "x ~@5 x ~@2 x ~@2 x ~@2 x ~ x!2 ~@5", AE: "x ~@2 x ~ x!2 ~@2 x ~ x!2 ~@2 x ~@2 x ~@5",
  AF: "x ~@2 x ~ x!2 ~ x!2 ~@2 x ~@2 x ~ x!2 ~@5", AG: "x ~@2 x ~ x!2 ~@17",
  AH: "x ~ x!2 ~ x!2 ~ x ~@2 x!2 ~@5 x ~@4 x", AI: "x ~ x ~@3 x ~ x!2 ~ x!2 ~ x ~@3 x ~ x ~@2 x",
  AJ: "x ~ x ~@3 x ~ x!2 ~@2 x ~ x!2 ~ x ~@6", AK: "x ~ x ~@3 x ~ x ~@2 x!2 ~ x ~@3 x ~ x!2 ~ x",
  AL: "x ~ x ~@3 x ~ x!2 ~ x!2 ~ x ~@3 x ~@2 x ~ x", AM: "x ~ x ~@3 x ~ x!2 ~ x!2 ~@2 x ~ x ~@6",
  AN: "x ~@2 x ~ x!2 ~@2 x ~ x!2 ~@5 x ~ x ~@2 x", AO: "~@3 x ~ x!2 ~@5 x ~@2 x ~ x!2 ~@5",
  AP: "x ~ x ~@3 x ~ x!2 ~ x!2 ~@5 x ~@2 x ~ x", AQ: "x ~ x ~@3 x ~ x!2 ~ x!2 ~@5 x ~ x!2 ~ x",
})).gain(0.42)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@5 A ~@3 B@2 ~@2 C ~@3 D ~ C ~ E ~ F ~@3 G H ~@2 G H ~@6 I ~ C ~@3 D ~ C ~ E ~ F ~@3 G H ~@2 G H ~@6 J K ~@2 L ~ M B
  N ~ O P ~@3 O ~@6
// … 50 more lines

More by Daniele