Strudelify

Get Outta My Dreams, Get Into My Car

Billy Ocean

KeyE majorTempo120 bpm
0:00/0:00
// Get Outta My Dreams, Get Into My Car — Billy Ocean
// 120 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 147 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/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 · slap bass 2 · "BRIGHT DIGITAL BASS"
const bass = note(`<
  ~@10 A@3 B C D E F G F G H I F G J K L M N O P O Q R S R S R S R S R S R S T U B C D V F G F G H I F G J K L M N O P O
  Q R S R S R S R S R S R S W U X@4 Y@4 Z@4 AA@4 J K L M N O P O Q ~ AB AC AD AC AD AC AD AC AD AC AD AC AD AE AF AE AF
  AE AF AC AD AC AD AC AD AC AD AC AD AC AD AC AD AC AD AE AF AG
>`.pickRestart({
  A: "[~@2 d4@2 ~ d4 ~@2 e3@32 ~@8]/3", B: "e3@2 e4 ~ d4@2 a3 ~ d4 ~ a3 ~ c#4 ~ d4 ~",
  C: "e3@2 e4 ~ d4 ~ a3 ~@2 d4 a3 ~ a3 ~ g#3 ~, ~@4 c#4 ~@3", D: "e3 ~ e4 ~ d4@2 a3 ~ d4 ~ a3 ~ c#4 ~ d4 ~",
  E: "e3 ~ e4 ~ d4 ~ a3 ~@2 d4 a3 ~ a3@2 g#3@2, ~@4 c#4 ~@3", F: "e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~",
  G: "e3!3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~", H: "a3 ~ a3 ~ a3 ~ a3 ~ a3 ~ a3 ~ a3 ~ a3 ~",
  I: "a3!3 ~ a3 ~ a3 ~ a3 ~ a3 ~ a3 ~ a3 ~", J: "b3 ~ b3 ~ b3 ~ b3 ~ b3 ~ e4 d#4 d4 ~ b3 ~",
  K: "b3 ~ b3 ~ b3 ~ b3 ~ b3 ~ b3 ~ b3 ~ c#4 ~", L: "d4 ~ d4 ~ d4 ~ d4 ~ d4 ~ d4 ~ d4 ~ d4 ~",
  M: "a3 ~ a3 ~ a3 ~ a3 ~ a3 ~ e3!3 ~ e3 ~", N: "b3 ~ b3 ~ a3 ~ f#3 ~ a3 ~ f#3 ~ a3@2 a#3 ~",
  O: "b3 ~ b3 ~ a3 f#3 d3 ~ d4@2 d#4@2 e4 ~ e3@2", P: "b3 ~ b3 ~ a3@2 f#3 ~ a3@2 f#3 ~ a3@2 a#3 ~",
  Q: "[b2,b3] ~ [b2,b3] ~@5", R: "e3 ~ e3@2 d#4 e4 b3@2 ~@2 e3@2 b3@2 e3@2", S: "a3@2 e3@2 ~@2 a3@2 ~@2 a3@2 b3 ~ b3@2",
  T: "c#4@2 g#3@2 c#4 ~ g#3@2 e3 ~ e3@2 b3@4", U: "a3@2 e3@2 a3@2 e3@2 a3 ~ a3@2 b3 ~ b3@2",
  V: "e3@2 e4 ~ d4 ~ a3 ~@2 d4 a3 ~ a3@2 g#3@2, ~@4 c#4 ~@3", W: "c#4@2 g#3@2 c#4 ~ g#3@2 e3 ~ e3@2 b3@2 ~@2",
  X: "e3 ~ e4 ~ d#4 ~ d4@4 a3@2 a#3 ~ b3 ~", Y: "f#3 ~ f#4 ~ f4 ~ e4@4 b3@2 c4 ~ c#4 ~",
  Z: "g3@2 g4 ~ f4 ~ c4 ~@2 f4 c4 ~ c4 ~ b3 ~, ~@4 e4 ~@3", AA: "a3@2 a4 ~ g4 ~ d4 ~@2 g4 d4 ~ d4 ~ c#4 ~, ~@4 f#4 ~@3",
  AB: "[c3,c4] ~ [c3,c4] ~@5", AC: "f3 ~ f3@2 e4 f4 c4@2 ~@2 f3@2 c4@2 f3@2",
  AD: "a#3@2 f3@2 ~@2 a#3@2 ~@2 a#3@2 c4 ~ c4@2", AE: "d4@2 a3@2 d4 ~ a3@2 f3 ~ f3@2 c4@2 ~@2",
  AF: "a#3@2 f3@2 a#3@2 f3@2 a#3 ~ a#3@2 c4 ~ c4@2", AG: "~ [f3,f4] ~@6",
})).s("gm_slap_bass_2").gain(0.51)

// chords · pad poly · "OBX TYPE RHYTHM PAD"
const pad_poly = note(`<
  ~@10 A ~ B C D E F G H I@4 H J@2 K@7 L M N M N M N M N M N M O P Q R@4 G S@2 T U S@2 V@2 W@7 X M N M N M N M N M N M O
  P Q ~@8 Y@4 Z@2 AA AB@2 K@7 L ~ AC AD AE AD AE AD AE AD AE AD AE AD AF AG AH AG AH AG AH AD AE AD AE AD AE AD AE AD AE
  AD AE AD AE AD AE AG AH AI
>`.pickRestart({
  A: "~@2 [d3,d4,g4,c5,e5,g5] ~@2 [g4,c5,e5,g5]@2 ~@9, ~@5 [d3,d4] ~@10", // C D
  B: "~@10 [a4,c#5,e5] ~ [a4,c#5,e5]@2 [g#4,b4]@2, ~@14 e5 ~", // A G#m
  C: "[e4,b4,e5]@2 ~@8 [a4,c#5,e5] ~ [a4,c#5,e5]@2 [b4,e5] ~, f4 ~@13 g#4@2", // E5 A E5
  D: "[e4,b4,e5]@2 ~@8 [a4,c#5,e5] ~ [a4,c#5,e5]@2 [g#4,b4]@2, ~@14 e5 ~", // E5 A G#m
  E: "[e4,b4,e5]@2 ~@8 [a4,c#5,e5] ~ [a4,c#5]@2 [g#4,b4,e5] ~, ~@12 e5 ~@3", // E5 A E
  F: "[e4,b4,e5]@2 ~@8 [a4,c#5,e5] ~ [c#5,e5]@2 [f#4,b4,d#5]@2, ~@12 a4 ~@3", // E5 A C#m B
  G: "[e4,b4,e5]@2 ~@8 [e4,a4,c#5]@3 ~ [e4,g#4,b4]@2", H: "~@10 [e4,a4,c#5]@3 ~ [e4,g#4,b4]@2",
  I: "[~@10 [e4,a4,c#5]@3 ~ [e4,g#4,b4]@4 ~@8 [f#4,a4,d5]@3 ~ [e4,a4,c#5]@4 ~@8 [f#4,a4,d5]@2 ~@2 [e4,a4,c#5]@4 ~@8 [e4,a4,c#5]@2 ~@2 [e4,g#4,b4]@2]/4", // A E D A D A E
  J: "[~@10 [g#4,b4,e5]@3 ~ [f#4,b4,d#5]@11 ~ [g#4,b4,e5]@3 ~ [f#4,b4,d#5]@2]/2", // E B E B
  K: "[~@10 [b4,e5,g#5]@4 [d5,f#5,a5]@11 ~ [a4,d5,f#5,a5]@3 ~ [a4,c#5,e5]@11 ~ [g#4,b4,e5]@3 ~ [f#4,b4,d#5]@11 ~ [g#4,b4,e5]@3 ~ [f#4,b4,d#5]@11 ~ [g#4,b4,e5]@3 ~ [f#4,b4,d#5]@11 ~ [g#4,b4,e5]@3 ~ [f#4,b4,d#5]@11 ~ [g#4,b4,e5]@5 ~, ~@30 a5@9 ~@73]/7", // E D A E B E B E …
  L: "[f#4,b4,d#5] ~ [f#4,b4,d#5] ~@5", M: "~ [g#4,b4,e5] ~@2 [g#4,b4,e5] ~ [f#4,b4,d#5] ~",
  N: "~ [e4,a4,c#5] ~@2 [e4,a4,c#5] ~ [f#4,b4,d#5] ~", // A B
  O: "~@2 [e4,a4,c#5]@2 ~@4 [e4,c#5] ~@3 [f#4,b4,d#5]@2 ~@2, ~@4 a4 ~@3", // A C#m B
  P: "~ [g#4,c#5,e5] ~@2 [g#4,c#5,e5] ~ [f#4,b4,d#5] ~", Q: "~ [e4,a4,c#5] ~@2 [e4,a4,c#5] ~ [e4,a4,c#5]@2",
  R: "[[b4,e5,g#5]@9 ~ [c#5,e5,a5]@3 ~ [b4,e5,g#5]@12 [c#5,e5,a5]@4 [b4,e5,g#5]@11 ~ [c#5,e5,a5]@3 ~ [d5,g#5,b5]@10 ~@2 [a4,c#5,e5] ~ [a4,e5] ~ [f#4,b4,d#5]@2, ~@30 c#5 ~]/4", // E A E A E A G#dim A …
  S: "~@5 [e4,a4,c#5] ~ [e4,g#4,b4]", T: "~@5 [f#4,a4,d5] ~ [e4,a4,c#5]", U: "~@5 [f#4,a4] ~ [e4,a4,c#5], ~@10 d5 ~@5",
  V: "[~@10 [g#4,b4,e5]@3 ~ [f#4,b4,d#5]@10 ~@2 [g#4,b4,e5]@2 ~@2 [f#4,b4,d#5]@2]/2", // E B E B
  W: "[~@10 [b4,e5,g#5]@3 ~ [d5,f#5,a5]@10 ~@2 [a4,d5,f#5,a5]@2 ~@2 [a4,c#5,e5,a5]@10 ~@2 [g#4,b4,e5]@3 ~ [f#4,b4,d#5]@10 ~@2 [g#4,b4,e5]@3 ~ [f#4,b4,d#5]@10 ~@2 [g#4,b4,e5]@2 ~@2 [f#4,b4,d#5]@11 ~ [g#4,b4,e5]@2 ~@2 [f#4,b4,d#5]@10 ~@2 [g#4,b4,e5]@4 ~@2]/7", // E D A E B E B E …
  X: "[f#4,b4,d#5] ~@3 [f#4,b4,d#5] ~@11", // B
  Y: "[[g3,b3,d4] ~ [g3,b3,d4] ~@3 [g3,b3,d4] ~@3 [g3,c4,e4,c6] ~@3 [d5,g5,b5]@4 [g3,b3,d4] ~@3 [g3,b3,d4] ~@3 [g3,b3,d4] ~@5, [d5,g5,b5]@5 ~@5 [e5,g5]@2 ~@2 [g3,b3,d4]@3 ~@15]/2", // G C G Em G
  Z: "[[a3,c#4,e4] ~ [a3,c#4,e4] ~@3 [a3,c#4,e4] ~@3 [a3,d4,f#4,d6] ~@3 [e5,a5,c#6]@4 [a3,c#4,e4] ~@3 [a3,c#4,e4] ~@3 [a3,c#4,e4] ~@5, [e5,a5,c#6]@5 ~@5 [f#5,a5]@2 ~@2 [a3,c#4,e4]@3 ~@15]/2", // A D A F#m A
  AA: "[c#4,e4]@2 [a3,c#4,e4] ~@3 [a3,c#4,e4] ~@3 [a3,d4,f#4,f#5,d6] ~@3 [a3,c#4,e4,e5,a5,c#6]@2, [e5,a5,c#6]@2 ~@3 a5 ~@2, a3 ~@15", // C#m A D A
  AB: "[~@2 [a3,c#4,e4] ~@3 [a3,c#4,e4] ~@3 [e4,b4,e5]@2 ~@2 [f#4,b4,d#5]@11 ~ [g#4,b4,e5]@3 ~ [f#4,b4,d#5]@2]/2", // A E5 B E B
  AC: "[g4,c5,e5] ~ [g4,c5,e5] ~@5", AD: "~ [a4,c5,f5] ~@2 [a4,c5,f5] ~ [g4,c5,e5] ~",
  AE: "~ [f4,a#4,d5] ~@2 [f4,a#4,d5] ~ [g4,c5,e5] ~", // A# C
  AF: "~@2 [f4,a#4,d5]@2 ~@4 [f4,d5] ~@3 [g4,c5,e5]@2 ~@2, ~@4 a#4 ~@3", // A# Dm C
  AG: "~ [a4,d5,f5] ~@2 [a4,d5,f5] ~ [g4,c5,e5] ~", AH: "~ [f4,a#4,d5] ~@2 [f4,a#4,d5] ~ [f4,a#4,d5]@2",
  AI: "~ [a4,c5,f5] ~@6", // F
})).s("gm_pad_poly").gain(0.46)

// chords · clavinet · "RH CLAV"
const clavinet = note(`<
  ~@17 A@4 B@2 A@2 C D E B C@4 F G H G H G H G H G H G H I H ~@4 A@4 B@2 A@2 C D E B C@4 F G H G H G H G H G H G H I H
  ~@16 C D E B C@4 F ~ J K L K L K L K L K L K L M L M L M L K L K L K L K L K L K L K L K L M L N
>`.pickRestart({
  A: "e3 ~ [b3,e4] ~ [c#4,f#4]@2 e4 [b3,e4] [e3,b3,e4] ~ e4 ~ e3 ~ e4 ~, ~@4 e3 ~@11", // E5 F#5 E5
  B: "a3 ~ [e4,a4] ~ [f#4,b4]@2 a4 [e4,a4] [a3,e4,a4] ~ a4 ~ a3 ~ a4 ~, ~@4 a3 ~@11", // A5 B5 A5
  C: "b3 ~ [f#4,b4] ~ [g#4,c#5]@2 b4 [f#4,b4] [b3,f#4,b4] ~ b4 ~ b3 ~ b4 ~, ~@4 b3 ~@11", // B5 C#5 B5
  D: "b3 ~ [f#4,b4] ~ [g#4,c#5]@2 b4 [f#4,b4] [b3,f#4,b4] ~ b4 ~ c#4 ~ c#5 ~, ~@4 b3 ~@11", // B5 C#5 B5
  E: "d4 ~ [a4,d5] ~ [b4,e5]@2 d5 [a4,d5] [d4,a4,d5] ~ d5 ~ d4 ~ d5 ~, ~@4 d4 ~@11", // D5 E5 D5
  F: "[f#4,b4] ~ [f#4,b4] ~@5, b3 ~@3 b3 ~@11", G: "e3 ~ [b3,e4] ~ e3 ~ [b3,e4] ~ e3 ~ [b3,e4] ~ e3 ~ [b3,e4]!2",
  H: "a3 ~ [a3,e4,a4] ~ a3 ~ [a3,e4,a4] ~ a3 ~ [a3,e4,a4] ~ a3 ~ [a3,e4,a4] [a3,e4]", // A5
  I: "c#4 ~ [c#4,e4,c#5] ~ c#4 ~ [c#4,e4,c#5] ~ c#4 ~ [c#4,e4,c#5] ~ b3 ~ [b3,d#4,b4] [b3,d#4]", // C#m B
  J: "[c4,c5] ~@3 [g4,c5]@2 ~@10, g4@2 ~@2 c4 ~@11", K: "f3 ~ [c4,f4] ~ f3 ~ [c4,f4] ~ f3 ~ [c4,f4] ~ f3 ~ [c4,f4]!2",
  L: "a#3 ~ [a#3,f4,a#4] ~ a#3 ~ [a#3,f4,a#4] ~ a#3 ~ [a#3,f4,a#4] ~ a#3 ~ [a#3,f4,a#4] [a#3,f4]", // A#5
  M: "d4 ~ [d4,f4,d5] ~ d4 ~ [d4,f4,d5] ~ d4 ~ [d4,f4,d5] ~ c4 ~ [c4,e4,c5] [c4,e4]", N: "f3 ~ [c4,f4] ~@13",
})).s("gm_clavinet").gain(0.46)

// chords · brass section
const brass_section = note(`<
  ~@17 A B@2 C@4 D@2 E@7 F G H I H G H G H G H G H J K ~@4 A B@2 C@4 D@2 L@7 F G H I H G H G H G H G H J K ~@8 M@2 N@2
  O@2 P Q@2 E@7 F ~ R S T U T S T S T S T S T V W V W V W S T S T S T S T S T S T S T S T V W X
>`.pickRestart({
  A: "~@10 [e4,a4,c#5] ~@3 [e4,g#4,b4]@2", // A E
  B: "[~@10 [e4,a4,c#5] ~@3 [e4,g#4,b4]@4 ~@8 [e4,a4,c#5] ~@3 [e4,g#4,b4]@2]/2", // A E A E
  C: "[~@10 [f#4,a4,d5] ~@3 [e4,a4,c#5]@4 ~@8 [f#4,a4,d5] ~@3 [e4,a4,c#5]@4 ~@8 [e4,a4,c#5] ~@3 [e4,g#4,b4]@4 ~@8 [e4,a4,c#5] ~@3 [e4,g#4,b4]@2]/4", // D A D A E A E
  D: "[~@10 [b4,e5]@2 ~@2 [f#4,b4,d#5]@11 ~ [g#4,b4,e5]@3 ~ [f#4,b4,d#5]@2, ~@10 g#4 ~@21]/2", // E5 B E B
  E: "[~@10 [b4,e5,g#5]@4 [d5,f#5,a5]@11 ~ [a4,d5,f#5,a5]@4 [a4,c#5,e5,a5]@11 ~ [g#4,b4,e5]@4 [f#4,b4,d#5]@11 ~ [g#4,b4,e5]@4 [f#4,b4,d#5]@11 ~ [g#4,b4,e5]@4 [f#4,b4,d#5]@12 [g#4,b4,e5]@3 ~ [f#4,b4,d#5]@12 [g#4,b4,e5]@5 ~]/7", // E D A E B E B E …
  F: "[f#4,b4,d#5] ~ [f#4,b4,d#5] ~@5", G: "~ [g#4,b4,e5] ~@2 [g#4,b4,e5] ~ [f#4,b4,d#5] ~",
  H: "~ [e4,a4,c#5] ~@2 [e4,a4,c#5] ~ [f#4,b4,d#5] ~", I: "~@2 [g#4,b4,e5]@3 ~@3 [g#4,b4,e5]@2 ~@2 [f#4,b4,d#5]@2 ~@2",
  J: "~@2 [g#4,c#5,e5]@3 ~@3 [g#4,c#5,e5]@2 ~@2 [f#4,b4,d#5]@2 ~@2", // C#m B
  K: "~@2 [e4,a4,c#5]@2 ~@4 [e4,a4,c#5]@2 ~@2 [e4,a4,c#5]@3 ~", // A
  L: "[~@10 [b4,e5,g#5]@4 [d5,f#5,a5]@11 ~ [a4,d5,f#5,a5]@3 ~ [a4,c#5,e5]@11 ~ [g#4,b4,e5]@3 ~ [f#4,b4,d#5]@11 ~ [g#4,b4,e5]@3 ~ [f#4,b4,d#5]@11 ~ [g#4,b4,e5]@3 ~ [f#4,b4,d#5]@11 ~ [g#4,b4,e5]@3 ~ [f#4,b4,d#5]@11 ~ [g#4,b4,e5]@5 ~, ~@30 a5@9 ~@73]/7", // E D A E B E B E …
  M: "[[d4,g4,b4]@5 ~@5 [e4,g4]@2 ~@2 [d4,g4,b4]@6 ~@12, ~@10 c5 ~@21]/2", // G Em G
  N: "[[d4,g4,b4]@5 ~@5 [e4,g4,c5]@2 ~@2 [d4,g4,b4]@6 ~@12]/2", // G C G
  O: "[[e4,a4,c#5]@5 ~@5 [f#4,a4]@2 ~@2 [e4,a4,c#5]@6 ~@12, ~@10 d5 ~@21]/2", // A F#m A
  P: "[e4,a4,c#5]@5 ~@5 [f#4,a4,d5]@2 ~@2 [e4,a4,c#5]@2", // A D A
  Q: "[~@10 [g#4,b4,e5]@2 ~@2 [f#4,b4,d#5]@11 ~ [g#4,b4,e5]@3 ~ [f#4,b4,d#5]@2]/2", R: "[g4,c5,e5] ~ [g4,c5,e5] ~@5",
  S: "~ [a4,c5,f5] ~@2 [a4,c5,f5] ~ [g4,c5,e5] ~", T: "~ [f4,a#4,d5] ~@2 [f4,a#4,d5] ~ [g4,c5,e5] ~",
  U: "~@2 [a4,c5,f5]@3 ~@3 [a4,c5,f5]@2 ~@2 [g4,c5,e5]@2 ~@2", // F C
  V: "~@2 [a4,d5,f5]@3 ~@3 [a4,d5,f5]@2 ~@2 [g4,c5,e5]@2 ~@2", // Dm C
  W: "~@2 [f4,a#4,d5]@2 ~@4 [f4,a#4,d5]@2 ~@2 [f4,a#4,d5]@3 ~", X: "~ [a4,c5,f5] ~@6",
})).s("gm_brass_section").gain(0.46)

// chords · trumpet · "1st TRUMPET"
const trumpet = note("<~@12 A B C@2 D E ~@30 F@4 G ~@94>".pickRestart({
  A: "~@10 [a4,c#5,e5] ~ [a4,c#5,e5]@2 [g#4,b4,e5] ~", // A E
  B: "[e4,g#4,e5] ~@9 [a4,c#5,e5] ~ [a4,c#5,e5]@2 [g#4,b4,e5] ~, ~@12 d5 ~@3", // E A E
  C: "[e4,g#4,e5] ~@9 [a4,c#5,e5] ~ [a4,c#5,e5]@2 [g#4,b4,e5] ~", // E A E
  D: "[e4,g#4,e5] ~@9 [a4,c#5,e5,e6] ~ [a4,c#5,e5,e6]@2 [d#5,d#6]@2, ~@14 [f#4,b4] ~", E: "[e4,b4,e5,e6] ~@7",
  F: "[[e4,g#4,g#5]@8 ~@2 [f#4,a4,a5] ~@3 [e4,g#4,g#5]@11 ~ [f#4,a4,a5] ~@3 [e4,g#4,g#5]@10 ~@2 [f#4,a4,a5] ~@3 [g#4,b4,b5]@11 ~ [e4,e5,e6] ~ [e4,e5,e6]@2 [d#4,d#5,d#6]@2]/4", // E F#m E F#m E F#m G#m E …
  G: "[e4,e5,e6] ~@7", // E
})).s("gm_trumpet").gain(0.51)

// other · trombone
const trombone = note("<~@13 A B A C ~@31 A D A D E ~@94>".pickRestart({
  A: "~@2 [e2,e3]@5 ~", B: "~@2 [e2,e3] ~@3 [e2,e3]@10", C: "~@2 [e2,e3] ~@3 [e2,e3]@8 ~@2",
  D: "[e2,e3] ~ [e2,e3] ~@3 [e2,e3]@10", E: "[e2,e3] ~@7",
})).s("gm_trombone").gain(0.51)

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

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@2 A ~ A ~ A ~ A ~@2 B C ~@71 D ~ D E@4 ~@56>".pickRestart({
  A: "~ x ~@6", B: "~@2 x!2", C: "x", D: "~ x ~@2", E: "x ~ x!2 ~@4 x ~ x!2 ~@4",
})).gain(0.41)

// drums · high tom
const high_tom = s("ht").struct(`<
  ~@11
  [~@9 x!3 ~@2 x!2]
  ~@72
  [~@2 x!2 ~ x!2 ~@9]
  ~
  [~@2 x!2 ~ x!2 ~@9]
  [~@4 x!2 ~@6 x!2 ~@2]!4
  ~@56
>`).gain(0.41)

// drums · ride
const ride = s("rd").struct("<~@34 A ~@34 A ~@21 A ~@18 A ~@11 A ~ A ~ A ~@17 B@2 ~>".pickRestart({
  A: "x", B: "x ~@2 x",
})).gain(0.41)

// drums · tambourine
const tambourine = s("tb").struct("<~@2 A B A B A B A B C D E ~@70 F B F B G H G H ~@56>".pickRestart({
  A: "x ~@3 x ~@3 x ~@3 x ~@2 x", B: "x!4", C: "~@2 x ~@2 x ~@2 x ~@3 x ~@3", D: "x ~ x!3 ~ x ~ x ~@3 x ~@3",
  E: "x!2 ~@2", F: "x ~ x!3 ~@3 x ~@3 x ~@3", G: "~@2 x!4 ~@4 x!4 ~@2", H: "~@2 x!4 ~@4 x!2 ~ x ~@2",
})).gain(0.36)

// drums · cowbell
const cowbell = s("cb").struct(`<
  A B C@8 D E F G E@3 G E@7 G E@7 H E@18 G E@7 G E@7 H E@14 I@8 E@4 G E@3 G E@7 H J H E@36 K
>`.pickRestart({
  A: "~ x", B: "x!3 ~ x ~@3", C: "x ~ x!3 ~ x!2 ~@2 x!2 ~@2 x!2", D: "~@2 x!2 ~ x!2 ~@3 x!2 ~@2 x!2",
  E: "~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2", F: "~@2 x!2 ~@2 x!2 ~@2 x!6", G: "x ~ x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2",
  H: "x!7 ~@3 x ~@3 x ~", I: "~@2 x!3 ~ x!2 ~@2 x!3 ~ x!2", J: "~@2 x!2 ~@2 x ~@3 x ~@3 x ~", K: "x!2 ~@6",
})).gain(0.31)

// drums · congas
const congas = s("conga:13").struct(`<
  ~@13 A B A B A B A B A B A B A B A B A B A B ~@15 A B A B A B A B A B A B A B A B A B A B ~@23 A B A B A B A B A B A B
  A B A B ~@40
>`.pickRestart({
  A: "x!4", B: "x!2 ~ x",
})).gain(1.31)

stack(
  bass, pad_poly, clavinet, brass_section, trumpet, trombone, kick, snare, mid_tom, high_tom, ride, tambourine, cowbell,
  congas
)

More by Billy Ocean