Strudelify

Als sterren aan de hemel staan

Frans Bauer

KeyE majorTempo108 bpm
0:00/0:00
// Als sterren aan de hemel staan — Frans Bauer
// 108 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// 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(108/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 · piano · "A.PIANO 1"
const piano = note(`<
  ~@9 A@2 B@2 A@2 B@2 C D E B F@2 G H ~@3 I ~@3 J ~@3 K ~@2 L M ~@4 A@2 B@2 A@2 B@2 C D E B F@2 G H ~@3 I ~@3 J ~@3 K
  ~@3 N ~@6 O P ~@3 Q ~@3 R ~@3 S ~@2 T U ~@3 V ~
>`.pickRestart({
  A: "[d#4,f#4,b4]@2 ~ [d#4,f#4,b4]@2 ~ [d#4,f#4,b4]@2 ~ [d#4,f#4,b4]@2 ~", // B
  B: "[e4,g4,b4]@2 ~ [e4,g4,b4]@2 ~ [e4,g4,b4]@2 ~ [e4,g4,b4]@2 ~", // Em
  C: "[e4,a4,c5]@2 ~ [e4,a4,c5]@2 ~ [e4,a4,c5]@2 ~ [e4,a4,c5]@2 ~", // Am
  D: "[d4,f#4,a4,c5]@2 ~ [d4,f#4,a4,c5]@2 ~ [d4,f#4,a4,c5]@2 ~ [d4,f#4,a4,c5]@2 ~", // D7
  E: "[d4,g4,b4]@2 ~ [d4,g4,b4]@2 ~ [d4,g4,b4]@2 ~ [d4,g4,b4]@2 ~", // G
  F: "[d#4,f#4,a4,b4]@2 ~ [d#4,f#4,a4,b4]@2 ~ [d#4,f#4,a4,b4]@2 ~ [d#4,f#4,a4,b4]@2 ~", // B7
  G: "[e4,g#4,b4]@2 ~ [e4,g#4,b4]@2 ~ [e4,g#4,b4]@2 ~ [e4,g#4,b4]@2 ~", // E
  H: "[e4,a4,c#5]@2 ~ [e4,a4,c#5]@2 ~ [d#4,f#4,b4]@2 ~ [d#4,f#4,b4]@2 ~", // A B
  I: "~@4 b6@2 ~@2 [c#6,d#6] ~@3 [c#6,f#6]@2 ~@2 [b5,f#6]@2 ~@6, ~@4 f#6 ~@3 f#6@2 ~@14", // C#sus2 F#5 B5
  J: "g#6@2 f#6@2 e6 ~ c#6@2 b5@2 g#5 ~ g#5@2 f#5@2 e5 ~ c#5@2 b4@2 [g#4,b4] ~, b6@4 ~@2 b5 ~@5 b5@4 ~@2 b4 ~@5, f#6 ~@5 e6@4 ~@2 f#5 ~@5 e5@5 ~", // G#m
  K: "~@3 [d#6,f#6] ~ [c#6,f#6] ~ [b5,f#6] ~@4, ~@6 c#6 ~@17", L: "~@18 b5 ~ e6@2 f#6 ~",
  M: "[f#6,g#6] ~@3 [f#6,b6]@3 ~ e6 ~ b5 ~ [c#6,e6]@2 ~@2 [b5,e6]@2 ~@2 [f#5,b5]@2 g#5 ~, b6@2 ~@10 b5 ~@11", // F#sus2 B5 C#m E5 B5
  N: "~@4 b5 ~ [e6,g#6]@3 ~ b5 ~ [f#6,a6]@3 ~ b5 ~ [g#6,b6]@3 ~@3", // E F#m G#m
  O: "~ [b5,f#6] ~ [f#5,d#6] ~ [d#5,b5] ~ [b4,f#5] ~ [f#4,d#5] ~ [d#4,b4]", // B5 D#m G#m B5 D#m G#m
  P: "~ [c6,g6] ~ [g5,e6] ~ [e5,c6] ~ [c5,g5] ~ [g4,e5] ~ [e4,c5]", // C5 C C5 C
  Q: "~@4 c7@2 ~@2 [d6,e6] ~@3 [d6,g6]@2 ~@2 [c6,g6]@2 ~@6, ~@4 g6 ~@3 g6@2 ~@14", // Dsus2 G5 C5
  R: "a6@2 g6@2 f6 ~ d6@2 c6@2 a5 ~ a5@2 g5@2 f5 ~ d5@2 c5@2 [a4,c5] ~, c7@4 ~@2 c6 ~@5 c6@4 ~@2 c5 ~@5, g6 ~@5 f6@4 ~@2 g5 ~@5 f5@5 ~", // Am
  S: "~@3 [e6,g6] ~ [d6,g6] ~ [c6,g6] ~@4, ~@6 d6 ~@17", T: "~@18 c6 ~ f6@2 g6 ~",
  U: "[g6,a6] ~@3 [g6,c7]@3 ~ f6 ~ c6 ~ [d6,f6]@2 ~@2 [c6,f6]@2 ~@2 [g5,c6]@2 a5 ~, c7@2 ~@10 c6 ~@11", // Gsus2 C5 Dm F5 C5
  V: "[d6,f6]@2 c6@2 a5 ~ [a5,c6]@2 g5@2 f5 ~ [c5,d5] ~ c5@2 a4 ~@7, c6 ~@5 g5 ~@5 f5@4 ~@8", // Dm Am Csus2
})).s("gm_piano").gain(0.18)

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

// chords · acoustic guitar steel · "+12STR GTR"
const acoustic_guitar_steel = note(`<
  ~@9 A@2 B C A@2 D@2 E F G D A@2 H I ~@20 A@2 B C A@2 D@2 E F G D A@2 H I ~@45
>`.pickRestart({
  A: "~ [f#3,b3,d#4,f#4] ~ [f#3,b3,d#4,f#4]", B: "~ [e3,g3,b3,e4] ~ [e3,g3,b3,d#4,e4]",
  C: "~ [e3,g3,b3,d#4,e4] ~ [e3,g3,b3,e4]", D: "~ [e3,g3,b3,e4] ~ [e3,g3,b3,e4]", E: "~ [e3,a3,c4,e4] ~ [e3,a3,c4,e4]",
  F: "~ [d3,a3,d4,f#4] ~ [d3,a3,d4,f#4]", G: "~ [g3,b3,d4,g4] ~ [g3,b3,d4,g4]", H: "~ [e3,g#3,b3,e4] ~ [e3,g#3,b3,e4]",
  I: "[f#3,a3,c#4,f#4]!2 [b2,b3,d#4,f#4]!2", // F#m B
})).s("gm_acoustic_guitar_steel").gain(0.06).pan(0.3)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  A B C D@2 E@2 F G H ~ I ~ H ~ J ~ K@2 L M N@2 O P B C D@2 Q@2 R@2 B C D@2 S@2 T@2 E@2 F G U@2 V@2 U@2 W@4 X@2 Y@2 Z AA
  B C D@2 Q@2 R@2 B C D@2 S@2 AB@2 AC AD AE@2 AF AG AH AI AJ AK AL@2 AM@2 AN@2 AJ AK AL@2 AO@2 AP@2 AO@2 AQ@2 AR
>`.pickRestart({
  A: "~@18 [e5,g#5]@5 ~", B: "[g#5,b5]@5 ~ [g#5,b5]@2 ~@2 [g#5,b5]@7 ~ [e5,g#5]@5 ~",
  C: "[g#5,c#6]@2 ~ [g#5,c#6] [g#5,c#6]@4 ~ [g#5,b5]@2 ~", // C#5 G#m
  D: "[[b5,d#6]@2 ~@2 [b5,d#6]@2 ~@2 [c#6,e6]@2 ~@2 [b5,d#6]@5 ~ [g#5,b5]@2 ~@2 [f#5,a5]@19 ~ [g#5,b5]@5 ~]/2", // B C#m B G#m F#m G#m
  E: "[~@4 [b5,d#6]@3 ~ [c#6,e6]@2 ~@2 [b5,d#6]@5 ~ [g#5,b5]@3 ~ [f#5,a5]@10 ~@2 [f#5,a5] ~ [e5,g#5]@4 ~@2 [d#5,f#5]@5 ~, ~@18 c6 ~@29]/2", // B C#m B G#m F#m E D#m
  F: "[b4,e5,g#5]", G: "[b4,e5,g5]@11 ~", H: "~@8 [b3,b4] [c4,c5]@2 b3, ~@22 b4 ~", I: "~@8 [b3,b4] [c4,c5]@2 [b3,b4]",
  J: "~@16 [b3,b4]@2 [c4,c5]@4 [b3,b4] ~", K: "[[c4,e4]@24 [d4,f#4]@23 ~, a3@47 ~]/2", L: "[b3,d4,g4]",
  M: "[b3,e4,g4]@23 ~", N: "[~@16 [b5,b6]@2 [c6,c7]@4 [b5,b6] ~@25, [b3,d#4,f#4]@47 ~]/2", O: "[b3,e4,g#4]",
  P: "[c#4,f#4,a4]@12 ~@6 [e5,g#5]@5 ~, ~ [b3,d#4,f#4]", // F#m E B
  Q: "[[b5,d#6]@3 ~ [b5,d#6]@3 ~ [c#6,e6]@2 ~@2 [b5,d#6]@5 ~ [g#5,b5]@3 ~ [f#5,a5]@10 ~@2 [g#5,b5] ~ [b5,d#6]@4 ~@2 [a5,c#6]@5 ~, ~@18 c6 ~@29]/2", // B C#m B G#m F#m G#m B A
  R: "[[a5,c#6]@9 ~ [g#5,b5] ~ [g#5,b5]@28 ~@2 [e5,g#5]@5 ~]/2", // A G#m E
  S: "[[b5,d#6]@3 ~ [b5,d#6]@3 ~ [c#6,e6]@2 ~@2 [b5,d#6]@5 ~ [g#5,b5]@3 ~ [f#5,a5]@10 ~@2 [f#5,a5] ~ [e5,g#5]@4 ~@2 [d#5,f#5]@5 ~]/2", // B C#m B G#m F#m E D#m
  T: "[[a4,f#5]@8 ~@2 [g#4,e5] ~ [g#4,e5]@30 [g#5,b5]@4 ~@2]/2", // D C#m G#m
  U: "[b3@8 b4 [c4,c5]@2 b3@5 ~@8, [f#3,d#4]@47 ~, ~@16 b3@6 b4 ~@25]/2", // C D#m
  V: "[~@8 [b3,b4] [c4,c5]@2 [b3,b4] ~@12, [g3,e4]@47 ~]/2", // B C B C
  W: "[~@16 [b3,b4]@2 [c4,c5]@4 [b3,b4] ~@7 g4@6 [f#4,a4]@5 ~ [g4,b4]@6 a4@12 g#4@6 g4@6 ~@12 d5@11 ~, g3@15 ~ c5@12 ~@4, e4@5 e4@5 ~@2 f#4@4]/4", // B C B F#m G
  X: "[[g4,b4]@36 [b4,e5]@5 ~ [e5,g5]@6]/2", Y: "[[d#5,b5]@3 [f#5,a5]]/2", Z: "[e5,g#5]",
  AA: "[f#5,a5]@12 ~@6 [e5,g#5]@5 ~, ~@12 [d#5,b5]@11 ~", // F#m E G#m
  AB: "[[a4,f#5]@8 ~@2 [g#4,e5] ~ [g#4,e5,g#5]@16 ~@2 [e5,g#5]@6 [f#5,a5]@5 ~ b5@5 ~, ~@41 g#5@5 ~@2]/2", // D C#m E F#m
  AC: "[a5,c#6]@23 ~", AD: "[c#6,e6]@2 [b5,d#6] [a5,c#6]", AE: "[[g#5,b5]@9 ~ [f#5,a5]@2 [e5,g#5]@35 ~]/2",
  AF: "[e5,g#5,c#6]@23 ~", AG: "[f#5,a#5,c#6]@23 ~", AH: "[d#5,f#5,b5]", AI: "~@18 [f5,a5]@5 ~, [e5,g5,c6]@23 ~",
  AJ: "[a5,c6]@5 ~ [a5,c6]@2 ~@2 [a5,c6]@7 ~ [f5,a5]@5 ~", AK: "[a5,d6]@2 ~ [a5,d6] [a5,d6]@4 ~ [a5,c6]@2 ~",
  AL: "[[c6,e6]@2 ~@2 [c6,e6]@2 ~@2 [d6,f6]@2 ~@2 [c6,e6]@5 ~ [a5,c6]@2 ~@2 [g5,a#5]@19 ~ [a5,c6]@5 ~]/2", // C Dm C Am Gm Am
  AM: "[[c6,e6]@3 ~ [c6,e6]@3 ~ [d6,f6]@2 ~@2 [c6,e6]@5 ~ [a5,c6]@3 ~ [g5,a#5]@10 ~@2 [a5,c6] ~ [c6,e6]@4 ~@2 [a#5,d6]@5 ~, ~@18 c#6 ~@29]/2", // C Dm C Am Gm Am C A#
  AN: "[[a#5,d6]@9 ~ [a5,c6] ~ [a5,c6]@28 ~@2 [f5,a5]@5 ~]/2", // A# Am F
  AO: "[[c6,e6]@3 ~ [c6,e6]@3 ~ [d6,f6]@2 ~@2 [c6,e6]@5 ~ [a5,c6]@3 ~ [g5,a#5]@10 ~@2 [g5,a#5] ~ [f5,a5]@4 ~@2 [e5,g5]@5 ~]/2", // C Dm C Am Gm F Em
  AP: "[[a#4,g5]@8 ~@2 [a4,f5] ~ [a4,f5]@30 [a5,c6]@4 ~@2]/2", // D# Dm Am
  AQ: "[[a#4,g5]@8 ~@2 [a4,f5] ~@19 c7@5 ~ [g4,g5,a#5,d#6]@5 ~ [f4,d5,f5,a#5,d6,d7]@6, ~@12 [a4,f5]@23 [a#4,d#5,d#7]@6 a#4@5 ~@2]/2", // D# Dm D# A# Dm D#5
  AR: "[f4,a4,c5,f5,a5,c6,c7]", // F
})).s("gm_string_ensemble_1").gain(0.25).pan(0.4)

// chords · electric guitar clean · "+CHORUS GT"
const electric_guitar_clean = note(`<
  ~ A@2 B@4 A C ~@16 A@2 B@4 A@4 B@4 A@2 B@2 A C ~@16 A@2 B@4 A@4 B@4 A@2 D@2 E@2 F G B H I@2 J@4 I@4 J@4 I@2 J@2 I K ~
>`.pickRestart({
  A: "~@6 [g#4,b4,e5] ~@11 [g#4,b4,e5] ~@5", B: "~@6 [f#4,b4,d#5] ~@11 [f#4,b4,d#5] ~@5",
  C: "~@6 [g4,b4,e5] ~@11 [g4,b4,e5] ~@5", D: "~@6 [e4,a4,c#5] ~@11 [e4,a4,c#5] ~@5",
  E: "~@6 [e4,g#4,b4] ~@11 [e4,g#4,b4] ~@5", F: "~@6 [e4,g#4,c#5] ~@11 [e4,g#4,c#5] ~@5",
  G: "~@6 [f#4,a#4,c#5] ~@11 [f#4,a#4,c#5] ~@5", H: "~@6 [e4,g4,c5] ~@11 [e4,g4,c5] ~@5",
  I: "~@6 [a4,c5,f5] ~@11 [a4,c5,f5] ~@5", J: "~@6 [g4,c5,e5] ~@11 [g4,c5,e5] ~@5", K: "~@6 [a4,c5,f5] ~@17",
})).s("gm_electric_guitar_clean").gain(0.25)

// chords · orchestral harp · "HARP"
const orchestral_harp = note(`<
  ~@7 A B C D@2 ~ E D@2 F@3 G H I J@3 ~@18 A B C D@2 ~ E D@2 F@3 G H I J@3 ~@45
>`.pickRestart({
  A: "~@6 [g#5,g#6] ~ [f#5,f#6] ~ [e5,e6] ~ [b4,b5] ~ [g#4,g#5] ~ [f#4,f#5] ~ [e4,e5] ~ [g#3,g#4] ~ [f#3,f#4] ~", // G# F# E B G# F# E G# …
  B: "e3 ~@5 [g5,g6] ~ [f#5,f#6] ~ [e5,e6] ~ [b4,b5] ~ [g4,g5] ~ [f#4,f#5] ~ [e4,e5] ~ [b3,b4] ~ [g3,g4] ~", // G F# E B G F# E B …
  C: "[b3,d#4] ~@2", D: "[~@12 e4 ~@11, ~@23 b3@2 ~@23, ~@24 g4 ~@23]/2", E: "f#4 ~@23",
  F: "[~@24 a4 ~@23 f#4 ~@22 b3, ~@23 [c4,e4]@2 ~@22 [a3,d4]@2 ~@23]/3", G: "d4 g4 ~@21 b3", H: "e4@2 ~@21 b3, g4 ~@23",
  I: "d#4 ~@11",
  J: "[~@24 g#4 ~@23 a4@2 ~@10 f#4 ~@11, ~@22 b3@2 ~@23 [c#4,f#4]@2 ~@10 [b3,d#4]@2 ~@11, ~@23 e4@2 ~@47]/3", // F#5 B
})).s("gm_orchestral_harp").gain(0.12)

// chords · orchestral harp · "HARP" · soft notes
const orchestral_harp_soft = note("<~@8 A B ~@3 C ~@7 D ~@22 A B ~@3 C ~@7 D ~@48>".pickRestart({
  A: "e4 ~@23", B: "~ f#4@7 ~@16", C: "[b3,d#4] ~@11", D: "f#4 ~@23",
})).s("gm_orchestral_harp").gain(0.09)

// chords · marimba
const marimba = note(`<
  ~ A@2 B@4 A C ~@16 A@2 B@4 A@4 B@4 A@2 B@2 A C ~@16 A@2 B@4 A@4 B@4 A@2 ~@8 D@2 E@4 D@4 E@4 D@2 E@2 D ~@2
>`.pickRestart({
  A: "~@14 [b4,e5] ~ [e5,g#5] ~ [b4,e5] ~@5", B: "~@14 [b4,d#5] ~ [d#5,f#5] ~ [b4,d#5] ~@5",
  C: "~@14 [b4,e5] ~ [e5,g5] ~ [b4,e5] ~@5", D: "~@14 [c5,f5] ~ [f5,a5] ~ [c5,f5] ~@5",
  E: "~@14 [c5,e5] ~ [e5,g5] ~ [c5,e5] ~@5", // C Em C
})).s("gm_marimba").gain(0.13)

// drums · kick
const kick = s("bd").struct(`<
  ~ A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2
  B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 C
>`.pickRestart({
  A: "x ~@4 x!2 ~@5", B: "x!2", C: "x",
})).gain(0.45)

// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
  ~@3 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2
  A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~
>`.pickRestart({
  A: "~@5 x ~@6",
})).gain(0.25)

// drums · rim
const rim = s("rim").struct("<~@9 [~ x ~@2]!16 ~@20 [~ x ~@2]!16 ~@45>").gain(0.3)

// drums · snare
const snare = s("sd").struct("<~ [~ x ~ x]!8 ~@16 [~ x ~ x]!20 ~@16 [~ x ~ x]!44 ~>").gain(0.35)

// drums · low tom
const low_tom = s("lt").struct(`<
  A ~@7 A ~@15 B ~@7 C ~@7 D ~@3 A ~@7 E ~@7 F ~@7 C ~@7 F ~@7 G ~@7 C ~@7 D ~@3 A ~
>`.pickRestart({
  A: "~@10 x!2", B: "~@5 x ~@4 x!2", C: "~@9 x!3", D: "~@3 x ~ x ~@2 x!2 ~ x", E: "~@8 x ~ x!2",
  F: "~@17 x!2 ~ x ~ x ~", G: "~@9 x ~ x",
})).gain(0.3)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A@8 B C B C B C B C B C B C B C B C A@20 B C B C B C B C B C B C B C B C A@44 ~
>`.pickRestart({
  A: "x!11 ~", B: "x ~ x!2 ~ x!5 ~ x", C: "x ~ x!2 ~ x!5 ~@2",
})).gain(0.25)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  A ~@7 B ~@15 C ~@7 D ~@7 E ~@3 F ~@7 G ~@7 H ~@7 D ~@7 I ~@7 J ~@7 D ~@7 E ~@3 K ~
>`.pickRestart({
  A: "~@3 x", B: "~@13 x!2 ~@3 x ~@5", C: "~ x!2 ~ x ~", D: "~@3 x!2 ~ x!2 ~@4", E: "~ x!2 ~@4 x ~@4",
  F: "~@4 x ~ x ~ x!2 ~@2", G: "~@11 x!2 ~ x ~@3 x ~@5", H: "~@6 x ~ x ~@2 x!2 ~ x ~@9",
  I: "~@6 x ~ x ~ x!3 ~ x ~ x ~@7", J: "~@3 x ~ x!4 ~@3", K: "~@7 x ~ x ~@2",
})).gain(0.3)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~ A@8 ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A@21 ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A@45 ~
>`.pickRestart({
  A: "~@11 x",
})).gain(0.25)

// drums · crash
const crash = s("cr").struct(`<
  ~ A ~@7 A ~@15 A ~@7 A ~@7 A ~@3 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@11 A
>`.pickRestart({
  A: "x",
})).gain(0.3)

// drums · tambourine
const tambourine = s("tb").struct("<~ [~@3 x]!104 ~>").gain(0.5)

// … 21 more lines

More by Frans Bauer