Strudelify
Wann fangt denn endlich d' Musi an cover art

Volksmusik-Party mit Marianne & Michael

Wann fangt denn endlich d' Musi an

Marianne & Michael

KeyE♭ majorTempo135 bpm
0:00/0:00
// Wann fangt denn endlich d' Musi an — Marianne & Michael
// 135 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 7 "TUBA" tuba (copy of ch 2 "FINGERDBAS" electric bass finger)
// note: Full arrangement: all 103 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(135/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.

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  A B C D E B F G H I J@2 K@3 L J M J N O P Q R S T B@2 U S@3 V W B@2 X Y Z U AA AB S AC H I J@2 K@3 L J M J N O P Q AD
  AE AF B@2 U S@3 V W B@2 X Y Z U AA AG AH AI@2 AJ AK@3 AL AM AI@2 AN AO AP AJ AQ AI AP AJ AR@2 AS AT AU AV
>`.pickRestart({
  A: "~@6 bb1 ~", B: "eb2 ~ bb1 ~ eb2 ~ bb1 ~", C: "eb2@2 ~@2 bb1@2 ~@2 eb2 ~ eb2 ~ d2 ~ c2 ~",
  D: "bb1@2 ~@2 f1@2 ~@2 bb1@2 ~@2 c2 ~ d2 ~", E: "eb2@2 ~@2 bb1@2 ~@2 eb2 ~ bb1 ~ c2 ~ d2 ~",
  F: "eb2@2 ~@2 bb1@2 ~@2 eb2 ~ eb2@2 d2 ~ c2 ~", G: "bb1@3 ~ f1@3 ~ bb1@3 ~ c2 ~ d2 ~",
  H: "eb2@3 ~ bb1@3 ~ eb2@3 ~ bb1@3 ~", I: "eb2 ~@9 bb1 ~ c2 ~ d2 ~", J: "eb2@3 ~ bb1@3 ~ eb2@3 ~ g2@2 bb2 ~",
  K: "bb1@3 ~ f1@3 ~ bb1@3 ~ d2@2 f2 ~", L: "bb1@3 ~ f1@3 ~ bb1@3 ~ c2@2 d2 ~", M: "eb2@3 ~ bb1@3 ~ c2@3 ~ d2@3 ~",
  N: "eb2@3 ~ bb1@3 ~ eb2@3 ~ bb1@2 eb2 ~", O: "ab1@3 ~ eb2@3 ~ ab1@3 ~ c2@2 eb2 ~",
  P: "ab1@3 ~ eb2@3 ~ ab1@3 ~ gb1@3 ~", Q: "f1@3 ~ c2@3 ~ f2@3 ~ c2@2 eb2 ~", R: "f2@3 ~ c2@3 ~ f2@3 ~ c2@3 ~",
  S: "bb1 ~ f1 ~ bb1 ~ f1 ~", T: "bb1@2 ~@8 bb1 ~ c2 ~ d2 ~", U: "eb2@2 ~@2 bb1@2 ~@2 eb2@2 ~@2 d2 ~ c2 ~",
  V: "bb1@2 ~@2 f1@2 ~@2 bb1 ~ bb1@2 c2 ~ d2 ~", W: "eb2 ~ d2 ~ c2 ~ bb1 ~",
  X: "eb2@2 ~@2 bb1@2 ~@2 eb2@2 ~@2 f1 ~ g1 ~", Y: "ab1 ~ eb2 ~ ab1 ~ eb2 ~",
  Z: "ab1@2 ~@2 eb2@2 ~@2 ab2@3 ~ eb2 ~ c2 ~", AA: "bb1@2 ~@2 f1@2 ~@2 bb1 ~ bb1 ~ c2 ~ d2 ~",
  AB: "eb2@2 ~@2 bb1@2 ~@2 eb2@3 ~ d2 ~ c2 ~", AC: "bb1@2 ~@2 f1@2 ~@2 bb1@3 ~ c2 ~ d2 ~",
  AD: "f1@3 ~ f1@3 ~ f1@3 ~ g1@3 ~", AE: "bb1 ~ g2 ~ f2 ~ d2 ~", AF: "bb1@2 ~@10 bb1@3 ~",
  AG: "eb2@3 ~ eb2@3 ~ d2@3 ~ db2@3 ~", AH: "b1@7 ~ b1@7 ~", AI: "e2 ~ b1 ~ e2 ~ b1 ~",
  AJ: "e2@2 ~@2 b1@2 ~@2 e2@2 ~@2 eb2 ~ db2 ~", AK: "b1 ~ gb1 ~ b1 ~ gb1 ~",
  AL: "b1@2 ~@2 gb1@2 ~@2 b1 ~ b1@2 db2 ~ eb2 ~", AM: "e2 ~ eb2 ~ db2 ~ b1 ~",
  AN: "e2@2 ~@2 b1@2 ~@2 e2@2 ~@2 gb1 ~ ab1 ~", AO: "a1 ~ e2 ~ a1 ~ e2 ~", AP: "a1@2 ~@2 e2@2 ~@2 a2@3 ~ e2 ~ db2 ~",
  AQ: "b1@2 ~@2 gb1@2 ~@2 b1 ~ b1 ~ db2 ~ eb2 ~", AR: "[b1 ~@3 b1@6 ~@2 b1@6 ~@2 b1@4 db2@4 eb2@2 ~@2]/2",
  AS: "e2@3 ~ b1@3 ~ e2@3 ~ b1@3 ~", AT: "e2@3 ~ b1@3 ~ e2@3 ~ eb2 ~ db2 ~", AU: "b1@3 ~ b1@3 ~ db2@3 ~ eb2@3 ~",
  AV: "e2@3 ~ b1@3 ~ e2 ~@7",
})).s("gm_electric_bass_finger").gain(0.42)

// chords · accordion
const accordion = note(`<
  ~@3 A B ~@2 C D E F G H I J@2 K L M@2 N O P Q R S T U V W X Y Z T AA AB AC AD AE AA AF AG AH AI D AJ F G H I J@2 K L
  AK@2 N O AL Q R S T U V W X Y Z T AA AB AC AD AE AA AF AM ~ AN AO AP AQ AR AS AT AN AU AV AW AX AY AU AZ BA AY AU BB
  BC AN AU AZ BD
>`.pickRestart({
  A: "[d5,bb5] ~ [d5,bb5]@4 [db5,a5]@2 [c5,ab5]@7 ~", B: "[c5,ab5] ~ [c5,ab5]@4 [a4,gb5]@2 [bb4,g5]@5 ~@3",
  C: "[d5,bb5] ~ [d5,bb5]@4 [db5,a5]@2 [c5,ab5]@4 [ab4,d5]@4", D: "[g4,eb5]",
  E: "~@2 [g4,bb4] ~ [g4,bb4] ~ [g4,bb4] ~ [bb4,g5]@4 [ab4,f5]@4", F: "[g4,bb4,eb5]",
  G: "~@2 [g4,bb4]@2 [g4,bb4]@2 [g4,bb4] ~ [bb4,g5]@4 [g4,eb5]@4", H: "[ab4,d5,f5]",
  I: "~@2 bb4 ~ bb4 ~@7 f5@4, ~@6 bb4@9 ~, ~@8 d5@7 ~",
  J: "[[c5,ab5,c6]@5 ~ [ab5,c6] ~ [c5,ab5,c6]@10 [c5,ab5,c6]@2 [b4,g5,b5]@2 [c5,ab5,c6]@2 [d5,bb5,d6]@4 [ab4,f5,ab5]@4, ~@3 c5 ~@12]/2", // Fm Ab Fm Em Fm Gm Db
  K: "[bb4,g5,bb5]", L: "~@2 bb4@2 bb4@2 bb4 ~ [g5,bb5]@4 [f5,ab5]@4",
  M: "[[eb5,g5]@18 eb5@2 eb5 ~ eb5 ~ [eb5,c6]@4 [db5,bb5]@4]/2", N: "[c5,ab5]",
  O: "~@2 [c5,ab5] ~ [c5,ab5] ~ [c5,ab5]@2 [b4,g5]@4 [bb4,gb5]@4", // Fm Em Ebm
  P: "[a4,c5,f5]@5 ~ [c5,f5] ~ [a4,c5,f5]@6 [a4,c5,f5] ~, ~@3 a4 ~@4", // F F5 F
  Q: "[eb5,g5]@4 [eb5,g5]@4 [d5,f5]@4 [c5,eb5]@3 ~", R: "[d5,bb5]@15 ~", S: "[d5,f5,bb5] ~@15",
  T: "~@2 [bb4,eb5,g5] ~@3 [bb4,eb5,g5] ~@3 [bb4,eb5,g5] ~@3 [bb4,eb5,g5] ~", // Eb
  U: "~@2 [bb4,eb5,g5]@3 ~ [bb4,eb5,g5] ~@3 [bb4,eb5,g5]!2 [bb4,eb5] ~ [bb4,eb5,g5] ~", // Eb Eb5 Eb
  V: "~@2 [bb4,eb5,g5] ~@3 [bb4,eb5,g5] ~@3 [bb4,eb5,g5] ~@3 [bb4,eb5]@2, ~@14 g5 ~", // Eb Eb5
  W: "[bb4,d5,ab5] ~ [bb4,d5,ab5] ~@3 [bb4,d5,ab5] ~@3 [bb4,d5,ab5]@3 ~ [bb4,d5,ab5] ~", // Bb7
  X: "~@2 [bb4,d5,f5] ~@3 [bb4,d5,f5] ~@3 [bb4,d5,f5] ~@3 [bb4,d5,f5] ~", // Bb
  Y: "~@2 [d5,f5,bb5]@3 ~ [d5,f5,bb5] ~@3 [d5,f5,bb5] ~@3 [d5,f5,bb5] ~", // Bb
  Z: "~@2 [bb4,d5,f5] ~@3 [bb4,d5,f5] ~@3 [bb4,d5,f5]@4 [bb4,d5,f5] ~", // Bb
  AA: "~@2 [bb4,eb5,g5]@3 ~ [bb4,eb5,g5] ~@3 [bb4,eb5,g5] ~@3 [bb4,eb5,g5] ~", // Eb
  AB: "~@2 [bb4,eb5,g5] ~@3 [bb4,eb5,g5] ~@3 [bb4,eb5,g5] ~@3 [bb4,eb5,g5]@2", // Eb
  AC: "~@2 [bb4,db5,eb5,g5] ~@3 [bb4,db5,eb5,g5] ~@3 [bb4,db5,eb5,g5] ~@3 [bb4,db5,eb5,g5] ~", // Eb7
  AD: "~@2 [c5,eb5,ab5]@3 ~ [c5,eb5,ab5] ~@3 [c5,eb5,ab5] ~@3 [c5,eb5,ab5] ~", // Ab
  AE: "~@2 [c5,eb5,ab5] ~@3 [c5,eb5,ab5] ~@3 [c5,eb5,ab5] ~@3 [c5,eb5,ab5] ~", // Ab
  AF: "~@2 [bb4,d5,ab5] ~@3 [bb4,d5,ab5] ~@3 [bb4,d5,ab5] ~@3 [bb4,d5,ab5] ~", // Bb7
  AG: "~@2 [bb4,eb5,g5] ~@3 [bb4,eb5,g5] ~@3 [bb4,eb5,g5] ~ eb5@2 g5 ~", // Eb
  AH: "[d5,bb5] ~ [d5,bb5]@4 [db5,a5]@2 [c5,ab5] ~ [c5,ab5]@4 [bb4,g5]@2", // Gm Gbm Fm Eb
  AI: "[ab4,f5]@3 [bb4,g5] [c5,ab5]@2 [ab4,d5]@2", AJ: "~ [g4,bb4]!3 [bb4,g5]@2 [ab4,f5]@2",
  AK: "[[eb5,g5]@18 eb5 ~ eb5 ~ eb5 ~ [eb5,c6]@4 [db5,bb5]@4]/2", // Eb Cm Gb
  AL: "[a4,c5,f5]@5 ~ [a4,c5,f5] ~ [a4,c5,f5]@6 [a4,c5,f5] ~", // F
  AM: "~@2 [bb4,eb5,g5] ~@3 [bb4,eb5,g5] ~@3 [bb4,eb5,g5] ~@5", // Eb
  AN: "~@2 [b4,e5,ab5] ~@3 [b4,e5,ab5] ~@3 [b4,e5,ab5] ~@3 [b4,e5,ab5] ~", // E
  AO: "~@2 [b4,e5,ab5]@3 ~ [b4,e5,ab5] ~@3 [b4,e5,ab5]!2 [b4,e5] ~ [b4,e5,ab5] ~", // E E5 E
  AP: "~@2 [b4,e5,ab5] ~@3 [b4,e5,ab5] ~@3 [b4,e5,ab5] ~@3 [b4,e5]@2, ~@14 ab5 ~", // E E5
  AQ: "[b4,eb5,a5] ~ [b4,eb5,a5] ~@3 [b4,eb5,a5] ~@3 [b4,eb5,a5]@3 ~ [b4,eb5,a5] ~", // B7
  AR: "~@2 [b4,eb5,gb5] ~@3 [b4,eb5,gb5] ~@3 [b4,eb5,gb5] ~@3 [b4,eb5,gb5] ~", // B
  AS: "~@2 [eb5,gb5,b5]@3 ~ [eb5,gb5,b5] ~@3 [eb5,gb5,b5] ~@3 [eb5,gb5,b5] ~", // B
  AT: "~@2 [b4,eb5,gb5] ~@3 [b4,eb5,gb5] ~@3 [b4,eb5,gb5]@4 [b4,eb5,gb5] ~", // B
  AU: "~@2 [b4,e5,ab5]@3 ~ [b4,e5,ab5] ~@3 [b4,e5,ab5] ~@3 [b4,e5,ab5] ~", // E
  AV: "~@2 [b4,e5,ab5] ~@3 [b4,e5,ab5] ~@3 [b4,e5,ab5] ~@3 [b4,e5,ab5]@2", // E
  AW: "~@2 [b4,d5,e5,ab5] ~@3 [b4,d5,e5,ab5] ~@3 [b4,d5,e5,ab5] ~@3 [b4,d5,e5,ab5] ~", // E7
  AX: "~@2 [db5,e5,a5]@3 ~ [db5,e5,a5] ~@3 [db5,e5,a5] ~@3 [db5,e5,a5] ~", // A
  AY: "~@2 [db5,e5,a5] ~@3 [db5,e5,a5] ~@3 [db5,e5,a5] ~@3 [db5,e5,a5] ~", // A
  AZ: "~@2 [b4,eb5,a5] ~@3 [b4,eb5,a5] ~@3 [b4,eb5,a5] ~@3 [b4,eb5,a5] ~", // B7
  BA: "~@2 [b4,e5,ab5] ~@3 [b4,e5,ab5] ~@3 [b4,e5,ab5] ~@5", BB: "~@4 [b4,eb5,gb5]@3 ~@5 [b4,eb5,gb5]@3 ~",
  BC: "~@4 [b4,eb5,gb5]@4 ~@4 [b4,eb5,gb5]@3 ~", BD: "e5@2 gb5 ab5 a5 b5 db6 eb6 e6 ~@7",
})).s("gm_accordion").gain(0.2).pan(0.4)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  A B C D E B F G H ~@24 I J K L M N O P Q R S T ~@24 I J K L M N O P U V W X Y Z AA AB AC AD AE X AF AG AH AI AJ AK AH
  AI AL AM AN AO AP AQ
>`.pickRestart({
  A: "~@12 [bb4,bb5]@3 ~", B: "[c5,c6]@3 ~ [bb4,bb5]@3 ~ [c5,c6]@3 ~ [bb4,bb5]@3 ~",
  C: "[c5,c6]@6 [g4,g5]@2 [g4,g5]@7 ~", D: "[d5,bb5] ~ [d5,bb5]@4 [db5,a5]@2 [c5,ab5]@7 ~",
  E: "[c5,ab5] ~ [c5,ab5]@4 [a4,gb5]@2 [bb4,g5]@3 ~ [bb4,bb5]@3 ~", F: "[c5,c6]@3 [g4,g5] [g4,g5]@4",
  G: "[d5,bb5] ~ [d5,bb5,d6]@4 [db5,a5,db6]@2 [c5,ab5,c6]@4 [ab4,d5,ab5]@4, d6 ~@7", H: "[g4,eb5,g5]",
  I: "~@3 [g5,bb5]", J: "[g5,c6]@4 [g5,bb5]@3 ~ [g5,c6]@3 ~ [g5,bb5]@3 ~",
  K: "[g5,c6]@6 [eb5,g5]@2 [eb5,g5]@5 ~ [g5,bb5]@2", L: "[g5,c6] [g5,bb5] [g5,eb6] [g5,c6]",
  M: "[db5,bb5]@6 [c5,ab5]@2 [c5,ab5]@5 ~ [c5,eb5]@2", N: "[b4,d5]@2 [c5,eb5]@2 [d5,bb5]@3 [c5,ab5]",
  O: "[bb4,g5]@9 ~ [eb5,g5]@2 [d5,gb5]@2 [eb5,g5]@2", P: "[d5,bb5] [c5,ab5] [bb4,g5] [ab4,f5]",
  Q: "[g4,eb5]@9 ~ bb4@2 eb5@2 g5 ~", R: "[d5,bb5] ~ [d5,bb5]@4 [db5,a5]@2 [c5,ab5] ~ [c5,ab5]@4 [bb4,g5]@2",
  S: "[ab4,f5]@3 [bb4,g5] [c5,ab5]@2 [ab4,d5]@2", T: "[g4,eb5]", U: "[g4,eb5]@9 ~ bb4@2 eb5@2 g5@2",
  V: "[eb5,gb5]@7 ~ [ab5,b5]@7 ~", W: "[ab5,db6]@3 ~ [ab5,b5]@3 ~ [ab5,db6]@3 ~ [ab5,b5]@3 ~",
  X: "[ab5,db6]@6 [e5,ab5]@2 [e5,ab5]@5 ~ [ab5,b5]@2", Y: "[ab5,db6]@4 [ab5,b5]@4 [db6,e6]@3 ~ [db6,e6]@3 ~",
  Z: "[db6,e6]@3 [b5,eb6] [b5,eb6]@3 [gb5,a5]", AA: "[f5,ab5]@2 [gb5,a5]@2 [db6,e6]@2 ~ [db6,e6]",
  AB: "[b5,eb6]@9 ~@3 [gb5,a5]@4", AC: "[f5,ab5]@4 [gb5,a5]@4 [a5,db6]@5 ~ [a5,db6]@2", AD: "[ab5,b5]@5 ~ [ab5,b5]@2",
  AE: "[ab5,db6]@4 [ab5,b5]@3 ~ [ab5,db6]@3 ~ [ab5,b5]@3 ~", AF: "[ab5,db6] [ab5,b5] [ab5,e6] [ab5,db6]",
  AG: "[d5,b5]@6 [db5,a5]@2 [db5,a5]@5 ~ [db5,e5]@2", AH: "[c5,eb5]@2 [db5,e5]@2 [eb5,b5]@3 [db5,a5]",
  AI: "[b4,ab5]@9 ~ [e5,ab5]@2 [eb5,g5]@2 [e5,ab5]@2", AJ: "[eb5,b5] [db5,a5] [b4,ab5] [a4,gb5]",
  AK: "[ab4,e5]@11 ~ [ab4,e5]@4", AL: "[eb5,b5]@7 ~ [db5,a5]@7 ~", AM: "[b4,ab5]@7 ~ [a4,gb5]@7 ~",
  AN: "[db5,db6]@3 ~ [b4,b5]@3 ~ [db5,db6]@3 ~ [b4,b5]@3 ~", AO: "[db5,db6]@5 ~ [ab4,ab5] ~ [ab4,ab5]@6 ~@2",
  AP: "[eb5,b5] ~ [eb5,b5]@4 [d5,bb5]@2 [db5,a5]@4 [a4,gb5]@4", AQ: "[ab4,e5]@7 ~ [e5,e6] ~@7",
})).s("gm_string_ensemble_1").gain(0.24).pan(0.4)

// chords · synth strings 1 · "SYN STR 1"
const synth_strings_1 = note(`<
  ~ A@2 B C A@2 B C ~ A@2 D@4 A@2 E@2 F@2 G@2 H@2 I@3 J@4 C K@3 L@2 C M C D@2 N@2 A@2 D@4 A@2 E@2 F@2 G@2 H@2 I@3 J@4 C
  K@3 L@2 C M C O P@3 Q@4 R S@3 T@2 R U R T R V@2 W@2 X Y
>`.pickRestart({
  A: "[bb3,eb4,g4]/2", B: "[bb3,d4,ab4]", C: "[bb3,eb4,g4]", D: "[bb3,d4,ab4]/2", E: "[~ db4, [bb3,eb4,g4]]/2",
  F: "[[c4,eb4,ab4]@9 ~ [c4,eb4,ab4]@2 [b3,d4,g4]@2 [bb3,db4,gb4]@2]/2", G: "[a3,c4,f4]/2",
  H: "[[bb3,d4,f4]@19 ~@13]/2", I: "[bb3,eb4,g4]/3", J: "[bb3,d4,f4]/4", K: "[~@2 db4, [bb3,eb4,g4]]/3",
  L: "[c4,eb4,ab4]", M: "[bb3,d4,f4]", N: "[[bb3,eb4,g4]@19 ~@13]/2", O: "gb4 ab4, [b3,eb4]", P: "[b3,e4,ab4]/3",
  Q: "[b3,eb4,gb4]/4", R: "[b3,e4,ab4]", S: "[~@2 d4, [b3,e4,ab4]]/3", T: "[db4,e4,a4]", U: "[b3,eb4,gb4]",
  V: "[b3,eb4,gb4]/2", W: "[b3,e4,ab4]/2", X: "[b3,eb4,a4]", Y: "[b3,e4,ab4]@7 ~ [b3,e4,ab4] ~@7",
})).s("gm_synth_strings_1").gain(0.13)

// chords · synth bass 1 · "SYN BASS 1"
const synth_bass_1 = note(`<
  ~ A B C B A B C B D A@2 C E C E B A B F G H I@2 J K A@3 E@4 A@3 F G@2 B C B C@2 B D A@2 C E C E B A B F G H I@2 J K
  A@3 E@4 A@3 F G@2 B C B L M@3 N@4 M@3 O P@2 Q R Q P Q S T M Q U V
>`.pickRestart({
  A: "~@2 [bb3,eb4,g4] ~@3 [bb3,eb4,g4] ~@3 [bb3,eb4,g4] ~@3 [bb3,eb4,g4] ~", // Eb
  B: "~@2 [bb3,eb4,g4]@3 ~ [bb3,eb4,g4] ~@3 [bb3,eb4,g4] ~@3 [bb3,eb4,g4] ~", // Eb
  C: "~@2 [bb3,d4,ab4]@3 ~ [bb3,d4,ab4] ~@3 [bb3,d4,ab4] ~@3 [bb3,d4,ab4] ~", D: "[bb3,eb4,g4] ~@15",
  E: "~@2 [bb3,d4,ab4] ~@3 [bb3,d4,ab4] ~@3 [bb3,d4,ab4] ~@3 [bb3,d4,ab4] ~", // Bb7
  F: "~@2 [bb3,db4,eb4,g4]@3 ~ [bb3,db4,eb4,g4] ~@3 [bb3,db4,eb4,g4] ~@3 [bb3,db4,eb4,g4] ~", // Eb7
  G: "~@2 [c4,eb4,ab4]@3 ~ [c4,eb4,ab4] ~@3 [c4,eb4,ab4] ~@3 [c4,eb4,ab4] ~", // Ab
  H: "~@2 [c4,eb4,ab4]@3 ~ [c4,eb4,ab4] ~@3 [b3,d4,g4] ~@3 [bb3,db4,gb4] ~", // Ab G Gb
  I: "~@2 [c4,f4,a4]@3 ~ [c4,f4,a4] ~@3 [c4,f4,a4] ~@3 [c4,f4,a4] ~", // F
  J: "~@2 [d4,f4,bb4]@3 ~ [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~", K: "[d4,f4,bb4] ~@15",
  L: "[bb3,eb4,g4] ~@7 [b3,eb4,ab4]@6 ~@2, [b3,gb4]@3 ~@5", // Eb Abm B5
  M: "~@2 [b3,e4,ab4] ~@3 [b3,e4,ab4] ~@3 [b3,e4,ab4] ~@3 [b3,e4,ab4] ~", // E
  N: "~@2 [b3,eb4,a4] ~@3 [b3,eb4,a4] ~@3 [b3,eb4,a4] ~@3 [b3,eb4,a4] ~", // B7
  O: "~@2 [b3,d4,e4,ab4]@3 ~ [b3,d4,e4,ab4] ~@3 [b3,d4,e4,ab4] ~@3 [b3,d4,e4,ab4] ~", // E7
  P: "~@2 [db4,e4,a4]@3 ~ [db4,e4,a4] ~@3 [db4,e4,a4] ~@3 [db4,e4,a4] ~", // A
  Q: "~@2 [b3,e4,ab4]@3 ~ [b3,e4,ab4] ~@3 [b3,e4,ab4] ~@3 [b3,e4,ab4] ~", // E
  R: "~@2 [b3,eb4,a4]@3 ~ [b3,eb4,a4] ~@3 [b3,eb4,a4] ~@3 [b3,eb4,a4] ~", S: "~@4 [b3,eb4,gb4]@5 ~@3 [b3,eb4,gb4]@4",
  T: "~@4 [b3,eb4,gb4]@6 ~@2 [b3,eb4,gb4] ~@3", U: "~@2 [b3,eb4,a4]@3 ~ [b3,eb4,a4] ~@3 [b3,eb4,a4]@3 ~ [b3,eb4,a4] ~",
  V: "~@2 [b3,e4,ab4]@3 ~ [b3,e4,ab4] ~ [b3,e4,ab4] ~@7", // E
})).s("gm_synth_bass_1").gain(0.17).pan(0.2)

// chords · trumpet
const trumpet = note(`<
  A B C ~ A B C D E@2 ~@8 F@2 G H ~@2 I@2 J K L M N O P Q J R S T ~ U V W ~@12 F@2 G H X@2 I@2 J K L M N O P Q J R S T ~
  Y Z AA AB AC AD AE AF AG AH AI AJ AC AK AL AM ~ AN AO AP ~ AQ AR AS AT ~ AU AV
>`.pickRestart({
  A: "~@12 [bb3,bb4]@3 ~", B: "[c4,c5]@3 ~ [bb3,bb4]@3 ~ [c4,c5]@3 ~ [bb3,bb4]@3 ~",
  C: "[c4,c5]@5 ~ [g3,g4]@2 [g3,g4]@8", D: "[bb4,d5] [bb4,d5]@2 [a4,db5] [ab4,c5]@2 [d4,ab4]@2",
  E: "[[eb4,g4]@9 ~@7]/2", F: "[~@2 [g4,bb4]@2 [gb4,a4]@2 [g4,bb4]@2 [ab4,c5]@4 [g4,bb4]@2 [eb4,g4]@9 ~@9]/2",
  G: "~ [eb4,c5] [d4,b4] [eb4,c5] [c4,ab4]@2 [f4,db5]@2", H: "[eb4,c5] ~",
  I: "[bb4@5 ~ bb4!2 d5@2 bb4@2 d5 ~ f5 ~ bb5@2 ~@10 [g4,bb4]@3 ~, bb2@19 ~@13]/2", // Gm
  J: "[g4,c5]@3 ~ [g4,bb4]@3 ~ [g4,c5]@3 ~ [g4,bb4]@3 ~", K: "[g4,c5]@5 ~ [eb4,g4] ~ [eb4,g4]@5 ~ [g4,bb4]@2",
  L: "[g4,c5]@4 [g4,bb4]@4 [c5,eb5]@2 ~@2 [c5,eb5]@3 ~", M: "[c5,eb5]@6 [bb4,d5] ~ [bb4,d5]@5 ~ [f4,ab4]@2",
  N: "[e4,g4]@4 [f4,ab4]@4 [c5,eb5]@3 ~@3 [c5,eb5]@2", O: "[bb4,d5]@9 ~@3 [f4,ab4]@4",
  P: "[e4,g4]@4 [f4,ab4]@4 [ab4,c5]@5 ~ [ab4,c5]@2", Q: "[g4,bb4]@10 ~@2 [g4,bb4]@3 ~",
  R: "[g4,c5]@5 ~ [eb4,g4] ~ [eb4,g4]@5 ~ [g4,bb4] ~", S: "[g4,c5]@4 [g4,bb4]@4 [g4,eb5]@4 [g4,c5]@3 ~",
  T: "[db4,bb4]@6 [c4,ab4]@2 [c4,ab4]@5 ~@3", U: "~@5 [eb4,g4] [d4,gb4] [eb4,g4]",
  V: "[d4,bb4] [c4,ab4] [bb3,g4] [ab3,f4]", W: "[g3,eb4] ~", X: "~@2 [c4,a4]!3 ~@11",
  Y: "~@5 [g4,bb4] [gb4,a4] [g4,bb4]", Z: "[bb4,d5] [ab4,c5] [g4,bb4] [f4,ab4]", AA: "[eb4,g4]@11 ~@5",
  AB: "[eb4,gb4]@7 ~ [eb4,ab4]@7 ~", AC: "[ab4,db5]@3 ~ [ab4,b4]@3 ~ [ab4,db5]@3 ~ [ab4,b4]@3 ~",
  AD: "[ab4,db5]@5 ~ [e4,ab4] ~ [e4,ab4]@5 ~ [ab4,b4]@2", AE: "[ab4,db5]@4 [ab4,b4]@4 [db5,e5]@2 ~@2 [db5,e5]@3 ~",
  AF: "[db5,e5]@6 [b4,eb5] ~ [b4,eb5]@5 ~ [gb4,a4]@2", AG: "[f4,ab4]@4 [gb4,a4]@4 [db5,e5]@3 ~@3 [db5,e5]@2",
  AH: "[b4,eb5]@9 ~@3 [gb4,a4]@4", AI: "[f4,ab4]@4 [gb4,a4]@4 [a4,db5]@5 ~ [a4,db5]@2",
  AJ: "[ab4,b4]@10 ~@2 [ab4,b4]@3 ~", AK: "[ab4,db5]@5 ~ [e4,ab4] ~ [e4,ab4]@5 ~ [ab4,b4] ~",
  AL: "[ab4,db5] [ab4,b4] [ab4,e5] [ab4,db5]", AM: "[d4,b4]@6 [db4,a4]@2 [db4,a4]@5 ~@3",
  AN: "~@5 [e4,ab4] [eb4,g4] [e4,ab4]", AO: "[eb4,b4] [db4,a4] [b3,ab4] [a3,gb4]", AP: "[ab3,e4] ~",
  AQ: "~@10 [ab4,b4]@2 [g4,bb4]@2 [ab4,b4] ~", AR: "[b4,eb5]@7 ~ [a4,db5]@7 ~", AS: "[ab4,b4]@7 ~ [gb4,a4]@7 ~",
  AT: "[e4,ab4]@13 ~@3", AU: "[b4,eb5] ~ [b4,eb5]@4 [bb4,d5]@2 [a4,db5]@4 [gb4,a4]@4", AV: "[e4,ab4]@8 [e4,ab4] ~@7",
})).s("gm_trumpet").gain(0.4).pan(0.6)

// drums · kick
const kick = s("bd").struct("<A B@8 C B@15 C B@19 C B@15 C B@16 C B@18 D E B@4>".pickRestart({
  A: "~@3 x", B: "x!2", C: "x!4", D: "x", E: "~ x",
})).gain(0.48)

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

// drums · low tom
const low_tom = s("lt").struct("<A ~@3 B ~@4 C ~@23 B ~@7 B ~@2 B ~@24 B ~@7 B ~@8 B ~@7 B ~@2 A ~@4 D>".pickRestart({
  A: "~@3 x", B: "~@7 x", C: "~@5 x!3", D: "~@3 x!2 ~@3",
// … 49 more lines

More by Marianne & Michael