Strudelify

Come l'acqua

Mango

KeyG minorTempo115 bpm
0:00/0:00
// Come l'acqua — Mango
// 115 bpm, 4/4, key G minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: Full arrangement: all 138 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(115/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(`<
  ~@12 A B A C A B A D E F G H I J B A K J B A D L F M H I A N O P Q R S T P U V W V X V W Y Z O P Q R V W V X V W Y
  AA@2 AB AC A B A C J B A D L F M H I A N O P Q R S T P U V W V X V W Y Z O P Q R V W V X V W AD AE@3 AF A B A C A B A
  C A AG@5 ~@7
>`.pickRestart({
  A: "~@2 g1!2 bb1!3 ~ c2 ~ d2 ~ f2 ~ g2 ~", B: "g1 ~@3", C: "g1 ~ f1 eb1", D: "eb1@4 ~@3 bb1 eb1 ~ eb1 ~ d1 ~ d1 ~",
  E: "c1@4 ~@4 c1@2 c2@2 c2 ~ c2 ~", F: "g1@4 ~@3 d1 g1 ~ g1@2 f1 ~ f1@2", G: "c1@2 ~@3 c1 ~ c1", H: "g1 ~ eb1 ~",
  I: "f1 ~ c1 ~", J: "g1 ~ g1!2 bb1!3 ~ c2 ~ d2 ~ f2 ~ g2 ~", K: "g1@4 ~@4 f1!2 f2 f1 eb1@4",
  L: "c1@4 ~@4 c1 ~ c1@2 c1 ~ c1@2", M: "c1@4 ~@4 c1 ~@3 c2@4, ~@5 c1@3", N: "g1 ~ f1@2",
  O: "bb1@4 ~@2 bb1 ~ c2@2 d2@2 c2@2 bb1@2", P: "g1@4 ~@2 g1 ~ a1@2 bb1@2 a1@2 g1@2", Q: "d1@4 ~@2 d1 ~ gb1@4 ~@4",
  R: "g1@4 ~@2 g1!2 a1@2 bb1@2 a1@2 g1@2", S: "eb1@4 ~@2 eb1 ~ f1@2 g1@2 f1@2 eb1@2",
  T: "f1@4 ~@2 f1 ~ g1@2 a1@2 g1@2 f1@2", U: "d1@4 ~@2 d1@2 a1 ~ d2@2 d1 ~ d1@2", V: "eb1 ~ f1 ~",
  W: "g1@4 ~@2 g1 ~ bb1@2 c2 ~ bb1@2 bb1@2", X: "g1@4 ~@2 g1 ~ c2@4 bb1@2 bb1@2", Y: "eb1@4 ~@2 eb1 ~ f1@4 ~@2 f1 ~",
  Z: "g1@4 ~@2 f1 ~ g1@4 f1@4", AA: "[g1@5 [g1,g2]@3]/2", AB: "[gb1,gb2]", AC: "~@3 c2",
  AD: "eb1@4 ~@2 eb1 ~ f1@4 ~@3 g3", AE: "[g1@9 d2 ~ f3 g3@11 ~, ~@5 f2 ~@6]/3", AF: "~@3 d2",
  AG: "[g1@4 ~@10 g1@53 ~@13]/5",
})).s("gm_electric_bass_finger").gain(0.8)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  A@5 ~ B C D E F G H I@2 J ~@3 K@6 L@3 M@3 ~ K@6 N O P Q R S T U S U V W V W X W Y Z@2 Q R AA V W V W X W Y ~@8 AB AC ~
  AD@6 AE AF P Q R S T U S U V W V W X W Y Z@2 Q R AA V W V W X W Y ~@5 AG@2 AH@3 ~@15
>`.pickRestart({
  A: "[~@4 f4@3 e4 ~ d4 c4@2 bb3@2 c4 d4@3 c4@4 bb3@4 bb3@3 ~ bb3@5 ~ f4@3 e4 ~ d4 c4@2 bb3@2 c4 d4@3 f2@2 ~@2 c4@4 c4@4 c4@4 ~@14, ~@25 c4@2 ~@13, ~@13 g2@3 ~@4]/5",
  B: "~@2 c5!2 c5@4 c5@4 ~@2 bb4 a4", C: "bb4@2 bb4@4 a4 ~ a4@2 g4 ~ g4 ~ f4 ~", D: "g4@3 ~", E: "~@8 a4!7 ~",
  F: "bb4@4 bb4@4 bb4@3 ~ bb4@3 ~", G: "~@8 a4!2 a4@2 g4!4", H: "bb4@3 ~ bb4@3 ~ bb4@6 ~@2",
  I: "[~@4 g4@3 f4@4 c4@4 ~ [d4,g4]@13 ~@3, ~@15 bb3@10 ~@7]/2", J: "~ bb3 a3 g3, ~@3 g3@4 ~@9, ~@2 f4@5 ~",
  K: "[~@3 bb3@11 ~@2 [eb4,g4]@14 ~@2 g4@14 ~@2 [eb4,g4]@14 ~@2 g4@7 ~ [eb4,g4]@7 ~ a4@7 ~ [eb4,g4]@8, g4 ~@7, ~@2 eb4@11 ~@2 c4@14 ~@2 [bb3,d4]@14 ~@2 c4@14 ~@2 [bb3,d4]@7 ~ bb3@7 ~ [c4,f4]@8 c4@8 ~]/6", // Eb Bb F5
  L: "[~@16 [g4,bb4]@7 ~ [f4,a4]@6 ~@2 [g4,bb4]@15 ~, ~@15 d4@6 ~@2 c4@6 ~@2 d4@14 ~@3]/3", // Gm F Gm
  M: "[[d4,g4,bb4]@7 ~ [f4,a4]@7 ~ g4@4 g4@4 g4@4 g4@3 ~ g4@6 ~@10, ~@8 c4@5 ~@2 g3@16 ~@17, ~@16 d4@19 ~@13]/3", // Gm F
  N: "[bb3,d4,g4]@7 ~", O: "~@2 g4!10 g4@3 ~, ~@8 f3@7 ~",
  P: "~@4 [f4,bb4,d5] ~ [f4,bb4,d5] ~@5 [f4,bb4,d5] ~ [f4,bb4,d5] ~", // Bb
  Q: "~@4 [g4,bb4,d5] ~ [g4,bb4,d5] ~@5 [g4,bb4,d5] ~ [g4,bb4,d5] ~", // Gm
  R: "~@4 [d4,gb4,a4] ~ [d4,gb4,a4] ~@5 [d4,gb4,a4] ~ [d4,gb4,a4] ~", // D
  S: "~@4 [d4,g4,bb4] ~ [d4,g4,bb4] ~@5 [d4,g4,bb4] ~ [d4,g4,bb4] ~", // Gm
  T: "~@4 [bb3,eb4,g4] ~ [bb3,eb4,g4] ~@5 [bb3,eb4,g4] ~ [bb3,eb4,g4] ~", // Eb
  U: "~@4 [c4,f4,a4] ~ [c4,f4,a4] ~@5 [c4,f4,a4] ~ [c4,f4,a4] ~", // F
  V: "~@4 eb4 ~ eb4 ~@5 f4 ~ f4 ~, bb3 c4, ~@3 g4@5 ~@3 a4@5",
  W: "~@4 d4 ~@7 g4@2 [d4,g4] ~, g3@10 bb3@5 ~, ~@3 g4@8 ~@5, ~@3 d4@3 ~@2", X: "~@3 g4@3 eb4 ~@4 a4@3 f4 ~, bb3 c4",
  Y: "~@4 eb4 ~ eb4 ~@5 f4 ~ f4 ~, bb3@3 ~ c4@3 ~, ~@3 g4@5 ~@3 a4@5",
  Z: "[~@14 d4@6 [f4,bb4,d5] ~ [f4,bb4,d5] ~@5 [f4,bb4,d5] ~ [f4,bb4,d5] ~, g3@10 ~@2 bb3@7 ~@13, ~@3 g4@7 f4@6 ~@16, ~@3 d4@3 ~@10]/2", // Bb
  AA: "~@4 [bb3,d4,g4] ~ [bb3,d4,g4] ~@5 [bb3,d4,g4] ~ [bb3,d4,g4] ~", AB: "g4@4 g4@4 g4@4 g4@3 ~", AC: "g4@3 ~@5",
  AD: "[~@16 [eb4,g4]@14 ~@2 g4@14 ~@2 [eb4,g4]@14 ~@2 g4@7 ~ [eb4,g4]@7 ~ a4@7 ~ [eb4,g4]@8, ~@15 c4@14 ~@2 [bb3,d4]@14 ~@2 c4@14 ~@2 [bb3,d4]@7 ~ bb3@7 ~ [c4,f4]@8 c4@8 ~]/6", // Eb Bb F5
  AE: "[bb3,d4,g4]@9 ~ g4@3 f4@3", AF: "d4@3 f4@3 d4@3 c4@3 d4@3 ~", AG: "[~@2 c5@3 ~ c5@4 bb4@2 a4@2 bb4@14 ~@4]/2",
  AH: "[~@16 g4@19 ~@13, ~@14 g3@15 ~@19, ~@15 d4@19 ~@14]/3",
})).s("gm_electric_guitar_clean").gain(0.56).pan(0.6)

// chords · accordion
const accordion = note("<~@60 A B C D@2 E F G@2 ~@37 A B C D@2 E F G@2 H I@3 ~ J K@2 L M N O ~@11>".pickRestart({
  A: "~@2 eb5 d5 c5@3 bb4, ~@4 d5 ~@11", B: "d5@2 g4 g4@5", C: "~@2 eb5 d5 c5 bb4 f5 eb5, ~@4 d5 ~@7 e5 ~@3",
  D: "[~@7 a5 g5 ~@2 a5 bb5 ~ bb5@5 ~ eb5@2 d5@2 c5@6 bb4@2, d5@12 ~@2 a5 ~@5 d5 ~@11]/2",
  E: "d5@4 g4@2 g4@5 ~ eb5@2 [a4,c5]@2, ~@11 a4@3 ~@2", F: "~@2 d5@2 [a4,c5]@2 [g4,bb4] [a4,c5], bb4 ~",
  G: "[[bb4,d5]@23 ~@9]/2", H: "~@3 d4 a4 ~ bb4 ~@3 bb4 ~ a4 ~ g4 ~", I: "[~@8 f5@15 ~ f5@23 ~]/3",
  J: "~@11 d5 eb5 ~ d5 f5", K: "[d5@23 ~@9]/2", L: "~@2 g4@3 ~ [g4,bb4] ~@7 [g4,bb4] ~",
  M: "~@2 bb4@3 ~ [g4,bb4] ~@2 [f4,a4]@2 ~@5", N: "~@6 [g4,bb4] ~@7 g4 ~", O: "~@2 [g4,bb4]@2 ~@2 [g4,bb4] ~ f4@5 ~@3",
})).s("gm_accordion").gain(0.63).pan(0.7)

// chords · accordion · soft notes
const accordion_soft = note("<~@115 A B ~@6 C D E F ~@11>".pickRestart({
  A: "~ d4 g4 ~@13", B: "g4@7 ~@9", C: "~@2 bb4@3 ~@5 [g4,bb4]@3 ~@3", D: "~@2 g4@3 ~@8 [eb4,g4]@2 ~",
  E: "~@2 [g4,bb4]@2 ~@6 [g4,bb4]@3 ~ bb4 ~", F: "~@8 a4@5 ~@3",
})).s("gm_accordion").gain(0.39).pan(0.7)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  ~@4 A B C D C E F G F E F D H I J K L F L M N A O F P H I J K L F L M N A Q R S T U V W F X Y F Y F Y F Y Z R S T U Y
  F Y F Y F Y A B C D F E F D H I J K L F L M N A Q R S T U V W F X Y F Y F Y F Y Z R S T U Y F Y F Y F Y A B C AA F E F
  D F E F D F AB ~@11
>`.pickRestart({
  A: "g3 ~ [d4,g4,bb4]@3 ~ [d4,g4,bb4] ~ g3@2 [d4,g4,bb4]@3 ~ [d4,g4,bb4] ~", // Gm
  B: "g3 ~ [d4,g4,bb4]@3 ~ [d4,g4,bb4] ~ [f3,c4,f4,a4]@8", // Gm F
  C: "g3@2 [d4,g4,bb4]@3 ~ [d4,g4,bb4] ~ g3 ~ [d4,g4,bb4]@3 ~ [d4,g4,bb4] ~", // Gm
  D: "g3@2 [d4,g4,bb4]@3 ~ [d4,g4,bb4] ~ [f3,c4,f4,a4]@3 ~ [eb3,bb3,eb4,g4]@4", // Gm F Eb
  E: "g3@2 [d4,g4,bb4]@3 ~ [d4,g4,bb4] ~ [f3,c4,f4,a4]@8", // Gm F
  F: "g3@2 [d4,g4,bb4]@3 ~ [d4,g4,bb4] ~ g3@2 [d4,g4,bb4]@3 ~ [d4,g4,bb4] ~", // Gm
  G: "g3@2 [d4,g4,bb4]@3 ~ [d4,g4,bb4] ~ [f3,c4,f4,a4]@4 [eb3,bb3,eb4,g4]@4", // Gm F Eb
  H: "g3@2 [d4,g4,bb4]@2 ~@2 [d4,g4,bb4] ~ g3@2 [d4,g4,bb4]@2 ~@2 [d4,g4,bb4] ~", // Gm
  I: "g3@2 [d4,g4,bb4]@3 ~ [d4,g4,bb4] ~ g3@2 [d4,g4,bb4]@2 ~@2 [d4,g4,bb4] ~", // Gm
  J: "g3@2 [d4,g4,bb4]@3 ~ [d4,g4,bb4] ~ g3 ~ [d4,g4,bb4] ~ f3@2 [c4,f4,a4]@2", // Gm F
  K: "eb3@2 [bb3,eb4,g4]@3 ~ [bb3,eb4,g4] ~ eb3@2 [bb3,eb4,g4] ~ d3@2 [bb3,d4,f4] ~", // Eb Bb
  L: "c3@2 [c4,eb4,g4]@3 ~ [c4,eb4,g4] ~ c3@2 [c4,eb4,g4]@3 ~ [c4,eb4,g4] ~", // Cm
  M: "g3@2 [d4,g4,bb4]@3 ~ [d4,g4,bb4] ~ eb3@2 [bb3,eb4,g4]@3 ~ [bb3,eb4,g4] ~", // Gm Eb
  N: "f3@2 [c4,f4,a4]@3 ~ [c4,f4,a4] ~ c3@2 [c4,eb4,g4]@3 ~ [c4,eb4,g4] ~", // F Cm
  O: "g3@2 [d4,g4,bb4]@3 ~ [d4,g4,bb4] ~ [f3,c4,f4]@6 [c4,f4,a4] ~", // Gm F5 F
  P: "g3@2 [d4,g4,bb4]@3 ~ [d4,g4,bb4] ~ [f3,c4,f4,a4]@4 [eb3,bb3,eb4,g4]@3 ~", // Gm F Eb
  Q: "g3@2 [d4,g4,bb4]@3 ~ [d4,g4,bb4] ~ [f3,a3,f4]@8", // Gm F
  R: "bb3@2 [f4,bb4,d5]@3 ~ [f4,bb4,d5] ~ bb3@2 [f4,bb4,d5]@3 ~ [f4,bb4,d5] ~", // Bb
  S: "g3@2 [g4,bb4,d5]@3 ~ [g4,bb4,d5] ~ g3@2 [g4,bb4,d5]@3 ~ [g4,bb4,d5] ~", // Gm
  T: "d3@2 [gb4,a4,d5]@3 ~ [gb4,a4,d5] ~ d3@2 [gb4,a4,d5]@3 ~ [gb4,a4,d5] ~", // D
  U: "g3@2 [g4,bb4,d5]@3 ~ [g4,bb4,d5] ~ g3@2 [g4,bb4,d5] ~@3 [g4,bb4,d5] ~", // Gm
  V: "eb3@2 [bb3,eb4,g4]@3 ~ [bb3,eb4,g4] ~ eb3@2 [bb3,eb4,g4]@3 ~ [bb3,eb4,g4] ~", // Eb
  W: "f3@2 [c4,f4,a4]@3 ~ [c4,f4,a4] ~ f3@2 [c4,f4,a4]@3 ~ [c4,f4,a4] ~", // F
  X: "d3@2 [d4,f4,a4]@3 ~ [d4,f4,a4] ~ d3@2 [d4,f4,a4]@3 ~ [d4,f4,a4] ~", // Dm
  Y: "eb3@2 [bb3,eb4,g4]@3 ~ [bb3,eb4,g4] ~ f3@2 [c4,f4,a4]@3 ~ [c4,f4,a4] ~", // Eb F
  Z: "g3@2 [d4,g4,bb4]@3 ~ [d4,g4,bb4] ~ [d4,g4,bb4]@4 [f4,a4,c5]@4", // Gm F
  AA: "g3@2 [d4,g4,bb4]@3 ~ [d4,g4,bb4] ~ [c4,f4,bb4]@8", AB: "g3@2 [d4,g4,bb4]@3 ~ [d4,g4,bb4] ~ [f3,c4,f4,a4]@6 ~@2",
})).s("gm_string_ensemble_1").gain(0.51).pan(0.7)

// chords · string ensemble 1
const string_ensemble_1_2 = note(`<
  ~@40 A@2 B C D E F G H I J K L M N O A@2 B C H I J K L M N ~@4 P Q R ~@12 A@2 B C D E F G H I J K L M N O A@2 B C H I
  J K L M N ~@4 P Q R ~ P Q R ~@14
>`.pickRestart({
  A: "[bb3 g3, f4]/2", B: "[d3,gb4]", C: "[g3,g4]@3 [f3,f4]", D: "[eb3,eb4]", E: "[f3,f4]", F: "[g3,g4]",
  G: "[d3,a4]@15 ~", H: "eb3 f3", I: "~@10 bb4@4 d5 ~, g3@7 ~", J: "eb3 [f3,c4], eb4@3 ~@5",
  K: "~@10 bb4@4 bb4 ~, g3@15 ~", L: "bb4 eb5 [f3,c5]@2, eb3@7 ~@9", M: "[g3,d5]", N: "g4 bb4 [f3,a4]@2, eb3@7 ~@9",
  O: "[g3,bb4]@3 [f3,c5]", P: "g3 ~ g3@4 ~@4 g3@4 ~ g3", Q: "~@2 g3@3 ~ g3 ~ g3@7 ~",
  R: "~@2 g3@3 ~ g3 ~@3 g3@3 ~ g3 ~",
})).s("gm_string_ensemble_1").gain(0.48).pan(0.4)

// other · shamisen
const shamisen = note(`<
  ~@40 A B C B ~@12 A B C B D B D B D B D E F G H E I E I ~@11 A B C B J K B L M B M B M B M N A B C B D B D B D B D E F
  G H E I E I E F G H E I ~@11
>`.pickRestart({
  A: "~@4 bb4 ~ f4 ~@5 bb4 ~ f4 ~", B: "~@4 g4 ~ d4 ~@5 g4 ~ d4 ~", C: "~@4 gb4 ~ d4 ~@5 gb4 ~ d4 ~",
  D: "~@4 g4 ~ eb4 ~@5 f4 ~ c4 ~", E: "g3 d4 ~ [c4,g4] [f4,a4] g3 [g4,bb4] d4 ~ [g3,d4] g4!2 [f4,a4] d4 [g4,bb4] ~",
  F: "g3 d4 ~ [c4,g4] [f4,a4] g3 [g4,bb4] d4 ~ [c4,f4] g4!2 [c4,a4] d4 [d4,bb4] d4", // C5 F Gm F5 F Gm
  G: "g3 d4 ~ [d4,g4] [d4,a4] ~ [g4,bb4] d4 ~ [g3,d4] g4!2 [f4,a4] d4 [g4,bb4] d4", // G5 D5 Gm G5 F Gm
  H: "g3 d4 ~ [c4,g4] [f4,a4] g3 [g4,bb4] d4 ~ [g3,d4] c4 g4 [d4,a4] f3 [d4,f4] ~", // C5 F Gm G5 D5 Dm
  I: "g3 d4 ~ [c4,g4] [f4,a4] g3 [g4,bb4] d4 ~ [c4,f4] g4 ~ [c4,a4] ~ bb4 ~", J: "~@4 g4 ~ eb4 ~@5 g4 ~ eb4 ~",
  K: "~@4 a4 ~ f4 ~@5 a4 ~ f4 ~", L: "~@4 f4 ~ d4 ~@5 f4 ~ d4 ~", M: "~@4 g4 ~ eb4 ~@5 a4 ~ f4 ~",
  N: "~@4 g4 ~ d4 ~@5 f4 ~ c4 ~",
})).s("gm_shamisen").gain(0.38).pan(0.6)

// other · shamisen · soft notes
const shamisen_soft = note("<~@67 A B C D A E A E ~@38 A B C D A E A E A B C D A E ~@11>".pickRestart({
  A: "~@8 g3 ~@6 d4", B: "~@8 f3 ~@7", C: "~@5 g3 ~@2 g3 ~@7", D: "~@8 g3 ~@7", E: "~@8 f3 ~@2 g4 ~@2 d4 ~",
})).s("gm_shamisen").gain(0.19).pan(0.6)

// chords · sitar
const sitar = note(`<
  A@2 B@2 ~ C D@2 E F G H I J@2 K ~@3 L@8 ~ M N@2 ~ L@8 ~@35 O@2 ~ P@7 Q@8 ~@25 R S T U@2 ~@15
>`.pickRestart({
  A: "[f4@3 e4 ~ d4 c4@2 bb3@2 c4 d4@3 c4@4 bb3@13 ~]/2",
  B: "[f4@3 e4 ~ d4 c4@2 bb3@2 c4 d4@3 c4@4 f2@2 ~@2 f2@2 g2@4 g2@4, ~@9 c4@2 c4@2 ~@3, ~@5 g2 ~@2]/2", C: "~@14 c5!2",
  D: "[c5@8 ~@2 bb4 a4 bb4@2 bb4@4 a4 ~ a4@2 g4 ~ [g4,a4] ~ f4 ~ g4@4, ~@20 bb4 ~@11]/2", E: "g4@4 g4@4 g4@7 ~",
  F: "~@8 f4!2 ~ f4!3 f4@2, ~ a4", G: "g4@3 ~ g4@3 ~ g4@3 ~@5, bb4", H: "~@8 f4@3 ~ eb4@3 ~", I: "g4@2 g4@2 g4@3 ~",
  J: "[~@4 g4@4 f4@3 c4@3 bb3@16 ~@2]/2", K: "~@4 f4@11 ~, ~@3 bb3@4 ~@9",
  L: "[g4@2 eb4 ~ g4@4 ~@6 bb3 ~ g4@4 g4@4 ~@6 g3 bb3 g4@4 g4@4 ~@8 g4@4 g4@4 ~@7 d4 g4@7 ~ g4@7 f4 a4@7 ~ eb4 ~@7 g3@2 ~@30, ~@3 bb3@9 ~@3 c4@12 ~@20 c4@12 ~@4 bb3@7 ~ bb3@7 ~ c4@7 ~ c4@9 ~@32, ~@16 eb4 ~@14 d4@14 ~@3 eb4 ~@39 g4@25 ~@15]/8",
  M: "g4@7 ~ f4@4 eb4@4", N: "[g4@7 ~@13 g4@3 ~@9, d4@15 ~ d4@16, ~@8 g4@11 ~@13]/2",
  O: "[g4@7 ~@13 g4@3 ~@9, ~@8 g4@11 ~@13, ~ d4]/2",
  P: "[g4@13 ~ bb3 ~ g4@4 g4@4 ~@6 g3 bb3 g4@4 g4@4 ~@8 g4@4 g4@4 ~@7 d4 g4@7 ~ g4@7 f4 a4@7 ~ g4@14 ~@2 g4@2 d4 bb4@2 c4 a4@2, ~@15 c4@12 ~@20 c4@12 ~@4 bb3@7 ~ bb3@7 ~ c4@7 ~ c4@9 ~@16, ~@16 eb4 ~@14 d4@14 ~@3 eb4 ~@39 eb4 ~@23]/7",
  Q: "[d4 ~@2 c4 ~@2 bb4@2 c4@3 f4@3 d4@114, ~@2 f4@3 d4@4 ~@119]/8", R: "~@4 c5@3 ~ c5@2 bb4@2 a4@2 bb4@2",
  S: "a4@2 bb4@3 ~ bb4@3 ~ bb4@3 ~@3", T: "~@15 g3", U: "[g4@25 ~@7]/2",
})).s("gm_sitar").gain(0.25).pan(0.4)

// chords · sitar · soft notes
const sitar_soft = note("<~@3 A ~@6 B C ~@7 D E@3 ~@2 F G ~@3 H@2 D E@3 ~@2 F G ~@36 H@2 ~ E@3 ~@56>".pickRestart({
  A: "~@10 c4@5 ~, ~@5 f2 ~@2", B: "~@12 g4@3 ~", C: "g4 ~@7", D: "~@8 g4@5 ~@3", E: "~@4 g4@3 ~",
  F: "~@2 g3 ~ g3 ~ g3 ~", G: "g3 ~ g3 ~ g3 ~ g3 ~", H: "[~@8 g4@3 ~ g4@17 ~@3]/2",
})).s("gm_sitar").gain(0.15).pan(0.4)

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

// drums · rim
const rim = s("rim").struct("<~@12 A ~@6 B ~@4 C ~@5 D ~@2 E F G@2 F ~@40 B E F G@3 ~@54>".pickRestart({
  A: "~@3 x ~@4", B: "~@6 x ~@2 x ~@6", C: "~@7 x ~@8", D: "~@6 x ~@2 x ~@4 x ~", E: "~@3 x ~ x ~@2",
  F: "~@2 x ~@3 x ~@2 x ~@6", G: "~ x ~ x ~@4",
})).gain(0.72)

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

// drums · low tom
const low_tom = s("lt").struct(`<
  A@4 B C A D E B E A E F A G A@10 H I J K A@9 H ~@7 L ~@18 M ~ B E N E ~ A@2 K A O@2 A O A@4 P ~@7 L ~@7 L ~@10 M ~@3 Q
  ~ L E N ~ L E O ~ M ~@11
>`.pickRestart({
  A: "x!2", B: "~ x", C: "x ~@7 x ~@6 x", D: "x ~@7 x ~ x!3 ~ x ~", E: "x", F: "~@4 x ~@2 x",
  G: "x ~@7 x ~@2 x ~@2 x ~", H: "x ~@10 x ~@2 x ~", I: "~ x ~@2 x ~@3", J: "x ~@7 x!2 ~@6", K: "x ~@2 x!2 ~@3",
  L: "~@7 x", M: "~@11 x ~@2 x ~", N: "x ~ x!2", O: "x ~@3 x ~@2 x", P: "x ~@5 x!2", Q: "~@2 x!2",
})).gain(0.56)

// drums · low tom · soft notes
const low_tom_soft = s("lt").struct("<~@7 A B C B ~ B C ~@53 B C B ~ B C ~@44 B C B ~ B C B ~ B C ~@11>".pickRestart({
  A: "~@9 x ~@6", B: "~ x", C: "x",
// … 78 more lines

More by Mango