Strudelify

La tua ragazza sempre

Grandi

KeyF♯ minorTempo98 bpm
0:00/0:00
// La tua ragazza sempre — Grandi
// 98 bpm, 4/4, key F# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 54, 4/4 at bar 55) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: Full arrangement: all 95 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 25.
setcpm(98/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
const bass = note(`<
  ~@11 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB Y AC AD J AE AF AG AH AI AJ AK AL AM AN AO@7 AP@2 AQ
  AR@2 AS AT AU@3 AV AW AX AY AZ BA BB BC BD BE BF@2 AT BG@2 BH AQ BI@2 BJ BK BL@2 BM@2
>`.pickRestart({
  A: "~@3 b1", B: "f#1@5 ~ f#2@4 f#2@3 e2 c#2 a1", C: "d1@6 ~ d1!2 ~ d1@6", D: "e1@6 ~ e1!2 ~ e1@6",
  E: "a1@6 ~ a1!2 ~ a1@5 ~", F: "c#1@6 ~ c#1!2 ~ c#1@6", G: "d1@7 ~ d1 ~ d1@5 ~", H: "f1@6 c2 d2 f2@2 f2 ~ f2@4",
  I: "a1@7 ~ a1 ~ a1 ~ a1@2 b1@2", J: "c#2 ~ c#2@2 c#2 ~ c#2@2 c#2 ~ c#2 ~ c#2 ~ c#2@2",
  K: "d2 ~ d2 ~ d2 ~ d2@2 d2 ~ d2 ~ d2@2 e2@2", L: "f2@3 c#2", M: "f#1@2 f#1@3 ~ f#1 ~ f#1 ~ f#1!2 c#1@2 e1@2",
  N: "f#1 ~ f#1@3 ~ f#1 ~ f#1 ~ f#1@2 a1@2 f#1@2", O: "b1@3 b1@3 c#2@4 ~ c#2 c#1@2 e1@2",
  P: "f#1 ~ f#1@2 ~@2 f#1@3 ~@3 c#1@2 e1@2", Q: "f#1 ~ f#1@3 ~ f#1@3 ~ f#1!2 c#1@2 e1@2",
  R: "f#1 ~ f#1@3 ~ f#1@3 ~ f#1@2 a1@2 f#1@2", S: "b1@2 ~ b1@2 ~ c#2@4 c#1@2 e1@2 c#1@2",
  T: "f#1@2 f#1@2 ~@2 f#1@2 ~@3 f#1 c#1@2 e1@2", U: "f#1 ~ f#1@2 ~@2 f#1 ~ f#1@3 f#1 c#1@2 e1@2",
  V: "f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1@2 a1@2 f#1@2", W: "b1@2 ~ b1@2 ~ c#2@4 ~ c#2 c#1@2 e1@2",
  X: "f#1 ~ f#1@2 ~@2 f#1@3 ~ f#1@2 f#1 ~ f#1@2", Y: "d1 ~ d1@5 ~ d1 ~ d1@6", Z: "e1 ~ e1@5 ~ e1 ~ e1@6",
  AA: "a1 ~ a1@5 ~ a1 ~ a1@5 ~", AB: "c#1 ~ c#1@5 ~ c#1 ~ c#1@6", AC: "f1 ~ f1@5 ~ f1 ~ f1@2 g1@4",
  AD: "a1 ~ a1@5 ~ a1 ~ a1 ~ a1@2 b1@2", AE: "d2 ~ d2 ~ d2 ~ d2@2 d2 ~ d2 ~ d2 ~ d2@2",
  AF: "f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2@4", AG: "a1@6 ~ a1!2 ~ a1@4 b1@2", AH: "c#1@7 ~ c#1 ~ c#1@6",
  AI: "d1@7 ~ d1 ~ d1@4 c1@2", AJ: "f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1@2 g1@2", AK: "a1@7 ~ a1 ~ a1@6",
  AL: "c#1@7 c#1!2 ~ c#1@6", AM: "d1@2 d2 ~ d2 ~ d2@2 [d1,d2] ~ d1@2 d2 ~ d2@2, d2 ~@9 d2 ~@5", AN: "f1@2 c2 f2 ~ f2@3",
  AO: "[f1@4 c2@2 f1@2 c1@5 ~ c2@8 g1@2 c1@4 g1@2 c2@8 g1@2 c1@4 g1@2 f1@8 e1@2 c1@4 g1@2 f1@10 c1@4 g1@2 c2@8 g1@2 c1@4 g1@2 c2@8 e1@2 a1@7 ~]/7",
  AP: "[a1 ~ a1@3 ~ a1@2 e1@4 b1@2 e1@5 ~ e1@2 ~@2 f#1 ~ f#1@3 ~ f#1@2]/2",
  AQ: "~@2 f#1!2 c#1@2 e1@2 f#1 ~ f#1@3 ~ f#1@2",
  AR: "[~@2 f#1@2 a1@2 f#1@2 b1@2 ~ b1@2 ~ c#2@4 c#1@2 e1@2 c#1@2 f#1 ~ f#1@2 ~@2 f#1 ~]/2",
  AS: "f#1@3 f#1 c#1@2 e1@2 f#1 ~ f#1@2 ~@2 f#1 ~", AT: "f#1 ~ f#1!2 c#1@2 e1@2 f#1 ~ f#1@3 ~ f#1 ~",
  AU: "[f#1 ~ f#1@2 a1@2 f#1@2 b1@6 c#2@4 ~ c#2 c#1@4 b1@6 b0@10 b1 ~ b1 ~ b1 ~ b1 ~]/3",
  AV: "b1@2 b1@2 a1@4 d1 ~ d1@5 ~", AW: "d1 ~ d1@6 e1 ~ e1@5 ~", AX: "e1 ~ e1@6 a1@3 ~ a1@3 ~",
  AY: "a1 ~ a1@3 ~ a1 d1 c#1@3 ~ c#1@3 ~", AZ: "c#1 ~ c#1@6 d1@3 ~ d1@3 ~", BA: "d1 ~ d1@4 e1@2 f1 ~ f1 ~ f1@2 c2@2",
  BB: "f2 ~ f2 ~ f2 ~ f2@2 a1@7 ~", BC: "a1 ~ a1@3 ~ a1@2 c#2 ~ c#2 ~ c#2 ~ c#2 ~",
  BD: "c#2 ~ c#2 ~ c#2 ~ c#2@2 d2 ~ d2 ~ d2 ~ d2 ~", BE: "d2 ~ d2 ~ d2@2 e2@2 f2@2 f2@3 ~ f1@2",
  BF: "[~@2 f1@3 ~ f2@12 c2@2 f2@2 c2@2 f#1@2 f#1@3 ~ f#1 ~]/2",
  BG: "[f#1 ~ f#1@2 a1@2 f#1@2 b1@3 b1@3 c#2@4 ~ c#2 c#1@2 e1@2 f#1 ~ f#1@2 ~@2 f#1@2]/2",
  BH: "~@4 c#1@2 e1@2 f#1 ~ f#1@3 ~ f#1@2",
  BI: "[~@2 f#1@2 a1@2 f#1@2 b1@2 ~ b1@2 ~ c#2@4 c#1@2 e1@2 c#1@2 f#1@2 f#1@2 ~@2 f#1@2]/2",
  BJ: "~@3 f#1 c#1@2 e1@2 f#1 ~ f#1@2 ~@2 f#1 ~", BK: "f#1@3 f#1 c#1@2 e1@2 f#1 ~ f#1 ~ f#1 ~ f#1 ~",
  BL: "[f#1 ~ f#1@2 a1@2 f#1@2 b1@2 ~ b1@2 ~ c#2@4 ~ c#2 c#1@2 e1@2 f#1@2 f#1@2 ~@2 f#1@2]/2",
  BM: "[~@3 f#1 c#1@2 e1@2 f#1@2 ~@4 f#1@10 f#1 ~@7]/2",
})).s("gm_electric_bass_finger").gain(0.68)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  A B@2 C B@3 C B@3 C D E F G H I J G H K L B@2 C B@3 C B@3 C D E F G H I J G H I J G H I J G H I J M N O P M N Q@3 R S
  T R@2 S U V W X Y Z AA AB@2 Z AA AC@3 R S T R@2 S T R@2 S T AD@2
>`.pickRestart({
  A: "~@6 [e3,a3] [f#3,a3]", B: "[a3,c#4]!3 ~ [a3,c#4] ~ [a3,c#4]!3 ~ [a3,c#4] ~ [e3,a3]@2 [f#3,a3]@2",
  C: "[b3,d4]@3 [b3,d4] ~ [b3,d4] [c#4,e4]@3 [c#4,e4]!7", // Bm C#m
  D: "[a3,c#4]@3 [a3,c#4] [a3,c#4]@2 [a3,c#4]@3 [a3,c#4]@3 [a3,c#4]!4", // A
  E: "[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]@3 [a3,d4,f#4]", // D
  F: "[b3,e4,g#4]@2 [b3,e4,g#4]@2 [b3,e4,g#4]@3 [b3,e4,g#4]!3 [b3,e4,g#4]@2 [b3,e4,g#4]@3 [b3,e4,g#4]", // E
  G: "[a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4]@3 [a3,c#4,e4] [a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4]@3 [a3,c#4,e4]", // A
  H: "[g#3,c#4,f4]@2 [g#3,c#4,f4]@2 [g#3,c#4,f4]@3 [g#3,c#4,f4] [g#3,c#4,f4]@2 [g#3,c#4,f4]@2 [g#3,c#4,f4]@3 [g#3,c#4,f4]", // C#
  I: "[a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]!4 [a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]!2", // D
  J: "[a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4]@3 [a3,c4,f4]@2 [a3,c4,f4] [a3,c4,f4]@2 [a3,c4,f4]@3 [a3,c4,f4]", // F
  K: "[a3,d4,f#4]!8", L: "[a3,c4,f4]", M: "[a3,c4,f4]!8 [c4,e4,g4]!8", N: "[c4,e4,g4]!16",
  O: "[c4,e4,g4]!14 [a3,c4,f4]!2", P: "[a3,c4,f4]!8 [c4,e4,g4]!6 [a3,c4,f4]!2",
  Q: "[[c4,e4,g4]!8 [a3,c#4,e4]@3 [a3,c#4,e4] [a3,c#4,e4]@3 [a3,c#4,e4]@2 [a3,c#4,e4] [a3,c#4,e4]@2 [a3,c#4,e4]@3 [a3,c#4,e4] [g3,b3,d4]!6 [g3,b3,d4]@10 [a3,c#4]!3 ~ [a3,c#4] ~ [a3,c#4]!2]/3", // C A G A
  R: "[a3,c#4] ~ [a3,c#4] ~ [e3,a3]@2 [f#3,a3]@2 [a3,c#4]!3 ~ [a3,c#4] ~ [a3,c#4]!2", // A A5 F#m A
  S: "[a3,c#4] ~ [a3,c#4] ~ [e3,a3]@2 [f#3,a3]@2 [b3,d4]@3 [b3,d4] ~ [b3,d4] [c#4,e4]@2", // A A5 F#m Bm C#m
  T: "~ [c#4,e4]!7 [a3,c#4]!3 ~ [a3,c#4] ~ [a3,c#4]!2", U: "~ [c#4,e4]!7 [b3,d4]@3 [b3,d4]@2 [b3,d4] [b3,d4]@2",
  V: "~ [b3,d4]@2 [b3,d4]!13", W: "[b3,d4]!8 [a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]@3 [a3,d4,f#4]",
  X: "[a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]@3 [a3,d4,f#4] [b3,e4,g#4]@2 [b3,e4,g#4]@2 [b3,e4,g#4]@3 [b3,e4,g#4]", // D E
  Y: "[b3,e4,g#4]!2 [b3,e4,g#4]@2 [b3,e4,g#4]@3 [b3,e4,g#4] [a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4]@3 [a3,c#4,e4]", // E A
  Z: "[a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4]@3 [a3,c#4,e4] [g#3,c#4,f4]@2 [g#3,c#4,f4]@2 [g#3,c#4,f4]@3 [g#3,c#4,f4]", // A C#
  AA: "[g#3,c#4,f4]@2 [g#3,c#4,f4]@2 [g#3,c#4,f4]@3 [g#3,c#4,f4] [a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]!2", // C# D
  AB: "[[a3,d4,f#4]!2 [a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]!2 [a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4]@3 [a3,c4,f4]@2 [a3,c4,f4] [a3,c4,f4]@2 [a3,c4,f4]@3 [a3,c4,f4] [a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4]@3 [a3,c#4,e4]]/2", // D F A
  AC: "[[a3,d4,f#4]!2 [a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]!2 [a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4]@3 [a3,c4,f4]@2 [a3,c4,f4] [a3,c4,f4]@2 [a3,c4,f4]@3 [a3,c4,f4] [a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4]@3 [a3,c4,f4]@2 [a3,c4,f4] [a3,c4,f4]@2 [a3,c4,f4]@3 [a3,c4,f4] [a3,c#4]!3 ~ [a3,c#4] ~ [a3,c#4]!2]/3", // D F A
  AD: "[[a3,c#4] ~ [a3,c#4] ~ [e3,a3]@2 [f#3,a3]@2 [e3,f#3,a3]@2 ~@4 [e3,f#3,a3]@10 [e3,f#3,a3] ~@7]/2", // A A5 F#m F#m7
})).s("gm_acoustic_guitar_steel").gain(0.29).pan(0.3)

// other · lead 8 bass lead
const lead_8_bass_lead = note("<~ A@12 ~@10 A@12 ~@26 B C@6 D ~@12 B C@11 D ~>".pickRestart({
  A: "~@4 f#6 ~@5 f#6 ~@5", B: "~@12 f#6 ~@3", C: "~@2 f#6 ~@9 f#6 ~@3", D: "~@2 f#6 ~@13",
})).s("gm_lead_8_bass_lead").gain(0.14).pan(0.4)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  ~@13 A B C D E F C D E G H@2 I J@3 K ~@4 L M B C D N O P Q R@2 S D A T@4 U@2 V@8 ~@5 W@8 X@3 Y@7 Z@2 AA@2 Z@2 AA@2
  AB@2
>`.pickRestart({
  A: "[d4,f#4]", B: "[e4,g#4]", C: "[c#4,a4]", D: "[f4,g#4]", E: "[f#4,a4]@6 [g4,a#4] [g#4,b4]", F: "[a4,c5]",
  G: "[a4,c5]@15 ~", H: "[[a4,c#5]@15 ~]/2", I: "[d4,f#4]@4 ~@2 [e4,g#4]@9 ~", J: "f#4/3", K: "d4@3 e4@5",
  L: "[c#4,a4]@10 e4 f#4 g#4 e4 g#4 b4", M: "[f#4,a4]", N: "[f#4,a4]@6 [a#4,d#5] [b4,e5]", O: "[c5,f5]", P: "[c#5,e5]",
  Q: "[f5,g#5]", R: "[f#4@4 c5@3 [b4,d5], a4@7 ~]/2", S: "[a4,e5]",
  T: "[~@2 [f5,f6] ~ [f5,f6] ~ [f5,f6] ~ [f5,f6]@2 [e5,e6]@2 [d5,d6]@2 [e5,c#6,e6]@11 ~ [c#5,a5,c#6]@2 [e5,e6]@2 [f5,c#6,f6]@12 [g#5,f6,g#6]@2 [g#5,f6,g#6]@2 [f#5,d6,f#6]@18, ~@28 c#6 ~@35]/4", // F E D C#m F#m E C# D
  U: "[[f5,f6,a6]@3 [g4,g5]]/2", // F G
  V: "[[f4,f5]@4 [g4,g5]@3 [f4,f5]@5 [g4,g5]@3 [f4,f5]@3 [e4,e5]@2 [d4,d5]@3 [e4,e5]@3 [f4,f5]@2 [g4,g5]@3 [f4,f5]@5 [g4,g5]@3 [f4,f5]@3 [g4,g5]@2 [e4,c#5,e5]@3 [d4,b4,d5]@3 [e4,c#5,e5]@2 [d4,b4,d5]@8 ~@4]/8", // F G F G F E D E …
  W: "[~@8 [d4,f#4]@6 [e4,g#4]@10 [d4,f#4]@28 [a3,a4] [b3,c#4,b4,c#5] [d4,d5,e5] [e4,f#4,g#4,f#5,g#5] [a4,a5]@16 [g#4,g#5]@12 [f#4,f#5]@4 [e4,e5]@16 [c#4,f4,b4]@16 [f#4,a4]@8]/8", // D E D A Bsus2 Dsus2 E A …
  X: "[~@4 [a#4,d#5]@2 [b4,e5]@2 [c5,f5]@16 [a4,a5]@11 ~ [b4,b5]@4 [c#5,c#6]@8]/3", // D#5 E5 F5 A B C#
  Y: "[[b4,b5]@8 [a4,a5]@10 [d5,d6]@4 [e5,e6]@2 [f5,f6]@26 ~@2 [g#4,a4,g#5,a5] [b4,b5] [c#5,d5,c#6,d6] [e5,e6] [f#5,f#6]@27 ~@5 [f#4,d5,f#5]@6 [g#4,e5,g#5]@10 [f#3,f#4,a4,f#5]!2 ~@4 [f#3,f#4,a4,f#5]!2, ~@56 [f5,f6] ~@55]/7", // B A D E F Amaj7 B Dmaj7 …
  Z: "[~ [f#5,f#6]@3]/2", // F#
  AA: "[c#4@2 e4@2 b3@2 c#4@2 [b3,d5,f#5]@6 [c#4,e5,g#5]@9 ~ [f#3,f#4,a4,f#5]!2 ~@4 [f#3,f#4,a4,f#5]!2]/2", // Bm C#m F#m
  AB: "[~@8 [f#3,f#4,a4,f#5] ~@5 c#6@7 c6 [a#5,b5] [g#5,a5] [f#5,g5] ~@7, ~@14 [f#3,c#4,a4]@11 ~@7]/2", // F#m Bmaj7 Amaj7 Gmaj7 F#m
})).s("gm_string_ensemble_1").gain(0.35).pan(0.6)

// chords · acoustic guitar steel
const acoustic_guitar_steel_2 = note(`<
  ~@12 A ~@11 B C ~@2 B C ~@2 B C A ~@17 D ~@10 E@2 ~@2 F@4 ~@12 E@2 ~@2 E@2 ~@2 E@2 G@2
>`.pickRestart({
  A: "~ a2 ~@5 a2 ~@4 e2@2 f#2@2", B: "~@10 [g#3,b3]!2 [g#3,b3]@2 ~@2", C: "f#3@3 g#3@5",
  D: "~ [f5,a5] ~ [f5,a5] ~ [f5,a5]!2 ~ [f5,a5] ~@2 [f5,a5] ~ [f5,a5]!2 ~", // F
  E: "[~@2 [g#3,b3]!2 [g#3,b3]@2 ~@2 f#3@6 g#3@10 ~@8]/2", // G#m
  F: "[~@2 [g#3,b3]!2 [g#3,b3]@2 ~@2 f#3@6 g#3@10 f#3@6 f#3@10 f#3@6 f#3@10 ~@8]/4", // G#m
  G: "[~@8 c#4 ~@5 c#4@10 c#4 ~@7]/2",
})).s("gm_acoustic_guitar_steel").gain(0.23).pan(0.8)

// chords · distortion guitar
const distortion_guitar = note(`<
  ~@13 A B C D E F C D E G ~@12 A B C D E F C D E H I J@2 H C D A K@2 ~@5 L@3 ~@7 M N@5 O@6 P ~@13
>`.pickRestart({
  A: "[a2,d3]", B: "[b2,e3]", C: "[a2,e3]", D: "[c#3,g#3]", E: "[a2,d3]@6 [a#2,d#3] [b2,e3]", F: "[c3,f3]",
  G: "[c3,f3]@3 ~", H: "[f2,c3]@3 [g2,d3]", I: "c#4",
  J: "[~@2 c#4@5 b3 g#3@2 f3@4 f#3@4 f#3@2 f#3@2 f#3 f#3@2 f#3 f#3@2 f#3@4]/2", K: "[[f2,c3]@3 ~]/2",
  L: "[~@6 [a2,e3]!2 [a2,e3]@16 [e2,b2]@16 ~@8]/3", M: "~@4 [b2,f#3]!4",
  N: "[[b2,f#3]!2 [a2,e3]@2 [a2,d3]@8 [b2,e3]@8 [a2,e3]@8 [c#3,g#3]@8 [a2,d3]@4]/5", // B5 A5 D5 E5 A5 C#5 D5
  O: "[~@2 [a#2,d#3] [b2,e3] [c3,f3]@8 [a2,e3]@8 [c#3,g#3]@8 [a2,d3]@6 [a#2,d#3] [b2,e3] [f2,c3]@8 [f2,c3]!4]/6", // D#5 E5 F5 A5 C#5 D5 D#5 E5 …
  P: "[f2,c3]!4 ~@4", // F5
})).s("gm_distortion_guitar").gain(0.43).pan(0.4)

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

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

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

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

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@81 [~@9 x ~@3 x ~@2] [~ x ~@3 x ~@3 x ~@3 x ~@2]!7 [~ x ~@14] ~@5>").gain(0.16)

// drums · mid tom
const mid_tom = s("mt").struct("<~@21 A B ~@11 C ~@9 C ~@12 D ~@12 E ~@18 F ~@3 G ~>".pickRestart({
  A: "~@7 x", B: "~@3 x", C: "~@13 x!2 ~", D: "~@2 x ~ x!2 ~@10", E: "~ x ~@2", F: "~@5 x ~@10",
  G: "~@2 x ~@2 x ~@4 x ~@5",
})).gain(0.62)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@5 A@7 ~ B C@5 B C D ~ E F ~@5 G E@2 ~ H B C@5 B@2 C I B C@3 B C@3 J C@2 D K C L D ~@2 M ~ E N ~ O ~ P C@5 L@2 C@3 Q
  ~@7 O R@3 ~@2
>`.pickRestart({
  A: "~@4 x!2 ~@6 x!2 ~@2", B: "~ x!7", C: "x!8", D: "x!7 ~", E: "~@7 x", F: "~@5 x ~@2", G: "~@14 x!2", H: "~ x ~@2",
  I: "x!6 ~@2", J: "x!2 ~@3 x!3", K: "x ~@4 x!3", L: "x!4 ~ x!3", M: "~ x ~@6", N: "~@3 x ~@4", O: "~@3 x",
  P: "~@5 x!3", Q: "x!2 ~@6", R: "x!4",
})).gain(0.39)

// drums · high tom
const high_tom = s("ht").struct("<~@34 [~@3 x] ~@60>").gain(0.62)

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

// drums · crash · soft notes
const crash_soft = s("cr").struct("<~@93 [~@14 x!2] [x!3 ~ x ~@11]>").gain(0.23)

stack(
  bass, acoustic_guitar_steel, lead_8_bass_lead, string_ensemble_1, acoustic_guitar_steel_2, distortion_guitar, kick,
  snare, low_tom, hihat, hihat_soft, mid_tom, open_hat, high_tom, crash, crash_soft
// … 1 more lines

More by Grandi