Strudelify

L'elefante e la farfalla

Michele Zarrillo

KeyE minorTempo79 bpm
0:00/0:00
// L'elefante e la farfalla — Michele Zarrillo
// 79 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: ch 16 "piano" named as a piano, played on piano (its overdriven guitar patch is not one)
// note: Full arrangement: all 83 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(79/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 · "BASS"
const bass = note(`<
  ~@10 A B C D E F G H E F G H A I C J A I C J A K C L E F G M E N O M P Q R S T Q R U V W X Y Z AA X Y Z AB AC AD AE AF
  AC AD AE AG AH AI AJ AK AL AM AN AO AP AQ@3 ~@3
>`.pickRestart({
  A: "e1 f#1", B: "g1 c2", C: "a1 g1", D: "~ b2, b1", E: "e1@5 ~ e1@10", F: "c2@5 ~ c2@10", G: "g1@5 ~ g1@10",
  H: "a1 b1", I: "b1 c2", J: "b1@5 b1@3", K: "b1@3 c2@5", L: "b1@5 ~ b1@9 ~", M: "a1@5 ~ a1@2 b1@8",
  N: "c2@5 ~ c2@7 ~ d2 e2", O: "g2@5 ~ g1@10", P: "e1@4 ~@2 e1@2 f#1@7 ~", Q: "b1@5 ~ b1 ~ c2@5 ~ b1@2",
  R: "a1@5 ~ a1 ~ g1@5 ~ g1 ~", S: "b1@5 ~ b1 ~ b1@5 ~ b1@2", T: "e1@4 ~@2 e1 ~ f#1@5 ~@3", U: "b1@5 ~ b1 ~ b1@4 ~@4",
  V: "e1@4 ~@2 e1 ~ e1@7 ~", W: "e1@5 ~ a2 b2 d3 a2 b2 e3 d3 b2 e2 d2", X: "c2@4 ~@2 c2 ~ c2@7 ~",
  Y: "b1@4 ~@2 b1 ~ b1@7 ~", Z: "a1@4 ~@2 a1 ~ a1@7 ~", AA: "g#1@4 ~@2 g#1 ~ g#1@5 ~ a1 b1",
  AB: "g#1@4 ~@2 g#1 ~ e2@4 e1@4", AC: "f2@4 ~@2 f2 ~ f2@7 ~", AD: "e2@4 ~@2 e2 ~ e2@7 ~", AE: "d2@4 ~@2 d2 ~ d2@7 ~",
  AF: "a2@6 a1 a2 a1@4 ~ a1 d2 e2", AG: "a1@5 ~ a1 ~ a1@2 e2@2 a2@4", AH: "d2@5 ~ d2 ~ e2@5 ~@3",
  AI: "a1@6 a#1 ~ a#1@6 ~@2", AJ: "g1@5 ~ g1 ~ f1@7 ~", AK: "a1@5 ~ a1@2 e2@2 a2@4 a1@2", AL: "d2@5 ~ d2 ~ e2@7 ~",
  AM: "a1@3 a#1@2 f2 a#2 a2", AN: "g2@5 ~ g2 ~ f2@7 ~", AO: "a1@5 ~ a1 ~ a1@8", AP: "a#1@4 ~@2 a#1 ~ a#1@4 f2@2 a#2@2",
  AQ: "[a2@5 ~@2 a2 ~ a2@8 g2@17 ~@14]/3",
})).s("gm_electric_bass_finger").gain(0.72)

// other · whistle
const whistle = note("<~@11 A B C ~@17 A B C ~@49>".pickRestart({
  A: "b6 ~ d6 e6@4 ~", B: "~@2 c7 b6 a6 g6 e6 g6", C: "f#6 ~",
})).s("gm_whistle").gain(0.32)

// chords · string ensemble 2 · "slow str"
const string_ensemble_2 = note(`<
  ~@9 A B C D@2 E@3 F E@3 F G@2 D@2 G@2 D@2 H@4 I@3 J K@3 F G@2 D@2 G@2 D@2 L@2 M@8 N O P Q R S T U V W X Y V W X Z AA@7
>`.pickRestart({
  A: "[a2,e4] [b2,d#4,f#4]", B: "g4 f#4", C: "g4", D: "[c4@3 c#4 ~@2 d#4@2, e4@3 ~, ~ b3]/2", E: "[e4@2 d4, g4]/3",
  F: "[c4,e4] [d#4,f#4]", G: "[[e4,g4]@2 f#4@2 ~@2 e4 d4, ~ d4@2 ~, ~ g4]/2",
  H: "[[e4,g4]@4 f#4@4 g4@3 ~@11 c#4@2 ~@4 d#4@4, ~@2 d4@5 c4@4 ~ b3@4, ~@11 e4@5 e4@12 ~@4]/4", // Em
  I: "[e4@7 e4 d4@4, g4]/3", J: "[c4,e4]@2 g4 f#4, ~ d#4", K: "[e4@3 e4 d4@2, g4]/3", L: "[e4@31 ~]/2",
  M: "[b4 ~@6 e4, ~ a4@2 g4@2 f#4@2 ~, ~ d4 c4 b3]/4", N: "~ e4 d4@2, a4", O: "~ d4 c4@2, g4", P: "~ c4 b3@2, f4",
  Q: "[a3,c#4,e4]", R: "[a4,a5]@8 [d4,d5]@3 [e4,e5]@3 [f4,f5]@2", S: "[g4,g5] [c4,c5]", T: "[f4,f5] [b3,b4]",
  U: "[c#4,a4,c#5]@15 ~", V: "[f4,f5] [g4,g5]", W: "[a4,a5]@3 ~ [c4,c5]@2 [d4,d5]@10", X: "~ d4 a#4 a4 g4 f4 d4 f4",
  Y: "d4 c#4, e4", Z: "e4",
  AA: "[a4@8 ~@25 a#3@17 ~ f4@8 [c4,e4]@9 [d4,f4]@9 [c4,g4]@26 ~@9, d4@16 c4@17 ~@79, ~@8 g4@17 f4@26 ~@61]/7", // C Dm C5
})).s("gm_string_ensemble_2").gain(0.4)

// chords · synth strings 1 · "syn str"
const synth_strings_1 = note(`<
  ~@10 A@4 B C B D B C B D E F G H E F G H E F G H B C B D B C B D E F G H E F G H E I J K L M J K L M N@3 O P@3 Q R@3 S
  R@3 S T U V@5
>`.pickRestart({
  A: "[e4@4 d4@8 ~@4 a3@6 a#3@2 ~@4 d#4@3 ~, ~@6 c4@5 e4@3 ~@2, ~@48 b3@15 ~]/4", B: "b3", C: "c4", D: "a3 b3",
  E: "[b3,g4] [a3,f#4]", F: "b3 c4, g4", G: "a3@2 g3 a#3, g4", H: "c#4 d#4, f#3", I: "[b3,g4]@8 [a3,f#4]@7 ~",
  J: "g4@3 a4, e5", K: "f#4@3 g4, d5", L: "e4@3 f#4, c5", M: "d#4@2 e4 g#4, b4",
  N: "[[e4,c5] b4 d5 c5 a4 [b3,b4], ~ d4@2 c4@2 ~]/3", O: "[e4,g#4,c#5]",
  P: "[e4 ~@4 b3, [a4,a5] [g4,g5] [f4,f5], ~ d4@2 c4@2 ~]/3", Q: "[a3,e4,e5]",
  R: "[[a3,d4,f4]@4 [g3,e4]@4 a3@3 [a#3,d4]@13, ~@4 c4@7 ~@13, ~ f4@2]/3", S: "d4 c#4, [e4,a4]", T: "f4@3 g4, d5",
  U: "e4@13 f4@3, [a2,c5]", V: "[~ a#4@6 ~ a4@11 f4@8 e4@9 f4@9 [d4,g4]@26 ~@9, ~ [g2,d4]@17 ~ d2@52 ~@9]/5",
})).s("gm_synth_strings_1").gain(0.4)

// chords · epiano1 · "E. piano"
const epiano1 = note(`<
  A@2 B@2 C D B@2 E D F G H I J K L M N O P Q R S T U R S T U V W H I J K L M N O P X R S T U R S T U Y@2 Z AA AB AC Z
  AD AB AC AE AF AG AH AE AF AG AH AI AJ AK AL AI AJ AK AL AM AN AO@5
>`.pickRestart({
  A: "b3 ~@2 g4 a3 ~@2 f#4, e2, g4 e4 f#4 d4, ~ b3@3 ~ a3@3",
  B: "[~@7 b3 ~@7 g3, e2@2 [c3,g3] c3, g4@3 g4@7 ~ e4@3 e4@2, ~ b3@6 ~@6 g3@2 ~, ~@2 e4@3 e4@3 ~@2 d4@3 ~@3]/2", // C5
  C: "~@2 a3 ~@4 [g2,b3], g2@7 ~, [g3,b3]@2 ~ [g3,b3]@3 [d4,g4]@2, ~@2 d3@7 ~ d3@4 ~@2", // G G5
  D: "[c4,e4,g4]!2 [b3,d#4,f#4]!2, a2 b2", // C B
  E: "~@2 e4 ~@4 [g2,b3], g2@7 ~, [g3,b3]@2 ~ [g3,d4]@3 [d4,g4]@2, ~@2 d3@7 ~ d3@4 ~@2", // G G5
  F: "[b3,e4,g4]!2 [a3,d4,f#4]!2, ~ f#2", G: "[b3,d4,g4]!2 [c4,e4,g4]!2, g2 c3", H: "[g3,c4,e4]!3 [a#3,c#4,e4], a2 g2",
  I: "[b3,e4,f#4] e4 d#4@2, b2, ~ [b3,f#4]@3", J: "[b3,e4,g4]@2 b3@3 ~ [e4,g4]@2, ~ [e4,g4]@2 ~, ~@10 b3@5 ~",
  K: "[c4,e4,g4]@4 c4@5 ~@3 [e4,g4]@4, ~ [e4,g4]@2 ~, ~@10 c4@5 ~", // C Em
  L: "[b3,d4,g4]@2 [b3,d4,g4]@3 ~ [d4,g4]@2, ~@5 b3@3", M: "[c4,e4,g4]@2 [c4,e4,g4]@2 ~ b3 b4@2, ~ [d#4,f#4]",
  N: "[b3,e4,g4]@4 b3@5 ~@3 [e4,g4]@4, ~ [e4,g4]@2 ~, ~@10 b3@5 ~", // Em
  O: "[c4,e4,g4]@2 c4@3 ~ [e4,g4]@2, ~ [e4,g4]@2 ~, ~@5 c4@3", // C Em
  P: "[b3,d4,g4]@4 b3@5 ~@3 [d4,g4]@4, ~ [d4,g4]@2 ~, ~@5 b3@3", Q: "[c4,e4,g4]!2 [b3,d#4,a4]!2",
  R: "[b3,e4,g4]!2 [a3,d4,f#4]!2", S: "[b3,d4,g4]!2 [c4,e4,g4]!2", T: "[g3,c4,e4]!3 [a#3,c#4,e4]",
  U: "[b3,e4,f#4] e4 d#4@2, ~ [b3,f#4]@3", V: "[b3,e4,g4]!2 [a3,d4,f#4]!2, e2 f#2",
  W: "[b3,d4,g4]@2 [b3,d4,g4] [c4,e4,g4]@3 [c4,e4,g4]@2, b2@3 c3@5", X: "[c4,e4,g4]!2 [b3,d#4,f#4] [b3,d#4,b4]",
  Y: "[~@3 g4 ~@3 f#4 ~@3 g4 ~@3 f#4, g4@2 d4@3 a3@2 ~ g4@2 d4@3 a3@2 ~, ~ b3@3 f#4@2 d4@3 b3@2 ~ f#4@2 d4@2]/2",
  Z: "[c4,e4,b4]@3 ~ [c4,e4,b4]@4 [c4,e4,a4]@4 [c4,e4,a4]@4", // Cmaj7 Am
  AA: "[b3,d4,a4]@3 ~ [b3,d4,a4]@4 [b3,d4,g4]@4 [b3,d4,g4]@3 ~", // Bm7 G
  AB: "[a3,c4,g4]@4 [a3,c4,g4]@3 ~ [a3,c4,f#4]@3 ~ [a3,c4,f#4]@3 ~", // Am7 F#dim
  AC: "[g#3,b3,f#4]@4 [g#3,b3,f#4]@3 ~ g#3@4 b4@4, ~ [b3,e4]", // G#m7 E5
  AD: "[d4,a4,d5]@4 [b3,d4,a4]@4 [b3,d4,g4]@4 [b3,d4,g4]@3 ~", // D5 Bm7 G
  AE: "[a3,e4]@2 [a3,e4] ~ a3@2 a3 f3, ~@3 f3@3 ~@2, ~@8 d4@7 ~", // A5
  AF: "[g3,d4]@4 [g3,d4]@2 ~@2 [g3,c4]@3 ~@3 e3@2, ~@3 e3@3 [g3,c4]@2", // G5 C5
  AG: "[f3,c4]@2 ~@2 [f3,b3]@2 ~ d3, ~ [f3,c4] ~ [f3,b3], ~@3 d3@3 ~@2", // F5 Fdim F5 Fdim
  AH: "[e3,a3,c#4]@7 ~@7 e4@2, ~ a3, ~@5 b3@3, ~@3 c#4", AI: "[a3,d4,f4]!2 [g3,c4,e4]!2",
  AJ: "[a3,c4,f4]@5 ~ [a#3,c4]@6 a#3@2 a3@2, ~@6 [d4,f4]@9 ~", // F A#sus2 Dm
  AK: "[g3,d4]@4 [g3,d4]@4 [f3,a#3,d4]@4 [f3,a#3,d4]@3 ~, a#3 f2", AL: "[a3,d4,e4] d4 c#4@2, ~ [a3,e4]@3",
  AM: "[a#3,d4,a4]@3 ~ [a#3,d4,a4]@4 [a#3,d4,g4]@4 [a#3,d4,g4]@4", // A#maj7 Gm
  AN: "[a3,c4,g4]@4 ~ [a3,c4,g4]@4 [a3,c4,f4]@4 [a3,c4,f4]@3", // Am7 F
  AO: "[~ [g3,a#3,f4]@17 ~ [a3,d4,f4]@8 [g3,c4,e4]@9 [a3,d4,f4]@9 ~@8 [e5,f5]@19 ~@8, ~@45 [g3,c4,e4]@24 ~@11, ~@13 c6@5 ~@2]/5", // Gm7 Dm C Dm Fmaj7 C
})).s("gm_epiano1").gain(0.48).pan(0.6)

// chords · acoustic guitar steel · "steel gt"
const acoustic_guitar_steel = note(`<
  A@2 B@2 C D E@2 F D G H I J E@2 F K E@2 F K G L I J M N@2 O G H I J ~@8 G L I J M P@2 O Q R S T U V S T U V W X Y Z AA
  X Y AB AC AD AE AF AC AD AE AF AG AH AI AJ@4
>`.pickRestart({
  A: "~@3 g4 f#4@2 ~ f#4, g4 e4 ~ d4, ~ b3@2 ~@5",
  B: "[~@3 e4@2 ~ g3 b3 ~@2 d4 ~@3 g4@2, e4@3 ~@2 e4@4 ~@2 e4@5, ~@2 b3@4 ~@3 g3@4 g3@3]/2", C: "d4@3 d4, g3@5 ~@3",
  D: "g4 e4 ~ b4, ~ d#4", E: "[~@3 b3@2 ~ g3 b3@2 ~ d4 ~@3 g4@2, e4@5 e4@4 g3@4 g3@3, ~@11 e4@5]/2",
  F: "~@2 a3 ~@3 d4@2, d4@5 ~@3, ~@2 d3@8 g3@5 ~, ~@3 b3@3 ~@2", G: "~ b3 ~ b3 ~ a3 ~ a3, g4@3 ~ f#4@3 ~, ~ e4 ~ d4",
  H: "~@2 d4 c4@2 ~@2 d4, g4@2 ~ e4@3 g3@2, ~ b3@2 ~@2 c3@2 ~", I: "~@7 e4, c4 e4@2 c#4, ~ g3@3 ~ g3@2 ~",
  J: "~ b3 ~ b3 ~@2 b4@2, e4@2 f#4@3 ~@3, ~@4 d#4@3 ~", K: "g4@2 ~ a3 ~@3 f#4, ~@2 e4@2 d#4@3 ~, ~@3 b4",
  L: "~@3 g3 ~@3 d4, g4@2 d4@2 e4@3 ~, ~ b3@2 ~@2 c3@2 ~, ~@3 g3", M: "~ e3 ~ b3 ~ d3 ~ a3, b3@3 ~ a3@3 ~, ~ g3 ~ d4",
  N: "[~@2 d3@2 g3@3 ~@3 g3@2 [d4,g4]@2 [c4,e4]@10 e3@2 g3@2 [c#4,e4]@4, b3@2 c4 ~@5]/2", // G5 C C#m
  O: "b3 ~@2 b4, e4@3 ~ d#4@4, ~ a4@2 ~",
  P: "[~@2 d3@2 g3@3 ~@3 g3@2 [d4,g4]@2 [c4,e4]@10 a3@2 g3@2 [c#4,e4]@4, b3@2 c4 ~@5]/2", // G5 C C#m
  Q: "g4 b3 d4 g4 f#4 a3 d4 f#4", R: "g4 ~ d4 g4 f#4 a3 d4 f#4", S: "~ c4 e4 b4@2 c4 e4 b4@2 c4 e4 a4@2 c4 e4 a4",
  T: "~ b3 d4 a4@2 b3 d4 a4@2 b3 d4 g4@2 ~ d4 g4", U: "~ a3 c4 g4@2 a3 c4 g4@2 a3 c4 f#4@2 a3 c4 f#4",
  V: "~ b3 e4 f#4@2 b3 e4 g#4@2 b3 e4 b4@2 b3 e4@2", W: "~ f3 a3 e4@2 ~ a3 e4@2 f3 a3 d4@2 f3 a3 d4",
  X: "~ e3 g3 d4@2 e3 g3 c4@2 e3 g3 c4@2 g3 e3@2", Y: "~ a3 c4 f4@2 a3 c4 f4@2 a3 b3 f4@2 ~ b3@2",
  Z: "~ a3 b3 e4@5 a3@2 b3@2 c#4@2 e4@2", AA: "~ f3 a3 e4@2 f3 a3 e4@2 ~ d4 b3 a3 b3 c4@2", AB: "~ a3 b3 e4@5 ~@8",
  AC: "~ a3 ~ a3 ~ g3 ~ g3, f4@3 ~ e4@3 ~, ~ d4 ~ c4",
  AD: "~@3 f3 ~@3 c4, f4@2 c4@2 d4@3 ~, ~ a3@2 ~@2 a#2@2 ~, ~@3 f3", AE: "~@7 d4, a#3 d4@2 a#3, ~ f3@3 ~ f3@2 ~",
  AF: "~ a3 ~ a3 ~ a3 a4@2, d4@2 e4@3 ~@3, ~@4 c#4@3 ~", AG: "~ a#3 d4 a4@2 a#3 d4 a4@2 a#3 d4 g4@2 a#3 d4 g4",
  AH: "~ a3 c4 g4@2 ~ a3 c4 g4@2 a3 c4 f4@2 ~ c4", AI: "f4 ~@15",
  AJ: "[~@9 d4@2 c4@2 ~@3 c4@2 ~@6 a3@3 d4@2 d4@4 c4@21 ~@10, ~@3 d3@9 ~@6 d4@6 ~@40, ~@5 f3@6 e3@9 d3@35 ~@9, ~@7 a3@4 ~@3 g3@6 ~@2 f3@6 ~ g3@25 ~@10]/4",
})).s("gm_acoustic_guitar_steel").gain(0.4).pan(0.4)

// chords · acoustic guitar steel · "steel gt" · soft notes
const acoustic_guitar_steel_2 = note(`<
  A@2 B ~ C D E ~@2 D ~@3 F E ~@2 G E ~@2 G ~@3 F ~@7 F ~@11 F ~@5 H ~ I ~@3 I ~@4 J ~@3 J ~@4 K ~@3 K ~ L ~@5
>`.pickRestart({
  A: "~@5 a3@2 ~", B: "~ g3 ~@6", C: "~@5 g3@2 g3", D: "~ a3 ~ a3 ~ b3 ~@2", E: "~ g3@2 ~@5", F: "~@5 b3 ~ b3",
  G: "~ a3 ~@3 b3 ~@2", H: "~ b3 ~@6", I: "~@13 b3 ~@2", J: "~@13 a3 ~@2", K: "~@7 a3", L: "~@14 a3 ~",
})).s("gm_acoustic_guitar_steel").gain(0.24).pan(0.4)

// other · piano
const piano = note("<~@68 A B ~ C D E ~ F ~@7>".pickRestart({
  A: "d4", B: "c4", C: "~@8 e4@3 f4@3 g4@2", D: "f4 g4", E: "c4@3 d4@5", F: "[a2,e3]",
})).s("gm_piano").gain(0.56)

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

// drums · rim
const rim = s("rim").struct("<~@22 [~@3 x]!7 ~@54>").gain(0.4)

// drums · snare
const snare = s("sd").struct("<~@26 A@4 ~ B ~ A B@17 C B@15 D B@3 A B@3 E B F ~@5>".pickRestart({
  A: "~ x ~@2", B: "~ x ~ x", C: "~ x!3", D: "~@4 x ~@4 x ~@2 x ~@3", E: "~@4 x ~@2 x ~@2 x ~@2 x ~@2",
  F: "~@5 x ~@7 x ~@2",
})).gain(0.72)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@14 A B A B A B A@6 ~@4 C ~ C ~@50>".pickRestart({
  A: "~ x ~@2", B: "~@2 x ~@2 x ~@2", C: "~ x ~ x",
})).gain(0.4)

// drums · low tom
const low_tom = s("lt").struct("<~@41 A ~@9 B ~@7 A ~@7 A ~@3 C ~@5 D ~@5>".pickRestart({
  A: "~@7 x", B: "~@5 x ~ x", C: "~@11 x!2 ~@3", D: "~@15 x",
})).gain(0.56)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@33 A B C@2 D B C@2 E B D F D B D F D B G H D H I H D H J K D@2 B K D@2 L ~@15
>`.pickRestart({
  A: "~@12 x!2 ~@2", B: "~ x!15", C: "x!16", D: "x!14 ~@2", E: "x!10 ~@2 x ~@3", F: "~@2 x!14", G: "x!6 ~@10",
  H: "~ x!9 ~@2 x!4", I: "x!10 ~@2 x!2 ~@2", J: "x!10 ~@6", K: "~ x!13 ~@2", L: "~ x!7 ~@2 x!3 ~@2 x",
})).gain(0.32)

// drums · mid tom
const mid_tom = s("mt").struct("<~@41 A ~@9 B ~@7 A ~@7 A ~@9 C ~@5>".pickRestart({
  A: "~@13 x ~@2", B: "~@9 x ~@3 x ~@2", C: "~@7 x",
})).gain(0.48)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@33 A ~@3 A ~@3 B ~ C ~ A ~ C ~ A ~ D B A B E B A B@2 A@3 ~ A@3 F ~@3 A ~@11
>`.pickRestart({
  A: "~@7 x", B: "~@5 x ~@2", C: "~@14 x!2", D: "~@3 x ~@4", E: "~@5 x ~ x", F: "~ x",
})).gain(0.56)

// drums · crash
const crash = s("cr").struct(`<
  ~@14 A ~@7 A ~@7 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~ A ~ A ~ A ~ A ~ A ~@2 A@2 ~@2 A@2 ~@2 A@2 ~ A ~ A ~ B ~@4
>`.pickRestart({
  A: "x", B: "~ x ~@14",
})).gain(0.48)

// drums · ride
const ride = s("rd").struct("<~@14 A B@7 A B@7 C D E F ~@34 G H@2 I G H G H G J ~ K L ~@2>".pickRestart({
  A: "~ x!3", B: "x!4", C: "~@3 x!2 ~@3 x ~@2 x!2 ~@3", D: "x ~@2 x!2 ~@2 x!2 ~@3 x ~@2 x",
  E: "x ~@3 x ~@2 x!2 ~@3 x ~@2 x", F: "x ~@2 x!2 ~@3 x ~@2 x ~@4", G: "~ x!7", H: "x!8", I: "~ x!5 ~@2",
  J: "x ~ x ~@2 x ~ x ~ x ~ x ~@4", K: "~@3 x ~@3 x ~@3 x ~@4", L: "x ~@3 x ~@3 x ~@4 x ~@2",
})).gain(0.48)
// … 37 more lines

More by Michele Zarrillo