Strudelify

Le vibrazioni di una donna

Nek

KeyD minorTempo60 bpm
0:00/0:00
// Le vibrazioni di una donna — Nek
// 60 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (4/4 at bar 1, 5/4 at bar 6, 4/4 at bar 7) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: bank select 127 (Roland MT-32 map) read through the MT-32 patch table: ch 7 Fantasy -> pad new age
// note: duplicate parts dropped: ch 9 acoustic guitar steel (copy of ch 8 acoustic guitar steel); ch 13 acoustic guitar steel (copy of ch 12 acoustic guitar steel); ch 16 distortion guitar (copy of ch 15 distortion guitar)
// note: Full arrangement: all 65 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(60/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
const bass = note(`<
  ~@4 A@6 B@5 C D E F G H I J K L@2 M N O P Q R S T U C D E F G H V W X Y Z AA AB AC AB AD C D E F G H V W AE@5 ~
>`.pickRestart({
  A: "[~@2 a1@12 c2@2 c2@14 d1@32 d1@24 ~@2 f1@2 a1 ~ [g1,ab1] [f1,gb1] [eb1,e1] ~@31 g1@32 a1@32 d1@2, ~@47 d1@16 ~@33]/6", // Abmaj7 Gbmaj7 Emaj7
  B: "[~@2 d1@4 c1@4 ~ a1@19 d1@26 e1 ~ g1@4 g1@20 ~ g2@5 d2@2 g1@2 ab1@2 a1@24 ~@2 g2 [f2,gb2] [d2,eb2,e2] [b1,c2,db2] [ab1,a1,bb1] [f1,gb1,g1] e1 bb1@5 a1@6 g1@21 ~]/5", // Gbmaj7
  C: "d1@4 f1@2 d1@7 d1 d1@2", D: "g1@8 ~@2 g1 ~ g1@6 f1@2 g1@6 d1@2 g1@2 ab1@2",
  E: "a1@8 ~@2 a1 ~ a1@14 a1@2 g1@2 a1@2", F: "bb1@3 a1@3 g1@3 f1 d1 f1 d1 f1 d1 f1", G: "d1@4 f1@2 d1@8 f1 d1",
  H: "g1@10 d1 ~ g1@8 g1@6 d1@2 g1@2 ab1@2", I: "a1@3 a1@3 a1@8 e1 a1", J: "bb1@12 d2 c2 a1@2",
  K: "d1@8 ~@4 d1@12 c2 ~ c2@2 a1@3 ~",
  L: "[g1@6 g2@4 g1@2 a1@10 a1@2 c2@2 c2@2 a1@2 d1@4 d2@2 a1@2 d1@2 e1@4 d1@10 d1 ~ d2@2 c2@2 a1@4]/2",
  M: "g1@6 a1@4 c2 a1@5", N: "d1@6 d1@8 f1 d1", O: "g1@8 ~@2 g1 ~ g1@16 g1@2 ab1@2", P: "a1@5 ~ a1@7 g1 f1 e1",
  Q: "d1@2 d1 d2 a1 d1 a1@6 c2!2 a1@2", R: "d1@8 ~@2 d1 ~ d1@14 a1@2 g1@2 d1@2", S: "g1@5 f1 g1@3 f1 g1@3 d1 g1 ab1",
  T: "a1 ~ a1 ~ a1 ~ a1 e1 a1 e1 a1@3 f1 g1 a1", U: "bb1@3 a1@3 g1@3 f1 g1 f1 g1 f1 g1 f1",
  V: "bb1@3 f1@3 a1@3 a1@5 g1 a1", W: "bb1@3 bb1 f1 bb1 a1!3 ~ a1@6", X: "bb1@3 ~ bb1@10 f1@2 bb1@3 ~ bb1@6 f1@2 c2@4",
  Y: "f1@7 f1 c2@2 f1@3 f1 f2 f1", Z: "bb1@7 f1 bb1 f1 bb1@5 f1", AA: "c2@2 f1@2 f1@10 f1@2 f1@2 f1 ~ f1@4 f2@8",
  AB: "g1 ~ g1@5 d1 g1 d1 g1@3 a1@3", AC: "bb1 ~ bb1@5 f1 bb1 f1 bb1@3 a1@3", AD: "a1!2 ~@4 a1@3 a1!3 g1 f1 d1 c1",
  AE: "[d1@131 ~@29]/5",
})).s("gm_electric_bass_finger").gain(0.52)

// chords · overdriven guitar
const overdriven_guitar = note(`<
  ~@22 A B C D E ~ F@2 G ~@2 H I J K L M N O@2 P Q R Q S ~@3 T U V W X Y Z AA AB@6 ~
>`.pickRestart({
  A: "~@15 d4", B: "f4 ~ f4 ~ f4@3 ~ f4@2 d4@2 f4 ~ f4@2 f4@3 ~ f4@2 d4@2 f4@4 f4 ~ f4@2",
  C: "f4@4 f4 ~ d4 ~ f4@2 e4@2 c4@2 g3@2 g3@2 a3@2 d4@2 f4 ~ g4@2 bb4@2 c5@2 bb4@2",
  D: "g5@3 f5 d5@4 ~@10 d4 ~ c5 a4 g4 ~ d4 f4 ~@2 e4 c4 a3 ~", E: "c4@6 bb3@4 ab3 ~ d3@8 c3@12",
  F: "[~@8 d4 ~ f4@3 ~@11 d4@6 c4@7 ~@27]/2", G: "~@2 c5@5 ~ c5@2 ~@2 c5@12 ~@8",
  H: "c5@2 ~@2 c5@2 ~@2 c5@2 ~@2 c5@2 ~@2 c5@2 c5@2 c5@2 ~@2 c5@4 [c3,db3] [bb2,b2] [a2,g4] ~", // Dbmaj7 Bmaj7 A7
  I: "g4@3 f4 d4@4 c4@3 ~ eb4@6 ~@14", J: "d4@8 ~@4 d4@12 g4@3 f4 d4@2 a3@2", K: "d4@4 ~@4 a4@3 g4@3 f4@2",
  L: "e4@3 a4@4 ~", M: "~@4 c4@2 ~@4 c4 ~@5 d5@4 ~@2 e5@4 ~@2 f5@4", N: "g5@9 ~@23",
  O: "[~@16 g4@3 f4 g4@2 d4@2 g4@19 ~ g4@12 ~@8]/2", P: "a4@5 ~@3", Q: "[d4,f4]!16 [f4,a4]!6 [e4,g4]!6 [d4,f4]!4",
  R: "[c4,e4]!16 [e4,a4]!6 [d4,g4]!6 [c4,f4]!4", S: "[c4,e4]!32",
  T: "~@18 [ab3,a3] [gb3,g3] [e3,f3] [db3,d3,eb3] [b2,c3] [a2,bb2] [ab2,e4]@2 d4@2 d4@2 c4@2", U: "d4@3 e4@3 d4@6 e4@4",
  V: "g4@15 ~ g4@6 g4@6 f4@3 ~", W: "e4@3 ~@5", X: "~@4 c4@5 ~ c4@2 ~@8 g4@3 ~ g4@2 f4@2 d4@2 a3@2",
  Y: "d4@6 f4@6 d4@16 g3 gb3 [e3,f3] eb3", Z: "~@16 g4@5 ~ g4@5 ~ f4@4", AA: "f4@12 e4@17 ~@3",
  AB: "[~@2 f4@2 d4@2 bb3@2 f4@2 d4@2 e4@16 f4@135 ~@29]/6",
})).s("gm_overdriven_guitar").gain(0.44)

// other · overdriven guitar
const overdriven_guitar_2 = note("<~@30 A B ~ C ~@4 D E ~@3 F G H I ~@18>".pickRestart({
  A: "~@2 g4@2 eb4@2 c4@2 g4@2 ~@2 g4@11 ~ g4@2 g4 ~ g4@3 f4", B: "d4 ~@7",
  C: "g4@2 ~@2 g4@2 ~@2 g4@2 ~@2 g4@2 ~@2 g4@2 g4@2 g4@2 ~@2 g4@4 [g3,ab3] [f3,gb3] e3 ~", D: "~@8 c5@2 ~ d5@2 ~ eb5@2",
  E: "f5@9 ~@23", F: "d4@15 e4@12 ~ d4@4", G: "c4@4 d4@3 c4", H: "d4@4 e4@3 d4", I: "c4@15 ~",
})).s("gm_overdriven_guitar").gain(0.59)

// other · lead 5 charang
const lead_5_charang = note("<~@27 A@2 B@3 ~@33>".pickRestart({
  A: "[c5@12 d5 a4@7 d4@12]/2", B: "[a4@13 d4@17 a4@10 ~@8]/3",
})).s("gm_lead_5_charang").gain(0.3)

// other · acoustic guitar steel
const acoustic_guitar_steel = note("<A@2 ~@3 B C ~@16 D ~@35 E@3 F@2 ~>".pickRestart({
  A: "[~@31 [g2,c3]@4 ~@29]/2", B: "~@23 c4@3 ~ c4@4 ~", C: "~@7 c4@4 ~@21", D: "~@2 [g2,c3] ~@5",
  E: "~@8 [g2,c3]@4 ~@12 [c3,c4]@3 ~ [c3,c4]@4", F: "[~@8 [g2,c3]@4 ~@14 [c3,c4]@4 ~ [c3,c4]@5 ~@28]/2",
})).s("gm_acoustic_guitar_steel").gain(0.22).pan(0.3)

// chords · epiano1
const epiano1 = note(`<
  ~@6 A@8 ~ B C D E ~@8 F G H I J K L M B C D E B C N@2 O P O P Q R S T B C D E B C N@2 U@5 ~
>`.pickRestart({
  A: "[~@31 d4@31 [bb3,d4,f4]@32 [a3,c4,e4]@32 ~ d4@11 ~ a3@11 [g4,a4,d5]@8 [a3,c4,e4]@32 [bb3,d4,g4]@32 [a3,c4,e4]@32 ~@2, ~@15 [a3,f4]@16 ~@32 a3@6 [c4,e4]@6 ~@53, ~@127 f4@8 ~@121]/8", // Bb Am Gsus2 Am Gm Am Dm C
  B: "[f3,a3,d4]@3 [f3,a3,d4]@5", C: "[f3,bb3,d4]@3 [d4,f4,bb4]@5", D: "[a3,c4,e4]@3 [c4,e4,g4]@5",
  E: "[bb3,d4,f4]@3 [a3,c4,f4]@3 [g3,bb3,d4]@10", F: "[a3,c4,f4]@3 a4@5", G: "[f3,bb3]@3 [f4,bb4,c5]@5",
  H: "[c4,g4]@3 [g4,c5]@5", I: "[f3,a3,d4]@3 [e4,g4,c5]@5", J: "[a3,c4,f4]@3 [c4,f4,a4]@5", K: "f4@5 ~ [f4,bb4,c5]@10",
  L: "[g4,c5]@2 ~@2 g4@2 ~@2 [g4,c5]@2 ~@2 [g4,c5]@2 ~@2 [g4,c5] ~ [g4,c5] ~ [e4,g4,c5]@2 ~@2 [e4,g4,c5]@8", // C5 C
  M: "[bb3,d4]@3 [a3,c4]@3 [f3,bb3,d4]@10, f4@3 ~@5", N: "[a3,d4,f4]@3 [g3,db4,e4]@5", O: "[a3,d4]", P: "[a3,c4]",
  Q: "d4@8 c4 d4 bb3@3 [f3,a3,c4]@3, f3@13 ~@3, bb3@5 ~@3", R: "[f3,bb3,d4]@6 ~@2 bb5 a5@7, ~@3 d5@5, ~@7 f5@9",
  S: "[bb3,d4,f4]", T: "[g4,c5,e5] ~ [g4,c5,e5] ~@9 [g4,c5,e5]@20", U: "[[a3,c4,f4]@131 ~@29]/5",
})).s("gm_epiano1").gain(0.48)

// chords · epiano1 · soft notes · F5 G5 C
const epiano1_soft = note(`<
  ~@27
  [~@3 [c4,f4]@5]
  [d4@3 ~@5]
  [e4@3 e4@5]
  ~@2
  [[d4,g4]@5 ~@11]
  [e4@2 ~@2 [e4,c5]@2 ~@2 e4@2 ~@2 e4@2 ~@2 e4 ~ e4 ~@13]
  ~@31
>`).s("gm_epiano1").gain(0.32)

// chords · acoustic guitar steel
const acoustic_guitar_steel_2 = note(`<
  A B@3 C@7 D@4 E F G H E F G I J K@2 L M N@2 O P Q@2 R E F G H E F S@2 T U T U V W X Y E F G H E F S@2 Z AA Z AB@3
>`.pickRestart({
  A: "~@13 d2 c3 [db3,d3,c4,db4,d4] ~ [c3,c4]@2 [a2,a3]@4 [d2,d3]@6 [a3,d4]@2 ~", // C A D D5
  B: "[~@9 [a3,d4]@4 a3 c3 [db3,d3,c4,db4,d4] ~ [c3,c4]@2 [a2,a3]@4 [g2,g3]@5 ~@3 [d3,g3,a3,d4]@3 ~ [c4,d4,c5]@6 [a2,e3,a3,d4,e4]@2 a2 ~ a2 c3 [db3,d3,c4,db4,d4] ~ [c3,c4]@2 [a2,a3]@2 ~@4 [d3,a3]@2 [d2,a2] ~ [d2,a2] ~ [g2,c3]@2 [a2,d3]@2 [d2,a2]@6 ~@2 [d2,a2] ~ [d2,a2] c3 [db3,d3,c4,db4,d4] ~ [c3,c4]@2 [a2,a3]@4 [g2,g3]@4 ~@2 [a3,bb3,d4]@3, ~@3 [d2,a2]@12 ~@13 d4@2 g2@3 ~ [a2,e3,a3]@6 ~@16 d4@2 ~@5 [f3,a3,d4]@4 ~@6 [f3,a3,d4]@6 ~@12 f3@5, ~@29 [g2,d3,g3,a3]@2 ~@22 [d2,d3]@6 ~@37]/3", // D5 C A G Dsus4 Csus2 Asus4 C …
  C: "[a3 [bb3,b3] c4 [e3,g3,a3,c4,d4]@11 ~ [a2,d3,a3,d4]@2 [g2,c3,g3,c4]@12 ~@10 [f3,a3,c4]@4 [f3,a3]@6 [f3,a3,d4]@2 [f3,a3,d4]@4 a3@4 a3@4 [f3,a3]@6 [f3,a3]@2 ~@4 d3@3 [c3,c4] [d3,d4]@4 [c3,c4]@4 [d2,d3]@2 [e2,e3]@2 [f2,f3]@3 ~ [d2,d3]@6 ~@2 d2@16 [f3,a3,c4]@2 ~@10 f4@2 [g3,a3,d4]@6 [g3,a3,d4]@12 [g2,d3,a3,bb3,d4]@2 [a3,bb3]@2 [a3,bb3] b3 [c4,db4] ~@9 c4@10 a3@2 c4@4 [a2,e3,a3,c4,e4,g4]@2 [a2,e3,a3,c4,e4,g4]@2 [a2,e3,a3,c4,e4,g4]@2 [a2,e3,a3,c4,e4,g4]@2 [d2,a2,d3,f3,a3]@4 ~@4 [a2,d3]@3 ~ [a2,e3]@11 [c3,c4] [d3,d4]@2 [c3,c4]@2 [a2,a3]@4 [d2,d3], ~@2 a2@11 ~@16 [c4,d4]@10 ~@62 [a3,d4]@18 ~@39 c4@8 ~@31 [f3,a3]@4 ~ [a3,c4,e4,g4]@12 ~@10, ~@30 [a2,d3]@32 ~ [a2,d3]@11 ~ a2@12 ~@15 [a2,d3,f3]@16 ~@9 [g2,d3]@23 ~@3 [g2,d3,d4]@6 ~@36 [d2,a2,d3]@4 ~@25, ~@30 a3@8 ~@33 [f3,a3]@8 ~@80 d4@23 ~@42, ~@31 d2@31 ~ d2@24 ~@71 [a2,e3,g3]@24 ~@42]/7", // Bmaj7 Am7 D5 C5 F Dm F C …
  D: "[~@7 d2@16 [a3,c4,f4]@2 ~@24 d3@2 g2 ~@3 [g2,d3,f3,bb3]@2 [g2,d3,f3,a3]@2 [f2,d3,f3,a3]@2 ~@2 e4@7 ~ [c4,e4]@24 [bb3,d4,f4]@4 [bb3,d4,f4]@2 [a3,c4,f4]@4 [a3,c4,f4]@2 [g3,bb3,d4]@21, ~@5 [a3,d4]@18 ~@14 a3@12 a3@6 ~@73, ~@6 [a2,d3,f3]@16 ~@9 [g2,d3,g3]@20 ~@11 [a2,e3,a3,c4]@8 [a2,e3,a3]@24 ~@34, ~@41 bb3@14 ~@73, ~@43 d4@12 ~@73]/4", // F Gm7 Dm C Bb F Gm D5 …
  E: "[f3,a3,d4]@2 [f3,a3,d4]!2 [f3,a3,d4]@2 [f3,a3,d4]@4 [f3,a3,d4]@2 [f3,a3,d4]!2 [f3,a3,d4]@2", // Dm
  F: "[a3,bb3,d4]@7 ~ a3@4 [a3,bb3,d4]@8 [a3,bb3,d4]@4 [a3,bb3,d4]@2 [a3,bb3,d4]@2 [a3,bb3,d4] ~@3, ~@7 [bb3,d4]@5 ~@20", // Bbmaj7 Bb
  G: "[g3,c4,e4]@4 [g3,c4,e4]@2 [g3,c4,e4]@2 [g3,c4,e4]@4 [g3,c4,e4]@8 [g3,c4,e4]@4 [g3,c4,e4]@2 [g3,c4,e4]@5 ~", // C
  H: "[bb3,d4,f4]@3 [a3,c4,f4]@3 [g3,bb3,d4]@3 [g3,bb3,d4]@3 [g3,bb3,d4]!4", // Bb F Gm
  I: "[f3,a3,d4]@24 [c3,db3,c4,db4] [d3,d4] [c3,c4]@2 [a2,a3]@4", // Dm Dbmaj7 D C A
  J: "[d2,d3]@6 [a3,d4]@2 ~@10 [a3,d4]@4 a3 ~ [c3,db3,c4,db4] [d3,d4] [c3,c4]@2 [a2,a3]@4, ~@3 [d2,a2]@3 ~@2", // D D5 Dbmaj7 D C A D5
  K: "[[g2,g3]@6 [g2,d3,g3,a3,d4]@2 [g2,d3,g3,a3,d4]@3 ~ [e3,a3,c4,d4,c5]@6 [a2,e3,a3,d4,e4]@2 a2 ~ a2 ~ [c3,db3,c4,db4] [d3,d4] [c3,c4]@2 [a2,a3]@2 [d2,d3]@4 [d3,a3,d4]@2 [d2,a2] ~ [d2,a2] ~ [g2,c3]@2 [a2,d3]@2 [d2,a2]@6 ~@2 [d2,a2] ~ [d2,a2] ~ [c3,db3,c4,db4] [d3,d4] [c3,c4]@2 [a2,a3]@4, ~@11 a2@7 ~@22 [f3,a3,d4]@4 ~@6 [f3,a3,d4]@6 ~@8]/2", // G Gsus2 Am Asus4 Dbmaj7 D C A …
  L: "[g2,g3]@4 ~@2 [a3,bb3]@3 ~ [a3,bb3] b3 [a2,e3,g3,a3,c4,d4]@8 ~ g3@11, ~ f3@2 ~@5, ~@3 d4@2 ~@5 [d4,f4,c5]@6", // G Bbmaj7 Am7 Dm7
  M: "[d2,d3]@3 ~ [d2,a2,d3]@8 [f3,a3,c4] ~@3, ~@3 d4@9 ~@4, ~@7 [f3,a3]@17 ~@8", // D D5 F
  N: "[~@4 f4@2 [g3,a3,d4]@6 [g3,a3,d4]@12 [g2,d3,a3,bb3,d4]@2 [a3,bb3]@2 a3 bb3 [b3,c4] db4 c4@8 c4@10 a3@2 c4@4 [a2,e3,a3,c4,e4,g4]@2 [a2,e3,a3,c4,e4,g4]@2 [a2,e3,a3,c4,e4,g4]@2 [a2,e3,a3,c4,e4,g4]@2, [g2,d3]@23 ~@3 [g2,d3,d4]@5 [a2,e3]@24 ~@9, ~@4 [g3,d4]@3 ~]/2", // Gsus2 Gm Bbmaj7 Cmaj7 Am7 G5 A5 G5
  O: "[d2,a2,d3,f3,a3]@4 ~@4 [a2,d3]@3 ~ [a2,e3,a3,c4,e4]@12 [c3,d3,c4,d4]@2 [c3,c4]@2 [a2,a3]@4, ~ [d2,a2,d3] ~@6, ~@6 [f3,a3]@4 ~ g4@12 ~@9", // Dm D5 Am Csus2 C A D5 F
  P: "[d2,d3]@3 ~ [d2,a2,d3]@8 [a3,c4,f4] ~@3, ~@3 d4@9 ~@4, ~@7 [f3,a3]@17 ~@8", // D D5 F
  Q: "[~@18 d3@2 g2 ~@3 [g2,d3,f3,bb3]@2 [g2,d3,f3,a3]@2 [f2,d3,f3,a3]@2 ~@2 [e3,a3,c4,e4]@7 ~ [e3,a3,c4,e4]@24, [g2,d3,g3]@20 ~@11 a2@7 ~ a2@24 ~, ~@3 a3@6 a3@3 ~@20, ~@5 bb3@7 ~@20, ~@3 d4@3 ~@10]/2", // Gm7 Dm Am G5
  R: "[bb3,d4,f4]@2 [bb3,d4,f4] [a3,c4,f4]@2 [a3,c4,f4] [g3,bb3,d4]@10", // Bb F Gm
  S: "[bb3,d4,f4]@4 [bb3,d4,f4]@2 [bb3,d4,f4]@2 [bb3,d4,f4]@4 [g3,db4,e4]@8 [g3,db4,e4]@4 [g3,db4,e4]@2 [g3,db4,e4]@5 ~", // Bb Dbdim
  T: "[d4,f4]@2 [d4,f4]@2 [d4,f4]@2 [d4,f4]!4 [d4,f4]@2 [d4,f4]@2 [d4,f4]!2", // Dm
  U: "[c4,e4]@2 [c4,e4]@2 [c4,e4]@2 [c4,e4]!4 [c4,e4]@2 [c4,e4]@2 [c4,e4]!2", // C
  V: "[bb3,d4,f4]@2 [bb3,d4,f4]@2 [bb3,d4,f4]@2 [bb3,d4,f4]!4 [bb3,d4,f4]@2 [bb3,d4,f4] [a3,c4,f4]@3", // Bb F
  W: "[bb3,d4,f4]@2 [bb3,d4,f4]@2 [bb3,d4,f4]@2 [bb3,d4,f4]!4 [bb3,d4,f4]@2 [bb3,d4,f4] [bb3,d4,f4]@3", // Bb
  X: "[bb3,d4,f4]@2 [bb3,d4,f4]@2 [bb3,d4,f4]@2 [bb3,d4,f4]!4 [bb3,d4,f4]@2 [bb3,d4,f4]!2 ~@2", // Bb
  Y: "[db3,g3,c4]@2 [db3,g3,c4]@2 ~@8 [db3,g3,c4]@19 ~", // C
  Z: "[d2,d3]@6 [a3,d4]@2 ~@10 [a3,d4]@4 a3 ~ [a3,f4]@8, ~@3 [d2,a2]@3 ~@2", // D D5 Dm D5
  AA: "[d2,d3]@6 [a3,d4]@2 ~@10 [a3,d4]@4 a3 ~ f4@4 f4@4, ~@3 [d2,a2]@3 a3@2", // D D5
  AB: "[[d2,d3]@6 [a3,d4]@2 ~@11 [a3,d4]@4 a3 ~@2 [a3,f4]@9 ~@3 d2@42 ~@16, ~@12 [d2,a2]@13 ~@10 d4@45 ~@16, ~@36 [d3,f3,a3]@43 ~@17, ~@37 [f2,a2]@42 ~@17]/3", // D D5 Dm D5 Dm F
})).s("gm_acoustic_guitar_steel").gain(0.25).pan(0.3)

// other · guitar harmonics
const guitar_harmonics = note("<~@34 [~@18 e3@4 e3@2 d3@2 d3@2 d3@2 c3 ~] ~@30>").s("gm_guitar_harmonics").gain(0.4)

// chords · distortion guitar
const distortion_guitar = note(`<
  ~@13 A@2 B C D E F C D G ~@10 H I B C D E F C J K L M L N@2 O P Q R C D E F C J K ~@6
>`.pickRestart({
  A: "[~@24 g3 [e3,f3,gb3] [d3,eb3] [b2,c3,db3] [ab2,a2,bb2] [f2,gb2,g2] bb2@6 a2@6 g2@21 ~, ~@30 e2 ~@33]/2", // Ebmaj7
  B: "[a2,d3]@3 ~ d3@2 [a2,d3]@6 [f3,a3,d4]!2 [f3,a3,d4]@2, ~@3 d4@3 ~@10, ~@7 [f3,a3]@5 ~@20", // D5 Dm F
  C: "[f3,bb3,d4]@12 [f3,bb3,d4]!2 ~@2", // Bb
  D: "[g3,c4,e4]@6 [g3,c4,e4]@2 ~@4 [g3,c4,e4]@12 [c4,e4,a4]@2 [c4,e4,a4] ~ [a2,e3] ~ [a2,e3] ~", // C Am A5
  E: "f3@6 [a3,c4,f4] ~@5 [g3,d4]@8 [g3,d4]@4 [g3,d4]@2 f3@2 d3@2 f3@2", F: "d3@4 f3@2 d3@6 [f3,a3,d4]!2 [f3,a3,d4]@2",
  G: "f3@3 ~", H: "~@8 [a2,e3]!2 [a2,e3]@2 [a2,e3]@3 ~", I: "[bb2,f3]@3 [bb2,f3] [a2,f3]@2 [g2,d3]@3 [g2,d3]!6 c3",
  J: "[bb3,d4,f4]@6 [bb3,d4,f4]@2 ~@4 [g3,db4,e4]@12 [db4,e4,a4]@2 [db4,e4,a4] ~ [a2,e3] ~ [a2,e3] ~", // Bb Dbdim A A5
  K: "[bb3,d4,f4]@3 [bb3,d4,f4] ~@2 [g3,db4,e4]@6 [db4,e4,a4] ~@3", // Bb Dbdim A
  L: "[d4,f4]@4 [d4,f4]@4 [d4,f4]@4 [d4,f4]@4 [d4,f4]@4 [d4,f4]@4 [d4,f4]@4 [d4,f4]@3 ~", M: "[c4,e4]!8",
  N: "[[c4,e4]@4 [c4,e4]@4 [c4,e4]@4 [c4,e4]@4 [c4,e4]@4 [c4,e4]@4 [c4,e4]@4 [c4,e4]@3 ~ d4@26 a2@6, ~@31 [f3,bb3]@27 ~@6]/2", // C Bb5
  O: "[bb2,f3]@31 ~", P: "[f3,bb3,d4]@24 ~@2 [a2,bb2,e3,f3] [gb2,g2,ab2,db3,d3,eb3] [e2,f2,b2,c3] [eb2,bb2] ~@2",
  Q: "[db4,g4,c5]@2 [db4,g4,c5] ~@9 [db4,g4,c5]@20", R: "d2@4 f2@2 d2@6 [f3,a3,d4]!2 [f3,a3,d4]@2",
})).s("gm_distortion_guitar").gain(0.36).pan(0.1)

// other · pad new age
const pad_new_age = note("<~@31 [~@8 g5 ~@3 f5 a5@3] [~@16 a4@15 ~] ~@32>").s("gm_pad_new_age").gain(0.2)

// drums · kick
const kick = s("bd").struct(`<
  ~@13 A ~ B@3 C B@3 D@2 E F B@5 G H B C B@3 C B@4 I@4 J I@2 K B@3 C B@4 D ~@5
>`.pickRestart({
  A: "~@11 x ~@4", B: "x ~@2 x ~@4", C: "x ~@2 x ~@2 x ~@9", D: "x", E: "x ~@2 x ~@2 x ~@4 x ~@3 x",
  F: "~@3 x ~@2 x ~@9", G: "x!2 ~ x ~@4", H: "x ~@4 x!2 ~@9", I: "x ~@3 x!2 ~@2", J: "x ~@7 x ~ x ~@2 x ~@2",
  K: "x!2 ~@4 x ~@9",
})).gain(0.8)

// drums · snare
const snare = s("sd").struct("<~@15 A@3 B A@3 C A@11 B A@3 B A@11 D A@3 B A@4 ~@6>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2", C: "~@3 x", D: "x!2 ~@14",
})).gain(0.8)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@13 A B ~@3 C ~@3 D ~ E ~ D ~@7 F ~@3 C ~@3 G ~@3 H ~@3 I ~@3 C ~@2 D G ~@6
>`.pickRestart({
  A: "~@25 x ~@6", B: "~@5 x ~@4 x!5 ~", C: "~@9 x!6 ~", D: "~@7 x", E: "~@13 x!2 ~", F: "~@11 x!4 ~", G: "~@14 x!2",
  H: "~@11 x ~ x!2 ~", I: "~@13 x!3",
})).gain(0.64)

// drums · low tom · soft notes
const low_tom_soft = s("lt").struct("<~@14 [~@9 x ~@6] ~@19 [~@9 x!2 ~@5] ~@30>").gain(0.4)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~@13 A B ~@3 C ~@15 D ~@3 C ~@11 E ~@3 C ~@10>".pickRestart({
  A: "~@31 x", B: "~@6 x ~@8 x ~@8 x ~@7", C: "x!4", D: "~@5 x!3", E: "x!2 ~@6 x ~@3 x ~@3",
})).gain(0.56)

// drums · mid tom
const mid_tom = s("mt").struct("<~@13 [~@15 x] [~ x ~@6] ~@7 [~@7 x] ~@27 [~@11 x!2 ~@3] ~@14>").gain(0.64)

// drums · high tom
const high_tom = s("ht").struct("<~@50 [~@9 x!2 ~@5] ~@14>").gain(0.72)

// drums · crash
const crash = s("cr").struct(`<
  ~@4 A ~@10 B ~@2 C B ~ B@3 D ~ E B ~@2 D ~@2 B C B ~@2 C B ~ B@3 ~ B ~ F B@2 E B ~@2 C B ~ B@3 ~@5
>`.pickRestart({
  A: "~@18 x ~@4 x ~@2 x ~@3 x ~", B: "x", C: "x ~@2 x ~@4", D: "~@6 x ~@8 x", E: "~@3 x ~@4", F: "x ~@12 x ~@2",
})).gain(0.56)

// drums · ride
const ride = s("rd").struct(`<
// … 16 more lines

More by Nek