Strudelify
Brandy (You're A Fine Girl) cover art

1972 · Looking Glass

Brandy (You're A Fine Girl)

Looking Glass

KeyE majorTempo126 bpm
0:00/0:00
// Brandy (You're A Fine Girl) — Looking Glass
// 126 bpm, 4/4, key E major. Source: mcgill + midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 100 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(126/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 · acoustic bass · "ACOU BASS"
const bass = note(`<
  ~ A@2 B@2 C D E F G H I J G K L M G K I J G K L M A@2 B@2 C D E F G K I J G K L M G K I J G K L M A@2 B@2 C D E F N O
  P Q N Q R S T@2 U@2 S D V W G H I J G K L M A@2 B@2 C D E F A@2 B@2 C D E F E F X
>`.pickRestart({
  A: "[c#2@5 ~ b2@2 c#3@2 b2@2 c#2 ~ a1@9 ~ a1@2 g#1@2 f#1 ~ e1@2]/2",
  B: "[c#2@5 ~ b2@2 c#3@2 b2@2 c#2 ~ a1@7 ~ e1@2 a1@2 g#1@2 f#1@2 e1@2]/2", C: "b1@3 ~ b1@3 ~ b1 ~ b1 ~ b1 ~ b1 ~",
  D: "b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~", E: "a1@5 ~ g#1@7 ~ f#1@2", F: "~@2 g#1@2 a1@2 b1@2 ~@2 b1@2 ~@2 b1 ~",
  G: "e2@4 ~@2 e2 ~ g#2@5 ~ g#2 ~", H: "f#2@2 g#2@2 ~@2 c#2@3 ~ c#2@3 ~ e2@2",
  I: "f#2@2 e2@2 c#2 ~ a1@3 ~ a1@2 b1@2 a1@2", J: "d2 f#2 ~ a1@2 b1 c#2 b1",
  K: "f#2@2 g#2@2 ~@2 c#2@2 ~@2 c#2@3 ~ e2@2", L: "f#2@2 e2@2 c#2@2 a1@3 ~ b1@3 ~ e2@2",
  M: "~@2 e2 ~ e2@3 e1 e2 ~ e2@2 e1@2 ~@2", N: "c#2@3 ~ c#2@3 g#1 c#2 ~ c#2@2 g#1 ~ c#2@2",
  O: "b1@3 ~ b1@3 f#1 b1 ~ b1@2 f#1 ~ b1@2", P: "a1@3 ~ a1@3 e1 a1 ~ a1@2 e1 ~ a1@2",
  Q: "b1@3 ~ b1@3 f#1 b1 ~ b1@2 f#1 ~ b1 ~", R: "a1@3 ~ a1@3 e1 a1 ~ a1@2 e1 ~ a1 ~",
  S: "b1 ~ b1@2 b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~",
  T: "[c#2@3 ~ c#2@3 g#1 c#2@2 g#1@2 c#2@2 d2@5 ~ d2@3 a1 d2 ~ d2@2 a1 ~ d2@2]/2",
  U: "[c#2@3 ~ c#2@3 ~ c#2 ~ c#2@2 b1@2 a1@5 ~ a1@3 e1 a1 ~ a1@2 e1@2 a1 ~]/2", V: "a1@5 ~ g#1@6 ~@2 f#1@2",
  W: "~@2 g#1@2 a1 ~ b1@2 ~@2 b1@2 ~@2 b1 ~", X: "e1@3 ~@13",
})).s("gm_acoustic_bass").gain(0.62)

// chords · epiano2 · "E.PIANO 2"
const epiano2 = note(`<
  ~ A@2 B@2 C D E@2 F G H I F G J@2 F G H I F G K@2 A@2 L@2 C D E@2 F G H I F G J@2 F G H I F G K@2 A@2 L@2 C D E@2 M@2
  N O P Q R@2 S@2 T@2 U V E@2 F G H I F G W@2 A@2 L@2 C D E@2 A@2 L@2 C D E@4 X
>`.pickRestart({
  A: "[[c#3,c#4,e4,g#4]@13 ~ b4 c#5@3 [b4,e5]@2 f#4 g#4 f#4@2 ~@2 a3 ~ b3@2 c#4@2, ~@14 [a2,c#4,a4]@15 ~@3, ~@7 e4@5 e4@2 e4@2, ~@14 e5@3 ~@15]/2", // C#m E5 A
  B: "[[c#3,g#4]@13 ~ b4 c#5@3 [b4,e5]@2 f#4 g#4 f#4@2 ~@2 a3 ~ b3@2 c#4@2, [c#4,e4]@2 ~@12 [a2,c#4,a4]@13 ~@5, ~@7 e4@5 e4@2 e4@2, ~@14 e5@3 ~@15]/2", // C#5 E5 C#m A
  C: "[b2,b3,g#4]@15 ~, e4 ~@3", D: "[b2,b3,d#4,f#4]@8 [b2,b3,d#4,f#4]@5 ~@3",
  E: "[[a2,a3,c#4,e4,g#5]@4 f#5@2 e5@2 g#5@2 f#5@2 e5@2 [f#2,f#3,a3,c#4,g#5]@4 f#5@2 e5 ~ [b2,a3,c#4,e4,g#5]@3 ~ a5@2 g#5@2 ~@2, ~@6 [g#2,g#3,b3,d#4]@6 ~@14 [b2,a3,c#4,e4]@5 ~]/2", // Amaj7 F#m C#m7 G#m A
  F: "g#3 ~@3 b3@2 b3@2 [b3,d#4,f#4]@4 [b3,d#4,f#4]@4, e2 g#2, [b3,e4] e4 ~@2, ~ g#3@3 ~@4", // B E5
  G: "[f#2,a3,c#4,e4] ~ [f#2,a3,c#4,e4] ~@3 c#4@4 ~@2 [e4,g#4]@4, ~@3 c#3@5, ~@3 [e4,g#4]@3 ~@2, ~@5 c#4@3", // F#m7 E
  H: "~@4 [a3,c#4,f#4]@2 [a3,c#4,e4]@6 [a3,c#4,e4]@3 ~, f#2@7 ~@9, [a3,c#4,f#4]@4 ~@2 e3@9 ~, ~@2 f#3@5 ~@9", // F#m A F#m
  I: "[a2,e3,a3,d4,f#4] ~ [a2,e3,a3,d4,f#4]@3 ~ [a3,c#4,e4]@4 ~@4 c#4 ~, ~@3 a2@5, ~@5 e3@3, ~@3 [a3,e4]", // D A A5
  J: "[a3@2 a3@2 [a3,c#4,f#4]@2 [b2,a3,c#4,e4]@3 ~ [b2,a3,c#4,e4]@3 ~ e2@3 ~@3 g#3@2 [g#3,b3,e4]@2 [g#3,b3,e4] ~ [a2,a3,c#4,e4,a4]@3 ~ [a2,a3,a4]@2, f#2@3 ~@4 g#3@3 ~@6, [c#4,f#4]@2 ~@5 [b3,e4]@4 ~@5, ~@17 e2@8 ~@5 [a#2,c#4,e4] ~]/2", // F#m A E A F#5 E5 A#dim
  K: "[a3@2 a3@2 [a3,c#4,f#4]@2 [b2,a3,c#4,e4]@3 ~ [b2,a3,c#4,e4]@3 ~ e2@3 ~@3 g#3@2 [g#3,b3,e4]@2 [g#3,b3,e4] ~ g#3@2 [g#3,b3,e4] ~ [g#3,b3] ~, f#2@3 ~@4 g#3@3 ~@6, [c#4,f#4]@4 ~@10 [b3,e4]@8 ~@4 e4 ~@3 e4@2, ~@17 e2@7 e2@7 ~]/2", // F#m A E G#m F#5 E5
  L: "[[c#3,e4,g#4]@13 ~@3 c#5@2 [b4,e5]@2 f#4 g#4 f#4@2 ~@2 a3 ~ b3@2 c#4@2, c#4@2 ~@12 [a2,c#4,a4]@13 ~@5, ~@7 e4@5 e4@2 e4@2, ~@16 e5 ~@15]/2", // C#m E5 A
  M: "[[c#3,c#4,e4,g#4]@4 ~@4 c#4@2 [c#4,e4,g#4]@4 [b3,d#4,f#4]@6 [b3,d#4,f#4]@3 ~ [b3,d#4,f#4] ~ [b3,d#4,f#4]@2 ~@2 [b3,d#4,f#4]@2, ~@2 [e4,g#4]@3 ~@11, ~@4 c#4@4 ~@6 b2@9 b2@5 ~@4, ~@6 c#3@9 ~@17]/2", // C#m B E
  N: "[a3,c#4,e4]@2 ~@2 [a3,c#4,e4] [a3,c#4]@2 [a3,c#4], a2@3 a2@5, ~@2 [a3,c#4,e4]@2 ~ e4@3", // A
  O: "[b3,d#4,f#4]@2 ~@2 [b3,d#4,f#4] [b3,d#4,f#4]@3, b2@3 b2@5, ~ [b3,d#4,f#4] ~@2", // B
  P: "[c#4,e4,g#4]@4 [c#4,e4,g#4]@3 ~ [c#4,e4,g#4] ~ [c#4,e4,g#4]@2 [c#4,e4,g#4]@2 [c#4,e4,g#4]@2, c#3@7 c#3@9", // C#m
  Q: "[b3,d#4,f#4]@4 [b3,d#4,f#4]@3 ~ [b3,d#4,f#4] ~ [b3,d#4,f#4]@2 ~@2 [b3,d#4,f#4]@2, b2@7 b2@6 ~@3", // B
  R: "[[a3,c#4,e4]@4 [a3,c#4,e4]@3 ~ [a3,c#4,e4] ~@9 [b3,d#4,f#4]@2 ~@4 [b3,d#4,f#4]@2 [b3,d#4,f#4]@4 [b2,b3,d#4,f#4] ~, a2@7 a2@9 b2@6 b2@8 ~@2, ~@5 [a3,c#4,e4]@3 ~@8, ~@7 [b3,d#4,f#4]@2 ~ [b3,d#4,f#4]@2 ~@4]/2", // A B A B
  S: "[[c#4,e4,g#4]@4 [c#4,e4,g#4]@4 [c#4,e4,g#4]@2 [c#4,e4,g#4]@4 [d4,f#4,a4]@6 [d4,f#4,a4]@3 ~ [d4,f#4,a4] ~ [d4,f#4,a4]@2 ~@2 c#4@2, c#3@14 d3@9 d3@5 ~@4]/2", // C#m D
  T: "[[c#4,e4,g#4]@2 ~@2 [c#4,e4,g#4] [c#4,e4,g#4]@2 a3@2 ~ [b3,e4]@2 e4 [a3,c#4,e4]@3, c#3@3 c#3@4 a2@9, ~@2 [c#4,e4,g#4]@2 ~@3 c#4@6 ~@3, ~@7 e4@3 ~@2 b3@4, ~@9 a3@4 ~@3]/2", // C#m E5 A C#m
  U: "[b3,e4,g#4]@2 [b3,e4,g#4]@2 [b3,e4,g#4] [b3,e4,g#4]@2 [b3,e4,g#4], b2, ~@5 f#4@3", // E
  V: "[b3,d#4,f#4]@2 ~@2 [b3,d#4,f#4] [b3,d#4,f#4]@2 ~, b2@3 b2@4 ~, ~ [b3,d#4,f#4] ~@2", // B
  W: "[a3@2 a3@2 [a3,c#4,f#4]@2 [b2,a3,c#4,e4]@3 ~ [b2,a3,c#4,e4]@3 ~ g#3@6 g#3@2 [g#3,b3,e4]@2 [g#3,b3,e4] ~ g#3@2 [g#3,b3,e4] ~ [g#3,b3] ~, f#2@3 ~@4 e2@5 e2@4, [c#4,f#4]@4 ~@10 [b3,e4]@8 ~@4 e4 ~@3 e4@2]/2", // F#m A E G#m F#5 E5
  X: "[e2,e3,g#3,b3,e4] ~@7", // E
})).s("gm_epiano2").gain(0.56)

// chords · acoustic guitar nylon · "NYLON GTR"
const acoustic_guitar_nylon = note(`<
  ~ A@4 B C D@2 ~@16 A@4 B C D@2 ~@16 A@4 B C D@2 E@2 F G H I J@2 K@2 L@2 M N O@2 ~@8 A@4 B C D@2 A@4 B C D@4 P
>`.pickRestart({
  A: "[~@4 [f#4,b4]@5 ~ [e4,g#4] ~@3 [c#4,e4]@15 ~@3]/2", B: "~@2 g#4 e5@5", C: "~@4 f#4@2 d#5@9 ~",
  D: "[[b3,e4,g#4]@4 [a3,c#4,f#4]@2 [g#3,b3,e4] ~ [b3,e4,g#4]@2 [a3,c#4,f#4]@2 [g#3,b3,e4] ~ [b3,e4,g#4]@4 [a3,c#4,f#4]@2 [g#3,b3,e4] ~ [b3,e4,g#4]@2 ~@2 [c#4,f#4,a4]@2 [b3,e4,g#4]@2 ~@2]/2", // E F#m E F#m E F#m E F#m …
  E: "[[c#3,c#4,e4,g#4]@4 ~@4 c#4@2 [c#4,e4,g#4]@4 [b3,d#4,f#4]@6 [b3,d#4,f#4]@3 ~ [b3,d#4,f#4] ~ [b3,d#4,f#4]@2 ~@2 [b3,d#4,f#4]@2, ~@2 [e4,g#4]@3 ~@11, ~@4 c#4@4 ~@6 b2@9 b2@5 ~@4, ~@6 c#3@9 ~@17]/2", // C#m B E
  F: "[a3,c#4,e4]@2 ~@2 [a3,c#4,e4] [a3,c#4]@2 [a3,c#4], a2@3 a2@5, ~@2 [a3,c#4,e4]@2 ~ e4@3", // A
  G: "[b3,d#4,f#4]@2 ~@2 [b3,d#4,f#4] [b3,d#4,f#4]@3, b2@3 b2@5, ~ [b3,d#4,f#4] ~@2", // B
  H: "[c#4,e4,g#4]@4 [c#4,e4,g#4]@3 ~ [c#4,e4,g#4] ~ [c#4,e4,g#4]@2 [c#4,e4,g#4]@2 [c#4,e4,g#4]@2, c#3@7 c#3@9", // C#m
  I: "[b3,d#4,f#4]@4 [b3,d#4,f#4]@3 ~ [b3,d#4,f#4] ~ [b3,d#4,f#4]@2 ~@2 [b3,d#4,f#4]@2, b2@7 b2@6 ~@3", // B
  J: "[[a3,c#4,e4]@4 [a3,c#4,e4]@3 ~ [a3,c#4,e4] ~@9 [b3,d#4,f#4]@2 ~@4 [b3,d#4,f#4]@2 [b3,d#4,f#4]@4 [b2,b3,d#4,f#4] ~, a2@7 a2@9 b2@6 b2@8 ~@2, ~@5 [a3,c#4,e4]@3 ~@8, ~@7 [b3,d#4,f#4]@2 ~ [b3,d#4,f#4]@2 ~@4]/2", // A B A B
  K: "[[c#4,e4,g#4]@4 [c#4,e4,g#4]@4 [c#4,e4,g#4]@2 [c#4,e4,g#4]@4 [d4,f#4,a4]@6 [d4,f#4,a4]@3 ~ [d4,f#4,a4] ~ [d4,f#4,a4]@2 ~@2 c#4@2, c#3@14 d3@9 d3@5 ~@4]/2", // C#m D
  L: "[[c#4,e4,g#4]@2 ~@2 [c#4,e4,g#4] [c#4,e4,g#4]@2 a3@2 ~ [b3,e4]@2 e4 [a3,c#4,e4]@3, c#3@3 c#3@4 a2@9, ~@2 [c#4,e4,g#4]@2 ~@3 c#4@6 ~@3, ~@7 e4@3 ~@2 b3@4, ~@9 a3@4 ~@3]/2", // C#m E5 A C#m
  M: "[b3,e4,g#4]@2 [b3,e4,g#4]@2 [b3,e4,g#4] [b3,e4,g#4]@2 [b3,e4,g#4], b2, ~@5 f#4@3", // E
  N: "[b3,d#4,f#4]@2 ~@2 [b3,d#4,f#4] [b3,d#4,f#4]@2 ~, b2@3 b2@4 ~, ~ [b3,d#4,f#4] ~@2", // B
  O: "[[a2,a3,c#4,e4,g#5]@4 f#5@2 e5@2 g#5@2 f#5@2 e5@2 [f#2,f#3,a3,c#4,g#5]@4 f#5@2 e5 ~ [b2,a3,c#4,e4,g#5]@2 ~@2 a5@2 g#5@2 ~@2, ~@6 [g#2,g#3,b3,d#4]@6 ~@14 [b2,a3,c#4,e4]@5 ~]/2", // Amaj7 F#m C#m7 G#m A
  P: "[b4,e5,g#5] ~@7", // E
})).s("gm_acoustic_guitar_nylon").gain(0.64)

// chords · brass section · "BRASS 1"
const brass_section = note(`<
  ~@5 A@2 B@2 ~@16 C D C E A@2 B@2 ~@8 F@3 G H I J@2 C D C E A@2 B@2 K L M N O P Q R S@2 T@2 U@2 B@2 ~@8 C D C E A@2 B@2
  C D C E A@2 B@4 V
>`.pickRestart({
  A: "[[e4,g#4]@16 [d#4,f#4]@15 ~, b4@31 ~]/2", // E D#m
  B: "[[e4,a4,c#5]@5 ~ [a4,c#5,e5]@7 ~ [c#5,e5,g#5]@7 ~ [c#5,e5,a5]@2 ~@2 [c#5,e5]@4 ~@2, ~@13 a5 ~@2]/2", C: "[e4,e5]",
  D: "~@2 [g#4,g#5] ~ [f#4,f#5] ~ [g#4,g#5]@6 [e4,e5] ~@3", E: "~@2 [g#4,g#5] ~ [f#4,f#5] ~ [g#4,g#5]@6 [e4,e5]@2 ~@2",
  F: "[~@2 e4@21 ~]/3", G: "[f#4,a4,d5] ~ [f#4,a4,d5] ~@3 [e4,a4,c#5]@9 ~", H: "b4", I: "~@2 g#4@2 f#4@2 e4@9 ~",
  J: "[[a4,c#5]@5 ~ [a4,c#5] ~@3 c#5@2 ~@2 [b4,e5]@16 ~@2, ~@10 a4 ~@21]/2", K: "e4", L: "d#4", M: "c#4", N: "d#4@7 ~",
  O: "[e4,c#5]", P: "[d#4,b4]", Q: "[c#4,a4]", R: "[d#4,b4]@15 ~", S: "[[e4,e5]@13 ~ [d4,d5,f#5]@17 ~]/2",
  T: "[[e4,e5]@13 ~ [c#5,e5,a5]@17 ~]/2", U: "[[b4,b5]@31 ~]/2", V: "[b4,e5,g#5] ~@7",
})).s("gm_brass_section").gain(0.5)

// chords · drawbar organ · "ORGAN 1"
const drawbar_organ = note(`<
  ~@5 A B C@2 ~@16 D@4 A B C@2 ~@16 D@4 A B C@2 ~@24 D@4 A B C@2 D@4 A B C@4 E
>`.pickRestart({
  A: "[b3,e4,g#4,b4,e5,g#5]", B: "[b3,d#4,f#4,b4,d#5,f#5]",
  C: "[[a3,c#4,e4,a4,c#5,e5]@6 [g#3,b3,d#4,g#4,b4,d#5]@7 ~ [f#3,a3,c#4,f#4,a4,c#5]@7 ~ [a3,c#4,e4,a4,c#5,e5]@2 ~@2 [a3,c#4,e4,a4,c#5,e5]@5 ~]/2", // A G#m F#m A
  D: "[[c#4,e4,g#4,c#5,e5,g#5]@13 ~ [c#4,e4,a4,c#5,e5,a5]@17 ~]/2", E: "[b4,e5,g#5] ~@7",
})).s("gm_drawbar_organ").gain(0.4)

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

// drums · rim
const rim = s("rim").struct("<~@9 A@15 B ~@8 A@15 B ~@24 A@7 B ~@19>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2",
})).gain(0.71)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~@6 A B ~@16 C ~@5 D B ~@16 C ~@5 D B ~@8 E ~@3 E ~@2 B ~@8 C ~@5 D B ~@6 D B ~ B A ~
>`.pickRestart({
  A: "~@8 x!4 ~@4", B: "~@2 x!2 ~@12", C: "~@6 x!3 ~@7", D: "~@10 x!4 ~@2", E: "~@5 x ~@2",
})).gain(0.21)

// drums · low tom
const low_tom = s("lt").struct("<A ~@5 B ~@17 C ~@23 C ~@15 D ~@15 C ~@18 E>".pickRestart({
  A: "~@3 x", B: "~ x", C: "~@14 x!2", D: "~@5 x!3", E: "x",
})).gain(0.71)

// drums · hihat
const hihat = s("hh").struct("<~ A@7 B A@23 B A@23 B A@15 B A@15 B A@7 B A B ~>".pickRestart({
  A: "x!8", B: "x!4 ~ x ~ x",
})).gain(0.21)

// drums · mid tom
const mid_tom = s("mt").struct("<~@6 A ~@17 B ~@23 B ~@15 C ~@15 B ~@19>".pickRestart({
  A: "~@3 x ~@4", B: "~@12 x!2 ~@2", C: "~ x",
})).gain(0.71)

// drums · open hat
const open_hat = s("oh").struct("<~@8 A ~@23 A ~@23 A ~@15 A ~@15 A ~@7 A ~ A ~>".pickRestart({
  A: "~@2 x!2",
})).gain(0.71)

// drums · high tom
const high_tom = s("ht").struct("<~@6 [x!3 ~@5] ~@57 [~@3 x ~@4] ~@35>").gain(0.71)

// drums · crash
const crash = s("cr").struct(`<
  ~@7 A ~@17 B ~ C ~ B ~ A ~@17 B ~ C ~ B ~ A ~ B ~@7 D ~ D ~ B ~ A ~@9 B ~ C ~ B ~ A ~ B ~ C ~ B ~ A ~ A ~@2
>`.pickRestart({
  A: "x ~@2 x ~@3 x", B: "x", C: "~ x ~@2", D: "x ~@6 x",
})).gain(0.71)

// drums · ride
const ride = s("rd").struct("<~@29 A@2 ~@22 A@2 ~@14 A@2 ~@14 A@2 ~@6 A@2 ~@5>".pickRestart({
  A: "x!8",
})).gain(0.71)

// drums · congas
const congas = s("conga:18").struct(`<
  ~@57
  [~@2 x!3 ~@3 x ~ x!4 ~@2]!7
  [~@2 x!3 ~@6 x ~ x ~@2]
  [~@2 x!3 ~@3 x ~ x!4 ~@2]!6
  ~@29
>`).gain(2.29)

// drums · congas
const congas_2 = s("conga:33").struct("<~@57 [~@3 x ~@3 x]!7 ~ [~@3 x ~@3 x]!6 ~@29>").gain(2.29)

// drums · shaker
const shaker = s("sh").struct("<~@9 [x!4]!16 ~@8 [x!4]!16 ~@24 [x!4]!8 ~@19>").gain(0.71)

// drums · shaker · soft notes
const shaker_soft = s("sh").struct("<~@9 [~ x ~ x ~ x ~ x]!16 ~@8 [~ x ~ x ~ x ~ x]!16 ~@24 [~ x ~ x ~ x ~ x]!8 ~@19>")
  .gain(0.21)

stack(
  bass, epiano2, acoustic_guitar_nylon, brass_section, drawbar_organ, kick, rim, snare, snare_soft, low_tom, hihat,
  mid_tom, open_hat, high_tom, crash, ride, congas, congas_2, shaker, shaker_soft
)