Strudelify
Schenk' mir diese eine Nacht cover art

Schenk' mir diese eine Nacht

Schenk' mir diese eine Nacht

Brunner & Brunner

KeyG majorTempo123 bpm
0:00/0:00
// Schenk' mir diese eine Nacht — Brunner & Brunner
// 123 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 131 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(123/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 · "FINGERDBAS"
const bass = note(`<
  ~ A@2 B C@2 D A@2 E@2 F G H@2 I J E@3 K L M N O P A@2 C@3 D A@4 Q R S T A@4 B C@2 D A U E@2 F G H@2 I J E@3 K L M N O
  P A@2 C@3 D A@4 Q R S T A@2 V W A X Y@2 Z AA AB Y@2 AC@3 AD Y@4 AE AF AG AH Y@4 AC@3 AD Y@4 AE AF AG AH Y@2 AG AH Y@2
  AI AJ AK
>`.pickRestart({
  A: "c2@2 ~ c2@3 a1@3 g1@3 c2@6 a1@3 g1@3", B: "c2@2 ~ c2@3 a1@3 g1@3 c2@6 a1@3 g1@2 ~",
  C: "g1@2 ~ g1@3 e1@3 d1@3 g1@6 e1@3 d1@3", D: "g1@2 ~ g1@3 e1@3 d1@3 g1@6 a1@3 g1@3",
  E: "c2@2 ~ c2@3 a1@3 c2@3 ~@3 c2@3 a1@3 g1@3", F: "c2@2 ~ c2@3 a1@3 c2@3 ~@3 c2@3 e1@3 f1@3",
  G: "g1@2 ~ g1@3 e1@3 d1@3 g1@3 ~@3 e1@3 d1@3", H: "g1@2 ~ g1@3 d1@3 g1@3 ~@3 g1@3 d1@3 e1@3",
  I: "g1@2 ~ g1@3 d1@3 g1@3 ~@3 g1@3 a1@3 b1@3", J: "c2@2 ~ c2@3 a1@3 g1@3 c2@5 ~ a1@3 g1@3",
  K: "f1@2 ~ f1@3 d2@3 c2@3 f1@5 ~ a1@3 c2@3", L: "f1@2 ~ f1@3 ~@3 f1@4 ~@2 f1@3 g1@3 a1@3",
  M: "c2@2 ~ c2@4 ~@2 c2@4 ~@2 c2@3 a1@3 g1@3", N: "g1@2 ~ g1@4 ~@2 g1@4 ~@2 g1@4 ~@2 g1@3",
  O: "c2@2 ~ c2@3 a1@3 g1@3 c2@2 ~ c2@3 a1@3 g1@3", P: "c2 ~@3", Q: "f1@2 ~ f1@3 d2@3 c2@3 f1@6 a1@3 c2@3",
  R: "f1@2 ~ f1@3 d2@3 c2@3 f1@6 g1@3 a1@3", S: "c2@2 ~ c2@3 a1@3 g1@3 c2@6 b1@3 a1@3",
  T: "g1@2 ~ g1@3 e1@3 d1@3 g1@6 a1@3 b1@3", U: "c2@2 ~ c2@3 a1@3 g1@2 ~ g1@6 a1@3 g1@3",
  V: "f2@2 ~ f2@3 d2@3 c2@3 f1@6 a1@3 c2@3", W: "f2@2 ~ f2@3 d2@3 c2@3 f1@6 a1@3 d2@3",
  X: "c2@2 ~ c2@3 a1@3 g1@3 c2@5 ~ c2@3 c#2@3", Y: "d2@2 ~ d2@3 b1@3 a1@3 d2@6 b1@3 a1@3",
  Z: "g1@2 ~ g1@3 e2@3 d2@3 g1@5 ~ g1@5 ~", AA: "a1@2 ~ a1@3 f#2@3 e2@3 a1@5 ~ a1@3 b1@3", AB: "d2@5 ~@19",
  AC: "a1@2 ~ a1@3 f#1@3 e1@3 a1@6 f#1@3 e1@3", AD: "a1@2 ~ a1@3 f#1@3 e1@3 a1@6 b1@3 a1@3",
  AE: "g1@2 ~ g1@3 e2@3 d2@3 g1@6 b1@3 d2@3", AF: "g1@2 ~ g1@3 e2@3 d2@3 g1@6 a1@3 b1@3",
  AG: "d2@2 ~ d2@3 b1@3 a1@3 d2@6 c#2@3 b1@3", AH: "a1@2 ~ a1@3 f#1@3 e1@3 a1@6 b1@3 c#2@3",
  AI: "d2@2 ~ d2@3 b1@3 a1@3 d2@6 b1@3 a1@2 ~", AJ: "d2@5 ~", AK: "d2 ~@7",
})).s("gm_electric_bass_finger").gain(0.48)

// other · steel drums · "STEELDRUMS"
const steel_drums = note(`<
  ~ A@3 B C D E ~@4 F G ~@2 H ~@4 I J K L M N O P Q R S N O N O T U ~@2 V W A@3 B C D E ~@4 F G ~@2 X ~@4 I J K L M N O
  P Q R S N O N O T U ~@2 V W ~@9 Y Z AA AB AC AD Y Z Y Z AE AF ~@2 AG AH Y Z AA AB AC AD Y Z Y Z AE AF ~@2 AG AH ~@2
  AI@3 AJ ~
>`.pickRestart({
  A: "[e4,c5]@5 ~@4 [g4,b4]@5 ~@4 [e4,a4]@5 ~", B: "f4 d4 f4 d4 f4 d4 f4 d4 f4 d4 f4 d4 f4 d4 f4 d4 f4 d4 f4 ~@5",
  C: "[b4,d5]@5 ~@4 a4 c5 a4 c5 a4 c5 ~@3 b4 g4 b4 g4 ~@2", // Bm
  D: "a4 f4 a4 f4 a4 f4 a4 f4 ~@2 e4 g4 e4 g4 e4 ~@3 d4 f4 d4 f4 d4 f4",
  E: "e4 c4 e4 c4 e4 c4 e4 c4 e4 c4 e4 c4 e4 c4 e4 c4 e4 c4 e4 ~@5", F: "~@9 [b3,g4]@2 ~@4 g4 ~@2 [c4,a4]@2 ~@4",
  G: "b4 g4 b4 g4 b4 g4 b4 g4 b4 g4 b4 g4 b4 g4 b4 g4 b4 g4 b4 g4 b4 g4 b4 ~",
  H: "g4 e4 ~ e4 g4 e4 ~ e4 g4 e4 ~ e4 ~@2 g4 ~@2 e4 ~ e4 ~ e4 g4@2, ~ g4 ~ g4 ~ g4!2 ~ g4!3 ~, ~@13 e4@2 e4@2 ~@7",
  I: "c5 a4 c5 a4 c5 a4 c5 a4 c5 f4 a4 f4 a4 f4 a4 f4 a4 f4 a4 f4 a4 ~@3",
  J: "g4 e4 g4 e4 g4 e4 g4 e4 g4 c4 e4 c4 e4 c4 e4 c4 e4 c4 e4 c4 e4 ~@3",
  K: "a4 f4 a4 f4 a4 f4 a4 f4 a4 g4 e4 g4 e4 g4 e4 g4 e4 g4 d4 f4 d4 f4 d4 f4",
  L: "e4 c4 e4 c4 e4 c4 e4 c4 e4 c4 e4 c4 e4 c4 e4 c4 e4 c4 e4 c4 e4 c4 e4 c4", M: "e4 ~@23",
  N: "c5 e4 c5 e4 c5 e4 c5 e4 c5 e4 b4 e4 b4 e4 b4 e4 b4 e4 a4 e4 a4 e4 a4 e4",
  O: "g4 e4 g4 e4 g4 e4 g4 e4 g4 e4 g4 e4 g4 e4 g4 e4 g4 ~@7",
  P: "d5 b4 d5 b4 d5 b4 d5 b4 d5 a4 c5 a4 c5 a4 c5 a4 c5 a4 b4 g4 b4 g4 b4 g4",
  Q: "b3 g4 b3 g4 b3 g4 b3 g4 b3 g4 b3 g4 b3 g4 b3 g4 b3 ~@2 g4 ~@3 g4",
  R: "b4 g4 b4 g4 b4 g4 b4 g4 b4 f4 a4 f4 a4 f4 a4 f4 a4 f4 e4 g4 e4 g4 e4 g4",
  S: "d4 f4 d4 f4 d4 f4 d4 f4 d4 f4 d4 f4 d4 f4 d4 f4 d4 ~@7",
  T: "d5 b4 d5 b4 d5 b4 d5 b4 d5 a4 c5 a4 c5 a4 c5 a4 c5 a4 f4 a4 f4 a4 f4 a4",
  U: "c4 f4 c4 f4 c4 f4 c4 f4 c4 f4 c4 f4 c4 f4 c4 f4 c4 ~@2 f4 ~@3 f4",
  V: "c5 e4 c5 e4 c5 e4 c5 e4 c5 e4 g4 e4 g4 e4 g4 e4 g4 e4 e5 g4 e5 g4 e5 g4",
  W: "c5 e4 c5 e4 c5 e4 c5 e4 c5 e4 c5 e4 c5 e4 c5 e4 c5 ~@7",
  X: "g4 e4 g4 e4 g4 e4 g4 e4 g4 e4 g4 e4 g4 e4 g4 e4 g4 e4 g4 e4 g4 e4 g4 ~",
  Y: "d5 f#4 d5 f#4 d5 f#4 d5 f#4 d5 f#4 c#5 f#4 c#5 f#4 c#5 f#4 c#5 f#4 b4 f#4 b4 f#4 b4 f#4",
  Z: "a4 f#4 a4 f#4 a4 f#4 a4 f#4 a4 f#4 a4 f#4 a4 f#4 a4 f#4 a4 ~@7",
  AA: "e5 c#5 e5 c#5 e5 c#5 e5 c#5 e5 b4 d5 b4 d5 b4 d5 b4 d5 b4 c#5 a4 c#5 a4 c#5 a4",
  AB: "c#4 a4 c#4 a4 c#4 a4 c#4 a4 c#4 a4 c#4 a4 c#4 a4 c#4 a4 c#4 ~@2 a4 ~@3 a4",
  AC: "c#5 a4 c#5 a4 c#5 a4 c#5 a4 c#5 g4 b4 g4 b4 g4 b4 g4 b4 g4 f#4 a4 f#4 a4 f#4 a4",
  AD: "e4 g4 e4 g4 e4 g4 e4 g4 e4 g4 e4 g4 e4 g4 e4 g4 e4 ~@7",
  AE: "e5 c#5 e5 c#5 e5 c#5 e5 c#5 e5 b4 d5 b4 d5 b4 d5 b4 d5 b4 g4 b4 g4 b4 g4 b4",
  AF: "d4 g4 d4 g4 d4 g4 d4 g4 d4 g4 d4 g4 d4 g4 d4 g4 d4 ~@2 g4 ~@3 g4",
  AG: "d5 f#4 d5 f#4 d5 f#4 d5 f#4 d5 f#4 a4 f#4 a4 f#4 a4 f#4 a4 f#4 f#5 a4 f#5 a4 f#5 a4",
  AH: "d5 f#4 d5 f#4 d5 f#4 d5 f#4 d5 f#4 d5 f#4 d5 f#4 d5 f#4 d5 ~@7",
  AI: "[f#4,d5]@5 ~@4 [a4,c#5]@5 ~@4 [f#4,b4]@5 ~", AJ: "[f#4,d5]@5 ~@19",
})).s("gm_steel_drums").gain(0.23).pan(0.6)

// other · steel drums · "STEELDRUMS" · soft notes
const steel_drums_soft = note(`<
  ~@13 A ~@2 B ~@10 C ~ D ~ E ~ C ~ C ~ F ~@3 G ~@12 A ~@2 B ~@10 C ~ D ~ E ~ C ~ C ~ F ~@3 G ~@10 H ~ I ~ J ~ H ~ H ~ K
  ~@3 L ~ H ~ I ~ J ~ H ~ H ~ K ~@3 L ~@7
>`.pickRestart({
  A: "~@23 g4", B: "~@23 e4", C: "~@17 e4 g4 e4 g4 e4 g4 e4", D: "~@17 g4 b3 ~ b3 g4 b3 ~",
  E: "~@17 f4 d4 f4 d4 f4 d4 f4", F: "~@17 f4 c4 ~ c4 f4 c4 ~", G: "~@17 e4 c5 e4 c5 e4 c5 e4",
  H: "~@17 f#4 a4 f#4 a4 f#4 a4 f#4", I: "~@17 a4 c#4 ~ c#4 a4 c#4 ~", J: "~@17 g4 e4 g4 e4 g4 e4 g4",
  K: "~@17 g4 d4 ~ d4 g4 d4 ~", L: "~@17 f#4 d5 f#4 d5 f#4 d5 f#4",
})).s("gm_steel_drums").gain(0.14).pan(0.6)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  ~ A@3 B@3 A@5 B@4 A@4 C@2 A B A D A@2 B@4 A@4 C@2 A B A@5 B@3 A@5 B@4 A@4 C@2 A B A D A@2 B@4 A@4 C@2 A B A@2 C@2 A@2
  E@2 B F G E@2 F@4 E@4 H@2 E F E@4 F@4 E@4 H@2 E F E@3 F E@3 I ~
>`.pickRestart({
  A: "[e4,g4]!8", B: "[d4,g4]!8", C: "[f4,a4]!8", D: "[e4,g4] ~@7", E: "[f#4,a4]!8", F: "[e4,a4]!8", G: "[f#4,a4] ~@7",
  H: "[g4,b4]!8", I: "[f#4,a4]@7 ~",
})).s("gm_acoustic_guitar_steel").gain(0.18).pan(0.3)

// chords · acoustic guitar nylon · "NYLON GTR"
const acoustic_guitar_nylon = note(`<
  ~@8 A B ~@6 C D ~@2 E F ~@2 G H ~@6 I J ~@6 K L M ~@2 N ~@2 O P ~@7 A D ~@2 E F ~ Q R S ~@6 T U ~@7 V W ~@2 X Y ~@2 Z
  ~@7 AA AB ~@6 AC AD ~@6 AE AF ~@6 AG AH ~@7
>`.pickRestart({
  A: "~@4 e4 f4 d4 e4", B: "c4@2 ~", C: "~@9 e4!2 ~ e4@3 f4@3 d4@3 e4@3", D: "c4@11 ~@13",
  E: "~@12 a3@3 c4@2 ~ [c4,f4]@3 [e4,g4]@3", F: "[f4,a4] ~@2",
  G: "~@9 e4!2 ~ [e4,g4]@3 [f4,a4]@3 e4!2 d#4 [d4,f4]@3, ~@6 g4 ~", H: "e4@19 ~@5, c4@13 ~@11",
  I: "~@16 f4@2 ~ f4@2 ~ d4@2, ~@15 e4@2 ~ e4@2 ~ e4@2 ~", J: "e4@11 ~@13", K: "c5@3 g4@3 e5@2",
  L: "c5@9 [e4,g4]!2 ~ [e4,g4]@3 [f4,a4]@3 [d4,f4]@3 [e4,g4]@3", M: "e4@5 ~, c4@2 ~",
  N: "~@8 [c4,a4] [d4,b4]@2 ~, ~@15 [b3,g4]@2 ~@7", O: "~@3 [e4,g4]@2 [e4,g4] [d4,f4] ~", P: "[c4,e4]@7 ~@5",
  Q: "[f4,a4]@5 ~ [g4,b4]@2 ~ [e4,g4]@5 ~ [e4,g4]@2 ~ [d4,f4]@4 ~@2", // F G Em Dm
  R: "[c4,e4]@9 c4 b3@2 [c4,g4]@3 [d4,a4]@3 [e4,g4]@3 [f4,g4]@3", S: "e4@19 ~@5, c5@2 ~",
  T: "~@19 d5 ~@2 f5@2, ~@18 c5@2 ~ e5@2 ~", U: "g5@11 ~@13",
  V: "~@4 d4@2 e4@3 f4@3 g4@3 f4@3 e4@3 g4@3, ~@3 e4@2 ~@19", W: "[f4,a4]@17 ~@7", X: "~@12 c5@2 ~ c5@3 b4@3 c5@3",
  Y: "d5@5 ~", Z: "~ c#5 e5 c#5 a5@4", AA: "~@19 e4@2 ~ g4@2, ~@21 f#4@2 ~", AB: "a4@11 ~@13",
  AC: "~@9 g4@3 [f#4,a4]@3 [g4,b4]@2 f#4 [e4,f#4]@3 [e4,f#4] ~@2, ~@18 g4 ~@2 a4@3", AD: "d4 ~@2",
  AE: "~@15 d5!2 ~ d5 e5 ~ d5 c#5@2", AF: "d5@7 ~@17",
  AG: "~@9 g4@3 [f#4,a4]@3 [g4,b4]@2 f#4 [e4,f#4]@3 [e4,a4]@3, ~@18 g4 ~@2 f#4 ~@2", AH: "f#4 ~, d4 ~@2",
})).s("gm_acoustic_guitar_nylon").gain(0.4)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note("<~@4 A@2 ~@2 B ~@36 C@2 ~@84>".pickRestart({
  A: "[~@6 b3@3 ~@7, ~ b3@5 ~@10, ~@2 d4@3 d4@4 ~@7, ~@3 g4@6 ~@7]/2",
  B: "~@6 [c4,e4,g4]!2 ~ [c4,e4,g4]!2 ~ [c4,e4,g4]@2 ~@10", C: "[~@9 g4@19 ~@20, ~@3 b3@26 ~@19, ~@6 d4@23 ~@19]/2",
})).s("gm_electric_guitar_clean").gain(0.27).pan(0.6)

// other · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note("<~@9 A@3 B@4 A@4 C@2 A D A E ~@23 A@4 B@4 A@4 C@2 A D A E ~@64>".pickRestart({
  A: "~@4 c4!2 ~@3 c4 ~@5 g3 ~@2 a3 ~@2 g3 ~@2", B: "~@4 b3!2 ~@3 b3 ~@5 g3 ~@2 a3 ~@2 g3 ~@2",
  C: "~@4 c4!2 ~@3 c4 ~@5 f3 ~@2 a3 ~@2 f3 ~@2", D: "~@4 d4!2 ~@3 d4 ~@5 g3 ~@2 b3 ~@2 d4 ~@2", E: "c4 ~@23",
})).s("gm_electric_guitar_muted").gain(0.35).pan(0.9)

// chords · synth bass 1 · "SYN BASS 1"
const synth_bass_1 = note(`<
  ~ A@3 B@3 C@5 D@4 C@4 E@2 C D C F C@2 D@4 C@4 E@2 C D C@2 A@3 B@3 C@5 D@4 C@4 E@2 C D C F C@2 D@4 C@4 E@2 C D C@2 E@2
  C@2 G@2 B H I G@2 J@4 G@4 B@2 G J G@4 J@4 G@4 B@2 G J G@3 J K@3 L ~
>`.pickRestart({
  A: "~@3 [c4,e4] ~@5 [c4,e4] ~@5 [e4,g4] ~@5 [c4,e4] ~@2", B: "~@3 [d4,g4] ~@5 [d4,g4] ~@5 [d4,g4] ~@5 [d4,g4] ~@2",
  C: "~@3 [c4,e4] ~@5 [c4,e4] ~@5 [c4,e4] ~@5 [c4,e4] ~@2", D: "~@3 [b3,d4] ~@5 [b3,d4] ~@5 [b3,d4] ~@5 [b3,d4] ~@2",
  E: "~@3 [c4,f4] ~@5 [c4,f4] ~@5 [c4,f4] ~@5 [c4,f4] ~@2", F: "[c4,e4] ~@23",
  G: "~@3 [d4,f#4] ~@5 [d4,f#4] ~@5 [d4,f#4] ~@5 [d4,f#4] ~@2", // D
  H: "~@3 [e4,a4] ~@5 [e4,a4] ~@5 [e4,a4] ~@5 [e4,a4] ~@2", I: "[f#4,a4] ~@23",
  J: "~@3 [c#4,e4] ~@5 [c#4,e4] ~@5 [c#4,e4] ~@5 [c#4,e4] ~@2", // C#m
  K: "~@3 [d4,f#4] ~@5 [d4,f#4] ~@5 [f#4,a4] ~@5 [d4,f#4] ~@2", L: "[d4,f#4] ~@23",
})).s("gm_synth_bass_1").gain(0.21).pan(0.9)

// other · epiano2 · "E.PIANO 2"
const epiano2 = note(`<
  ~@11 A B ~@2 C@2 D@2 E@2 F G H I@2 ~ J K L M N O P Q R S T U V W ~@11 X B ~@2 C@2 D@2 Y@2 F Z AA AB P ~ AC K L M N O P
  Q R S T U V W ~ AD AE AF AG AH AI AJ AK AL ~ AM AN AO AP AQ AR AS AT AU AV AW AX AY AZ ~@2 AM AN AO AP AQ AR AS AT AU
  AV AW AX AY AZ ~ AX AY BA BB@2 BC BD
>`.pickRestart({
  A: "e4@2 ~ e4@5 ~ c4@8 ~ c4@4 ~@2", B: "g3@23 ~", C: "[~@3 g4@7 ~@8 d4@3 c4@17 ~@10]/2", D: "[g3@7 ~@5]/2",
  E: "[~@3 c5@8 ~ d4@3 e4@6 f4@21 ~@6, c4@3 ~@13]/2", F: "a4@8 ~ f4@13 ~@2", G: "e4@8 ~ c4@13 ~@2",
  H: "f4@8 ~ e4@8 ~ d4@5 ~", I: "[c4@26 ~ e4@5 ~ e4@2 ~ e4@8 ~ g4@3]/2", J: "~@3 e4@4 ~@2 e4@2 ~ d4@6 ~@3 c4@3",
  K: "b3@4 ~@2 a4@3 g4@8 ~@7", L: "~@3 b4@4 ~@2 b4@2 ~ b4@6 a4@4 ~@2", M: "g4@6 f4@3 d4@7 ~@8",
  N: "~@3 f4@4 ~@2 f4@3 e4@5 ~ d4@5 ~", O: "c4@5 ~ e4@2 ~ e4@8 ~@7", P: "~@3 e4@5 ~ e4@2 ~ e4@8 ~ g4@3",
  Q: "e4@8 ~ e4@8 ~ e4@4 ~@2", R: "e4@5 ~", S: "f4@8 ~ f4@7 ~@2 f4@4 ~@2", T: "c4@11 ~",
  U: "e4@7 ~@2 c5@2 ~ g4@5 ~ e4@6", V: "d4@5 ~@3", W: "e4@7 ~@5", X: "e4@5 ~ e4@2 ~ c4@8 ~ g3@5 ~",
  Y: "[~@3 c5@8 ~ c4@5 ~ e4@3 f4@9 ~@18, c4@3 ~@13]/2", Z: "e4@8 ~@13 g3@2 ~", AA: "f4@5 ~ g4@2 ~ e4@5 ~ e4@2 ~ d4@5 ~",
  AB: "c4@11 ~@13", AC: "~@3 e4@4 ~@2 e4@3 d4@6 c4@6", AD: "c4@6 ~@3 c4@10 ~@2 c4@3, ~@6 a3@11 ~@7",
  AE: "c4@6 ~@9 a3@3 ~@3 a3@2 ~, ~@6 a3@7 ~@11, ~@9 c4@14 ~", AF: "~@9 c4@7 ~@5 e4@2 ~, c4@8 ~@10 c4@5 ~, ~@3 g3@4 ~@5",
  AG: "c4@7 ~@2 c4@7 ~@2 c4@3 g3@3", AH: "d4@7 ~@2 d4@7 ~@2 d4@3 a3@2 ~", AI: "d4@7 ~@2 d4@6 ~@3 d4@3 a3@2 ~",
  AJ: "b3@4 ~@5 d4@7 ~@2 d4@3 b3@2 ~, ~@6 b3@13 ~@5", AK: "c#4@7 ~@2 c#4@6 ~@3 c#4@3 a3@2 ~", AL: "[a3,d4] ~@3",
  AM: "~@3 f#4@4 ~@2 f#4@3 e4@6 d4@6", AN: "c#4@4 ~@2 b4@3 a4@8 ~@7", AO: "~@3 c#5@4 ~@2 c#5@2 ~ c#5@6 b4@4 ~@2",
  AP: "a4@6 g4@3 e4@7 ~@8", AQ: "~@3 g4@4 ~@2 g4@3 f#4@5 ~ e4@5 ~", AR: "d4@5 ~ f#4@2 ~ f#4@8 ~@7",
  AS: "~@3 f#4@5 ~ f#4@2 ~ f#4@8 ~ a4@3", AT: "f#4@8 ~ f#4@8 ~ f#4@4 ~@2", AU: "f#4@5 ~",
  AV: "g4@8 ~ g4@7 ~@2 g4@4 ~@2", AW: "d4@11 ~", AX: "f#4@7 ~@2 d5@2 ~ a4@5 ~ f#4@6", AY: "e4@5 ~@3", AZ: "f#4@7 ~@5",
  BA: "a3@8 ~ d4@8 ~ a3@4 ~@2", BB: "a3@8 ~ d4@8 ~ a3@5 ~", BC: "d4", BD: "d4 ~@23",
})).s("gm_epiano2").gain(0.38).pan(0.6)

// drums · kick
const kick = s("bd").struct("<~ [x!4]!128 x!2>").gain(0.54)

// drums · rim
const rim = s("rim").struct("<~@9 [~ x ~@2]!16 ~@25 [~ x ~@2]!16 ~@17 [~ x ~@2]!7 ~@41>").gain(0.54)

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

// drums · hihat
const hihat = s("hh").struct("<~ A@24 B A@15 C A@24 B A@15 C A@8 B A@37 B@2>".pickRestart({
  A: "x!6 ~ x", B: "x", C: "x!3 ~@2 x ~ x",
})).gain(0.3)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@4 A ~@3 B ~@15 C D ~@7 E ~@7 C ~@15 F ~@7 C A ~@7 E ~@15 G A ~@7 E ~@7 A ~@7 E ~@7 A ~@4 A H ~
>`.pickRestart({
  A: "~@7 x", B: "~@3 x", C: "~@12 x ~@2 x!2 ~@7", D: "~@14 x!2 ~@8", E: "~@18 x ~@2 x!2 ~", F: "~@21 x!2 ~",
  G: "~@12 x ~@8 x!2 ~", H: "~@23 x",
})).gain(0.42)

// drums · open hat
const open_hat = s("oh").struct("<~ A@24 ~ A@15 B A@24 ~ A@15 B A@8 ~ A@37 ~@2>".pickRestart({
  A: "~@3 x", B: "~@3 x ~@2 x ~",
})).gain(0.3)

// … 41 more lines

More by Brunner & Brunner