Strudelify
Our House cover art

1982 · The Rise & Fall

Our House

Madness

KeyC majorTempo122 bpm
0:00/0:00
// Our House — Madness
// 122 bpm, 4/4, key C 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 103 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(122/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 · "BASS"
const bass = note(`<
  ~@4 A B C D E B C D E B C D E B C D E F G F H B C D E B C D E F G F H I J I K L C D E B C D M N O N P Q R S T U R V W
  F G F H U R X Y U R Z W U R AA AB U R AC AD F G F H I J I K AE AF AE AG F G F H I J AH AI@3
>`.pickRestart({
  A: "~@11 f2@5", B: "c2 ~ c2@2 ~ c2@2 ~ c2@2 ~ c2 ~@2 c2@2", C: "g1 ~ g1@2 ~ g1@2 ~ g1@2 ~ g1 ~@2 g1@2",
  D: "d2 ~ d2@2 ~ d2 ~@2 d2@2 ~ d2@3 e2@2", E: "f2 ~ f2@2 e2@4 d2 ~ d2 ~ e2@4", F: "d2@2 ~@4 d2 ~ a1@2 ~@4 a1@2",
  G: "e2@2 ~@4 e2@2 g2@2 ~@4 g2 ~", H: "e2 ~@5 e2@2 g2 ~ d2 e2 g2@2 e2 ~", I: "b1@2 ~@4 b1 ~ f#1@2 ~@4 f#1@2",
  J: "c#2@2 ~@4 c#2@2 e2@2 ~@4 e2 ~", K: "c#2 ~@5 c#2@2 e2 ~ b1 c#2 e2@2 c#2 ~",
  L: "c2 ~ c2 ~@2 c2@2 ~ c2@2 ~ c2 ~@2 c2@2", M: "f2 ~ f2@2 e2@4 d2 ~ d2 ~ e2 ~ f#1@2", N: "g1 ~@2 g1 f#1 ~@2 f#1",
  O: "a1 ~@2 a1 b1 ~@2 f#1", P: "a1 ~@2 a1 b1@2 f#2@2", Q: "c2 ~ c2@2 ~ c2@2 ~ c2@2 d2@2 e2@2 f2@2",
  R: "g2 ~ g2@2 ~ g2@2 ~ g2@3 f2@3 e2@2", S: "d2 ~ d2@2 ~ d2@2 ~ d2 ~ d2@2 d#2@2 e2@2", T: "f2 e2 d2 f2",
  U: "~@2 c2@2 ~ c2@2 ~ c2@2 d2@2 e2@2 f2@2", V: "d2 ~ d2@2 ~ d2@2 ~ d2@2 ~ f2@3 d2@2", W: "c2 a2 c2 a#2 c2 b2 c2 c3",
  X: "d2 ~ d2@2 ~ d2@2 ~ d2@3 a#2@3 a2@2", Y: "f2 e2 d2 e2", Z: "d2 ~ d2 ~@2 c2@2 ~ d2@2 ~ d2@3 c2@2",
  AA: "d2@2 d2@2 ~ d2@2 ~ d2@2 a#2@2 a2@2 g2@2", AB: "g#2 g2 f2 d2",
  AC: "d2 ~ d2@2 ~ d2 ~@2 d2@2 ~ d2@2 ~ e2@2, ~@11 a2 ~@2 b2 ~", AD: "f2 a2@2 f2 a#2@2 f2 b2 f2 b2 c3@2 f2@4",
  AE: "c2@2 ~@4 c2 ~ g1@2 ~@4 g1@2", AF: "d2@2 ~@4 d2@2 f2@2 ~@4 f2 ~", AG: "d2 ~@5 d2@2 f2 ~ c2 d2 f2@2 d2 ~",
  AH: "b1 ~@2 b1 f#1 ~@2 f#1", AI: "[c#2@2 ~@4 c#2@2 e2@2 ~@5 e2@2 b1@18 b1 ~@12]/3",
})).s("gm_electric_bass_finger").gain(0.48)

// chords · piano · "Remixed"
const piano = note(`<
  ~ A B C D E F C D G H I J K L M N O P M N Q R Q R S P T U S P V U Q R W R X Y X Y S P V U S P V Z AA AB AC AD AE AF AG
  D E F AG D W R Q R AH AI AJ AK AH AI AJ AK S P V U S P T U Q R Q R X Y AL Y AM AN AO AN Q R W R X Y X AP@3
>`.pickRestart({
  A: "[c2,c3] ~ [c2,c3]@2 ~ [c2,c3]@2 ~ [c2,c3]@3 a#2@3 a2@2", // C
  B: "[g1,g2] ~ [g1,g2]@2 ~ [g1,g2]@2 ~ [g1,g2]@3 f2@3 e2@2", // G
  C: "[d1,d2] ~ [d1,d2]@2 ~ [d1,d2]@2 ~ [d1,d2]@2 ~ [d1,d2]@3 [e1,e2]@2", // D E
  D: "[f1,f2] ~ [f1,f2]@2 [g1,g2] ~ [g1,g2]@2 [g#1,g#2] ~ [g#1,g#2]@2 [a#1,a#2] ~ [b1,b2]@2", // F G G# A# B
  E: "[c2,c3] ~ [c2,c3]@2 ~ [c2,c3]@2 ~ [c2,c3]@3 [a#1,a#2]@3 [a1,a2]@2", // C A# A
  F: "[g1,g2] ~ [g1,g2]@2 ~ [g1,g2]@2 ~ [g1,g2]@3 [f1,f2]@3 [e1,e2]@2", // G F E
  G: "[c2,c3] ~ [c2,c3]@2 ~ [c2,c3]@2 ~ [c2,c3]@3 [d2,d3]@3 [e2,e3]@2", // C D E
  H: "[g2,g3] ~ [g2,g3]@2 ~ [g2,g3]@2 ~ [g2,g3]@3 [f2,f3]@3 [e2,e3]@2", // G F E
  I: "[d2,d3] ~ [d2,d3]@2 ~ [d2,d3]@2 ~ [d2,d3]@2 ~ [d2,d3]@2 ~ [d2,d3] ~", // D
  J: "[f1,f2] ~ [f1,f2]@2 [g1,g2]@3 ~ [g#1,g#2] ~ g#1@2 [b1,b2]@3 ~, ~@10 g#2 ~@5", K: "[c2,c3]",
  L: "[g1,g2,g3,a#3,d4]@15 ~", // Gm
  M: "[d2,d3,f4] ~ [d2,d3,f4]@2 ~ [d2,d3,f4]@2 ~ [d2,d3,f4]@2 ~ [d2,d3,f4]@2 ~ [e2,e3] ~, ~@7 g4", // Dm E
  N: "[f2,f3,g#4]@15 ~", // Fm
  O: "[c2,c3,e4] ~ [c2,c3,e4]@2 ~ [c2,c3,e4]@2 ~ [c2,c3,e4]@2 ~ [c2,c3,e4]@2 ~ [c2,c3] ~, ~@7 e4", // C
  P: "[g1,g2,a#3,d4]@15 ~", Q: "[d2,d3,f#4,a4]@2 ~@4 [d2,f#4,a4]@2 [a1,a2,c4,e4]@2 ~@4 [a1,a2,c4,e4] ~, ~@6 d3 ~@9",
  R: "[e2,e3,e4,g4]@2 ~@4 [e2,e3,e4,g4] ~ [g2,g3,g4,a#4]@2 ~@4 [g2,g3]@2, ~@14 [g4,a#4] ~", // Em Gm G Gm
  S: "[c3,e4,g4] ~ [c2,c3,e4,g4]@2 ~ [c2,c3,e4,g4]@2 ~ [c2,c3,e4,g4]@2 ~ [c2,c3,e4,g4]@2 ~ [c2,c3,g4] ~, c2 ~@6 e4", // C C5
  T: "[d2,d3,f4,a4] ~ [d2,d3,f4]@2 ~ [d2,d3,f4,a4]@2 ~ [d2,d3,f4,a4]@2 ~ [d2,d3,f4,a4]@2 ~ [e2,e3,f4,a4] ~, ~@2 a4 ~@13", // Dm Fmaj7
  U: "[f2,f3,f4,g#4]@3 ~", // Fm
  V: "[d2,f4,a4] ~ [d2,d3,f4]@2 ~ [d2,d3,f4,a4]@2 ~ [d2,d3,f4,a4]@2 ~ [d2,d3,f4,a4]@2 ~ [e2,e3,f4,a4] ~, d3@2 a4 ~@13", // Dm Fmaj7
  W: "[d2,d3,f#4,a4]@2 ~@4 [f#4,a4]@2 [a1,a2,c4,e4]@2 ~@4 [a1,a2,c4,e4] ~, ~@6 [d2,d3] ~@9", // D F#m Am D
  X: "[b1,b2,d#4,f#4]@2 ~@4 [b1,d#4,f#4]@2 [f#1,f#2,a3,c#4]@2 ~@4 [f#1,f#2,a3,c#4] ~, ~@6 b2 ~@9", // B F#m
  Y: "[c#2,c#3,c#4,e4]@2 ~@4 [c#2,c#3,c#4,e4] ~ [e2,e3,e4,g4]@2 ~@4 [e2,e3]@2, ~@14 [e4,g4] ~", // C#m Em E Em
  Z: "[f2,f3,f4,g#4]@6 ~ [f#1,f#2]", AA: "[g1,g2] ~@2 [g1,g2] [f#1,f#2] ~@2 [f#1,f#2]",
  AB: "[a1,a2]@2 ~@4 [a1,a2]@2 b1@2 ~@4 [f#1,f#2] ~, ~@8 b2 ~@7", // A F#
  AC: "[g1,g2]@3 ~@3 [g1,g2]@2 [f#1,f#2]@2 ~@4 [f#1,f#2]@2", AD: "a1 ~@2 a1 [b1,b2]@4, a2 ~@5 a2 ~@9",
  AE: "[c2,c3]@2 [c2,c3]@2 ~ [c2,c3]@2 ~ [c2,c3]@2 ~ d2@3 e2@2", // C
  AF: "[g1,g2] ~ [g1,g2]@2 ~ [g1,g2]@2 ~ [g1,g2]@2 ~ f2@3 e2 ~", // G
  AG: "[d1,d2] ~ [d1,d2]@2 ~ [d1,d2]@2 ~ [d1,d2]@3 [d1,d2]@3 [e1,e2]@2", // D E
  AH: "[c2,c3,e4]@2 [c2,c3,c4,e4]@2 ~ [c2,c3,c4,e4]@2 ~ [c2,c3,c4,e4]@2 ~ [d2,d3,c4,e4]@2 ~ [e2,e3,c4,e4] ~, c4 ~@15", // C
  AI: "[g2,g3,g4,a#4] ~ [g2,g3,g4,a#4]@2 ~ [g2,g3,g4,a#4]@2 ~ [g2,g3,g4,a#4]@2 ~ [f2,f3,g4,a#4]@2 ~ [e2,e3,g4,a#4] ~", // Gm Gm7 Edim
  AJ: "[d2,d3,f4,a4] ~ [d2,d3,a4]@2 ~ [d2,d3,a4]@2 ~ [d2,d3,f4,a4]@2 ~ [d2,d3,f4,a4]@2 ~ [e2,e3,f4,a4] ~, ~@2 f4 ~@2 f4 ~@10", // Dm D5 Dm Fmaj7
  AK: "[f2,f3,f4,g#4] ~ [f2,f3,f4,g#4]@2 ~ [f2,f3,f4,g#4]@2 ~ [f2,f3,f4,g#4]@2 ~ [f2,f3,f4,g#4]@2 ~ [e3,f4,g#4] ~, ~@7 e2", // Fm E
  AL: "[b1,b2,d#4,f#4]@2 ~@4 [d#4,f#4]@2 [f#1,f#2,a3,c#4]@2 ~@4 [f#1,f#2,a3,c#4] ~, ~@6 [b1,b2] ~@9", // B D#m F#m B
  AM: "[c2,c3,e4,g4]@2 ~@4 [c2,e4,g4]@2 [g1,g2,a#3,d4]@2 ~@4 [g1,g2,a#3,d4] ~, ~@6 c3 ~@9", // C Gm
  AN: "[d2,d3,d4,f4]@2 ~@4 [d2,d3,d4,f4] ~ [f2,f3,f4,g#4]@2 ~@4 [f2,f3]@2, ~@14 [f4,g#4] ~", // Dm Fm F Fm
  AO: "[c2,c3,e4,g4]@2 ~@4 [e4,g4]@2 [g1,g2,a#3,d4]@2 ~@4 [g1,g2,a#3,d4] ~, ~@6 [c2,c3] ~@9", // C Em Gm C
  AP: "[[c#2,c#3,c#4,e4]@2 ~@4 [c#2,c#3,c#4] ~ [e2,e3,e4,g4]@2 ~@5 [e2,e3,e4,g4]@2 [b2,b3,d#4,f#4]@18 b1@2 ~@11, ~@3 e4 ~@20]/3", // C#m C# Em B
})).s("gm_piano").gain(0.27)

// other · string ensemble 1 · "Remixed"
const string_ensemble_1 = note(`<
  ~@9 A B C D E F@2 G H@2 I@2 J ~@2 K L M N O P@2 Q R S ~@3 T U T U E V W X Y@2 W L ~@8 Z AA AB@2 S ~@3 AC AD AE AF AG
  AH AI AJ AK B AL AM AN AO AP AQ AR@2 ~@20
>`.pickRestart({
  A: "[g4,g5]@15 [a4,a5]", B: "[a#4,a#5]", C: "[a4,a5]@15 ~", D: "[g#4,g#5] [a#4,a#5] [c5,c6] [d5,d6]", E: "[e5,e6]",
  F: "d6/2", G: "[f4,f5]@3 [g4,g5] [g#4,g#5]@4", H: "[g4,g5]/2", I: "[f5@20 g5@4 g#5@6 g5 f5]/2", J: "[f#4,f#5] ~@15",
  K: "~@6 g5 a#4, ~@12 g4 ~ a#5 ~", L: "[c5,c6]", M: "[a#4,a#5]@2 [g4,g5]@5 ~", N: "[d5,d6] [a4,a5]@3",
  O: "[c5,c6]@8 [g#4,g#5]@2 [f4,f5]@5 ~", P: "[[g4,g5]@27 [a4,a5] [a#4,a#5]@4]/2", Q: "[a4,a5]",
  R: "[g#4,g#5]@2 [a#4,a#5] [c5,c6]", S: "[d5,d6] ~@15", T: "[b4,f#5] ~@3 [b4,f#5] ~@3 [c#5,f#5] ~@3 [c#5,f#5] ~@3",
  U: "[c#5,f#5] ~@3 [c#5,f#5] ~@3 [b4,f#5] ~@3 [b4,f#5] ~@3", V: "[d5,d6] [e5,e6] [f5,f6]@14", W: "[f5,f6]",
  X: "~ [g5,g6] [g#5,g#6]@14", Y: "[g5,g6]/2", Z: "c4@2 e4@2 f4@2 g4@2 a4@3 g4@3 f4@2", AA: "d4",
  AB: "[~@2 e4@2 f4@2 g4@2 a4@3 g4@3 ~@2 f5@4 [g4,g5]@4 [g#4,g#5]@4 [d5,d6]@4, ~@7 f4@3 ~@6, ~ c4]/2", // G G# D
  AC: "~ [e5,e6] ~ [d5,d6] [e5,e6]@12, [d5,d6] ~@7", AD: "[g5,g6]@2 [d5,d6] ~ [d5,d6]@11 ~",
  AE: "~ [f5,f6] ~ [e5,e6] [f5,f6]@10 ~@2, [e5,e6] ~@7", AF: "[f5,f6]@2 [c5,c6] ~ [c5,c6]@8 [d5,d6]@3 ~",
  AG: "[g5,g6]@3 [a5,a6]", AH: "[a5,a6] [g5,g6] [d5,d6]@14", AI: "[f5,f6] [g5,g6] [a5,a6]@14",
  AJ: "[f5,f6] [g5,g6] [g#5,g#6]@11 ~ [c5,c6] ~", AK: "~@2 [g4,g5]@2 [c5,c6]@2 [d5,d6]@2 [e5,e6]@3 [d5,d6]@3 [c5,c6]@2",
  AL: "~@2 [a4,a5]@2 [c5,c6]@2 [d5,d6]@2 [e5,e6]@3 [d5,d6]@3 [c5,c6]@2", AM: "[g#4,g#5]@13 ~ [a#4,a#5]@2",
  AN: "[c5,c6]@7 [c#5,c#6]", AO: "[d5,d6]@7 [e5,e6]", AP: "[f5,f6]@7 [g5,g6]", AQ: "[g#5,g#6]@7 [a#5,a#6]",
  AR: "[[a5,a6]@27 ~@5]/2", // A
})).s("gm_string_ensemble_1").gain(0.27)

// chords · electric guitar clean · "Remixed"
const electric_guitar_clean = note(`<
  A B@3 ~@8 C D E ~@3 E ~ F G ~ G ~@2 E ~ C D ~@2 C H ~ H ~ I ~ I ~@2 E ~ C D ~@2 C ~@4 J K L M N K O@2 H ~ G ~@9 P Q R
  S T U V W H ~ G ~ X ~ X ~ D ~ D ~ G ~ G ~ X ~ X ~@2 Y
>`.pickRestart({
  A: "f3@3 [f2,f3]", B: "[g2@23 ~]/3", C: "f2 g2 g#2 d3", D: "c3", E: "~@4 [d5,g5] ~@5 g4@2 [d5,g5]!2 ~@2",
  F: "~@4 [c5,f5] ~@7 [c5,f5]!2 ~@2", G: "d3", H: "a2", I: "f#2",
  J: "~@2 [c3,c4]@2 [e3,e4]@2 [f3,f4]@2 [g3,g4]@3 [f3,f4]@3 [e3,e4]@2", K: "[d3,d4]@15 ~",
  L: "~@2 [d3,d4]@2 [e3,e4]@2 [f3,f4]@2 [g3,g4]@3 [f3,f4]@3 [e3,e4]@2", M: "f2 g2 g#2 d3, c4",
  N: "c4@2 [e3,d4]@2 [f3,e4]@2 [g3,f4]@2 [a3,g4]@3 [g3,f4]@3 [f3,e4]@2, c3 ~", // E7 Fmaj7 G7 A7 G7 Fmaj7
  O: "[~@2 [e3,e4]@2 [f3,f4]@2 [g3,g4]@2 [a3,a4]@3 [g3,g4]@3 f4@2 f2@4 g2@4 g#2@4 d3@4, ~@7 f3@2 ~@7, ~@4 c4@3 ~]/2", // E F G A G
  P: "~@2 c3@2 e3@2 f3@2 g3@3 f3@3 e3@2", Q: "~@4 [d5,g5] ~@5 g4@2 [d5,g5]!2 ~@2, d3",
  R: "~@2 d3@2 e3@2 f3@2 g3@3 f3@3 e3@2", S: "c3@3 d3",
  T: "~@2 [e3,c4]@2 [f3,e4]@2 [g3,f4]@2 [a3,g4]@3 [g3,f4]@3 [f3,e4]@2, c3 ~", // C Fmaj7 G7 A7 G7 Fmaj7
  U: "~@4 [d5,g5] ~@7 [d5,g5]!2 ~@2, d3, d4@3 ~", // G5
  V: "~@2 d4@2 [f3,e4]@2 [g3,f4]@2 [a3,g4]@3 [g3,f4]@3 [f3,e4]@2, ~@2 d3@13 ~", W: "f2 g2 g#2 d3, [c3,c4]@3 ~", X: "b2",
  Y: "~@3 [f#4,b4] ~@12", // B5
})).s("gm_electric_guitar_clean").gain(0.34)

// other · tenor sax
const tenor_sax = note(`<
  ~@6 A B C D E F G H ~@12 I J K D I J K L ~@12 A B M N@4 ~ O J P Q O J P R@2 S T ~ I J K D I J K D I J K D I J U B T S
  T V W V W X Y X Y S T S T V W V Z AA ~
>`.pickRestart({
  A: "g4!2 ~@2 f4!2 ~@2 e4!2 ~@2 f4!2 ~@2", B: "d4", C: "f4!2 ~@2 e4!2 ~@2 d4!2 ~@2 e4!2 ~@2", D: "c4",
  E: "g4!2 ~@2 a4!2 ~@2 a#4!2 ~@2 c5!2 ~@2", F: "a4", G: "g#4", H: "g4@3 ~", I: "g4!2 ~@2 f4!2 ~@2 g4!2 ~@4 g4 ~",
  J: "f4", K: "f4!2 ~@2 e4!2 ~@2 f4!2 ~@4 f4 ~", L: "d4 ~@7", M: "f4!2 ~@2 e4!2 ~@2 d4!2 ~@6", N: "d5/4",
  O: "c5@3 a#4@3 a4@2", P: "g#4@3 g4@3 f4@2", Q: "g4", R: "[d5@7 ~]/2", S: "d3 ~@5 f#3@2 e3 ~@7",
  T: "~@2 e3 ~ e3 ~ f#3 ~ g3 ~ f#3 ~ e3 ~ f#3 ~", U: "f4!2 ~@2 e4!2 ~@2 f4!2 ~@2 g#4@4", V: "b2 ~@5 b3@2 f#3 ~@7",
  W: "~@2 f#3 ~ c#4 ~ d#4 ~ e4 ~ d#4 ~ c#4 ~ d#4 ~", X: "c3 ~@5 c4@2 g3 ~@7",
  Y: "~@2 g3 ~ d4 ~ e4 ~ f4 ~ e4 ~ d4 ~ e4 ~", Z: "~@2 f#3 ~ c#4 ~ d#4 ~ e4 ~@2 d#4 ~ c#4 ~ d#4", AA: "~ b2@2 ~@13",
})).s("gm_tenor_sax").gain(0.36).pan(0.3)

// other · brass section · "BRASS"
const brass_section = note(`<
  ~@6 A B C D E F G@2 ~@12 H I J K H I J L ~@12 A B M N O N P ~@13 H I J K H I J K H I J K H I Q I ~@21
>`.pickRestart({
  A: "a#4!2 ~@2 a4!2 ~@2 g4!2 ~@2 a4!2 ~@2", B: "f4", C: "g#4!2 ~@2 g4!2 ~@2 f4!2 ~@2 g4!2 ~@2", D: "e4",
  E: "a#4!2 ~@2 c5!2 ~@2 d5!2 ~@2 e5!2 ~@2", F: "d5", G: "[c5@7 ~]/2", H: "a#4!2 ~@2 a4!2 ~@2 a#4!2 ~@4 a#4 ~", I: "a4",
  J: "g#4!2 ~@2 g4!2 ~@2 g#4!2 ~@4 c5 ~", K: "c5", L: "d5 ~@7", M: "g#4!2 ~@2 g4!2 ~@2 f4!2 ~@4 [f#2,f#3]@2",
  N: "[g2,g3] ~@5 [g2,g3] ~ [f#2,f#3] ~@5 [f#2,f#3] ~", O: "[a2,a3] ~@5 [a2,a3] ~ [b2,b3] ~@5 [f#2,f#3]@2",
  P: "[a2,a3] ~@5 [a2,a3] ~ [b2,b3] ~@7", Q: "g#4!2 ~@2 g4!2 ~@2 g#4!2 ~@2 c5@4",
})).s("gm_brass_section").gain(0.36).pan(0.7)

// drums · kick
const kick = s("bd").struct(`<
  ~ A@7 B A@3 B A@3 B A@3 B C@4 A@3 B A@3 B C@8 A@3 B A@3 B C@3 D A@3 B A@3 B C@4 A@3 B A@3 B A@3 B A@3 B C@19 E F G
>`.pickRestart({
  A: "x ~ x ~@2 x ~@2 x ~@2 x ~@2 x ~", B: "x!2 ~@2 x!2 ~@2", C: "x ~@2 x!2 ~@2 x", D: "x ~@2 x ~@4",
  E: "x ~@5 x ~ x ~@6 x", F: "~ x ~@14", G: "~@3 x ~@12",
})).gain(0.48)

// drums · snare
const snare = s("sd").struct("<~ [~ x ~ x]!51 [~@4 x ~@3 x!8] [~ x ~ x]!47 [~@4 x ~@6 x ~ x ~@2] ~@2>").gain(0.54)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@21 A ~ A ~@9 A ~ A ~ A ~ A ~@9 A ~ A ~@9 A ~ A ~@17 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A B C D
>`.pickRestart({
  A: "~@3 x", B: "~@15 x", C: "x", D: "~@2 x!2 ~@12",
})).gain(0.6)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@100 [~@2 x ~@4 x] ~ [~ x ~@6]>").gain(0.54)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~ A@7 B A@7 B A@3 B ~@4 A@3 B A@3 B ~@8 A@3 B A@3 B ~@3 C A@3 B A@3 B ~@4 A@3 B A@3 B A@3 B A@3 B ~@22
>`.pickRestart({
  A: "~@7 x", B: "~@2 x!2 ~@2 x!2", C: "~@2 x!2 ~@4",
})).gain(0.42)

// drums · crash
const crash = s("cr").struct(`<
  ~@13 A ~@2 B ~@4 A ~@3 A ~@2 B ~@4 A ~@3 A ~@3 A ~@2 B ~@4 A ~@3 A ~@2 B ~@3 B A ~@3 A ~@2 B ~@3 B A ~@2 B ~@4 A ~@3 A
  ~@3 A ~@3 A ~@3 A ~@2 C D E
>`.pickRestart({
  A: "x", B: "~@3 x", C: "~@15 x", D: "~ x ~@14", E: "~@3 x ~@12",
})).gain(0.54)

stack(
  bass, piano, string_ensemble_1, electric_guitar_clean, tenor_sax, brass_section, kick, snare, low_tom, hihat, mid_tom,
  open_hat, crash
)

More by Madness