Strudelify
Herz an Herz Gefuhl cover art

Electrola... Das ist Musik! Drafi Deutscher

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, A@4 for four bars: edit a riff to change every repeat.

// bass · fretless bass · "FRETLESS"
const bass = note(`<
  ~@8 A B C D@4 A@2 B A D@2 E F A G B C H I C D C J K L M N O A P J Q L M R S C T A@2 C F D E D C A B A H I A D U ~@2
  A@3 D@2 V D A@4 D@4 C W I X Y@2
>`.pickRestart({
  A: "bb1@4 ~@2 bb1 ~ bb1@5 ~@3", B: "bb1@5 ~ bb1 ~ bb1@5 ~ f1 g1", C: "bb1@5 ~ bb1 ~ bb1@6 ~@2",
  D: "f1@4 ~@2 f1 ~ f1@5 ~@3", E: "f1@5 ~ f1 ~ f1@5 ~@3", F: "f1@5 ~ f1 ~ f1@6 ~@2", G: "bb1@5 ~ bb1 ~ bb1@5 ~@3",
  H: "c2@5 ~ c2 ~ c2@7 ~", I: "eb2@4 ~@2 eb2 ~ eb2@6 ~@2", J: "g1@5 ~ g1 ~ g1@5 ~ g1 a1", K: "b1@5 ~ b1 c2 d2@5 ~ g1@2",
  L: "c2@5 ~ c2 ~ c2@5 ~ c2 d2", M: "eb2@5 ~ eb2 f1 g1@4 c2@4", N: "f1@4 ~@2 f1 ~ f1@5 ~ f1 g1",
  O: "a1@5 ~ a1 bb1 c2@5 ~ f1@2", P: "bb1@5 ~ bb1 ~ bb1@7 ~", Q: "b1@5 ~ b1 c2 d2@6 g1@2",
  R: "bb1@4 ~@2 bb1 ~ bb1@5 a1 g1@2", S: "f1@4 ~@2 f1 ~ f1@5 ~ f1@2", T: "bb1@5 ~ bb1 ~ bb1@4 f1 g1 bb1 ~",
  U: "bb1@5 ~ bb1 ~ bb1@8", V: "f1@4 ~@2 f1 ~ f1@4 ~@4", W: "gb1@5 ~ gb1 ~ gb1@7 ~", X: "b1 ab1", Y: "[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 D F@4 G@4 H@2 I J@2 K L M@2 N@2 O@2 P Q M@2 R S T@2 U@3 F@4 G@4 V W D S X ~@2 A@3 B@4 Y@4 B@4 A@3 Z
  AA@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: "[d4,f4]@15 ~", S: "[eb4,f4,a4]@7 ~", T: "[[bb3,d4,f4]@31 ~]/2", U: "[[d4,f4,bb4]@47 ~]/3",
  V: "[c4,eb4,g4]@15 ~", W: "[eb4,g4,bb4]@15 ~", X: "[d4,f4,bb4]", Y: "[bb2,bb3]/4", Z: "[b2,b3] [ab2,ab3]",
  AA: "[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@2 F G ~@50 B@2 C D E@2 F H B@2 I D E@2 F J ~@3 K ~>".pickRestart({
  A: "[bb4,d5]@9 ~@3 [bb4,d5] [a4,c5]@3", B: "[bb4,d5]@11 ~ [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", // Cm Bb
  F: "[c5,eb5]@2 [d5,f5] ~ [d5,f5] ~ [eb5,g5] [eb5,g5]@3 [d5,f5] ~ [d5,f5]@2 eb5@2, ~@14 c5 ~", G: "[bb4,d5]@9 ~@7",
  H: "[bb4,d5]@3 ~", I: "[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",
  J: "[bb4,d5]@7 ~", K: "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@2 F G ~@16 H I J@2 K L M@2 N I J@2 O P Q@2 ~@3 R S ~@2 T U ~@2 V W X P Y ~@2 A Z C AA E@2 F AB A@2 C AC
  E@2 F AD AE AF AG AH@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@2 f5 ~ f5@2 g5 g5@3 f5 ~ f5@2 eb5@2", G: "d5@11 ~@5",
  H: "g3@5 ~ g3@7 ~ g3 a3, d4@15 ~", I: "b3@5 ~ b3 c4 ~@4 g3@4, ~ d4", J: "[[c4,g4]@25 ~ [c4,g4]@3 ~ [c4,g4]@2]/2",
  K: "[f3,c4]@14 f3 g3", L: "a3@5 ~ a3 bb3 ~@4 f3@4, ~ c4", M: "[[bb3,f4]@25 ~ [bb3,f4]@3 ~ [bb3,f4]@2]/2",
  N: "[g3,d4]@14 g3 a3", O: "[bb3,f4]@13 ~ [bb3,f4]@2", P: "[f3,c4]@13 ~ [f3,c4]@2", Q: "[bb3,f4]/2",
  R: "~@4 f5 g5@3 a5@4 bb5@4", S: "c6@13 ~@3", T: "~@6 bb4 c5 d5@5 g5@3", U: "f5 d5 bb4@11 ~@3",
  V: "~@12 bb4 c5 eb5 c5", W: "eb5@13 c5 bb4 g4", X: "bb4@10 g4@3 f4@3", Y: "[bb3,f4]@15 ~", Z: "d5 ~@11 d5 c5@3",
  AA: "eb5@3 ~", AB: "d5@7 ~", AC: "eb5@13 ~@3", AD: "d5", AE: "[gb4,db5]@9 ~ [gb4,db5]@3 ~ [gb4,db5]@2",
  AF: "[eb4,bb4]", AG: "[b3,gb4] [ab3,eb4]", AH: "[~ 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@2 E F ~@8 G@2 H I J K L M N O P@2 Q R S@2 T U V@2 W X Y@2 ~@8 Z@2 AA I AB G AC M ~@2 AD@2 AE AF D@2 E F
  AD AG B AF AH AI AJ AK@2 AL AM AN ~
>`.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]@10 ~@2 [f4,c5,eb5] [f4,bb4,d5]@2 ~",
  E: "[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
  F: "[f4,bb4,d5]@13 ~@3", G: "[f3,bb3,d4]@7 ~", H: "[f3,bb3,d4]@13 ~@3", I: "[g3,c4,eb4]@13 ~@3",
  J: "[g3,bb3,eb4]@11 ~ [g3,bb3,eb4]@2 ~@2", K: "[f3,bb3,d4]@11 ~ [f3,bb3,d4]@2 ~@2",
  L: "[f3,a3,eb4]@11 ~ [f3,a3,eb4]@2 ~@2", M: "[f3,bb3,d4]@3 ~", N: "[bb3,d4,g4]@13 ~@3", O: "[b3,d4,f4,g4]@13 ~@3",
  P: "[f4@6 eb4@25 ~, [g3,c4]@15 ~]/2", Q: "[a3,c4]@13 ~@3, f4@15 ~", R: "[c4,f4,a4]@7 ~", S: "[[bb3,d4,f4]@29 ~@3]/2",
  T: "[bb3,d4,g4]@7 ~", U: "[b3,d4,f4,g4]@7 ~", V: "[f4@6 eb4@25 ~, [c4,g4]@31 ~]/2", W: "[bb3,d4,f4]@7 ~",
  X: "[a3,eb4,f4]@7 ~", Y: "[[bb3,d4,f4]@15 ~]/2", Z: "[f3,bb3,d4]@9 ~@7", AA: "[f3,bb3,d4]@11 ~@5",
  AB: "[g3,bb3,eb4]@13 ~@3", AC: "[f3,a3,eb4]@7 ~", AD: "[f4,bb4,d5]@11 ~ [f4,bb4,d5] [f4,a4,c5]@2 ~",
  AE: "[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
  AF: "[f4,a4,c5]@13 ~@3", AG: "[f4,bb4,d5]@11 ~ [f4,bb4,d5] [f4,a4,c5] ~@2",
  AH: "[f4,c5,eb5]@11 ~ [f4,c5,eb5] [f4,bb4,d5]@2 ~", AI: "[f4,c5,eb5]@11 ~ [f4,c5,eb5] [f4,bb4,d5] ~@2",
  AJ: "[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
  AK: "[[f4,d5]@8 [gb4,db5]@7 ~, bb4@15 ~]/2", AL: "[gb4,bb4,eb5]@13 ~@3",
  AM: "[eb5,gb5,b5]@5 ~@3 [ab4,ab5,b5,eb6]@7 ~, b4@7 ~", AN: "[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