Strudelify

Solo Quiero Amarte

Ricky Martin

KeyB♭ minorTempo98 bpm
0:00/0:00
// Solo Quiero Amarte — Ricky Martin
// 98 bpm, 4/4, key A# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 82, 4/4 at bar 83) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: Full arrangement: all 106 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(98/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 · "bass"
const bass = note(`<
  ~@4 A B C D E B C F G B C H I J K J L M N O P M N O Q R S T U M N V W X Y Z AA AB ~ AC AD AE AF AG AH AI AJ J AK M AL
  O AM M AL AN Q AO AP T AQ M N V AR ~@8 AS@2 AT AU@2 AV AW AX AY AV AW AX AZ BA BB BC BD AV AW BE BF AV AW AX AY AV AW
  AX BG
>`.pickRestart({
  A: "~@10 ab1@2 gb2@3 ~", B: "bb1@2 bb1@2 ~@3 bb1 f1@2 f1@2 ab1@2 bb1@2", C: "ab1@2 ab1@2 ~@3 ab1 eb1@2 eb1@2 ab1@3 ~",
  D: "eb1@2 eb1@2 ~@3 eb1 eb1@2 db2@2 eb2 bb1 eb1@2", E: "gb1@2 gb1@2 ~@2 gb1@2 gb1@2 ab1 gb1 f1@2 a1@2",
  F: "gb1@2 gb1@2 ~@3 gb1 db1@2 db1@2 gb1@2 db1@2", G: "ab1@2 ab1@2 ~@3 ab1 eb1@2 eb1@2 a1@2 f1 a1",
  H: "eb1 ~ eb1@2 ~@3 eb1!2 ~ eb1@3 ~ eb1@2", I: "f1@2 f1@2 ~@3 f1 f2@2 f2@2 a2@2 f2@2",
  J: "gb1@2 gb1@2 ~@3 gb1 gb1@2 gb1@3 ~@3", K: "gb1@2 gb1@2 ~@3 gb1!2 ~ db1@2 ~ db1@3",
  L: "gb1@2 gb1@2 ~@2 gb1@2 ab1@2 ~ ab1@2 ab1 f1 a1", M: "bb1@2 bb1@2 ~@3 bb1 bb1@2 bb1@4 bb1@2",
  N: "ab1@2 ab1@2 ~@3 ab1 ab1@2 ab1@4 f1@2", O: "eb1@2 eb1@2 ~@3 eb1 eb1@2 eb1@4 eb1@2",
  P: "gb1 ~ gb1@2 ~@3 gb1 gb1@2 ab1@2 f1@2 ab1@2", Q: "gb1 ~ gb1@2 ~@3 gb1 gb1@2 gb1@3 ab1 f1@2",
  R: "db2@2 db2@2 ~@3 db2 db2@2 db2@2 db1 db2 db1@2", S: "c2@2 c2@2 ~@3 c2 c2@2 c2@3 ~ c2@2",
  T: "eb1@2 eb1@2 ~@3 eb1!2 ~ eb1@3 f1 eb1@2", U: "gb1 ~ gb1@2 ~@3 gb1 gb1@2 gb1@2 ~ f1!2 a1",
  V: "eb1@2 eb1@2 ~@3 eb1 f1@2 f1@4 f1@2", W: "gb1@2 gb1@2 ~@3 gb1 gb1@2 gb1@4 gb1@2",
  X: "bb1@2 bb1@2 ~@3 bb1 bb1@2 bb1@4 bb1 f1", Y: "ab1@2 ab1@2 ~@3 ab1 ab1@2 ab1@3 eb1 ab1 eb1",
  Z: "eb1@2 eb1@3 ~@2 eb1 eb1@2 eb1@3 ~ eb1 f1", AA: "gb1@2 gb1@3 ~@2 gb1 gb1@2 ab1@2 f1@2 a1 f1",
  AB: "bb1 ~ bb1@2 ~@12", AC: "gb1@2 gb1@2 ~@3 gb1 gb1@2 gb1@4 ~ gb1", AD: "ab1 ~ ab1@2 ~@3 ab1 ab1@2 ab1@2 f1@2 ab1@2",
  AE: "bb1@2 bb1@2 ~@3 bb1 bb1@2 bb1@2 ~ bb1 f1@2", AF: "ab1@2 ab1@2 ~@3 ab1 ab1@2 ab1@3 ~ bb1 ab1",
  AG: "gb1@2 gb1@2 ~@3 gb1 gb1@2 gb1@3 ~@2 gb1", AH: "f1 ~ f1@2 ~@3 f1 f1@2 f1@3 ~ f1@2",
  AI: "gb1@2 gb1@2 ~@3 db1 gb1@2 gb1@3 ~ db1 ~", AJ: "gb1@2 gb1@2 ~@3 gb1 gb1@2 db1@4 f1@2",
  AK: "gb1@2 gb1@2 ~@3 gb1 gb1@2 gb1@2 f1@2 a1@2", AL: "ab1@2 ab1@2 ~@3 ab1 ab1@2 ab1@4 gb1@2",
  AM: "gb1 ~ gb1@2 ~@3 gb1 gb1@2 gb1@2 f1@2 a1@2", AN: "eb1@2 eb1@2 ~@3 eb1 eb1@2 eb1@3 eb1 ab1@2",
  AO: "db1@2 db1@2 ~@3 db1 db1@2 db1@3 db2 db1@2", AP: "c2@2 c2@2 ~@3 c2 c2@2 c2@3 ~ bb1@2",
  AQ: "gb1 ~ gb1@2 ~@3 gb1 gb1@2 gb1@2 ~ f1 a1@2", AR: "gb1@2 gb1@2 ~@3 gb1 gb1@2 gb1@2 ab1@2 f1 ab1", AS: "gb1",
  AT: "eb1", AU: "[gb1@23 ~ bb1@2 bb1@2 ~@3 bb1]/2", AV: "f1@2 f1@2 bb1@2 f1@2 ab1@2 ab1@2 ~@3 ab1",
  AW: "eb1@2 eb1@2 ab1@2 gb1@2 eb1@2 eb1@2 ~@3 eb1", AX: "eb1@2 eb1@3 ~ bb1 eb1 gb1@2 gb1@2 ~@3 gb1",
  AY: "gb1@2 gb1@3 f1 a1@2 bb1@2 bb1@2 ~@3 bb1", AZ: "gb1@2 gb1@3 f1!2 a1 db1@2 db1@2 ~@3 db1",
  BA: "db1 ~ db1@2 db2 db1 db2 db1 c2@2 c2@2 ~@3 c2", BB: "c2@2 c2@3 c2 ab1@2 eb1@2 eb1@2 ~@3 eb1",
  BC: "eb1 ~ eb1@3 eb1 f1@2 gb1@2 gb1@2 ~@3 gb1", BD: "gb1 ~ gb1@3 gb1!2 ab1 bb1@2 bb1@2 ~@3 bb1",
  BE: "f1@2 f1@2 ~@2 f1@2 gb1@2 gb1@2 ~@3 gb1", BF: "ab1@2 ab1@2 ab2 eb2 c2@2 bb1@2 bb1@2 ~@3 bb1",
  BG: "gb1@2 gb1@3 ~@11",
})).s("gm_electric_bass_finger").gain(0.72)

// other · orchestra hit · "orch hit"
const orchestra_hit = note("<~ A ~@19 A ~@19 A ~@11 A ~@27 B ~@24>".pickRestart({
  A: "[bb4,bb5]@3 ~@13", B: "~@8 [bb4,bb5]@3 ~@5",
})).s("gm_orchestra_hit").gain(0.8)

// chords · synth bass 2 · "synth 1"
const synth_bass_2 = note(`<
  ~@5 A B C D ~@12 A B C D A B C D E F G D A B H D A B C D ~@12 A B C D A B C D E F G D A B H D ~@12 I J K L M J K L N O
  P Q M J R S M J K L M J K L T
>`.pickRestart({
  A: "bb3!2 [bb3,db4] bb3!2 [bb3,db4] bb3!2 [bb3,db4] bb3!2 [bb3,db4] bb3!2 [bb3,db4] bb3", // Bbm
  B: "ab3!2 [ab3,eb4] ab3!2 [ab3,eb4] ab3!2 [ab3,eb4] ab3!2 [ab3,eb4] ab3!2 [ab3,eb4] ab3", // Ab5
  C: "eb3!2 [eb3,bb3] eb3!2 [eb3,bb3] eb3!2 [eb3,bb3] eb3!2 [eb3,bb3] eb3!2 [eb3,bb3] eb3", // Eb5
  D: "gb3!2 [gb3,db4] gb3!2 [gb3,db4] gb3!2 [gb3,db4] gb3!2 [gb3,db4] gb3!2 [gb3,db4] gb3", // Gb5
  E: "db4!2 [db4,ab4] db4!2 [db4,ab4] db4!2 [db4,ab4] db4!2 [db4,ab4] db4!2 [db4,ab4] db4", // Db5
  F: "c4!2 [c4,ab4] c4!2 [c4,ab4] c4!2 [c4,ab4] c4!2 [c4,ab4] c4!2 [c4,ab4] c4", // Fm
  G: "eb4!2 [eb4,bb4] eb4!2 [eb4,bb4] eb4!2 [eb4,bb4] eb4!2 [eb4,bb4] eb4!2 [eb4,bb4] eb4", // Eb5
  H: "gb3!2 [gb3,db4] gb3!2 [gb3,db4] gb3!2 [ab3,db4] ab3!2 [ab3,db4] ab3!2 [ab3,db4] ab3", // Gb5 Db5
  I: "~@8 bb3!2 [bb3,db4] bb3!2 [bb3,db4] bb3!2", // Bbm
  J: "[bb3,db4] bb3!2 [bb3,db4] bb3!2 [bb3,db4] bb3 ab3!2 [ab3,eb4] ab3!2 [ab3,eb4] ab3!2", // Bbm Ab5
  K: "[ab3,eb4] ab3!2 [ab3,eb4] ab3!2 [ab3,eb4] ab3 eb3!2 [eb3,bb3] eb3!2 [eb3,bb3] eb3!2", // Ab5 Eb5
  L: "[eb3,bb3] eb3!2 [eb3,bb3] eb3!2 [eb3,bb3] eb3 gb3!2 [gb3,db4] gb3!2 [gb3,db4] gb3!2", // Eb5 Gb5
  M: "[gb3,db4] gb3!2 [gb3,db4] gb3!2 [gb3,db4] gb3 bb3!2 [bb3,db4] bb3!2 [bb3,db4] bb3!2", // Gb5 Bbm
  N: "[gb3,db4] gb3!2 [gb3,db4] gb3!2 [gb3,db4] gb3 db4!2 [db4,ab4] db4!2 [db4,ab4] db4!2", // Gb5 Db5
  O: "[db4,ab4] db4!2 [db4,ab4] db4!2 [db4,ab4] db4 c4!2 [c4,ab4] c4!2 [c4,ab4] c4!2", // Db5 Fm
  P: "[c4,ab4] c4!2 [c4,ab4] c4!2 [c4,ab4] c4 eb4!2 [eb4,bb4] eb4!2 [eb4,bb4] eb4!2", // Fm Eb5
  Q: "[eb4,bb4] eb4!2 [eb4,bb4] eb4!2 [eb4,bb4] eb4 gb3!2 [gb3,db4] gb3!2 [gb3,db4] gb3!2", // Eb5 Gb5
  R: "[ab3,eb4] ab3!2 [ab3,eb4] ab3!2 [ab3,eb4] ab3 gb3!2 [gb3,db4] gb3!2 [gb3,db4] gb3!2", // Ab5 Gb5
  S: "[ab3,db4] ab3!2 [ab3,db4] ab3!2 [ab3,db4] ab3 gb3!2 [gb3,db4] gb3!2 [gb3,db4] gb3!2", T: "[gb3,db4] gb3!2 ~@13",
})).s("gm_synth_bass_2").gain(0.48).pan(0.6)

// chords · synth bass 2 · "synth 1" · soft notes · Bbm Ab5 Eb5 Gb5
const synth_bass_2_soft = note(`<
  ~
  [bb3 ~ [bb3,db4] bb3!2 [bb3,db4] bb3!4 [bb3,db4] bb3!2 [bb3,db4] bb3!2]
  [ab3!2 [ab3,eb4] ab3!2 [ab3,eb4] ab3!2 [ab3,eb4] ab3!2 [ab3,eb4] ab3!2 [ab3,eb4] ab3]
  [eb3!2 [eb3,bb3] eb3!2 [eb3,bb3] eb3!2 [eb3,bb3] eb3!2 [eb3,bb3] eb3!2 [eb3,bb3] eb3]
  [gb3!2 [gb3,db4] gb3!2 [gb3,db4] gb3!2 [gb3,db4] gb3!2 [gb3,db4] gb3!2 [gb3,db4] gb3]
  ~@101
>`).s("gm_synth_bass_2").gain(0.32).pan(0.6)

// chords · distortion guitar · "el guit1"
const distortion_guitar = note("<~@29 A B C D E ~@4 F G H@2 ~@19 A B C D E ~@23 I@4 J@2 ~@2 K@2 ~@7>".pickRestart({
  A: "[ab3,db4]@5 [ab3,db4]@2 [ab3,db4]", B: "[ab3,eb4]", C: "[bb3,eb4]@5 [bb3,eb4]@2 [bb3,eb4]",
  D: "[db4,gb4]@5 [db4,gb4] [db4,f4] [db4,gb4]", E: "[db4,f4]", F: "~@12 eb4 db4!2 bb3", G: "db4@7 ~",
  H: "[~@3 c4 bb3@2 ~@2, ~@3 f3@3 ~@2]/2",
  I: "[~@4 [ab3,db4]@5 [ab3,db4]@2 [ab3,db4] [ab3,eb4]@8 [bb3,eb4]@5 [bb3,eb4]@2 [bb3,eb4] [db4,gb4]@4]/4", // Db5 Ab5 Eb5 Gb5
  J: "[f4@3 f4@2 eb4 db4 bb3@17 ~@8]/2", K: "[~ f4 ab4 bb4@8 ~@5]/2",
})).s("gm_distortion_guitar").gain(0.56).pan(0.4)

// other · acoustic guitar nylon · "el guit1"
const acoustic_guitar_nylon = note("<~@2 A ~ B C D E F ~@15 G H ~@22 I ~@7 G H ~@27 J@2 ~@14 J@2 ~@3>".pickRestart({
  A: "~@12 f5 db5!2 f5", B: "~@9 db3 eb3 f3 gb3 ab3 bb3 c4", C: "db4@12 c4 db4 c4 db4", D: "c4@15 ~",
  E: "bb3@11 ~@4 [f3,c4]", F: "~@9 eb4@2 db4 ~ db4 ~ bb3, [gb3,db4]@3 f3, ~@6 c4!2", G: "~@12 bb3@2 ab3 bb3",
  H: "bb3@13 ~@3", I: "~@8 f4 gb4 ab4 gb4 f4 eb4 db4 bb3", J: "[~@4 bb3@2 ab3 bb3 bb3@13 ~@11]/2",
})).s("gm_acoustic_guitar_nylon").gain(0.64).pan(0.3)

// chords · synth strings 1 · "pad"
const synth_strings_1 = note(`<
  ~@5 A B@3 ~@6 C@2 D@2 E@2 F G@3 F G@3 H@2 I J F K L@2 A B@3 ~@2 M K F K J N D@2 E@2 F G@3 F G@3 H@2 I J F K L@2 O@2
  P@2 Q@2 R@2 S@2 T U@6 V@8 W@2 X@6 Y@4
>`.pickRestart({
  A: "[f3,bb3,db4]", B: "[[ab3,c4]@4 ~@4 db4@3 [f3,a3,c4], eb4@2 ~, ~@4 [gb3,bb3]@7 ~]/3",
  C: "[[db4,gb4,bb4]@3 [c4,f4,a4]]/2", D: "[[gb3,bb3]@7 [ab3,f4], db4]/2", E: "[[bb3,db4,gb4]@7 [c4,eb4,ab4]]/2",
  F: "[bb3,db4,f4]", G: "[[ab3,c4] ~ db4, eb4@2 ~, ~ [bb3,gb4]@2]/3", H: "[[db4,f4] [c4,eb4], ab3]/2",
  I: "[bb3,eb4,gb4]", J: "[bb3,db4,gb4]", K: "[ab3,c4,eb4]", L: "[[gb3,bb3,eb4] [f3,ab3] [gb3,bb3]@2, ~ db4@3]/2",
  M: "[gb3,bb3,db4]", N: "[a3,c4,f4]", O: "[f5 ~ ab4@2, [gb3,bb3,db4], bb4@15 ~@17, ~ eb5@3]/2",
  P: "[f3,ab3,db4,ab4,db5]/2", Q: "[bb2,bb3,db4,f4,f5]/2", R: "[db4 c4, [ab2,ab3,eb4,ab4]]/2",
  S: "[gb2,gb3,bb3,db4,f4]/2", T: "[eb2,eb3,gb3,bb3,db4]",
  U: "[[gb2,gb3,bb3,db4]@3 [bb3,db4,f4]@2 [ab3,c4]@2 ~@2 db4@2 [bb3,db4,f4], ~@5 eb4@4 ~@3, ~@7 [bb3,gb4]@4 ~]/6", // Gb Bbm Ab Bbm Ebm
  V: "[~ [ab3,c4]@2 ~@2 db4@2 [db4,f4]@2 [c4,eb4]@2 [bb3,eb4,gb4]@2 [bb3,db4,gb4]@2 [bb3,db4,f4], ~ eb4@4 ~@11, ~@3 [bb3,gb4]@4 ab3@4 ~@5]/8", // Ab Db Cm Ebm Gb Bbm Ebm
  W: "[~ [ab3,c4,eb4]@2 [gb3,bb3,eb4]]/2", // Ab Ebm
  X: "[[f3,ab3] [gb3,bb3]@2 [bb3,db4,f4]@2 [ab3,c4]@2 ~@2 db4@2 [bb3,db4,f4], db4@3 ~@2 eb4@4 ~@3, ~@7 [bb3,gb4]@4 ~]/6", // Fm Gb Bbm Ab Bbm Ebm
  Y: "[~ [ab3,c4]@2 ~@2 db4@2 ~, ~ eb4@4 ~@3, ~@3 [bb3,gb4]@4 ~]/4", // Ab Ebm
})).s("gm_synth_strings_1").gain(0.48)

// chords · acoustic guitar nylon · "ac guit2"
const acoustic_guitar_nylon_2 = note(`<
  ~@9 A B C@3 D E F ~ G H ~ I J K L I J K L M N O P I J Q R I J K S ~@2 C@3 D ~@3 G H ~ I J K L I J K L M N O P I J Q R
  ~@12 T@8 U@7 V W@8 X
>`.pickRestart({
  A: "[bb3,db4]@13 ~ bb3 db4, bb2@7 ~", B: "[ab2,c4]@15 ~",
  C: "[[gb2,f3,bb3]@15 bb3@4 ~@5 c4@7 ~ [bb2,db4]@14 ~ db4, ~@19 ab3@12 f3@17, ~@11 eb3@5 ~@8]/3", D: "c4 ab3@3, ab2",
  E: "~@2 f3 ~@4 db4@8 ~, bb3@5 bb3@10 ~, ~@3 f3@12 ~", F: "~@4 bb3@3 a3@9", G: "~@13 ab4@3, ~@3 f4", H: "[bb3,gb4]",
  I: "[bb3,db4,f4]@2 [bb3,db4,f4]@2 [bb3,db4,f4]@2 [bb3,db4,f4] [bb3,db4,f4]@2 [bb3,db4,f4] [bb3,db4,f4]@2 [bb3,db4,f4]@2 [bb3,db4,f4]!2", // Bbm
  J: "[c4,eb4,ab4]@2 [c4,eb4,ab4]@2 [c4,eb4,ab4]@2 [c4,eb4,ab4] [c4,eb4,ab4]@2 [c4,eb4,ab4] [c4,eb4,ab4]@2 [c4,eb4,ab4]@2 [c4,eb4,ab4]!2", // Ab
  K: "[bb3,eb4,gb4]@2 [bb3,eb4,gb4]@2 [bb3,eb4,gb4]@2 [bb3,eb4,gb4] [bb3,eb4,gb4]@2 [bb3,eb4,gb4] [bb3,eb4,gb4]@2 [bb3,eb4,gb4]@2 [bb3,eb4,gb4]!2", // Ebm
  L: "[bb3,db4,gb4]@2 [bb3,db4,gb4]@2 [bb3,db4,gb4]@2 [bb3,db4,gb4] [bb3,db4,gb4]@2 [bb3,db4,gb4] [bb3,db4,gb4]@2 [bb3,db4,gb4]@2 [bb3,db4,gb4]!2", // Gb
  M: "[ab3,db4,f4]@2 [ab3,db4,f4]!2 [ab3,db4,f4]@2 [ab3,db4,f4] [ab3,db4,f4]@2 [ab3,db4,f4] [ab3,db4,f4]@2 [ab3,db4,f4]@2 [ab3,db4,f4]!2", // Db
  N: "[c4,eb4,ab4]@2 [c4,eb4,ab4]!2 [c4,eb4,ab4]@2 [c4,eb4,ab4] [c4,eb4,ab4]@2 [c4,eb4,ab4] [c4,eb4,ab4]@2 [c4,eb4,ab4]@2 [c4,eb4,ab4]!2", // Ab
  O: "[bb3,eb4,gb4]@2 [bb3,eb4,gb4]!2 [bb3,eb4,gb4]@2 [bb3,eb4,gb4] [bb3,eb4,gb4]@2 [bb3,eb4,gb4]@2 [bb3,eb4,gb4] [bb3,eb4,gb4]@2 [bb3,eb4,gb4]!2", // Ebm
  P: "[bb3,db4,gb4]@2 [bb3,db4,gb4]!2 [bb3,db4,gb4]@2 [bb3,db4,gb4] [bb3,db4,gb4]@2 [bb3,db4,gb4] [bb3,db4,gb4]@2 [bb3,db4,gb4]@2 [bb3,db4,gb4]!2", // Gb
  Q: "[bb3,eb4,gb4]@2 [bb3,eb4,gb4]!2 [bb3,eb4,gb4]@2 [bb3,eb4,gb4] [bb3,eb4] [ab3,db4,f4]!2 [ab3,db4,f4]@2 [ab3,db4,f4]@2 [ab3,db4,f4]!2", // Ebm Eb5 Db
  R: "[bb3,db4,gb4]@2 [bb3,db4,gb4]!2 [bb3,db4,gb4]@2 [bb3,db4] [bb3,db4,gb4] [bb3,db4,gb4]@2 [bb3,db4,gb4] [bb3,db4,gb4]@2 [bb3,db4,gb4] [bb3,db4,gb4]@2", // Gb Bbm Gb
  S: "[bb3,db4,gb4]@2 [bb3,db4,gb4]@2 [bb3,db4,gb4]@2 [bb3,db4,gb4] [bb3,db4,gb4]@2 [bb3,db4,gb4] [bb3,db4,gb4]@2 [a3,c4,f4]@2 [a3,c4,f4]!2", // Gb F
  T: "[~@8 [bb3,db4,f4]@2 [bb3,db4,f4]@2 [bb3,db4,f4]@2 [bb3,db4,f4] [bb3,db4,f4]@2 [bb3,db4,f4] [bb3,db4,f4]@2 [bb3,db4,f4]@2 [bb3,db4,f4]!2 [c4,eb4,ab4]@2 [c4,eb4,ab4]@2 [c4,eb4,ab4]@2 [c4,eb4,ab4] [c4,eb4,ab4]@2 [c4,eb4,ab4] [c4,eb4,ab4]@2 [c4,eb4,ab4]@2 [c4,eb4,ab4]!2 [bb3,eb4,gb4]@2 [bb3,eb4,gb4]@2 [bb3,eb4,gb4]@2 [bb3,eb4,gb4] [bb3,eb4,gb4]@2 [bb3,eb4,gb4] [bb3,eb4,gb4]@2 [bb3,eb4,gb4]@2 [bb3,eb4,gb4]!2 [bb3,db4,gb4]@2 [bb3,db4,gb4]@2 [bb3,db4,gb4]@2 [bb3,db4,gb4] [bb3,db4,gb4]@2 [bb3,db4,gb4] [bb3,db4,gb4]@2 [bb3,db4,gb4]@2 [bb3,db4,gb4]!2 [bb3,db4,f4]@2 [bb3,db4,f4]@2 [bb3,db4,f4]@2 [bb3,db4,f4] [bb3,db4,f4]@2 [bb3,db4,f4] [bb3,db4,f4]@2 [bb3,db4,f4]@2 [bb3,db4,f4]!2 [c4,eb4,ab4]@2 [c4,eb4,ab4]@2 [c4,eb4,ab4]@2 [c4,eb4,ab4] [c4,eb4,ab4]@2 [c4,eb4,ab4] [c4,eb4,ab4]@2 [c4,eb4,ab4]@2 [c4,eb4,ab4]!2 [bb3,eb4,gb4]@2 [bb3,eb4,gb4]@2 [bb3,eb4,gb4]@2 [bb3,eb4,gb4] [bb3,eb4,gb4]@2 [bb3,eb4,gb4] [bb3,eb4,gb4]@2 [bb3,eb4,gb4]@2 [bb3,eb4,gb4]!2 [bb3,db4,gb4]@2 [bb3,db4,gb4]@2 [bb3,db4,gb4]@2 [bb3,db4,gb4]!2]/8", // Bbm Ab Ebm Gb Bbm Ab Ebm Gb
  U: "[~ [bb3,db4,gb4] [bb3,db4,gb4]@2 [bb3,db4,gb4]@2 [bb3,db4,gb4]!2 [ab3,db4,f4]@2 [ab3,db4,f4]!2 [ab3,db4,f4]@2 [ab3,db4,f4] [ab3,db4,f4]@2 [ab3,db4,f4] [ab3,db4,f4]@2 [ab3,db4,f4]@2 [ab3,db4,f4]!2 [c4,eb4,ab4]@2 [c4,eb4,ab4]!2 [c4,eb4,ab4]@2 [c4,eb4,ab4] [c4,eb4,ab4]@2 [c4,eb4,ab4] [c4,eb4,ab4]@2 [c4,eb4,ab4]@2 [c4,eb4,ab4]!2 [bb3,eb4,gb4]@2 [bb3,eb4,gb4]!2 [bb3,eb4,gb4]@2 [bb3,eb4,gb4] [bb3,eb4,gb4]@2 [bb3,eb4,gb4]@2 [bb3,eb4,gb4] [bb3,eb4,gb4]@2 [bb3,eb4,gb4]!2 [bb3,db4,gb4]@2 [bb3,db4,gb4]!2 [bb3,db4,gb4]@2 [bb3,db4,gb4] [bb3,db4,gb4]@2 [bb3,db4,gb4] [bb3,db4,gb4]@2 [bb3,db4,gb4]@2 [bb3,db4,gb4]!2 [bb3,db4,f4]@2 [bb3,db4,f4]@2 [bb3,db4,f4]@2 [bb3,db4,f4] [bb3,db4,f4]@2 [bb3,db4,f4] [bb3,db4,f4]@2 [bb3,db4,f4]@2 [bb3,db4,f4]!2 [c4,eb4,ab4]@2 [c4,eb4,ab4]@2 [c4,eb4,ab4]@2 [c4,eb4,ab4] [c4,eb4,ab4]@2 [c4,eb4,ab4] [c4,eb4,ab4]@2 [c4,eb4,ab4]@2 [c4,eb4,ab4]!2 [bb3,eb4,gb4]@2 [bb3,eb4,gb4]!2 [bb3,eb4,gb4]@2 [bb3,eb4,gb4] [bb3,eb4]]/7", // Gb Db Ab Ebm Gb Bbm Ab Ebm …
  V: "[ab3,db4,f4]!2 [ab3,db4,f4]@2 [ab3,db4,f4]@2 [ab3,db4,f4]!2 [bb3,db4,gb4]@2 [bb3,db4,gb4]!2 [bb3,db4,gb4]@2 [bb3,db4] [bb3,db4,gb4]", // Db Gb Bbm Gb
  W: "[[bb3,db4,gb4]@2 [bb3,db4,gb4] [bb3,db4,gb4]@2 [bb3,db4,gb4] [bb3,db4,gb4]@2 [bb3,db4,f4]@2 [bb3,db4,f4]@2 [bb3,db4,f4]@2 [bb3,db4,f4] [bb3,db4,f4]@2 [bb3,db4,f4] [bb3,db4,f4]@2 [bb3,db4,f4]@2 [bb3,db4,f4]!2 [c4,eb4,ab4]@2 [c4,eb4,ab4]@2 [c4,eb4,ab4]@2 [c4,eb4,ab4] [c4,eb4,ab4]@2 [c4,eb4,ab4] [c4,eb4,ab4]@2 [c4,eb4,ab4]@2 [c4,eb4,ab4]!2 [bb3,eb4,gb4]@2 [bb3,eb4,gb4]@2 [bb3,eb4,gb4]@2 [bb3,eb4,gb4] [bb3,eb4,gb4]@2 [bb3,eb4,gb4] [bb3,eb4,gb4]@2 [bb3,eb4,gb4]@2 [bb3,eb4,gb4]!2 [bb3,db4,gb4]@2 [bb3,db4,gb4]@2 [bb3,db4,gb4]@2 [bb3,db4,gb4] [bb3,db4,gb4]@2 [bb3,db4,gb4] [bb3,db4,gb4]@2 [bb3,db4,gb4]@2 [bb3,db4,gb4]!2 [bb3,db4,f4]@2 [bb3,db4,f4]@2 [bb3,db4,f4]@2 [bb3,db4,f4] [bb3,db4,f4]@2 [bb3,db4,f4] [bb3,db4,f4]@2 [bb3,db4,f4]@2 [bb3,db4,f4]!2 [c4,eb4,ab4]@2 [c4,eb4,ab4]@2 [c4,eb4,ab4]@2 [c4,eb4,ab4] [c4,eb4,ab4]@2 [c4,eb4,ab4] [c4,eb4,ab4]@2 [c4,eb4,ab4]@2 [c4,eb4,ab4]!2 [bb3,eb4,gb4]@2 [bb3,eb4,gb4]@2 [bb3,eb4,gb4]@2 [bb3,eb4,gb4] [bb3,eb4,gb4]@2 [bb3,eb4,gb4] [bb3,eb4,gb4]@2 [bb3,eb4,gb4]@2 [bb3,eb4,gb4]!2 [bb3,db4,gb4]@2 [bb3,db4,gb4]@2 [bb3,db4,gb4]@2 [bb3,db4,gb4]!2]/8", // Gb Bbm Ab Ebm Gb Bbm Ab Ebm …
  X: "~ [bb3,db4,gb4] [bb3,db4,gb4]@2 ~@12", // Gb
})).s("gm_acoustic_guitar_nylon").gain(0.48).pan(0.3)

// other · whistle · "synth 1"
const whistle = note("<~@12 A ~@3 B ~@27 A ~@3 B ~@57>".pickRestart({
  A: "~@10 bb4 c5 db5 c5 bb4@2", B: "~@10 bb5@2 bb6@2 bb6 ~",
})).s("gm_whistle").gain(0.48).pan(0.7)

// chords · acoustic guitar steel · "ac guit3"
const acoustic_guitar_steel = note(`<
  ~@14 A@2 ~@6 A@2 ~@2 A@2 ~@6 B@2 ~@6 C@2 ~@2 C@2 ~@6 A@2 ~@2 A@2 ~@6 B@2 ~@10 D@3 ~@2 E@2 ~@2 E@2 ~@6 F ~@3 E@2 ~@2
  E@2 ~
>`.pickRestart({
  A: "[~@16 [eb3,bb3,db4]@15 ~, ~@15 [gb4,bb4]@16 ~]/2", B: "[~@16 [eb3,bb3,db4]@7 ~@9, ~@15 [gb4,bb4]@8 ~@9]/2",
  C: "[~@16 [gb3,bb3,db4]@15 ~, ~@15 [f4,bb4]@16 ~]/2", // Gb Bb5
  D: "[~@16 [eb3,bb3,db4]@15 ~ [gb3,bb3,db4]@15 ~, ~@15 [gb4,bb4]@16 [f4,bb4]@16 ~]/3", // Eb7 Gb Bb5
  E: "[~@8 [eb3,bb3,db4]@15 ~@9, ~@7 [gb4,bb4]@16 ~@9]/2", F: "~@8 [eb3,bb3,db4]@7 ~, ~@7 [gb4,bb4]@8 ~",
})).s("gm_acoustic_guitar_steel").gain(0.72).pan(0.7)

// drums · kick
const kick = s("bd").struct("<A B@3 C B@3 C B@7 C B@23 C B D B@34 E F E@2 G B@7 H B@15 I>".pickRestart({
  A: "~@12 x!4", B: "x ~ x ~@4 x!2 ~ x ~@4 x", C: "x ~ x ~@4 x!2 ~ x ~@2 x ~ x", D: "x ~ x ~@4 x!2 ~ x ~@5", E: "x",
  F: "x ~@9 x ~@2 x ~@2", G: "~@8 x ~ x ~@4 x", H: "x ~ x ~@2 x ~ x!2 ~ x ~@4 x", I: "x!2 ~@6",
})).gain(0.8)

// drums · rim
const rim = s("rim").struct("<[x!2 ~@2] ~@105>").gain(0.56)

// drums · snare
const snare = s("sd").struct("<~ [~ x ~ x]!76 ~@4 [~@3 x ~@8 x ~@3] [~ x ~ x]!23 ~>").gain(0.72)

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

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A B A B A@5 B A B A B A B A B A B A B A B A B A B A@13 C A B A B A B A B A B A B A B A B A B A@16 ~@4 D A E A E A E
  A E A@9 E A E A E A F
>`.pickRestart({
  A: "x!8", B: "x!5 ~ x!2", C: "x!7 ~", D: "~@4 x!4", E: "x ~ x!6", F: "x",
})).gain(0.72)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@4 A ~@3 B ~@11 C ~@3 D ~@3 E ~@3 F ~@3 G ~@3 H ~@7 A ~@3 I ~@3 D ~@3 J ~@3 F ~@3 G ~@12 K ~@11 L ~@2 H M ~@3 M ~@4
>`.pickRestart({
  A: "~@13 x!2 ~", B: "~@13 x!3", C: "~@10 x!3 ~ x ~", D: "~@7 x ~ x ~ x!3 ~@2", E: "~@7 x", F: "~@11 x!2 ~@3",
  G: "~@12 x!2 ~@2", H: "~@13 x ~@2", I: "~@9 x ~ x!2 ~@3", J: "~@6 x!2", K: "x!2 ~@6", L: "~@3 x!2 ~@11", M: "~ x ~@2",
})).gain(0.64)
// … 46 more lines

More by Ricky Martin