Strudelify

Herz an Herz Gefuhl

Drafi Deutscher

KeyB♭ majorTempo74 bpm
0:00/0:00
// Herz an Herz Gefuhl — Drafi Deutscher
// 74 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: ch 8 "SYNTHBRASS" named as a brass, played on synth brass 1 (its synth bass 1 patch is not one)
// note: Full arrangement: all 87 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(74/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 · fretless bass · "FRETLESS"
const bass = note(`<
  ~@8 A B C D E F@2 A@2 B A D@2 F G A H I J K L J M N O P Q R S T A U O V Q R W X N Y A H J G@2 F M J C I A K Z J G AA
  ~@2 AB@2 A AC D AC D AB A AD J D F D G J AE AF AG AH@2
>`.pickRestart({
  A: "bb1@4 ~@2 bb1 ~ bb1@5 ~@3", B: "bb1@5 ~ bb1 ~ bb1@5 ~ f1 g1", C: "bb1@4 ~@2 bb1 ~ bb1@6 ~@2",
  D: "f1@4 ~@2 f1 ~ f1@5 ~@3", E: "f1@5 ~ f1 ~ f1@4 ~@4", F: "f1@5 ~ f1 ~ f1@5 ~@3", G: "f1@5 ~ f1 ~ f1@6 ~@2",
  H: "bb1@5 ~ bb1 ~ bb1@5 ~@3", I: "bb1@4 ~@2 bb1 ~ bb1@5 ~ f1 g1", J: "bb1@5 ~ bb1 ~ bb1@6 ~@2",
  K: "c2@5 ~ c2 ~ c2@7 ~", L: "eb2@4 ~@2 eb2 ~ eb2@6 ~@2", M: "f1@4 ~@2 f1 ~ f1@6 ~@2", N: "bb1@5 ~ bb1 ~ bb1@7 ~",
  O: "g1@5 ~ g1 ~ g1@5 ~ g1 a1", P: "b1@5 ~ b1 c2 d2@5 ~ g1@2", Q: "c2@5 ~ c2 ~ c2@5 ~ c2 d2",
  R: "eb2@5 ~ eb2 f1 g1@4 c2@4", S: "f1@4 ~@2 f1 ~ f1@5 ~ f1 g1", T: "a1@5 ~ a1 bb1 c2@5 ~ f1@2",
  U: "bb1@4 ~@2 bb1 ~ bb1@7 ~", V: "b1@5 ~ b1 c2 d2@6 g1@2", W: "bb1@4 ~@2 bb1 ~ bb1@5 a1 g1@2",
  X: "f1@4 ~@2 f1 ~ f1@5 ~ f1@2", Y: "bb1@5 ~ bb1 ~ bb1@4 f1 g1 bb1 ~", Z: "eb2@5 ~ eb2 ~ eb2@5 ~@3",
  AA: "bb1@5 ~ bb1 ~ bb1@8", AB: "bb1@4 ~@2 bb1 ~ bb1@4 ~@4", AC: "f1@4 ~@2 f1 ~ f1@4 ~@4",
  AD: "bb1@5 ~ bb1 ~ bb1@4 ~@4", AE: "gb1@5 ~ gb1 ~ gb1@7 ~", AF: "eb2@5 ~ eb2 ~ eb2@6 ~@2", AG: "b1 ab1",
  AH: "[eb1@11 ~@5]/2",
})).s("gm_fretless_bass").gain(0.51)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@8 A@3 B@4 C D E@2 F@4 G@4 H@2 I J@2 K L M@2 N@2 O@2 P Q R@2 S T U@2 V@3 F@4 G@4 W X D T Y ~@2 A@3 B@4 Z@4 B@4 A@3 AA
  AB@2
>`.pickRestart({
  A: "[bb2,bb3]/3", B: "[f2,f3]/4", C: "bb2, bb3@13 ~@3", D: "[d4,f4,bb4]@7 ~", E: "[d4,f4,bb4]@13 ~@3",
  F: "[[eb4,f4,a4]@63 ~]/4", G: "[d4,f4,bb4]/4", H: "[c4@15 ~ bb3@15 ~, [eb4,g4]@31 ~]/2", I: "[bb3,d4,f4]@15 ~",
  J: "[[a3,c4]@16 [bb3,d4]@13 ~@3, f4@15 ~]/2", K: "[bb3,d4,g4]@15 ~", L: "[b3,d4,f4,g4]@15 ~",
  M: "[f4@4 eb4@27 ~, [c4,g4]@31 ~]/2", N: "[[c4,f4,a4]@31 ~]/2", O: "[[d4,f4,bb4]@31 ~]/2", P: "[d4,g4,bb4]@15 ~",
  Q: "[d4,f4,g4]@15 ~", R: "[f4@4 eb4@27 ~, [c4,g4]]/2", S: "[d4,f4]@15 ~", T: "[eb4,f4,a4]@7 ~",
  U: "[[bb3,d4,f4]@31 ~]/2", V: "[[d4,f4,bb4]@47 ~]/3", W: "[c4,eb4,g4]@15 ~", X: "[eb4,g4,bb4]@15 ~", Y: "[d4,f4,bb4]",
  Z: "[bb2,bb3]/4", AA: "[b2,b3] [ab2,ab3]", AB: "[eb2@21 ~@11, eb3 ~]/2",
})).s("gm_string_ensemble_1").gain(0.26)

// other · trumpet
const trumpet = note("<~@32 A B C@2 D@2 E@3 F G H I J K ~@34 L M N O P@2>".pickRestart({
  A: "g4@5 ~ g4@7 ~ g4 a4", B: "b4@5 ~ b4 c5 d5@6 g4@2", C: "[f5@6 eb5 d5 eb5@12 ~@2 c5 ~ c5@2 bb4 ~ bb4@2 a4 ~]/2",
  D: "[a4@7 g4 f4@13 ~ a4 bb4 c5@4 f4@3 ~, ~@8 g4 ~@23]/2",
  E: "[bb4@22 bb4@2 ~@2 f4 ~ f4@2 d4@2 g4@13 ~ g4 a4, ~@6 bb4@5 ~]/3", F: "b4@5 ~ b4 c5 d5@6 b4@2",
  G: "f5@6 eb5 d5 eb5@6 g4@2", H: "eb5@2 d5@2 c5@2 bb4@2 g4@5 ~ bb4!2", I: "f4@12 ~@2 f4!2",
  J: "f4@5 ~ f4!2 f4@5 ~ f4!2", K: "bb3@5 ~ bb3!2 bb3@8", L: "~@10 d4!2 f4 d4 f4@2",
  M: "bb4@9 ~ bb4 c5 ~ c5@2 bb4, ~@6 db5 ~", N: "eb5@6 bb4 bb4@7 ~ eb5", O: "gb5@2 ~ f5@2 eb5@2 ~ eb5@4 f5@4",
  P: "[g5@9 ~@7]/2",
})).s("gm_trumpet").gain(0.46).pan(0.7)

// chords · brass section · "BRASS"
const brass_section = note("<~@8 A B C D E F G H ~@50 B I J K E@2 L M I@2 N D E@2 G O ~@3 P ~>".pickRestart({
  A: "[bb4,d5]@9 ~@3 [bb4,d5] [a4,c5]@3", B: "[bb4,d5]@10 ~@2 [bb4,d5] [a4,c5]@3",
  C: "[bb4,d5]@2 [c5,eb5]@2 [c5,eb5]@2 [d5,f5] [d5,f5]@3 [c5,eb5] ~ [c5,eb5]@2 [bb4,d5]@2", D: "[a4,c5]@3 ~",
  E: "[c5,eb5]@11 ~ [c5,eb5] [bb4,d5]@3", F: "[c5,eb5]@10 ~@2 [c5,eb5] [bb4,d5]@3",
  G: "[c5,eb5]@2 [d5,f5] ~ [d5,f5] ~ [eb5,g5] [eb5,g5]@3 [d5,f5] ~ [d5,f5]@2 eb5@2, ~@14 c5 ~", H: "[bb4,d5]@9 ~@7",
  I: "[bb4,d5]@11 ~ [bb4,d5] [a4,c5]@3", // Bb Am
  J: "d5@2 [c5,eb5] ~ [c5,eb5]@2 [d5,f5] [d5,f5]@3 [c5,eb5] ~ [c5,eb5]@2 [bb4,d5]@2, bb4 ~@15", K: "[a4,c5]@13 ~@3",
  L: "[c5,eb5]@2 [d5,f5] ~ [d5,f5]@2 [eb5,g5] [eb5,g5]@3 [d5,f5] ~ [d5,f5]@2 eb5@2, ~@14 c5 ~", M: "[bb4,d5]@3 ~",
  N: "[bb4,d5]@2 [c5,eb5] ~ eb5@2 [d5,f5] [d5,f5]@3 eb5@2 [c5,eb5]@2 [bb4,d5]@2, ~@4 c5 ~@5 c5 ~@5", O: "[bb4,d5]@7 ~",
  P: "eb2",
})).s("gm_brass_section").gain(0.41).pan(0.6)

// other · distortion guitar · "DISTORTION"
const distortion_guitar = note(`<
  ~@8 A B C D E F G H ~@16 I J K@2 L M N@2 O J K@2 P Q R@2 ~@3 S T ~@2 U V ~@2 W X Y Q Z ~@2 B AA C AB E@2 G AC A@2 C AD
  E@2 G AE AF AG AH AI@2
>`.pickRestart({
  A: "d5@11 ~ d5 c5@3", B: "d5@10 ~@2 d5 c5@3", C: "d5@2 eb5 ~ eb5@2 f5 f5@3 eb5 ~ eb5@2 d5@2", D: "eb5 ~",
  E: "eb5@11 ~ eb5 d5@3", F: "eb5@10 ~@2 eb5 d5@3", G: "eb5@2 f5 ~ f5@2 g5 g5@3 f5 ~ f5@2 eb5@2", H: "d5@11 ~@5",
  I: "g3@5 ~ g3@7 ~ g3 a3, d4@15 ~", J: "b3@5 ~ b3 c4 ~@4 g3@4, ~ d4", K: "[[c4,g4]@25 ~ [c4,g4]@3 ~ [c4,g4]@2]/2",
  L: "[f3,c4]@14 f3 g3", M: "a3@5 ~ a3 bb3 ~@4 f3@4, ~ c4", N: "[[bb3,f4]@25 ~ [bb3,f4]@3 ~ [bb3,f4]@2]/2",
  O: "[g3,d4]@14 g3 a3", P: "[bb3,f4]@13 ~ [bb3,f4]@2", Q: "[f3,c4]@13 ~ [f3,c4]@2", R: "[bb3,f4]/2",
  S: "~@4 f5 g5@3 a5@4 bb5@4", T: "c6@13 ~@3", U: "~@6 bb4 c5 d5@5 g5@3", V: "f5 d5 bb4@11 ~@3",
  W: "~@12 bb4 c5 eb5 c5", X: "eb5@13 c5 bb4 g4", Y: "bb4@10 g4@3 f4@3", Z: "[bb3,f4]@15 ~", AA: "d5 ~@11 d5 c5@3",
  AB: "eb5@3 ~", AC: "d5@7 ~", AD: "eb5@13 ~@3", AE: "d5", AF: "[gb4,db5]@9 ~ [gb4,db5]@3 ~ [gb4,db5]@2",
  AG: "[eb4,bb4]", AH: "[b3,gb4] [ab3,eb4]", AI: "[~ bb3 ~@30, eb3@5 ~@3, eb4 ~@3]/2",
})).s("gm_distortion_guitar").gain(0.31).pan(0.8)

// bass · synth brass 1 · "SYNTHBRASS"
const bass_2 = note(`<
  ~@8 A@3 B@3 C A D E F C B G C D A@2 H I J D C K L M N O B C A K L@2 P@2 Q C D@5 C@4 D@4 N R S C D ~@2 T D@2 C@4 D@4
  C@4 D U R V W ~
>`.pickRestart({
  A: "bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~", B: "f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~",
  C: "f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2!2", D: "bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1!2",
  E: "bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1!3 ~ bb1 ~ bb1 ~", F: "bb1 ~ bb1 ~ bb1 ~ bb1!3 ~ bb1 ~ bb1!3 ~",
  G: "f2 ~ f2 ~ f2 ~ f2 ~ f2!3 ~ f2 ~ f2 ~", H: "bb1 ~ bb1 ~ bb1 ~ bb1!3 ~ bb1 ~ bb1 ~ bb1 ~",
  I: "c2 ~ c2 ~ c2 ~ c2 ~ c2!3 ~ c2 ~ c2 ~", J: "eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2!3 ~",
  K: "bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1!3 ~ bb1 ~ bb1!2", L: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~",
  M: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1!2", N: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2!2",
  O: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2!3 ~", P: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~",
  Q: "~@2 bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~", R: "eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2!2",
  S: "bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1!3 ~ bb1!2", T: "bb1 ~ bb1 ~ bb1 ~ bb1!3 ~ bb1 ~ bb1 ~ bb1!2",
  U: "gb1 ~ gb1 ~ gb1 ~ gb1 ~ gb1 ~ gb1 ~ gb1 ~ gb1!2", V: "b1 ~@7 ab1@4 ~@4", W: "eb1@13 ~@3",
})).s("gm_electric_bass_finger").gain(0.26)

// other · pizzicato strings · "PIZZICATO"
const pizzicato_strings = note(`<
  A@2 B C D E F D A G E H I J K L M@3 N O P Q R@2 S T U V W X Y E Z AA AB AC AD E AE AF E AG AH AI AJ AK W E W AL AM I X
  AN E@2 AO AP AQ AR AS AT AU AV AW AK AX AK AY AZ AN@2 AK BA BB BC BD@3 AY BE BF BG ~@3
>`.pickRestart({
  A: "d4 ~ d4!2 f4 ~ d4!2 ~@3 d4 ~ d4 f4!2", B: "d4 ~ d4!2 f4 ~ f4 d4 ~@5 d4 ~ f4",
  C: "d4 ~ d4!2 f4!2 d4!2 ~@3 d4 ~ d4 f4!2", D: "d4 ~ d4!2 f4 ~ f4 d4 ~@5 d4 f4!2",
  E: "d4 ~ d4!2 f4 ~ f4 d4 ~@3 d4 ~ d4 f4!2", F: "d4 ~ d4!2 f4 ~ f4 d4 ~ d4 ~ d4!3 f4!2",
  G: "d4 ~ d4!2 f4 ~ f4!2 ~ d4 ~@3 d4 f4!2", H: "d4 ~ d4!2 f4 ~ f4 c4 ~@3 c4 ~ c4 f4!2",
  I: "c4 ~ c4!2 f4 ~ f4 c4 ~@3 c4 ~ c4 f4!2", J: "c4 ~ c4!2 f4 ~ f4!2 ~ c4 ~@3 c4 [c4,d4] f4",
  K: "~@2 c4!2 f4 ~ f4 c4 ~@3 c4 ~ c4 f4!2", L: "d4 ~ d4!2 f4 ~ f4 d4 ~@3 c4 ~ d4 f4!2",
  M: "d4 ~ d4!2 f4 ~ f4 d4 ~@2 c4 d4 ~ d4 f4!2", N: "d4 ~ c4!2 f4 ~ f4 c4 ~@3 c4 ~ c4 d4 f4",
  O: "c4 ~ c4!2 f4 ~ f4 c4 ~@3 c4 ~ c4 d4 f4", P: "d4 ~ c4!2 f4 ~ f4 c4 ~ c4 ~ c4!3 d4 f4",
  Q: "c4 ~ c4!2 f4 ~ f4 c4 ~ c4 ~ c4!3 d4 f4", R: "d4 ~ d4!2 f4 ~ f4 d4 ~@3 d4!2 f4!2 d4",
  S: "d4 ~ d4!2 f4 ~ f4 d4 ~@3 d4 ~ d4 f4 g4", T: "d4 ~ d4!2 f4 ~ f4 d4 ~ d4 ~@2 d4!2 f4!2",
  U: "c4 ~ c4!2 eb4 ~ eb4 c4!2 ~@2 c4 ~ c4 eb4 f4", V: "c4 ~@2 c4 eb4 ~ eb4 c4 ~@3 c4 ~ c4 eb4 f4",
  W: "d4 ~ d4!2 f4 ~ f4 d4 ~@2 d4!2 ~ d4 f4!2", X: "c4 ~ c4!2 f4 ~ f4 c4 ~@2 c4!2 ~ c4 f4!2",
  Y: "~@2 d4!2 f4 ~ f4 ~ d4 ~@2 d4 ~ d4!2 f4", Z: "d4 ~ d4!2 f4 ~ f4 ~ d4 ~@2 d4 ~ d4 f4!2",
  AA: "~@2 c4!2 f4 ~ eb4 ~@2 c4 ~@2 eb4 ~ eb4!2", AB: "c4 ~ eb4!3 ~ eb4 c4 ~@3 c4 eb4!2 c4 ~",
  AC: "d4 ~@3 eb4 ~ eb4 c4 ~@3 c4 ~ c4 eb4!2", AD: "c4 ~ c4!2 eb4 ~ eb4 c4 ~@3 c4 ~ c4 eb4!2",
  AE: "d4 ~ d4!2 f4 ~ f4 d4 ~ d4 ~ d4 f4!2 d4!2", AF: "~@3 d4 f4 ~ f4 d4 ~@2 d4!2 ~ d4 f4!2",
  AG: "~@2 c4!2 f4 ~ eb4 c4 ~@2 c4!2 ~ eb4!2 c4", AH: "c4 ~ c4!2 eb4 ~ eb4!2 ~ c4 ~ c4 ~ c4 eb4!2",
  AI: "~@4 eb4 ~@2 d4 ~ f4 ~@2 f4 ~ f4 d4", AJ: "c4 ~ c4!2 f4 ~ f4 c4 ~@2 c4 f4 ~ f4 c4!2",
  AK: "~@2 d4!2 f4 ~ f4 d4 ~@2 d4!2 ~ d4 f4!2", AL: "~@2 d4!2 f4 ~ f4!2 ~ d4 ~ d4 ~ d4 f4!2",
  AM: "~@2 c4!2 ~@2 f4 c4 ~@3 c4 ~ c4 f4!2", AN: "~@2 c4!2 f4 ~ f4 c4 ~@2 c4!2 ~ c4 f4!2",
  AO: "d4 ~ d4!2 f4 ~ f4!2 ~ d4 ~ d4 ~ d4 f4!2", AP: "d4 ~ d4!2 f4 ~ f4 ~ d4!2 ~ d4 ~ d4 f4!2",
  AQ: "~@2 c4!2 eb4 ~ eb4!2 c4 ~@2 c4 ~ c4 eb4!2", AR: "~@3 c4 eb4 ~ eb4!2 ~@2 c4!2 ~ c4 f4!2",
  AS: "~@2 d4!2 f4 ~ f4!2 ~@2 d4!2 ~@2 f4!2", AT: "~@2 c4!2 f4 ~ f4!2 ~ c4!2 f4 ~ f4!3",
  AU: "~@3 d4 f4 ~ f4!2 ~ d4!2 ~ f4!4", AV: "~@3 d4 f4 ~ f4!2 ~@3 d4 ~ d4 f4!2", AW: "~@2 c4!2 f4 ~ f4!2 ~@2 c4!2 f4!4",
  AX: "d4 ~ d4!2 f4 ~ f4!2 ~ d4 ~ d4 f4!2 ~ f4", AY: "~@2 c4!2 f4 ~ f4 c4 ~@2 c4 f4 ~ f4!3",
  AZ: "~@2 c4!2 f4 ~ f4 c4 ~@2 f4!2 ~ f4 c4!2", BA: "~@2 d4!2 f4 ~ f4 d4 ~@2 d4 f4 ~ f4 ~ f4",
  BB: "~@2 d4!2 f4 ~ f4 d4 ~@2 d4 f4 ~ f4 d4!2", BC: "~@2 d4!2 f4 ~ f4 d4 ~ d4 ~ d4 ~ d4 f4!2",
  BD: "~@2 c4!2 f4 ~ f4 c4 ~@2 c4 f4 ~ f4 ~ f4", BE: "~@2 d4!2 f4 ~ f4 d4 ~@2 d4 f4 ~ f4!3",
  BF: "~@2 f4!2 ~@2 f4!2 ~@3 db4 ~ db4 f4!2", BG: "~@2 eb4!2 gb4 ~ gb4 eb4 ~@2 eb4 gb4 ~ gb4 ~ gb4",
})).s("gm_pizzicato_strings").gain(0.26).pan(0.2)

// chords · lead 1 square · "SQUAREWAVE"
const lead_1_square = note(`<
  ~@8 A@2 B C D E F G ~@8 H I@2 J K L M N O P Q@2 R S T@2 U V W@2 X Y Z@2 ~@8 AA@2 AB AC AD H AE N ~@2 AF@2 AG AH D E F
  AI AF AJ B AH D AK AL AM@2 AN AO AP ~
>`.pickRestart({
  A: "[f4,bb4,d5]@10 ~@2 [f4,bb4,d5] [f4,a4,c5]@2 ~", // Bb F
  B: "[f4,bb4,d5] ~ [f4,c5,eb5] ~ [f4,c5,eb5] ~ [f4,d5,f5] [f4,d5,f5]@3 [f4,c5,eb5] ~ [f4,c5,eb5] ~ [f4,bb4,d5] ~", // Bb F7 Dm F7 Bb
  C: "[f4,a4,c5]@3 ~", D: "[f4,c5,eb5]@11 ~ [f4,c5,eb5] [f4,bb4,d5]@2 ~",
  E: "[f4,c5,eb5]@10 ~@2 [f4,c5,eb5] [f4,bb4,d5]@2 ~", // F7 Bb
  F: "[f4,c5,eb5] ~ [f4,d5,f5] ~ [f4,d5,f5] ~ [f4,eb5,g5] [f4,eb5,g5]@3 [f4,d5,f5] ~ [f4,d5,f5] ~ [f4,c5,eb5] ~", // F7 Dm Cm Dm F7
  G: "[f4,bb4,d5]@13 ~@3", H: "[f3,bb3,d4]@7 ~", I: "[f3,bb3,d4]@13 ~@3", J: "[g3,c4,eb4]@13 ~@3",
  K: "[g3,bb3,eb4]@11 ~ [g3,bb3,eb4]@2 ~@2", L: "[f3,bb3,d4]@11 ~ [f3,bb3,d4]@2 ~@2",
  M: "[f3,a3,eb4]@11 ~ [f3,a3,eb4]@2 ~@2", N: "[f3,bb3,d4]@3 ~", O: "[bb3,d4,g4]@13 ~@3", P: "[b3,d4,f4,g4]@13 ~@3",
  Q: "[f4@6 eb4@25 ~, [g3,c4]@15 ~]/2", R: "[a3,c4]@13 ~@3, f4@15 ~", S: "[c4,f4,a4]@7 ~", T: "[[bb3,d4,f4]@29 ~@3]/2",
  U: "[bb3,d4,g4]@7 ~", V: "[b3,d4,f4,g4]@7 ~", W: "[f4@6 eb4@25 ~, [c4,g4]@31 ~]/2", X: "[bb3,d4,f4]@7 ~",
  Y: "[a3,eb4,f4]@7 ~", Z: "[[bb3,d4,f4]@15 ~]/2", AA: "[f3,bb3,d4]@9 ~@7", AB: "[f3,bb3,d4]@11 ~@5",
  AC: "[g3,c4,eb4]@7 ~", AD: "[g3,bb3,eb4]@13 ~@3", AE: "[f3,a3,eb4]@7 ~",
  AF: "[f4,bb4,d5]@11 ~ [f4,bb4,d5] [f4,a4,c5]@2 ~", // Bb F
  AG: "[f4,bb4,d5] ~ [f4,c5,eb5] ~ [f4,c5,eb5] ~ [f4,d5,f5] [f4,d5,f5]@2 ~ [f4,c5,eb5] ~ [f4,c5,eb5] ~ [f4,bb4,d5] ~", // Bb F7 Dm F7 Bb
  AH: "[f4,a4,c5]@13 ~@3", AI: "[f4,bb4,d5]@3 ~", AJ: "[f4,bb4,d5]@11 ~ [f4,bb4,d5] [f4,a4,c5] ~@2",
  AK: "[f4,c5,eb5]@11 ~ [f4,c5,eb5] [f4,bb4,d5] ~@2", // F7 Bb
  AL: "[f4,c5] ~ [f4,d5,f5] ~ [f4,d5,f5] ~ [f4,eb5,g5] [f4,eb5,g5]@3 [f4,d5,f5] ~ [f4,d5,f5] ~ [f4,c5,eb5] ~, eb5 ~@7", // F5 Dm Cm Dm F7
  AM: "[[f4,d5]@8 [gb4,db5]@7 ~, bb4@15 ~]/2", AN: "[gb4,bb4,eb5]@13 ~@3",
  AO: "[eb5,gb5,b5]@5 ~@3 [ab4,ab5,b5,eb6]@7 ~, b4@7 ~", AP: "[eb4,bb4,eb5,g5,bb5,eb6]@15 ~",
})).s("gm_lead_1_square").gain(0.31).pan(0.2)

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

// drums · snare
const snare = s("sd").struct("<~@7 [~ x ~ x]!57 ~ [~@3 x] [~ x ~ x]!18 ~@3>").gain(0.5)

// drums · clap
const clap = s("cp").struct("<[~ x ~ x]!64 ~@2 [~ x ~ x]!18 ~@3>").gain(0.3)

// drums · hihat
const hihat = s("hh").struct("<[x!16]!84 x ~@2>").gain(0.25)

// drums · crash
const crash = s("cr").struct("<~@8 A ~@23 A ~@15 A ~@17 A ~@7 A ~@9 B A ~>".pickRestart({
  A: "x", B: "x!2",
})).gain(0.25)

stack(
  bass, string_ensemble_1, trumpet, brass_section, distortion_guitar, bass_2, pizzicato_strings, lead_1_square, kick,
  snare, clap, hihat, crash
)

More by Drafi Deutscher