Strudelify

Sag mir wo die Blumen sind

Dietrich Marlene

KeyB majorTempo120 bpm
0:00/0:00
// Sag mir wo die Blumen sind — Dietrich Marlene
// 120 bpm, 4/4, key B major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Full arrangement: all 114 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. 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.

// chords · string ensemble 1
const string_ensemble_1 = note("<~@56 A B C D E F G H I@2 J K L M N O ~@42>".pickRestart({
  A: "[g#3,g#4]@3 [f#3,f#4]", B: "[f3,f4]@3 [d#3,d#4] [c#3,c#4] [d#3,d#4] [c#3,c#4] [c3,c4]", C: "a#2@13 ~@3, a#3 ~",
  D: "[c3,c4]@8 ~@2 [c3,c4] ~ [c#3,c#4] ~ [d#3,d#4] ~", E: "[c#3,f4,g#4]@3 [f3,f4,a4]",
  F: "[f4,a#4]@6 ~@2 [f4,c#5] ~ [f4,c#5] ~ [f#4,d#5] ~ [g#4,f5] ~", G: "f#5",
  H: "[c5,g#5] ~@3 [g#4,c5] ~ [g#4,c5] ~ [g#4,d#5] ~ [g#4,c5,d#5] ~ [c5,d#5,g#5] ~ [c5,d#5,g#5] ~", // Fm G# G#5 G#
  I: "[[c#5,g#5]@11 ~ [f5,a5]@4 a#5@8 [f5,c#6]@2 [d#5,c6]@2 [c#5,a#5]@2 [c5,g#5]@2, ~@12 c#5@13 ~@7]/2", J: "[c#5,a#5]",
  K: "[d#4,d#5]@5 [f#4,d#6] [d#4,c6] c4, c6@9 ~@5 g#5 ~", L: "[f#4,c#5,a#5]",
  M: "[c#5,g#5]@4 ~ [c#5,f5,g#5] c#5 [g#4,c#5], ~@12 f5 ~@3", N: "[a#4,f#5]", O: "[c5,g#5]",
})).s("gm_string_ensemble_1").gain(0.37).pan(0.6)

// chords · string ensemble 1 · soft notes
const string_ensemble_1_soft = note("<~@62 A ~ B ~@5 C ~ D@2 ~@40>".pickRestart({
  A: "[f#4,a#4]", B: "~@10 f5 ~@5", C: "c#5", D: "[g#3,f4,c#5]/2",
})).s("gm_string_ensemble_1").gain(0.16).pan(0.6)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  A B C D E F C D G F C D E H I J I K A B C D E F L D G F L D E H I J I K A B M N O P Q N R P S N T U V W V X Y Z AA AB
  AC AD AE AB AF AD AG AB AH AI AJ AK AJ AL AM@2 M N O P AN N R P AO AP O U V W V X Y Z C D E F AQ D G F AR D E H AS@6
  AT@3 ~
>`.pickRestart({
  A: "[f#3,b3,d#4]@2 [f#2,b2,d#3]@2 ~@2 [f#2,b2,d#3]@2 [f#3,b3]@2 [f#2,b2,d#3]@2 ~@2 [f#2,b2,d#3] ~, [f#2,b2,d#3] ~@3 d#4@7 ~@5, ~ [f#3,b3] ~ [f#3,b3,d#4]", // B B5 B B5 B
  B: "[f#2,b2,d#3,f#3,b3,d#4]@2 [f#2,b2,d#3]@2 ~@2 [f#2,b2,d#3]@2 f#3@2 [f#2,b2,d#3]@2 ~@2 [f#2,b2,d#3] ~, ~@4 [b3,d#4]@7 ~@5, ~ f#3 ~ [f#3,b3,d#4]", // B
  C: "[f#3,b3,d#4]@2 [f#2,b2,d#3]@2 f#3@2 [f#2,b2,d#3]@2 f#3@2 [f#2,b2,d#3]@2 [f#3,b3,d#4]@2 [f#2,b2,d#3] ~, [f#2,b2,d#3] ~@3 [b3,d#4]@7 ~@5", // B
  D: "[g#3,b3,d#4]@2 [g#2,d#3]@2 g#3@2 [g#2,d#3]@2 g#3@2 [g#2,d#3]@2 [g#3,b3,d#4]@2 [g#2,d#3] ~, [g#2,d#3] ~@3 [b3,d#4]@7 ~@5", // G#m G#5 G#m G#5 B
  E: "[g#3,b3,f4]@2 [g#2,c#3,f3]@2 g#3@2 [g#2,c#3,f3]@2 g#3@2 [g#2,c#3,f3]@2 [g#3,b3,f4]@2 [g#2,c#3,f3] ~, [g#2,f3] ~@3 [b3,f4]@8 ~@4", // Fdim C# Fdim C# Bdim
  F: "[a#3,c#4,f#4] [f#2,c#3,f#3] a#3 [f#2,c#3,f#3] a#3 [f#2,c#3,f#3] [a#3,c#4,f#4] [f#2,c#3,f#3], [f#2,f#3] ~@3 [c#4,f#4]@8 ~@4", // F# F#5 F# F#5 F# F#5
  G: "[e3,g#3,b3,e4]@2 [b2,e3]@2 g#3@2 e3 ~ g#3@2 e3@2 [g#3,b3,e4]@2 [e2,b2,e3] ~, ~@2 e2@11 ~@3, ~@4 [b3,e4]@7 ~@5, ~@6 b2@7 ~@3", // E E5 E E5
  H: "[a#3,c#4,f#4]@2 [f#2,c#3,f#3]@2 a#3@2 ~@2 a#3@2 f#3@2 [a#3,c#4,f#4]@2 f3 ~, [f#2,c#3,f#3] ~@3 [c#4,f#4]@7 ~@5, ~@6 [f#2,c#3]@9 ~", // F# F#5 F# F#5
  I: "[g#3,b3,e4]@2 [e2,b2,e3]@2 g#3@2 [e2,b2,e3]@2 g#3@2 [e2,b2,e3]@2 [g#3,b3,e4]@2 [e2,b2] ~, [e2,b2,e3] ~@3 [b3,e4]@7 ~@5", // E E5 E E5
  J: "[f#3,b3,d#4]@2 [f#2,b2,d#3]@2 f#3@2 [f#2,b2,d#3]@2 f#3@2 [f#2,b2,d#3]@2 [f#3,b3,d#4]@2 [f#2,b2,d#3] ~, [f#2,b2,d#3] ~@3 [b3,d#4]@8 ~@4", // B
  K: "[a#3,c#4,f#4] [f#2,c#3,f#3] a#3 [f#2,c#3,f#3] a#3 [f#2,c#3,f#3] [a#3,c#4,f#4] [f#2,c#3,f#3], [f#2,c#3,f#3] ~@3 [c#4,f#4]@7 ~@5", // F# F#5 F# F#5
  L: "[f#3,b3,d#4]@2 [f#2,b2,d#3]@2 [f#3,b3,d#4]@2 [f#2,b2,d#3] ~ [d#3,g3,a#3,c#4]@2 [d#2,a#2]@2 [d#3,g3,a#3,c#4]@2 [d#2,a#2] ~, [f#2,b2,d#3] ~@7 [d#2,a#2] ~@7", // B D#7 D#5 D#7 D#5 B D#5
  M: "[g3,c4,e4]@2 [g2,c3,e3]@2 g3@2 [g2,c3,e3]@2 g3@2 [g2,c3,e3]@2 [g3,c4,e4]@2 [g2,c3,e3] ~, [g2,c3,e3] ~@3 [c4,e4]@7 ~@5", // C
  N: "[a3,c4,e4]@2 [a2,e3]@2 a3@2 [a2,e3]@2 a3@2 [a2,e3]@2 [a3,c4,e4]@2 [a2,e3] ~, [a2,e3] ~@3 [c4,e4]@7 ~@5", // Am A5 Am A5 C
  O: "[a3,c4,f#4]@2 [a2,d3,f#3]@2 a3@2 [a2,d3,f#3]@2 a3@2 [a2,d3,f#3]@2 [a3,c4,f#4]@2 [a2,d3,f#3] ~, [a2,f#3] ~@3 [c4,f#4]@8 ~@4", // F#dim D F#dim D Cdim
  P: "[b3,d4,g4] [g2,d3,g3] b3 [g2,d3,g3] b3 [g2,d3,g3] [b3,d4,g4] [g2,d3,g3], [g2,g3] ~@3 [d4,g4]@8 ~@4", // G G5 G G5 G G5
  Q: "~@2 g3@2 ~@2 g3@2 ~@2 g3 ~ [g#2,b3,e4]@4, c3@2 g2 ~, ~@2 [c4,e4]@3 ~@3", // E C
  R: "[f3,a3,c4,f4]@2 [c3,f3]@2 a3@2 f3 ~ a3@2 f3@2 [a3,c4,f4]@2 [f2,c3,f3] ~, ~@2 f2@11 ~@3, ~@4 [c4,f4]@7 ~@5, ~@6 c3@7 ~@3", // F F5 F F5
  S: "~@2 g3@2 ~@2 g3@2 g2@2 g3 ~ [g#2,b3,e4]@4, c3 ~, ~@2 [c4,e4]@3 ~@3", // E C
  T: "[f2,f3,a3,c4,f4]@2 [f2,c3,f3]@2 a3@2 [f2,c3,f3]@2 a3@2 [f2,c3,f3]@2 [a3,c4,f4]@2 [f2,c3,f3] ~, ~@4 [c4,f4]@7 ~@5", // F F5 F F5
  U: "[b3,d4,g4]@2 [g2,d3,g3]@2 b3@2 ~@2 b3@2 g3@2 [b3,d4,g4]@2 f#3 ~, [g2,d3,g3] ~@3 [d4,g4]@7 ~@5, ~@6 [g2,d3]@9 ~", // G G5 G G5
  V: "[a3,c4,f4]@2 [f2,c3,f3]@2 a3@2 [f2,c3,f3]@2 a3@2 [f2,c3,f3]@2 [a3,c4,f4]@2 [f2,c3] ~, [f2,c3,f3] ~@3 [c4,f4]@7 ~@5", // F F5 F F5
  W: "[g3,c4,e4]@2 [g2,c3,e3]@2 g3@2 [g2,c3,e3]@2 g3@2 [g2,c3,e3]@2 [g3,c4,e4]@2 [g2,c3,e3] ~, [g2,c3,e3] ~@3 [c4,e4]@8 ~@4", // C
  X: "[b3,d4,g4] [g2,d3,g3] b3 [g2,d3,g3] b3 [g2,d3,g3] [b3,d4,g4] [g2,d3,g3], [g2,d3,g3] ~@3 [d4,g4]@7 ~@5", // G G5 G G5
  Y: "[g3,c4,e4]@2 [g2,c3,e3]@2 ~@2 [g2,c3,e3]@2 [g3,c4]@2 [g2,c3,e3]@2 ~@2 [g2,c3,e3] ~, [g2,c3,e3] ~@3 e4@7 ~@5, ~ [g3,c4] ~ [g3,c4,e4]", // C C5 C C5 C
  Z: "[g2,c3,e3,g3,c4,e4]@2 [g2,c3,e3]@2 ~@2 [g2,c3,e3]@2 g3@2 [g2,c3,e3]@2 ~@2 [g2,c3,e3] ~, ~@4 [c4,e4]@7 ~@5, ~ g3 ~ [g3,c4,e4]", // C
  AA: "[g#3,c#4,f4]@2 [g#2,c#3,f3]@2 g#3@2 [g#2,c#3,f3]@2 g#3@2 [g#2,c#3,f3]@2 [g#3,c#4,f4]@2 [g#2,c#3,f3] ~, [g#2,c#3,f3] ~@3 [c#4,f4]@7 ~@5", // C#
  AB: "[a#3,c#4,f4]@2 [a#2,f3]@2 a#3@2 [a#2,f3]@2 a#3@2 [a#2,f3]@2 [a#3,c#4,f4]@2 [a#2,f3] ~, [a#2,f3] ~@3 [c#4,f4]@7 ~@5", // A#m A#5 A#m A#5 C#
  AC: "[a#3,c#4,g4]@2 [a#2,d#3,g3]@2 a#3@2 [a#2,d#3,g3]@2 a#3@2 [a#2,d#3,g3]@2 [a#3,c#4,g4]@2 [a#2,d#3,g3] ~, [a#2,g3] ~@3 [c#4,g4]@8 ~@4", // Gdim D# Gdim D# C#dim
  AD: "[c4,d#4,g#4] [g#2,d#3,g#3] c4 [g#2,d#3,g#3] c4 [g#2,d#3,g#3] [c4,d#4,g#4] [g#2,d#3,g#3], [g#2,g#3] ~@3 [d#4,g#4]@8 ~@4", // G# G#5 G# G#5 G# G#5
  AE: "~@2 g#3@2 ~@2 g#3@2 g#2@2 g#3 ~ [a2,a3,c4,d#4,f4]@3 ~, c#3 ~, ~@2 [c#4,f4]@3 ~@3", // F7 C#
  AF: "[f#3,a#3,c#4,f#4]@2 [c#3,f#3]@2 a#3@2 f#3 ~ a#3@2 f#3@2 [a#3,c#4,f#4]@2 [f#2,c#3,f#3] ~, ~@2 f#2@11 ~@3, ~@4 [c#4,f#4]@7 ~@5, ~@6 c#3@7 ~@3", // F# F#5 F# F#5
  AG: "[g#3,c#4,f4]@2 f3@2 g#3@2 ~@2 g#3 ~ f3@2 [c4,f4,a4]@2 f3 ~, c#3@2 [c#4,f4]@3 ~@3, ~@6 c#3@5 ~@5", // C# F C#
  AH: "a#2 ~ d#3@2 g3@4 ~@2 g3 ~ [g3,a#3,d#4]@2 [d#2,d#3] ~, d#2@3 ~, ~@2 [a#3,d#4]@3 ~@3, ~@8 d#3@5 ~@3", // D# D#5
  AI: "[c4,d#4,g#4]@2 [g#2,d#3,g#3]@2 c4@2 ~@2 c4@2 g#3@2 [c4,d#4,g#4]@2 g3 ~, [g#2,d#3,g#3] ~@3 [d#4,g#4]@7 ~@5, ~@6 [g#2,d#3]@9 ~", // G# G#5 G# G#5
  AJ: "[a#3,c#4,f#4]@2 [f#2,c#3,f#3]@2 a#3@2 [f#2,c#3,f#3]@2 a#3@2 [f#2,c#3,f#3]@2 [a#3,c#4,f#4]@2 [f#2,c#3] ~, [f#2,c#3,f#3] ~@3 [c#4,f#4]@7 ~@5", // F# F#5 F# F#5
  AK: "[g#3,c#4,f4]@2 [g#2,c#3,f3]@2 g#3@2 [g#2,c#3,f3]@2 g#3@2 [g#2,c#3,f3]@2 [g#3,c#4,f4]@2 [g#2,c#3,f3] ~, [g#2,c#3,f3] ~@3 [c#4,f4]@8 ~@4", // C#
  AL: "[c4,d#4,g#4] [g#2,d#3,g#3] c4 [g#2,d#3,g#3] c4 [g#2,d#3,g#3] [c4,d#4,g#4] [g#2,d#3,g#3], [g#2,d#3,g#3] ~@3 [d#4,g#4]@7 ~@5", // G# G#5 G# G#5
  AM: "[[g#3,c#4,f4] [c#3,f3] g#3 c#3 g#3 c#3 [g#3,c#4] [c#3,f3] [g#3,c#4] [c#3,f3] ~ [c#3,f3] g#3 [c#3,f3] ~ [c#3,f3], f3 ~@3 [c#4,f4]@8 f4@6 ~@2 [c#4,f4]@7 ~@5, ~@3 f3@4 ~@3 g#3@2 ~@2 [g#3,c#4,f4]@2]/2", // C# C#5 C# C#5 C#
  AN: "~ g3 ~ g3 ~ g3 [g#2,b3,e4]@2, c3@2 g2 ~, ~@4 [c4,e4]@7 ~@5", // E C
  AO: "~ g3 ~ g3 ~ g3 [g#2,b3,e4]@2, c3@2 g2 ~, ~ [c4,e4]@2 ~", // E C
  AP: "[a2,e3,e4] ~ [a2,e3]@2 a3@2 [a2,e3]@2 a3@2 [a2,e3]@2 [a3,c4,e4]@2 [a2,e3] ~, [a3,c4]@2 ~@2 [c4,e4]@7 ~@5", // A5 Am A5 Am C
  AQ: "~ f#3 ~ f#3 f#2 f#3 [g2,g3,a#3,c#4]@2, b2 ~, ~@4 [b3,d#4]@7 ~@5", // Gdim B
  AR: "~@2 f#3@2 d#4 ~ [f#3,d#4]@2 f#2@2 f#3@2 [g2,g3,a#3,c#4]@3 ~, b2 ~, ~ b3 ~@2", // D#m Gdim
  AS: "[[e2,b2,e3,g#3,b3,e4]@19 ~@2 [b3,d#4]@18 ~@2 [e2,b2,e3,g#3,b3,e4]@18 ~@3 f#4@21 f#2 [f#3,b3,d#4]@2 [f#2,b2,d#3]@2 ~@2 [f#2,b2,d#3]@2 [f#3,b3]@2 [f#2,b2,d#3]@2, ~@20 [b2,f#3]@18 ~@23 [f#2,c#3,f#3,a#3,c#4]@22 ~ [b2,d#3] ~@3 d#4@7 ~, ~@22 [f#3,b3] ~]/6", // E B E B B5 B B5 F# …
  AT: "[~@2 [f#2,b2,d#3] ~ [f#3,b3,d#4]@2 [f#2,b2,d#3]@2 ~@2 [f#2,b2,d#3]@2 f#3@3 ~@5 [f#2,b2,d#3]@2 ~@2 [f#4,b4,c#5]@24, [f#3,b3,d#4]@4 [f#2,b2,d#3] ~@3 [b3,d#4]@9 [f#3,b3]@5 ~ [b2,d#3,f#3,b3,d#4]@25, ~@8 f#3@4 ~@3 [f#2,b2,d#3]@3 d#4@5 ~@25]/3", // B F#sus4 B B5 B
})).s("gm_acoustic_guitar_steel").gain(0.33).pan(0.4)

// chords · violin
const violin = note("<~@38 A B ~ C D E F G H I ~ J K L F M ~@2 N O P Q R S T U V W X Y Z AA AB AC ~@42>".pickRestart({
  A: "g4", B: "a3", C: "[b3,g4]", D: "c4@2 ~ e3, e4", E: "[a2,c4,e4]", F: "f3", G: "[g3,b3]",
  H: "[c3,c4]@3 [e2,g#3], e3", I: "[a2,e3,a3]", J: "[b3,d4]@7 [a#3,c#4]", K: "[a3,c4]", L: "[c3,c4]@15 ~",
  M: "[g3,b3]@15 ~", N: "g#4@3 f#4", O: "f4@3 d#4 c#4 d#4 c#4 c4", P: "a#3", Q: "c4@8 ~@2 c4 ~ c#4 ~ d#4 ~",
  R: "f4@3 a4", S: "[c#4,a#4]@5 ~@3 [f4,c#5] ~ [f4,c#5] ~ [f#4,d#5] ~ [g#4,f5] ~", T: "[a#4,f#5]@7 ~",
  U: "[c5,g#5] ~@3 [d#4,g#4,c5] ~ [d#4,g#4,c5] ~ [g#4,c5,d#5] ~ [g#4,c5,d#5] ~ [g#4,c5,g#5] ~ [g#4,c5,g#5] ~", // Fm G#
  V: "[f4,g#5]@3 [d#4,a5]", W: "[c#4,a#5]@4 c#6 c6 a#5 g#5", X: "a#5",
  Y: "[d#5,c6]@5 [f#5,d#6] [d#5,c6] c5, ~@14 g#5 ~", Z: "[c#5,a#5]", AA: "g#5@9 ~ g#5@2 f5@2 c#5 ~, f4",
  AB: "[c#4,a#4]", AC: "[d#4,c5]@15 ~",
})).s("gm_violin").gain(0.44).pan(0.3)

// chords · violin · soft notes
const violin_soft = note("<~@38 A@2 B ~@3 C ~@6 D C ~@19 E@2 ~@40>".pickRestart({
  A: "[c4,e4]/2", B: "[a3,c4,f#4]", C: "a3", D: "e3@15 ~", E: "[f4,c#5]/2",
})).s("gm_violin").gain(0.22).pan(0.3)

// bass · acoustic bass
const bass = note(`<
  A B C D E F C G H F I J K L M N M O A B C D E F P G H F P J K L M N M O A B Q R S T U V W T X Y Z AA AB AC AB AD AE AF
  AG AH AI AJ AK AL AM AJ AN AO AP AQ AR AS AR AT AU@2 Q R S T X V W T X Y AV AA AB AC AB AD AE AF C D E F AW G H F AW J
  K L AX@6 AY@3 ~
>`.pickRestart({
  A: "b2@2 ~@4 b2 ~ b2@5 ~ b2 ~", B: "b2@5 ~ b2 ~ b2 ~ f#2@2 g#2@2 a#2@2", C: "b2 ~ b2 ~",
  D: "g#2@4 ~@2 g#2 ~ g#2@5 ~@3", E: "c#2@6 ~@2 c#2@7 ~", F: "f#2@5 ~@3 f#2 ~ f#2@2 g#2@2 a#2@2",
  G: "g#2@4 ~@2 g#2 ~ g#2@3 ~ g#2@2 f#2@2", H: "e2@2 ~@2 e2@3 ~", I: "b2@5 ~@3 f#2@4 ~@2 f#2@2",
  J: "g#2@5 ~ g#2@2 d#2@4 g#2@4", K: "c#2@8 g#2@4 c#2@3 ~", L: "f#2@5 ~ c#2 ~ f#2@3 ~ f#2@2 f2 ~",
  M: "e2@3 ~@5 e2@3 ~@5", N: "b1@3 ~@5 b1@5 ~@3", O: "f#2@4 ~@4 f#2@5 ~@3", P: "b2@7 ~ g2@3 ~ g2@3 ~", Q: "c3 ~ c3 ~",
  R: "a2@4 ~@2 a2 ~ a2@5 ~@3", S: "d2@6 ~@2 d2@7 ~", T: "g2@5 ~@3 g2 ~ g2@2 a2@2 b2@2", U: "c2@6 ~@2 g2@3 ~ g#2@4",
  V: "a2@4 ~@2 a2 ~ a2@3 ~ a2@2 g2@2", W: "f2@2 ~@2 f2@3 ~", X: "c3@2 g2 g#2", Y: "a2@5 ~ a2@2 e2@4 a2@4",
  Z: "f2@4 ~@2 f2 ~ f2@7 ~", AA: "g2@5 ~ d2 ~ g2@3 ~ g2@2 f#2 ~", AB: "f2@3 ~@5 f2@3 ~@5", AC: "c2@3 ~@5 c2@5 ~@3",
  AD: "g2@4 ~@4 g2@5 ~@3", AE: "c3@2 ~@4 c3 ~ c3@5 ~ c3 ~", AF: "c3@5 ~ c3 ~ c3 ~ g2@2 a2@2 b2@2", AG: "c#3 ~ c#3 ~",
  AH: "a#2@4 ~@2 a#2 ~ a#2@5 ~@3", AI: "d#2@6 ~@2 d#2@7 ~", AJ: "g#2@5 ~@3 g#2 ~ g#2@2 a#2@2 c3@2", AK: "c#3@2 g#2 a2",
  AL: "a#2@4 ~@2 a#2 ~ a#2@3 ~ a#2@2 g#2@2", AM: "f#2@2 ~@2 f#2@3 ~", AN: "c#2@6 g#2 ~ c#2@4 f2@4",
  AO: "a#2@5 ~ a#2@2 f2@4 a#2@4", AP: "d#2@4 ~@2 d#2 ~ d#2@6 d#2 ~", AQ: "g#2@5 ~ d#2 ~ g#2@3 ~ g#2@2 g2 ~",
  AR: "f#2@3 ~@5 f#2@3 ~@5", AS: "c#2@3 ~@5 c#2@5 ~@3", AT: "g#2@4 ~@4 g#2@5 ~@3", AU: "c#2@7 ~ c#2@7 ~",
  AV: "d2@8 a2@4 d2@3 ~", AW: "b2@2 f#2 g2", AX: "[e2@20 b1@21 e2@20 f#1@20 ~@2 b2@2 ~@5 b2 ~ b2@4]/6",
  AY: "[~@2 b2 ~ b2@6 ~@2 b2@8 ~@3 b1@25]/3",
})).s("gm_acoustic_bass").gain(0.45)

// other · pizzicato strings
const pizzicato_strings = note("<~@36 A@2 B C D E F G H I J K L M ~ N O ~ P@2 Q R S T U ~ V ~@6 W ~@44>".pickRestart({
  A: "~@2 b3 ~ f#4 ~ d#4 ~@3 b3 ~ f#4 ~@3", B: "[g3,g4] ~@11 [g3,g4] ~@3", C: "[a3,a4] ~@11 g4 ~ d4 ~", D: "c4 ~@15",
  E: "[d3,d4] ~@9 [b2,b3] ~ [c3,c4] ~ [d3,d4] ~", F: "[e3,e4]@2 ~@10 [g#3,g#4]@3 ~",
  G: "[a3,a4]@4 ~@8 [c4,c5] ~ [b3,b4] ~", H: "[a3,a4] ~@15", I: "~@6 [b2,b3] ~ [c3,c4]@4 [d3,d4]@4",
  J: "[e3,e4] ~@11 [g#3,g#4] ~@3", K: "a4@2 ~@8 [e3,c5] ~ [f3,d5] ~ [g3,e5] ~, a3 ~@15", L: "[a3,f5] ~@15",
  M: "b3@2 ~@2 a3@2 ~@2 [g3,b4]@3 ~@5, d5 ~@3 c5 ~@11", N: "~@10 g4 ~ e4 ~ c4 ~", O: "a4 ~@15",
  P: "~@2 c4 ~ g4 ~ e4 ~@3 c4 ~ g4 ~@3", Q: "[g#3,g#4] ~@11 [g#3,g#4] ~@3", R: "[a#3,a#4] ~@11 g#4 ~ d#4 ~",
  S: "c#4 ~@15", T: "[d#3,d#4] ~@9 [c3,c4] ~ [c#3,c#4] ~ [d#3,d#4] ~", U: "[f3,f4]@2 ~@10 [a3,a4]@3 ~",
  V: "[a#3,a#4] ~@15", W: "~@10 g#4 ~ f4 ~ c#4 ~",
})).s("gm_pizzicato_strings").gain(0.37).pan(0.7)

// drums · kick
const kick = s("bd").struct("<~@20 x!84 ~@5 [~@3 x ~@12] [~ x ~@2] [~@7 x ~@8] ~@2>").gain(0.56)

// drums · snare
const snare = s("sd").struct(`<
  ~@20
  [x!8]!84
  ~@5
  [~@3 x ~@2 x ~ x ~ x ~ x ~ x ~]
  [x ~ x ~ x ~ x ~ x ~ x ~ x ~@2 x]
  [~ x ~@2 x ~@11]
  ~@2
>`).gain(0.4)

// drums · ride
const ride = s("rd").struct("<~@111 [~@7 x ~@8] ~@2>").gain(0.48)

stack(
  string_ensemble_1, string_ensemble_1_soft, acoustic_guitar_steel, violin, violin_soft, bass, pizzicato_strings, kick,
  snare, ride
)