Strudelify
Weil dein Herz dich verrat cover art

Weil dein Herz dich verrät

Weil dein Herz dich verrat

Brunner & Brunner

KeyE♭ majorTempo126 bpm
0:00/0:00
// Weil dein Herz dich verrat — Brunner & Brunner
// 126 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 118 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(126/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, A@4 for four bars: edit a riff to change every repeat.

// bass · synth bass 2 · "SYNTH BASS"
const bass = note(`<
  A B C D E F G E H I C G J K L D E@2 L M C N E@2 C O C D E@3 L C P E@2 C@3 Q L K L D E@2 L R H D E M S T C D E@3 L C D
  E@2 C@2 U D E@3 F C G E@2 C V W X C G E M S O C D E@3 F C Y E@2 C@3 D E@3 L C G E@2 C Z ~@8
>`.pickRestart({
  A: "eb2 ~ eb1 ~ eb2 ~ eb1 ~", B: "eb1 ~@7", C: "eb2 ~ eb2@2 bb1@2 eb2@2 ~@2 eb2@2 bb1@2 c2@2",
  D: "eb2 ~ eb2@2 bb1@2 eb2@2 ~@2 eb2@2 g1@2 ab1@2", E: "bb1 ~ bb1@2 f1@2 bb1@2 ~@2 bb1@2 f1@2 g1@2",
  F: "ab1 ~ ab1 ~ eb2@2 ab1@2 ~@2 ab1@2 g1@2 f1@2", G: "eb2 ~ eb2@2 bb1@2 eb2@2 ~@2 eb2@2 bb1@2 eb2@2",
  H: "eb2 ~ eb2 ~ bb1@2 eb2@2 ~@2 eb2@2 bb1@2 c2@2", I: "eb2 ~ eb2@2 bb1 ~ eb2@2 ~@2 eb2@2 bb1@2 c2@2",
  J: "ab1 ~ ab1@2 eb2 ~ ab1@2 ~@2 ab1@2 g1@2 f1@2", K: "eb2 ~ eb2@2 bb1 ~ eb2 ~@3 eb2@2 f1@2 g1@2",
  L: "ab1 ~ ab1@2 eb2@2 ab1@2 ~@2 ab1@2 eb2@2 ab1@2", M: "bb1 ~ bb1@2 f1@2 bb1@2 ~@2 bb1@2 f1@2 bb1 ~",
  N: "eb2 ~ eb2@2 bb1@2 eb2 ~@3 eb2@2 g1@2 ab1@2", O: "eb2 ~@3", P: "eb2 ~ eb2 ~ bb1@2 eb2 ~@3 eb2 ~ bb1@2 eb2@2",
  Q: "eb2 ~ eb2@2 bb1 ~ eb2 ~@3 eb2@2 bb1@2 eb2@2", R: "bb1 ~ bb1@2 f1@2 bb1@2 ~@2 bb1@2 f1@2 bb1@2",
  S: "eb2 ~ eb2@2 bb1@2 eb2@2 ~@2 eb2@2 c2@2 bb1@2", T: "eb2 ~@7", U: "eb2 ~ eb2@2 bb1@2 eb2@2 ~@2 eb2 ~ bb1@2 c2@2",
  V: "eb2 ~ eb2@2 bb1 ~ eb2@2 ~@2 eb2@2 f1@2 eb2@2", W: "ab1 ~ ab1@2 eb2@2 ab1@2 ~@2 ab1@2 eb2@2 f1@2",
  X: "ab1 ~ ab1@2 eb2 ~ ab1 ~@3 ab1@2 eb2@2 f1@2", Y: "eb2 ~ eb2@2 bb1@2 eb2@2 ~@2 eb2@2 g1@2 ab1 ~",
  Z: "eb2@3 ~ eb1@10 ~@2",
})).s("gm_synth_bass_2").gain(0.5)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  A@2 ~@6 B C ~@3 D ~@2 E@2 ~@3 D ~ F G@2 H@2 I@2 ~@2 J@2 K L M C ~@3 D ~@2 N@2 ~@3 D ~ F G@2 H@2 O@2 ~@2 P@2 Q R S T@7
  U@2 Q L V C ~@8 W@2 X ~@3 Y ~ K L Z ~ W@2 AA@2 ~@2 AB@2 Q R V C ~@8
>`.pickRestart({
  A: "[~@4 eb4 ~@3, eb3@5 ~@3, ~@2 g3@3 ~@3, ~@3 bb3@2 ~@3]/2", B: "~@6 eb4 f4 g4@2 ab4@2 f4@2 g4@2", C: "eb4@3 ~",
  D: "~ eb4, ~@3 eb3@5, ~@7 g3@9", E: "[~@6 f3@7 ~ bb4@2, ~@5 d3@8 d4@3, ~@27 f4@5]/2",
  F: "[c4,ab4]@5 ~ [bb3,g4]@6 [ab3,f4]@3 ~", G: "[[g3,eb4]@19 ~@13]/2",
  H: "[~@4 eb4@5 ~@7, ~@2 eb3@15 ~@15, ~@2 g3@7 ~@7, ~@3 bb3@6 ~@7]/2",
  I: "[~@2 f4@3 ~@3, ~@2 f3@15 ~@15, ~@4 bb3@15 ~@13, ~@3 d4@7 ~@6]/2",
  J: "[~@3 eb4@2 ~@3, ~@3 eb3@7 ~@6, ~@2 g3@3 ~@3, ~@5 bb3@5 ~@6]/2",
  K: "~@8 f4@5 ~@3, ~ f3@5 ~@2, ~ bb3@2 ~, ~@6 d4@7 ~@3",
  L: "[c4,ab4]@3 ~ [c4,ab4] ~ [c4,ab4]@3 ~ [bb3,g4]@2 [ab3,f4]@3 ~", M: "[g3,eb4]@3 bb3 g4 ab4 f4 g4",
  N: "[~@4 f3@9 ~ bb4@2, ~@3 d3@10 d4@3, ~@27 f4@5]/2",
  O: "[~@2 f4@3 ~@3, ~ f3@9 ~@6, ~@4 bb3@15 ~@13, ~@3 d4@7 ~@6]/2",
  P: "[~@6 eb4@7 ~@3, ~@6 eb3@15 ~@11, ~@8 g3@13 ~@11, ~@10 bb3@15 ~@7]/2",
  Q: "~@4 f4@3 ~, ~ f3@5 ~@2, ~@2 bb3@5 ~, ~@3 d4@4 ~",
  R: "[c4,ab4]@3 ~ [c4,ab4] ~ [c4,ab4]@4 [bb3,g4]@2 [ab3,f4]@2 ~@2", S: "eb4@3 bb3 g4 ab4 f4 g4, g3 ~@3",
  T: "[eb4@7 ~@17 eb4@13 ~@16 ab3 ~@2 f4@12 ~@44, g4, ~@18 eb3@19 ~@13 f3@18 ~@44, ~@20 g3@17 ~@17 d4@14 ~@44, ~@22 bb3@15 ~@15 bb3@16 ~@44]/7",
  U: "[~@16 eb4@13 ~@3, ~@10 eb3@19 ~@3, ~@12 g3@17 ~@3, ~@14 bb3@15 ~@3]/2",
  V: "[g3,eb4]@5 ~ bb3!2 g4@2 ab4@2 f4@2 g4@2", // Cm
  W: "[~@8 eb4@13 ~@11, ~@2 eb3@19 ~@11, ~@4 g3@17 ~@11, ~@6 bb3@15 ~@11]/2", X: "~ f4, ~ f3@7, ~ bb3@3, ~@3 d4@5",
  Y: "~ eb4, ~ eb3@7, ~ g3@3, ~@3 bb3@5", Z: "[g3,eb4]@7 ~",
  AA: "[~@4 f4@5 ~@7, ~ f3@8 ~@7, ~@2 bb3@7 ~@7, ~@3 d4@6 ~@7]/2",
  AB: "[~@6 eb4@5 ~@5, ~@3 eb3@8 ~@5, ~@4 g3@7 ~@5, ~@5 bb3@6 ~@5]/2",
})).s("gm_acoustic_guitar_steel").gain(0.5).pan(0.3)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel_2 = note(`<
  ~ A B A C D E F G@2 ~@15 A H A C I J K L A M N O ~@16 A H A C I J K L A M P Q A H A C I R K L A M S T ~@8 A H U C I J
  K V A M S W A H A C I J K V A M X Y@2 ~@8
>`.pickRestart({
  A: "[eb5,g5]@3 ~ [g5,bb5] ~ [ab5,c6]@3 ~ [ab5,c6] ~ [g5,bb5]@3 ~", B: "[eb5,g5]@11 ~@5", C: "[bb5,d6]@7 ~",
  D: "[d6,f6]@5 ~ [c6,eb6]@5 ~ [ab5,c6]@3 ~", E: "[g5,bb5]@7 ~", F: "[d5,bb5]@3 [c5,ab5]@3 [ab4,f5]@2, ~@12 ab5 ~@3",
  G: "[[g4,eb5]@25 ~@7]/2", H: "[eb5,g5]@15 ~", I: "[d6,f6]@3 ~ [d6,f6] ~ [d6,f6]@5 ~ [c6,eb6]@3 ~",
  J: "[c6,eb6]@3 ~ [bb5,d6] ~ [bb5,d6]@9 ~", K: "[c6,eb6]@3 ~ [c6,eb6] ~ [c6,eb6]@5 ~ [bb5,d6]@3 ~",
  L: "[ab5,c6]@3 ~ [g5,bb5] ~ [g5,bb5]@7 ~@3", M: "[d5,f5]@7 ~",
  N: "[c5,ab5]@3 ~ [c5,ab5] ~ [c5,ab5]@3 ~ [bb4,g5]@2 [ab4,f5]@4", O: "[g4,eb5]",
  P: "[c5,ab5]@3 ~ [c5,ab5] ~ [c5,ab5]@3 ~ [bb4,g5]@2 [ab4,f5]@3 ~, ~@12 gb5 ~@3", Q: "[g4,eb5]@11 ~@5",
  R: "[c6,eb6]@3 ~ [bb5,d6] ~ [bb5,d6]@8 ~@2", S: "[c5,ab5]@3 ~ [c5,ab5] ~ [c5,ab5]@3 ~ [bb4,g5] ~ [ab4,f5]@3 ~",
  T: "[g4,eb5]@15 ~", U: "[eb5,g5]@3 ~ [g5,bb5]@2 [ab5,c6]@3 ~ [ab5,c6] ~ [g5,bb5]@3 ~",
  V: "[ab5,c6]@3 ~ [g5,bb5] ~ [g5,bb5]@9 ~", W: "[g4,eb5]@13 ~@3, db5 ~@15",
  X: "[c5,ab5]@3 ~ [c5,ab5] ~ [c5,ab5]@3 ~ [bb4,g5]@2 [ab4,f5]@2 ~@2", Y: "[[g4,eb5]@23 ~@9]/2",
})).s("gm_acoustic_guitar_steel").gain(0.4).pan(0.7)

// chords · pizzicato strings · "PIZZICATO"
const pizzicato_strings = note(`<
  ~@2 A B C D A E A@4 F A F A C@2 G H A@2 C@2 A I A J C K C L A J C M A@4 F A F A C N@5 C@2 A O A J C P C Q A J C R A S
  A S C T C Q A S C U A V W@2 A@2 C@2 A I A S C T X Q A S C Y A Z A Z C T C Q AA S C@2 A AB ~@8
>`.pickRestart({
  A: "~@2 [g4,bb4,eb5] ~@5 [g4,bb4,eb5] ~@3 [g4,bb4,eb5] ~ [g4,bb4,eb5] ~", // Eb
  B: "~@2 [g4,bb4,eb5] ~@5 [ab4,c5,eb5] ~ [ab4,c5,eb5] ~ [g4,bb4,eb5] ~@3", // Eb Ab Eb
  C: "~@2 [f4,bb4,d5] ~@5 [f4,bb4,d5] ~@3 [f4,bb4,d5] ~ [f4,bb4,d5] ~", // Bb
  D: "~@2 f5@2 ~@4 [c5,eb5] ~@3 [ab4,c5] ~ [ab4,c5] ~, ~@2 d5 ~@13", // Cm Ab
  E: "~@2 [f4,bb4,d5] ~@5 [f4,bb4,d5] ~@3 [f4,ab4,bb4,d5] ~ [f4,ab4,bb4,d5] ~", // Bb Bb7
  F: "~@2 [ab4,c5,eb5] ~@5 [ab4,c5,eb5] ~@3 [g4,bb4,eb5] ~ [g4,bb4,eb5] ~", // Ab Eb
  G: "~@2 [eb4,ab4,c5] ~@5 [eb4,bb4,d5] ~@3 [ab4,c5,eb5] ~ [ab4,c5,eb5] ~", // Ab Ebmaj7 Ab
  H: "~@2 [c5,eb5] ~@5 [bb4,d5] ~@3 [ab4,c5] ~ [ab4,c5] ~", I: "[g4,bb4,eb5] ~@15",
  J: "~@2 [g4,bb4,eb5] ~@5 [ab4,c5,eb5] ~@3 [g4,bb4,eb5] ~ [g4,bb4,eb5] ~", // Eb Ab Eb
  K: "~@2 [d5,f5] ~@5 [f4,d5,f5] ~@3 [f4,c5,eb5] ~ [f4,c5,eb5] ~", // Dm F7
  L: "~@2 [c5,eb5] ~@5 [ab4,c5,eb5] ~@3 [bb4,d5] ~ [ab4,c5] ~", // Cm Ab Bb Ab
  M: "~@2 [c5,ab5] ~@5 [c5,eb5] ~@3 [bb4,g5] ~@3, ~@4 ab5 ~@3", // Fm Cm Eb
  N: "[~@2 [f4,bb4,d5] ~@5 [f4,bb4,d5] ~@5 [f4,bb4,d5] ~@3 [ab4,c5] ~@5 [bb4,d5] ~@3 [c5,eb5] ~ [c5,eb5] ~@3 [c5,eb5] ~@5 [bb4,d5] ~@3 [ab4,c5] ~ [ab4,c5] ~@3 [g4,bb4,eb5] ~@5 [g4,bb4,eb5] ~@3 [g4,bb4,eb5] ~ [g4,bb4,eb5] ~@3 [g4,bb4,eb5] ~@5 [g4,bb4,eb5] ~@3 [g4,bb4,eb5] ~ [g4,bb4,eb5] ~, ~@6 [f4,bb4,d5] ~@33, ~@13 c-1@66 ~]/5", // Bb Ab Bb Cm Bb Ab Eb Bb
  O: "[g4,bb4,db5,eb5] ~@15", P: "~@2 [f4,bb4,d5] ~@3 [f4,bb4,d5] ~@5 [f4,c5,eb5] ~@3",
  Q: "~@2 [ab4,c5,eb5] ~@5 [ab4,c5,eb5] ~@3 [bb4,d5] ~ [ab4,c5] ~", // Ab Bb Ab
  R: "~@2 [c5,ab5] ~@5 [c5,ab5] ~ [bb4,g5] ~ [ab4,f5] ~@3", // Fm Eb Db
  S: "~@2 [g4,bb4,eb5] ~@3 [ab4,c5,eb5] ~@3 [ab4,c5,eb5] ~ [g4,bb4,eb5] ~@3", // Eb Ab Eb
  T: "~@2 [f4,d5,f5] ~@5 [f4,d5,f5] ~@3 [f4,c5,eb5] ~ [f4,c5,eb5] ~", // Dm F7
  U: "~@2 [c5,ab5] ~@3 [c5,ab5] ~@3 [bb4,g5] ~ [ab4,f5] ~@3", // Fm Eb Db
  V: "~@2 [g4,bb4,eb5] ~@5 [g4,bb4,eb5] ~@3 [g4,bb4,eb5] ~@3", // Eb
  W: "~@2 [ab4,c5,eb5] ~@5 [ab4,c5,eb5] ~@3 [ab4,c5,eb5] ~ [ab4,c5,eb5] ~", // Ab
  X: "~@4 [f4,bb4,d5] ~ [f4,bb4,d5] ~@5 [f4,bb4,d5] ~@3", // Bb
  Y: "~@2 [f4,d5,f5] ~@5 [f4,bb4,d5] ~@3 [f4,bb4,d5] ~ [f4,bb4,d5] ~", // Dm Bb
  Z: "~@2 [g4,bb4,eb5] ~@3 [ab4,c5,eb5] ~@5 [g4,bb4,eb5] ~ [g4,bb4,eb5] ~", // Eb Ab Eb
  AA: "~@2 [g4,bb4,eb5] ~@3 [g4,bb4,eb5] ~@5 [g4,bb4,eb5] ~ [g4,bb4,eb5] ~", AB: "~@4 [g4,bb4,eb5] ~@11",
})).s("gm_pizzicato_strings").gain(0.35).pan(0.3)

// other · marimba
const marimba = note("<A B ~@7 C D ~@25 E F ~@26 E F ~@10 E F ~@18 E D ~@10 E F ~@8>".pickRestart({
  A: "eb3 g3 bb3 eb4 g3 bb3 eb4 g4 bb3 eb4 g4 bb4 eb4 g4 bb4 eb5", B: "eb4 ~@15",
  C: "~@6 g4 ab4 ~ ab4 g4 f4 g4 f4 eb4 d4, ~@4 bb4 ~@3", D: "eb4 ~@7", E: "~@6 bb3!2 g4@2 ab4@2 f4@2 g4@2",
  F: "eb4 ~@3",
})).s("gm_marimba").gain(0.4).pan(0.4)

// chords · synth strings 1 · "SYN STRING"
const synth_strings_1 = note(`<
  A@2 B C D E F G H@2 I@2 J B J K L@2 M N O@2 P@2 Q R B S T@3 U@2 V W X H@2 Y@2 Z@2 J AA AB@2 M N AC@2 P@2 Q AD B AE
  AF@3 AG AH AI@2 X Q AJ B AK AL AM@2 AN AO AP AQ X H@2 AR@2 AS@2 AT AU AV@2 AW@2 AX@3 AY@2 AP AQ AZ BA AE B BB BC@3
  BD@2 BE BF BG BH@2 ~@8
>`.pickRestart({
  A: "[[g3,bb3,eb4]@9 ~ [g4,bb4] [ab4,c5]@3 [g4,bb4]@2, ~@20 eb4@11 ~]/2", B: "[bb3,eb4,g4]@15 ~",
  C: "[eb4,g4]@3 ~ [g4,bb4]@2 [ab4,c5]@6 [g4,bb4]@3 ~, ~@4 eb4 ~ eb4@9 ~", D: "[d4,bb4,d5], f4@7 ~",
  E: "[d5,f5]@5 ~ [c5,eb5]@6 [ab4,c5]@3 ~, ab4@11 ~@5", F: "[eb4,g4,bb4]@15 ~", G: "[d4,bb4]@5 ~ [c4,ab4]@6 [ab3,f4]@4",
  H: "[[g3,bb3,eb4]@15 ~]/2", // Eb
  I: "[[eb4,g4]@6 [f4,ab4]@6 [g4,bb4]@3 ~ [g4,bb4]@5 ~ [eb4,g4]@5 ~ [eb4,g4,bb4]@3 ~, bb3]/2", // Eb Fm Gm Eb
  J: "[ab4,c5]@3 [g4,bb4], eb4@15 ~", K: "[bb3,eb4,g4] ~ [bb3,eb4,g4]@4 [d4,f4]@6 [c4,eb4]@3 ~",
  L: "[[d4,f4]@29 ~@3, bb3@31 ~]/2", M: "[ab4,c5]@3 [bb4,d5]@3 [c5,eb5]@2", N: "[c5,eb5]@6 [bb4,d5]@6 [ab4,c5]@3 ~",
  O: "[[ab4,c5]@5 ~ bb4@6 [ab4,c5]@3 ~ [g4,bb4]@15 ~, eb4@15 ~, ~@3 g4@2 ~@11]/2", // Ab Gm
  P: "[[ab3,f4]@3 [bb3,g4]@3 [c4,ab4]@5 [bb3,g4]@3 [ab3,f4]@2]/2", Q: "[g3,bb3,eb4]",
  R: "g4@3 ~ [g4,bb4]@2 [ab4,c5]@6 [g4,bb4]@4, eb4@15 ~", // Gm Ab Gm
  S: "[eb4,g4]@3 ~ [g4,bb4]@2 ~@6 [g4,bb4]@3 ~, bb3@3 [ab4,c5]@3 ~@2, ~@10 eb4@5 ~", // Eb Gm Ab
  T: "[[bb4,d5]@14 ~@2 [d5,f5]@3 ~ f5@2 [d5,f5]@5 ~ [c5,eb5]@3 ~ [c5,eb5]@3 ~ d5@2 d5@10, f4@47 ~, d4@18 ~@2 d5 ~@15 bb4 ~ bb4@8 ~@2]/3", // Bb Dm Cm
  U: "[[ab4,c5,eb5]@3 ~ [ab4,c5,eb5] ~ [ab4,c5,eb5]@5 ~ [bb4,d5]@3 ~ [ab4,c5]@3 ~ [eb4,g4,bb4] ~ [eb4,g4]@9 ~, eb4@19 ~@3 bb4@7 ~@3]/2", // Ab Bb Ab Eb
  V: "[bb3,g4]@4 [g4,bb4]@2 [ab4,c5]@3 ~ ab4@2 [g4,bb4]@3 ~, eb4@15 ~, ~@10 c5 ~@5", W: "[bb3,d4,f4]",
  X: "[c4,ab4]@5 [bb3,g4] [ab3,f4]@2", // Fm Eb Db
  Y: "[[eb4,g4]@6 [f4,ab4]@6 [g4,bb4]@3 ~ bb4@6 ~@6 bb4@3 ~, bb3, ~@16 g4@15 ~, ~@22 eb4@9 ~]/2", // Eb Fm Gm
  Z: "[[ab4,c5]@12 [bb3,g4]@19 ~, eb4@31 ~, c4@5 ~ bb4@2 ~@8]/2", AA: "[bb3,eb4,g4]@6 [d4,f4]@5 ~ [c4,eb4]@4",
  AB: "[~@16 bb4@15 ~, [bb3,d4], f4@15 ~]/2", AC: "[[ab4,c5]@6 [g4,bb4]@6 [ab4,c5]@4 [g4,bb4]@15 ~, eb4@15 ~]/2",
  AD: "~@2 bb4 [ab4,c5]@3 [g4,bb4]@2, eb4@15 ~, g4@3 ~@5", // Ab Gm
  AE: "[eb4,g4]@3 ~ [eb4,g4,bb4]@2 [ab4,c5]@6 [g4,bb4]@3 ~, bb3@3 eb4@4 ~", // Eb Ab Gm
  AF: "[bb4@15 ~ [d5,f5]@3 ~ f5@2 [d5,f5]@5 ~ [c5,eb5]@3 ~ [c5,eb5]@3 ~ [bb4,d5] ~ [bb4,d5]@9 ~, [d4,f4]@23 ~, d5@13 ~@7 d5 ~@27]/3", // Dm Cm Bb Dm
  AG: "[ab4,c5,eb5]@3 ~ [ab4,c5,eb5] ~ [ab4,c5,eb5]@5 ~ [bb4,d5]@3 ~, eb4@11 ~@5", // Ab Bb
  AH: "[eb4,ab4,c5]@3 ~ [eb4,g4,bb4] ~ [eb4,g4,bb4]@9 ~", // Ab Eb
  AI: "[[eb4,g4]@3 ~ [g4,bb4]@2 [eb4,ab4,c5]@3 ~ [ab4,c5]@2 [eb4,g4]@4 [bb3,d4,f4]@15 ~, bb3@3 ~@13, ~@4 eb4 ~@5 eb4 ~ bb4@19 ~]/2", // Eb Gm Ab Eb Bb
  AJ: "[eb4,g4]@3 ~ [g4,bb4]@2 [ab4,c5]@5 ~ [g4,bb4]@3 ~, ~@4 eb4 ~ eb4@9 ~", // Eb Gm Ab Gm
  AK: "[eb4,g4]@3 ~ [eb4,bb4] ~ [ab4,c5]@5 ~ [g4,bb4]@3 ~, bb3@4 g4@2 eb4@9 ~", AL: "[d4,f4,bb4,d5]@15 ~",
  AM: "[[d5,f5]@3 ~ [d5,f5]@2 [d5,f5]@5 ~ [c5,eb5]@3 ~ [c5,eb5]@3 ~ d5@2 d5@10, f4@31 ~, ~@12 d4@17 ~@3, ~@20 bb4 ~ bb4@8 ~@2]/2", // Dm Cm
  AN: "[ab4,c5,eb5]@3 ~ [ab4,c5,eb5] ~ [ab4,c5,eb5]@5 ~ [eb4,bb4,d5]@3 ~, eb4@11 ~@5", // Ab Ebmaj7
  AO: "[eb4,ab4,c5]@3 ~ [eb4,g4,bb4]@11 ~", // Ab Eb
  AP: "[eb4,g4]@3 ~ [g4,bb4]@2 [eb4,ab4,c5]@5 ~ [eb4,g4,bb4]@3 ~, bb3@3 ~@5, ~@4 eb4 ~@11", AQ: "[bb3,d4,f4,bb4]@15 ~",
  AR: "[[eb4,ab4,c5]@3 ~ [ab4,c5]@2 [g4,b4]@2 [ab4,c5]@3 ~ c5@2 [bb4,d5] ~ [c5,eb5]@4 d5@2 [ab4,c5]@9 ~, ~@4 eb4@27 ~, ~@12 ab4 ~@7 bb4 ~@11]/2", // Ab G Ab Bb Cm Ab
  AS: "[[g4,bb4]@3 ~ g4@2 [gb4,a4]@2 [g4,bb4]@3 ~ [g4,bb4]@2 [ab4,c5]@2 [bb4,d5]@4 [ab4,c5]@2 g4@9 ~, eb4, ~@4 bb4 ~@17 bb4@7 ~@3]/2", // Gm Gbm Gm Ab Bb Ab
  AT: "[f4,ab4]@3 ~ [f4,ab4]@2 [e4,g4]@2 [f4,ab4]@3 ~ [f4,ab4]@2 [g4,bb4] ~, bb3", // Fm Em Fm Gm
  AU: "[bb3,ab4,c5]@2 ~@2 [bb3,ab4,c5] ~ [ab4,c5]@2 ~@2 [c4,g4,bb4] ~ [d4,f4,ab4]@3 ~, ~@3 bb3@2 ~@3", // Fm Ab C7 Ddim
  AV: "[[eb4,g4]@19 ~ [g4,bb4]@2 [ab4,c5]@5 ~ [g4,bb4]@3 ~, bb3 ~@7]/2", // Eb Gm Ab Gm
  AW: "[[bb3,eb4,g4]@20 [g4,bb4]@2 [ab4,c5]@5 ~ [g4,bb4]@3 ~, ~@20 eb4 ~ eb4@8 ~@2]/2", // Eb Gm Ab Gm
  AX: "[[bb4,d5]@15 ~ [d5,f5]@3 ~ f5@2 [d5,f5]@5 ~ [c5,eb5]@3 ~ [c5,eb5]@3 ~ [bb4,d5] ~ [bb4,d5]@9 ~, f4, d4@11 ~@5, ~@20 d5 ~@27]/3", // Bb Dm Cm Bb
  AY: "[[ab4,c5,eb5]@11 ~ [bb4,d5]@3 ~ [ab4,c5]@3 ~ [eb4,g4,bb4] ~ [g4,bb4]@9 ~, eb4@19 ~@3 eb4@7 ~@3]/2", // Ab Bb Ab Eb Gm
  AZ: "[c4,ab4]@10 [bb3,g4]@2 [ab3,f4]@3 ~", BA: "[g3,bb3,eb4]@15 ~",
  BB: "[bb3,eb4,g4]@4 [eb4,bb4] ~ [eb4,ab4,c5]@6 [eb4,g4,bb4]@3 ~, ~@2 g4 ~@5", // Eb Eb5 Ab Eb
  BC: "[[bb4,d5]@15 ~ [d5,f5]@3 ~ f5@2 [d5,f5]@5 ~ [c5,eb5]@3 ~ [c5,eb5]@3 ~ [bb4,d5] ~ [bb4,d5]@9 ~, f4@47 ~, d4@31 ~@17, ~@20 d5 ~@27]/3", // Bb Dm Cm Bb
  BD: "[[ab4,c5,eb5]@3 ~ [ab4,c5,eb5] ~ [ab4,c5,eb5]@5 ~ [bb4,d5]@3 ~ [ab4,c5]@3 ~ [eb4,g4,bb4] ~ [g4,bb4]@9 ~, eb4@19 ~@3 eb4@7 ~@3]/2", // Ab Bb Ab Eb Gm
  BE: "[eb4,g4]@3 ~ [eb4,g4] ~ [eb4,ab4,c5]@5 ~ [eb4,g4,bb4]@2 ~@2, bb3@2 bb4 ~@5", BF: "[d4,f4,bb4]@15 ~",
  BG: "[c4,ab4]@2 ~@2 [c4,ab4] ~ [c4,ab4]@3 ~ [bb3,g4] ~ [ab3,f4]@3 ~", BH: "[~@4 bb3@3 ~, [g3,eb4]@29 ~@3]/2",
})).s("gm_synth_strings_1").gain(0.35)

// drums · kick
const kick = s("bd").struct("<A B A@23 B A@27 B A@31 B A@23 C ~@8>".pickRestart({
  A: "x!4", B: "x", C: "x!2 ~@2",
})).gain(0.8)

// drums · snare
const snare = s("sd").struct("<~@2 A@11 B A@11 C A@27 C A@31 C A@23 ~@9>".pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@7 x!2 ~@2", C: "~@3 x",
})).gain(0.8)

// drums · hihat
const hihat = s("hh").struct("<A B A@23 B A@27 B A@31 B A@20 C A@2 D ~@8>".pickRestart({
  A: "x!8", B: "x", C: "x ~ x ~ x ~ x ~ x!3 ~ x ~ x ~", D: "x!2 ~@2",
})).gain(0.48)

// drums · crash
const crash = s("cr").struct(`<
  ~@2 A ~@7 A ~@14 A@2 ~@6 A ~@4 A ~@14 A@2 ~@6 A ~@3 A ~@7 A ~@4 A ~@6 A@2 ~@6 A ~@3 A ~@7 A ~@3 B ~@8
>`.pickRestart({
  A: "x", B: "x!2 ~@2",
})).gain(0.56)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~@2 A B C D C E A F G@15 ~ H I H@2 J E C K L A@2 M G@15 ~ K N O H E H N A@2 P H@2 E Q C E H@2 R K D K N S T@6 U V W O
  D K D K D K C X K S Y S Z AA C S C J C AB Y AC ~@8
>`.pickRestart({
  A: "x ~ x ~ x ~ x!3 ~ x ~ x ~ x ~", B: "x ~ x!3 ~ x ~ x ~ x ~ x!4", C: "x ~ x ~ x ~ x ~ x ~ x!3 ~ x!2",
  D: "x ~ x ~ x ~ x ~ x ~ x!5 ~", E: "x ~ x ~ x ~ x ~ x ~ x ~ x!4", F: "x!5 ~ x ~", G: "~@3 x",
  H: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!2", I: "x ~ x ~ x ~ x ~ x!5 ~ x!2", J: "x!3 ~ x ~ x ~ x ~ x ~ x ~ x!2",
  K: "x ~ x ~ x ~ x ~ x ~ x!3 ~ x ~", L: "x ~ x ~ x ~ x!3 ~ x ~ x!4", M: "x ~ x ~ x ~ x!3 ~ x ~ x ~@3",
  N: "x ~ x ~ x ~ x ~ x ~ x!6", O: "x ~ x ~ x ~ x ~ x!3 ~ x ~ x!2", P: "x ~ x ~ x ~ x!3 ~ x!3 ~ x!2",
  Q: "x ~ x ~ x ~ x!3 ~ x ~ x!3 ~", R: "x ~ x ~ x ~ x ~ x!8", S: "x!8", T: "~ x ~ x ~ x ~ x",
  U: "~@2 x ~@3 x ~@3 x!3 ~ x!2", V: "x", W: "~@2 x ~ x ~ x ~ x ~ x!3 ~ x ~", X: "x!3 ~ x ~ x ~ x ~ x!3 ~ x ~",
  Y: "x ~ x ~ x ~ x!3 ~ x ~ x ~ x!2", Z: "x ~ x ~ x ~ x!3 ~ x!6", AA: "x!5 ~ x!2", AB: "x!3 ~ x ~ x ~ x ~ x ~ x ~ x ~",
  AC: "x!2 ~@2",
// … 22 more lines

More by Brunner & Brunner