Strudelify
KeyG majorTempo70 bpm
0:00/0:00
// Always — Atlantic Starr
// 70 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 63 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(70/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 · "Bass"
const bass = note(`<
  A B C D A E F G A E H I J K J K J L M N O P Q R O P Q G A E F G A E F G J K J K J L M N O P Q R O P Q G S T U V O P Q
  R W X@2
>`.pickRestart({
  A: "g1@4 ~@2 g1 ~ d2@8", B: "g1@4 ~@2 g1 ~ c2@8", C: "c2@2 ~ c2 a1@4", D: "d2@4 ~@2 d2 ~ g1@8", E: "g1@2 ~ g1 c2@4",
  F: "c2@4 ~@2 c2 ~ a1@8", G: "d2@2 ~ d2 g1@4", H: "c2@4 ~@2 c2 ~ a1@8, ~@8 c2 ~@7",
  I: "d2@4 ~@2 d2 ~ g1 ~ g1@3 g1 g1@2", J: "c2@4 ~@2 c2 ~ c2@4 ~@2 c2 ~", K: "b1@4 ~@2 b1 ~ b1@4 ~@2 b1@2",
  L: "d#2@4 ~@2 d#2 ~ d#2@4 ~@2 d#2@2", M: "d2@4 ~@2 d2 ~ d2@4 ~@2 d2 ~", N: "d2@2 ~ d2 d2@4",
  O: "g1@4 ~@2 g1 ~ d2@4 ~@2 d2 ~", P: "g1@4 ~@2 g1 ~ c2@4 ~@2 c2@2", Q: "c2@4 ~@2 c2 ~ a1@4 ~@2 a1 ~",
  R: "d2@4 ~@2 d2 ~ g1@4 ~@2 g1@2", S: "g1@4 ~@2 g1 ~ d2@4 ~@2 d2@2", T: "g1@4 ~@2 g1 ~ c2@4 ~@2 c2 ~",
  U: "c2@4 ~@2 c2 ~ a1@4 ~@2 a1@2", V: "d2@4 ~@2 d2 ~ g1@4 ~@2 g1 ~", W: "g1@4 ~@2 g1 ~ g1@4 ~@2 g1 ~",
  X: "[g1@4 ~@2 g1 ~ g1@4 g1@6 g1@12 ~@2]/2",
})).s("gm_fretless_bass").gain(0.56)

// chords · piano
const piano = note(`<
  A B C D A E F G A E H I J K J K L M N O P Q R S P Q R T A E F G A U F V J K J K L M N W P Q R S P Q R T X Y Z AA AB Q
  R S AC AD AE
>`.pickRestart({
  A: "~ b3 d4 g4 a4 a3 d4 f#4, g2@4 d3@3 ~, ~@8 f#4 ~@7", B: "d4 b3 d4 f4 g4 g3 c4 e4, g2@4 c3@3 ~, ~@8 e4 ~@7",
  C: "~@2 e3@2 g3@2 c4@2 e4@2 e4@2 a4@2 c5 ~, c3@8 a2@7 ~, ~@8 c5 ~@7",
  D: "a4@2 f#3@2 a3@2 d4@2 [d4,b4] ~ d4@2 g4@2 b4@2, d3@4 g2@3 ~", // G
  E: "d4@2 b3@2 d4@2 f4@2 g4@2 g3@2 c4@2 e4 ~, g2@8 c3@7 ~, ~@8 e4 ~@7",
  F: "~ e3 g3 c4 e4!2 a4 c5, c3@4 a2@3 ~, ~@8 c5 ~@7", G: "a4@2 f#3@2 a3@2 d4@2 [d4,b4] ~ d4@2 g4@2 b4 ~, d3@8 g2@7 ~",
  H: "~ e3 g3 c4 e4!2 a4 c5, c3@4 a2@3 ~", I: "a4@2 f#3@2 a3@2 d4@2 [d4,b4] ~ g4 b4 d4 g4 b4 d4, d3@8 g2@7 ~",
  J: "g3@2 g3@2 g3 ~ g3@2 g3@2 g3@2 g3 ~ g3@2, c3@7 ~, [b3,e4]!4", // E5
  K: "[b3,d4,f#4]@2 ~ f#3 ~ f#3 ~ f#3, b2@15 ~, f#3 ~ [b3,d4,f#4]@2 [b3,d4,f#4]@2 [b3,d4,f#4]@2", // Bm
  L: "g3@2 g3@2 g3 ~ g3@2 g3@2 g3@2 g3 ~ g3@2, c3@7 ~, [c4,d#4]!4", // Cm
  M: "[g3,d#4]@4 a#3@2 a#3@2 a#3 ~ a#3@2 a#3 ~ a#3@2, d#3@15 ~, a#3 ~ [g3,d#4]@2 [g3,d#4]@2 [g3,d#4]@2", // Cm
  N: "a3@2 a3@2 a3 ~ a3@2 a3@2 a3@2 a3 ~ a3@2, d3@7 ~, [d4,f#4]!4", // D
  O: "a3@2 a3@2 a3 ~ a3@2 a3 ~ a3@2 [a3,e4] ~@2 a3, d3@7 d4, [d4,f#4]@4 [d4,f#4]@4 [d4,f#4]@4 ~ f#4@3", // A5 D
  P: "d4@2 d4@2 d4 ~ d4@2 a3@2 a3@2 a3 ~ a3@2, g2@2 [d4,f#4]!2, [g3,b3]@2 [g3,b3]@2 d3@3 ~", // D G
  Q: "[b3,f4]@4 d4@2 d4@2 g3 ~ g3@2 g3 ~ g3@2, g2@8 c3@7 ~, d4 ~ [b3,f4]@2 [c4,e4]@2 [c4,e4]@2", // Bdim C
  R: "g3@2 g3@2 g3 ~ g3@2 e4@2 e4@2 e4 ~ e4@2, c3@4 a2@3 ~, [c4,e4]!2 [a3,c4]!2", // C Am
  S: "[d4,f#4]@4 a3@2 a3@2 d4 ~ d4@2 d4 ~ d4@2, d3@8 g2@7 ~, a3 ~ [d4,f#4]@2 [g3,b3]@2 [g3,b3]@2", // D G
  T: "a3!4 d4!2 ~ b3, d3@8 g2@7 ~, [d4,f#4]!2 [g3,b3] g3", // D G
  U: "d4@2 b3@2 d4@2 f4@2 g4@2 g3@2 c4@2 e4 ~, g2@8 c3@7 ~, ~@8 b4 ~@7",
  V: "a4@2 f#3@2 a3@2 d4@2 d4@2 d4@2 g4@2 b4 ~, d3@8 g2@7 ~", W: "a3!4 ~ a3 ~ f#4, d3@15 ~, [d4,f#4]!3 d4",
  X: "[g3,b3]@4 d4@2 d4@2 a3 ~ a3@2 a3 ~ a3@2, g2@2 [d4,f#4]!2, d4@2 ~@2 [g3,b3]@4 d3@7 ~", // G D G
  Y: "d4@2 d4@2 d4 ~ d4@2 g3@2 g3@2 g3 ~ g3@2, g2@4 c3@3 ~, [b3,f4]!2 [c4,e4]!2", // Bdim C
  Z: "[c4,e4]@4 g3@2 g3@2 e4 ~ e4@2 e4 ~ e4@2, c3@8 a2@7 ~, g3 ~ [c4,e4]@2 [a3,c4]@2 [a3,c4]@2", // C Am
  AA: "a3@2 a3@2 a3 ~ a3@2 d4@2 d4@2 d4 ~ d4@2, d3@4 g2@3 ~, [d4,f#4]!2 [g3,b3]!2", // D G
  AB: "d4@2 d4@2 d4 ~ d4@2 a3@2 a3@2 a3 ~ a3@2, g2@2 [d4,f#4]!2, [g3,b3]@4 [g3,b3]@4 d3@7 ~", // D G
  AC: "[g4,b4]@2 ~ [g4,b4] [g4,b4]@2 ~@6 [e4,g4]@2 [d4,f#4,a4]@2, g2@7 ~, d4 ~ d4@3 ~ d4@4 d4@3 ~@3, ~@8 [e4,g4,d5]@3 c5@3 ~@2", // G Em D Em7
  AD: "d4@2 ~ [g4,b4] [g4,b4]@2 ~@6 [e4,g4]@2 [d4,f#4,a4]@2, [g2,g4,b4]@4 ~@4 [e4,g4,d5]@3 c5@3 ~@2, ~@2 d4@3 ~ d4@4 d4@3 ~@3", // G Em D G Em7
  AE: "~ [g1,g2,b4,d5]@7, ~ a4@13 ~@2", // G
})).s("gm_piano").gain(0.4)

// chords · acoustic guitar steel · "Acoustic Guitar"
const acoustic_guitar_steel = note(`<
  A B C D A E F G A E H G I J I J K L M N O P Q R O P Q S A E F G A T F G U J I J K L M V O P Q R O P Q S W X Y Z O P Q
  R AA AB AC
>`.pickRestart({
  A: "[g2,g3,d4] [g2,g3,b3,d4]!3 [d3,a3,d4,f#4]!4", // G5 G D
  B: "[g2,d4,f4] ~ [g2,b3,d4,f4]@2 [g2,b3,d4,f4]@2 [g2,b3,d4,f4]@2 [c3,g3,c4,e4]@2 [c3,g3,c4,e4]@2 [c3,g3,c4,e4]@2 [c3,g3,c4,e4]@2", // G7 C
  C: "[c3,g3,c4,e4]!4 a2 [a2,a3,c4,e4]!3", D: "[d3,a3,d4] [d3,a3,d4,f#4]!3 [g2,g3,b3,d4]!4",
  E: "[g2,b3,d4,f4]!4 c3 [c3,g3,c4,e4]!3", F: "[c3,g3,c4] [c3,g3,c4,e4]!3 [a2,a3,c4,e4]!4",
  G: "[d3,a3,d4,f#4]!4 g2 [g2,g3,b3,d4]!3", // D G
  H: "[c3,g3,c4]@2 [c3,g3,c4,e4]@2 [c3,g3,c4,e4]@2 [c3,g3,c4,e4]@2 [c3,g3,a3,c4] ~ [a2,a3,c4,e4]@2 [a2,a3,c4,e4]@2 [a2,a3,c4,e4]@2", // C5 C Am7 Am
  I: "[g3,b3]@2 [g3,b3,e4]@2 [g3,b3,e4]@2 [g3,b3,e4]@2 [g3,b3,e4]@2 [b3,e4] [g3,b3,e4]@2 [g3,b3,e4]@2 [g3,b3,e4]", // G Em E5 Em
  J: "[b3,d4,f#4]@2 [b3,d4]@2 [d4,f#4]@2 [b3,d4,f#4]@2 [b3,d4,f#4]!2 [b3,d4] [b3,d4,f#4]@2 [b3,d4,f#4] [b3,d4,f#4]@2", // Bm D Bm
  K: "[g3,c4] ~ [g3,c4,d#4]@2 [g3,c4,d#4]@2 [g3,c4,d#4]@2 [g3,c4,d#4]@2 [c4,d#4] [g3,c4,d#4]@2 [g3,c4,d#4]@2 [g3,c4,d#4]", // C5 Cm
  L: "[g3,a#3,d#4]@2 [g3,d#4]@2 [g3,a#3]@2 [g3,a#3,d#4]@2 [g3,a#3,d#4]!2 [g3,d#4] [g3,a#3,d#4]@2 [g3,a#3,d#4] [g3,a#3,d#4]@2", // D# Cm Gm D# Cm D#
  M: "[a3,d4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]@2 [d4,f#4] [a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]", // D5 D
  N: "[a3,d4,f#4]!4 ~ [a3,d4,f#4]!3", // D
  O: "[g3,d4]@2 [g3,b3,d4]@2 [g3,b3,d4]@2 [g3,b3,d4]@2 [a3,d4,f#4]@2 [d4,f#4] [a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]", // G5 G D
  P: "[b3,d4,f4]@2 [b3,f4]@2 [b3,d4]@2 [b3,d4,f4]@2 [c4,d4,e4] [g3,c4,e4] [c4,e4] [g3,c4,e4]@2 [g3,c4,e4] [g3,c4,e4]@2", // Bdim Bm Bdim C
  Q: "[g3,c4]@2 [g3,c4,e4]@2 [g3,c4,e4]@2 [g3,c4,e4]@2 [a3,c4,e4]@2 [a3,c4] [a3,c4,e4]@2 [a3,c4,e4]@2 [a3,c4,e4]", // C5 C Am
  R: "[a3,d4,f#4]@2 [d4,f#4]@2 [a3,f#4]@2 [a3,d4,f#4]@2 [g3,a3,b3] [g3,b3,d4] [g3,b3] [g3,b3,d4]@2 [g3,b3,d4] [g3,b3,d4]@2", // D G
  S: "[a3,d4,f#4]!4 [g3,b3]@2 [g3,b3,d4]!2, ~@8 d4 ~@7", // D G
  T: "[g2,b3,d4,f4]@2 [g2,b3,d4,f4]@2 [g2,b3,d4,f4]@2 [g2,b3,d4,f4]@2 g2 ~ [c3,g3,c4,e4]@2 [c3,g3,c4,e4]@2 [c3,g3,c4,e4]@2", // G7 C
  U: "[g3,b3] ~ [g3,b3,e4]@2 [g3,b3,e4]@2 [g3,b3,e4]@2 [g3,b3,e4]@2 [b3,e4] [g3,b3,e4]@2 [g3,b3,e4]@2 [g3,b3,e4]", // G Em E5 Em
  V: "[a3,d4,f#4]!4 [a3,d4,f#4]@2 [a3,d4,f#4]!2", // D
  W: "[g3,b3,d4]@2 [g3,b3]@2 [b3,d4]@2 [g3,b3,d4]@2 [d4,f#4] [a3,d4,f#4] [d4,f#4] [a3,d4,f#4]@2 [a3,d4,f#4] [a3,d4,f#4]@2", // G Bm G D
  X: "[d4,f4]@2 [b3,d4,f4]@2 [b3,d4,f4]@2 [b3,d4,f4]@2 [g3,c4,e4]@2 [c4,e4] [g3,c4,e4]@2 [g3,c4,e4]@2 [g3,c4,e4]", // Dm Bdim C
  Y: "[g3,c4,e4]@2 [c4,e4]@2 [g3,e4]@2 [g3,c4,e4]@2 [g3,a3,c4] [a3,c4,e4] [a3,c4] [a3,c4,e4]@2 [a3,c4,e4] [a3,c4,e4]@2", // C Am7 Am
  Z: "[a3,d4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]@2 [g3,b3,d4]@2 [g3,b3] [g3,b3,d4]@2 [g3,b3,d4]@2 [g3,b3,d4]", // D5 D G
  AA: "d3@2 [d3,g3,b3]@2 [d3,g3,b3]@2 [d3,g3,b3]!2 [e3,g3,d4]@2 g3 [e3,g3,c4] [c3,e3,g3]@2 [d3,f#3,a3]@2", // G Em7 C D
  AB: "[d3,g3,b3]@2 [d3,g3,b3]@2 [d3,g3,b3]@2 [d3,g3,b3]!2 [e3,g3,d4]@2 [e3,g3,d4] [e3,g3,c4] [c3,e3,g3]@2 [d3,f#3,a3]@2", // G Em7 C D
  AC: "~@2 b3@13 ~, ~ [d3,g3]@13 ~@2", // G5
})).s("gm_acoustic_guitar_steel").gain(0.24)

// chords · acoustic guitar steel · "Acoustic Guitar" · soft notes
const acoustic_guitar_steel_2 = note(`<
  A B C D A E F G A E F G H I H I J K L M N O P Q N O P ~ A E F G A R F G S I H I J K L ~ N O P Q N O P ~ T U V W N O P
  Q X ~@2
>`.pickRestart({
  A: "b3 ~@7", B: "b3 ~@15", C: "~@4 [a3,c4,e4] ~@3", D: "f#4 ~@7", E: "~@4 [g3,c4,e4] ~@3", F: "e4 ~@7",
  G: "~@4 [g3,b3,d4] ~@3", H: "e4@2 ~@8 g3 ~@5", I: "~@10 f#4 ~@5", J: "d#4 ~@9 g3 ~@5", K: "~@10 a#3 ~@5",
  L: "f#4@2 ~@8 a3 ~@5", M: "~@4 [a3,d4,f#4] ~@3", N: "b3@2 ~@8 a3 ~@5", O: "~@10 g3 ~@5", P: "e4@2 ~@8 e4 ~@5",
  Q: "~@10 d4 ~@5", R: "~@8 [g3,c4,e4] ~@7", S: "e4 ~@9 g3 ~@5", T: "~@10 a3 ~@5", U: "b3@2 ~@8 g3 ~@5",
  V: "~@10 e4 ~@5", W: "f#4@2 ~@8 d4 ~@5", X: "[g3,b3]@2 ~@8 [e3,d4] ~@5",
})).s("gm_acoustic_guitar_steel").gain(0.16)

// chords · synth strings 1 · "Strings"
const synth_strings_1 = note(`<
  ~@12 A B A B C@2 D@2 E F A G E F A G ~@8 A B A B C@2 D@2 E F A G E F A G H I@2 G J F A G K L ~
>`.pickRestart({
  A: "[e4,c5]", B: "[d4,b4]", C: "[c5 a#4, d#4]/2", D: "[d4,d5]", E: "b4 d5, d4", F: "[f4,b4] [e4,c5]", G: "d5 b4, d4",
  H: "~ d5", I: "[[f4,b4] [e4,c5]@3]/2", J: "b4@7 d5@9, d4", K: "g4@3 g4", L: "~@2 g3 e4, g5",
})).s("gm_synth_strings_1").gain(0.24)

// chords · electric guitar clean · "Electric Guitar"
const electric_guitar_clean = note(`<
  A B C D A B C D A B C E F G F G H I J@2 K L M N K L M O A B C D A B C D F G F G H I J O K L M N K L M O K L M N K L M
  N P@2 ~
>`.pickRestart({
  A: "~@4 [g3,b3,d4] ~@7 a3 ~@3", B: "~@4 [b3,d4,f4] ~@7 g3 ~@3", C: "~@4 [g3,c4,e4] ~@7 e4 ~@3",
  D: "~@4 [a3,d4,f#4] ~@7 d4 ~@3", E: "~@4 [a3,d4,f#4] ~@7 [g3,d4] ~@3", F: "~@4 [g3,b3,e4] ~@7 [g3,b3,e4] ~@3",
  G: "~@4 [b3,d4,f#4] ~@7 [b3,d4,f#4] ~@3", H: "~@4 [g3,c4,d#4] ~@7 [g3,c4,d#4] ~@3",
  I: "~@4 [g3,a#3,d#4] ~@7 [g3,a#3,d#4] ~@3", J: "~@4 [a3,d4,f#4] ~@7 [a3,d4,f#4] ~@3",
  K: "~@4 [g3,b3,d4] ~@7 [a3,d4,f#4] ~@3", L: "~@4 [b3,d4,f4] ~@7 [g3,c4,e4] ~@3",
  M: "~@4 [g3,c4,e4] ~@7 [a3,c4,e4] ~@3", N: "~@4 [a3,d4,f#4] ~@7 [g3,b3,d4] ~@3", O: "~@4 [a3,d4,f#4] ~@11",
  P: "~@4 [b3,d4] ~@11", // Bm
})).s("gm_electric_guitar_clean").gain(0.32)

// chords · electric guitar clean · "Electric Guitar" · soft notes
const electric_guitar_clean_2 = note("<A B C D A B C D A B C E ~@16 A B C D A B C D ~@27>".pickRestart({
  A: "~@12 [d4,f#4] ~@3", B: "~@12 [c4,e4] ~@3", C: "~@12 [a3,c4] ~@3", D: "~@12 [g3,b3] ~@3", E: "~@12 b3 ~@3",
})).s("gm_electric_guitar_clean").gain(0.24)

// other · piano · "Piano Add-on"
const piano_2 = note(`<
  ~@13 A ~ A ~ B ~ C ~ A ~ D ~ A ~@11 A ~ A ~ B ~@3 A ~ D ~ A ~@2 A ~ E ~@2 A ~ D ~@3
>`.pickRestart({
  A: "~@3 [b5,b6] [b5,b6]@3 ~@9", B: "~@3 [a#5,a#6] [a#5,a#6]@3 ~@9",
  C: "~@3 [f#5,d6] [f#5,d6]@3 [f#5,d6] [f#5,d6]@3 [d5,f#5] [d5,f#5]@4", D: "~@3 [d6,d7] [d6,d7]@3 ~@9",
  E: "~@3 [c6,c7] [c6,c7]@3 ~@9", // C
})).s("gm_piano").gain(0.4)

// other · pad new age · "Intro"
const pad_new_age = note("<~ [d5@6 c5 b4 c5 b4 g4@4 e4 g4] [c5!2 b4 g4 e4 e4@2 d4] [a4@6 g4 g4@9] ~@59>")
  .s("gm_pad_new_age").gain(0.64)

// drums · rim
const rim = s("rim").struct("<[~ x ~ x]!11 [~ x ~@2] ~@16 [~ x ~ x]!7 [~ x ~@2] ~@27>").gain(0.56)

// drums · snare
const snare = s("sd").struct("<~@12 A@15 B ~@8 A@7 B A@7 B A@10 ~>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2",
})).gain(0.56)

// drums · hihat
const hihat = s("hh").struct(`<
  A@3 B A@3 B A@3 C A@3 D A@3 E A@3 D A@3 F A@3 G A@3 C A H A D A@3 F A@3 D A@3 F A@3 I A@4 J H ~
>`.pickRestart({
  A: "x!8", B: "x ~ x ~ x ~ x ~ x ~ x!4 ~@2", C: "x!4 ~@2 x ~", D: "x!5 ~ x!2", E: "x ~ x!3 ~ x!2", F: "x!4 ~@4",
  G: "x ~ x ~ x ~ x ~ x ~ x ~ x!2 ~@2", H: "x!7 ~", I: "x!4 ~@2 x!2", J: "x!6 ~ x",
})).gain(0.56)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@11 A ~@15 B ~@7 C ~@3 D ~@3 B ~@7 B ~@3 E ~@7>".pickRestart({
  A: "~@8 x ~@2 x ~@2 x ~", B: "~@13 x!2 ~", C: "~@8 x ~ x!2 ~@2 x ~", D: "~@14 x!2", E: "~@6 x!2 ~@8",
})).gain(0.56)

// drums · mid tom · soft notes
const mid_tom_soft = s("mt").struct("<~@27 A ~@15 A ~@7 A ~@3 B ~@7>".pickRestart({
  A: "~@11 x ~@3 x", B: "~@11 x ~@4",
})).gain(0.16)

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

// drums · high tom
const high_tom = s("ht").struct("<~@11 A ~@15 B ~@7 A ~@3 C ~@2 D E ~@3 F ~@3 B ~@3 G ~@7>".pickRestart({
  A: "~ x", B: "~@3 x", C: "~@5 x ~@2", D: "~ x ~@2", E: "~@4 x ~ x!2 ~@4 x ~@3", F: "~@7 x", G: "~@5 x ~ x",
})).gain(0.56)

// drums · high tom · soft notes
const high_tom_soft = s("ht").struct("<~@27 A ~@15 A ~@7 A ~@3 B ~@7>".pickRestart({
  A: "~@11 x ~@4", B: "~@11 x!2 ~@3",
})).gain(0.24)

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

// drums · ride
const ride = s("rd").struct("<~@27 A ~@15 A ~@7 A ~@3 A ~@7>".pickRestart({
  A: "~ x",
})).gain(0.56)

// … 22 more lines

More by Atlantic Starr