Strudelify

Rhythm Is Gonna Get You

Gloria Estefan

KeyE minorTempo128 bpm
0:00/0:00
// Rhythm Is Gonna Get You — Estefan Gloria
// 128 bpm, 4/4, key E 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 123 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(128/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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.

// other · synth drum
const synth_drum = note(`<
  ~@2 A B A B A B C ~@7 D ~@7 E ~@7 F ~@11 A ~@28 G ~@4 A ~@3 H ~@15 I ~@3 A ~@3 J ~@16
>`.pickRestart({
  A: "~@12 [d3,d4] ~@3", B: "d3 ~@15", C: "~@7 d4 ~ g3 ~@2 a2 ~@3", D: "~@9 d4 ~ g3 a2 ~@3",
  E: "~@3 d3 g3 ~ g3 ~ d3 g2 ~@6", F: "~@6 d3!3 d4 ~@6", G: "~@8 d4 ~@7", H: "~@7 d4 g3 d3 ~@6", I: "~@5 d4 d3 ~@9",
  J: "~@6 d4 d3 ~@8",
})).s("gm_synth_drum").gain(0.45)

// bass · electric bass finger
const bass = note(`<
  ~@17 A B A B A B C ~ A D A D A D E@2 A D A D A D F@2 G H I J K L ~@4 A D A D A D E@2 A D A D A D F@2 G H I J K L M ~@8
  N O H I J K L O P G H I J K L O Q ~@7 N O H I J K L O P O H I J K L M ~
>`.pickRestart({
  A: "e1!2 ~ e2@3 b1@2 d2 ~ d2 ~ e2@4", B: "e1!2 ~ e2@3 b1@2 d2@4 e2@4", C: "e1!2 ~@14", D: "d2!2 ~ e2@3 b1 ~@9",
  E: "[e1@31 ~]/2", F: "[e1@30 ~ e1]/2", G: "~@3 e1 e2@2 b1 ~ d2@4 e2@4", H: "~ e1 ~ e1 e2@2 b1@2 d2@4 e2@3 c2",
  I: "~@3 a1 c2@2 a1@2 c2@4 d2@4", J: "~ c2 ~ a1 c2@2 a1@2 c2@4 d2@3 d2", K: "~@3 a1 d2@2 a1@2 c2@4 d2@4",
  L: "~ d2 ~ a1 d2@2 a1@2 c2@4 d2@3 e1", M: "~@6 d2 ~ e2 ~@3 d2 ~ d2 e1", N: "~@15 e1", O: "~@3 e1 e2@2 b1@2 d2@4 e2@4",
  P: "~ e1 ~ e1 e2@2 b1@2 d2@4 e2@3 e1", Q: "~ e1 ~ e1 e2@2 b1@2 d2 ~ d2 ~ e2@3 ~",
})).s("gm_electric_bass_finger").gain(0.45)

// chords · epiano2
const epiano2 = note(`<
  ~@25 A@2 B@2 C@2 D@2 A@2 B@2 E@2 F@8 ~@4 A@2 B@2 C@2 D@2 A@2 B@2 E@2 F@8 G ~@9 H@5 I@8 J@3 ~@7 K@6 L@6 M@3 G ~
>`.pickRestart({
  A: "[[b3,e4,g4]@27 ~@5]/2", B: "[[c4,e4,g4]@27 ~@5]/2", C: "[[d4,f#4,a4]@23 ~@9]/2", D: "[[e2,e3]@15 ~]/2",
  E: "[[d4,f#4,a4]@29 ~@3]/2", F: "[[e2,e3]@27 ~@4 [b3,e4,g4]@30 ~@2 [c4,e4,g4]@31 ~ [d4,f#4,a4]@30 ~@2 [b4,e5,g5]]/8",
  G: "~@6 [a4,d5,f#5] ~ [b4,e5,g5] ~@3 [a4,d5,f#5] ~ [a4,d5,f#5] [b4,e5,g5]", // D Em D Em
  H: "[[b3,e4,g4]@28 ~@3 [c4,e4,g4]@28 ~@4 [d4,f#4,a4]@17]/5", // Em C D
  I: "[~@15 [b3,e4,g4]@29 ~@3 [b3,e4,g4]@28 ~@4 [c4,e4,g4]@28 ~@4 [d4,f#4,a4]@17]/8", J: "[~@15 [b3,e4,g4]@28 ~@5]/3",
  K: "[~@15 [b3,e4,g4]@29 ~@3 [c4,e4,g4]@28 ~@4 [d4,f#4,a4]@17]/6", // Em C D
  L: "[~@15 [b3,e4,g4]@29 ~@3 [b3,e4,g4]@28 ~@4 [c4,e4,g4]@17]/6", M: "[~@15 [d4,f#4,a4]@30 ~@2 [b4,e5,g5]]/3",
})).s("gm_epiano2").gain(0.4)

// other · electric guitar muted
const electric_guitar_muted = note(`<
  ~@31 A@2 ~@6 A@2 B ~ B ~ B ~@5 C D C D C D A@2 C D C D C D A@2 B ~ B ~ B ~@11 B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~
  B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~@3
>`.pickRestart({
  A: "[e2@3 ~]/2", B: "~ e3 ~@2 e3 ~@3 d3 ~ e3 ~@4 e3", C: "d4 ~@2 e4 ~@2 b3 d4 ~ e4 ~ e4 ~@4", D: "d4!2 ~ e4 ~@12",
})).s("gm_electric_guitar_muted").gain(0.35).pan(0)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~@9 A B A B A B A B A B A B A B C ~ D@2 E@2 F@2 G@2 D@2 E@2 F@2 G@2 ~@5 H ~@10 G@2 ~@6 G@2 ~@5 H I ~@46 H I ~
>`.pickRestart({
  A: "[g3,b3,e4] ~@3 [e4,g4,b4] ~@3 [d4,f#4,a4] ~@2 [d4,f#4,a4] ~ [d4,f#4,a4] ~@2", // Em D
  B: "~@4 [g3,b3,e4] ~@3 [g3,b3,e4] ~@2 [g3,b3,e4] ~ [g3,b3,e4] ~@2", C: "[g3,b3,e4]!2 ~@14", D: "[[e3,g3,b3]@5 ~@3]/2",
  E: "[[e3,g3,c4]@5 ~@3]/2", F: "[[f#3,a3,d4]@5 ~@3]/2", G: "[e2@3 ~]/2", H: "~@15 [g3,b3,e4]",
  I: "~@6 [f#3,a3,d4] ~ [g3,b3,e4] ~@3 [f#3,a3,d4] ~ [f#3,a3,d4] [g3,b3,e4]", // D Em D Em
})).s("gm_electric_guitar_clean").gain(0.3).pan(1)

// other · agogo
const agogo = note(`<
  ~@9 A B A B A B A B A B A B A B C ~@17 D E F G H I ~@20 D E F G H I ~@9 J D E F G H@2 D@3 E F G H@2 D@3 E F G H@2 D@3
  E F G H@2 K L D E M N O P ~@2
>`.pickRestart({
  A: "a4 ~@3 g4 b4 ~ a4 ~@4 g4 ~ b4 ~", B: "a4 ~@2 g4 ~ b4 ~ a4 ~@4 g4 ~ b4 ~", C: "a4!2 ~@14",
  D: "~@4 b3 ~ e4 ~ d4 ~@2 b3 ~ e4 ~ d4", E: "~@4 b3 ~ e4 ~ d4 ~@2 b3 ~ d4 ~ c4",
  F: "~@4 g3 ~ d4 ~ c4 ~@2 g3 ~ d4 ~ c4", G: "~@4 g3 ~ d4 ~ c4 ~@2 g3 ~ e4 ~ d4",
  H: "~@4 a3 ~ e4 ~ d4 ~@2 a3 ~ e4 ~ d4", I: "~@4 a3 ~ e4 ~ d4 ~@2 a3 ~ e4 ~ e4", J: "~@15 d4",
  K: "~@4 b3 ~ e4 ~ d4 ~@2 b3 ~ e4 ~@2", L: "d4 ~@3 b3 ~ e4 ~ d4 ~@2 b3 ~@2 e4 d4",
  M: "~@4 g3 ~ d4 ~ c4 ~@2 g3 ~ d4 ~@2", N: "c4 ~@3 g3 ~ d4 ~ c4 ~@2 g3 ~ e4 ~@2",
  O: "d4 ~@3 a3 ~ e4 ~ d4 ~@2 a3 ~ e4 ~ d4", P: "~@4 b3 ~ e4 ~ d4 ~@2 b3 ~ e4 ~ e4",
})).s("gm_agogo").gain(0.3).pan(0.2)

// chords · marimba
const marimba = note("<~@9 A B A B A B A B A B A B A B C ~@99>".pickRestart({
  A: "[g3,b3,e4] ~@3 [e4,g4,b4] ~@3 [d4,f#4,a4] ~@2 [d4,f#4,a4] ~ [d4,f#4,a4] ~@2", // Em D
  B: "~@4 [g3,b3,e4] ~@3 [g3,b3,e4] ~@2 [g3,b3,e4] ~ [g3,b3,e4] ~@2", C: "[g3,b3,e4]!2 ~@14",
})).s("gm_marimba").gain(0.3).pan(0.9)

// other · vibraphone
const vibraphone = note("<~@9 A B A B A B A B A B A B A B C ~@99>".pickRestart({
  A: "b3 e3 b3 ~ b3 e3 b3 ~ b3 e3 b3 e3 ~ e3 ~@2", B: "e3 b3 e3 b3!2 e3 b3 e3 b3 e3 b3 e3 ~ e3 ~@2", C: "e3!2 ~@14",
})).s("gm_vibraphone").gain(0.2)

// chords · brass section
const brass_section = note("<~@17 A B C D A B C ~@22 E ~@25 E F ~@16 G ~@23 E ~@5 E F ~>".pickRestart({
  A: "[g4,b4,e5]!2 ~@14", B: "~@2 b4 ~ d5 ~ b4 ~@3 g5 f#5 ~ d5 b4 ~", C: "[g4,b4,f#5]!2 ~@14", D: "~@2 [g4,b4,e5] ~",
  E: "~@15 [b4,e5,g5]", F: "~@6 [a4,d5,f#5] ~ [b4,e5,g5] ~@3 [a4,d5,f#5] ~ [a4,d5,f#5] [b4,e5,g5]",
  G: "~@9 [g4,g5] ~@2 [e4,e5]@2 ~@2", // G E
})).s("gm_brass_section").gain(0.7)

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

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@2 A ~ B ~ A ~ A ~@41 C ~@27 B ~@44>".pickRestart({
  A: "~@8 x!2 ~@6", B: "~@8 x!3 ~@5", C: "~@3 x ~@4",
})).gain(0.15)

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

// drums · low tom
const low_tom = s("lt").struct("<~ A@8 ~@22 B@2 ~@6 B@2 ~@6 B@3 C ~@6 B@2 ~@6 B@2 ~@8 A@8 ~@40>".pickRestart({
  A: "x", B: "~@3 x ~@4", C: "x ~@2 x ~@4 x ~ x ~ x ~@3",
})).gain(0.4)

// drums · low tom · soft notes
const low_tom_soft = s("lt").struct("<~@75 [~@3 x ~ x ~@10]!8 ~@40>").gain(0.2)

// drums · open hat
const open_hat = s("oh").struct("<~@50 [~@3 x] ~@72>").gain(0.4)

// drums · mid tom
const mid_tom = s("mt").struct("<~ x!8 ~@66 x!8 ~@40>").gain(0.4)

// drums · mid tom · soft notes
const mid_tom_soft = s("mt").struct("<~@50 [x ~@2 x ~@4 x ~ x ~ x ~@3] ~@72>").gain(0.2)

// drums · cowbell
const cowbell = s("cb").struct("<~@9 A@2 B A@35 C@3 ~ A@22 ~@2 D E D E D E D E A@38 ~@2>".pickRestart({
  A: "x!4", B: "~@3 x", C: "x ~@3 x!2 ~@2 x ~ x ~ x ~@3", D: "x ~@4 x ~@2", E: "x",
})).gain(0.2)

// drums · bongos
const bongos = s("bongo:18").struct("<~@75 [~ x!3]!8 ~@40>").gain(0.52)

// drums · congas
const congas = s("conga:13").struct("<~@3 A@6 ~@8 A@30 ~@4 A@22 ~@2 A@46 ~@2>".pickRestart({
  A: "~ x ~ x",
})).gain(0.63)

// drums · congas
const congas_2 = s("conga:18").struct("<~@3 A@6 ~@8 A@30 ~@4 A@22 ~@2 A@46 ~@2>".pickRestart({
  A: "x ~@2 x ~@4 x ~@2 x ~@4",
})).gain(0.63)

// drums · congas
const congas_3 = s("conga:33").struct("<~@3 A@6 ~@8 A@30 ~@4 A@22 ~@2 A@46 ~@2>".pickRestart({
  A: "~@3 x ~@3 x",
})).gain(0.63)

// drums · agogo bells
const agogo_bells = s("agogo:4").struct("<~@5 A@4 ~@16 A@25 ~ A@22 ~@10 A@38 ~@2>".pickRestart({
  A: "x!5 ~@11",
})).gain(1.27)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@3 A@6 ~@8 A@30 B@3 ~ A@22 ~@6 A@42 ~@2>".pickRestart({
  A: "~@3 x!2 ~@6 x!2 ~@3", B: "~@2 x!3 ~@5 x!3 ~@3",
})).gain(1.01)

// drums · claves
const claves = s("clave:2").struct("<~@23 A@2 ~@6 B@2 ~@6 B@2 ~@6 A@3 ~@7 B@2 ~@6 B@2 ~@56>".pickRestart({
  A: "x ~@2 x ~@2 x ~@9", B: "x ~@2 x ~@4 x ~ x ~ x ~@3",
})).gain(0.97)

// drums · woodblocks
const woodblocks = s("woodblock:5").struct("<~@9 A@38 B@3 ~ A@22 ~@2 C@8 A@38 ~@2>".pickRestart({
  A: "x ~ x ~ x ~ x!5 ~ x ~ x ~", B: "~ x ~@14", C: "x ~ x ~ x ~ x!5 ~ x ~ x!2",
})).gain(0.29)

// drums · woodblocks
const woodblocks_2 = s("woodblock:4").struct("<~@9 A@38 B@3 ~ A@22 ~@2 C@8 A@38 ~@2>".pickRestart({
  A: "~@4 x!2 ~@2 x ~@3 x ~@3", B: "x ~@3 x!2 ~@2 x ~@3 x ~@3", C: "~@6 x!2 ~@6 x!2",
})).gain(0.29)

stack(
  synth_drum, bass, epiano2, electric_guitar_muted, electric_guitar_clean, agogo, marimba, vibraphone, brass_section,
  kick, snare, snare_soft, hihat, low_tom, low_tom_soft, open_hat, mid_tom, mid_tom_soft, cowbell, bongos, congas,
  congas_2, congas_3, agogo_bells, cabasa, claves, woodblocks, woodblocks_2
)

More by Gloria Estefan