Strudelify
Words Get in the Way cover art

Words Get in the Way

Gloria Estefan

KeyF majorTempo104 bpm
0:00/0:00
// Words Get in the Way — Estefan Gloria
// 104 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 98 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(104/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 · acoustic bass · "Acoustic"
const bass = note(`<
  A B C B A@2 D E F G H I A J K L G M N O P Q R S T U V W X Y Z AA N V@3 AB AC AD AA AE AF O AG@2 AD AH AI AF O AJ AK AL
  Z AM AN AO O P Q AP AQ AR@2 A AS J E AT AU G AS AV AW AX L G AY O AR AJ AK AZ BA BB BC BD AR P Q BE BF AO AF AT BG AS
  BH
>`.pickRestart({
  A: "f2 c3", B: "f2@8 c2@7 f1", C: "f2@8 c2@6 ~ gb2", D: "d2@8 a2@7 d2", E: "d2@8 a1@7 ~",
  F: "bb1@6 ~@2 f2@6 ~ f2, ~@7 bb1@2 ~@7", G: "c2@6 ~@2 g2@6 ~ g2, ~@7 c2@2 ~@7", H: "c2@8 g2@7 ~",
  I: "f2@8 c3@4 gb2@3 e2", J: "d2@8 a2@6 ~ eb2", K: "d2@8 a1@6 ~ b1", L: "bb1@8 f2@4 db2@3 b1", M: "c2@8 g2@7 c1",
  N: "f2 ~@3 g2@4 a2@4 c3@4, ~@3 f2@2 ~@11", O: "f2 f3 c3 a2", P: "f2 a2 b2 d3", Q: "f3@4 d3@4 b2@4 f2@3 ~",
  R: "d2@4 d2@4 d2@4 c2@2 ~ c2", S: "bb1@3 f1 f2@3 ~ d2@4 bb1@2 ~ f1", T: "bb1@3 f1 c2@4 d2@3 f1 f2@3 f1",
  U: "c2@2 ~ c2 b1@4 c2@4 c2@4", V: "f2 g2 a2 c3", W: "f2@3 c2 g2@4 a2@3 c2 c3@3 c2", X: "f3@3 d2 d3@4 b2@3 b1 d2@4",
  Y: "f2@3 d2 a2@4 b2@3 d2 d3@3 d2", Z: "bb1 f2 d2 bb1", AA: "c2@3 g1 g2@3 ~ f2@4 c2@2 ~ g1",
  AB: "d2@3 a1 e2@4 f2@3 a1 a2@3 a1", AC: "d2@2 ~ d1 e2@4 f2@4 a2@3 d2", AD: "bb1 bb2 f2 db2",
  AE: "c2 ~@3 d2@4 e2@4 g2@4, ~@3 c2@2 ~@11", AF: "f2 c3 a2 f2", AG: "d2 e2 f2 a2", AH: "c2 d2 f2 g2",
  AI: "c2@3 g1 d2@4 e2@3 g1 g2@3 g1", AJ: "g2 ab2 a2 bb2", AK: "b2@4 c3@4 db3@4 d3@3 ~",
  AL: "d2@2 ~ d2 a2@4 d2@3 d1 c2@4", AM: "bb2 bb1 d2 f2", AN: "c2@3 ~ c2@4 c3 ~@2 c3 g2@4", AO: "f3 f2 a2 c3",
  AP: "bb1@4 f2@4 bb2@4 f2@3 db2", AQ: "c3 c2 f2 g2", AR: "f2@3 c2 c3@3 ~ a2@4 f2@2 ~ c2", AS: "f2@8 c2@7 ~",
  AT: "bb1@8 f2@7 ~", AU: "c2@8 g2@6 ~ db2", AV: "f2@6 ~@2 c2@6 ~ c2, ~@7 f2@2 ~@7", AW: "d2@8 a2@7 d1", AX: "d2 a2",
  AY: "c2 g2", AZ: "d2@3 d1 d2@4 d2@3 d1 c2@3 c1", BA: "bb1@4 f2@4 bb2@4 f2@3 b1", BB: "bb1 bb2 f2 d2",
  BC: "c2@2 ~ c2 g2@4 c3 ~@2 c3 g2@4", BD: "f2@4 c3@4 f3@4 c3@3 gb2", BE: "bb1 ~@3 c2@4 d2@4 f2@4, ~@3 bb1@2 ~@11",
  BF: "c2 ~@3 d2@4 f2@4 g2@4, ~@3 c2@2 ~@11", BG: "c2@7 ~ c3@2 ~@2 c2@4, ~@7 g2@2 ~@2 g2@2 ~@3", BH: "f2@5 ~@11",
})).s("gm_acoustic_bass").gain(0.31)

// chords · epiano1 · "Electric"
const epiano1 = note(`<
  A B C D A B E F G H I J K L M N O I A P Q@2 R S@2 T C K U@2 V W A D A K L X Y Z AA AB K E@2 AC O I AD K AE@2 AF AG@2
  AH AB K U@2 V O A D C K X AI AJ W AK C B X@2 AJ H AL A B U@2 AM AG@2 AN A B AO@2 V H AB AP AQ W A ~
>`.pickRestart({
  A: "[a3,d4,g4,c5]", B: "[a3,c4,e4,g4]", C: "[a3,c4,d4,g4]", D: "~@7 [g4,c5] ~@3 [g4,c5] ~@3 g4, [f3,a3,c4,e4]",
  E: "[c4,f4,a4,e5]", F: "[c4,d4,f4,a4]", G: "[db4,ab4,c5,f5]", H: "[bb3,d4,f4,a4]", I: "[bb3,e4,ab4,db5]",
  J: "~@4 [a3,d4,g4,c5]@2 ~ [a3,d4,g4,c5] [a3,d4,g4,c5]@2 ~ [a3,d4,g4,c5] [a3,d4,g4,c5]@2 ~@2", K: "[a3,e4,g4,c5]",
  L: "[f3,a3,c4,e4]", M: "[f3,c4,d4,a4]", N: "~@7 [f4,bb4] ~@3 [f4,bb4] ~@3 f4, [f3,ab3,bb3,db4]", O: "[bb3,f4,g4,d5]",
  P: "~@7 [a3,e4,g4,c5]@8 ~", Q: "[b3,d4,g4]/2", R: "[c4,e4,f4,a4]@2 [c4,e4,f4,a4] [c4,e4,g4,c5]", S: "[bb3,d4,f4]",
  T: "[c4,f4,a4,d5] [bb3,e4,g4,db5]", U: "[g3,b3,d4,g4]/2", V: "[a3,d4,f4,c5]", W: "[bb3,f4,a4,d5]", X: "[f3,c4,e4,a4]",
  Y: "~@7 [ab3,db4,f4,c5]@8 ~", Z: "[bb3,d4,f4,g4]", AA: "[bb3,db4,e4,ab4]", AB: "~@7 [a3,d4,g4,c5]@8 ~",
  AC: "~@4 bb4@3 f4 ~@3 bb4@2 f4 ~@2, [f3,ab3,bb3,db4]", AD: "~@7 [a3,c4,d4,g4]@8 ~", AE: "[b3,g4,d5]/2",
  AF: "[c4,e4,f4,a4]@2 [c4,f4,a4,e5] [c4,e4,g4,c5]", AG: "[bb3,d4,f4,bb4]", AH: "[c4,f4,g4,d5] [bb3,e4,ab4,db5]",
  AI: "[f3,a3,c4,d4]", AJ: "[ab3,db4,f4,c5]", AK: "[bb3,e4,g4,d5]", AL: "[bb3,e4,g4,eb5]",
  AM: "[f3,a3,c4,e4]@2 [f3,c4,e4,a4] [e3,c4,g4]", AN: "[c4,f4,a4,d5]@8 ~@3 g4@5, ~ [g3,bb3,c4,e4,c5]",
  AO: "[g3,b3,d4]/2", AP: "~@4 g5@3 c5 ~@3 g5@2 c5 ~@2, [c4,e4,f4,a4]", AQ: "[a3,c4,d4,f4]",
})).s("gm_epiano1").gain(0.26)

// chords · acoustic guitar nylon · "Nylon Gui"
const acoustic_guitar_nylon = note(`<
  A B A B A B C@2 D E F A B C@2 D E F G H I J K L M N O P Q R G S T P T P U@2 V E W O P X@2 Y S W T P Z AA K AB AC AD G
  P Q R T E O H A B C@2 D E F AE B C@2 AF E F G P I J AG M AB AH T P AI@2 G E T H A E A ~
>`.pickRestart({
  A: "~@4 [d3,a3] ~@7 [d3,a3] ~@3", B: "~@4 [e3,a3] ~@7 [e3,a3] ~@3", C: "~@4 [f3,c4] ~@7 [f3,c4] ~@3",
  D: "~@4 [db3,ab3] ~@7 [db3,ab3] ~@3", E: "~@4 [f3,bb3] ~@7 [f3,bb3] ~@3", F: "~@4 [e3,bb3] ~@7 [e3,bb3] ~@3",
  G: "[d3,a3]@2 ~@2 [d3,a3] ~@7 [d3,a3] ~@3", H: "[e3,a3]@2 ~@2 [e3,a3] ~@7 [e3,a3] ~@3",
  I: "[g3,d4]@4 [g3,d4] ~@3 d4@3 ~ d4 ~@3", J: "d4@3 ~ d4 ~@3 [g3,d4]@4 [g3,d4] ~@3",
  K: "[f3,c4]@3 ~ [f3,c4] ~@3 c4@4 [e3,c4] ~@3", L: "~@4 [d3,bb3] ~@7 [d3,bb3] ~@3",
  M: "[d3,bb3]@4 [d3,bb3] ~@3 bb3@3 ~ bb3 ~@3", N: "[f3,c4]@2 ~@2 [f3,c4] ~@3 [e3,bb3]@2 ~@2 [e3,bb3] ~@3",
  O: "[d3,a3]@4 [d3,a3] ~@7 [d3,a3] ~@3", P: "[e3,a3]@4 [e3,a3] ~@7 [e3,a3] ~@3",
  Q: "[g3,d4]@4 [g3,d4] ~@7 [g3,d4] ~@3", R: "[g3,d4]@3 ~ [g3,d4]@2 ~@6 [g3,d4]@2 ~@2",
  S: "[f3,bb3]@4 [f3,bb3] ~@7 [f3,bb3] ~@3", T: "[d3,a3]@4 [d3,a3] ~@3 a3@3 ~ a3 ~@3",
  U: "[f3,c4]@2 ~@2 [f3,c4] ~@7 [f3,c4] ~@3", V: "[db3,ab3]@2 ~@2 [db3,ab3] ~@7 [db3,ab3] ~@3",
  W: "[e3,bb3]@4 [e3,bb3] ~@3 bb3@3 ~ bb3 ~@3", X: "[f3,c4]@4 [f3,c4] ~@7 [f3,c4] ~@3",
  Y: "[db3,ab3]@4 [db3,ab3] ~@3 ab3@3 ~ ab3 ~@3", Z: "[g3,d4]@4 [g3,d4] ~@3 d4@4 d4 ~@3",
  AA: "d4@4 d4 ~@3 [g3,d4]@4 [g3,d4] ~@3", AB: "[d3,bb3]@4 [d3,bb3] ~@7 [d3,bb3] ~@3",
  AC: "[d3,bb3]@2 ~@2 [d3,bb3] ~@7 [d3,bb3] ~@3", AD: "[f3,c4]@2 ~@2 [f3,c4] ~@3 [e3,bb3]@4 [e3,bb3] ~@3",
  AE: "~@4 a3 ~@3 a3 ~@3 [d3,a3] ~@3", AF: "~@4 ab3 ~@3 ab3 ~@3 [db3,ab3] ~@3",
  AG: "[f3,c4]@2 ~@2 [f3,c4] ~@3 c4@4 [e3,c4] ~@3", AH: "[f3,c4]@4 [f3,c4] ~@3 [e3,bb3]@3 ~ [e3,bb3] ~@3",
  AI: "~@4 [g3,d4] ~@7 [g3,d4] ~@3", // G5
})).s("gm_acoustic_guitar_nylon").gain(0.2)

// chords · acoustic guitar nylon · "Nylon Gui" · soft notes
const acoustic_guitar_nylon_2 = note(`<
  ~@18 A@2 B C D ~ E ~ F G H I A J E G E G K@2 L ~ M F G N@2 O J M E G P C D Q R ~ A G H I E ~ F A ~@7 S ~@3 T ~@2 A G B
  C D E Q ~ E G ~@2 A ~ E A ~@4
>`.pickRestart({
  A: "~@8 a3 ~@7", B: "~@8 g3@3 ~ g3 ~@3", C: "g3@5 ~@11", D: "~@2 f3 ~", E: "~@8 d3@3 ~ d3 ~@3", F: "~@2 [d3,a3] ~",
  G: "~@2 [e3,a3] ~", H: "~@2 [g3,d4] ~", I: "~@8 [g3,d4]@3 ~@5", J: "~@2 [f3,bb3] ~", K: "~@8 c4 ~@7",
  L: "~@8 ab3 ~@7", M: "~@8 e3@3 ~ e3 ~@3", N: "~@2 [f3,c4] ~", O: "~@8 db3@3 ~ db3 ~@3", P: "~@8 g3@4 g3 ~@3",
  Q: "~@2 [d3,bb3] ~", R: "~@8 bb3 ~@7", S: "~@8 d3 ~@7", T: "~@8 db3 ~@7",
})).s("gm_acoustic_guitar_nylon").gain(0.1)

// other · epiano2 · "Electric"
const epiano2 = note("<~@63 A B C D E F G H I J K L@2 M N@3 O@2 P Q@2 R@3 S@4 T@2 U V@3>".pickRestart({
  A: "~@15 c4", B: "g4@2 f4@2 ~ g4 f4 ~ g4@2 f4@3 g4 a4@2", C: "c4@13 ~ c4 ~", D: "g4@3 f4@2 g4 f4 ~ g4@2 f4@3 g4 a4@2",
  E: "d4@13 ~ d4@2", F: "c5@2 bb4@2 ~ bb4 ~ a4 a4@2 f4 f4@4 ~", G: "c5@2 bb4@2 ~ bb4 a4 ~ a4@2 f4@2 ~ f4@2 e4",
  H: "d4@10 ~ c4@2 ~ c4@2", I: "g4@2 f4@3 g4 f4 ~ g4@2 f4@3 g4 a4@2", J: "d4@3 c4@11 ~ c4",
  K: "g4@2 ~ f4@2 g4 f4 ~ g4@2 f4@3 g4 a4@2", L: "[d4@12 ~@4 c5@2 ~ bb4@2 bb4 ~ a4 a4@2 f4 ~ f4@4, ~@15 d4@2 ~@15]/2",
  M: "c5@3 bb4@2 bb4 ~ bb4 a4@3 g4@2 f4@2 e4",
  N: "[d4@10 ~ c4@3 ~@2 g4@4 f4@2 ~ g4@5 a4@3 c4@15 a3 ~, ~@15 c4@2 ~@6 f4 ~@24]/3",
  O: "[~@4 b3@3 d4@5 a4@2 g4@12 d4@2 ~ d4 e4@2, g3@7 ~@25]/2", P: "f4@3 e4@2 d4 ~ c4 d4@5 ~ e4@2, ~@14 d4 ~",
  Q: "[f4@3 e4@3 d4 c4 d4@5 ~ d4 ~ f4@4 g4@4 e4@4 f4@4, ~@15 e4@2 ~@15]/2",
  R: "[a4@3 g4@8 c4@3 ~@2 g4@4 f4@2 ~ f4 ~@4 a4@3 c4@13 a3@3 ~, ~@15 c4@2 ~@5 g4@6 ~@20]/3",
  S: "[~@4 b3@3 d4@5 a4@3 g4@11 d4@2 ~ d4 ~@2 f4@2 e4@3 d4 c4 ~ d4@5 ~ d4 ~ f4@4 g4@4 d4@6 c4@2, g3@7 ~@24 e4@2 ~@14 e4@2 ~@15]/4",
  T: "[f4@26 d4@2 ~ d4 e4@2]/2", U: "f4@2 e4@3 d4 c4 ~ d4@5 d4 e4@2",
  V: "[f4@4 g4@4 d4@7 ~ f4@28 ~@4, ~@15 c4@2 ~@31]/3",
})).s("gm_epiano2").gain(0.41)

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

// drums · rim
const rim = s("rim").struct(`<
  A@3 ~ A@3 B A@3 C A@5 ~ A B A B A@3 B A@5 B A ~ A@3 B A B A B A B A@3 ~ A@5 B A@3 B A@3 B A ~ A@11 C A@3 B A B A B A@9
  ~ A@3 ~
>`.pickRestart({
  A: "~ x ~ x", B: "~ x ~@2", C: "~@4 x ~@6 x ~@4",
})).gain(0.31)

// drums · snare
const snare = s("sd").struct(`<
  ~@3 A ~@13 A B ~ B C D E D C B D E F D ~ E G H I J ~ B J@2 ~ D J@2 C B G D E J K J ~ E L B ~ M ~ E ~ M N C ~@12 O B J
  B ~ D ~ B P B F J K B E B G Q ~@2 M
>`.pickRestart({
  A: "~@7 x!3 ~ x!3 ~ x", B: "~@7 x ~@7 x", C: "~@3 x ~@12", D: "~@7 x!2 ~@7", E: "~ x", F: "~@8 x ~@2 x ~@4",
  G: "~@3 x ~@3 x!2 ~@2 x ~ x ~ x", H: "x ~@2 x ~@4 x ~@7", I: "~@7 x!2 ~@2 x ~@4", J: "~@7 x ~@8", K: "~@11 x ~@3 x",
  L: "~@3 x ~@7 x ~@3 x", M: "~@3 x ~@3 x ~@8", N: "~@3 x ~@3 x ~@3 x ~ x ~ x", O: "~@11 x!2 ~@3",
  P: "~@3 x ~@3 x ~@3 x ~@4", Q: "x",
})).gain(0.15)

// drums · hihat
const hihat = s("hh").struct("<A@7 B A@10 C D@3 C D@3 C D@7 C D@28 A@15 C D C D@13 A@3 E>".pickRestart({
  A: "x!4", B: "~ x!3", C: "x!2 ~ x", D: "~ x ~ x", E: "x!3 ~",
})).gain(0.31)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<[~@7 x ~@7 x]!3 ~ [~@7 x ~@7 x]!13 ~@47 [~@7 x ~@7 x]!14 ~@16 [~@7 x ~@7 x]!3 ~>")
  .gain(0.2)

// drums · mid tom
const mid_tom = s("mt").struct("<~@21 [~@12 x ~@2 x] ~@3 [~@12 x ~@2 x] ~@55 [~@12 x ~@2 x] ~@16>").gain(0.2)

// drums · open hat
const open_hat = s("oh").struct("<~@7 A ~@9 B ~@3 B ~@3 C ~@7 B ~@43 C ~ B ~@13 B ~@4>".pickRestart({
  A: "x", B: "~@7 x", C: "~@15 x",
})).gain(0.36)

// drums · ride
const ride = s("rd").struct(`<
  A B@2 C B D E F G F D H ~@6 D I D J I@4 D I@6 K@2 I@3 D I@8 K I@8 D I@6 ~@15 D I D I@3 D I D I@3 D I D K ~@3 L
>`.pickRestart({
  A: "x ~ x!3 ~ x!2", B: "x ~@3 x ~ x ~ x ~@3 x ~@2 x", C: "x ~@3 x ~@2 x!2 ~@3 x ~ x ~", D: "x!4", E: "x ~ x!3 ~ x ~",
  F: "x ~@3 x ~@3 x ~@3 x ~@2 x", G: "x ~ x ~ x ~ x!2", H: "x", I: "x ~@3 x ~@2 x!2 ~@3 x ~@2 x",
  J: "x ~@3 x ~@2 x!2 ~@2 x!2 ~@2 x", K: "~@4 x ~@2 x!2 ~@3 x ~@2 x", L: "~@3 x",
})).gain(0.31)

// drums · ride · soft notes
const ride_soft = s("rd").struct("<~@18 A ~ A ~@5 A ~@11 A ~@17 A ~@21 A ~ A ~@3 A ~ A ~@3 A ~ A ~@5>".pickRestart({
  A: "~@7 x ~@7 x",
})).gain(0.2)

stack(
  bass, epiano1, acoustic_guitar_nylon, acoustic_guitar_nylon_2, epiano2, kick, rim, snare, hihat, hihat_soft, mid_tom,
  open_hat, ride, ride_soft
)

More by Gloria Estefan