Strudelify
Hello Again cover art

Hello Again

Hello Again

Howard Carpendale

KeyC majorTempo110 bpm
0:00/0:00
// Hello Again — Howard Carpendale
// 110 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 114 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(110/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 · "Gesang"
const piano = note(`<
  A B@2 C@2 D@2 E@2 ~ F G@2 ~@4 H I@2 J@2 K@2 L M N O P Q R S T U@2 V@2 W@2 X Y Z@2 AA@2 AB@2 AC ~@2 F G@2 ~@4 H I@2 J@2
  K@2 L M N O P Q R S T U@2 V@2 W@2 X Y Z@2 AA@2 AB@2 AC AD U@2 V@2 W@2 X Y Z@2 AA@2 AB@2 AC ~@2 F G@2 ~@5
>`.pickRestart({
  A: "~@7 c5", B: "[c5@3 ~ c5@2 ~ c5@22 ~ b4@3 c5@3 d5@4 c5@5 a4@3]/2",
  C: "[c5@5 ~ c5@3 c5@20 ~ b4@3 c5@3 d5@4 c5@5 g4@3]/2", D: "[a4@27 f4@4 g4@3 ~@2 a4@4 b4@5 c5@3]/2", E: "[b4@23 ~]/2",
  F: "~@10 [d5,f5]@5 ~ [d5,f5]@2 [d5,f5]@3 ~ [e5,g5]@2", G: "[[d5,f5]@6 [c5,e5]@3 ~ [e5,g5]@20 ~@18]/2",
  H: "~@10 [c5,e5]@2 [c5,e5]@3 ~ e5@2 [c5,e5]@3 ~ [c5,e5]@2, ~@16 c5 ~@7", // C
  I: "[[c5,e5]@5 ~ [e5,g5]@3 ~ [c5,e5]@21 ~@3 [c5,e5]@2 [c5,e5]@3 ~ [c5,e5] ~ [c5,e5]@3 ~ [c5,e5,g5]@2]/2", // C Em C
  J: "[[c5,e5,a5]@5 ~ [c5,e5,g5]@3 ~ [c5,e5]@22 ~@2 [c5,e5]@2 [c5,e5]@3 ~ [c5,e5]@2 [c5,e5]@4 d5@2, ~@46 b4 ~]/2", // Am C
  K: "[[c5,e5]@5 ~ [e5,g5]@3 ~ [c5,e5]@23 ~ [c5,e5]@2 [c5,e5]@3 ~ [c5,e5]@2 [c5,e5]@2 ~@2 [c5,e5,g5]@2]/2", // C Em C
  L: "[c5,e5,a5]@5 ~ [c5,e5,g5]@3 ~ [c5,e5]@13 ~", // Am C
  M: "~@10 [g4,b4,d5]@2 [g4,b4,d5]@3 ~ [g4,b4,d5]@2 [g4,b4,d5]@3 ~ [g4,b4,d5]@2", // G
  N: "[g4,c5,e5]@5 ~ [g4,b4,d5]@3 ~ [f4,a4,c5]@4 ~@2 [g4,b4,d5]@7 ~", // C G F G
  O: "~@10 [g4,b4,d5]@2 [g4,b4,d5]@3 ~ [g4,b4] ~ [g4,b4,d5]@3 ~ [b4,d5]@2, ~@16 d5@2 ~@4 g4 ~", // G Bm
  P: "[g4,c5,e5]@6 [g4,b4,d5]@3 ~ [f4,a4,c5]@4 ~@2 [g4,b4,d5]@6 ~@2", // C G F G
  Q: "~@10 [g4,c5,e5]@2 [g4,c5,e5]@3 ~ [g4,c5] ~ [g4,c5,e5]@3 ~ [g4,c5] ~, ~@8 e5 ~@2 e5", // C C5 C C5
  R: "[a4,c5,f5]@5 ~ [a4,c5,f5]@3 ~ [a4,c5,f5]@4 ~@2 [a4,c5,f5]@7 ~", // F
  S: "~@10 [g4,c5] ~ [g4,c5,e5]@3 ~ [g4,c5,e5] ~ [g4,c5,e5]@3 ~ [c5,e5] ~, ~@5 e5 ~@5 g4", // C5 C
  T: "[g4,b4,d5]@5 ~ [g4,b4,d5]@2 ~@2 [g4,c5,e5]@3 ~@3 [g4,b4,d5]@2 ~@4 [e4,c5] ~", // G C G C
  U: "[[e4,c5]@5 ~ [e4,c5]@4 [e4,c5]@16 ~@4 b4@3 c5@3 d5@4 c5@5 a4@3]/2", // C
  V: "[c5@5 ~ c5@3 ~ c5@20 b4@3 c5@3 d5@4 c5@5 g4@2 ~]/2", W: "[a4@28 f4@4 g4@4 a4@4 b4@3 ~ c5@3 ~]/2", X: "b4@23 ~",
  Y: "~@11 [e4,g4,c5]", Z: "[[e4,g4] ~@5 [e4,g4,c5]@3 ~ [e4,g4,c5]@18 ~@2 b4@3 c5@3 d5@4 c5@4 a4@3 ~, c5@5 ~@43]/2",
  AA: "[c5@5 ~ c5@3 ~ c5@20 b4@3 c5@3 d5@4 c5@5 g4@3]/2", AB: "[a4@5 ~ a4@4 a4@19 f4@4 g4@3 a4@4 b4@5 c5@3]/2",
  AC: "b4", AD: "~@22 [e4,c5] ~",
})).s("gm_piano").gain(0.56)

// chords · synth strings 1 · "Fl„che"
const synth_strings_1 = note(`<
  ~ A@2 B@2 C@2 D@2 E F G H I F G J K@2 L@2 K@2 L@2 M@4 N O N P Q@2 R@2 S T U@2 Q@2 V@2 W X Y@2 I F G H I F G J K@2 L@2
  K@2 L@2 M@4 N O N P Q@2 R@2 S T U@2 Q@2 V@2 W X Y@2 Q@2 R@2 S T U@2 Q@2 V@2 W X Y@2 I F G H I F Z AA@2
>`.pickRestart({
  A: "[[e3,g3,c4]@23 ~]/2", B: "[[e3,a3,c4]@15 ~]/2", C: "[[d3,f3,a3]@47 ~]/2", D: "[d3,g3,b3]/2",
  E: "[f3,a3], d3 ~@23", F: "[d3,g3,b3]", G: "[e3,g3,c4]", H: "[e3,a3,c4]", I: "[d3,f3,a3]",
  J: "[e3,a3,c4]@2 [e3,a3,c4] [d3,g3,b3]", K: "[e3,g3,c4]/2", L: "[e3,a3,c4]/2", M: "[b3,d4,g4]/4", N: "[g3,c4,e4]",
  O: "[a3,c4,f4]", P: "[g3,b3,d4]", Q: "[[g3,c4,e4]@47 ~]/2", R: "[[a3,c4,e4]@23 ~]/2", S: "[f3,a3,c4]@23 ~",
  T: "[f3,a3,d4]", U: "[[g3,b3,d4]@47 ~]/2", V: "[[a3,c4,e4]@47 ~]/2", W: "[a3,c4,f4]@23 ~", X: "[a3,d4,f4]@23 ~",
  Y: "[g3,b3,d4]/2", Z: "[f3,a3,c4]", AA: "[[e3,g3,c4]@9 ~@7]/2",
})).s("gm_synth_strings_1").gain(0.28)

// bass · acoustic bass · "Bass"
const bass = note(`<
  ~ A@2 B@2 C@2 D E F G H I J K H L H M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AE AD AF AG AL AA J G
  H I J K H L H M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AE AD AF AG AL AA AB AC AD AE AF AG AH AI
  AJ AK AE AD AF AG AL AA F G H I J K AF AM@2
>`.pickRestart({
  A: "[c2@7 b1]/2", B: "[a1@7 c2]/2", C: "[d2@17 ~ d2@6]/2",
  D: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~",
  E: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1@2", F: "d2@8 ~@2 d2@2 d2@9 ~ d2@2",
  G: "g1@9 ~ g1@2 g1@9 ~ g1@2", H: "c2@9 ~ c2@2 c2@9 ~ c2@2", I: "a1@9 ~ a1 ~ a1@10 a1@2", J: "d2@4 ~ d2 d2@4 ~ d2",
  K: "g1@8 ~@2 g1@2 g1@9 ~ g1@2", L: "a1@8 ~@2 a1@2 a1@3 ~@3 g1@4 ~@2", M: "c2@8 ~@2 c2@2 e2@3 ~ g2@2 e2@3 ~ c2@2",
  N: "a1@8 ~@2 a1@2 a1@9 ~ a1@2", O: "a1@9 ~ a1@2 a1@3 ~ c2@2 e2@4 c2@2", P: "c2@4 ~ c2 c2@4 ~ c2",
  Q: "c2@8 ~@2 c2 ~ c2@3 ~ e2@2 g2@3 ~ e2@2", R: "a1@8 ~@2 a1@2 a1@8 ~@2 a1 ~", S: "a1@4 ~ a1 a1@2 c2 e2@2 c2",
  T: "g1@9 ~ g1@2 d2@8 ~@2 d2@2", U: "g1@8 ~@2 g1@2 d2@9 ~ d2@2", V: "g1@4 ~ g1 d2@6", W: "g1@4 ~ g1 a1@3 b1@3",
  X: "c2@9 ~ c2@2 g1@12", Y: "f2@9 ~ f2@2 c2@11 ~", Z: "c2@8 ~@2 c2@2 g1@11 ~", AA: "g1@8 ~@2 g1@2 a1@6 b1@5 ~",
  AB: "c2@9 ~ c2@2 g1@6 a1@6", AC: "c2@9 ~ c2@2 g1@6 a1@5 ~", AD: "a1@9 ~ a1@2 e1@6 g1@6", AE: "a1@4 ~ a1 e1@3 g1@3",
  AF: "f1@4 ~ f1 a1@3 c2@3", AG: "d2@4 ~ d2 a1@3 d2@3", AH: "g1@4 ~ g1 b1@3 d2@3",
  AI: "g1@3 ~ g1@2 g#1@3 ~ g#1@2 a1@3 ~ a1@2 b1@3 ~ b1@2", AJ: "c2@4 ~ c2 g1@3 a1@3", AK: "c2@8 ~@2 c2@2 g1@6 a1@5 ~",
  AL: "g1@9 ~ g1@2 b1@6 d2@6", AM: "[c2@29 ~@19]/2",
})).s("gm_acoustic_bass").gain(0.48).pan(0.4)

// chords · epiano2 · "E-Piano"
const epiano2 = note(`<
  ~ A@2 B@2 C@4 D E F G D E H I J@2 K@2 L@2 M@2 N@2 O@3 P Q R S@2 T@2 U D V@2 W@2 X@2 U Y Z@2 D E F G D E H I J@2 K@2
  L@2 M@2 N@2 O@3 P Q R S@2 T@2 U D V@2 W@2 X@2 U Y Z@2 S@2 T@2 U D V@2 W@2 X@2 U Y Z@2 D E F G D E AA AB@2
>`.pickRestart({
  A: "[~@12 c6@3 b5@3 c6@6 ~ g5@23, [e3,g3,c4]@47 ~]/2", B: "[~@12 e5@9 d5@3 c5@3 a5@20 ~, [e3,a3,c4]@47 ~]/2",
  C: "[~ c5 ~@6 [d3,g3,b3]@8, [f3,a3,d4]@47 ~@49, ~@16 d5@35 ~@45]/4", D: "[a3,d4,f4]@11 ~", E: "[g3,b3,d4]@23 ~",
  F: "[g3,c4,e4]@3 [g3,b3,d4]", G: "[a3,c4,e4]@11 ~ [g3,b3,d4]@5 ~ [a3,c4,e4]@5 ~", H: "[e3,g3,c4]@23 ~",
  I: "[e3,a3,c4]@11 ~ [e3,a3,c4]@3 ~@3 [d3,g3,b3]@4 ~@2", J: "[[g3,c4,e4]@41 ~ [g3,b3,d4]@5 ~]/2",
  K: "[[a3,c4,e4]@41 ~ [g3,b3,d4]@5 ~]/2", L: "[[g3,c4,e4]@42 [g3,b3,d4]@5 ~]/2", M: "[[a3,c4,e4]@22 ~ [a3,c4,e4]]/2",
  N: "[[g3,b3,d4]@45 ~ [g3,c4,e4]@2]/2", O: "[[g3,b3,d4]@35 ~ [g3,b3,d4]@5 ~ [g3,b3,d4]@3 ~ [g3,c4,e4]@26]/3",
  P: "[a3,c4,f4]@17 ~ [a3,c4,f4]@5 ~", Q: "[g3,c4,e4]@23 ~", R: "[g3,d4]@11 ~ [g3,c4,e4]@5 ~ [g3,d4,f4]@5 ~, b3@3 ~@5",
  S: "[[g3,c4,e4]@35 ~ [g3,c4,e4]@5 ~ [g3,b3,d4]@6]/2", T: "[[a3,c4,e4]@35 ~ [a3,c4,e4]@11 ~]/2", U: "[a3,c4,f4]@23 ~",
  V: "[[g3,b3,d4]@36 [g3,c4,e4]@5 ~ [g3,d4,f4]@5 ~]/2", W: "[[g3,c4,e4]@35 ~ [g3,c4,e4]@11 ~]/2",
  X: "[[a3,c4,e4]@35 ~ [a3,c4,e4]@12]/2", Y: "[a3,d4,f4]@23 ~",
  Z: "[[g3,b3,d4]@18 [g3,c4,e4]@3 ~ [g3,b3,d4]@14 [b3,d4]@5 ~ [c4,e4]@5 ~]/2", // G C G Bm C
  AA: "[a3,c4,f4]@12 [a3,c4]@5 ~ [a3,c4,f4]@5 ~", AB: "[[g3,c4,e4]@7 ~@5]/2",
})).s("gm_epiano2").gain(0.5)

// other · string ensemble 1 · "Strings"
const string_ensemble_1 = note(`<
  ~@25 A@4 B C D E F G H I J K L M F G H I N K O P ~@16 A@4 B C D E F G H I J K L M F G H I N K O P F G H I J K L M F G
  H I N K O P ~@9
>`.pickRestart({
  A: "[[b5,g6]@7 [d6,f6]]/4", B: "[c6,e6]", C: "[a5,f6]@2 [b5,g6] [a5,f6]", D: "[g5,e6]",
  E: "[b5,d6]@2 [c6,e6] [d6,f6]", F: "e6 c6 g5 e6 c6 g5 e6 c6 g5 f6 c6 g5", G: "e6 c6 g5 e6 c6 g5 e6 c6 g5 e6 c6 g5",
  H: "e6 c6 a5 e6 c6 a5 e6 c6 a5 f6 c6 a5", I: "e6 c6 a5 e6 c6 a5 e6 c6 a5 e6 c6 a5",
  J: "f6 c6 a5 f6 c6 a5 f6 c6 a5 g6 c6 a5", K: "f6 d6 a5 f6 d6 a5 f6 d6 a5 f6 d6 a5",
  L: "g6@2 d6@2 b5@2 g6@2 d6@2 b5@2 g6@2 d6@2 b5@2 a6@2 d6@2 b5 ~",
  M: "[b5,g6] ~ [b5,g6] ~ [b5,g6] ~ [a5,f6] ~ [a5,f6] ~ [a5,f6] ~ [g5,e6] ~ [g5,e6] ~ [g5,e6] ~ [f5,d6] ~ [f5,d6] ~ [f5,d6] ~", // Em Dm C Dm
  N: "f6 c6 a5 f6 c6 a5 ~@2 a5 g6 c6 a5, ~@3 f6 ~@2, ~@7 c6@2 ~@3", O: "g6 d6 b5 g6 d6 b5 g6 d6 b5 a6 d6 b5",
  P: "g6 d6 b5 g6 d6 b5 g6 d6 b5 g6 d6 b5",
})).s("gm_string_ensemble_1").gain(0.2)

// chords · acoustic guitar steel · "RhytGuit"
const acoustic_guitar_steel = note(`<
  ~@9 A B C D E F G H I J K L I J M N O P Q P R S R P T U V W X Y Z AA I AB AC AD X AE AF AG A B C D E F G H I J K L I J
  M N O P Q P R S R P T U V W X Y Z AA I AB AC AD X AE AF AG T U V W X Y Z AA I AB AC AD X AE AF AG A B C D E F AH AI@2
>`.pickRestart({
  A: "~@6 [f3,a3,d4]@3 ~@9 [f3,a3,d4]@3 ~ [f3,a3,d4]@2", // Dm
  B: "~@6 [d3,g3,b3]@3 ~@7 [d3,g3,b3]@2 [d3,g3,b3]@3 ~ [d3,g3,b3]@2", // G
  C: "~@6 [e3,g3,c4]@3 ~@9 [e3,g3,c4]@2 ~@2 [e3,g3,c4] ~", // C
  D: "~@3 [e3,a3,c4]@2 [e3,a3,c4] [e3,a3,c4]@2 [e3,a3,c4] [e3,a3,c4]@2 [e3,a3,c4]", // Am
  E: "~@6 [f3,a3,d4]@3 ~@9 [f3,a3,d4]@2 ~@2 [f3,a3,d4] ~", F: "~@3 [d3,g3,b3] ~@4 [d3,g3,b3] [d3,g3,b3]@2 [d3,g3,b3]",
  G: "~@6 [e3,g3,c4]@3 ~@9 [e3,g3,c4]@2 ~@2 [e3,g3,c4]@2", // C
  H: "~@6 [e3,a3,c4]@4 [e3,a3,c4]@2 [e3,a3,c4]@3 ~@3 [d3,g3,b3]@3 ~@3", I: "~@2 [g3,c4,e4] ~@3 [g3,c4,e4] ~",
  J: "~@6 [g3,c4,e4]@2 ~@8 [g3,c4,e4]@2 [g3,c4,e4]@3 ~ [g3,c4,e4]@2", K: "~@6 [a3,c4,e4]@3 ~@9 [a3,c4,e4]@2 ~@4",
  L: "~@6 [a3,c4,e4]@2 ~@8 [a3,c4,e4]@2 [a3,c4,e4]@3 ~ [a3,c4,e4]@2", M: "~@2 [a3,c4,e4] ~@3 [a3,c4,e4] ~",
  N: "~@6 [a3,c4,e4]@3 ~@7 [a3,c4,e4]@2 [a3,c4,e4]@3 ~ [a3,c4,e4]@2", O: "~@3 [d3,g3,b3]@2 ~@4 [d3,g3,b3]@2 ~",
  P: "~@6 [d3,g3,b3]@3 ~@7 [d3,g3,b3]@2 [d3,g3,b3]@4 [d3,g3,b3]@2", Q: "~@2 [d3,g3,b3] ~@3 [d3,g3,b3] ~",
  R: "~@2 [e3,g3,c4] ~@3 [e3,g3,c4] ~", S: "~@3 [f3,a3,c4]@2 [f3,a3,c4]@3 [f3,a3,c4] [f3,a3,c4]@2 [f3,a3,c4]",
  T: "~@6 [g3,c4,e4]@4 ~@8 [g3,c4,e4]@3 ~@3", U: "~@6 [g3,c4,e4]@4 ~@8 [g3,c4,e4]@3 ~ [g3,c4,e4]@2",
  V: "~@6 [a3,c4,e4]@3 ~@9 [a3,c4,e4]@4 ~@2", W: "~@6 [a3,c4,e4]@4 ~@8 [a3,c4,e4]@3 ~ [a3,c4,e4]@2",
  X: "~@2 [a3,c4,f4] ~@3 [a3,c4,f4] ~", Y: "~@6 [a3,d4,f4]@3 ~@7 [a3,d4,f4]@2 [a3,d4,f4]@3 ~ [a3,d4,f4]@2",
  Z: "~@2 [g3,b3,d4] ~@3 [g3,b3,d4] ~", // G
  AA: "~@2 [g3,b3,d4] [g3,b3,d4]@2 [g3,b3,d4] [g3,b3,d4]@2 [g3,b3,d4] [g3,b3,d4]@2 [g3,b3,d4]", // G
  AB: "~@6 [g3,c4,e4]@3 ~@7 [g3,c4,e4]@2 [g3,c4,e4]@4 [g3,c4,e4]@2", AC: "~@6 [a3,c4,e4]@2 ~@10 [a3,c4,e4]@3 ~@3",
  AD: "~@6 [a3,c4,e4]@3 ~@7 [a3,c4,e4]@2 [a3,c4,e4]@4 [a3,c4,e4]@2", // Am
  AE: "~@6 [a3,d4,f4]@3 ~@7 [a3,d4,f4]@2 [a3,d4,f4]@4 [a3,d4,f4]@2", AF: "~@6 [g3,b3,d4]@2 ~@10 [g3,b3,d4]@3 ~@3",
  AG: "~@3 [g3,b3,d4] ~@4 [g3,b3,d4] [g3,b3,d4]@2 [g3,b3,d4]", AH: "[a3,c4,f4]@17 ~ [a3,c4,f4]@5 ~",
  AI: "[[g3,c4,e4]@13 ~@11]/2", // C
})).s("gm_acoustic_guitar_steel").gain(0.36).pan(0.6)

// other · electric guitar clean · "LeadGuit"
const electric_guitar_clean = note("<~@11 A B ~@3 C ~@30 D E F ~ A B ~@3 C ~@30 D E F ~@13 D E F ~@8>".pickRestart({
  A: "~@12 c3@2 e3@2 g3@2 c3@2 e3@2 g3 ~", B: "a3@19 ~@5", C: "c3 e3 g3 ~ e3 g3 a3 ~@2 g3 ~@2, ~@3 c3@2 ~@7",
  D: "g2@3 a2", E: "g2@2 a2 b2", F: "c3@5 ~",
})).s("gm_electric_guitar_clean").gain(0.56)

// drums · kick
const kick = s("bd").struct("<~@8 [~@2 x!2] [x!4]!103 [x ~@2 x ~@2 x ~@2 x ~ x] x>").gain(0.38)

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

// drums · clap
const clap = s("cp").struct("<~@48 [~@8 x!2 ~@2] ~@39 [~@8 x!2 ~@2] ~@15 [~@8 x!2 ~@2] ~@9>").gain(0.44)

// drums · low tom
const low_tom = s("lt").struct("<~@8 A ~@23 B ~@15 C ~@23 B ~@15 C ~@15 C ~@9>".pickRestart({
  A: "~@3 x", B: "~@11 x", C: "~ x",
})).gain(0.38)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@32 [~@3 x] ~@39 [~@3 x] ~@41>").gain(0.44)

// drums · high tom
const high_tom = s("ht").struct("<~@8 A ~@23 B ~@15 C ~@23 B ~@15 C ~@15 C ~@9>".pickRestart({
  A: "~ x", B: "~@2 x", C: "~@5 x ~@6",
})).gain(0.44)

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

// drums · shaker
const shaker = s("sh").struct("<~@33 A@15 B ~@8 A@7 B A@23 B A@15 B ~@9>".pickRestart({
  A: "x!12", B: "x!8 ~ x!3",
})).gain(0.27)

stack(
  piano, synth_strings_1, bass, epiano2, string_ensemble_1, acoustic_guitar_steel, electric_guitar_clean, kick, snare,
  clap, low_tom, hihat, mid_tom, high_tom, cabasa, shaker
)

More by Howard Carpendale