Strudelify

Love Is Blue

Paul Mauriat

KeyA minorTempo115 bpm
0:00/0:00
// Love Is Blue — Paul Mauriat
// 115 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 45 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(115/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 · piano
const piano = note("<~ A@2 B@2 C D E F G H@2 I J K L@2 M N@2 O@4 P@2 Q R@2 S T U V W@5 X@2 Y Z@4>".pickRestart({
  A: "[~@6 a4@2 ~@3 f#4@2 ~@2 f#4@2 ~ e4 a4@2 ~ a4@2 ~@7 d4, a2@4 c5@4 ~@2 a4@3 d5@4 ~@4 c5@4 ~ a4@2 d5@4, ~ e4@2 e4@5 ~ d4@5 a4@3 ~@8 d4@5 f#4@2, ~@2 e3@6 d3@7 d4 ~@3 e4@5 [d3,a3]@8, ~@2 a4@2 a3@12 ~ [a2,a3]@8 ~@2 f#4@2 a4@3]/2", // D5 A
  B: "[~@6 c4@2 ~@15 [g4,a4] ~@6 b2@2, [a2,e5]@9 ~@3 a3@4 ~@2 b3@4 b3@2 ~@4 [g3,e4]@4, ~ e3@3 [d3,d5]@4 ~@4 [c3,g4]@4, ~@4 a3@5 ~ f#3@6 [g3,b4]@8 ~@2 e3@6, ~@7 [d4,c5]@2 ~ [d4,a4]@2 ~@4]/2", // Gsus2 A5 C D C5 G D7 D5
  C: "~@3 b4 ~@3 a4, [a2,a4] [f2,c5], ~ e3@3 ~ c3@3, ~ [a3,e4,c5] ~ f3", // A F5 Am
  D: "~@7 [e4,f4] ~@6 b2@2, g2@2 ~ [g3,c4], g4@2 [g3,g4]@2 ~ e3@3, ~ a4@3 ~@4, ~ d3@2 d3 [c3,e4]@4", // Fmaj7 C5 G C
  E: "~@7 c5, [a2,c5,e5]@7 [a4,d5]@9, ~ e3@2 e3 [d3,d4,f#4]@4, ~@2 a3@3 f#3@3, ~@3 a3", // Am D5 D
  F: "~@4 a4@2 ~ [g4,a4] ~@6 b2@2, [g2,d4,g4,b4]@2 ~ g3, ~ d3@2 d3 [c3,e4,g4]@4, ~@4 g3@5 ~ e3@6", // Gsus2 G C
  G: "~@3 b4 ~@3 a4, [a2,c4,e4,a4] [f2,f4,c5], ~ e3@3 ~ c3@3, ~@2 [a3,c5]@2 a4@3 ~, ~@3 f3", // Am F5 Am
  H: "[g#4 ~@10 e3 ~@3 a5, [e2,e4]@7 c4@16 ~@2 e5@2 e5@5, ~ f#4@3 ~@2 e3@2 a3@4 ~ a5 [a3,c6]@2, ~ b2@2 b2 [a2,e4,a4]@8 a2@4, ~@2 [e3,g#4]@2 ~ c3@2 c3@2 e3 c3@2 ~ e3@3]/2", // E Am A5 E
  I: "~@7 d5 ~@6 a5@2, d3@6 f#5@2 ~ e5@2 e5@5, ~ d5@4 a5@3 ~@2 a5@2 [a3,c6]@4, ~ a3@3 a2@4, ~@2 a5 f#5 [d4,d6]@4 ~@2 e3@6", // Am D
  J: "~@3 e4, d3@7 d5@2 ~@7, ~ d5@5 [a3,f#5]@2 [a3,e6]@8, ~@2 [a3,a5]@2 [d4,d6]@5 ~ c4@6, ~@3 f#5@2 a5@4 ~@7", // D A5 A D
  K: "~@6 [d4,c6]@2 ~@7 g5, [d3,d6]@2 ~ [d4,a5], ~ f#3@3 [g3,b5]@4, ~@2 a3@2 ~ b3@2 b3", // D7 D D5 G
  L: "[a5 ~@5 b2@2 ~@6 b5@2 ~@6 [g3,a5]@2 ~@7 [e5,f5], [c3,g5]@8 [a2,a5]@8 [f2,c6]@9 ~@5 g4@2, ~ e3@3 ~ e3@3 ~ c3@3 g3@4, ~ e5@2 e5@3 g5 [d4,g5], ~@4 g3@4 ~@4 [a3,c6]@4 ~@4 f3@5 ~ [b3,a5]@6]/2", // Gsus2 Fmaj7 C5 A F5 G5 Am B7
  M: "~@3 b3 ~@3 a4, [c4,e5] [a3,e6], ~@2 e4@7 ~ c4@6, ~@4 [g4,c5]@5 ~@3 [e4,e5]@4", // C A5 C5 E
  N: "[~@6 c6@2 ~@4 a5@2 ~ [g5,a5] ~@6 b2@2 ~@6 b5@2, [f#3,d5,f#5,d6]@4 [g2,d5,b5]@4 ~ e3@3 ~ e3@3, ~ a3@3 ~ d3@2 d3 [c3,e5,g5]@4 [a2,c5,e5,a5]@4, ~ d4 ~ g3@2 [g3,c5] ~ [a3,c6]]/2", // Gsus2 D G C Am C5 Am
  O: "[~@54 a5@2 ~@7 d5, [f2,c5,f5,c6]@7 b4@7 b2@2 a2@10 e3@2 c3@22 a5 e5 [a3,c6]@4 ~@2 [a3,a5]@2 [d4,d6]@4, a5@6 a5@2 ~@2 f#5@5 c5@19 e3@2 a3@2 e3@2 c4@16 ~ d5@5 [a3,f#5]@2, ~@2 c3@6 [e2,e5]@8 ~@2 c3@2 e3@2 c3@2 a3@6 e3@2 a2@10 e3@2 a3@5 e5 e3@6 d3@8, ~@4 f3@4 [e3,g#5]@2 b2@2 [e3,g#5]@4 [e5,a5]@30 e3@2 a2@8 ~@3 f#5@2 a5@3]/4", // F5 Am A D E A5
  P: "[~ e5 a5 ~@3 a5@2 ~@8 d5 ~@5 a4@2 ~@6 e4@2, a3@8 d3@7 f#5@3 ~@2 e4@4 ~@2 e4@4 ~@2, e4@2 c4@7 ~ [a3,a5]@2 d5@2 [a3,a5]@2 a3@8 [b3,d6]@8, ~@3 e5@6 d5@3 d4@4 e4@2 ~ c#4@6 ~@3 d4@4, ~@4 [e4,c6]@5 ~@2 f#5@2 d6@4 c#6@8 ~@7]/2", // A Bm C
  Q: "~@7 a5, e6@3 [e4,c#6], c#4 a3, ~ e4@2 e4@2 c#4@3, ~ a4@3", // C#m
  R: "[~@7 a3 ~@6 c#4@2, a5, d3 [a3,e6], ~@2 f#3@4 f#3@4 a3@2 f#3@5 ~@3 e4@4 a4@8, ~@4 a3@4 [d4,f#6]@9 ~ c#4@4 c#4@4 e4@6]/2", // A5 D
  S: "~@7 g#4, [c#4,c#6], ~ e4@3 [e4,e5,g#5,e6]@4, ~@2 g#4@3 g#4@2 ~, ~@3 c#5@3 c#5@2", // C# E
  T: "~@7 d6, [d4,f#5,b5]@3 c#6, d5!2, ~ f#4@2 f#4@5, ~@2 b4@3 b4@3", // Bm
  U: "~@3 a4 ~@3 g#5, [e4,d6], ~ a4@2 ~ e5@4, ~@4 b4@5 ~ b4@6, ~@3 [g#4,b5]", // E7 G#m
  V: "~@3 c#4, [a3,a5], ~ c#4@2 c#4@3 ~@2, ~@2 e4@3 e4@3, ~ a4", // A
  W: "[~ e4 ~@4 a4@2 ~@9 e4 ~@2 c5@2 ~@10 d4 ~@2 e3@2 ~ e3@2 ~@6 c5@2 ~@4 [d4,a4]@3 g4 a4 ~@5 b2@2 ~@6 b4@2 ~@6 a4@2, a2@8 d3@6 f#4 d4@2 ~@2 e4@5 ~ d4@2 f#4 d4@2 [f#3,a4] f#4@2 ~@7 [d3,d5]@8 ~@8 [c3,g4]@8 [a2,a4]@8 [f2,c5]@8, ~@2 e3@7 ~ f#3@6 a2@6 a4@4 [f#3,a4]@3 d5@4 ~@13 d4@6 ~@8 e4@12 ~@8, ~@2 a4@2 [a3,c5]@6 a4 f#4 [a3,d5]@6 e3@6 d3@9 [a2,e5]@8 ~@3 a3@4 ~@2 b3@6 ~@4 g3@4 ~@4 [a3,c5]@4 ~@4 f3@4, ~@3 e4@6 d4@4 a4@4 ~ a4@2 a3@8 a3@8 ~ a3@5 f#3@6 [g3,b4]@8 ~@2 e3@6 ~@2 e3@6 ~@2 c3@6]/5", // D5 F#m D C5 A F5 F#m Am …
  X: "[g4 ~@2 d3 ~@11 c5, [g2,b3]@8 ~@4 g3@5 ~@3 a3@2 e3@2 [d3,d4]@4 a3@4, ~@2 a4@6 ~@6 b2@2 [a2,c5,e5]@7 [f#4,a4]@9, ~@2 d3@4 ~@2 [c3,c4,e4]@7 [e4,a4]@9 ~@2 f#3@6, ~@2 [g3,g4]@3 e3@3 ~ e3@2 d5@5]/2", // G D Am F#m C A5 G
  Y: "~@7 g4 a4 ~@5 b2@2, [g2,d4,g4,b4]@2 ~ [g3,c4], ~ d3@2 d3 [c3,e4,g4]@4, ~@4 [g3,a4]@5 ~ e3@6", // G C5 C Gsus2
  Z: "[~@8 a4@6 ~@2 g#4@2 ~@2 g#4@3 ~@18 a6@12 ~@11, [a2,c4,e4,a4]@7 [f2,c3,c4]@9 [b2,e3,b3,e4]@8 a2@10 e3@2 c3@3 a5 [a2,a3,c6,e6]@13 ~@11, ~@2 e3@6 [f3,f4,c5]@8 ~@7 c4@30 ~@11, ~@4 [a3,c5]@4 ~@7 e2@9 ~@2 c3@2 e3@2 c3@2 a3@6 e3@15 ~@11, ~@6 b4@2 ~@6 a4@2 ~@2 f#4@6 [e4,a4]@29 ~@11]/4", // Am F5 E5 Am F5 Am A5
})).s("gm_piano").gain(0.48).pan(1)

// chords · synth strings 1
const synth_strings_1 = note("<~ A@7 B@2 C@7 D@4 ~ E@7 F@6 G@7 H@3>".pickRestart({
  A: "[[c6,e6]@8 d6@8 [e5,c6]@8 [d5,f#5]@6 ~@2 [c5,e5]@7 ~ [a4,f#5]@8 b4@7 ~@16 f5@8 ~ d5@8 ~@8 c6@7 ~ [f#5,d6]@8, a5@48 g5@16 a5@16 g5@17 ~@15, ~@8 f#5@7 ~@25 d5@16 c5@23 ~@9 e5@16 ~@8, ~@56 e5@14 ~@9 b5@9 ~@8 a5@16]/7", // C D C D
  B: "[b5 ~@2 f6, g5@15 ~ a5@16, ~ c6@3, ~@3 e6@3 ~@2]/2",
  C: "[~@16 c6@5 ~@3 [c5,e5]@8 [d5,f#5]@8 [c5,e5]@8 [f#4,d5]@7 ~@5 e4@4 ~@4 f#4@2 ~@6 d4@2 ~@6 g4@3 ~@5 e5@2 e6@2 ~@2 a4@2 ~@2 a4 ~@7 g5@2, b5@6 ~@2 a5@13 ~@35 c5@8 d5@16 ~@10 a5@13 ~@3 b4@4 ~@2, ~@4 e6@17 ~@46 d4@7 b3@4 g4@4 e4@5 ~@3 c5@4 ~@2 f6@8 ~@8, ~@12 e5@9 ~@3 a4@31 ~ a4@16 b4@8 c5@5 ~@3 a4@6 ~@2 f4@4 c5@4 [g4,g6]@5 ~@3, ~@72 g3@6 ~@2 c4@7 ~@5 c6@12 ~@4 [d5,d6]@4]/7", // C D C D G D
  D: "[~@2 e5@2 g5@2 b4 ~@5 e5@2 ~@14 [d5,b5]@4 ~@2 e5@2 g5@2 b4@2 e5@2 ~@2 e5@2 ~@2 f6@8 ~@8, e6@10 [c5,c6]@6 ~@2 d5@8 b4@4 ~@2 c5@5 ~@3 a5@15 ~@9, c5@5 ~@3 a4@8 ~@8 g4@6 ~@6 c6@18 ~@10, ~@12 e6@5 ~@3 d6@12 e6@17 ~@15, ~@7 a6@5 g6@8 a4 c5@2 ~ f4@3 ~@5]/4", // G C
  E: "[~@16 e5@7 ~ d5@6 ~@2 c5@4 c6@4 d6@4 d5@3 ~@29 c#5@3 ~ f#4@8 [d5,f#5]@7 ~ [c#5,e5]@12 ~@4, ~@14 c5@7 ~@2 f#5@8 ~ e5@8 f#5@7 ~@11 d5@6 e5@12 ~@36, ~@16 a5@48 ~@4 a4@39 ~@5, ~@62 b4@7 ~@43]/7", // D C#m
  F: "[~@5 g#4 ~ g#4 ~ f#4 ~@4 c#6 ~@2 a4 ~@4 b5 g#5 ~@3 c#5@3 ~@3 c5 e5 ~@2 d5 ~ d5 ~ c5 ~ c5 [d5,d6]@4, c#4@14 ~@2 d4@14 ~@2 e4@14 ~@26 f#5@5 ~@3 e5@7 ~ f#5@4 ~@4, c#6@6 c#5@8 ~@8 b4@7 ~ b4@4 ~@2 e5@31 ~@5 a6@24, ~@4 e5@15 ~@5 d5@5 ~ d6@10 g#5@2 g#4@4 ~@2 [a4,a5]@12 ~@4 a4@14 ~@2 a4@13 ~@3, ~@4 g#4@4 e6@4 g#5@4 a5@4 b5@6 f#4@5 ~ b5@6 b4@10 ~@16 [e6,c7]@9 ~@3 d6@4 e6@4 c6@5 ~@7]/6", // D A C
  G: "[e5@3 ~@2 e5@2 ~@5 f#5@2 ~@8 d5 ~@7 b4@2 e5@4 ~@2 e5@2 ~@20 g5@2 b4@2 ~@2 c5@2 e5@2 c5@2 f#6@8 ~@2 b4@2 a6@4 ~@2 e5@2 g5@2 b4@2 ~@2 c5@2 ~@2 c5@2 ~@2 c5@2 f5@2 c5@2, a5@14 d5@6 g5@11 ~ a5@12 f5@6 d5@4 g5@4 e5@4 ~@2 a6@16 g6@16 a4@4 e5@4 f4@6 ~@2, e6@9 ~@2 a4@6 ~ b4@6 c5@7 ~ a4@8 f4@2 c5@6 d6@8 c6@15 ~@9 g4@4 ~@4 c5@4 ~@4 a6@16, a4@7 ~@2 d4@7 [g4,b5]@8 ~@4 e6@8 c5@4 f6@8 g6@7 ~ e6@17 ~@7 b6@6 ~@2 e6@16 f6@8, ~@3 c5@4 ~ d6@15 ~ c6@24 g4@4 b5@4 c5@6 ~@2 [a4,c7]@8 [d5,d6]@16 c6@23 ~]/7", // G Am D
  H: "[b5@2 ~@2 b5@4 ~@2 c5@2 ~@6 e5@4 ~@4 c5@5 ~@2 c5@2 ~@13, e6@11 ~@13, g#6@2 a6@3 ~@7, e4@4 e5@6 ~@2 e5@2 c5@2 c6@6 ~@2 e5@5 ~@19, ~@2 b4@4 ~@2 a4@14 ~@2 [a4,a5]@11 ~@13]/3", // A
})).s("gm_synth_strings_1").gain(0.4).pan(0)

// bass · acoustic bass
const bass = note(`<
  ~ A B A C D E F E G H@2 I J K L M N O L P Q R S T U V W X Y Z AA AB AC@2 A AD AE AF AG AH AI AJ@3
>`.pickRestart({
  A: "a2 d2", B: "a2 d3", C: "g2@4 c2@2 c3 b2", D: "a2 f2", E: "g2@4 c2 g2 c3 b2", F: "a2@8 ~ d2@7", G: "a2@8 f2@7 ~",
  H: "[e2@2 b2@2 a2@7 ~ a2@2 a3@2]/2", I: "d3@2 d2@2 ~ e2 a2 c3", J: "d3 a3 a2 e3", K: "d3 g2", L: "c2 g2 c3 b2 a2@4",
  M: "f2@2 g2 d3", N: "c3@2 c2 b2 a2@4", O: "d2 d3 g2@2", P: "f2@7 ~ e2@4 b2@4", Q: "a2", R: "a3@5 e3 d3 g2",
  S: "a2@2 d2 d3", T: "a2@2 e3@2 d3@3 g2", U: "a2@3 b2", V: "c#3@3 a2", W: "d2 d3", X: "a2@3 b2 c#3 b2 a2@2",
  Y: "~ e2 g#2 c#3 e3@2 c#3@2", Z: "d3@3 b2 f#2@2 d2@2", AA: "e2@2 e3 b2", AB: "a2@13 ~ e2 ~", AC: "a2@4 d2@2 d3 g2",
  AD: "g2@4 c2 g2 ~ b2, ~@3 c3", AE: "a2@3 g2 f2@4", AF: "g2@2 d3@2 c3@2 c2 b2", AG: "a2@4 e2@3 ~ d2@4 d3@4",
  AH: "g2@2 b2@2 ~@2 c2 b2, ~@4 c3@3 ~", AI: "a2 e2 f2@2", AJ: "[e2@2 b2@2 a2@8 ~@2 a2@5 ~@5]/3",
})).s("gm_acoustic_bass").gain(0.36)

// chords · flute
const flute = note(`<
  ~ A B C D E F G H I J K L M N O P Q R S T U V W X ~@8 Y Z AA AB AC AD AE AF AG AH AI ~
>`.pickRestart({
  A: "[a3,e5] [e4,a5] [a4,c6] [e4,a5] d4 [f#4,f#5] [a4,d6] a5", // A5 Am A5 F# D5
  B: "[a3,e5] [e4,c6] [a4,e6] [e4,c6] [d4,a5] [a4,a6] [f#4,f#6] d6", // A5 C A5 C D5 A F#
  C: "[a4,a5] e5 c5 e5 [d5,a6] [a5,f#6] [f#5,d6] [a5,f#6]", // A D5 D
  D: "[b4,d6] [g5,g6] [d5,d6] [g5,b5] [c5,e6] [e5,c6] [g5,g6] [b4,d6]", // Bm G D G C G Bm
  E: "[a4,c6] [c5,e6] [e5,a6] [c5,e6] [f4,a5] c5 [f5,f6] [c5,c6]", // Am C A5 C F C
  F: "[g4,b6] [d5,g6] [b4,d6] b5 [c5,e6] [e5,g6] [g5,c7] [b4,b6]", // G G5 Bm C Em C5 B
  G: "[a4,a6] [c5,e6] [e5,c6] [c5,e6] d4 [f#4,d6] [d5,f#6] [a4,d6]", // A C D D5
  H: "[g4,b5] [b4,d6] [d5,g6] [g4,d6] [e4,g5] [g4,c6] [c5,e6] d6", // G Bm G5 Em C5 C
  I: "[a4,a5] [e5,c6] [c5,e6] [e5,c6] [f4,a5] [c5,c6] [a4,f6] [c5,c6]", // A C F C Dm C
  J: "[e4,e6] [g#4,b5] [b4,g#5] e5 [a4,a5] e5 [c5,e6] [e5,c6]", // E G#m E A C
  K: "[a4,a6] [e5,e6] [e5,d6] [a5,e6] a4 c5 [e5,c6] [c5,a5]", // A E E7 A5 C F
  L: "d5 [f#5,d6] a5 [f#5,f#6] a4 [c5,a6] [e5,e6,c7] [c5,e6,a6]", // D F# F C Am
  M: "[d5,c6] [f#5,f#6,a6] [a5,f#6,a6] [f#5,d6,f#6] [a4,a5] c5 [e5,e6] c5", // D7 F#m D A E
  N: "[d4,d6] f#4 a4 d5 [g4,b5] b4 [d5,g5] [b4,b5]", // D G G5 B
  O: "[c5,c6] [g5,e6] [e5,g6] [b4,d6] [a4,c6] [c5,e6] [e5,a6] [g4,c6]", // C Em Bm Am C A5 C5
  P: "[f4,f6] [a4,a6] [c5,c7] [a4,a6] [g4,g6] [b4,d6] [d5,g6] [b4,d6]", // F A C A G Bm G5 Bm
  Q: "[c5,e6] [e5,c6] [g5,g6] [b4,d6] [a4,c6] [c5,e6] [e5,a6] [c5,e6]", // C G Bm Am C A5 C
  R: "[d4,a5] [f#4,d6] [d5,f#6] [a4,d6] [g4,b5] [d5,d6] [b4,g6] [d5,d6]", // D5 D D5 G D Em D
  S: "[c5,e6] [g5,g6] [e5,c7] [b4,b6] [a4,a6] [e5,c6] [c5,e6] [e5,a6]", // C G C B A C A5
  T: "[f4,a5] [c5,c6] [a4,f6] [c5,c6] [e4,e6] [g#4,b5] [b4,g#5] e5", U: "a4 c#5 [e5,c6] [c5,a5] [e5,e6] [c5,c6] d6 e6",
  V: "a4 c5 [e5,e6] ~ a6 e6 [e4,c6] [a4,a5]", W: "a3 ~ a4 e5 d4 [a4,d5] [f#4,a5] [a4,f#5]",
  X: "[a4,e5] [e5,a5] [c5,e6] [e5,c6] [d4,d5,e5] [a4,f#5] [f#4,d6] [a4,a5]", // A5 C Dsus2 D A
  Y: "[a4,c6] [c5,e6] [e5,a6] [c5,e6] [d5,d6] [a5,f#6] [f#5,a6] [a5,f#6]", // Am C A5 C D F#m D
  Z: "[a4,e6] [e5,a6] [c5,c7] [e5,a6] [d5,d6] [a5,f#6] [f#5,a6] [a5,f#6]", AA: "~ a4 e6 c5 e5 a5 [f#5,c6,d6] a5",
  AB: "b4 [g5,d6] [d5,g6] [g5,d6] [c5,e6] [g5,g6] [e5,c7] [g5,b6]", // G5 C G C G
  AC: "[a4,a6] [c5,c6] [e5,e6] [a5,a6] [f4,a5] [f5,c6] [a4,f6] [c5,c6]", // A C E A F F5 Dm C
  AD: "[g4,g6] [b4,b5] [d5,d6] [g5,g6] [c5,e6] e5 [g5,d6] [b4,g6]", // G B D G C G5 Em
  AE: "[a4,e6] c5 [e5,c6] [c5,e6] [f#4,a5] [a4,d6] a6 [a4,f#6], ~@3 d5", // A5 C F#m D5 D
  AF: "[g4,g6] [b4,b5] [d5,d6] g6 [c5,e6] [e5,g6] [g5,c7] [b4,b6]", // G B D C Em C5 B
  AG: "[a4,a6] [e5,c6] [c5,e6] [e5,a6] [f4,a5] [c5,c6] [f5,f6] [c5,c6]", // A C A5 F C F C
  AH: "[e4,e6] [g#4,b5] [b4,g#5] e5 [a4,a5] c5 [e5,e6] [c5,c6]", // E G#m E A E C
  AI: "[a5,a6] [e5,e6] [c5,c6] [e5,e6] [a4,c6,e6,a6]@4, ~@4 e5@3 ~, ~@4 a5 ~@3", // A E C E Am
})).s("gm_flute").gain(0.26)

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

// drums · rim
const rim = s("rim").struct("<A ~@2 B@9 C B D B@6 C@5 B@4 ~ C B E@10 ~@2>".pickRestart({
  A: "~@7 x", B: "~@3 x", C: "~ x ~ x", D: "~@6 x!2", E: "~ x ~@2",
})).gain(0.2)

// drums · snare
const snare = s("sd").struct("<~ A@2 B A C@6 A@2 C@8 A@5 C@4 A ~ C D@10 B ~>".pickRestart({
  A: "~ x ~ x", B: "~@2 x!2 ~@4", C: "~ x ~@2", D: "~@3 x",
})).gain(0.2)

// drums · clap
const clap = s("cp").struct("<~@20 A ~@11 B ~@5 B ~@4 C ~>".pickRestart({
  A: "~@3 x", B: "~@7 x", C: "~@3 x ~@4",
})).gain(0.26)

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

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@6 A@2 B C@2 B D E ~ B ~@2 C@3 A B F C@3 ~@2 C ~@3 A C ~ B ~ B ~ C@3 ~@2
>`.pickRestart({
  A: "~ x ~ x", B: "~@3 x", C: "~ x ~@2", D: "~@2 x!2 ~@2 x ~", E: "~@2 x!2 ~@4", F: "~@2 x ~@3 x!2",
})).gain(0.26)

stack(piano, synth_strings_1, bass, flute, kick, rim, snare, clap, hihat, open_hat)

More by Paul Mauriat