Strudelify

Noisy Nights

UZEB

KeyB majorTempo114 bpm
0:00/0:00
// Noisy Nights — UZEB
// 114 bpm, 4/4, key B major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: Full arrangement: all 135 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(114/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 · electric guitar clean
const electric_guitar_clean = note(`<
  ~@8 A B C D A E F G H I J@2 K L M@2 N@2 O@2 P L Q@2 R S T@2 U V W@3 X Y@2 Z AA AB@2 U AC AD@2 P L AE AF ~@10 AE I AG
  AH P I AI@2 AJ@2 AK@3 AA AL@4 AM@4 AN@2 Z AO AP AQ AE AR AS@2 AT ~@3 AU AV@2 ~ AW AX@2 ~ AU AV@2 ~ AW AX@2 ~ AU AV@2 ~
  AW AX@2 ~ AU AV@2 ~ AW AX@2 ~@2
>`.pickRestart({
  A: "~@2 [f#4,g#4,b4,c#5]!4 ~@2 [f#4,g#4,b4,c#5] ~@2 [f#4,g#4,b4,c#5] ~@4", // F#sus4
  B: "~@2 [d#3,g#3] ~@2 [f3,g#3] ~ [d3,f#3] [c#4,d4] d#4 c#4 ~ b3@2 [c#4,d4] ~", // G#5 Fm D Dmaj7
  C: "~@2 [f#4,g#4,b4,c#5]@2 [f#4,g#4,b4,c#5]!2 ~@2 [f#4,g#4,b4,c#5] ~@2 [f#4,g#4,b4,c#5] ~@4", // F#sus4
  D: "f#3 g#3 ~ [f#3,g#3] ~ [f3,g#3] ~ f#3 g#3 ~ b3 ~ f#3 g#3 ~@2", // F#sus2 Fm
  E: "~ d4 d#4 f#4 [c#4,d4,d#4] ~ b3 ~ c#4 ~ c#4 ~ [c4,c#4] b3 g#3 ~", // C#maj7
  F: "~@2 [f#4,g#4,b4,c#5]@2 ~ [f#4,g#4,b4,c#5] ~@2 [f#4,g#4,b4,c#5] ~@2 [f#4,g#4,b4,c#5] ~@4", // F#sus4
  G: "~ f#3 g#3 b3 c#4 [c#4,d4] b3 ~ c#4 b3 g#3 f#3 [d3,d#3] g#3 f#3 ~", H: "~@4 [g#3,b3,c#4,f#4]@9 ~@3",
  I: "[b3,c#4,f#4]@7 ~ [a#3,c4,f#4]@8", J: "[~@4 [g#3,b3,c#4,f#4]@17 ~@3 [g3,a#3,c#4,e4]@7 ~]/2",
  K: "~@2 c#4@5 ~, ~@3 [g#3,b3,f#4]@10 ~@3", L: "[b3,c#4,f#4]@7 ~ [a#3,c4,f#4]@7 ~",
  M: "[[g#3,b3]@15 ~ [b3,c#4]@11 ~@5, f#4@27 ~@5, c#4 ~@31]/2", // G#m Bsus2
  N: "[~@2 [g#3,b3,c#4,f#4]@5 [b3,c#4,f#4]@4 ~ [a#3,c4,f#4]@4]/2", // G#m7 Bsus2 Cm7b5
  O: "[~@2 [g#3,b3,c#4,f#4]@7 ~@3 [g3,a#3,c#4,f#4]@4]/2", P: "~@4 [g#3,b3,c#4,f#4]@11 ~",
  Q: "[[g#3,b3,c#4,f#4]@27 ~@5]/2", R: "[g#3,b3,c#4]", S: "~ [g#3,b3,c#4] ~@4 [g#3,b3,c#4]@7 ~@3",
  T: "[[g3,b3,d4,f#4]@11 ~@3 [g3,a#3,c#4,f#4]@6 ~@2 [g3,a#3,c#4,e4]@9 ~]/2", U: "~ [g#3,b3,c#4,f#4]@3",
  V: "~@2 [g#3,b3,c#4,f#4] ~@5 [g#3,b3,c#4,f#4]@6 ~@2", // G#m7
  W: "[[g3,b3,d4,f#4]@11 ~@3 [g3,e4]@7 ~ [g3,b3,e4]@8 [g#3,b3,f#4]@18, ~@14 c#4@16 c#4 ~@17]/3", // Gmaj7 C Em G#m7
  X: "~ [g#3,b3,c#4,f#4] ~@4 [g#3,b3,c#4,f#4]@8 ~@2", // G#m7
  Y: "[[g3,b3,d4,f#4]@12 ~@2 [g3,a#3,c#4,f#4]@6 ~@2 [g3,a#3,c#4,e4]@9 ~]/2", Z: "[g#3,b3,c#4,f#4]",
  AA: "~ [g#3,b3,c#4,f#4] ~@4 [g#3,b3,c#4,f#4]@9 ~", // G#m7
  AB: "[[g3,b3,d4,f#4]@11 ~@3 [g3,a#3]@8 [g3,a#3]@9 ~, ~@14 [c#4,e4]@17 ~]/2", // Gmaj7 Gm C#m
  AC: "~@4 [b3,c#4,f#4]@3 ~ [a#3,c4,f#4]@8", AD: "[~@4 [g#3,b3,c#4,f#4]@15 ~@9 [g3,c#4,e4]@4]/2",
  AE: "[g#3,b3,c#4,f#4]@15 ~", AF: "[b3,c#4,f#4]@7 ~ [g3,a#3,c#4,e4]@7 ~", AG: "~@3 [g#3,b3,c#4,f#4]@13",
  AH: "~@2 [b3,c#4,f#4]@3 ~@3 [a#3,c4,f#4]@3 ~ [a#3,c4,f#4]@3 ~", // Bsus2 Cm7b5
  AI: "[~@4 [g#3,b3,c#4,f#4]@8 ~@2 [b3,c#4,f#4]@7 ~ [a#3,c4,f#4]@9 ~]/2", // G#m7 Bsus2 Cm7b5
  AJ: "[[g#3,b3,c#4]@25 ~ [g#3,b3,c#4,f#4] ~@2 [g#3,b3,c#4,f#4] ~@2]/2", // C#7 G#m7
  AK: "[[g3,b3,d4,f#4]@12 ~@2 [g3,a#3,c#4,f#4]@7 ~ [g3,a#3,c#4,e4]@8 [g#3,b3,f#4]@18, ~@30 c#4 ~@17]/3", // Gmaj7 F# Gdim G#m7
  AL: "[[g3,b3,d4,f#4]@12 ~@2 [g3,c#4,e4]@14 ~@2 [g#3,b3,c#4,f#4]@19 ~ [g#3,b3,c#4,f#4] ~@5 [g#3,b3,c#4,f#4]@6 ~@2]/4", // Gmaj7 C#dim G#m7
  AM: "[[g3,b3,d4,f#4]@11 ~@3 [g3,a#3,c#4,f#4]@7 ~ [g3,a#3,c#4,e4]@6 ~@10 f#4@7 ~ [b3,c#4,f#4]@14 g#3 ~@3, ~@30 [g#3,b3,d#4]@15 ~ g#3@12 ~@6, ~@19 c#4 ~@12]/4", // Gmaj7 F# Gdim Bsus2 G#m
  AN: "[[g3,b3,d4,f#4]@6 ~ [g3,c#4,e4]@8 ~]/2", AO: "~@2 [g#3,b3,c#4,f#4] ~@3 [g#3,b3,c#4,f#4]@8 ~@2",
  AP: "[g3,b3,d4,f#4]@13 ~@3", AQ: "~@2 [g3,a#3,c#4,f#4]@5 ~ [g3,a#3,c#4,e4]@7 ~",
  AR: "~ [g#3,b3,c#4,f#4] ~@6 [g#3,b3,c#4,f#4]@7 ~", // G#m7
  AS: "[[g3,b3,d4,f#4]@11 ~@3 [g3,e4]@7 ~ [g3,a3,e4]@8 ~@2, ~@7 c#4@8 ~]/2", AT: "[e2,b2]@15 ~, [b3,b4]@3 ~",
  AU: "~@4 [d#4,g#4,b4] ~@3 [c#4,f#4,a#4] ~@3 [b3,d#4,g#4] ~@3", // G#m F# G#m
  AV: "[[c#4,f#4,a#4] ~@2 [c#4,f#4,a#4] ~@2 [d#4,g#4,b4] ~ [b3,c#4,f#4]@2 ~@4 [b3,c#4,f#4]@5 ~ [b3,d#4,f#4]@12]/2", // F# G#m Bsus2 B
  AW: "~@4 [d#4,g#4,b4]@2 ~@2 [c#4,f#4,a#4] ~@3 [b3,d#4,g#4] ~@3", // G#m F# G#m
  AX: "[[c#4,f#4,a#4] ~@2 [c#4,f#4,a#4] ~@2 [d#4,g#4,b4] ~ [b3,c#4,f#4] ~@5 c#4@5 ~ d#4@10 ~@2, ~@7 [b3,f#4]@8 ~]/2", // F# G#m Bsus2 B5
})).s("gm_electric_guitar_clean").gain(0.17).pan(0.4)

// bass · slap bass 2
const bass = note(`<
  ~ A B@2 C@2 D@2 E@2 F@2 E@2 G@2 E@6 H@2 E@8 I J K L I M N O P J K L I M N Q E@2 F@2 E@2 G@2 ~@2 R ~ R S R ~ R S E@2
  F@2 E@2 G@2 I T K L I M N Q I J K L I M N Q I T K L I M N Q U@4 E@2 F@2 E@2 G@2 E@6 V@2 E@2 W@2 E@4 F@2 E@2 G@2 E@2 ~
>`.pickRestart({
  A: "~@15 g#0", B: "[a#0@2 g#0 a#0@2 ~@6 g#0 a#0@2 g#0 a#0@2 ~@14 g#0]/2",
  C: "[a#0@2 g#0 a#0@2 ~@6 g#0 a#0@2 g#0 a#0@2 ~@6 g#0 a#0@2 g#0 a#0@2 ~@3]/2",
  D: "[~@11 g#0 a#0@2 g#0 a#0@2 ~@6 g#0 a#0 ~ g#0 a#0@2 ~@3]/2",
  E: "[f#1@2 f#2 g1 g#1!2 ~@5 b1@2 ~ e1@4 e2 f1 f#1!2 ~@10]/2",
  F: "[f#1@2 f#2 g1 g#1!2 ~@5 b1@2 ~ e1@4 e2 f1 f#1!2 ~@2 g#3 ~ f#3 g#3 ~@2 c#3 d#3]/2",
  G: "[f#1@2 f#2 g1 g#1!2 ~@5 b1@2 ~ e1@4 e2 f1 f#1!2 ~@2 c#3 d#3 b2 c#3 g#2 b2 f#2 b2]/2",
  H: "[f#1@2 f#2 g1 g#1!2 ~@5 b1@2 ~ e1@4 e2 f1 f#1!2 ~@6 c#4 d#4 g#3 b3]/2", I: "g#1 ~@2 g#1 d#2@2 b1 ~@9",
  J: "~ g#1 ~ g#1 d#2@2 c#2 ~ b1 ~ c#2 ~ g#1@2 ~@2", K: "e1 ~@2 e1 c#2@2 b1 ~@9",
  L: "~ e1 ~ e1 c#2 ~ b1 ~ g#1@2 b1 ~ e1@2 ~@2", M: "~ g#1 ~ g#1 d#2@2 c#2@2 b1@2 c#2@2 g#1@2 ~@2",
  N: "e1 ~@2 e1 b1@2 g1 ~@9", O: "~ f#1 ~ f#1 c#2@2 a#1 ~ d#2@2 c#2 ~ a#1 ~ g#1@2", P: "~@3 g#1 d#2@2 b1 ~@9",
  Q: "~ f#1 ~@2 f#1@2 f#2 ~ d#2@2 d#1@2 d#2@2 d#1 ~, ~@3 f#2@2 ~@11", R: "f#0 f#1 f#0 g0 g#0!2 g#1 g#0 ~@8",
  S: "~@9 d#1 d#2 d#1 d#2!2 ~@2", T: "~ g#1 ~ g#1 d#2 ~ c#2 ~ b1 ~ c#2 ~ g#1@2 ~@2", U: "b1!16",
  V: "[f#1@2 f#2 g1 g#1!2 ~@2 g#3 ~ f#3 b1@2 ~ c#3 d#3 ~@2 e2 f1 f#1!2 ~@10, ~@11 g#3 ~@2 e1@4 ~@14]/2",
  W: "[f#1@2 f#2 g1 g#1!2 ~@2 c#3 d#3 b2 c#3 g#2 b2 f#2 b2 ~@2 e2 f1 f#1!2 ~@10, ~@11 b1@2 ~ e1@4 ~@14]/2",
})).s("gm_slap_bass_2").gain(0.33)

// chords · electric guitar clean
const electric_guitar_clean_2 = note("<A@8 ~@40 B@8 ~@42 C D C D E@32 ~>".pickRestart({
  A: "~ a#1!2 ~ a#1 ~ a#1!2 ~ a#1 ~ a#1 ~ a#1!3",
  B: "[d#3,g#3]!2 [g#2,d#3]!2 [d#3,g#3]!2 d#3!2 [d#3,g#3]!2 d#3!2 [d#3,g#3]!2 [g#2,d#3]!2", // G#5
  C: "[f#3,b3] b1!2 [d#3,g#3] b1 [e3,a3] b1!2 [f#3,b3] b1 [f#3,b3] b1 [f#3,a3] [b1,f#3,b3] b1!2", // B5 G#5 A5 B5 F#m B5
  D: "~ b1!2 [d#3,g#3] b1 [e3,a3] b1!2 [f#3,b3] b1 [f#3,b3] b1 [f#3,a3] [b1,f#3,b3] b1!2, [f#3,b3] ~@7", // G#5 A5 B5 F#m B5
  E: "[g#3,c#4] g#2!2 [g#3,c#4] g#2 [g#3,c#4]!2 g#2 [b3,d#4] ~ g#2 [b3,d#4] g#2 [b3,d#4]!2 g#2", // C#5 B
})).s("gm_electric_guitar_clean").gain(0.15).pan(0.3)

// chords · electric guitar clean · soft notes
const electric_guitar_clean_3 = note("<~@48 [~@6 g#2!2 ~@2 g#2!2 ~@4]!8 ~@46 [~@9 g#2 ~@6]!32 ~>")
  .s("gm_electric_guitar_clean").gain(0.06).pan(0.3)

// other · distortion guitar
const distortion_guitar = note("<~@90 A@2 B@2 C@2 D@2 E ~@36>".pickRestart({
  A: "[a#4@4 a#4@4 a#4@4 b4 ~ g#4@8 d#4 ~ [f4,g#4] ~ b4@2 g#4@3 ~]/2", // Fm
  B: "[a#4@3 ~ a#4@4 a#4@3 ~ b4@2 g4@7 ~ g#4 a#4 g#4@6 ~@2]/2",
  C: "[a#4@4 a#4@4 a#4@4 b4@2 g#4@5 ~ [c#5,d#5] ~ c#5 ~ g#4@2 f#4@4 ~@2]/2", // C#sus2
  D: "[d5@2 d5@2 d5@2 d5@2 d5@2 e5 ~ d5@2 c#5@4 e4@2 d#4@2 ~@2 e4 ~ f#4 ~ g4@2 c#5@2]/2", E: "b4@5 ~@11",
})).s("gm_distortion_guitar").gain(0.21).pan(0.6)

// chords · synth strings 2
const synth_strings_2 = note(`<
  ~@32 A@2 B@2 C@2 D@6 E@2 F@2 ~@26 G@4 H@2 I J K@2 L@4 M@2 N@4 O@2 P@2 ~@6 Q@3 ~@5 R@3 ~@5 S@3 ~@5 T@3 ~@4
>`.pickRestart({
  A: "[~@14 f#5@17 b3, [g#3,b4,c#5]]/2", B: "[[e4,b4,d5]@14 ~@7 f#5@2 ~ e5@7 ~, g4@31 ~, ~@14 [a#4,c#5]@17 ~]/2",
  C: "[~@8 f#5@23 b3, [g#3,f#4,b4]@31 ~, c#5@7 ~@9]/2", // G#m7
  D: "[[e3,g4,b4,d5,f#5]@13 ~ [f#3,g4,c#5,e5]@9 ~ [d#4,g4,c#5,e5]@5 ~ [g#3,f#4,b4,c#5,f#5]@16 [g#3,f#4,b4]@17 ~ [g4,b4,d5]@13 ~ [g4,a#4]@7 ~ [e4,g4,a#4]@10, ~@46 f#5@39 ~ e5@8 ~@2, ~@78 c#5@17 ~]/6", // Em7 C#dim G#m7 G Gm Edim
  E: "[[g#3,f#4,b4,c#5,f#5]@7 [g#3,f#4,b4,d#5,f#5]@9]/2", // G#m7
  F: "[[e4,g4,b4,d5,f#5]@14 [g4,e5]@8 [d#3,g4,e5]@9 ~, ~@14 c#5@17 ~]/2", // Em7 C D#
  G: "[[g#3,f#4]@13 ~ g#3@17 ~ g4@12 e4 ~ [e4,g4,a#4,c#5]@7 ~ [g4,a#4,c#5,e5]@9 ~, [b4,c#5]@31 ~ e4@11 ~@21, ~@7 f#5@15 ~@10]/4", // G#7 Edim Gdim Bsus2
  H: "[f#4@5 ~ g#4@8 ~@10 d#5@7 ~, [g#3,b4]@31 ~, c#5@23 ~@9, d#4@9 ~@7, ~@15 f#4@15 ~@2]/2", I: "[e3,e4,g4,b4,d5,f#5]",
  J: "[f#3,g4] [d#3,a4], c#5@15 ~", K: "[~ f#4@13 ~@17 b3, [g#3,b4]@31 ~]/2",
  L: "[[e4,g4,b4,d5]@15 ~ g4@7 ~ e5@6 ~ [g#3,d#4]@16 ~ f#4@9 ~@7, f#5@23 ~@8 [b4,c#5,f#5]@31 ~@2, ~@16 [e4,a#4,c#5]@15 f#4@4 ~@12 g#3@15 ~@2]/4", // Em7 G#5 Bsus2 A#dim
  M: "[[g4,b4,d5,f#5]@14 c#5@9 ~ [c#5,e5]@7 ~, e4@3 ~, ~@14 g4@17 ~]/2", // Gmaj7 C#m
  N: "[[g#4,b4,c#5]@12 g#3 ~ f#4@12 ~@2 g#4@3 b3 [g4,b4]@12 e4 ~ [e4,g4,a#4,f#5]@10 [g4,e5]@7 ~, g#3@11 ~@3 f#5@31 ~@19, ~@14 [g#3,b4,c#5]@18 d5@11 ~@21, ~@16 e3 ~@15]/4", // C#7 G Edim C C#7
  O: "[[d#4,c#5]@14 d#5@17 ~, [g#3,f#4,b4]@31 ~, ~@14 d#4@15 ~@3]/2", // D#7 G#m7
  P: "[[e3,g4,b4,d5,f#5]@14 a4@7 ~ [d#3,g4]@9 ~, e4@11 ~@5, ~@14 [c#5,e5]@17 ~]/2", // Em7 D# C#m
  Q: "[~@14 [c#5,f#5]@7 ~ [c5,f#5]@7 ~ [c#5,f#5]@15 ~@3, ~@30 b4@13 ~@5, ~@15 f#4@5 ~@4]/3", // F#5 Cdim F#5
  R: "[~@14 [c#5,f#5]@7 ~ [c5,f#5]@7 ~ [b4,c#5,f#5]@12 ~@6, ~@15 f#4@5 ~@4]/3", // F#5 Cdim Bsus2
  S: "[~@14 [c#5,f#5]@8 [c5,f#5]@7 ~ [c#5,f#5]@14 ~@4, ~@5 [f#4,b4]@2 ~]/3", // F#5 Cdim F#5 B5
  T: "[~@14 [c#5,f#5]@7 ~ [c5,f#5]@8 c#5@17 ~, ~@30 b4@13 ~@5, ~@30 f#4@11 ~@7]/3", // F#5 Cdim
})).s("gm_synth_strings_2").gain(0.13)

// chords · synth strings 2 · soft notes
const synth_strings_2_soft = note(`<
  ~@32 A@2 ~@4 B C D@2 E@2 ~@2 F@2 ~@26 G@2 H@2 I@2 ~ J K@2 ~ L M N O@2 ~@2 P@2 Q@2 ~@33 R@2 ~@4
>`.pickRestart({
  A: "[~@7 d#4@7 ~@2, f#4@31 ~]/2", B: "e4@13 ~@3", C: "~@8 d#3@5 ~@3", D: "[~@14 d#5@17 ~]/2",
  E: "[e4@13 ~ e4@7 ~@11]/2", F: "[~@14 f#3@7 ~@11]/2", G: "[~@15 g#4@8 ~ f#4@7 b3]/2",
  H: "[b4@12 ~@2 f#5@7 ~ e4@9 ~]/2", I: "[~@24 d#4@6 ~ b3, ~@5 f#5@27]/2", J: "e5",
  K: "[~ d#5 ~@14 g#4@7 ~ f#4@6 ~@2, ~ c#5@30 ~, ~ f#5]/2", L: "~@7 g4@7 ~@2", M: "~@5 g#4@10 ~", N: "~@15 b3",
  O: "[~@14 e5@10 d#3@7 b4]/2", P: "[~ e4@10 ~@13 [e4,a#4]@7 ~, ~@14 c#5@17 ~]/2", Q: "[~@4 f#5@27 b3]/2",
  R: "[~@14 f#5@17 ~]/2",
})).s("gm_synth_strings_2").gain(0.06)

// chords · electric guitar muted
const electric_guitar_muted = note("<A B A B A B A B ~@127>".pickRestart({
  A: "[f3,a#3] ~@2 [d3,g3] ~ [d#3,g#3] ~@2 [f3,a#3] ~ [f3,a#3] ~ [f3,g#3] [f3,a#3] ~@2", // A#5 G5 G#5 A#5 Fm A#5
  B: "[f3,a#3]@2 ~ [d3,g3] ~ [d#3,g#3] ~@2 [f3,a#3] ~ [f3,a#3] ~ [f3,g#3] [f3,a#3] ~@2", // A#5 G5 G#5 A#5 Fm A#5
})).s("gm_electric_guitar_muted").gain(0.3).pan(0.7)

// other · orchestra hit
const orchestra_hit = note("<~@8 A ~@6 B ~@8 C ~@3 D ~@19 E ~@16 F ~@36 G ~@30 H ~>".pickRestart({
  A: "[g#4,g#5,g#6] ~@7", B: "~@11 [b5,b6] ~@2 [g#5,g#6] ~", C: "[g#5,g#6] ~@15", D: "f#5@2 ~ g#5 ~@12",
  E: "[g#4,g#5] ~@15", F: "[f#5,f#6]@2 ~ [g#5,g#6]@2 ~@11, ~@3 f#5 ~@12", G: "[g#4,g#5,d#6,g#6]@3 ~@13",
  H: "~@15 [g#4,g#5]", // G#
})).s("gm_orchestra_hit").gain(0.31)

// chords · piano
const piano = note("<~@102 A B@2 ~ C D@2 ~ A B@2 ~ C D@2 ~ A B@2 ~ C D@2 ~ A B@2 ~ C D@2 ~@2>".pickRestart({
  A: "~@4 [d#4,g#4,b4] ~@3 [c#4,f#4,a#4] ~@3 [b3,d#4,g#4] ~@3", // G#m F# G#m
  B: "[[c#4,f#4] ~@2 [c#4,f#4] ~@2 [d#4,g#4,b4] ~ [c#4,f#4]@2 ~@4 [b3,c#4,f#4]@5 ~ [b3,d#4,f#4]@12, a#4@2 ~ a#4@2 ~@3 b3 ~@23]/2", // F#5 G#m F#5 Bsus2 B
  C: "~@4 [g#4,b4]@2 ~@2 [c#4,f#4,a#4] ~@3 [b3,d#4,g#4] ~@3, ~@4 d#4 ~@11", // G#m F# G#m
  D: "[[c#4,f#4,a#4] ~@2 [f#4,a#4] ~@2 [d#4,g#4,b4] ~ [b3,c#4,f#4] ~@5 c#4@5 ~ d#4@10 ~@2, ~@3 c#4@2 ~@9 [b3,f#4]@16 ~@2]/2", // F# G#m Bsus2 B5
})).s("gm_piano").gain(0.27).pan(0.6)

// drums · kick
const kick = s("bd").struct(`<
  ~@8 A B A B A B A B A B A B A B A B A B A B A B A B C D C D C D C E F D C D C D C D A B A B A B A G H ~ I ~ J ~ K ~ J
  L A B A B A B A M C D C D C D C D C D C D C D C D C D C D C D C D N@4 A B A B A B A B A B A B A B A B A B A B A B A B
  A B A B A B A B ~
>`.pickRestart({
  A: "x ~@2 x ~@7 x ~@2 x ~", B: "~@3 x ~@12", C: "x ~@2 x ~@2 x ~@9", D: "~ x ~ x ~@4 x ~@7",
  E: "~ x ~ x ~@4 x ~@5 x ~", F: "~@3 x ~@2 x ~@9", G: "~@3 x ~@6 x!2 ~@2 x!2", H: "x ~@14 x", I: "~ x ~@2",
  J: "x!8 ~@8", K: "x!6 ~@10", L: "~@10 x!2 ~@4", M: "~@3 x ~@3 x ~@5 x ~@2", N: "x ~@2 x ~@12",
})).gain(0.49)

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

// drums · low tom
const low_tom = s("lt").struct("<~@7 A ~@7 B ~@15 A ~@24 C@2 ~@39 A ~@3 D ~@15 E ~@7 F ~@7 G ~>".pickRestart({
  A: "~@12 x!4", B: "~@11 x!3 ~@2", C: "~@12 x ~ x!2", D: "~@11 x ~@3 x", E: "~@9 x!7", F: "~@3 x",
  G: "~@4 x ~@2 x ~@3 x ~@4",
})).gain(0.49)

// drums · low tom · soft notes
const low_tom_soft = s("lt").struct("<~@133 [~@5 x!2 ~ x!3 ~ x ~@3] ~>").gain(0.27)

// drums · pedal hat
const pedal_hat = s("hh").struct(`<
  ~@8
  [~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2]!48
  ~@2
  [x!16]!8
  [~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2]!68
  ~
>`).gain(0.27)

// drums · mid tom
const mid_tom = s("mt").struct("<~@7 A ~@7 B ~@15 C ~@24 D@2 ~@59 E ~@15 F ~>".pickRestart({
  A: "~@8 x!4 ~@4", B: "~@5 x ~@2", C: "~@10 x!2 ~@4", D: "~@12 x ~ x!2", E: "~@5 x!4 ~@7", F: "x!5 ~@11",
})).gain(0.44)

// drums · open hat
const open_hat = s("oh").struct("<~@8 [x!4]!48 ~@10 [x!4]!68 ~>").gain(0.33)

// … 34 more lines

More by UZEB