Strudelify
So che mi perdonerai cover art

1997 · D'Amore E Altre Storie

So che mi perdonerai

Nomadi

KeyA majorTempo131 bpm
0:00/0:00
// So che mi perdonerai — Nomadi
// 131 bpm, 4/4, key A 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 106 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(131/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 · fretless bass
const bass = note(`<
  A@6 ~@19 B C D E F G@2 C D E H I J E K L M N@2 O@5 P@3 Q R@3 S@2 T U V@6 W@5 X@2 Y Z L AA@7 AB AC@3 AD AE@2 AF AG AH
  AI@5 AJ@3 AK AL@3 ~
>`.pickRestart({
  A: "[~@21 a2@18 e2@6 a2@19 a1@6 d2@24 ~ f#2@7 g#2@7 a2@7 b2@6 ~@22]/6", B: "e3@3 d3@6 b2@5 ~ e2@3 f#2@3 g#2@3",
  C: "a2@18 e2@5 ~", D: "a2@4 a2 a1 b1 c#2", E: "d2@3 a2", F: "d3@3 e2",
  G: "[a2@5 ~ a2@4 ~@2 a2@10 ~ a2@3 ~ g2@5 ~ e2@5 ~ e2@2 ~ g2@5 ~]/2", H: "d3@3 d2", I: "e2@17 ~ b2@6",
  J: "e3@18 e2@5 ~", K: "d3@17 ~ d2@6", L: "a2", M: "~@6 e2@5 ~ f#2@5 ~ c#2@5 ~", N: "[e2@11 ~]/2",
  O: "[d2@8 f2 ~@2 f2@3 g2@5 ~ a2@2 c2@8 ~ e2@5 ~ f2@4 ~ g2@2 ~ c2@8 e2@2 ~ e2@2 ~ f2@5 g2@2 ~ d2@8 ~ f2@5 g2@5 ~ a2@3 d2@8 f2 ~@2 f2@3 g2@5 a2@2 ~ c2@8]/5",
  P: "[~ e2@5 f2@4 ~ g2@2 ~@2 c3@2 ~ c3@5 a#2@5 ~ g2@5 c2@2 ~ d2@8 ~ f2@5 g2@5 a2@3 d2@8 ~ f2 ~ f2@2]/3",
  Q: "~@2 g2@5 a2@2 ~ c2@8 ~ e2@5",
  R: "[f2@4 ~ g2@2 ~@2 c2@5 g2@2 ~ c3@5 ~ a#2@5 g2@2 ~ d2@8 ~ f2@5 g2@5 a2@3 d2@8 ~ f2 ~ f2@3 g2@5]/3",
  S: "[~ a2@2 ~ c2@8 e2@5 ~ f2@4 ~ g2@2 ~ c2@2 ~ c3@5 ~ a#2@5 g2@5 ~ c2@2]/2", T: "~ d2@7 ~@2 d2@2 ~ d2@10 ~",
  U: "e2@23 ~",
  V: "[~@23 a2@18 e2@5 ~ a2@12 a2@3 a1@3 b1@3 c#2@3 d2@18 a2@6 d3@18 e2@6 a2@5 ~ a2@4 ~@2 a2@10 ~@2 a2]/6",
  W: "[~@3 g2@5 ~ e2@5 e2@2 ~ g2@5 ~ a2@18 e2@5 ~ a2@12 a2@3 a1@3 b1@3 c#2@3 d2@18 a2@6 d3@18 d2@6 ~]/5",
  X: "[e2@17 b2@6 e3@18 e2@5 ~@2]/2", Y: "d2@17 a2@7", Z: "d3@17 d2@6 ~",
  AA: "[~@6 e2@5 ~ f#2@5 c#2@5 ~ e2@44 ~@4 d2@8 ~ f2 ~ f2@3 g2@5 ~ a2@2 ~ c2@8 e2@5 ~ f2@4 ~ g2@2 ~ c2@9 e2@2 e2@2 ~ f2@5 ~ g2@2 ~ d2@8 f2@5 ~ g2@5 a2@3 d2@7]/7",
  AB: "~@2 f2 ~ f2@3 g2@5 ~ a2@2 ~ c2@8",
  AC: "[e2@5 ~ f2@4 ~ g2@2 ~ c3@2 ~ c3@5 a#2@5 ~ g2@5 ~ c2@2 ~ d2@8 f2@5 ~ g2@5 a2@3 d2@8 f2 ~@2 f2@2]/3",
  AD: "~ g2@5 ~ a2@2 c2@8 ~ e2@5 ~", AE: "[f2@4 ~ g2@2 ~ c2@6 g2@2 c3@5 ~ a#2@5 ~ g2@2 d2@8 ~ f2@5 g2@4]/2",
  AF: "~@2 a2@3 d2@8 f2 ~@2 f2@3 g2@5", AG: "a2@2 ~ c2@8 ~ e2@5 f2@4 ~ g2@2", AH: "~@2 c2@2 ~ c3@5 a#2@5 ~ g2@5 c2@2 ~",
  AI: "[d2@7 ~@2 d2@2 ~ d2@10 ~ d2@8 f2 ~ f2@3 g2@5 ~ a2@2 ~ c2@8 ~ e2@5 f2@4 ~ g2@2 ~ c2@9 e2@2 ~ e2@2 f2@5 ~ g2@2 ~ d2@8 ~ f2@5 g2@5 a2@3 d2@8]/5",
  AJ: "[~ f2 ~ f2@3 g2@5 ~ a2@2 ~ c2@8 e2@5 ~ f2@4 ~ g2@2 ~ c3@2 ~ c3@5 ~ a#2@5 g2@5 ~ c2@2 ~ d2@8 f2@4]/3",
  AK: "~@2 g2@5 a2@3 d2@8 ~ f2 ~ f2@3",
  AL: "[g2@5 ~ a2@2 ~ c2@8 e2@5 ~ f2@4 ~ g2@2 ~ c2@6 g2@2 ~ c3@5 a#2@5 ~ g2@2 ~ d2@8 f2@5 ~ g2@4]/3",
})).s("gm_fretless_bass").gain(0.54)

// chords · string ensemble 2
const string_ensemble_2 = note(`<
  A@6 ~@4 B C@2 ~@13 D@6 E@4 F@6 G@2 H@8 I@6 J@7 K@7 L@4 M@2 N@8 O@7 P@8 Q@4 ~
>`.pickRestart({
  A: "[~@20 [e5,e6]@30 ~ [d5,d6]@5 ~ [d5,d6]@6 ~ [c#5,c#6]@5 ~ [c#5,c#6]@6 [f#4,f#5]@17 ~ [f#3,f#4]@6 ~ [g#3,g#4]@6 ~ a4@6 ~ [b3,b4]@7 ~@22]/6", // E D C# F# G# B
  B: "~@2 [f#3,f#5] [g#3,g#5]", C: "[a5@7 [b3,b5]@6 [e3,e5]@25 ~@10]/2",
  D: "[[e3,c#5]@36 d5@6 c#5@6 a4@35 b4@6 a4@6 ~ [c#4,e4]@48, a3@143 ~, e4 d4 ~]/6", // C#m
  E: "[c#5@36 d5@11 ~ a4@41 b4@7, a3@95 ~, e4@47 ~ d4@48]/4",
  F: "[[e3,e4,g#4]@24 a4@4 b4@4 c#5@4 d5@4 ~ e5@4 ~@27 d5@4 e5@5 f#5@4 g#5@5 a5@6 ~ a5@29 [e3,e4]@6 [f#3,f#4]@6 [c#3,c#4]@6, b3@8 a3@13 ~@3, ~@24 [e3,e4]@23 [d3,d4]@49 ~@48, ~@45 d5@26 ~@25 a4@29 ~@19]/6", // E F# C# E D
  G: "[[e3,e4]@3 ~]/2", // E
  H: "[[d5,f5,a5]@22 [c5,e5,g5]@45 [d5,f5,a5]@22 ~ [d5,f5,a5]@22 [c5,e5,g5]@45 [d5,f5,a5]@22 [d5,f5,a5]@13]/8", // Dm C Dm C Dm
  I: "[~@10 [c5,e5,g5]@45 [d5,f5,a5]@22 [d5,f5,a5]@22 ~ [c5,e5,g5]@44]/6", // C Dm C
  J: "[~ [d5,f5,a5]@22 [e5,g#5,b5]@47 ~ c#5@6 d5@6 c#5@5 d5@6 e5@13 f#5@12 a5@24 b5@11 d6@11 ~@2 c#6]/7", // Dm E
  K: "[~@5 d6@6 c#6@5 b5@6 ~ a5@24 c#5@5 ~ d5@5 c#5@6 d5@6 e5@12 ~ f#5@11 ~ a4@23 ~ a4@6 g#4@5 ~ a4@6 b4@6 g#4@23 ~ a5]/7",
  L: "[~@4 b5@4 c#6@4 d6@5 e6@6 d6@18 d6@6 e6@6 f#6@6 g#6@6 a6@5 ~ a6@24 ~]/4",
  M: "[~@5 [e3,e6]@6 [f#3,f#6]@6 [c#3,c#6]@6 [e3,e6]@25]/2", // E F# C# E
  N: "[~@23 [f5,a5]@22 [e5,g5]@45 [f5,a5]@22 ~ [f5,a5]@22 [e5,g5]@45 [f5,a5]@12]/8", // F Em F Em F
  O: "[~@11 a5@11 d6@11 [e5,g5,c6]@45 [f5,a5]@22 [f5,a5]@22 ~ [c5,e5,g5]@45, ~@11 f5@22 ~@135]/7", // C F C
  P: "[[d5,f5,a5]@22 [d5,f5,a5]@22 ~ [c5,e5,g5]@45 [d5,f5,a5]@22 [d5,f5,a5]@22 ~ [c5,e5,g5]@45 [d5,f5,a5]@12]/8", // Dm C Dm C Dm
  Q: "[~@10 [d5,f5,a5]@22 [c5,e5,g5]@45 [d5,f5,a5]@19]/4", // Dm C Dm
})).s("gm_string_ensemble_2").gain(0.33).pan(0.1)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note("<~@17 A@3 B@2 ~@84>".pickRestart({
  A: "[~@22 [e2,e3,g#3]@12 [b2,e3,g#3,b3]@12 [b2,g#3,b3,e4]@13 [b2,e3,g#3,b3,e4]@10 [e2,a2,d3,a3,d4,f#4] ~ [a2,d3,a3], ~@46 e2@23 ~ d4@2]/3", // E D D5
  B: "[[a2,d3,a3,d4,f#4]@3 ~]/2", // D
})).s("gm_acoustic_guitar_steel").gain(0.26)

// chords · acoustic guitar steel · soft notes
const acoustic_guitar_steel_2 = note("<~@17 A@3 ~@86>".pickRestart({
  A: "[~@22 [b2,b3]@12 e2@12 e3@13 ~@11 f#4@2]/3", // B
})).s("gm_acoustic_guitar_steel").gain(0.12)

// chords · synth brass 1
const synth_brass_1 = note("<~@44 A@7 B@7 C@3 ~@10 D@5 ~@11 E F@4 G@3 H@2 I@2 J@3 K L M ~>".pickRestart({
  A: "[[d3,f4,a4]@22 e4@45 [d3,f4]@22 ~ [d3,f4,a4]@22 [e4,g4]@45 [d3,f4,a4]@11, ~@22 g3@43 ~@47 g3@43 ~@13]/7", // Dm Em Dm
  B: "[~@23 [a3,d4]@10 ~ [g3,e4]@32 ~@2 [g3,e4]@10 ~ [d5,f5]@22 ~@12 [a3,f4]@11 [e5,g5]@21 ~@13 [c4,g4]@10, ~@12 [d5,f5]@21 ~ [c5,e5]@44 ~ [a3,f4]@33 ~@12 [c4,g4]@32 ~@12, ~@102 [d5,f5,a5]@21 ~@23 [e5,g5]@21 ~]/7", // D5 C Dm Em C5 Dm C Dm …
  C: "[~ [d4,a4,f5,a5]@22 [e3,e4,e5,b5]@47 ~@2]/3", D: "[e2@46 ~ d2@47 ~ a2@24 ~]/5", E: "~@21 [e5,g5] ~ [e5,g5]",
  F: "[~@2 [e5,g5] ~@5 [e5,g5]@21 ~@7 d5 ~@2 e5 ~ f5@3 e5@2 ~ d5@2 a4@2 ~ d5@22 ~ c5@6 c5 ~@2 d5 ~ e5@2 ~ d5 ~@2 c5 ~ g4@2]/4", // Em
  G: "[~@2 g5 ~@2 g5 ~ g5 ~@2 g5 ~@2 g5@4 ~ a5@2 ~ a5@9 d5 ~ e5 ~@2 f5@2 e5@2 ~@2 d5 ~ a4 ~@3 d5@24 ~, ~ c5@23 ~@48]/3",
  H: "[~@3 c5 ~ d5 ~@2 e5@3 d5@2 c5 ~@2 g4@2 ~ c5@23 ~@6]/2",
  I: "[d5 ~ e5 ~@2 f5@3 ~@3 d5 ~ a4 ~@2 d5@24 ~@5 c5 ~ d5]/2",
  J: "[~@2 e5@3 ~@3 c5 ~@2 g4 ~ c5@22 ~@7 d5 ~ e5 ~@2 f5@2 e5@2 ~ d5@3 ~@3 f5 ~@5 d5 ~@2 e5 ~@2 f5 ~]/3",
  K: "e5 ~@2 d5@4 ~@8 e5 ~ f5 ~@2 g5 ~@2 f5, ~@9 g5@11 ~@4", L: "~@2 e5@3 ~@2 g5 ~@16", M: "~@5 a5@19",
})).s("gm_synth_brass_1").gain(0.15).pan(0.2)

// chords · synth brass 1 · soft notes
const synth_brass_1_soft = note("<~@44 A@8 ~@45 B ~ C ~@6>".pickRestart({
  A: "[d4@22 [c4,g4]@45 [d4,a4]@22 ~ d4@22 c4@45 d4@22 ~@13]/8", B: "~@7 e5@3 ~@14", C: "~@5 d5@3 ~@16",
})).s("gm_synth_brass_1").gain(0.08).pan(0.2)

// chords · church organ
const church_organ = note("<A@5 B@8 C@8 ~ D@4 ~@2 E@2 F@2 G@8 H@8 I@8 J@2 K@8 L@8 M@4 N@7 O@8 P@8 Q@4 ~>".pickRestart({
  A: "[~@21 [c#6,e6]@49 [d6,f#6]@50, ~@7 a5@33]/5", B: "[~@53 [d5,f#5]@25 ~ [c#5,e5]@17, ~ a4@47]/8",
  C: "[~@68 [d5,f#5]@49 ~ [b4,e5,g#5]@49 [a4,d5,f#5]@25, ~@17 c#5@175, ~@17 [a4,e5]@101 ~@74]/8", // D E D A5
  D: "[c#5@47 ~ [b4,e5,g#5]@47 ~, a4]/4", E: "[[d5,f#5]@47 ~]/2", F: "[c#5,e5]/2",
  G: "[~@48 d5@47 ~ [b4,e5,g#5]@48 [a4,d5,f#5]@48, c#5, [a4,e5] ~]/8", // E D A5
  H: "[c#5@47 ~@49 [d5,f5,a5]@21 ~ [c5,e5,g5]@45 [d5,f5,a5]@29, a4]/8", // Dm C Dm
  I: "[~@17 c5@43 ~ [d5,f5,a5]@23 [d5,f5,a5]@21 ~ [c5,e5,g5]@45 [d5,f5,a5]@41, ~@4 [e5,g5]@11 ~@33]/8", // Dm C Dm Em
  J: "[~ [c5,e5,g5]@11]/2", K: "[~ [d5,f5,a5]@22 [e5,g#5,b5]@48 [c#5,e5]@48 [d5,f#5]@47 ~ [c#5,e5]@25, ~@71 a4@121]/8",
  L: "[~@71 [d5,f#5]@47 ~ [b4,e5,g#5]@48 [a4,d5,f#5]@25, ~@23 c#5@169, ~@23 a4@96 ~@73]/8", // D E D
  M: "[~@23 [c#5,e5]@47 ~ [b4,e5,g#5]@25, ~@23 a4 ~@72]/4", // C#m E
  N: "[~@23 [d5,f5,a5]@21 ~@2 [c5,e5,g5]@44 ~ d5@44 ~ c5@32, ~@30 [f5,a5]@15 [e5,g5]@11]/7", // Dm C F Em
  O: "[~@12 [d5,f5,a5]@23 [d5,f5,a5]@21 ~ [c5,e5,g5]@45 [d5,f5,a5]@45 ~ c5@43 ~, ~@147 [e5,g5]@44 ~]/8", // Dm C Dm Em
  P: "[[d5,f5,a5]@23 [d5,f5,a5]@21 ~ [c5,e5,g5]@45 [d5,f5,a5]@45 [c5,e5,g5]@44 ~ [d5,f5,a5]@12]/8", // Dm C Dm C Dm
  Q: "[~@10 [d5,f5,a5]@21 ~@2 [c5,e5]@44 ~ d5@18, ~@32 g5@45 [f5,a5]@19]/4", // Dm C F
})).s("gm_church_organ").gain(0.13).pan(0.9)

// chords · church organ · soft notes
const church_organ_soft = note("<~@5 A@5 ~@12 B@2 ~@2 C@6 ~@2 D@2 ~@4 B@2 E@2 ~@22 F@5 ~@35>".pickRestart({
  A: "[~@2 [c#5,e5]@51 ~@7]/5", B: "[e5@23 ~]/2", C: "[[c#5,e5] ~@2, a4]/6", D: "[f#5@47 ~]/2",
  E: "[[b4,e5,g#5]@3 ~]/2", F: "[~@23 e5@96 ~]/5",
})).s("gm_church_organ").gain(0.08).pan(0.9)

// chords · piano
const piano = note(`<
  A@5 B@6 C@2 D@8 E F G H I F G E J K L F G E J H@2 E@2 F G H M ~@14 N@2 O@7 P@8 Q@4 ~@27
>`.pickRestart({
  A: "[~@21 [a3,c#4,e4]@44 ~@5 [d1,d2,d4,f#4,a4]@23 ~@2 f#4@7 g#4@6 a4@8 b4@4, ~@21 a1@25 ~@49 d4@25]/5", // A D
  B: "[~@4 [c#4,e4,a4]@11 ~@2 [c#4,e4,a4]@11 ~@2 [c#4,e4,a4]@12 ~ [c#4,a4]@12 [c#4,e4,a4]@11 ~@2 [c#4,e4,a4]@11 ~@2 [c#4,e4,a4]@12 ~ [c#4,a4]@12 [d4,f#4,a4]@11 ~@2 [d4,f#4,a4]@11 ~@2 [d4,f#4,a4]@11 ~, ~@43 e4@10 ~@41 e4@10 ~@40]/6", // A F#m A F#m D
  C: "[~ [d4,f#4,a4]@11 ~@2 [c#4,e4,a4]@12 [c#4,e4,a4]@11 ~@2 [c#4,e4,a4]@9]/2", // D A
  D: "[~@4 [c#4,e4,a4]@11 ~@2 [c#4,e4,a4]@11 ~@2 [c#4,e4,a4]@11 ~ [c#4,e4,a4]@12 ~ [c#4,a4]@12 ~ [d4,f#4,a4]@11 ~ [d4,f#4,a4]@11 ~@2 [d4,f#4,a4]@11 ~ [d4,f#4,a4]@11 ~@2 [e4,g#4,b4]@12 [e4,g#4,b4]@12 ~ [e4,g#4,b4]@12 [e4,g#4,b4]@12 [d4,f#4,a4]@11 ~ [d4,f#4,a4]@11 ~@2, ~@55 e4@10 ~@127]/8", // A F#m D E D
  E: "[d4,f#4,a4]@11 ~ [d4,f#4,a4]@11 ~", F: "[c#4,e4,a4]@5 ~ [c#4,e4,a4]@5 ~", G: "[c#4,e4,a4]@11 ~ [c#4,e4,a4]@11 ~",
  H: "[e4,g#4,b4]@11 ~ [e4,g#4,b4]@11 ~", I: "[e4,g#4,b4]@5 ~ [e4,g#4,b4]@5 ~", J: "[d4,f#4,a4]@5 ~ [d4,f#4,a4]@5 ~",
  K: "[c#4,e4,a4]@11 ~ [c#4,e4,a4]@10 ~@2", L: "[c#4,e4,a4]@10 ~@2 [c#4,e4,a4]@11 ~", M: "[e4,g#4,b4]@5 ~@7",
  N: "[~@23 [e4,g#4,b4]@10 ~@3 [e4,g#4,b4]@9 ~@2 e4]/2", // E
  O: "[[g#4,b4]@10 ~ [e4,g#4,b4]@11 ~ [c#4,e4,a4]@10 ~@2 [c#4,e4,a4]@10 ~@2 [c#4,e4,a4]@11 ~ [c#4,e4,a4]@11 ~ [d4,f#4,a4]@11 ~ [d4,f#4,a4]@11 ~ [d4,f#4,a4]@10 ~@2 [d4,f#4,a4]@10 ~@2 [c#4,e4,a4]@11 ~ [c#4,e4,a4]@10 ~@2 [c#4,e4,a4]@10 ~@2 [c#4,e4,a4]@11 ~ [c#4,e4,a4]]/7", // G#m E A D A
  P: "[~@11 [c#4,e4,a4]@10 ~@2 [c#4,e4,a4]@11 ~ [c#4,e4,a4]@11 ~ [d4,f#4,a4]@11 ~ [d4,f#4,a4]@11 ~ [d4,f#4,a4]@10 ~@2 [d4,f#4,a4]@10 ~@2 [e4,g#4,b4]@11 ~ [e4,g#4,b4]@11 ~ [e4,g#4,b4]@11 ~ [e4,g#4,b4]@11 ~ [d4,f#4,a4]@11 ~ [d4,f#4,a4]@11 ~ [d4,f#4,a4]@11 ~ [d4,f#4,a4]@11 ~ [c#4,e4,a4]]/8", // A D E D A
  Q: "[~@11 [c#4,e4,a4]@10 ~@2 [c#4,e4,a4]@11 ~ [c#4,e4,a4]@11 ~ [e4,g#4,b4]@11 ~ [e4,g#4,b4]@11 ~ [e4,g#4,b4]@10 ~@15]/4", // A E
})).s("gm_piano").gain(0.22).pan(0.9)

// chords · string ensemble 1
const string_ensemble_1 = note("<~@79 A@7 B@5 C@7 D@7 ~>".pickRestart({
  A: "[d3@22 c3@44 ~ d3@8 e3@3 ~@2 e3@3 d3@3 a2@3 d3@22 ~ c3@45 d3@8 e3@3, ~@39 f3@2 ~@43]/7",
  B: "[f3@2 e3@3 d3@3 e3@3 d3@22 ~ c3@44 d3@8 e3@3 f3@3 e3@3 d3@3 e3@3 a6@2 ~ a6 ~ a6 ~@2 a6 ~@2 a6@4 ~ g6@2 ~, ~@101 d3@19]/5",
  C: "[~@25 g6 ~@2 g6 ~@2 g6 ~@2 g6 ~@2 g6@4 ~ a6 ~@5 d3@8 e3@3 f3@3 e3@2 d3@3 e3@3 a6 ~@2 a6 ~@2 a6 ~@2 a6 ~@2 a6@4 ~ g6 ~@27 g6 ~@2 g6 ~@2 g6 ~@2 g6 ~ g6@4 ~@2 a6 ~@27 a6 ~@2 a6 ~@2 a6 ~, g6@22 ~@23 a6@21 ~@24 g6@22 ~@23 a6@21 ~@12, ~@4 c3@45 ~@22 d3@22 e3@45 f3@30]/7",
  D: "[a6 ~@2 a6@4 ~@2 g6 ~@28 g6 ~@2 g6 ~ g6 ~@2 g6 ~@2 g6@4 ~ a6 ~@5 a3@22 a6 ~@2 a6 ~@2 a6 ~@2 a6 ~@7 g6 ~@27 g6 ~@2 g6 ~@2 g6 ~ g6 ~@2 g6@3 ~@3 a6 ~@4 f3@19, ~@12 g6@23 ~@22 a6@21 ~@15 a6@3 ~@6 g6@23 ~@22 a6@21, ~@15 g3@45 ~@22 a3@11 ~ d3@10 e3@46 ~@18]/7",
})).s("gm_string_ensemble_1").gain(0.43).pan(0.6)

// drums · kick
const kick = s("bd").struct(`<
  A B C D E F ~@20 G H I J G K L M H J G K G H I N O ~ P Q R S T U V W X Y Z AA AB AC AD ~@5 AE D AF AG AH AI AJ D AF D
  AI AK AL ~ AE 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 ~
>`.pickRestart({
  A: "~@7 x", B: "~@5 x ~ x", C: "x ~@7 x ~@2 x", D: "~@17 x ~@5 x", E: "~@5 x ~@6 x ~@7 x ~@3", F: "~ x ~@4",
  G: "x ~@2 x", H: "x ~@4 x ~ x", I: "x ~@5 x!2", J: "x ~ x ~@2 x ~ x", K: "x!2 ~ x ~ x ~ x", L: "x!2 ~ x",
  M: "~ x ~@2 x ~@2 x", N: "x!4", O: "x", P: "x ~@3 x ~@2 x ~@3 x", Q: "~@7 x ~@4 x ~@5 x ~@2 x ~@2",
  R: "~@5 x ~@5 x ~@7 x ~@4", S: "~@4 x ~@4 x ~@5 x ~@2 x ~@5", T: "~ x ~@2 x ~@3 x ~@3",
  U: "~ x ~@4 x ~@5 x ~@2 x ~@7 x", V: "~@5 x ~@7 x ~@8 x ~", W: "~@3 x ~@5 x ~@2 x ~@7 x ~@3",
  X: "~@2 x ~@7 x ~@8 x ~@4", Y: "x ~@5 x ~@2 x ~@7 x ~@5 x", Z: "~@7 x ~@5 x ~ x ~@5 x ~@2",
  AA: "~@3 x ~ x ~@8 x ~@5 x ~@3", AB: "~@2 x ~@3 x ~@2 x ~@2", AC: "x ~ x ~@8 x ~@4 x ~@7", AD: "~ x ~@19 x ~@2",
  AE: "~@23 x", AF: "~@2 x ~@5 x ~@5 x ~@5 x ~@2 x", AG: "~@5 x ~@11 x ~@6", AH: "~@2 x ~@8 x ~@8 x ~@2 x",
  AI: "~@14 x ~@5 x ~@2 x", AJ: "~@5 x ~@8 x ~@5 x ~@2 x", AK: "~@17 x ~@2 x ~@2 x", AL: "~@5 x ~@5 x ~@5 x ~@5 x",
  AM: "~@8 x ~@4 x ~@8 x ~", AN: "~@6 x ~@5 x ~@4 x ~@2 x ~@3", AO: "~@5 x ~@4 x ~@8 x ~@4",
  AP: "~@3 x ~@5 x ~@4 x ~@2 x ~@6", AQ: "~@2 x ~@4 x ~@8 x ~@7", AR: "x ~@5 x ~@4 x ~@2 x ~@7 x ~",
  AS: "~@4 x ~@8 x ~@7 x ~@2", AT: "~@3 x ~@4 x ~@2 x ~@7 x ~@4", AU: "~ x ~@7 x ~@8 x ~@4 x",
  AV: "~@5 x ~@2 x ~@7 x ~@5 x ~", AW: "~@6 x ~@5 x ~@2 x ~@4 x ~@3", AX: "~@2 x ~@2 x ~@7 x ~@5 x ~@4",
  AY: "~@3 x ~@8 x ~@4 x ~@5 x", AZ: "~ x ~@3 x ~@2 x ~@3", BA: "x ~@8 x ~@4 x ~@5 x ~@2 x",
  BB: "~@7 x ~@5 x ~@7 x ~@2", BC: "~@6 x ~@4 x ~@5 x ~@2 x ~@3", BD: "~@2 x ~@2 x ~@3 x ~@2",
  BE: "~ x ~@2 x ~@2 x!2 ~@3", BF: "~ x ~@4 x ~@8 x ~@7 x", BG: "~@5 x ~@5 x ~ x ~@8 x ~", BH: "~@3 x ~@8 x ~@7 x ~@3",
  BI: "~@2 x ~@4 x ~@2 x ~@8 x ~@4", BJ: "x ~@8 x ~@7 x ~@5 x", BK: "~@4 x ~@2 x ~@8 x ~@4 x ~@2",
  BL: "~@6 x ~@4 x ~@2 x ~@5 x ~@3",
})).gain(0.48)

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

// drums · low tom
const low_tom = s("lt").struct("<~@2 A ~@21 B C ~@7 D ~@9 E ~@19 F G ~@3 H ~@9 E ~@14 I ~@12>".pickRestart({
  A: "~@13 x ~@5 x ~@4", B: "~@5 x!3", C: "x!2 ~ x!5", D: "~@2 x!2 ~@4", E: "~@4 x!2 ~@2", F: "~@22 x!2",
  G: "~@3 x ~@4 x ~@6 x ~@8", H: "~@5 x ~@2 x ~@15", I: "~@20 x!2 ~@2",
})).gain(0.38)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@26 A B C D B E C F C G C B ~@6 H I J K L M N O P Q R S T U ~@7 V W X Y X Z AA AB ~@6 AC AD AE AF AG AH AI AJ AK AL
  AM AN AO AE AP AQ AR AS AT AU AV AW AX AY AZ BA ~
>`.pickRestart({
  A: "~@7 x ~@4 x ~@5 x ~@5", B: "x ~ x ~ x ~ x!2", C: "x!4", D: "x ~@5 x ~@5 x ~@2 x ~@4 x ~@3", E: "x!2 ~ x!2 ~ x ~",
  F: "x ~ x ~ x!4", G: "x ~ x ~ x!2 ~ x", H: "x ~@5 x ~@4 x ~@2 x ~@2 x ~@2 x ~ x ~",
  I: "~ x ~@2 x ~@2 x ~@2 x ~@4 x ~@2 x ~@2 x ~@2", J: "~@3 x ~ x ~@2 x ~@2 x ~@2 x ~@2 x ~ x ~@2 x ~",
  K: "~ x ~@2 x ~@2 x ~@4 x ~@2 x ~@2 x ~@4 x", L: "~@2 x ~@2 x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~@2 x ~",
  M: "~ x ~@2 x ~@4 x ~@2 x ~@2 x ~@4 x ~@2 x", N: "~@2 x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~@2 x ~@2 x ~", O: "~@17 x ~@5 x",
  P: "~@2 x ~@2 x ~ x ~@2 x ~@2 x ~@2 x ~@2 x ~ x ~@2", Q: "~@3 x ~@2 x ~@2 x ~@4 x ~@5 x ~@2 x",
  R: "~ x ~@2 x ~@2 x ~@2 x ~@2 x ~ x ~@2 x ~@5", S: "x ~@2 x ~ x ~@5 x ~@2 x ~@2 x ~@2 x ~ x ~",
  T: "~ x ~@2 x ~@2 x ~@2 x ~ x ~@2 x ~@5 x ~@2", U: "x ~ x ~@5 x ~@5 x ~ x ~@2 x ~@2 x ~",
  V: "~@6 x ~@4 x ~@5 x ~@2 x ~@2 x", W: "~@2 x ~@5 x ~@2 x ~@5 x ~@5 x", X: "~@5 x ~@5 x ~@5 x ~@5 x",
  Y: "~@5 x ~@5 x ~@2 x ~@2 x ~@2 x ~@2 x", Z: "~@5 x ~@5 x ~@2 x ~@5 x ~@2 x", AA: "~@6 x ~@4 x ~@5 x ~@5 x",
// … 51 more lines

More by Nomadi