Strudelify

Tal Vez

Ricky Martin

KeyB majorTempo120 bpm
0:00/0:00
// Tal Vez — Ricky Martin
// 120 bpm, 4/4, key B major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 123 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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 · fretless bass
const bass = note(`<
  ~@7 A B C D E B F D F G D H F G I J K C I E C I L B M N C D O G P C I B Q R S G B C T G P F D F A I H F E I U V D E C
  I E C W L B U X F V D K Y I Z B U X Y V D B F I P F D AA AB T AC C E D H C E D U V I A C D G C I L B M X C V AD ~@5
>`.pickRestart({
  A: "b1@17 ~ b1@5 ~", B: "g#1@17 ~ g#1@5 ~", C: "e1@17 ~ e1@5 ~", D: "f#1@17 ~ f#1@5 ~", E: "b1@11 ~ f#1@11 ~",
  F: "e2@11 ~ b1@11 ~", G: "b1@12 b2@3 f#2@2 ~ d#2@3 b1@3", H: "c#2@17 ~ c#2@5 ~", I: "f#2@11 ~ c#2@11 ~",
  J: "e1@2 f#1 ~", K: "b1@12 b2@3 a#2@3 g#2@2 ~ f#2@3", L: "d#2@11 ~ a#1@11 ~", M: "e1@12 f#2@6 c#2@5 ~", N: "d#2 g#1",
  O: "f#1@2 f#1 ~", P: "g#2@11 ~ d#2@11 ~", Q: "d#2@17 ~ d#2@5 ~", R: "c#2@17 ~ g#1@5 ~", S: "c#2@11 ~ g#1@11 ~",
  T: "f#1@23 ~", U: "e1 f#1", V: "f#2@17 ~ c#2@5 ~", W: "f#1@6 f#1 f1", X: "d#1 g#1", Y: "e1@12 e2@3 b1@2 ~ g#1@3 e1@3",
  Z: "d#2@12 d#3@3 a#2@2 ~ g2@3 d#2@3", AA: "g#1@11 ~", AB: "e1@23 ~", AC: "f#1 ~@3", AD: "f#1!2",
})).s("gm_fretless_bass").gain(0.4)

// chords · piano
const piano = note(`<
  ~@7 A B C D E B F G F H G I J A K L H M G N F K O B P Q F K R E B M S T U I@2 E B C V N T F D F A K W F E K X Y Z N C
  S N M S O B AA Q C G@2 H C D O B AB AC J K D T F G T J K B C S AD J A K W C N S AE Y@2 A M S H F K AF B AG Q F S AH AI
  AJ@4
>`.pickRestart({
  A: "f#4!2 ~ b4, b2, [b3,b4,d#5] [f#4,c#5,f#5]", B: "[d#4,b4]@11 ~@7 g#2@5 ~, g#2@12 [d#4,b4]@11 ~",
  C: "[e4,b4]@11 ~@7 e3@5 ~, e2@23 ~, e3@12 [e4,b4]@11 ~", D: "f#4@4 ~@2 g#4 f#4, f#2, [c#4,a#4]@7 ~",
  E: "b4@4 ~@2 c#5 b4, b2, [f#4,d#5]@7 ~", F: "e4@4 ~@2 f#4 e4, e2, [b3,g#4]@7 ~",
  G: "[a#3,c#4,f#4,a#4]@4 a#3@2 ~ f#2, f#2@7 ~, ~ [c#4,f#4,a#4], ~@3 a#3", // F#
  H: "[d#4,f#4,b4,d#5]@4 d#4@2 ~ b2, b1, b2@7 ~, ~ [f#4,b4,d#5], ~@3 d#4", // B
  I: "[g#3,c#4,e4,g#4]@4 g#3@2 ~ c#3, c#2, c#3@7 ~, ~ [c#4,e4,g#4], ~@3 g#3", // C#m
  J: "b3!2 ~ e4, e2, [e3,e4,g#4] [b3,f#4,b4]", K: "[c#4,a#4]@11 ~@7 f#2@5 ~, f#2@12 [c#4,a#4]@11 ~",
  L: "[e2,b3,e4,g#4]@2 [f#1,f#2,c#3,f#3,a#3] ~", M: "[b3,e4,g#4,b4]@4 b3@2 ~ e3, e2, e3@7 ~, ~ [e4,g#4,b4], ~@3 b3",
  N: "[f#4,d#5]@11 ~@7 b2@5 ~, b1@23 ~, b2@12 [f#4,d#5]@11 ~", // D#m
  O: "[c#4,d#4,g4,a#4]@4 c#4@2 ~ d#3, d#2, d#3@7 ~, ~ [d#4,g4,a#4], ~@3 c#4", // D#7 D#
  P: "b3!2 [f#2,c#4,a#4]@2, [e2,e3,e4,g#4] ~", Q: "[d#2,d#3,c#4,g4,a#4] [g#2,b3,d#4,g#4,b4]",
  R: "[e2,b3,e4,g#4]@2 [e2,e3,b3,e4,g#4] ~", S: "c#4!2 ~ f#4, f#2, [f#3,f#4,a#4] [c#4,g#4,c#5]",
  T: "[b3,d#4,g#4,b4]@4 b3@2 ~ g#2, g#2@7 ~, ~ [d#4,g#4,b4], ~@3 b3", // G#m
  U: "[a#3,d#4,f#4,a#4]@4 a#3@2 ~ d#3, d#2, d#3@7 ~, ~ [d#4,f#4,a#4], ~@3 a#3", V: "[f#2,a#3,c#4,f#4,a#4]@23 ~",
  W: "[c#4,g#4]@11 ~@7 c#3@5 ~, c#2@23 ~, c#3@12 [c#4,g#4]@11 ~", X: "b3!2 [f#2,b3,c#4,f#4,b4]@2, [e2,e3,e4,g#4] ~",
  Y: "[c#4,b4]@11 ~@7 f#2@5 ~, f#2@12 [c#4,b4]@11 ~", // C#7
  Z: "[b3,c#4,f#4,b4]@4 b3@2 ~ f#2, f#2@7 ~, ~ [c#4,f#4,b4], ~@3 b3", AA: "[e2,b3,g#4] [f#2,a#3,c#4,f#4,a#4]",
  AB: "[e2,b3,g#4] [f#2,c#4,a#4]", AC: "[d#2,d#3,c#4,g4,a#4] [g#2,d#4,b4]", AD: "[f#1,f#2,c#3,f#3,a#3] ~@3",
  AE: "b3!2 [f#2,c#4,b4]@2, [e2,e3,e4,g#4] ~", AF: "[c#4,g4,a#4]@11 ~@7 d#3@5 ~, d#2@23 ~, d#3 [c#4,g4,a#4]",
  AG: "[e2,g#3,b3,e4,g#4] [f#2,c#4,a#4]", AH: "c#4!2 [f#2,c#4,f#4,a#4]@2, [f#2,f#3,f#4,a#4] ~",
  AI: "[f#4,d#5]@11 ~@8 b2@5, b1@23 ~, b2 [f#4,d#5]", // D#m
  AJ: "[~ [e2,b3,g#4]@14 [c#2,c#3,g#3,c#4,e4,g#4]@7 [f#2,b3,c#4,f#4,b4]@7 [b1,b2,f#4]@48 ~@19, ~@29 d#5@53 ~@14]/4", // E C#m F#sus4 B5
})).s("gm_piano").gain(0.32)

// chords · piano · soft notes
const piano_soft = note(`<
  ~@7 A B@2 C D B E ~ E ~@3 F A G ~@4 H E G ~ B ~@2 E G ~ D B ~ I ~@4 D B@2 ~ H ~ E C E A G J E D G ~ B ~ H B I H ~ I ~
  B ~@2 B ~@3 B C ~ B ~@2 F G C ~ E ~@2 F G B@2 I ~ F A G J B H I ~ B@2 A ~ I ~ E G@2 B ~@2 E I ~ K ~@4
>`.pickRestart({
  A: "~@7 b3", B: "~@18 b3@5 ~", C: "~@3 f#4@2 ~", D: "~@3 b4@2 ~", E: "~@3 e4@2 ~", F: "~@7 e3", G: "~@18 a#3@5 ~",
  H: "~@18 d#4@5 ~", I: "~@7 f#3", J: "~@18 g#3@5 ~", K: "~@19 d#4@5",
})).s("gm_piano").gain(0.16)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~@7 A B C D E F G H G I J K G E L M N G D I O H P B Q R G L S E B O T B U V K W F X Y E B Z L O AA L K AB AC H AD AE J
  A AF J E AB D AG F Q AH G H L N C H AI B AJ AK C J AL F X AM B O H B AB H AN Z A AM V C E J AO J AE E G AM N O D AG F
  AP AH AB H AQ ~@5
>`.pickRestart({
  A: "~ [b3,f#4]@11 ~ [b3,f#4]@5 f#4@6, b2, [d#3,f#3] d#3, ~@13 f#3@11", // B5 D#m
  B: "~@2 g#4@10 ~ g#4@5 g#4@6, ~ g#2@23, ~ [g#3,d#4]@11 [g#3,d#4]@12", // G#5
  C: "[e3,b3,e4,g#4]@12 ~ g#4@5 ~ e4@5, ~ e3, ~@2 [b3,e4] [b3,g#4]", // E E5 E
  D: "[f#3,c#4,f#4,a#4]@12 ~ a#4@5 ~ f#4@5, ~ f#3, ~@2 [c#4,f#4] [c#4,a#4]", // F# F#5 F#
  E: "~ [f#3,b3,d#4]@11 ~ [b3,d#4]@5 [b3,d#4]@6, d#3 f#3", F: "[b3,d#4,b4]@12 b4@6 ~ b4@5, g#2, ~ [b3,d#4]",
  G: "~ [b3,e4,g#4]@11 ~ [e4,g#4]@5 [e4,g#4]@6, g#3 b3", H: "~ f#4@11 ~ f#4@5 ~ f#4@5, a#3, c#4!2, ~@2 a#4!2",
  I: "~@2 b4@10 ~ b4@5 b4@6, ~ b2@23, ~ [b3,f#4]@11 [b3,f#4]@12", // B5
  J: "~@2 f#4@10 ~ f#4@5 f#4@6, ~ f#2@23, ~ [f#3,c#4]@11 [f#3,c#4]@12", // F#5
  K: "[e3,c#4,e4,g#4]@12 ~ g#4@5 ~ e4@5, ~ e3, ~@2 [c#4,e4] [c#4,g#4]", // C#m C#5
  L: "a#3@11 ~ g#3@3 ~@6 f#4@3, f#3, f#4@5 ~, c#4@17 ~ c#4@6, ~@5 a#3@3",
  M: "~ e4@11 ~ [c#4,f#4]@5 ~@6, [g#3,b3]@2 [f#2,f#3] ~", // F#5 G#m F#
  N: "[d#3,b3,d#4,f#4]@12 ~ f#4@5 ~ d#4@5, ~ d#3, ~@2 [b3,d#4] [b3,f#4]", // B B5
  O: "g#3@11 ~ f#3@3 ~@6 e4@3, e3, e4@5 ~, b3@17 ~ b3@6, ~@5 g#3@3",
  P: "[d#3,g3,c#4,d#4]@12 c#4@6 ~ c#4@5, d#2, ~ [d#3,g3]", Q: "[g#3,b3,g#4]@12 f2 a#4@11, ~ [a#3,c#4]",
  R: "~ d#4@11 [b3,d#4,b4]@12, [d#3,g3,c#4] ~", S: "d#2 g#4@11 ~ [e4,g#4]@5 ~@6, [g#3,b3]@2 [f#3,g#3] ~",
  T: "~ [c#3,f#3,a#3]@11 ~ [f#3,a#3]@5 [f#3,a#3]@6, a#2 c#3", // F#
  U: "~@2 f#4@10 ~ f#4@5 f#4@6, ~ d#3@23, ~ [f#3,d#4]@11 [f#3,d#4]@12", // D#m
  V: "[g#3,c#4,g#4]@12 g#4@6 ~ g#4@5, c#3, ~ [g#3,c#4]", W: "[f#3,b3,f#4]@12 f#4@6 ~ f#4@5, b2, ~ [f#3,b3]",
  X: "~ e4@11 ~ e4@5 ~ e4@5, g#3, b3!2, ~@2 g#4!2", Y: "~ [c#4,a#4]@23, [f#2,a#3]@23 ~",
  Z: "~@2 g#4@10 ~ g#4@5 g#4@6, ~ e3@23, ~ [g#3,e4]@11 [g#3,e4]@12", // C#m
  AA: "d#4@11 ~ c#4@3 ~@6 b4@3, b3, b4@5 ~, f#4@17 ~ f#4@6, ~@5 d#4@3",
  AB: "[g#3,b3,g#4]@12 g#4@6 ~ g#4@5, e2, ~ [g#3,b3]", AC: "~ b4@11 ~ b4@5 ~ b4@5, d#4, f#4!2, ~@2 d#5!2",
  AD: "~ e4@11 [b3,c#4,b4]@12, [g#3,b3] ~", AE: "[b3,c#4,b4]@12 b4@6 ~ b4@5, f#2, ~ [b3,c#4]",
  AF: "~ [e4,b4]@11 ~ [e4,b4]@5 b4@6, e3, [g#3,b3] g#3, ~@13 b3@11", // E5 G#m
  AG: "~@2 d#4@10 ~ d#4@5 d#4@6, ~ d#3@23, ~ [g3,c#4]@11 [g3,c#4]@12", // Gdim
  AH: "d2 [c#4,d#4]@11 g2 b4@11, [d#3,g3] [b3,d#4]", // C#sus2 D# B
  AI: "[c#3,g3,a#3,d#4]@12 ~ d#4@5 ~ a#3@5, ~ c#3, ~@2 [g3,a#3] [g3,d#4]", // D#7 Gm Cm
  AJ: "d#2 g#4@11 [a#3,c#4,a#4]@12, [g#3,b3] ~", AK: "d2 [c#4,d#4]@11 [b3,d#4,b4]@12, [d#3,g3] ~",
  AL: "[a#3,c#4,a#4]@12 a#4@6 ~ a#4@5, f#2, ~ [a#3,c#4]", // A#m
  AM: "~ [f#3,c#4]@11 ~ [f#3,c#4]@5 c#4@6, f#2, [a#2,c#3] a#2, ~@13 c#3@11", AN: "~ c#4@5 ~@18, [a#2,c#3,f#3] ~@3",
  AO: "[g#3,b3,g#4] [b3,c#4,b4]", AP: "~ [e4,g#4]@11 [a#2,c#3,f#3,c#4]@12, [g#3,b3] ~",
  AQ: "~ a#4@11 ~@12, [a#3,c#4] ~", // A#m
})).s("gm_acoustic_guitar_steel").gain(0.19)

// chords · acoustic guitar steel · soft notes
const acoustic_guitar_steel_2 = note(`<
  ~@7 A ~ B C D ~ E F E ~@3 E D G H I E C ~ J F K ~ L M E G N D ~ J O ~@6 P ~ D ~@2 G J Q G ~@2 R F S ~@2 A T ~ D ~ C U
  ~ L V E F G I B F W ~ X Y B ~@3 P Z ~ J F ~@2 F AA ~ A Z ~ B D ~ AB ~@2 D E Z I J C U ~ AC V ~ F AD ~@5
>`.pickRestart({
  A: "~@19 b3@5", B: "~@12 d#4 ~@11", C: "~@12 f4 ~@11", D: "~@5 d#3@3, b2", E: "~@5 g#3@3, e3",
  F: "~ a#4@11 ~@12, f#3", G: "a#4", H: "~ g#4@11 ~@12, e3 ~", I: "~@12 d4 ~@11", J: "g#4", K: "~@13 d#4@11",
  L: "e2@12 ~ f#2@11", M: "d#2 g#2", N: "~ f#2@11 ~@12", O: "~@5 a#2@3, f#2", P: "~ g#4@11 ~@12, e3", Q: "d#5",
  R: "~ d#5@11 ~@12, b3", S: "~ g#4@11 f#2@12, e3 ~", T: "~@19 e4@5", U: "~@13 g4@11", V: "~ d#2@11 ~ g#2@11",
  W: "~@12 a3 ~@11", X: "~ e2@11 f#2@12", Y: "~ d#2@11 g#2@12", Z: "~@19 f#3@5", AA: "f#2 ~@3", AB: "e2 f#2",
  AC: "e3 f#2", AD: "f#2 ~",
})).s("gm_acoustic_guitar_steel").gain(0.1)

// chords · synth strings 1
const synth_strings_1 = note(`<
  ~@7 A B C D E B F D G A H I J K L M A C N K J N O B P Q J N R E B C L B S T@2 U B J V U W F L G E H I J K H X Y Z E J
  L E J L O W AA AB G D H E C N AC B AD AE G H D B F L W F L W F N AF J K N I G U N AG Y@2 U J D K F H AC W AH AB J N AI
  AJ@4 ~
>`.pickRestart({
  A: "[b1,f#3,b3,f#4]", B: "[g#2,b3,d#4,b4]", C: "~@11 g#3@13, [b3,e4]", D: "~@11 a#3@13, [c#4,f#4]",
  E: "[b1,f#3,b3,d#4]", F: "[e2,b3,e4,g#4]", G: "[b3,g#4]@23 [e4,b4], e4@11 ~", H: "[c#3,a#3]@23 [f#3,c#4], f#3@11 ~",
  I: "[c#2,g#3,c#4,g#4]", J: "[e2,g#3,b3,g#4]", K: "~@11 f#3@13, [b3,d#4]", L: "[f#2,a#3,c#4,a#4]",
  M: "[e2,g#3,b3,g#4]@2 [f#2,a#3,c#4,a#4] ~", N: "[f#1,c#3,f#3,a#3]", O: "~@11 g3@13, [a#3,c#4]",
  P: "[b3,e4,g#4] [c#3,f#3,a#3]", Q: "[d#2,d#3,g3,c#4] [g#2,b3,d#4,b4]", R: "[b3,e4]@11 g#3 [f#2,g#3,b3,g#4]@6 ~@6",
  S: "[d#2,f#3,a#3,f#4]", T: "~@11 g#3@13, [c#4,e4]", U: "[f#3,d#4]@23 [b3,f#4], b3@11 ~",
  V: "[f#1,f#2,c#3,f#3,a#3,c#4]@23 ~", W: "~@11 b3@13, [d#4,g#4]", X: "[b3,e4,g#4] [f#2,b3,c#4,b4]",
  Y: "[f#2,b3,c#4,b4]", Z: "~@11 b3@13, [c#4,f#4]", AA: "[e2,g#3,b3,g#4]@12 [c#4,f#4]@11 a#3",
  AB: "[d#2,d#3,g3,c#4]@12 [d#4,g#4]@11 b3", AC: "[d#2,d#3,g3,c#4]", AD: "[b3,e4,g#4]@12 [c#4,f#4]@11 a#3",
  AE: "[a#3,c#4]@11 g3 [g#2,b3,d#4,b4]@12", AF: "[f#2,a#3,c#4,f#4,a#4] ~@3", AG: "[b3,e4]@11 g#3 [f#2,b3,c#4,b4]@12",
  AH: "[b3,e4]@11 g#3 [c#3,f#3,a#3]@12", AI: "[c#3,f#3,a#3]!2",
  AJ: "[b3@22 ~@3 [e2,g#3,b3,g#4]@14 [c#2,g#3,c#4,e4,g#4]@7 [f#2,b3,c#4,b4]@7 [b1,f#3,b3,f#4]@28 ~@15, [b1,b2,f#3,d#4,f#4]@29 ~@67]/4", // E C#m F#sus4 B5 B
})).s("gm_synth_strings_1").gain(0.2)

// chords · synth strings 1 · soft notes
const synth_strings_1_soft = note(`<
  ~@7 A ~ B C A ~ D C E A F G ~ H ~@2 A B I H ~ I J ~ K ~@2 I L A ~ B ~@3 M@2 N ~@3 N O D ~ E A F G ~ H F P ~ C A ~@2 A
  ~@2 J O Q R E C F A B I ~@2 K S E F C ~ D ~ O D ~ O D I ~@2 H I G E N I T ~@2 N ~ C H D F ~ O U R ~ I V ~ W X@2 ~
>`.pickRestart({
  A: "b2", B: "e2@7 ~", C: "f#2@7 ~", D: "e3", E: "e3@23 e2", F: "f#2@23 f#1", G: "c#3", H: "b1, b2@7 ~", I: "f#2",
  J: "d#2@7 ~", K: "e3 f#2", L: "f#2 ~", M: "c#2, c#3@7 ~", N: "b2@23 b1", O: "g#2@7 ~", P: "e3 ~", Q: "~ f#2",
  R: "~ g#2", S: "d#2 ~", T: "e2 ~", U: "e2 f#2", V: "f#2!2", W: "~@15 c#3@7 ~@2", X: "[~@5 b2@28 ~@15]/2",
})).s("gm_synth_strings_1").gain(0.12)

// chords · string ensemble 2
const string_ensemble_2 = note("<A@7 ~@29 B@8 ~@2 C@2 ~@36 D@5 E@3 F@4 G@3 H@3 I@8 J@4 K@4 ~@5>".pickRestart({
  A: "[~@20 f#4@3 ~@66 g#3@6 ~@32 f#2@21 ~@20, ~@12 b3@11 d#4@15 c#4@7 ~ d#4@23 ~@2 e4@23 ~ f#3@17 c#5@11 f#5@24 ~@21, ~@23 b3@9 b4@21 ~@5 b3@17 e3@11 e5@15 f#2@19 ~@2 a#2@7 ~@39, ~@27 g#4@22 ~@3 g#4@21 ~@3 b4@21 ~@4 f#4@47 ~@20, ~@31 a#3@8 g#3@7 f#3@13 e2@22 g#4@15 c#5@11 a#4@9 [c#3,d#5]@9 ~@43]/7", // C#sus2
  B: "[~@17 e4@6 f#4@13 e4@5 d#4@6 e3@24 ~@13 g#3@6 a#3@4 ~ f#4@18 e4@6 d#4@12 ~@6 d#4@6 ~@32 g#4@5 ~@12, ~ b3@24 ~@22 c#4@47 ~@37 e4@8 ~@4 c#4@40 ~@9, ~@6 a#3@6 g#3@12 ~@70 g#3@23 ~@44 b3@20 ~@11, ~@11 f#4@7 ~@5 f#3@25 ~@23 f#3@15 ~@76 e4@20 ~@10, ~@169 g#3@11 ~@12]/8",
  C: "[~@24 f#5@23 ~, ~@23 f#6@24 ~]/2", D: "[~@7 b5@5 b6@12 g#6@2 f#6@10 ~ d#6 c#6@2, ~@108 e6@5 ~@7]/5",
  E: "[b5@12 b6@18 ~@3 g#6@18 f#6@8 ~ e6@12, ~@5 f#6 ~@6]/3",
  F: "[d#6@6 ~@3 b5@21 b6@12 ~@3 f#6@50 ~, ~@6 c#6@7 ~@29 d#6@5 ~@49]/4", G: "[~@6 b5@6 c#6@11 d#6@24 g#5@24 ~]/3",
  H: "[~@25 b5@22 f#5@25, ~@2 f#5@43 ~@27]/3", I: "[~@54 b5@5 a#5@7 f#6@126, ~@3 f#6@15 ~@46, ~@17 f#4@167 ~@8]/8",
  J: "[~@23 c#6@25 b5@21 ~@2 g#5@13 f#5@12]/4", K: "[~@10 g#5@13 b5@9 c#6@15 f#6@49]/4",
})).s("gm_string_ensemble_2").gain(0.39)

// chords · piano
const piano_2 = note("<A@7 ~@116>".pickRestart({
  A: "[~@33 b5@4 ~@41 g#5@5 ~@7 a#5@4 ~@4 e2@5 ~@8 c#6@5 ~@11 f#6@36 ~@5, ~@15 b2@44 c#5@12 ~@2 e5@29 ~@5 f#5@12 ~@2 d#6@8 ~@39, ~@20 b4@49 e2@29 ~@5 f#2@60 ~@5, ~@24 f#5@17 b5@32 ~@13 c#6@9 ~@3 a#5@9 ~@9 a#5@7 ~@45, ~@28 d#5@9 g#5@6 ~@2 c#5@4 g#5@24 ~@21 e6@8 ~@16 c#6@44 ~@6]/7",
})).s("gm_piano").gain(0.4)

// drums · kick
const kick = s("bd").struct(`<
  ~@7 A@4 B@3 A B A@3 B@3 A B A B A B A@4 B A B A B@2 A@3 B A B@2 A@3 B@4 A@4 B A@4 B A@4 B@2 A@5 B A B A@3 B@2 A@2 B
  A@2 B A@8 B A@2 B@3 A B A@2 B@2 A@2 B@2 A@2 B A@5 ~@4
>`.pickRestart({
  A: "x", B: "x ~@6 x",
})).gain(0.4)

// drums · rim
const rim = s("rim").struct("<~@7 A@15 ~ A@12 ~ A@11 ~ A@43 ~@4 A@23 ~@5>".pickRestart({
  A: "~ x",
})).gain(0.32)

// drums · snare
const snare = s("sd").struct("<~@7 A@40 ~ A@43 ~@2 B ~ A@23 ~@5>".pickRestart({
  A: "~ x", B: "~@4 x!2 ~ x",
})).gain(0.4)

// drums · low tom
const low_tom = s("lt").struct("<~@91 [~@4 x!2 ~@2] [~@5 x!2 ~] [~@5 x ~@2] x ~@28>").gain(0.28)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@91 [~ x!2 ~] [~@3 x ~@4] ~@30>").gain(0.28)

// drums · crash
const crash = s("cr").struct("<~@7 A ~@83 A@3 ~ A ~@22 B ~@4>".pickRestart({
  A: "x", B: "~ x ~@22",
})).gain(0.4)

// … 9 more lines

More by Ricky Martin