Strudelify
Calling Out Your Name cover art

`K Heb Je Lief - 50 jaar de muziek, M`n fans, het leven

Calling Out Your Name

Rene Froger

KeyG majorTempo130 bpm
0:00/0:00
// Calling Out Your Name — Rene Froger
// 130 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 134 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(130/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.

// chords · epiano2 · "E.PIANO 2"
const epiano2 = note(`<
  A B C D E@2 F@2 G@2 F@2 H@2 I@2 G@2 J K A B L@2 M N C K M O P@2 Q@2 R@2 I@4 S@2 T@2 U V G@2 W@2 G@2 W@2 G@2 W@2 G@2
  X@2 M N C K M O P@2 Q@2 R@2 I@4 S@2 T@2 U V G@2 W@2 G@2 W@2 M N C K M O Y Z AA@2 AB@2 AC@4 AD@2 AE@2 AF@2 AG@2 AH@2
  AG@2 AH@2 AG@2 AH@2 AG@2 AH@2 AG@2 AH@2
>`.pickRestart({
  A: "[f3,a3,c4,e4]@15 ~", B: "[f3,a3,b3,d4]@15 ~", C: "[e3,g3,b3,d4]@15 ~", D: "[a2,e3,g3,a3,c4]",
  E: "[[f3,a3,c4,e4]@13 ~ [b2,f3,a3,b3,d4]@17 ~, d3@11 ~@21]/2", F: "[[c3,e3,g3,b3,d4]@13 ~ [a2,e3,g3,a3,c4]@18]/2",
  G: "[[f3,a3,c4,e4]@13 ~ [f3,a3,b3,d4]@17 ~]/2", H: "[[f3,a3,c4,e4]@13 ~ [f3,a3,b3,d4]@10 [f3,a3,b3,d4]@8]/2",
  I: "[[e3,g3,b3,d4]@15 ~]/2", J: "[g3,b3,d4,e4]@15 ~", K: "[g3,a3,c4,e4]@15 ~", L: "[[g3,b3,d4,e4]@31 ~]/2",
  M: "[f3,a3,c4]@15 ~", N: "[g3,c4,d4]@6 [g3,b3,d4]@9 ~", O: "[f3,a3,c4,d4]",
  P: "[[d3,f3,g3,a3,c4]@7 [f3,g3,b3,d4]@8 ~]/2", Q: "[[e3,g3,d4]@5 ~ [e3,g3,c4]@25 ~]/2",
  R: "[[e3,g3,b3]@5 ~ [e3,g3,c4]@8 [e3,g3,d4]@18]/2", S: "[[f3,a3,c4]@15 ~]/2", T: "[[e3,g3,a3,c4]@31 ~]/2",
  U: "[d3,g3,c4]@15 ~", V: "[d3,g3,b3]@15 ~", W: "[[e3,g3,b3,d4]@13 ~ [e3,g3,a3,c4]@18]/2",
  X: "[[e3,g3,b3,d4]@13 ~ [e3,g3,a3,c4]@7 ~ [e3,g3,a3,c4]@10]/2", Y: "[d3,f3,g3,a3,c4]@7 ~",
  Z: "~@2 [g3,a3,e4] ~ [g3,a3,c#4,e4] ~ [g3,a3,c#4,e4] ~ [g3,a3,c#4,e4] ~ [a3,c#4,e4]@2 [g3,a3,c#4,e4] ~ [g3,a3,c#4,e4]@2, ~@2 c#4@2 ~@6 g3 ~@5", // A7 A A7
  AA: "[[f#3,a3,e4]@5 ~ [f#3,a3,d4]@25 ~]/2", AB: "[[f#3,a3,c#4]@5 ~ [f#3,a3,d4]@8 [f#3,a3,e4]@18]/2",
  AC: "[[f#3,a3,c#4,e4]@15 ~]/2", AD: "[[g3,b3,d4]@15 ~]/2", AE: "[[f#3,a3,b3,d4]@31 ~]/2",
  AF: "[[e3,a3,d4]@8 [e3,a3,c#4]@15 ~@9]/2", AG: "[[g3,b3,d4,f#4]@13 ~ [g3,b3,c#4,e4]@17 ~]/2",
  AH: "[[f#3,a3,c#4,e4]@13 ~ [f#3,a3,b3,d4]@18]/2", // F#m7 Bm7
})).s("gm_epiano2").gain(0.25).pan(0.4)

// bass · synth bass 2 · "SYN BASS 2"
const bass = note(`<
  ~@8 A B C D A B C@2 A B C D A B C D E F G H I A J F C@2 D@2 G@2 K L A@2 D@2 M N A B C D A B C D A B C D A B C D E F G
  H I A J F C@2 D@2 G@2 O L A@2 D@2 P Q A B C D A B C D E F G D A@2 R S T@2 U@2 V@2 W X G@2 U@2 Y@2 G Z T U G Z T U G Z
  T U G Z T U G Z T U
>`.pickRestart({
  A: "d2 ~ d2 ~ c2 ~@3 a1 ~ a1 ~ c2 ~ a1 ~", B: "g1 ~ g1 ~ f1 ~@3 e1 ~ e1 ~ d#1 ~ d#1 ~",
  C: "c2 ~ c2 ~ a1 ~@3 g1 ~ g1 ~ a1 ~ g1 ~", D: "a1 ~ a1 ~ g1 ~@3 e1 ~ e1 ~ g1 ~ e1 ~",
  E: "c2 ~ c2 ~ d2 ~@3 a1 ~ a1 ~ c2 ~ a1 ~", F: "g1 ~ g1 ~ f1 ~@3 g1 ~ g1 ~ f1 ~ f1 ~",
  G: "e2 ~ e2 ~ d2 ~@3 b1 ~ b1 ~ d2 ~ b1 ~", H: "a1 ~ a1 ~ g1 ~@3 c1 ~ c1 ~ e1 ~ c1 ~",
  I: "f2 ~ f2 ~ c2 ~@3 f1 ~ f1 ~ f1 ~ a1 ~", J: "g1 ~ g1 ~ f1 ~@3 a1 ~ a1 ~ c2 ~ a1 ~",
  K: "g1 ~ g1 ~ e1 ~@3 g1 ~ g1 ~ c2 ~ g1 ~", L: "a1 ~ a1 ~ g1 ~@3 g1 ~ g1 ~ g1 ~ d2 ~",
  M: "g1 ~ g1 ~ e1 ~@3 d1 ~ d1 ~ e1 ~ d1 ~", N: "g1 ~ g1 ~ e1 ~@3 g1 ~ g1 ~ b1 ~ g1 ~",
  O: "g1 ~ g1 ~ e1 ~@3 g1 ~ g1 ~ a1 ~ g1 ~", P: "g1 ~ g1 ~ e1 ~@3 d1 ~ e1 ~ d1 ~ d1 ~",
  Q: "g1 ~ g1 ~ e1 ~@3 g1 ~ g1 ~ c2 ~ a1 ~", R: "g1 ~ g1 ~ f1 ~@3 g1 ~ g1 ~ g1 ~ g1 ~",
  S: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~@3 a1 ~@3", T: "d2 ~ d2 ~ b1 ~@3 a1 ~ a1 ~ b1 ~ a1 ~",
  U: "b1 ~ b1 ~ a1 ~@3 f#1 ~ f#1 ~ a1 ~ f#1 ~", V: "f#2 ~ f#2 ~ e2 ~@3 c#2 ~ c#2 ~ e2 ~ c#2 ~",
  W: "a1 ~ a1 ~ f#1 ~@3 a1 ~ a1 ~ f#1 ~ f#1 ~", X: "b1 ~ b1 ~ a1 ~@3 a1 ~ a1 ~ a1 ~ e2 ~",
  Y: "a1 ~ a1 ~ f#1 ~@3 e1 ~ e1 ~ f#1 ~ e1 ~", Z: "a1 ~ a1 ~ g1 ~@3 f#1 ~ f#1 ~ f1 ~ f1 ~",
})).s("gm_synth_bass_2").gain(0.35)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note("<~@3 A B ~@10 C D ~@3 E ~@32 C D ~@3 E ~@75>".pickRestart({
  A: "~@10 [a4,c5]!2 ~ [g4,g#4,b4] [f#4,a4,a#4,d5,d#5] [f4,g#4,c#5], ~@6 [a4,c5,e5] ~", B: "c5 ~@15",
  C: "~@14 [f4,a4]!2", D: "~ [d#4,e4,g#4] [d4,f#4,g4,c5,c#5] [c#4,f4,b4] a#4 ~@11, [f4,a4,d5] ~@7",
  E: "~ [d4,d#4,g#4] [c#4,f#4,g4,a#4,b4] [c4,f4,g#4,a4] ~@12, [e4,a4,c5] ~@7", // G# F# F Am
})).s("gm_electric_guitar_clean").gain(0.15).pan(0.6)

// other · fretless bass · "FRETLESS"
const fretless_bass = note(`<
  ~@16 A B C D A B C E F@2 G H I@2 J K L@2 M N O P@2 Q L@2 M R S T@2 ~@7 A B C D A B C E F@2 G H I@2 J K L@2 M N O P@2 Q
  L@2 M R S T@2 ~@6 U F@2 G H I@2 V@2 W@2 X Y Z AA@2 AB W@2 X AC AD AE ~@20
>`.pickRestart({
  A: "~@4 c4@2 a3@2 c4@3 ~ c4@2 b3@2", B: "~@5 g3 a3 ~", C: "~@4 b3@2 b3@2 b3@3 ~ b3 ~ b3@2", D: "c4 a3 ~@6",
  E: "c4@2 a3@2 ~@6 g3 ~ g3@2 a3@2", F: "[c4@4 a3@3 ~ f3@3 ~ g3@2 f3@4 d3@2 ~@6 b3 ~ b3@2 c4@2]/2",
  G: "d4@4 d4@3 ~ g4@4 d4@2 d4@2", H: "e4@2 c4@4 ~@4 c4 ~ c4@2 d4@2",
  I: "[e4@3 ~ e4@2 e4@3 ~ f4@3 ~ d4@6 ~@8 c4@2 d4@2]/2", J: "e4@3 ~ e4 ~ e4@4 e4 ~ e4 ~ e4@2",
  K: "f4@2 d4@6 ~@4 g3 ~ g3 ~", L: "[d4@4 c4 ~ c4@3 ~ b3@4 c4@9 ~@3 g3@2 g3@3 ~]/2", M: "d4@4 c4@2 c4@3 ~ b3@4 c4 b3",
  N: "a3@4 ~@2 c4@3 ~ c4@3 c4@2 ~", O: "b3 a3 g3 a3 b3@9 ~@3", P: "[~@10 g3 ~ a3@2 b3@4 a3 ~ g3 a3 b3@9 ~]/2",
  Q: "~@10 g3@2 g3@3 ~", R: "a3@6 ~@2 a3@2 ~ b3@2 ~ c4@2", S: "c4@5 ~ b3@2 b3@8", T: "[~@4 e4 d4 c4 e4@2 ~@7]/2",
  U: "~@10 g3 ~ g3@2 a3@2", V: "[e4@5 ~ e4 ~ e4 ~ e4@3 ~ a4@5 ~@9 a3 ~ a3 ~]/2",
  W: "[e4@4 d4 ~ d4@3 ~ c#4@4 d4@9 ~@3 a3@2 a3@3 ~]/2", X: "e4@4 d4@2 d4@3 ~ c#4@4 d4 c#4",
  Y: "b3@4 ~@2 d4@3 ~ d4@3 d4@2 ~", Z: "c#4 b3 a3 b3 c#4@9 ~@3", AA: "[~@10 a3 ~ b3@2 c#4@4 b3 ~ a3 b3 c#4@9 ~]/2",
  AB: "~@10 a3@2 a3@3 ~", AC: "b3@6 ~@2 b3@2 ~ c#4@2 ~ d4@2", AD: "d4@5 ~ c#4@2 c#4@8", AE: "~@8 f#4@2 e4@2 d4@2 f#4 ~",
})).s("gm_fretless_bass").gain(0.48)

// chords · trombone
const trombone = note(`<
  ~@38 A@2 ~@6 B@2 C@2 B@2 D@2 ~@8 E F@3 ~ G H@2 ~@5 I@3 J@3 K L M B@2 N@2 B@2 D@2 O@3 P Q@2 R S T@4 ~ U@3 V@3 W X Y Z@2
  AA@2 Z@2 AB@2 Z@2 AA@2 Z@2 AB@2 Z@2 AA@2
>`.pickRestart({
  A: "[~@7 [a3,c4]@2 [b3,d4]@2 [a3,c4]@2 [g3,b3]@3]/2", B: "[e4@12 f4 ~ d4@18]/2",
  C: "[d4@12 e4 ~ c4@10 g3@2 a3@2 c4@2 d4@2]/2", D: "[d4@12 e4 ~@9 a3 ~@3 g3 ~@3 a3 ~, ~@14 c4@17 ~]/2", E: "c4",
  F: "[d4@31 e4@17]/3", G: "a4 g4 f4 e4", H: "d4/2",
  I: "[[b3,b4]@3 ~ [c4,c5]@2 b3@2 ~@2 [a3,a4]@2 ~@2 b4@16 c4@4 d4@4 c4@4 b3@6, ~@6 b4 ~@7 b3@14 ~@20]/3", // B C A
  J: "[a3@21 ~ [f4,a4,d5]@2 ~@2 [e4,g4,c5]@14 ~@8]/3", K: "~@6 [f4,a4,d5]@2 ~@2 [e4,c5]@2 ~ [g4,e5]@2 ~", L: "[g3,d4]",
  M: "[g3,b3] ~ a3 ~ c4 d4 ~@2", N: "[d4@12 e4 ~ c4@7 ~ g3@3 ~ a3@2 c4@2 d4@2]/2", O: "[c4@7 d4@17]/3", P: "e4",
  Q: "c4/2", R: "d4",
  S: "~@2 [g3,c#4,e4] ~ [g3,c#4] ~ [c#4,e4] ~ [c#4,e4]@2 [g3,e4] ~ [g3,e4] ~ [g3,c#4,e4]@2, ~@4 e4@2 g3@2 g3 ~ c#4@2 c#4@2 ~@2", // C#dim Gdim C#m C C#dim
  T: "[d5@7 [e4,e5]@4 [e4,e5] ~ [d4,d5]@3]/2", // E D
  U: "[[c#4,c#5]@3 ~ [d4,d5]@2 c#4@2 ~@2 [b3,b4]@2 ~@2 c#5@16 d4@4 e4@4 d4@4 c#4@6, ~@6 c#5 ~@7 c#4@14 ~@20]/3", // C# D B
  V: "[b3@21 ~ [g4,b4,e5]@2 ~@2 [f#4,a4,d5]@14 ~@8]/3", W: "~@6 [g4,b4,e5]@2 ~@2 [f#4,d5]@2 ~ [f#4,d5]@2 ~",
  X: "[a3,e4]", Y: "[a3,c#4] ~ b3 ~ d4 e4 ~@2", Z: "[f#4@12 g4 ~ e4@18]/2",
  AA: "[e4@12 f#4 ~ d4@10 a3@2 b3@2 d4@2 e4@2]/2", AB: "[e4@12 f#4 ~ d4@8 d4@2 ~@2 e4@2 ~@4]/2",
})).s("gm_trombone").gain(0.48)

// chords · trombone · soft notes
const trombone_soft = note("<~@40 A@2 ~@37 B@2 C ~@19 D ~ D ~@5 E@2 F ~@22>".pickRestart({
  A: "[[f3,a3]@31 ~]/2", B: "[~@5 a4@7 ~@4]/2", C: "~@10 a4@2 ~ c5@2 ~", D: "~@3 g4 ~ f#4@3", E: "[~@5 b4@7 ~@4]/2",
  F: "~@10 b4@2 ~ b4@2 ~",
})).s("gm_trombone").gain(0.32)

// other · flute
const flute = note(`<
  ~@4 A ~@3 B ~@3 B ~@20 C ~@4 D@2 E@2 ~@4 B ~@3 B ~@20 C ~ C ~@2 D@2 E@2 ~@4 B ~@3 B ~@17 F@2 G@2 ~@4 H ~@3 H ~@3 H ~@3
  H ~@3 H ~@3
>`.pickRestart({
  A: "~ b5 [f5,g5,a5] ~ c6@2 ~@10, c6 ~@7", B: "~@2 [e4,e5] ~ [g4,g5] ~ [e4,e5] ~ [g4,g5] ~ [a4,a5] [g4,g5] ~@4",
  C: "~@9 b5 [f5,g5,a5] ~@5, ~@4 c6 ~@3", D: "[~@7 [a4,c5]@2 [b4,d5]@2 [a4,c5]@2 [g4,b4]@3]/2", E: "[[f4,a4]@5 ~@3]/2",
  F: "[~@7 [b4,d5]@2 [c#5,e5]@2 [b4,d5]@2 [a4,c#5]@3]/2", G: "[[g4,b4]@5 ~@3]/2",
  H: "~@2 [f#4,f#5] ~ [a4,a5] ~ [f#4,f#5] ~ [a4,a5] ~ [b4,b5] [a4,a5] ~@4", // F# A F# A B A
})).s("gm_flute").gain(0.3).pan(0.3)

// other · flute · soft notes
const flute_soft = note(`<
  ~@4 A B ~@2 C ~@3 C ~@20 D ~@12 C ~@3 C ~@20 D ~ D ~@10 C ~@3 C ~@25 E ~@3 E ~@3 E ~@3 E ~@3 E ~@3
>`.pickRestart({
  A: "~@3 [d5,e5] c5 b5 [f5,g5,a5] [d5,e5] c5 b5 [f5,g5,a5] [d5,e5] c5 b5 [f5,g5,a5] [d5,e5], ~@4 c6 ~ c6 ~", // Dsus2 F Dsus2 F Dsus2 F Dsus2
  B: "c5 ~@15", C: "[e4,e5] ~@15", D: "~@11 [d5,e5] c5 ~@3", E: "[f#4,f#5] ~@15",
})).s("gm_flute").gain(0.12).pan(0.3)

// chords · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note(`<
  ~@4 A@4 B@4 C@4 ~@8 D@3 E@3 F@2 G@7 H@7 I@8 J K@7 D@3 E@3 F@2 G@7 H@7 I@8 D@3 E@3 L@2 M@7 N@7 O@20
>`.pickRestart({
  A: "[[a3,c4,e4]@14 f3@18 g3@13 ~ c4@17 ~, ~@14 [b3,d4]@31 [e3,a3]@18 ~]/4", // Am Bm A5
  B: "[[c4,e4]@14 ~@32 e4@17 ~, [f3,a3] [e3,g3], ~@14 [b3,d4]@31 c4@18 ~]/4", // C F Em Bm
  C: "[[c4,e4]@7 ~@9 [e3,g3]@16, [f3,a3] ~, ~@7 [b3,d4]@25]/4", // C Em F Bm
  D: "[[a3,f4]@16 ~@6 b3@6 a3@4 g3@15 ~, c4@11 ~@13, ~ [d4,g4]@2]/3", E: "[[g3,c4]@15 [a3,c4,f4]@32 ~, e4@17 ~@31]/3",
  F: "[[f3,a3,c4]@13 ~ [g3,b3]@18, ~@13 d4@18 ~]/2", // F G
  G: "[d4@5 c4@8 ~ d4@8 c4@9 b3@6 c4@8 d4@18 [g3,b3,d4]@49, [e3,g3]@4 ~@3]/7", // G Em
  H: "[~@15 f3@32 e4@32 c4@16 b3@16 ~, ~@15 [a3,c4]@63 ~ [d4,g4]@31 ~@2]/7", // Am G5
  I: "[c4@14 ~@32 a3@17 ~, [f3,a3]@31 [e3,g3]@32 ~, ~@7 b3@16 ~@9]/4", J: "a3",
  K: "[b3@30 ~@18 c4@15 ~ b3@29 ~@7 g3@11 ~, ~@30 a3@33 d4@30 c4@17 ~@2, ~@94 a3@17 ~]/7",
  L: "[[f3,a3,c4]@13 ~ [g3,c#4]@18, ~@13 e4@18 ~]/2", // F Gdim
  M: "[e4@5 d4@8 ~ e4@8 d4@9 c#4@6 d4@8 e4@18 [a3,c#4,e4]@49, [f#3,a3]@4 ~@3]/7", // A F#m
  N: "[~@15 g3@32 f#4@32 d4@16 c#4@16 ~, ~@15 [b3,d4]@63 ~ [e4,a4]@31 ~@2]/7", // Bm A5
  O: "[d4@14 ~@32 b3@17 ~, [g3,b3]@31 [f#3,a3]@32 ~, ~@7 c#4@16 ~@9]/4", // G F#m
})).s("gm_string_ensemble_2").gain(0.32).pan(0.6)

// chords · orchestral harp · "HARP"
const orchestral_harp = note(`<
  ~@19 A ~@3 B C ~@5 D E F ~@4 G@2 ~@3 H ~@14 A ~@4 I ~@5 D E F ~@4 G@2 ~@3 H ~@11 I ~@5 D J K ~@4 L@2 ~@3 M ~@23
>`.pickRestart({
  A: "~@10 [e4,g4] [a4,c5] d5 ~@3", B: "~@14 g3 [a3,c4]", C: "d4 [c4,d4] [f4,a4] ~@13, [d3,f3,a3]@3 ~@13",
  D: "c4 [d4,f4] [g4,a4] ~@13, [g3,a3] ~@7", E: "~@9 e5 ~@4 [b3,c4] [e4,f4,a4]", F: "[c4,d4] [e4,g4] a4 ~@13",
  G: "[~@20 [b4,d5]@5 ~@7, ~@14 e3@9 ~@9, ~@15 [g3,b3]@9 ~@8, ~@16 d4@7 ~@9, ~@19 [e4,g4]@5 ~@8]/2", // Bm G Em
  H: "~ [a3,c4] g4 a4 ~@12, g3 e4 ~@6", I: "~ [c4,d4] [f4,a4] ~@13, [d3,f3,a3]@3 ~@13", J: "~@14 [c#4,d4] [f#4,b4]",
  K: "[d4,e4] [f#4,a4] b4 ~@13", // Dsus2 F#m
  L: "[~@20 [c#5,e5]@5 ~@7, ~@14 f#3@9 ~@9, ~@15 [a3,c#4]@9 ~@8, ~@16 e4@7 ~@9, ~@19 [f#4,a4]@5 ~@8]/2", // C#m A F#m
  M: "~ [b3,d4] a4 b4 ~@12, a3 f#4 ~@6", // Bm
})).s("gm_orchestral_harp").gain(0.2).pan(0.2)

// chords · orchestral harp · "HARP" · soft notes · Asus2
const orchestral_harp_soft = note("<~@31 [~@8 d5!2 c5 [a4,b4] g4 f4 ~@2] ~@37 [~@8 d5!2 c5 [a4,b4] g4 f4 ~@2] ~@64>")
  .s("gm_orchestral_harp").gain(0.1).pan(0.2)

// chords · piano · "A.PIANO 3"
const piano = note(`<
  ~@8 A B C D E B C@2 A B C D E B C F G H C F G B I J ~@13 K ~@8 A B C D E B C F G H C F G B I J ~@22 G H C F G B I ~@35
>`.pickRestart({
  A: "~@2 [f3,a3,e4] ~@3 [a3,e4]@2 ~@2 [f3,a3,e4] ~@3 [f3,a3,d4] ~, ~@6 f3 ~@9", // Fmaj7 A5 Fmaj7 Dm
  B: "~@2 [f3,a3,d4] ~@3 [a3,d4]@2 ~@2 [f3,a3,d4] ~@3 [f3,a3,d4] ~, ~@6 f3 ~@9", // Dm D5 Dm
  C: "~@2 [g3,b3,d4] ~@3 [b3,d4]@2 ~@2 [g3,b3,d4] ~@3 [g3,b3,d4] ~, ~@6 g3 ~@9", // G Bm G
  D: "~@2 [e3,g3,c4] ~@3 [g3,c4]@2 ~@2 [e3,g3,c4] ~@3 [e3,g3,c4] ~, ~@6 e3 ~@9", // C C5 C
  E: "~@2 [f3,a3,e4] ~@3 [a3,e4]@2 ~@2 [f3,a3,e4] ~@3 [f3,a3,e4] ~, ~@6 f3 ~@9", // Fmaj7 A5 Fmaj7
  F: "~@2 [g3,a3,c4] ~@3 [a3,c4]@2 ~@2 [g3,a3,c4] ~@3 [g3,a3,c4] ~, ~@6 g3 ~@9", // Am7 Am Am7
  G: "~@2 [f3,a3,c4] ~@3 [a3,c4]@2 ~@2 [f3,a3,c4] ~@3 [f3,a3,c4] ~, ~@6 f3 ~@9", // F Am F
  H: "~@2 [g3,c4,d4] ~@3 [b3,d4]@2 ~@2 [g3,b3,d4] ~@3 [g3,b3,d4] ~, ~@6 g3 ~@9", // Gsus4 Bm G
  I: "~@2 [f3,g3,c4] ~@3 [f3,c4]@2 ~@2 [f3,g3,c4] ~@3 [f3,g3,c4] ~, ~@6 g3 ~@9", // Fsus2 F5 Fsus2
  J: "~@2 [f3,g3,b3] ~ g6 a6 [g3,b3,g6]@2 ~@2 [f3,g3,b3] ~@3 [f3,g3,b3] ~, ~@6 f3 ~@9", K: "d5 e5 g5 ~ a6 g6 e6 ~@9",
})).s("gm_piano").gain(0.14).pan(0.6)

// drums · kick
const kick = s("bd").struct("<~@4 [x!4]!130>").gain(0.64)

// drums · clap
const clap = s("cp").struct("<~@4 [~ x ~ x]!130>").gain(0.48)

// drums · snare
const snare = s("sd").struct("<~@4 A@3 B A@23 B A@13 C A@23 D A@13 C A@15 E A F A@11 G A@20>".pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@3 x!2 ~ x!2 ~@3", C: "~@4 x ~@6 x!2 ~@3", D: "~@4 x ~@3 x ~@2 x!2 ~@3",
  E: "~@2 x ~ x ~ x ~ x ~ x ~ x!3 ~", F: "~@2 x ~ x!3 ~", G: "~@4 x ~@3 x!5 ~@3",
})).gain(0.48)

// drums · pedal hat
const pedal_hat = s("hh").struct("x!4").gain(0.4)

// drums · open hat
const open_hat = s("oh").struct("~ x ~ x ~ x ~ x").gain(0.48)

// drums · crash
const crash = s("cr").struct(`<
  ~@8 A ~@7 A ~@7 A ~@7 A ~@7 A ~@5 A ~@7 A ~@7 A ~@7 A ~@7 A ~@5 A ~@7 A ~@5 A@3 ~@7 A ~@5 A ~@7 A ~@7 A ~@3
>`.pickRestart({
  A: "x",
})).gain(0.48)

// drums · tambourine
// … 60 more lines

More by Rene Froger