Strudelify

hey brother

Josh C.

KeyG majorTempo130 bpm
0:00/0:00
// hey brother — Josh C.
// 130 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 5, 4/4 at bar 6, 2/4 at bar 10, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/2931756; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 58 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(130/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 · alto sax · "Alto Saxophone"
const alto_sax = note(`<
  ~@2 A B C D@3 E F G H I J K L M N O P@2 Q R S T U I V W X Y ~@9 Z O AA AB AC O AD AE AF O AA AB AC O AD AB AG AH
>`.pickRestart({
  A: "a#4", B: "f4@2 g4@6 ~@4 a#4@3 d5", C: "c5 a#4 g4 f4", D: "[g4@4 f4@4 d4 c4 a#3@14 d5@16 a4@2 a#4@6]/3",
  E: "~@4 a#4@3 d5 f5@4 d5@4", F: "c5 f5 g5 d5", G: "g5 a#5@7", H: "[c4,c5]@6 [a#3,a#4] [c4,c5]",
  I: "d5 c5 [g4,a#4] g4, a#4 ~", J: "[c4,c5]@6 ~ a#4", K: "[c4,c5]@7 a#4",
  L: "[d4,d5] [d4,d5]@2 [d4,d5]@3 [c4,c5]@2 [a#3,a#4]@3 [g3,g4]!2 [f3,f4]@3", M: "[d4,g4]", N: "~@2 a#4 a4",
  O: "g4@4 ~ [g4,a#4] [a#4,d5] [d5,f5]", P: "[[d#5,g5]@4 [d#5,g5]@4 [d5,f5]@12 ~@2 c5@2 c5 d5@2 d5@3 d5@2]/2",
  Q: "c5 a#4 d5@5 ~", R: "~@2 [g4,a#4]@2 [a#4,d5]@2 [d5,f5]@2 [d#5,g5]@3 [f5,a5] [d#5,g5]@2 [d5,f5]@2",
  S: "[d5,f5]@8 d5 c5 a#4@2 ~@2 f5@2", T: "g5@2 f5 f5@3 d5@2 c5@2 a#4@2 d5@4", U: "c5@12 a#4@3 c5", V: "c5@6 ~ a#4",
  W: "c5@6 ~ [a#4,a#5]", X: "[d5,d6] [d5,d6]@2 [d5,d6]@3 [c5,c6]@2 [a#4,a#5]@3 [g4,g5]!2 [f4,f5]@3", Y: "[g4,g5]",
  Z: "~@12 [d4,d5] [c4,c5] [a#3,a#4]@2", AA: "[a#4,g5]@4 [a#4,g5]@4 [a4,f5]@4 ~@2 f4 g4",
  AB: "[g4,a#4]@4 ~ [g4,a#4] [a#4,d5] [d5,f5]", // Gm A# Dm
  AC: "[a#4,g5]@3 [a4,a5] [a#4,g5]@4 [a4,f5]@4 [d4,d5] [c4,c5] [a#3,a#4]@2", // D# A D# Dm D C A#
  AD: "[d5,g5]@4 [d5,g5]@4 [c5,f5]@4 ~@2 f4 g4", AE: "[g4,a#4]", AF: "g5 f5 d5 f5, a#4 a4",
  AG: "[a#4,g5]@3 a5 [a#4,g5]@4 [a4,f5]@4 d5 c5 a#4@2", AH: "g4",
})).s("gm_alto_sax").gain(0.72)

// chords · alto sax · "Tenor Saxophone"
const alto_sax_2 = note(`<
  ~@6 A@2 B C D E F G H I J K L M@2 N O P Q R F S T I U ~@9 V W X Y Z L AA AB AC W X Y Z L AA Y AD AE
>`.pickRestart({
  A: "[~@4 a#4@8 f4 g4@3]/2", B: "~@4 a#4@3 d5 c5@4 a#4@4", C: "g4 f4 g4 f4", D: "g4 a#4@7",
  E: "[c3,c4]@6 [a#2,a#3] [c3,c4]", F: "d4 c4 [g3,a#3] g3, a#3 ~", G: "[c3,c4]@6 ~ a#3", H: "[c3,c4]@7 a#4",
  I: "[d4,d5] [d4,d5]@2 [d4,d5]@3 [c4,c5]@2 [a#3,a#4]@3 [g3,g4]!2 [f3,f4]@3", J: "[d4,g4]", K: "~@2 a#3 a3",
  L: "g3@4 ~ [g3,a#3] [a#3,d4] [d4,f4]", M: "[[d#4,g4]@4 [d#4,g4]@4 [d4,f4]@12 ~@2 c4@2 c4 d4@2 d4@3 d4@2]/2",
  N: "c4 a#3 d4@5 ~", O: "~@2 [g3,a#3]@2 [a#3,d4]@2 [d4,f4]@2 [d#4,g4]@3 [f4,a4] [d#4,g4]@2 [d4,f4]@2",
  P: "[d4,f4]@8 d4 c4 a#3@2 ~@2 f4@2", Q: "g4@2 f4 f4@3 d4@2 c4@2 a#3@2 d4@4", R: "c4@12 a#3@3 c4", S: "c4@6 ~ a#3",
  T: "c4@6 ~ [a#3,a#4]", U: "g4", V: "~@12 [d4,d5] [c4,c5] [a#3,a#4]@2", W: "g4@4 ~ [g4,a#4] [a#4,d5] [d5,f5]",
  X: "[a#3,g4]@4 [a#3,g4]@4 [a3,f4]@4 ~@2 f4 g4", Y: "[d4,a#4]@4 ~ [g4,a#4] [a#4,d5] [d5,f5]",
  Z: "[g4,a#4]@3 a4 [g4,a#4]@4 [f4,a4]@4 d4 c4 a#3@2", AA: "[a#3,g4]@4 [a#3,g4]@4 [a3,f4]@4 ~@2 f3 g3", AB: "[d4,a#4]",
  AC: "g4 f4 d4 f4, d3", AD: "[a#3,g4]@3 a4 [a#3,g4]@4 [a3,f4]@4 d4 c4 a#3@2", AE: "g3",
})).s("gm_alto_sax").gain(0.72)

// chords · trumpet · "Bb Trumpets"
const trumpet = note(`<
  ~@10 A B C D@2 E F G H I@4 J K L M N@2 O P Q R S T U V W X Y Z AA AB AC AD AA AE AF AG AA AB AC AD AA AE AC AH AI
>`.pickRestart({
  A: "~@12 f4 g4 a4 a#4", B: "[a4,c5]@6 a#4 c5, [c4,f4]", C: "d5 c5 [g4,a#4] g4, [d4,g4,a#4] [g3,d4]",
  D: "[[f4,c5]@4 ~ g4 a4 a#4 c5@2 d5@4 a#4@2 [a4,c5]@14 [f4,a#4]@2, c4, ~@2 f4@13 ~]/2", // F5 Am A#5
  E: "[d4,f4,a#4,d5] [f4,a#4,d5,f5]", F: "[d4,g4,d5,g5]", G: "[g3,g4]", H: "[d4,g4]",
  I: "[[d#4,g4,a#4] [d#4,g4,a#4,d#5] [f4,a#4,d5]@4 a#4@2 a#4 a4 [d4,g4,d5]@4 [d#4,g4,a#4] [d#4,g4,a#4,d#5], ~@3 [f4,d5]@2 ~@3]/4", // D# A# G5 D# Dm
  J: "[f4,a#4,d5,f5]", K: "a#4@2 a#4 a4, [f4,d5,f5]", L: "~@12 a#4@3 c5, [c4,f4]",
  M: "[a#4,d5] [a#4,c5] [d#4,g4,a#4] [d#4,g4], a#3 g3", N: "c5@6 ~ a#4, [c4,f4]",
  O: "d5 d5@2 d5@3 c5@2 a#5@3 g5!2 f5@3", P: "[g4,d5,g5]", Q: "~@2 a#4 a4", R: "g4@4 ~ a#4 d5 f5",
  S: "g5@4 g5@4 f5@4 ~@2 f4 g4", T: "a#4@4 ~ a#4 d5 f5", U: "g5@3 a5 g5@4 f5@4 d5 c5 a#4@2",
  V: "g4@4 ~ [a#3,a#4] [d4,d5] [f4,f5]", W: "[g4,g5]@4 [g4,g5]@4 [f4,f5]@4 ~@2 f4 g4",
  X: "[a#3,a#4]@4 ~ [a#3,a#4] [d4,d5] [f4,f5]", Y: "[g4,g5]@3 [a4,a5] [g4,g5]@4 [f4,f5]@4 [d4,d5] [c4,c5] [a#3,a#4]@2",
  Z: "~@12 [d4,d5] [c4,c5] [a#3,a#4]@2", AA: "g4@4 ~ [g4,a#4] [a#4,d5] [d5,f5], d4",
  AB: "[g4,d5,g5]@4 [g4,d5,g5]@4 [f4,c5,f5]@4 ~@2 f4 g4", AC: "[g4,a#4]@4 ~ [g4,a#4] [a#4,d5] [d5,f5], d4",
  AD: "[g4,a#4,g5]@3 [a4,a5] [g4,a#4,g5]@4 [f4,a4,f5]@4 [d4,d5] [c4,c5] [a#3,a#4]@2", // Gm A Gm F D C A#
  AE: "[a#4,d5,g5]@4 [a#4,d5,g5]@4 [a4,c5,f5]@4 ~@2 f4 g4", AF: "[d4,g4,a#4]", AG: "g5 f5 d5 f5, d4, a#4 a4",
  AH: "[a#4,g5]@3 a5 [a#4,g5]@4 [a4,f5]@4 d5 c5 a#4@2", AI: "g4",
})).s("gm_trumpet").gain(0.64)

// chords · trombone
const trombone = note(`<
  ~@6 A@3 B C D E F@2 G H@2 I J@4 K L M N O P Q R@2 ~@4 S T U V W X T U V X T Y Z X T U V X T U V AA
>`.pickRestart({
  A: "[~ d3@4 d#3]/3", B: "a#2 c3", C: "d3", D: "[c3,f3,c4]", E: "[f3,a#3,d4] [d#3,a#3,d#4]",
  F: "[c4@14 a#3@2 c4@14 [a#3,b3,c4,c#4] [d4,d#4,e4,f4,f#4,g4], [c3,f3]]/2", // F5
  G: "[d4,f4,a#4] [g3,a#3,f4], [g#4,a4] ~@15", // A# Gm7 Amaj7
  H: "[g3@12 f#3 [d#3,e3,f3] [c3,c#3,d3] [a2,a#2,b2] g2@16, [d4,g4]@16 g#2 ~@15, ~@3 g3@5]/2", I: "[d3,g3]",
  J: "[[d#3,g3,d#4]@2 [d#3,a#3,d#4]@2 [f3,a#3,d4]@8 a#3@4 ~ a#3 ~ a3 [d3,g3,d4]@8 [d#3,g3,d#4]@2 [d#3,a#3,d#4]@2, ~@3 [f3,f4]@2 ~@3]/4", // D# D#5 A# G5 D# D#5 F
  K: "[a#3,d4,f4]", L: "a#3@4 ~ a#3 ~ a3, [f3,f4]", M: "~@12 a#3@3 c4, [c3,f3]",
  N: "[a#3,d4] [a#3,c4] [d#3,g3,a#3] [d#3,g3], a#2 ~", O: "c4@6 ~ a#3, [c3,f3]",
  P: "c4@12 ~@2 [a#3,b3,c4,c#4] [d4,d#4,e4,f4,f#4,g4], [c3,f3]", Q: "[a#3,f4,a#4] [f3,a#3,f4], [g#4,a4] ~@15",
  R: "[[d3,g3], g4 ~]/2", S: "~@5 a#2 d3 f3", T: "g3@4 g3@4 f3@4 ~@2 f2 g2", U: "a#2@4 ~ a#2 d3 f3",
  V: "g3@3 a3 g3@4 f3@4 d3 c3 a#2@2", W: "~@12 [d3,d4] [c3,c4] [a#2,a#3]@2", X: "g2@4 ~ a#2 d3 f3", Y: "a#2",
  Z: "a#2!2 a2!2", AA: "g2",
})).s("gm_trombone").gain(0.4)

// bass · trombone · "Bass Trombone"
const bass = note(`<
  ~@6 A@3 B C D E F@2 G H@3 I@2 J@2 K L M N D@2 O P@2 ~@4 Q R S T U V W V X V W V Y V W V X V W V X V
>`.pickRestart({
  A: "[~ g2@4 d#2]/3", B: "f2 c2", C: "d2", D: "f2", E: "a#2 d#2", F: "f2/2", G: "a#2 f2",
  H: "[g2@12 g2@2 ~@3 e2@2 ~ d2@2 c#2@2 ~ b1@2 a#1@2 ~@3 g2@16, ~@7 f#2 g1@8 ~@8, ~@15 f2@2 ~@2 d#2@2 ~@3 c2@2 ~@3 a1@2 ~@17, ~@5 g#1@3]/3",
  I: "[d#2!2 a#2@4 a#2@2]/2", J: "[~ a#2 ~ a2 g2@8 d#2@2 d#2@2]/2", K: "a#2", L: "a#2@4 ~ a#2 ~ a2", M: "f2!4",
  N: "a#2!2 d#2!2", O: "a#2 f3", P: "g2/2", Q: "g2!2", R: "d#2!2 f2!2", S: "g2!8",
  T: "a#2@2 a#2@2 a#2@2 a#2@2 a#2@2 a#2@2 a2!4", U: "~@12 [d2,d3] [c2,c3] [a#1,a#2]@2", V: "[g1,g2]",
  W: "[d#1,d#2]@8 [f1,f2]@6 [f1,f2] [g1,g2]", X: "[a#1,a#2] [a1,a2]", Y: "[a#1,a#2]!2 [a1,a2]!2",
})).s("gm_trombone").gain(0.43)

// chords · electric guitar clean · "Electric Guitar"
const electric_guitar_clean = note(`<
  ~@11 A B C D E F G H I J K L M N O P O@2 Q R S T U T V W X Y Z ~ AA AB AA AC AA AB AA AC AA AB AA AC AA AB AA AC AD
>`.pickRestart({
  A: "[a2,c3,f3,a3]", B: "[f3,a#3,d4,f4] [d#3,g3,a#3,d#4]", C: "[c3,f3,a3,c4]", D: "[f2,a2,c3,f3]",
  E: "[d3,f3,a#3] [a2,c3,d3,f3]", F: "[d3,g3,a#3,d4]@12 [f#3,g3] [d#3,e3,f3] [c3,c#3,d3] [a2,a#2,b2]",
  G: "g2, g#2 ~@15", H: "d3!4", I: "a#2 d#3 d3!2", J: "d3@2 d3@2 ~ a#2 ~ a#2", K: "~ a#2 ~ a2 d3@2 d3@2",
  L: "d3!2 a#2 d#3", M: "f3!4", N: "~ a#2 ~ a#2 ~ a#2 ~ a2", O: "c3!4", P: "d3!2 a#2!2", Q: "d3!2 f3!2",
  R: "g3@4 g3@4 g3@4 g3 f#3 [e3,f3] d#3", S: "d3", T: "[d3,g3,a#3]", U: "[a#2,d#3,g3] [c3,f3,a3]",
  V: "[d3,f3,a#3] [c3,f3,a3]", W: "[d3,g3,a#3]!2", X: "[a#2,d#3,g3]!2 [c3,f3,a3]!2", Y: "[d3,g3,a#3]!8",
  Z: "[a#2,d3,f3]@2 [a#2,d3,f3]@2 [a#2,d3,f3]@2 [a#2,d3,f3]@2 [a2,d3,f3]@2 [a2,d3,f3]@2 a2!4", AA: "[g2,a#2,d3,g3]",
  AB: "[a#2,d#3,g3] [a2,c3,f3]", AC: "a#3 f3 a#3 f3 a3 f3 a3 f3", AD: "g2",
})).s("gm_electric_guitar_clean").gain(0.3)

// chords · electric guitar clean · "Electric Guitar" · soft notes
const electric_guitar_clean_2 = note("<~@2 A B C D@4 E F G ~@46>".pickRestart({
  A: "~ [g3,a#3]@11 [f#3,g3] [d#3,e3,f3] [c3,c#3,d3] [a2,a#2,b2], d3@3 ~", B: "g2, g#2 ~@15",
  C: "~ d#4@3 ~ a#3@3, d#3 a#2, ~ [g3,a#3]@7 ~ [d3,f3]@7", // Gm Dm
  D: "[~@2 c4@6 ~@2 d4@14 ~@2 d4@10 [f#3,g3] [d#3,e3,f3] [c3,c#3,d3] [a2,a#2,b2] g2@16 ~@2 d#4@6, c3@8 d3@16 d3@12 ~@4 g#2 ~@16 [g3,a#3]@7, ~ [f3,a3]@7 ~ [g3,a#3]@15 ~ [g3,a#3]@11 ~@20 d#3@8]/4", // Gmaj7 Gm F Gm
  E: "~ a#3@3 ~ c4@3, a#2 c3, ~ [d3,f3]@7 ~ [f3,a3]@7", // Dm F
  F: "~@2 d4@10 [c#4,d4] [a3,a#3,b3,c4] [f#3,g3,g#3] [d3,d#3,e3,f3], d3@3 ~, ~ [g3,a#3]@11 ~@4", G: "c#3 ~@15",
})).s("gm_electric_guitar_clean").gain(0.2)

// bass · electric bass pick · "5-str. Electric Bass"
const bass_2 = note(`<
  ~@10 A B C D@2 E F G H I J K L J M N O N@2 J P Q ~@4 R S H T U V W X Y Z W X Y Z W X Y Z W Z Y F
>`.pickRestart({
  A: "~@12 [f#2,g2] [d2,d#2,e2,f2] [b1,c2,c#2] [g1,g#1,a1,a#1]", B: "f1, f#1 ~@15", C: "a#1 [d#1,d#2]", D: "f1",
  E: "a#1 f1", F: "g1", G: "~@2 a#2 a2", H: "g2!4", I: "d#2!2 a#2!2", J: "a#2!4", K: "a#2 a2 g2!2", L: "g2!2 d#2!2",
  M: "a#2!3 a2", N: "f2!4", O: "a#2!2 d#2!2", P: "g2@4 g2@4 g2@4 [f#2,g2] [d#2,e2,f2] [c2,c#2,d2] [a1,a#1,b1]",
  Q: "g1, g#1 ~@15", R: "g2", S: "d#2 f2", T: "a#2@2 a#2@2 a2!4",
  U: "~@12 [f#2,g2] [d#2,e2,f2] [c2,c#2,d2] [a1,a#1,b1]", V: "g1!4, g#1 ~@15", W: "d#2!2 f2!2", X: "g2 d2 a#1 g1",
  Y: "a#1!2 a1!2", Z: "g1!4",
})).s("gm_electric_bass_pick").gain(0.5)

// chords · piano
const piano = note(`<
  A@2 B@2 C D@4 E F G H G@2 I F J K L M N O M P Q R Q@2 M K S T U T V W X W Y Z AA AB AA AC AA AB AA AC AA AB AA AC AA
  AB AA AC AD
>`.pickRestart({
  A: "g2 g3 g2 g3 g2 g3 g2 g3", B: "[~ g3 g2 g3 g2 g3 g2 g3 g2 g3 g2 g3 g2 g3 g2 g3, [d4,g4], g2 ~@15, ~ a#4@31]/2",
  C: "~ d#3 d#2 d#3 ~@2 a#2 a#3, d#4@8 ~ [d4,f4]@7, d#2 ~@3 [a#2,a#3] ~@3, ~ [g4,a#4]@7 ~@2 a#3@4 ~@2", // Dm A# Gm
  D: "[~ f3 f2 f3 g2 g3 g2 g3 g2 g3 g2 g3 g2 g3 g2 g3 g2 g3 g2 g3 g2 g3 g2 g3 g2 g3 g2 g3 d#2 d#3 d#2 d#3, c4 [d4,g4,a#4]@2 [d4,g4,a#4]@4 [d#4,g4,a#4], f2 ~@31, ~ [f4,a4]@7 ~@56]/4", // Gm D# F
  E: "a#2 a#3 a#2 a#3 f2 f3 f2 f3, [d4,f4,a#4] [c4,f4,a4]", F: "g2 g3 g2 g3 g2 g3 g2 g3, [d4,g4,a#4]",
  G: "f2 f3 f2 f3 f2 f3 f2 f3, [f4,a4,c5]", H: "a#2 a#3 a#2 a#3 d#2 d#3 d#2 d#3, [f4,a#4,d5] [d#4,g4,a#4]",
  I: "a#2 a#3 a#2 a#3 f2 f3 f2 f3, [g4,a#4,d5] [f4,g4,a#4,d5]", J: "[g1,g2,g3,a#3,d4,g4]",
  K: "g2 d3 g2 d3 g2 d3 g2 d3, g1!4", L: "d#2 d#3 d#2 d#3 a#2 f3 a#2 f3, d#1!2 a#1!2",
  M: "a#2 f3 a#2 f3 a#2 f3 a#2 f3, a#1!4", N: "a#2 f3 a2 f3 g2 d3 g2 d3, a#1 a1 g1!2",
  O: "g2 d3 g2 d3 d#2 d#3 d#2 d#3, g1!2 d#1!2", P: "a#2 f3 a#2 f3 a#2 f3 a2 f3, a#1!3 a1",
  Q: "f2 c3 f2 c3 f2 c3 f2 c3, f1!4", R: "a#2 f3 a#2 f3 d#2 d#3 d#2 d#3, a#1!2 d#1!2", S: "[g1,g2]", T: "[d3,g3]!8",
  U: "[a#2,d#3]!4 [c3,f3]!4", V: "[f3,a#3]!4 [f3,a3]!4", W: "[d3,g3,d4]!8", X: "[a#2,d#3,a#3]!4 [c3,f3,c4]!4",
  Y: "[f3,a#3,f4]!4 [f3,a3,f4]!4", Z: "~@12 d2 c2 a#1@2", AA: "g3 d4 g3 d4 g3 d4 g3 d4, g1!4",
  AB: "d#3 a#3 d#3 a#3 f3 c4 f3 c4, d#1!2 f1!2", AC: "a#3 f4 a#3 f4 a3 f4 a3 f4, a#1!3 a1", AD: "[g1,g2,g3]",
})).s("gm_piano").gain(0.64)

// drums · kick
const kick = s("bd").struct("<~@2 A@15 B A@13 B A@7 C A@8 D A@8 B>".pickRestart({
  A: "x!4", B: "x", C: "x ~ x ~ x!4", D: "x ~ x ~@4 x",
})).gain(0.25)

// drums · clap
const clap = s("cp").struct("<~@32 [x!4]!8 ~@18>").gain(0.25)

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

// drums · low tom
const low_tom = s("lt").struct("<~@11 A@6 ~@19 B@3 C D A@7 E A@8 ~>".pickRestart({
  A: "x!8", B: "x!4", C: "x ~ x ~ x!4", D: "~@12 x!3 ~", E: "x ~ x ~ x ~ x ~@6 x!2 ~",
})).gain(0.32)

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

// drums · crash
const crash = s("cr").struct("<~ A B ~@3 C ~@3 D B ~@3 E@2 B ~@3 F ~@2 G B E B@2 ~@2 B ~@25 B>".pickRestart({
  A: "~@14 x!2", B: "x", C: "~ x", D: "~@12 x!4", E: "x!2", F: "x!3 ~", G: "~@2 x!2",
})).gain(0.25)

// drums · crash · soft notes
const crash_soft = s("cr").struct("<~ [~@12 x!2 ~@2] ~@56>").gain(0.13)

stack(
  alto_sax, alto_sax_2, trumpet, trombone, bass, electric_guitar_clean, electric_guitar_clean_2, bass_2, piano, kick,
  clap, snare, low_tom, hihat, crash, crash_soft
)

More by Josh C.