Strudelify

Frankie and Johnny

Al Hirt

KeyC majorTempo120 bpm
0:00/0:00
// Frankie and Johnny — Al Hirt
// 120 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 3 piano (copy of ch 2 "FrankieJo" acoustic bass)
// note: Full arrangement: all 61 bars on a 24-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 · acoustic bass · "FrankieJo"
const bass = note(`<
  A@4 B@2 A@2 C B A D A@4 B@2 A@2 C B A D A@4 B@2 A@2 C B A D A@4 B@2 A@2 C B A D A@4 B@2 A@2 C B A E ~
>`.pickRestart({
  A: "c2@2 g2 a2@2 g2 c2@2 g2 a2@2 g2", B: "f2@2 c3 d3@2 c3 f2@2 c3 d3@2 c3", C: "g2@2 d3 e3@2 d3 g2@2 d3 e3@2 d3",
  D: "c2@4 g2@2 a2@4 g2@3 ~@3 g1@8", E: "g2@4 a2@2 b2@4 c3@3 ~@5 c2@6",
})).s("gm_acoustic_bass").gain(0.11)

// other · clarinet
const clarinet = note(`<
  ~@13 A@2 B@2 C D E F G H I ~ J@2 K@2 L M N O@2 P Q ~ R S T U V W X Y Z AA AB ~ AC AD AE@2 AF AG ~ AH AI ~@3
>`.pickRestart({
  A: "[~@4 c4@2 e4@3 ~ g4 ~ a4@4 g4 ~ a4@4 c4@11 ~@15, ~@6 d#4 ~@41]/2",
  B: "[~@4 c4@2 e4@3 ~ g4 ~ a4@3 ~ c5@2 g4@4 a4@9 ~@17, ~@6 d#4 ~@15 g#4 ~@25]/2",
  C: "~@4 c#5 d5@6 ~ c5@3 ~ a4@2 c5@3 ~ d5@2", D: "c5 ~@2",
  E: "~@4 g#4 ~ g4@3 ~ e4@2 d4@3 ~ c4 ~ d4@4 c4@2, ~@5 a4@2 ~@17",
  F: "g4@9 ~ e5@6 d5@2 b4 ~ a4 ~ g4@2, f#4 ~@9 d#5 ~@13", G: "f4 ~@2",
  H: "~@4 c4@2 d#4@2 e4@2 f4 ~ f#4@2 g4@2 a#4@2 g4@3 ~ f4@2", I: "d#4@3 ~ c4@2 a#3@3 ~ g3@6 ~@8",
  J: "[~@4 c4@2 e4@3 ~ g4 ~ a4@4 g4 ~ a4@3 ~ c4@9 ~@17, ~@6 d#4 ~@41]/2",
  K: "[~@4 c4@2 e4@3 ~ g4 ~ a4@3 ~ g4 ~ a4@2 ~ c5@10 ~@17, ~@6 d#4 ~@41]/2", L: "~@3 c#5 d5@6 c5 ~ d5@4 c5 ~ d5@4 c5 ~",
  M: "d5@3 ~ e5 d5 c5@3 ~@15", N: "~@10 e5@2 g5@2 [d#5,e5] ~ d5 ~ c5@2 a4@2 g4@2, ~@10 d#5 ~@13",
  O: "[~ a4@4 g4@5 ~@8 g5@2 ~@2 f5@10 ~@16, ~@18 f#5 ~@29]/2", P: "~@10 c5 ~ d#5@3 ~ c5 ~ f5@3 ~ d#5 ~",
  Q: "c5@3 ~ a#4 ~ g4@2 ~@2 g4@12 ~@2", R: "~@3 f#5 g5@6 e5 ~ c#5 ~ c5@2 a#4@2 g4@3 ~ f4 ~, ~@13 d5@2 ~@9",
  S: "d#4@3 ~ c4 ~@19", T: "~@9 c5 a#4 g4", U: "a#4@2 ~ c5@6 ~@15",
  V: "~@4 g5@2 f5@2 f5 ~ c5@2 d#5@3 ~@3 f5@3 d#5 ~@2, ~@4 f#5 ~@19", W: "f5@4 d#5 ~ c5@2 ~@16",
  X: "~@4 g4 ~ a#4@3 ~ g4 ~ c5@4 g4 ~ d#5@3 ~ c5@2", Y: "a#4@3 ~ g4 ~@10 f#5 g5@2 ~ d5 ~ f5 ~@2, ~@9 f5 ~@2",
  Z: "g5@5 ~@19", AA: "~@4 c5@6 a#4 ~ g4@2 a#4 ~@3 c5@4 g4 ~, ~@4 a#4 ~@19", AB: "a#4@3 ~ g4 ~ f4@3 ~ g4@4 ~@10",
  AC: "~@4 c5@2 e5@3 ~ c5 ~ g5@3 ~ c5 ~ a5@4 g5 ~, ~@6 d#5 ~@17", AD: "d#5@2 ~@2 c5 ~ c5 ~@17, d5 ~@23",
  AE: "[~@4 c5@2 e5@3 ~ g5 ~ a5@3 ~ g5 ~ a5@2 ~@2 c6@11 ~@15, ~@6 d#5 ~@41]/2",
  AF: "~@6 a#5@2 ~ f#5@2 f5@2 d#5@2 c5@2 ~ d#5@4 c5 ~, ~@2 c6@2 g5 ~@7", AG: "g5 ~@5",
  AH: "~@16 c6@2 a#5@2 ~ f5@2 ~, ~@10 g5 ~", AI: "d#5@3 ~ c5 ~ d#5@3 ~@3 f5@4 d#5@2 c5@3 ~ a#4 ~",
})).s("gm_clarinet").gain(0.16).pan(0.2)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  A B@2 C D E F G H D F I F J@2 K L M F N O P F Q F R@2 S D T F U H V F W F X@2 Y Z E F AA H Z F AB A B@2 Y D V F AC H Z
  F AD ~
>`.pickRestart({
  A: "[g3,c4,e4]@4 ~@2 [g3,c4,e4]@3 ~@3 [g3,c4,e4]@3 ~@3 [g3,c4,e4]@3 ~@3", // C
  B: "[[g3,c4,e4]@3 ~@3 [g3,c4,e4]@3 ~@3 [c4,e4]@4 ~@2 [b3,d#4]@4 [c4,e4]@4 ~@4 [g3,c4,e4]@3 ~@3 [g3,c4,e4]@3 ~@3 [g3,c4,e4]@3 ~@3, ~@6 g3 ~ g3@5 ~@11]/2", // C B C
  C: "[g3,c4,e4]@3 ~@3 [g3,c4,e4]@3 ~@3 [g3,c4,e4]@3 ~@3 [g3,c4,e4]@3 ~ g3 ~", // C
  D: "[a3,c4,d#4] ~ [a3,c4,d#4] ~ [a3,c4,d#4] ~ [a3,c4,d#4] ~", // Adim
  E: "[a3,c4,d#4]@3 ~@3 [a3,c4,d#4]@3 ~@3 [a3,c4,d#4]@4 ~@2 [a3,c4,d#4]@4 ~@2", // Adim
  F: "[g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~", // C
  G: "[c4,e4]@4 ~@2 [c4,e4]@4 ~@2 [c4,e4]@3 ~@3 [g3,c4,e4]@5 ~, g3@2 ~@2 g3@9 ~@11", // C
  H: "[b3,d4,f4] ~ [b3,d4,f4] ~ [b3,d4,f4] ~ [b3,d4,f4] ~", // Bdim
  I: "[g3,c4,e4]@2 ~@4 [c4,e4]@4 g3@2 ~@4 [f3,b3,d#4]@7 ~, ~@3 g3 ~@8", // C Fm7b5
  J: "[[g3,c4,e4]@3 ~@3 [g3,c4,e4]@3 ~@3 [c4,e4]@4 ~@2 [b3,d#4]@4 [c4,e4]@5 ~ g3 ~ [g3,c4,e4]@3 ~@3 [g3,c4,e4]@3 ~@3 [g3,c4,e4]@3 ~@3, ~@6 g3 ~ g3@5 ~@11]/2", // C B C
  K: "[g3,c4,e4]@3 ~@3 [g3,c4,e4]@3 ~@3 [g3,c4,e4]@3 ~@3 [g3,c4]@3 ~ g3 ~, ~@9 e4@2 ~", // C C5
  L: "[a3,c4,d#4]@3 ~@3 [a3,c4,d#4]@2 ~@4 [a3,c4,d#4]@3 ~@3 [a3,c4,d#4]@3 ~@3", // Adim
  M: "[a3,c4,d#4]@3 ~@3 [a3,c4,d#4]@3 ~@3 [a3,c4,d#4]@3 ~@3 [c4,d#4]@4 a3 ~, ~@9 a3 ~@2", // Adim Cm
  N: "[g3,c4,e4]@3 ~@3 [g3,c4,e4]@3 ~@3 [g3,c4,e4]@4 ~@2 [c4,e4]@4 g3 ~, ~@9 g3 ~@2", // C
  O: "[b3,d4,f4]@3 ~@3 [b3,d4,f4]@3 ~@3 [b3,d4,f4]@3 ~@3 [b3,d4,f4]@4 ~@2", // Bdim
  P: "[a3,c4,d#4]@3 ~@3 [a3,c4,d#4]@4 ~@2 [a3,c4,d#4]@4 ~@2 [a3,c4,d#4]@4 ~@2", // Adim
  Q: "[g3,c4,e4]@3 ~@3 [c4,e4]@4 g3@2 ~@4 [f3,b3,d#4]@7 ~, ~@3 g3 ~@8", // C Fm7b5
  R: "[[g3,c4,e4]@3 ~@3 [g3,c4,e4]@3 ~@3 [c4,e4]@4 ~@2 [b3,d#4]@4 [c4,e4]@4 ~@4 [g3,c4,e4]@3 ~@3 [g3,c4,e4]@3 ~@3 [g3,c4,e4]@4 ~@2, ~@6 g3 ~ g3@5 ~@11]/2", // C B C
  S: "[g3,c4,e4]@3 ~@3 [g3,c4,e4]@3 ~@3 [g3,c4,e4]@3 ~@3 [c4,e4]@5 ~, ~@9 g3 ~@2", // C
  T: "[a3,c4,d#4]@3 ~@3 [a3,c4,d#4]@4 ~@2 [a3,c4,d#4]@4 ~@2 [a3,c4,d#4]@4 a3 ~", // Adim
  U: "[c4,e4]@4 g3 ~ [b3,d#4]@4 [c4,e4]@6 g3 ~ [c4,e4]@4 g3 ~, g3 ~@2 g3@4 ~@2 g3 ~@2", // C B C
  V: "[a3,c4,d#4]@3 ~@3 [a3,c4,d#4]@4 ~@2 [a3,c4,d#4]@3 ~@3 [a3,c4,d#4]@3 ~@3", // Adim
  W: "[g3,c4,e4]@4 g3 ~ [g3,c4,e4]@2 ~@2 [g3,c4,e4]@3 ~@3 [f3,b3,d#4]@6 ~@2", // C Fm7b5
  X: "[[g3,c4,e4]@3 ~@3 [g3,c4,e4]@3 ~@3 [c4,e4]@4 g3 ~ [b3,d#4]@4 [c4,e4]@5 ~@3 [g3,c4,e4]@3 ~@3 [g3,c4,e4]@3 ~@3 [g3,c4,e4]@3 ~@3, ~@12 g3@2 ~@4 g3@9 ~@21]/2", // C B C
  Y: "[g3,c4,e4]@3 ~@3 [g3,c4,e4]@3 ~@3 [g3,c4,e4]@3 ~@3 [c4,e4]@4 g3 ~, ~@9 g3 ~@2", // C
  Z: "[a3,c4,d#4]@3 ~@3 [a3,c4,d#4]@3 ~@3 [a3,c4,d#4]@3 ~@3 [a3,c4,d#4]@4 ~@2", // Adim
  AA: "[g3,c4,e4]@3 ~@3 [g3,c4,e4]@3 ~@3 [g3,c4,e4]@3 ~@3 [g3,c4,e4]@4 ~@2", // C
  AB: "[g3,c4,e4]@3 ~@3 [g3,c4,e4]@3 ~@7 [f3,b3,d#4]@6 ~@2", // C Fm7b5
  AC: "[c4,e4]@4 g3 ~ [b3,d#4]@4 [c4,e4]@4 ~@2 g3 ~ [g3,c4,e4]@3 ~@3, g3 ~@2 g3@4 ~@5", // C B C
  AD: "[g2,g3]@4 [a2,a3]@2 [b2,b3]@4 [c3,c4]@3 ~@5 [c3,g3,a#3]@6", // G A B C C7
})).s("gm_acoustic_guitar_nylon").gain(0.14).pan(0.7)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  ~@12 A@2 B C D E F@2 G@2 H@2 I@2 J K L M N O P Q R@2 S@3 T U V W X Y Z AA@2 AB@3 AC U V W X AD@2 AE@2 ~
>`.pickRestart({
  A: "[c4@4 e4@2 g4@3 a4@7 g4@2 a4@10 c4@20]/2", B: "c4@2 e4 g4@2 a4@3 g4 a4@3", C: "c4@23 ~", D: "c5@3 a4@2 c5@4 a4@3",
  E: "c5@9 c5@2 a4", F: "[c5@6 b4@3 a4@2 g4@7 e5@3 d#5@3]/2", G: "[d5@13 ~@2 d#5@2 c5 d#5@2 c5 d#5@3]/2",
  H: "[c5@13 ~@11]/2", I: "[c5@4 e5@2 g5@3 a5@7 g5@2 a5@10 c5@20]/2", J: "c5@2 e5 g5@2 a5@3 g5 a5@3", K: "c5",
  L: "c6@3 a5@2 c6@4 a5@3", M: "c6@9 c6@2 a5", N: "c6@2 b5 a5", O: "g5@2 e6 d#6", P: "d6",
  Q: "~@3 d#6@2 c6 d#6@2 c6 d#6@3", R: "[c6@9 ~@7]/2",
  S: "[[c4,c5]@4 [e4,e5]@2 [g4,g5]@3 ~ a4@6 [g4,g5]@2 [a4,a5]@10 [c4,c5]@24 [e4,e5]@2 [g4,g5]@4 [a4,a5]@6 [g4,g5]@2 [a4,a5]@6, ~@9 a5@7 ~@56]/3", // C E G A C E G A …
  T: "[c4,c5]@23 ~", U: "[c5,c6]@3 [a4,a5]@2 [c5,c6]@4 [a4,a5]@3", V: "[c5,c6]@11 [a4,a5]",
  W: "[c5,c6]@2 [b4,b5] [a4,a5]", X: "[g4,g5]@2 [e5,e6] [d#5,d#6]", Y: "[d5,d6]",
  Z: "~@3 [d#5,d#6]@2 [c5,c6] [d#5,d#6]@2 [c5,c6] [d#5,d#6]@3", AA: "[[c5,c6]@9 ~@7]/2",
  AB: "[[c4,c5]@4 [e4,e5]@2 [g4,g5]@4 [a4,a5]@6 [g4,g5]@2 [a4,a5]@9 ~ c4@24 [e4,e5]@2 [g4,g5]@4 [a4,a5]@6 [g4,g5]@2 [a4,a5]@6, ~@27 c5@25 ~@20]/3", // C E G A G A E G …
  AC: "[c4,c5]", AD: "[[d5,d6]@13 ~@2 [d#5,d#6]@2 [c5,c6] [d#5,d#6]@2 [c5,c6] [d#5,d#6]@3]/2",
  AE: "[[c5,c6]@13 ~@11]/2", // C
})).s("gm_string_ensemble_1").gain(0.13).pan(0.8)

// other · brass section
const brass_section = note(`<
  ~@3 A ~@4 A ~@7 B ~ C ~ D E ~ F C ~@2 G@8 F H ~@2 I@2 J@3 K@2 L@2 M N O@2 P Q R S T@3 U@2
>`.pickRestart({
  A: "~@11 [f3,f4]", B: "[f3,f4] ~@11", C: "[c4,c5] ~@11", D: "[g3,g4]", E: "[f3,f4]", F: "~@2 [g3,g4]",
  G: "[~@6 [c4,c5]@3 ~@3 [c4,c5]@4 [a#3,a#4]@2 [g3,g4]@4 [f3,f4]@31 ~ [f3,f4]@3 ~@3 [f3,f4]@4 [g3,g4]@4 ~@2 [c4,c5]@30 ~@2 [c4,c5]@4 [g3,g4] ~ [a#3,a#4]@3 ~ [c4,c5]@2 [a#3,a#4]@4 [g3,g4]@18 ~@2 [g4,g5]@4 f5@20 [d#4,d#5]@3 ~ [c4,c5]@26, ~@71 f4@9 ~@16]/8", // C A# G F G C G A# …
  H: "[c4,c5] ~@7", I: "[~@4 [c4,c5]@3 ~@5 [c4,c5]@4 [a#3,a#4]@2 [g3,g4]@3 ~ f3@26, ~@11 f4@12 ~]/2",
  J: "[[f4,f5]@16 ~@2 [d#4,d#5]@3 ~ [c4,c5]@30 ~@20]/3", // F D# C
  K: "[[g3,g4]@17 ~ [g4,g5]@4 [f4,f5]@14 [f4,f5]@4 [d#4,d#5]@2 [c4,c5]@3 ~@3]/2", // G F D# C
  L: "[[c4,c5]@30 [a#3,a#4]@3 ~ g3@2 ~@4 [g3,g4]@8, ~@11 g4 ~@4]/2", // C A# G
  M: "[c4,c5]@3 ~ [e4,e5]@2 [g4,g5]@3 ~ [a4,a5]@6 [g4,g5]@2 [a4,a5]@5 ~", N: "[a4,a5]@2 [c4,c5]@9 ~",
  O: "[[c4,c5]@4 [e4,e5]@2 [g4,g5]@3 ~ [a4,a5]@6 [g4,g5]@2 [a4,a5]@4 [c4,c5]@24 ~@2]/2", // C E G A G A C
  P: "[c5,c6]@3 ~ [c5,c6]@2 [a4,a5]@3 ~ [c5,c6]@5 ~ [c5,c6]@2 [a4,a5]@5 ~", // C A C A
  Q: "[c5,c6]@3 ~ [c5,c6]@12 ~@2 [c5,c6]@4 a4@2, ~@22 a5 ~", // C
  R: "[c5,c6]@3 ~@3 [c5,c6]@4 ~@2 [b4,b5]@4 ~@2 [a4,a5]@4 ~@2", S: "[g4,g5]@6 [e4,e5]@2 ~ [f4,f5]@2 ~",
  T: "[[g4,g5]@16 ~@2 [g4,g5]@4 [f4,f5]@12 ~@3 f4@3 ~@2 [d#4,d#5]@3 ~ [c4,c5]@25 ~, ~@9 f5 ~@8]/3", // G F D# C
  U: "[g4@4 a4@2 b4@3 ~ c5@2 ~@5 [c5,a#5]@8 a5 ~ c5 [a4,b4] [e4,f4,g4] [a3,b3,c4,d4] ~@17, ~@25 g5@2 d5@2 ~@19, ~@13 [e5,f5] ~@10]/2", // C7 Asus2 Em D7 Fmaj7
})).s("gm_brass_section").gain(0.23).pan(0.1)

// other · trombone
const trombone = note("<~@48 A B C D@2 E F G H I J ~@2>".pickRestart({
  A: "~@6 a#3@17 ~", B: "a#3@4 ~@2 a#3@4 g3@2 f3@4 d#3@2 c3@4 a#2 ~", C: "a#2@18 ~@4 c3 ~",
  D: "[e3@4 ~@2 f3@4 ~@2 f#3@3 g3@2 ~ a#3@3 ~ a#3@24 ~@2]/2", E: "f3@11 ~ f3@5 ~ f3@4 d#3 ~",
  F: "d#3@5 ~ c3@4 ~@2 e3@4 ~@2 f3@4 ~@2", G: "g3@3 ~ c4@4 ~@2 a#3@8 g3@3 f3 ~@2, f#3 ~@23",
  H: "f3@10 ~@2 f3@4 ~@2 f3@3 ~ d#3 ~", I: "f3@5 ~ g3@3 ~@3 f3@3 ~ f3@2 d#3@3 ~ c3 ~", J: "a#2@3 ~",
})).s("gm_trombone").gain(0.28).pan(0.8)

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

// drums · snare
const snare = s("sd").struct(`<
  A@11 B A@7 B A@3 B A@3 B A@3 C A@3 D A@3 B A@3 B A@3 E A@3 B A@3 B A@3 ~@2
>`.pickRestart({
  A: "~ x ~ x", B: "~@3 x ~@4 x ~@3", C: "~@3 x ~@4 x!2 ~@2", D: "~@2 x!2 ~@4 x ~@3", E: "~ x ~@4",
})).gain(0.25)

// drums · low tom
const low_tom = s("lt").struct("<~@31 A ~@7 B ~@3 B ~@11 B ~@3 C ~>".pickRestart({
  A: "~@5 x", B: "~@11 x", C: "~@5 x ~@6",
})).gain(0.28)

// drums · mid tom
const mid_tom = s("mt").struct("<~@19 A ~@3 B ~@7 A ~@3 C ~@3 D ~@3 E ~@3 F ~@7 E ~@3 G ~>".pickRestart({
  A: "~@11 x", B: "~ x", C: "~@5 x!2 ~@5", D: "~@3 x", E: "~@5 x", F: "~@5 x ~@5 x", G: "~@2 x!2 ~@8",
})).gain(0.28)

// drums · crash
const crash = s("cr").struct(`<
  ~@3 A ~@4 B ~ C D C ~@2 C@2 ~ C ~ C@3 D C ~@2 E ~@2 C ~ B ~ C D F G@2 H F G F G I G F J F G@2 K G@2 F G F@3 L ~
>`.pickRestart({
  A: "~@11 x", B: "x ~@10 x", C: "x", D: "~@2 x", E: "x ~@7 x ~@2 x", F: "x!2 ~ x", G: "~ x ~ x",
  H: "x ~@2 x ~@4 x!2 ~@2", I: "x ~@2 x ~@5 x ~ x", J: "~@3 x ~@4 x!2 ~@2", K: "x ~@2 x ~@4 x ~@2 x", L: "x ~@2 x",
})).gain(0.28)

// drums · ride
const ride = s("rd").struct(`<
  A@3 B C A@3 D E F G H A@2 I J A F B J@3 K H A C L I M F N D O J P Q O@2 L J O J R D O J P I O@2 L O@2 J R J@3 ~@2
>`.pickRestart({
  A: "x ~@2 x ~ x!2 ~@2 x ~ x", B: "x ~@2 x ~ x!2 ~@2 x ~@2", C: "x ~ x!2 ~ x!2 ~@2 x ~ x",
  D: "~@2 x!2 ~ x!2 ~ x!2 ~@2", E: "x ~ x!2 ~@2 x ~ x!2 ~ x", F: "~@2 x!2 ~ x!2 ~@2 x ~ x", G: "x ~@2 x ~ x!2 ~@5",
  H: "~@3 x ~ x!2 ~@2 x ~ x", I: "~@3 x ~ x!2 ~ x!2 ~ x", J: "~@2 x!2 ~ x!2 ~ x!2 ~ x", K: "x ~ x!2 ~ x ~@6",
  L: "~@2 x!2 ~ x!2 ~@2 x ~@2", M: "x ~@2 x ~ x!2 ~ x!2 ~ x", N: "x ~ x!2 ~ x!2 ~ x!2 ~@2",
  O: "x ~ x!2 ~ x!2 ~ x!2 ~ x", P: "x ~ x!2 ~ x!2 ~@5", Q: "~ x!3 ~ x!2 ~ x!2 ~ x", R: "x ~ x!2 ~ x!2 ~@2 x ~@2",
})).gain(0.28)

// drums · tambourine
const tambourine = s("tb").struct("<~@12 [x!12]!47 x ~>").gain(0.14)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<[~@3 x ~ x ~@3 x ~ x]!59 ~@2>").gain(0.99)

stack(
  bass, clarinet, acoustic_guitar_nylon, string_ensemble_1, brass_section, trombone, kick, snare, low_tom, mid_tom,
  crash, ride, tambourine, cabasa
)

More by Al Hirt