Strudelify

If I'm Being Honest

dodie

KeyE♭ majorTempo56 bpm
0:00/0:00
// If I'm Being Honest — dodie
// 56 bpm, 4/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (4/4 at bar 1, 2/4 at bar 22, 4/4 at bar 22, 2/4 at bar 44, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: sustain pedal (CC 64) lengthens the held notes
// note: Transcription provider: pdmx. https://musescore.com/score/5852955; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 64 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(56/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.

// other · violin
const violin = note("<~@31 A B@2 C D E F G H I J K L M N O P Q ~@3 R S T U V W ~@6>".pickRestart({
  A: "~ bb4", B: "bb4!2", C: "f4 bb4 bb4@2", D: "c5@3 f4 d4@4", E: "~@6 bb4@2 a4@3 f4 d4@12",
  F: "c4@3 c4@2 db4 d4@3 g4@3", G: "d4@3 c4 bb3@2 bb3@4 c4@2 eb5@6 d5@6", H: "c5@3 c5 f5 eb5 d5@6",
  I: "~@6 bb5@2 a5@3 f5 d5@12", J: "c5@5 db5 d5@3 g5@3", K: "d5@3 c5 bb4@6 c5@2 g4@12", L: "f4",
  M: "~ g5 ~ gb5 ~ f5 ~ e5", N: "bb5 g5 d5 a5 gb5 d5 a5 bb5 a5 g5@3",
  O: "[g4,bb4]@3 [bb4,d5]@3 [a4,c5]@3 [gb4,a4]@3 [a4,c5]@3 [g4,bb4]@3 [bb4,d5]@2 [a4,c5]@3 [g4,bb4]", // Gm Bb Am Gbm Am Gm Bb Am …
  P: "[eb4,ab4]@6 ~@3 [ab4,c5] [g4,bb4] [eb4,g4]", Q: "a4 ~", R: "bb4 c5", S: "d5@12 ~@6 bb5@2 a5@3 f5", T: "d5 f5",
  U: "d5@6 db5@3 c5@3 bb4@6 d5@2 c5@2 bb4@2", V: "d6@6 db6@3 c6@3 bb5@6 d6@2 c6@2 bb5@2", W: "d6 ~",
})).s("gm_violin").gain(0.3)

// other · violin · soft notes
const violin_soft = note("<~@10 A@3 ~@47 B@4>".pickRestart({
  A: "eb4 d4", B: "[~@19 d5@59 ~@18]/4",
})).s("gm_violin").gain(0.2)

// other · pizzicato strings
const pizzicato_strings = note("<~@14 A B C D E B F G ~ H@2 I@4 J@3 ~@32>".pickRestart({
  A: "d4@6 ~@12 bb4@2 a4@3 f4", B: "d4@6 c4@3 c4@2 db4", C: "d4@3 bb3@3 g4@3 bb3@3 d4@3 c4 bb3@2 bb3@4 c4@2",
  D: "bb3@3 ~@6 f4@2 eb4", E: "d4@12 ~@6 bb4@2 a4@3 f4", F: "d4@3 bb3@3 g4@3 bb3@3 bb4@2 c5@2 bb4@2 d5@2 c5@3 bb4",
  G: "g4 bb3 ~@2", H: "[~@12 d4@18 bb4@2 a4@3 f4 d4@12]/2", I: "[d4@10 c4@2 d4@18 bb4@2 a4@3 f4 d4@12]/2",
  J: "[d4@10 c4@2 d4@18 bb4@2 a4@3 f4 d4@24 ~@12]/3",
})).s("gm_pizzicato_strings").gain(0.4)

// other · viola
const viola = note("<~@30 A B C@2 ~@3 D E F G D E H I@2 J K L ~@3 M N O J@2 P@2 ~ Q@4>".pickRestart({
  A: "eb4@2 d4@2 f4@2 f4 d4@4 d4 d4@6 ~@6", B: "~ gb4", C: "f4 gb4", D: "f3@3 f3@2 gb3 g3@6", E: "bb3 g3 bb3@2",
  F: "f4 bb4", G: "f4 bb3", H: "c4", I: "~ g4 ~ gb4 ~ f4 ~ e4", J: "d4 g4 gb4 d4 f4 d4 e4@2",
  K: "~@9 [eb3,ab3] [c3,g3] [c3,eb3]", L: "[c3,f3] ~", M: "g3 a3", N: "bb3", O: "bb3@12 c4@9 d4 c4@2",
  P: "[d4@3 g4@3 gb4@3 d4@3 f4@3 d4@3 e4@10 ~@20]/2", Q: "[~@19 d4@20 ~ bb3@39 ~@17]/4",
})).s("gm_viola").gain(0.25)

// other · pizzicato strings
const pizzicato_strings_2 = note("<~@14 A B C D E F G H ~ I@2 J@4 K ~@34>".pickRestart({
  A: "bb3@6 ~@12 bb3@2 a3@3 f3", B: "bb3@6 a3@5 gb3", C: "d3@3 bb3@3 bb3@2 d3@3 c3", D: "g3@3 ~@6 d3@2 c3",
  E: "d3@12 ~@6 bb3@2 a3@3 f3", F: "d3@6 c3@5 db3", G: "d3@6 g3@6 bb3@2 c4@2 bb3@2 d4@2 c4@3 bb3", H: "bb3 ~",
  I: "[~@12 d3@18 bb3@2 a3@3 f3 d3@12]/2", J: "[d3@10 c3@2 d3@18 bb3@2 a3@3 f3 d3@12]/2", K: "d3@5 c3 d3@6",
})).s("gm_pizzicato_strings").gain(0.4)

// bass · electric bass finger · "Electric Bass"
const bass = note("<~@10 A@3 B ~@5 C D B E@8 F@2 G H@2 I J K L M J K L N O@2 P Q R ~@3 S T U V@2 W@3 X@4>".pickRestart({
  A: "eb2 bb1", B: "eb2 ~", C: "bb1 f1", D: "~@2 f2 e2",
  E: "[~@4 c2 f1 bb1@11 f1 bb1@11 f1 bb1@11 f1 bb1@11 f1 bb1@11 f1 bb1@11 f1 bb1@11 f1 bb1@6]/8",
  F: "[~@5 f1 bb1@9 bb1 c2 d2 eb2@6]/2", G: "bb1@6 bb1@2 c2@2 d2@2 eb2@9 f2@3", H: "bb1@3 bb1 c2 d2 eb2@6",
  I: "~@6 bb1@4 c2 d2", J: "eb2@4 eb2 f2 bb1@4 c2 eb2", K: "f2@4 f2 gb2 g2@3 gb2@3", L: "f2 e2 eb2@2",
  M: "f2@5 f1 bb1@4 c2 d2", N: "f2@5 c2 f2@6", O: "[g1,g2] [gb1,gb2] [f1,f2] [e1,e2]",
  P: "[g1,g2]@3 d2@2 d2 [gb1,gb2]@3 d2@2 d2 [f1,f2]@3 d2@2 d2 [e1,e2]@3 d2@2 d2", Q: "[ab1,eb2]@6 ab1@5 c2", R: "f2 ~",
  S: "eb2 f2", T: "bb1@4 c2 d2 eb2@4 eb2 f2", U: "bb1@4 c2 eb2 f2@4 f2 gb2", V: "g2 gb2 f2 e2",
  W: "[g2@3 d2@3 gb2@3 d2@3 f2@3 d2@3 e2@10 eb2@16 g2@17 ~@11]/3", X: "[~@6 bb2@25 f2@2 bb2@26 f2@2 bb1@17 ~@18]/4",
})).s("gm_electric_bass_finger").gain(0.45)

// chords · piano
const piano = note(`<
  A@10 B C B D E F G H I J G K L@9 M N O P Q R S T U V S T W G@3 X Y E J G H Z J G@2 AA@2 ~ AB@2 AC@2
>`.pickRestart({
  A: "[bb2,f3,bb3,d4] ~ [bb2,f3] [eb3,g3,bb3,d4] ~ [eb3,g3] [f3,a3,bb3,d4] ~ [f3,a3] ~@2 bb3, ~ [bb2,f3] ~@2 [eb3,g3] ~@2 [f3,a3] ~ [eb3,g3,d4]@3, ~@3 [bb3,d4]@3 ~@3 [bb3,d4]@3 ~@3 [bb3,d4]@3 bb3@4 ~@2, ~@5 c4", // Bb Bb5 Ebmaj7 Eb Bbmaj7 F Bb5 Eb …
  B: "[gb3,bb3,eb4] ~ gb3 [gb3,bb3,eb4] ~ gb3 [f3,bb3,d4] ~@2 [ab3,bb3,d4] ~ ab3, ~ gb3 ~@2 gb3 ~@2 f3 f3@4, ~@3 [bb3,eb4]@3 ~@3 [bb3,eb4]@3 ~@3 [bb3,d4]@3 ~@2 ab3@2 ~@2, ~@7 [bb3,d4]", // Ebm Bb Bb7 Eb5 Bb
  C: "[gb3,bb3,eb4] ~ gb3 [gb3,bb3,eb4] ~ gb3 [f3,bb3,d4] ~ f3 [f3,bb3,d4] ~ f3, ~ gb3 ~@2 gb3 ~@2 f3 ~@2 f3 ~, ~ [bb3,eb4] ~ [bb3,eb4] ~ [bb3,d4] ~ [bb3,d4]", // Ebm Bb Eb5 Bb
  D: "[gb3,bb3,eb4]@2 ~@2 gb3@2 [gb3,bb3,eb4]@2 ~@2 gb3@2 [f3,a3,c4,eb4]@11 ~, ~ gb3 ~@2 gb3 ~@7, ~ [bb3,eb4] ~ [bb3,eb4] ~@4", // Ebm F7 Eb5
  E: "[bb2,f3,bb3,d4] ~ [bb2,f3] [bb2,f3,bb3,d4] ~ [bb2,f3] [eb3,g3,bb3,d4] ~ [eb3,g3] [eb3,g3,bb3,d4] ~ [eb3,g3], ~ [bb2,f3] ~@2 [bb2,f3] ~@2 [eb3,g3] ~@2 [eb3,g3] ~, ~ [bb3,d4] ~ [bb3,d4] ~ [bb3,d4] ~ [bb3,d4]", // Bb Bb5 Bb Bb5 Ebmaj7 Eb Ebmaj7 Eb …
  F: "[bb2,f3,bb3,d4]@2 ~@2 [bb2,f3]@2 [bb2,f3,bb3,d4]@2 ~@2 [bb2,f3]@2 [c3,f3,a3,c4]@2 ~@2 [c3,f3]@2 [a3,c4]@3 ~ gb3@2, ~ [bb2,f3] ~@2 [bb2,f3] ~@2 [c3,f3] ~ [c3,f3]@3, ~ [bb3,d4] ~ [bb3,d4] ~ [a3,c4] ~ [a3,c4]", // Bb Bb5 Bb Bb5 F F5 Am Bb5 …
  G: "[d3,g3,bb3,d4] ~ [d3,g3] [d3,gb3,a3,c4] ~ [d3,gb3] [d3,f3,bb3,d4] ~ [d3,f3] [d3,e3,bb3,d4] ~ [d3,e3], ~ [d3,g3] ~@2 [d3,gb3] ~@2 [d3,f3] ~@2 [d3,e3] ~, ~ [bb3,d4] ~ [a3,c4] ~ [bb3,d4] ~ [bb3,d4]", // Gm G5 D7 D Bb Dm Em7b5 Dsus2 …
  H: "[bb2,eb3,g3,bb3,eb4] ~ [bb2,eb3,g3] [bb2,eb3,g3,bb3,eb4] ~ [bb2,eb3,g3] [c3,f3,a3,c4] ~ [c3,f3] [c3,f3,a3,c4] ~ [c3,f3], ~ [bb2,eb3,g3] ~@2 [bb2,eb3,g3] ~@2 [c3,f3] ~@2 [c3,f3] ~, ~ [bb3,eb4] ~ [bb3,eb4] ~ [a3,c4] ~ [a3,c4]", // Eb F F5 F F5 Eb F5 Eb5 …
  I: "[bb2,f3,bb3,d4] ~ [bb2,f3] [bb2,f3,bb3,d4] ~ [bb2,f3] [bb2,f3,bb3,d4] ~ [bb2,f3] [bb2,f3,bb3,d4] ~ [bb2,f3], ~ [bb2,f3] ~@2 [bb2,f3] ~@2 [bb2,f3] ~@2 [bb2,f3] ~, ~ [bb3,d4] ~ [bb3,d4] ~ [bb3,d4] ~ [bb3,d4]", // Bb Bb5 Bb Bb5 Bb Bb5 Bb Bb5 …
  J: "[bb2,f3,bb3,d4] ~ [bb2,f3] [bb2,f3,bb3,d4] ~ [bb2,f3] [c3,f3,a3,c4] ~ [c3,f3] ~@2 [gb3,db4], ~ [bb2,f3] ~@2 [bb2,f3] ~@2 [c3,f3] ~ [c3,f3,a3,c4]@3, ~ [bb3,d4] ~ [bb3,d4] ~ [a3,c4] ~@2", // Bb Bb5 Bb Bb5 F F5 Gb5 Bb5 …
  K: "[bb2,eb3,g3,bb3,eb4]@11 ~ [bb2,f3,bb3,d4]@2 ~@2 [bb2,f3]@2 [eb3,g3,bb3,d4]@2 ~@2 [eb3,g3]@2, ~@7 [bb2,f3] ~@2 [eb3,g3] ~, ~@5 [bb3,d4] ~ [bb3,d4]", // Eb Bb Bb5 Ebmaj7 Eb Bb5 Eb Bb
  L: "[f3,a3,bb3,d4] ~ [f3,a3] ~@2 bb3 [bb2,f3,bb3,d4] ~ [bb2,f3] [eb3,g3,bb3,d4] ~ [eb3,g3], ~ [f3,a3] ~ [eb3,g3,d4]@3 ~ [bb2,f3] ~@2 [eb3,g3] ~, ~@3 [bb3,d4]@3 bb3@4 ~@5 [bb3,d4]@3 ~@3 [bb3,d4]@3, ~@2 c4 ~@3", // Bbmaj7 F Bb Bb5 Ebmaj7 Eb F Ebmaj7 …
  M: "[f3,a3,bb3,d4] ~ [f3,a3] ~@2 bb3 [gb3,bb3,eb4] ~ gb3 [gb3,bb3,eb4] ~ gb3, ~ [f3,a3] ~ [eb3,g3,d4]@3 ~ gb3 ~@2 gb3 ~, ~@3 [bb3,d4]@3 bb3@4 ~@5 [bb3,eb4]@3 ~@3 [bb3,eb4]@3, ~@2 c4 ~@3", // Bbmaj7 F Ebm F Ebmaj7 Bb Eb5
  N: "[f3,bb3,d4] ~@2 [ab3,bb3,d4] ~ ab3 [gb3,bb3,eb4] ~ gb3 [gb3,bb3,eb4] ~ gb3, ~ f3 f3@4 ~ gb3 ~@2 gb3 ~, ~@3 [bb3,d4]@3 ~@2 ab3@2 ~@14, ~@3 [bb3,d4] ~ [bb3,eb4] ~ [bb3,eb4]", // Bb Bb7 Ebm Bb Eb5
  O: "[f3,bb3,d4] ~ f3 [f3,bb3,d4] ~ f3 [gb3,bb3,eb4] ~ gb3 [gb3,bb3,eb4] ~ gb3, ~ f3 ~@2 f3 ~@2 gb3 ~@2 gb3 ~, ~ [bb3,d4] ~ [bb3,d4] ~ [bb3,eb4] ~ [bb3,eb4]", // Bb Ebm Bb Eb5
  P: "[f3,bb3,d4]@2 ~@4 [ab3,bb3,d4]@2 ~@2 ab3@2 [gb3,bb3,eb4]@11 ~, ~ f3 f3@4 ~@6, ~@3 [bb3,d4]@3 ~@2 ab3@2 ~@14, ~@3 [bb3,d4] ~@4", // Bb Bb7 Ebm Bb
  Q: "[f3,a3,c4,eb4]@11 ~ [bb2,f3,bb3,d4]@2 ~@2 [bb2,f3]@2 [bb2,f3,bb3,d4]@2 ~@2 [bb2,f3]@2, ~@7 [bb2,f3] ~@2 [bb2,f3] ~, ~@5 [bb3,d4] ~ [bb3,d4]", // F7 Bb Bb5 Bb Bb5 Bb
  R: "[eb3,g3,bb3,d4]@2 ~@2 [eb3,g3]@2 [eb3,g3]@2 [eb3,g3]@2 ~ f4 [bb2,f3,bb3,d4]@2 ~@2 [bb2,f3]@2 [bb2,f3,bb3,d4]@2 ~@2 [bb2,f3]@2, ~ [eb3,g3] ~ bb4@3 ~@6, ~ [bb3,d4]@3 ~ [bb3,d4] ~ [bb3,d4], ~@2 a4 ~@3, ~@5 [eb3,g3] ~ [bb2,f3] ~@2 [bb2,f3] ~", // Ebmaj7 Eb Bb Bb5 Bb Bb5 Eb Bb …
  S: "[c3,f3,a3,c4] ~ [c3,f3] ~@2 [gb3,db4] [d3,g3,bb3,d4] ~ [d3,g3] [d3,gb3,a3,c4] ~ [d3,gb3], ~ [c3,f3] ~ [c3,f3,a3,c4]@3 ~ [d3,g3] ~@2 [d3,gb3] ~, ~ [a3,c4] ~@3 [bb3,d4] ~ [a3,c4]", // F F5 Gb5 Gm G5 D7 D F5 …
  T: "[d3,f3,bb3,d4] ~ [d3,f3] [d3,e3,bb3,d4] ~ [d3,e3] [bb2,eb3,g3,bb3,eb4] ~ [bb2,eb3,g3] [bb2,eb3,g3,bb3,eb4] ~ [bb2,eb3,g3], ~ [d3,f3] ~@2 [d3,e3] ~@2 [bb2,eb3,g3] ~@2 [bb2,eb3,g3] ~, ~ [bb3,d4] ~ [bb3,d4] ~ [bb3,eb4] ~ [bb3,eb4]", // Bb Dm Em7b5 Dsus2 Eb Dm Dsus2 Eb …
  U: "[c3,f3,a3,c4] ~ [c3,f3] [c3,f3,a3,c4] ~ [c3,f3] [bb2,f3,bb3,d4] ~ [bb2,f3] [bb2,f3,bb3,d4] ~ [bb2,f3], ~ [c3,f3] ~@2 [c3,f3] ~@2 [bb2,f3] ~@2 [bb2,f3] ~, ~ [a3,c4] ~ [a3,c4] ~ [bb3,d4] ~ [bb3,d4]", // F F5 F F5 Bb Bb5 Bb Bb5 …
  V: "[bb2,f3,bb3,d4]@2 ~@2 [bb2,f3]@2 [bb2,f3]@2 [bb2,f3]@2 ~ f4 [bb2,f3,bb3,d4]@2 ~@2 [bb2,f3]@2 [bb2,f3,bb3,d4]@2 ~@2 [bb2,f3]@2, ~ [bb2,f3] ~ bb4@3 ~@6, ~ [bb3,d4]@3 ~ [bb3,d4] ~ [bb3,d4], ~@2 a4 ~@3, ~@5 [bb2,f3] ~ [bb2,f3] ~@2 [bb2,f3] ~", // Bb Bb5 Bb Bb5 Bb Bb5 Bb Bb5
  W: "[c3,f3,a3,c4] ~ [c3,f3] [c3,f3,a3,c4] ~ [c3,f3] [c3,f3,a3,c4] ~ [c3,f3] [c3,f3,a3,c4] ~ [c3,f3], ~ [c3,f3] ~@2 [c3,f3] ~@2 [c3,f3] ~@2 [c3,f3] ~, ~ [a3,c4] ~ [a3,c4] ~ [a3,c4] ~ [a3,c4]", // F F5 F F5 F F5 F F5 …
  X: "[ab2,eb3,ab3,c4] ~ [ab2,eb3] [ab2,eb3,ab3,c4] ~ [ab2,eb3] [ab2,eb3,ab3,c4] ~ [ab2,eb3] [ab2,eb3,ab3,c4] ~ [ab2,eb3], ~ [ab2,eb3] ~@2 [ab2,eb3] ~@2 [ab2,eb3] ~@2 [ab2,eb3] ~, ~ [ab3,c4] ~ [ab3,c4] ~ [ab3,c4] ~ [ab3,c4]", // Ab Ab5 Ab Ab5 Ab Ab5 Ab Ab5 …
  Y: "[c3,f3]@17 ~@7, [a3,c4]@11 ~@13", // F5 Am
  Z: "[bb2,f3,bb3,d4]@2 ~@2 [bb2,f3]@2 [bb2,f3,bb3,d4]@2 ~@2 [bb2,f3]@2 [bb2,f3,bb3,d4]@2 ~@2 [bb2,f3]@2 [bb2,f3]@2 [bb2,f3]@2 ~ f4, ~ [bb2,f3] ~@2 [bb2,f3] ~@2 [bb2,f3] ~ bb4@3, ~ [bb3,d4] ~ [bb3,d4] ~ [bb3,d4]@3, ~@5 a4, ~@11 [bb2,f3]", // Bb Bb5 Bb Bb5 Bb Bb5 Bb Bb5
  AA: "[[d3,g3,bb3,d4] ~ [d3,g3] [d3,gb3,a3,c4] ~ [d3,gb3] [d3,f3,bb3,d4]@7 ~@11, ~ [d3,g3] ~@2 [d3,gb3] ~@19, ~ [bb3,d4] ~ [a3,c4] ~@12]/2", // Gm G5 D7 D Bb G5 D Bb …
  AB: "[~@6 [bb2,f3,bb3,d4]@2 ~@2 [bb2,f3]@2 ~ [eb3,g3,bb3,d4]@2 ~@2 [eb3,g3]@2 [f3,a3,bb3,d4]@3 ~@2 [f3,a3]@2 ~@5 bb3@2 [bb2,f3,bb3,d4]@2 ~@2 [bb2,f3]@2 ~ [eb3,g3,bb3,d4]@2 ~@2 [eb3,g3]@2 [f3,a3,bb3,d4]@2, ~@8 [bb2,f3]@2 ~@5 [eb3,g3]@2 ~@5 [f3,a3]@2 ~@2 [eb3,g3]@13 ~@3 [eb3,g3]@2 ~@4, ~@9 [bb3,d4]@3 ~@4 [bb3,d4]@3 ~@4 [bb3,d4]@3 d4@7 ~@3 [bb3,d4]@3 ~@4 [bb3,d4]@3 ~@2, ~@26 bb3@4 ~@5 [bb2,f3]@2 ~@11, ~@28 c4@11 ~@9]/2", // Bb Bb5 Ebmaj7 Eb Bbmaj7 F Bb Bb5 …
  AC: "[~@3 [f3,a3]@2 ~@6 bb3@2 ~ [f3,d4]@16 ~@18, ~ [f3,a3]@2 ~@2 [eb3,g3,d4]@8 [bb2,bb3]@17 ~@18, ~@2 [bb3,d4]@3 bb3@6 ~@37, ~@4 c4@3 ~@17]/2", // F Dm F Ebmaj7 Bb
})).s("gm_piano").gain(0.25)

// drums · kick
const kick = s("bd").struct("<~@22 A B@8 C ~@3 A D@8 E F E F ~@5 E F E@2 G ~@6>".pickRestart({
  A: "~ x", B: "~ x ~@2 x ~@3", C: "~ x ~@6", D: "x!2 ~@2 x ~@3", E: "x ~@3 x!2 ~@2", F: "x ~@11 x ~@2 x ~@4 x ~ x ~",
  G: "x ~@11 x ~@2 x ~@4 x ~@3",
})).gain(0.3)

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

// drums · low tom
const low_tom = s("lt").struct("<~@31 [~ x] [x!2]!2 x ~@17 [~@10 x!2] ~@11>").gain(0.4)

// drums · ride
const ride = s("rd").struct("<~@57 [~@11 x] ~@6>").gain(0.3)

stack(violin, violin_soft, pizzicato_strings, viola, pizzicato_strings_2, bass, piano, kick, snare, low_tom, ride)