Strudelify

Wie ein Stern am Horizont

Roy Black

KeyE majorTempo116 bpm
0:00/0:00
// Wie ein Stern am Horizont — Roy Black
// 116 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 99 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(116/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 B C D E F G H I@2 J K J L M C N O P Q R S P@2 N@2 T U V@2 T U N W U X R V U Y M C Z J L F C AA AB AC AD X R AE U
  AF AG@2 U@2 AE S T P N O P Q R S U AH AI@2 AJ AK AL AM AN AO AP AQ AN AK AL AR AK AS AP AT AN AU AV AR AN AW AX ~
>`.pickRestart({
  A: "a1@2 ~ a1@3 ~@2", B: "a1@3 ~@3 a1@8 ~@2", C: "e1@3 ~@3 e1@8 ~@2", D: "e1@2 ~@4 e1@9 ~", E: "b1@2 ~ b1@4 ~",
  F: "b1 ~@2 b1@4 ~", G: "e1@4 ~@2 e1@7 ~@3", H: "e1 ~@2 e1@3 b1 c#2", I: "e1@2 ~@4 e1@7 ~@3", J: "b1@2 ~@4 b1@9 ~",
  K: "b1@3 ~@3 b1@8 ~@2", L: "b1@3 ~@3 b1@9 ~", M: "e1@3 ~@3 e1@7 ~@3", N: "a1@4 ~@2 a1 ~ a1@5 ~@3",
  O: "a1@4 ~@2 a1 ~ a1@6 ~@2", P: "e1@4 ~@2 e1 ~ e1@6 ~@2", Q: "c#2@4 ~@2 c#2 ~ c#2@6 ~@2",
  R: "f#1@4 ~@2 f#1 ~ f#1@5 ~@3", S: "b1@4 ~@2 b1 ~ b1@6 ~@2", T: "e1@4 ~@2 e1 ~ e1@4 ~@4", U: "e1@4 ~@2 e1 ~ e1@5 ~@3",
  V: "b1@4 ~@2 b1 ~ b1@5 ~@3", W: "a1@4 ~@2 a1 ~ a1@5 ~ g#1 ~", X: "c#2@4 ~@2 c#2 ~ c#2@5 ~@3",
  Y: "e1@4 ~@2 e1 ~ e1@4 b1@2 c#2@2", Z: "b1@3 ~@3 b1@7 ~@3", AA: "e1 ~@2 e1@4 ~", AB: "a1@2 ~@4 a1 ~ a1@5 ~@3",
  AC: "a1@3 ~@3 a1 ~ a1@5 ~@3", AD: "e1@3 ~@3 e1 ~ e1@5 ~@3", AE: "b1@4 ~@2 b1 ~ b1@4 ~@4",
  AF: "e1@4 ~@2 e1@2 e2@4 e1@3 ~", AG: "a1@4 ~@2 a1 ~ a1@4 ~@4", AH: "e1@4 ~@2 e1@2 f1@3 ~ f1@3 ~",
  AI: "a#1@4 ~@2 a#1 ~ a#1@6 ~@2", AJ: "f1@4 ~@2 f1 ~ f1@4 ~@4", AK: "f1@4 ~@2 f1 ~ f1@6 ~@2",
  AL: "c2@5 ~ c2 ~ c2@6 ~@2", AM: "c2@4 ~@2 c2 ~ c2@6 ~@2", AN: "f1@4 ~@2 f1 ~ f1@5 ~@3", AO: "f1@4 ~@2 f1 ~ f1@7 ~",
  AP: "a#1@4 ~@2 a#1 ~ a#1@4 ~@4", AQ: "a#1@5 ~ a#1 ~ a#1@4 ~@4", AR: "c2@4 ~@2 c2 ~ c2@5 ~@3",
  AS: "f1@2 ~ f1 f2 c2 f1@2", AT: "a#1@4 ~@2 a#1 ~ a#1@5 ~@3", AU: "d2@4 ~@2 d2 ~ d2@6 ~@2",
  AV: "g1@4 ~@2 g1 ~ g1@5 ~@3", AW: "f1@4 ~@2 f1 ~ f1@4 c2@2 d2@2", AX: "f1@7 ~",
})).s("gm_electric_bass_finger").gain(0.3)

// bass · synth bass 2 · "SYNTH BASS"
const bass_2 = note(`<
  ~ A@2 B@2 C@2 B@4 C@4 B@2 A@2 B D E C B@2 A@2 B@2 C@2 B@2 A@2 B D E C B@4 C@4 B@2 A@2 B D E C B@2 A@2 B@2 C@2 B@2 A@2
  B D E C B F G@2 H@2 I@2 H@2 G@2 H@2 I@2 H@2 G@2 H J K I H@2 L ~
>`.pickRestart({
  A: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~", B: "e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~",
  C: "b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~", D: "c#2 ~ c#2 ~ c#2 ~ c#2 ~ c#2 ~ c#2 ~ c#2 ~ c#2 ~",
  E: "f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~", F: "e1 ~ e1 ~ e1 ~ e1 ~ f1 ~ f1 ~ f1 ~ f1 ~",
  G: "a#1 ~ a#1 ~ a#1 ~ a#1 ~ a#1 ~ a#1 ~ a#1 ~ a#1 ~", H: "f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~",
  I: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~", J: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~",
  K: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~", L: "f1 ~@15",
})).s("gm_synth_bass_2").gain(0.3)

// chords · epiano2 · "E.PIANO"
const epiano2 = note(`<
  ~ A@4 B@2 C@6 D@2 E@2 F@3 G H I J@2 K@2 L@2 M@2 N@2 O@2 P Q R S T@4 U@4 V@2 W@2 X Y Z AA@3 AB@2 AC@2 AD@4 AE AF@2 AG
  AH AI@3 AJ@2 AK@2 AL@2 AM AN AO AP@3 AQ@2 AR@3 AS@2 AT@7
>`.pickRestart({
  A: "[~@3 b4 ~@3 e4@4 ~@2 [a4,c#5]@2 ~@4 e4@6 ~ e4 f#4 ~ e4@2 ~, a3@19 ~@3 a3@10 e3@12 ~@20, ~@2 e4@10 ~@12 e4@5 ~ e4@6 b3@11 ~@3 b3@13 ~, ~@4 a4@7 ~ a4@10 ~@10 [g#4,b4]@20 ~@4 g#4@8, ~@4 c#5@8 ~@15 b4@5]/4", // A G#m
  B: "[[d#4,f#4]@9 ~@2 f#4@5, b3@8 ~ b3@7, ~@20 d#4@9 ~@3]/2", // D#m
  C: "[~@25 f#4 ~@6 e4@18 ~@8 f#4@3 ~ e4 ~ d#4@5 ~ d#4@12 ~@4 f#4@10, g#3@10 g#4@12 ~@2 g#4@2 ~@4 g#3@7 ~@59, ~ b3@6 b4@8 ~ g#4@10 ~ g#4@5 f#4@10 ~@6, ~@4 e4@20 ~@2 e4@5 ~@21 e4@9 ~@23 d#4@12, ~@6 f#4@16 ~@6 b3@21 ~ b3@19 ~ b3@11 ~ b3@11 ~@3]/6",
  D: "[~ d#4@8 ~@4 b4@3, b3@13 ~@5 f#3@13 ~, ~@5 b3@3, ~@22 d#4@9 ~]/2",
  E: "[~@10 [e4,g#4]@2 [f#4,a4]@2 g#4@7 ~ [b3,g#4]@10, e3@7 ~, [e4,g#4]@9 ~@5 b4@17 ~, ~@6 b3@16 d4@7 ~@3]/2", // E F#m E
  F: "[~@2 e4@3 ~@6 c#5@6 ~@2 b4@3 [e4,g#4]@2, a3@5 ~@3, a4@12 ~@6 e4@13 ~@3 e4@9 ~@5, c#4@6 ~@4 c#4@19 ~@19, ~@20 a4@14 ~@2 g#4@7 ~@5]/3", // E
  G: "f4@6 ~@4 c#4@5 ~, c#5@13 ~@3, ~@3 g#4@5, ~@8 f4@7 ~", H: "~@2 g#4 ~@4 c#4, c#4@3 ~, ~ f#4@2 a4@5, ~@5 f#4@3",
  I: "~@2 d#4@9 ~ d#4@2 b3@2, b3@3 ~",
  J: "[~@2 [e4,g#4] [f#4,a4] ~ e4@2 ~@6 d4@2 ~, g#3@21 ~ g#3@9 ~, ~@2 b3@20 ~@2 b3@7 ~, ~@4 [g#4,b4]@9 ~@3, ~@14 [d4,e4]@11 ~@7]/2", // E F#m G#m Dsus2
  K: "[~@14 c#4@10 ~@4 a4@3 ~, ~ a3@10 ~ a3@3 ~, ~@4 c#4@9 ~@13 c#4@5 ~, ~@6 a4@19 ~@7, ~@10 e4@15 ~@7]/2",
  L: "[~@4 b3@10 ~@8 g#4@9 ~, g#4@9 ~ b4@6, e4@8 ~ e4@6 ~, g#3@14 ~@2 b3@13 ~@3]/2", M: "[[d#4,f#4]@7 ~, b3@3 ~]/2",
  N: "[~@8 g#4@2 [f#4,a4]@2 g#4@3 ~ [d4,g#4]@13 ~@3, ~@2 g#3@27 ~@3, ~@4 b3@25 ~@3, ~@6 e4@6 b4@17 ~@3]/2", // F#m Ddim
  O: "[[a3,c#4]@11 ~@7 b4 ~ a5@11 ~, a4@7 a3@7 ~@2, ~@4 c#4@3 ~, ~@17 e4@11 ~@4, ~@19 c#5@13]/2", // A
  P: "~@3 b4@5, g#3, ~ e4@7, ~ g#4@3", Q: "~ g#4, ~@2 c#4@13 ~", R: "~@2 c#4@5 ~, a4@7 ~, ~@2 f#4@11 ~@3",
  S: "[d#4,f#4], b3@7 ~", // D#m
  T: "[~@4 f#4@2 ~@4 e5@8 ~@6 g#4@2 ~@2 g#4@29 ~@7, e3@3 ~@5, ~ b3@11 ~@20, ~@6 g#4@13 ~ [e4,c#5]@5 ~ e4@32 ~@6, ~@22 b4@5 ~@37]/4", // C#m
  U: "[~@14 f#4@10 ~@2 c#4 d#4 c#4@2 ~@2 d#4@27 ~@5, ~@10 b3@16 ~@4 b3@29 ~@5, ~@12 d#4@12 ~@2 f#4@33 ~@5]/4",
  V: "[~@10 g#4@2 f#4@2 ~@12 d4@5 ~, ~ g#3@9 b3@6, ~@2 b3@7 e4@7, ~@3 e4@4 g#4@9, ~ b4@3]/2",
  W: "[[a3,c#4]@2 ~ e4, a4@5 b3 ~@2, ~@9 a3@6 ~, ~@11 c#4@5]/2", X: "~@3 g#4@5, g#3@7 ~@9, ~ b3@6 ~, ~ e4@3",
  Y: "~@2 c#5@5 ~, c#4@7 ~, ~@2 f4@13 ~", Z: "~@2 f#4@13 ~, c#4@13 ~@3",
  AA: "[[b3,d#4,f#4]@13 ~@3 e4@4 [e4,g#4]@2 [f#4,a4]@2 b4@4 [e4,g#4]@3 ~ [b3,d4,e4,g#4]@15 ~, ~@15 g#3@22 ~@11, ~@8 g#4 ~@7]/3", // B E F#m E E7
  AB: "[~@4 e4@7 ~@9 [a4,c#5]@9 ~@3, a4@15 ~ c#4@4 ~@12, [a3,c#4]@5 ~@2 a3@3 ~@6, ~@9 e4@5 ~@2]/2", // A
  AC: "[e4@18 ~@4 f#4@2 g#4@7 ~, [g#4,b4]@10 e4@5 ~, ~@9 b3@6 ~]/2", // G#m
  AD: "[[d#4,f#4]@20 ~@2 d#4@8 ~@2 [e4,g#4]@10 ~@2 f#4 ~@7 d4@9 ~@3, b3@18 ~@2 b3@9 ~ b3@10 ~@2 b3@18 ~@4, ~@43 e4@7 f#4@11 ~@3, ~@46 b4@15 ~@3, ~@48 g#4@13 ~@3]/4", // D#m E
  AE: "[a3,c#4]@13 ~@3, a4", // A
  AF: "[~@3 b4 ~@2 a5@7 ~@3 [b4,g#5]@8 ~@2 [g#4,e5]@6, a3@13 ~@2 g#3@8 ~@9, ~ c#4@3 c#5@12 ~@16, ~@2 e4@13 ~ e4@16]/2", // E C#m
  AG: "c#4@2 ~ d#4 ~@3 e5@7 ~@2, c#5@3 c#5@4 ~, g#4@4 ~ g#4@9 ~@2, ~ c#4 e4@6",
  AH: "~ a4@5 ~@2, [c#4,f#4]@13 ~@3, c#5@7 ~@9", // F#5
  AI: "[[b3,d#4,f#4]@13 ~@3 g#4@18 ~@6 [c4,f4,a4]@6 ~@2, ~@5 b3@3 ~@8, ~ e4 ~]/3", // B F
  AJ: "[d4@6 ~@2 f4 ~ f4@5 ~, [f4,a#4]@8 d5@7 ~, ~@14 d4@15 ~@3, ~@9 a#4@6 ~]/2", // A#5
  AK: "[c4@15 ~@3 f4@2 g4@2 ~@2 f4@7 ~, [f4,a4]@18 ~@2 c5@11 ~, ~ c4, ~@11 a4@4 ~]/2", // F
  AL: "[~@4 c4@22 ~@2 [a#3,e4]@3 ~, e4@27 ~@5, ~ g4@13 ~@2]/2", // A#dim
  AM: "f4@7 ~@3 [f4,a4] [g4,a#4] c5@2 a4@2, a3@7 ~, ~@12 a4 ~ f4 ~", AN: "[d#4,f4,a4]@13 ~@3", AO: "[d4,f4,a#4]@7 ~",
  AP: "[~@3 d5@4 ~ [a4,c5]@9 ~@3 c5@3 ~, ~@2 d4@11 ~@3 c4@5 ~@15 g4@4 ~@8, ~@4 f4@9 ~@2 f4@16 ~@3 f4@12 ~@2, ~@19 a4@4 ~]/3", // Am
  AQ: "[e4@15 ~@5 g4@9 ~@3, [g4,c5]@5 ~@3, ~@18 e4@11 ~@3]/2", // C5
  AR: "[~@24 d#4@6 ~@2 [f4,a#4]@15 ~, c4@16 d#5@6 f4@9 d4@14 ~@3, ~@2 f4@16 ~@2 a4@9 ~@19, ~@10 a4@8 c5@11 ~@19, ~@14 f5@15 ~@19]/3", // A#5
  AS: "[~@2 f4@5 ~ [f4,a4]@7 ~, a#4@15 ~@17, d4@12 ~@3 c4@7 ~@10, ~@2 d5@13 ~@17]/2", // F
  AT: "[~@4 e5@2 ~@10 [g4,a#4]@14 ~@4 a#4@11 ~@3 [f4,a4]@10 ~@2 a4@2 ~@10 a4@2 g4@2 f4@2 ~@4 f4@16 ~@14, d4@27 ~@4 c4@14 ~@2 c4@5 ~@7 g4@11 ~@10 [c4,a4]@18 ~@14, ~ f4@9 a4@2 f4@13 ~@7 [e4,c5]@13 ~@13 f4@14 ~@6 f3@20 ~@14, ~@2 a4@6 d5@6 ~@48 c5@17 ~@33, ~@3 d5@2 ~ f5@8 ~@98]/7", // Gm F C
})).s("gm_epiano2").gain(0.48).pan(0.3)

// chords · electric guitar jazz · "JAZZ GTR"
const electric_guitar_jazz = note(`<
  ~@11 A@2 ~@2 B@2 ~@6 C@2 ~@6 D@2 ~@10 E@2 ~@2 F@2 ~@6 G@2 ~@6 H@2 ~@14 I@2 ~@6 J@2 ~@10
>`.pickRestart({
  A: "[~@6 b4@9 ~]/2", B: "[~@3 e5@4 ~]/2", C: "[~@4 g#3@2 ~@2 e4@2 g#4@2 b4@2 e5@17 ~, ~@3 b3@2 ~@11]/2",
  D: "[~@4 g#3@2 ~@2 e4@2 g#4@2 b4@2 [g#4,e5]@15 ~@3, ~@3 b3@2 ~@11]/2", E: "[~@12 b4@19 ~]/2", F: "[~@6 e5@9 ~]/2",
  G: "[~@8 e4@2 g#4@2 b4@2 [g#4,e5]@17 ~, ~@4 g#3@7 ~@21, ~@6 b3@5 ~@21]/2", // C#m
  H: "[~@5 g#4 b4 [g#4,e5]@8 ~, ~ g#3@2 ~@5, ~@3 b3@3 ~@10, ~@2 e4 ~@5]/2", // C#m
  I: "[~@6 a#3 ~ f4@2 a4@2 c5@2 [a4,f5]@16 ~@2, ~@4 a3@7 ~@21, ~@6 c4@5 ~@21]/2", // Dm
  J: "[~@8 f4@2 a4@2 c5@2 [a4,f5]@17 ~, ~ a3@2 ~@5, ~@3 c4@3 ~@10]/2", // Dm
})).s("gm_electric_guitar_jazz").gain(0.48).pan(0.6)

// chords · pizzicato strings · "PIZZICATO"
const pizzicato_strings = note(`<
  ~ A@2 B@2 C D B@4 D@4 B@2 A@2 B E F D B@2 A@2 B@2 G@2 B@2 A@2 B H F D B@4 D@4 B@2 A@2 B E F D B@2 A@2 B@2 D@2 B@2 A@2
  B H F D B I J@2 K@2 L M K N J@2 K@2 O M K P J@2 K Q R S K T U ~
>`.pickRestart({
  A: "[c#5,e5,a5] ~ [c#5,e5,a5] ~@3 [c#5,e5,a5] ~@3 [c#5,e5,a5] ~ [c#5,e5,a5] ~@3", // A
  B: "[b4,e5,g#5] ~ [b4,e5,g#5] ~@3 [b4,e5,g#5] ~@3 [b4,e5,g#5] ~ [b4,e5,g#5] ~@3", // E
  C: "[b4,d#5,a5] ~@3 [b4,d#5,a5] ~ [b4,d#5,a5] ~@3 [b4,d#5,a5] ~ [b4,d#5,a5] ~@3", // B7
  D: "[b4,d#5,a5] ~ [b4,d#5,a5] ~@3 [b4,d#5,a5] ~@3 [b4,d#5,a5] ~ [b4,d#5,a5] ~@3", // B7
  E: "[c#5,f5,g#5] ~ [c#5,f5,g#5] ~@3 [c#5,f5,g#5] ~@3 [c#5,f5,g#5] ~ [c#5,f5,g#5] ~@3", // C#
  F: "[c#5,f#5,a5] ~ [c#5,f#5,a5] ~@3 [c#5,f#5,a5] ~@3 [c#5,f#5,a5] ~ [c#5,f#5,a5] ~@3", // F#m
  G: "[b4,d#5,f#5] ~ [b4,d#5,f#5] ~@3 [b4,d#5,f#5] ~@3 [b4,d#5,f#5] ~ [b4,d#5,f#5] ~@3", // B
  H: "[c#5,e5,g#5] ~ [c#5,e5,g#5] ~@3 [c#5,e5,g#5] ~@3 [c#5,e5,g#5] ~ [c#5,e5,g#5] ~@3", // C#m
  I: "[b4,e5,g#5] ~ [b4,e5,g#5] ~@3 [b4,e5,g#5] ~@3 [d#5,f5,a5] ~ [d#5,f5,a5] ~@3", // E F7
  J: "[d5,f5,a#5] ~ [d5,f5,a#5] ~@3 [d5,f5,a#5] ~@3 [d5,f5,a#5] ~ [d5,f5,a#5] ~@3", // A#
  K: "[c5,f5,a5] ~ [c5,f5,a5] ~@3 [c5,f5,a5] ~@3 [c5,f5,a5] ~ [c5,f5,a5] ~@3", // F
  L: "[c5,e5,a#5] ~ [c5,e5,a#5] ~@3 [c5,e5,a#5] ~@3 [c5,e5,a#5] ~ [c5,e5,a#5] ~@3", // C7
  M: "[c5,e5,a#5] ~ [c5,e5,a#5] ~@3 [c5,e5,a#5] ~@3 [c5,e5,g5] ~ [c5,e5,g5] ~@3", // C7 C
  N: "[c5,d#5,a5] ~ [c5,d#5,a5] ~@3 [c5,d#5,a5] ~@3 [c5,d#5,a5] ~ [c5,d#5,a5] ~@3", // Adim
  O: "[c5,e5,g5] ~ [c5,e5,g5] ~@3 [c5,e5,g5] ~@3 [c5,e5,g5] ~ [c5,e5,g5] ~@3", // C
  P: "[c5,f5,a5] ~ [c5,f5,a5] ~@3 [c5,d#5,a5] ~@3 [c5,d#5,a5] ~ [c5,d#5,a5] ~@3", // F Adim
  Q: "[d5,f5,a5] ~ [d5,f5,a5] ~@3 [d5,f5,a5] ~@3 [d5,f5,a5] ~ [d5,f5,a5] ~@3", // Dm
  R: "[a#4,d5,g5] ~ [a#4,d5,g5] ~@3 [a#4,d5,g5] ~@3 [a#4,d5,g5] ~ [a#4,d5,g5] ~@3", // Gm
  S: "[a#4,e5,g5] ~ [a#4,e5,g5] ~@3 [a#4,e5,g5] ~@3 [a#4,e5,g5] ~ [a#4,e5,g5] ~@3", // Edim
  T: "[a4,c5,f5] ~ [a4,c5,f5] ~@3 [a4,c5,f5] ~@3 [a4,c5,f5] ~ [a4,c5,f5] ~@3", U: "[a4,c5,f5] ~@15",
})).s("gm_pizzicato_strings").gain(0.35).pan(0.7)

// chords · synth strings 1 · "SYN STRING"
const synth_strings_1 = note(`<
  ~ A@2 B@6 C@6 D@2 A@2 E@6 A@2 F@6 A@2 G@2 H@6 I@4 J@2 A@2 K@2 L@4 A@2 M@2 N@4 A@2 O@6 P@2 Q@4 R@2 S@2 T@2 U@2 V@2 P@2
  W@7 ~
>`.pickRestart({
  A: "[[c#4,e4,a4]@31 ~]/2", B: "[[e4,g#4]@31 ~ [d#4,f#4,a4]@32 [e4,g#4]@31 ~, b3@95 ~]/6",
  C: "[[e4,g#4]@31 [d#4,f#4,a4]@64 ~, b3@95 ~]/6", D: "[~@20 d4@11 ~, [b3,e4,g#4]@31 ~]/2",
  E: "[e4@14 ~@2 f4@15 ~ a3@15 ~ d#4@15 ~@17 d4@15 ~, [b3,g#4]@31 c#4@16 ~ b3@46 ~@2, ~@15 c#4@15 ~ f#4@32 [e4,g#4]@31 ~@2]/6", // E
  F: "[[e4,g#4]@30 ~@2 [d#4,f#4]@31 [e4,g#4]@32 ~, b3@47 ~, ~@31 a4@31 ~@34]/6", G: "[b3@15 c#4@17, [e4,g#4]]/2",
  H: "[~@15 d#4@15 ~@2 g#4@64, [f#4,a4]@31 ~ e4@62 ~@2, ~@5 b3@27]/6", I: "[[d#4,f#4,a4]@63 ~]/4",
  J: "[~@22 d4@9 ~, [b3,e4,g#4]@31 ~]/2", K: "[e4@14 ~@2 f4@15 ~, [b3,g#4]@31 ~, ~@15 c#4@16 ~]/2",
  L: "[[a3,c#4]@16 d#4@15 ~@17 d4@14 ~@2, f#4@31 e4@30 ~@3, ~@8 b3@23 ~, ~@16 g#4@15 ~]/4", M: "[[b3,e4,g#4]@31 ~]/2",
  N: "[[d#4,f#4,a4]@30 ~ [e4,g#4]@31 ~@2, b3@31 ~]/4", // D#dim E
  O: "[b3@14 ~@34 d#4@14 ~@2 [e4,g#4]@22 ~@2 [c4,f4,a4]@7 ~, [e4,g#4] [f#4,a4] ~, ~@16 c#4@31 ~ b3@37 ~@11]/6", // E F E F#m
  P: "[[d4,f4,a#4]@31 ~]/2", Q: "[[f4,a4]@30 ~@2 [e4,g4,a#4]@31 ~, c4@63 ~]/4", R: "[~@16 d#4@15 ~, [c4,f4,a4]@31 ~]/2",
  S: "[d4,f4,a#4]/2", T: "[[c4,f4,a4]@31 ~]/2", U: "[[c4,e4,g4,a#4]@31 ~]/2", V: "[~@15 d#4@16 ~, [c4,f4,a4]@31 ~]/2",
  W: "[c4@16 ~@32 e4@14 ~ [f4,a4]@47 ~@2, [f4,a4]@32 [g4,a#4]@31 ~@49, ~@16 d4@30 ~@2 c4@63 ~]/7", // F Gm
})).s("gm_synth_strings_1").gain(0.3)

// drums · kick
const kick = s("bd").struct("<~ [x ~@2 x ~@4]!16 [x ~@2 x!2 ~@3]!24 [x ~@2 x ~@4]!8 [x ~@2 x!2 ~@3]!48 x ~>").gain(0.64)

// drums · rim
const rim = s("rim").struct("<~ A@8 B@7 ~ C@7 ~@17 A@7 C@8 ~@43>".pickRestart({
  A: "~ x ~ x", B: "~@3 x", C: "~ x ~@2",
})).gain(0.57)

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

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

// drums · hihat
const hihat = s("hh").struct("<[~@12 x!3 ~] [x!8]!96 x ~>").gain(0.36)

// drums · mid tom
const mid_tom = s("mt").struct("<~@24 A ~@7 B ~@23 B ~@7 C ~@7 D ~@7 C ~@7 C ~@7 C ~@2>".pickRestart({
  A: "~@3 x!2 ~@3", B: "~@4 x!2 ~@2", C: "~@4 x!3 ~", D: "~@5 x!2 ~",
})).gain(0.57)

// drums · high tom
const high_tom = s("ht").struct("<~@24 A ~@7 B ~@23 B ~@7 B ~@7 C ~@7 B ~@7 B ~@7 B ~@2>".pickRestart({
  A: "~ x!2 ~@4 x", B: "~ x!3 ~@4", C: "~ x!4 ~@3",
})).gain(0.57)

// drums · crash
const crash = s("cr").struct("<~@17 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~>".pickRestart({
  A: "x",
})).gain(0.43)

// drums · claves
const claves = s("clave:2").struct("<~ [~@2 x ~@2 x ~@2]!12 [~ x ~ x] [~@2 x ~@2 x ~@2]!83 ~@2>").gain(2.1)

stack(
  bass, bass_2, epiano2, electric_guitar_jazz, pizzicato_strings, synth_strings_1, kick, rim, snare, low_tom, hihat,
  mid_tom, high_tom, crash, claves
)

More by Roy Black