Strudelify

Sentimiento nuevo

Battiato

KeyC majorTempo124 bpm
0:00/0:00
// Sentimiento nuevo — Battiato
// 124 bpm, 4/4, key C major. 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, 2/4 at bar 29, 4/4 at bar 30, 2/4 at bar 67, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: Full arrangement: all 132 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(124/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(`<
  A B C D A B C D A B C D A B C D E F G H E I J K L E I J M N O P Q R S T U V W X Y Z W AA ~ AB AC AD AE AB AC AD AE AB
  AF AG AH AI AF AJ AK AL AM AF AJ AN AO AP AQ AR AS AT AU AV U AW AX AY AZ AW BA BB ~ A B C D A B C D E F G H E I J K L
  E I J M N O P Q R S T U V W X Y Z W X Y Z W X Y Z W X Y BC@4
>`.pickRestart({
  A: "c2@3 ~@2 c3 ~ g2", B: "g2@3 ~@4 e1", C: "f1@3 ~@2 f2 ~ f1", D: "g1@3 ~@5", E: "c2@3 ~@4 d2",
  F: "g1@3 ~@2 g2 ~ e2", G: "f2@3 ~@2 a2 ~ g2", H: "a2@3 ~@2 c3 ~ g2", I: "g1@3 ~@2 d2 ~ e2", J: "f2@3 ~@2 g2 ~ e2",
  K: "c2@3 ~@5", L: "f2@3 ~ g2@3 ~", M: "c2@4 c3 ~ e2 ~ g2@4 ~@2 d2@2", N: "~ d2 g2@2 a1@2 ~ a2",
  O: "~@2 g2 ~ a2 ~ a2 ~ d2@6 a2@2", P: "~ d3 ~ a2 d2@3 a1", Q: "d2@3 ~ g1@3 b1", R: "~ d2 ~ g1 e1@2 ~ e2",
  S: "~ g#2 ~ b2 f2@3 c3", T: "~ f2 ~ f3 c2@2 ~ g2", U: "~ g2 ~ g2 ~ g2 ~ g2", V: "~ g2 ~ g2 c2@2 ~ g2",
  W: "~ c3 ~ g2 g1@2 ~ d2", X: "~ e2 ~ e1 f1@3 c2", Y: "~ d2 ~ f1 g1@3 d2", Z: "~ e2 ~ b1 c2@2 ~ g2",
  AA: "~ d2 g2 ~ a2 ~@3", AB: "~@4 c2@3 ~", AC: "~ c3 ~ g2 g2@3 ~", AD: "~@3 e1 f1@3 ~", AE: "~ f2 ~ f1 g1@3 ~",
  AF: "~@3 d2 g1@3 ~", AG: "~ g2 ~ e2 f2@3 ~", AH: "~ a2 ~ g2 a2@3 ~", AI: "~ c3 ~ g2 c2@3 ~", AJ: "~ d2 ~ e2 f2@3 ~",
  AK: "~ g2 ~ e2 c2@3 ~", AL: "~@4 f2@3 ~", AM: "g2@3 ~ c2@3 ~", AN: "~@2 g2@2 ~@2 e2@2 c2@4 c3 ~ e2 ~",
  AO: "g2@2 ~ d2 ~ d2 g2@2", AP: "a1@4 ~@2 a2@2 ~@2 g2 ~ a2 ~ a2 ~", AQ: "d2@3 a2 ~ d3 ~ a2", AR: "d2@3 a1 d2@3 ~",
  AS: "g1@3 b1 ~ d2 ~ g1", AT: "e1@2 ~ e2 ~ g#2 ~ b2", AU: "f2@3 c3 ~ f2 ~ f3", AV: "c2@2 ~ g2 ~ g2 ~ g2",
  AW: "c2@2 ~ g2 ~ c3 ~ g2", AX: "g1@2 ~ d2 ~ e2 ~ e1", AY: "f1@3 c2 ~ d2 ~ f1", AZ: "g1@3 d2 ~ e2 ~ b1",
  BA: "g1@2 ~ d2 ~ d2 g2 ~", BB: "a2 ~@7", BC: "[~@3 e2@2 ~@2 b1@2 ~ c2@40 ~@14]/4",
})).s("gm_electric_bass_finger").gain(0.52)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~@16 A B C D A B C A E A B C F G H I J K L M N O N P Q O N R ~ S N P Q O N P Q O N P T U N P V W X N P V B D Y Z B AA
  AB A B A B C B A B ~@2 A B C B A B C B A B C D A B C A E A B C F G H I J K L M N O N P Q O N P Q O N P Q O N P Q AC@2
  ~@2
>`.pickRestart({
  A: "[c3,e3]@2 [g3,c4,e4]@3 ~ [g3,c4,e4]@3 ~ [g3,c4,e4]@2 [c3,e3,g3,c4,e4]@2 [g3,c4,e4]@2", // C
  B: "[g2,d3]@2 [g3,b3,g4]@3 ~ [g3,b3,g4]@3 ~ [g3,b3,g4]@2 [g2,d3,g3,b3,g4]@2 [g3,b3,g4]@2", // G5 G
  C: "[f2,c3]@2 [a3,c4,f4]@3 ~ [a3,c4,f4]@3 ~ [a3,c4,f4]@2 [f2,c3,a3,c4,f4]@2 [a3,c4,f4]@2", // F5 F
  D: "[a2,e3]@2 [a3,c4,e4]@3 ~ [a3,c4,e4]@3 ~ [a3,c4,e4]@2 [a2,e3,a3,c4,e4]@2 [a3,c4,e4]@2", // A5 Am
  E: "[f2,c3]@2 [a3,c4,f4]@3 ~ [a3,c4,f4]@2 [g2,d3]@2 [b3,d4,g4]@3 ~ [b3,d4,g4]@2", // F5 F G5 G
  F: "[c3,e3]@2 [g3,c4,e4]@3 ~ [g3,c4,e4]@2 [g2,d3]@2 [g3,b3,g4]@3 ~ [g3,b3,g4]@2", // C G5 G
  G: "~@2 [g3,b3,g4]@2 [g2,d3,g3,b3,g4]@2 [g3,b3,g4]@2 [a2,e3]@2 [a3,c4,e4]@3 ~ [a3,c4,e4]@2", // G A5 Am
  H: "~@2 [a3,c4,e4]@2 [a2,e3,a3,c4,e4]@2 [a3,c4,e4]@2 d3@2 [a3,d4,f4]@3 ~ [a3,d4,f4]@2", // Am Dm
  I: "~@2 [a3,d4,f4]@2 [d3,a3,d4,f4]@2 [a3,d4,f4]@2 d3@2 [a3,d4,f#4]@3 ~ [a3,d4,f#4]@2", // Dm D
  J: "~@2 [a3,d4,f#4]@2 [d3,a3,d4,f#4]@2 [a3,d4,f#4]@2 [g2,d3]@2 [g3,b3,g4]@3 ~ [g3,b3,g4]@2", // D G5 G
  K: "~@2 [g3,b3,g4]@2 [g2,d3,g3,b3,g4]@2 [g3,b3,g4]@2 [b2,e3]@2 [g#3,b3,e4]@3 ~ [g#3,b3,e4]@2", // G E5 E
  L: "~@2 [g#3,b3,e4]@2 [b2,e3,g#3,b3,e4]@2 [g#3,b3,e4]@2 [c3,f3]@2 [a3,c4,f4]@3 ~ [a3,c4,f4]@2", // E F5 F
  M: "~@2 [a3,c4,f4]@2 [c3,f3,a3,c4,f4]@2 [a3,c4,f4]@2 [c3,e3]@2 [g3,c4,e4]@3 ~ [g3,c4,e4]@2", // F C
  N: "~@2 [g3,c4,e4]@2 [c3,e3,g3,c4,e4]@2 [g3,c4,e4]@2 [g2,d3]@2 [g3,b3,g4]@3 ~ [g3,b3,g4]@2", // C G5 G
  O: "~@2 [g3,b3,g4]@2 [g2,d3,g3,b3,g4]@2 [g3,b3,g4]@2 [c3,e3]@2 [g3,c4,e4]@3 ~ [g3,c4,e4]@2", // G C
  P: "~@2 [g3,b3,g4]@2 [g2,d3,g3,b3,g4]@2 [g3,b3,g4]@2 [f2,c3]@2 [a3,c4,f4]@3 ~ [a3,c4,f4]@2", // G F5 F
  Q: "~@2 [a3,c4,f4]@2 [f2,c3,a3,c4,f4]@2 [a3,c4,f4]@2 [g2,d3]@2 [g3,b3,g4]@3 ~ [g3,b3,g4]@2", // F G5 G
  R: "~ [g3,b3,g4] [g2,d3,g3,b3,g4] [g3,b3,g4] ~@4", S: "~@8 [c3,e3]@2 [g3,c4,e4]@3 ~ [g3,c4,e4]@2",
  T: "~@2 [a3,c4,f4]@2 [f2,c3,a3,c4,f4]@2 [a3,c4,f4]@2 [a2,e3]@2 [a3,c4,e4]@3 ~ [a3,c4,e4]@2", // F A5 Am
  U: "~@2 [a3,c4,e4]@2 [a2,e3,a3,c4,e4]@2 [a3,c4,e4]@2 [c3,e3]@2 [g3,c4,e4]@3 ~ [g3,c4,e4]@2", // Am C
  V: "~@2 [a3,c4,f4]@2 [f2,c3,a3,c4,f4]@2 [a3,c4,f4]@2 [c3,e3]@2 [g3,c4,e4]@3 ~ [g3,c4,e4]@2", // F C
  W: "~@2 [g3,c4,e4]@2 [c3,e3,g3,c4,e4]@2 [g3,c4,e4]@2 [f2,c3]@2 [a3,c4,f4]@3 ~ [a3,c4,f4]@2", // C F5 F
  X: "[g2,d3]@2 [b3,d4,g4]@3 ~ [b3,d4,g4]@2 [c3,e3]@2 [g3,c4,e4]@3 ~ [g3,c4,e4]@2", // G5 G C
  Y: "d3@2 [a3,d4,f4]@3 ~ [a3,d4,f4]@3 ~ [a3,d4,f4]@2 [d3,a3,d4,f4]@2 [a3,d4,f4]@2", // Dm
  Z: "d3@2 [a3,d4,f#4]@3 ~ [a3,d4,f#4]@3 ~ [a3,d4,f#4]@2 [d3,a3,d4,f#4]@2 [a3,d4,f#4]@2", // D
  AA: "[b2,e3]@2 [g#3,b3,e4]@3 ~ [g#3,b3,e4]@3 ~ [g#3,b3,e4]@2 [b2,e3,g#3,b3,e4]@2 [g#3,b3,e4]@2", // E5 E
  AB: "[c3,f3]@2 [a3,c4,f4]@3 ~ [a3,c4,f4]@3 ~ [a3,c4,f4]@2 [c3,f3,a3,c4,f4]@2 [a3,c4,f4]@2", // F5 F
  AC: "[~@3 [g3,b3,g4]@2 [g2,d3,g3,b3,g4]@2 ~ g3@2 [c3,e3,g3,c4,e4]@20 ~@2, ~@7 [b3,g4]@2 ~@23]/2", // G C Em
})).s("gm_acoustic_guitar_steel").gain(0.2).pan(0.4)

// other · pad metallic
const pad_metallic = note(`<
  A B C D E B C F ~@29 G H@5 I ~@31 H@6 ~@3 A B C D E B C F ~@20 G H@5 J K ~@12
>`.pickRestart({
  A: "~@2 g5!2 g5@2 ~@10", B: "g5!3 g5@2 ~@5 f5!2 f5@2 ~@2", C: "~@2 e5!2 e5@2 ~@4 c5!2 c5@2 ~@2",
  D: "~ e5!3 e5@2 ~@4 d5@2 ~ e5@2 ~", E: "f5@2 ~ g5@2 ~@11", F: "~ e5!3 e5@2 ~@10", G: "~@8 g5!8", H: "g5!16",
  I: "g5!8 ~@8", J: "g5!8 ~@2 e5!2 e5@2 ~@2", K: "~@2 c5!2 c5@2 ~@3 e5!3 e5@2 ~@2",
})).s("gm_pad_metallic").gain(0.8).pan(0.4)

// other · vibraphone
const vibraphone = note("<~@16 A B@2 C D ~ E F ~@29 G H I J K L M N ~@30 A B@2 C D ~ E F ~@33>".pickRestart({
  A: "~@6 c5!3 ~ g4 ~ c5 ~ g5 ~", B: "[~@8 g4 ~ g4 ~ g4 ~ a4@10 ~@8]/2", C: "a4 e4 a4 e4 a4 e4 a4 e4",
  D: "c4 g4 ~ c4 g4 ~ c4 g4", E: "f4@2 ~@2 e4@2 f4@2 ~@2 e4@2 f4@2 g4 ~", F: "g4 f4 e4@6 ~@8", G: "~@14 c5!2",
  H: "c5 ~ g4 ~ c5 ~ g5 ~@9", I: "g4 ~ g4 ~ g4 ~ a4@10", J: "~@4 a4 e4 a4 e4", K: "a4 e4 a4 e4 c4 g4 ~ c4",
  L: "g4 ~ c4 g4 ~@4", M: "~@4 f4 ~ e4 f4", N: "~@2 e4@2 f4@2 g4 ~ g4 f4 e4@6",
})).s("gm_vibraphone").gain(0.64).pan(0.7)

// other · lead 8 bass lead
const lead_8_bass_lead = note("<~@37 A B C D E B F ~@31 G H I H G H ~@51>".pickRestart({
  A: "~@8 c3@2 g3 ~@3 g3 ~", B: "c3@2 g3!2 c3@2 g3 ~ g2@2 g3 ~@3 g3 ~", C: "g2@2 g3!2 g2@2 g3 ~ f2@2 f3 ~@3 f3 ~",
  D: "f2@2 f3!2 f2@2 f3 ~ g2@2 g3 ~@3 g3 ~", E: "g2@2 g3!2 g2@2 g3 ~ c3@2 g3 ~@3 g3 ~", F: "g2@2 g3!2 g2@2 g3 ~@9",
  G: "c3@2 g3 ~@3 g3 ~ c3@2 g3!2 c3@2 g3 ~", H: "g2@2 g3 ~@3 g3 ~ g2@2 g3!2 g2@2 g3 ~",
  I: "f2@2 f3 ~@3 f3 ~ f2@2 f3!2 f2@2 f3 ~",
})).s("gm_lead_8_bass_lead").gain(0.4).pan(0.3)

// chords · piano
const piano = note("<A B C D A B C E ~@104 F@2 G@2 H@2 I@3 ~@11>".pickRestart({
  A: "[e4,g4]@7 ~ [e4,g4]@6 g5 a5, g5@3 ~", B: "[b3,g4,g5]@8 [b3,g4,f5]@7 ~",
  C: "[a3,f4]@7 ~ [a3,f4]@6 e5 f5, e5@13 ~@3", D: "[b3,g4,e5]@7 ~ d5@3 e5@3 f5@2, ~@8 [b3,g4]@7 ~",
  E: "[b3,g4]@7 ~ [b3,g4]@7 ~, e5@15 ~", F: "[~@8 [e4,g4]@7 ~ [e4,g4]@6 g5 a5 [b3,g4,g5]@8, ~@2 g5@3 ~@3]/2",
  G: "[[b3,g4,f5]@7 ~ [a3,f4]@7 ~ [a3,f4]@6 e5 f5 [b3,g4,e5]@7 ~, ~@8 e5@13 ~@11]/2", // G7 Dm Em
  H: "[d5@3 e5@3 f5@2 [e4,g4]@7 ~ [e4,g4]@6 g5 a5 [b3,g4,g5]@8, [b3,g4]@7 ~ g5@12 ~@12]/2", // Em
  I: "[[b3,g4,f5]@7 ~ [a3,f4]@7 ~ [a3,f4]@6 e5 f5 [b3,g4]@7 ~ [b3,g4]@7 ~@9, ~@8 e5@13 ~@3 e5@15 ~@9]/3", // G7 Dm Em
})).s("gm_piano").gain(0.48).pan(0.7)

// other · acoustic guitar steel
const acoustic_guitar_steel_2 = note(`<
  ~@16 A B ~ C D@2 E F@2 A B ~@26 G H I J K L M@2 N@2 H I ~@26 A B ~ C D@2 E F@2 A B ~@30
>`.pickRestart({
  A: "~@6 c5!3 ~ g4 ~ c5 ~ g5 ~", B: "~@8 g4 ~ g4 ~ g4 ~ a4@2", C: "a4 e4 a4 e4 a4 e4 a4 e4",
  D: "[c4 g4@2 c4 g4@2 c4 g4@5 ~@4]/2", E: "f4@2 e4 f4@2 e4 f4 g4",
  F: "[g4 f4 e4@6 ~@8 [c5,f5]@7 ~ [d5,g5]@7 ~, ~@15 [f4,a4]@8 [g4,b4]@8 ~]/2", G: "~@14 c5!2",
  H: "c5 ~ g4 ~ c5 ~ g5 ~@9", I: "g4 ~ g4 ~ g4 ~ a4@3 ~@7", J: "~@4 a4 e4 a4 e4", K: "a4 e4 a4 e4 c4 g4@2 c4",
  L: "g4@2 c4 g4@5", M: "[~@8 f4@4 e4@2 f4@4 e4@2 f4@2 g4@2 g4 f4 e4@6]/2",
  N: "[~@8 [c5,f5]@7 ~ [d5,g5]@7 ~@7 c5!2, ~@7 [f4,a4]@8 [g4,b4]@8 ~@9]/2", // F5 G5 F G
})).s("gm_acoustic_guitar_steel").gain(0.4).pan(0.3)

// other · acoustic guitar steel
const acoustic_guitar_steel_3 = note("<~@25 A B C D E ~@32 F G H I J ~@33 A B C D E ~@27>".pickRestart({
  A: "c5 e5 g5 e5 c5 e5 g5 e5 c5 e5 g5 e5 c5 e5 g5 e5", B: "b4 d5 g5 d5 b4 d5 g5 d5 b4 d5 g5 d5 b4 d5 g5 d5",
  C: "a4 c5 f5 c5 a4 c5 f5 c5 a4 c5 f5 c5 a4 c5 f5 c5", D: "g5 c5 e5 c5 g5 c5 e5 c5 g5 b4 d5 b4 g5 b4 d5 b4",
  E: "g5 b4 d5 b4 g5 b4 d5 b4 ~@8", F: "~@8 c5 e5 g5 e5 c5 e5 g5 e5",
  G: "c5 e5 g5 e5 c5 e5 g5 e5 b4 d5 g5 d5 b4 d5 g5 d5", H: "b4 d5 g5 d5 b4 d5 g5 d5 a4 c5 f5 c5 a4 c5 f5 c5",
  I: "a4 c5 f5 c5 a4 c5 f5 c5 g5 c5 e5 c5 g5 c5 e5 c5", J: "g5 b4 d5 b4 g5 b4 d5 b4 g5 b4 d5 b4 g5 b4 d5 b4",
})).s("gm_acoustic_guitar_steel").gain(0.64).pan(0.8)

// chords · pad warm
const pad_warm = note(`<
  A B C B A B C B A B C B A B C B ~@13 D@8 ~@8 E@8 ~@14 F@4 G H@3 ~@8 A B C B A B C B ~@13 D@8 E@8 I@7 J@5
>`.pickRestart({
  A: "[c4,e4,g4]", B: "[b3,d4,g4]", C: "[a3,c4,f4]",
  D: "[~ [c5,e5]@2 f5@2 f#5@2 [b4,g5]@2 [e4,g#4,b4]@2 [f4,a4]@2 e4@2 [d4,b4], ~ a4@6 ~@6 g4@3, ~@3 d5@6 ~@2 c5@4 ~]/8", // C Em E F G
  E: "[~ [c4,e4,g4]@2 [b3,d4,g4]@2 [a3,c4,f4]@2 [b3,d4,g4]@2 [c4,e4,g4]@2 [b3,d4,g4]@2 [a3,c4,f4]@2 [b3,d4,g4]]/8", // C G F G C G F G
  F: "[[c5,e5] f5 f#5 [b4,g5], a4@3 ~, ~ d5@3]/4", G: "[e4,g#4,b4]", H: "[[f4,a4] e4 [d4,b4], c5@2 ~, ~ g4@2]/3",
  I: "[~ [c4,e4,g4]@2 [b3,d4,g4]@2 [a3,c4,f4]@2 [b3,d4,g4]@2 [c4,e4,g4]@2 [b3,d4,g4]@2 [a3,c4,f4]]/7", // C G F G C G F
  J: "[~@8 [b3,d4,g4]@18 [c4,e4,g4]@39 ~@15]/5", // G C
})).s("gm_pad_warm").gain(0.3)

// other · percussive organ
const percussive_organ = note("<~@91 A B C D E F G H ~ A B I J@2 ~@14 K L M N@2 O P Q R S@4>".pickRestart({
  A: "~@4 c5 ~ c5 ~ c5@2 g4 ~@3 c5 ~", B: "d5 c5 b4@6 ~@8", C: "~@2 a4 ~ a4 g4 ~ a4", D: "~ g4 e4@4 ~@10",
  E: "g4@2 ~@4 g4@2 ~@6 g4 ~", F: "a4@2 g4 ~@3 g4@4 ~@6", G: "~@4 f4@2 e4 ~ f4@2 e4 ~ f4@2 g4 ~", H: "g4 f4 e4@5 ~@9",
  I: "~@2 f5 ~ f5 ~ f5 ~ f5 ~@5 f5 ~", J: "[e5 d5 c5@4 d5@18 ~@8]/2", K: "~@10 g4 ~ a4@2 g4 ~",
  L: "a4@2 b4 ~ c5 ~ d5 ~ c5@8", M: "e5@8 d5@7 [a4,b4]", N: "[g4@6 a4 g4 f4@15 ~ g4!2 ~ g4 ~@2 g4@2]/2",
  O: "~@2 g4@2 ~@4 c4@5 ~@3", P: "c4 b3 c4 ~ e4@2 ~@2 f4@2 ~@2 g4 ~ a4@2", Q: "g4@3 ~ f4@3 a4",
  R: "c5 f4 f5 f4 g4@2 d5 g5", S: "[~@3 g4@2 d5@2 g5@2 ~ c5@40 ~@14]/4",
})).s("gm_percussive_organ").gain(0.49).pan(0.3)

// other · percussive organ · soft notes
const percussive_organ_soft = note("<~@43 A@3 ~@35 B@2 ~@49>".pickRestart({
  A: "[~ [e5,a5,c6]@4 ~]/3", B: "[e5,a5,c6]/2",
})).s("gm_percussive_organ").gain(0.27).pan(0.3)

// chords · distortion guitar
const distortion_guitar = note(`<
  ~@7 A B C D E B C D F G ~@7 H G ~@11 I J K L M J N ~ O@2 P@2 Q@2 P@2 R@2 ~@6 S T@2 ~@11 U V W V U V ~@2 B C D E B C D
  F G ~@7 H G ~@31
>`.pickRestart({
  A: "~ [c3,c4]", B: "[g3,g4]@13 ~ [g3,g4]@2", C: "[g3,g4] [f3,f4]", D: "[e3,e4]@13 ~ [e3,e4]@2",
  E: "[e3,e4]@8 [d3,d4]@3 [e3,e4]@2 [f3,f4]@3", F: "[e3,e4] [d3,d4]", G: "[c2,c3]", H: "[f3,c4]@3 ~ [g3,d4]@3 ~",
  I: "~@8 [c3,g3]@3 ~ [c3,g3]@3 ~", J: "[c3,g3]@3 ~ [c3,g3]@3 ~ [g2,d3]@3 ~ [g2,d3]@3 ~",
  K: "[g2,d3]@3 ~ [g2,d3]@3 ~ [f2,c3]@3 ~ [f2,c3]@3 ~", L: "[f2,c3]@3 ~ [f2,c3]@3 ~ [g2,d3]@3 ~ [g2,d3]@3 ~",
  M: "[g2,d3]@3 ~ [g2,d3]@3 ~ [c3,g3]@3 ~ [c3,g3]@3 ~", N: "[g2,d3]@3 ~ [g2,d3]@3 ~@9",
  O: "[~@8 [g3,g4]@13 ~ [g3,g4]@2 [g3,g4]@8]/2", P: "[[f3,f4]@8 [e3,e4]@13 ~ [e3,e4]@2 [e3,e4]@8]/2",
  Q: "[[d3,d4]@3 [e3,e4]@2 [f3,f4]@3 [g3,g4]@13 ~ [g3,g4]@2 [g3,g4]@8]/2", R: "[[d3,d4] [c2,c3]@2 ~]/2",
  S: "~@4 [f3,c4]@3 ~", T: "[[g3,d4]@3 ~ [c2,c3]@8 ~@4]/2", U: "[c3,g3]@3 ~ [c3,g3]@3 ~ [c3,g3]@3 ~ [c3,g3]@3 ~",
  V: "[g2,d3]@3 ~ [g2,d3]@3 ~ [g2,d3]@3 ~ [g2,d3]@3 ~", W: "[f2,c3]@3 ~ [f2,c3]@3 ~ [f2,c3]@3 ~ [f2,c3]@3 ~",
})).s("gm_distortion_guitar").gain(0.4).pan(0.7)

// drums · kick
const kick = s("bd").struct("<A@28 B C@14 D ~ E C@19 D A@15 F ~ A@20 B C@24 G ~@3>".pickRestart({
  A: "x ~@2 x ~ x ~@2", B: "x ~@3 x ~@2 x", C: "~ x ~@2 x ~@2 x", D: "~ x ~@2 x ~@3", E: "~@4 x ~@2 x", F: "x",
  G: "~@3 x ~@6 x ~@5",
})).gain(0.72)

// drums · snare
const snare = s("sd").struct(`<
  A@28 B A@8 B A@5 C ~ D A@19 E A@8 E A@5 E ~@2 A@20 B A@8 B A@7 F A@7 G ~@3
>`.pickRestart({
  A: "~ x ~ x", B: "~@2 x!2 ~@2 x ~", C: "~@2 x!2 ~@4", D: "~@3 x", E: "~@2 x ~@3 x!2", F: "~@4 x ~ x!2 ~@4 x ~@3",
  G: "~@5 x ~@10",
})).gain(0.72)

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

// drums · open hat
const open_hat = s("oh").struct(`<
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@2 A ~@4 B ~ B ~ B ~ B ~ B ~ B ~ B ~@3 B ~ B ~ B ~ B ~ B ~ B ~ B ~ B
  ~@2 B ~@3 A ~ A ~ A ~ A ~ A ~ A ~ A ~@3 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@2 A ~@4 B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B
  ~ B ~ C ~@3
>`.pickRestart({
  A: "~@2 x!2", B: "x!2 ~@2", C: "x ~@4 x ~@10",
})).gain(0.48)
// … 13 more lines

More by Battiato