Strudelify

Maria (Un, Dos, Tres)

Ricky Martin

KeyG minorTempo127 bpm
0:00/0:00
// Maria (Un, Dos, Tres) — Martin Ricky
// 126.7 bpm, 4/4, key G minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 142 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(126.7/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  ~@37 A B A B A B A C A B A B A B A C ~@12 A B A B A B A C A B A B A B A C D E D E ~@28 A B A B A B A C A B A B A B A B
  ~@13
>`.pickRestart({
  A: "[gb3,a3,d4,gb4] ~ [a3,d4] [gb3,a3,d4,gb4] ~ [a3,d4] [gb3,a3,d4,gb4]@2 ~ [a3,d4] [a3,d4,gb4] [gb3,a3,d4,gb4] ~ [a3,d4] [gb3,a3,d4,gb4] ~", // D D5 D D5 D D5 D D5 …
  B: "[g3,bb3,d4,g4] ~ [bb3,d4] [g3,bb3,d4,g4] ~ [bb3,d4] [g3,bb3,d4,g4]@2 ~ [bb3,d4] [bb3,d4,g4] [g3,bb3,d4,g4] ~ [bb3,d4] [g3,bb3,d4,g4] ~", // Gm Bb Gm Bb Gm Bb Gm Bb …
  C: "[g3,bb3,d4,g4] ~@2 [g3,bb3,d4,g4] ~@2 [g3,bb3,d4,g4]!3 ~@7", // Gm
  D: "[gb3,a3,d4,gb4] ~ [a3,d4] [gb3,a3,d4,gb4] ~ [a3,d4] [gb3,a3,d4,gb4]@4 [a3,d4,gb4] [gb3,a3,d4,gb4] ~ [a3,d4] [gb3,a3,d4,gb4] ~", // D D5 D D5 D D5 D
  E: "[g3,bb3,d4,g4] ~ [bb3,d4] [g3,bb3,d4,g4] ~ [bb3,d4] [g3,bb3,d4,g4]@4 [bb3,d4,g4] [g3,bb3,d4,g4] ~ [bb3,d4] [g3,bb3,d4,g4] ~", // Gm Bb Gm Bb Gm Bb Gm
})).s("gm_acoustic_guitar_nylon").gain(0.2)

// chords · acoustic guitar nylon · soft notes
const acoustic_guitar_nylon_2 = note(`<
  ~@37 A B A B A B A ~ A B A B A B A ~@13 A B A B A B A ~ A B A B A B A ~ C D C D ~@28 A B A B A B A ~ A B A B A B A B
  ~@13
>`.pickRestart({
  A: "~@2 [gb3,gb4] ~@2 [gb3,gb4] ~@3 [gb3,gb4] gb3 ~@2 [gb3,gb4] ~@2", // Gb
  B: "~@2 [g3,g4] ~@2 [g3,g4] ~@3 [g3,g4] g3 ~@2 [g3,g4] ~@2", // G
  C: "~@2 [gb3,gb4] ~@2 [gb3,gb4] ~@4 gb3 ~@2 [gb3,gb4] ~@2", D: "~@2 [g3,g4] ~@2 [g3,g4] ~@4 g3 ~@2 [g3,g4] ~@2",
})).s("gm_acoustic_guitar_nylon").gain(0.11)

// bass · electric bass finger
const bass = note(`<
  ~@21 A B C D A B C E F G F G F G F G F G F G F G F H F G F G F G F H A B C E F G F G F G F G F G F G F G F H F G F G F
  G F H ~@28 F G F G F G F G F G F H F G F G F G F H ~@13
>`.pickRestart({
  A: "d1 ~@2 d1@2 ~ f1@4 g1@2 f1@2 g1@2", B: "d1@2 ~ d1 ~@2 f1@4 g1@2 f1@2 g1@2",
  C: "d1@2 ~ d1@2 ~ f1@4 g1@2 f1@2 g1@2", D: "d1@2 ~ d1 ~@2 f1@4 g1@2 f1@2 g1 ~", E: "d1 ~@7",
  F: "d1@2 ~ d1 a1@2 d1@2 ~@6 f1@2", G: "g1@2 ~ g1@3 f1@2 g1 ~@2 g1@3 f1@2", H: "g1@2 ~ g1@3 f1@2 g1 ~@7",
})).s("gm_electric_bass_finger").gain(0.45)

// other · trombone
const trombone = note("<~@37 A B A B A B C D ~@20 A B A B A B C D ~@40 A B A B A B C D ~@21>".pickRestart({
  A: "d3 gb3 a3 eb4 ~ c4 d4@10", B: "d3 g3 bb3 eb4 ~ c4 d4@10", C: "d3 gb3 a3 eb4 ~ c4 d4@3 d4 db4 d4 eb4 e4 f4 gb4",
  D: "g4 ~@2 g4 ~@2 g4!3 ~@7",
})).s("gm_trombone").gain(0.36)

// other · brass section
const brass_section = note(`<
  A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A C ~@6 A B ~@3 D ~@10 A B ~@10 A B ~@3 D ~@11 D ~@31 D ~@2 A B ~@11 E ~@15 E
  ~@2 F E
>`.pickRestart({
  A: "~@13 [e4,f4] [gb4,g4,ab4] [a4,bb4,b4]", B: "d5@2 c5 [a4,bb4,b4] [g4,ab4] ~@11, c5 ~@15", C: "[c5,d5] ~@15",
  D: "d5@2 c5 [a4,bb4,b4] [g4,ab4] ~@11", E: "d5@2 [b4,c5] [ab4,a4,bb4] g4 ~@11",
  F: "~@13 [e4,f4,gb4] [g4,ab4,a4] [bb4,b4,c5]",
})).s("gm_brass_section").gain(0.29)

// other · brass section · soft notes
const brass_section_soft = note(`<
  A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A ~@7 A B ~@3 B ~@10 A B ~@10 A B ~@3 B ~@11 B ~@31 B ~@2 A B ~@11 C ~@15 C
  ~@2 D C
>`.pickRestart({
  A: "~@12 d4 eb4 ~@2", B: "~@4 gb4 [eb4,e4,f4] d4 ~@9", C: "~@4 [f4,gb4] [d4,eb4,e4] ~@10", D: "~@12 [d4,eb4] ~@3",
})).s("gm_brass_section").gain(0.14)

// other · orchestra hit
const orchestra_hit = note(`<
  ~ A ~@3 A ~@7 A ~@7 A ~@3 A ~@3 A ~@3 A ~@19 A ~@3 A ~@3 A ~@19 A ~@7 A ~@7 A ~@7 A ~@3 A ~@19 A ~@3 A ~@3 A ~@3 A
>`.pickRestart({
  A: "[d3,d4] ~@3", // D
})).s("gm_orchestra_hit").gain(0.22)

// other · melodic tom
const melodic_tom = note(`<
  ~ A ~ A B C A C A C A C D C@15 D E@15 F E@7 F C@3 D E@15 F E@7 B C A C A C A C D C A C A C A C D C A C A C A C D C@2 A
  C E@11 F E@16 A ~ A G A
>`.pickRestart({
  A: "c2 ~@15", B: "~@8 c2!2 ~ c2!2 ~@3", C: "c2 ~@13 c2 ~", D: "c2 ~@7 c2!2 ~ c2!2 ~@3",
  E: "c2 ~@2 c2 ~@2 c2 ~@7 c2 ~", F: "c2 ~@2 c2 ~@2 c2!3 ~ d2!4 c2 ~", G: "~@8 c2!3 ~ c2 ~@3",
})).s("gm_melodic_tom").gain(0.35)

// other · timpani
const timpani = note(`<
  ~ A ~ B C D A D A D A D E D@15 E ~@24 D@3 E ~@23 C D A D A D A D E D A D A D A D E D A D A D A D E D@2 A D ~@28 A ~ A
  F A
>`.pickRestart({
  A: "c2 ~@15", B: "~ c2 ~@14", C: "~@8 c2!2 ~ c2!2 ~@3", D: "c2 ~@13 c2 ~", E: "c2 ~@7 c2!2 ~ c2!2 ~@3",
  F: "~@8 c2!3 ~ c2 ~@3",
})).s("gm_timpani").gain(0.15)

// other · brass section
const brass_section_2 = note(`<
  ~@32 A ~@3 A ~@4 B C D E ~@15 A ~@3 A ~@4 B C D E ~@24 F G F G F G F H ~@4 I A I@2 ~@4 B C D E ~@21
>`.pickRestart({
  A: "[g4,g5]!2 [f4,f5] [g4,g5] ~@2 [g4,g5]!2 [f4,f5] [g4,g5] ~@2 [c5,c6] [d5,d6] ~@2", B: "d4 gb4 a4 eb5 ~ c5 d5@10",
  C: "d4 g4 bb4 eb5 ~ c5 d5@10", D: "d4 gb4 a4 eb5 ~ c5 d5@3 d5 db5 d5 eb5 e5 f5 gb5", E: "g5 ~@2 g5 ~@2 g5!3 ~@7",
  F: "[g4,g5] [d4,d5] ~ [g4,g5] [d4,d5] ~ [g4,g5] [d4,d5] [f4,f5]@4 [c4,c5] ~@3", // G D G D G D F C
  G: "[g4,g5] [d4,d5] ~ [g4,g5] [d4,d5] ~ [g4,g5] [d4,d5] [f4,f5] ~ [f4,f5] ~ [d4,d5] ~@3", // G D G D G D F D
  H: "[g4,g5] [d4,d5] ~ [g4,g5] [d4,d5] ~ [g4,g5] [d4,d5] [bb4,bb5] ~ [bb4,bb5] ~ [f4,f5] ~@3", // G D G D G D Bb F
  I: "[g4,g5]!2 [f4,f5] [g4,g5] ~@2 [g4,g5]!2 [f4,f5] [g4,g5] ~@6", // G F G F G
})).s("gm_brass_section").gain(0.62)

// bass · lead 2 sawtooth
const bass_2 = note("<~@5 A B@2 C A B@2 C A B@2 C A B@2 C ~@4 A B@2 D ~@112 D>".pickRestart({
  A: "[d1,d2] ~@2 [d1,d2] ~@2 [f1,f2]@4 [g1,g2]@2 [f1,f2]@2 [g1,g2]@2", // D F G F G
  B: "[d1,d2]@2 ~ [d1,d2]@2 ~ [f1,f2]@4 [g1,g2]@2 [f1,f2]@2 [g1,g2]@2", // D F G F G
  C: "[d1,d2] ~@2 [d1,d2]@2 ~ [f1,f2]@4 [g1,g2]@2 [f1,f2]@2 [g1,g2] ~", D: "[d1,d2] ~@15",
})).s("gm_lead_2_sawtooth").gain(0.25)

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

// drums · rim
const rim = s("rim").struct("<~@5 [x!4]!76 ~@24 [x!4]!32 ~@4 x>").gain(0.32)

// drums · snare
const snare = s("sd").struct("<~@89 A@3 B A@3 B ~@4 A@3 C ~@37>".pickRestart({
  A: "x ~ x!3 ~ x!4 ~ x!2 ~ x ~", B: "x!2 ~ x!4 ~ x ~@2 x ~@2 x!2", C: "x!7 ~ x ~@2 x ~@2 x!2",
})).gain(0.4)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@89 A B C D A B C D ~@4 A B C D ~@37>".pickRestart({
  A: "~@2 x ~ x!2 ~ x ~@2 x ~ x!2 ~@2", B: "~@2 x ~@2 x ~ x ~@2 x ~ x!2 ~ x", C: "~@2 x ~ x!2 ~ x ~@2 x ~ x!2 ~ x",
  D: "~@2 x ~ x ~@2 x ~@2 x ~ x!2 ~@2",
})).gain(0.16)

// drums · clap
const clap = s("cp").struct("<~@13 [~ x ~ x]!68 ~@28 [~ x ~ x]!28 ~@5>").gain(0.56)

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

// drums · hihat
const hihat = s("hh").struct("<~@13 [x!16]!68 ~@28 [x!16]!28 ~@5>").gain(0.24)

// drums · mid tom
const mid_tom = s("mt").struct("<~@44 A ~@7 B ~@19 A ~@47 A ~@21>".pickRestart({
  A: "~@10 x!4 ~@2", B: "~@9 x!5 ~@2",
})).gain(0.48)

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

// drums · tambourine · soft notes
const tambourine_soft = s("tb").struct("<~@13 [~ x ~ x ~ x ~ x]!68 ~@28 [~ x ~ x ~ x ~ x]!28 ~@5>").gain(0.16)

// drums · splash
const splash = s("cr").struct(`<
  ~ A ~ A B C A C A C A C B C@9 ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@11
  C A C A C A C A@2 ~@3 C A C A ~ C A C A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~ A D A
>`.pickRestart({
  A: "x", B: "~@8 x ~ x!3 ~@3", C: "x ~@6 x", D: "~@8 x!2 ~ x!2 ~@3",
})).gain(0.32)

// drums · cowbell
const cowbell = s("cb").struct(`<
  ~@89
  [x ~@2 x!2 ~ x!4 ~ x!2 ~@3]!7
  [x ~@2 x!3 ~ x!3 ~ x!2 ~@3]
  ~@4
  [x ~@2 x!2 ~ x!4 ~ x!2 ~@3]!4
  ~@37
>`).gain(0.32)

// drums · bongos
const bongos = s("bongo:4").struct(`<
  ~@5 A@4 B@4 A@4 B@4 A@4 B@4 A@8 B@4 A@4 B@4 A@4 B@4 A@4 B@4 A@4 B@4 A@4 B@4 ~@24 A@4 B@4 A@4 B@4 A@16 ~@4 C
>`.pickRestart({
  A: "x ~@2 x!2 ~@3 x!2 ~ x!2 ~@3", B: "x!2 ~ x!2 ~@3 x!2 ~ x!2 ~@3", C: "x",
})).gain(1.05)

// drums · bongos · soft notes
const bongos_soft = s("bongo:4").struct(`<
  ~@5 A B@3 C@4 A B@3 C@4 A B@3 C@4 A B@3 A B@3 C@4 A B@3 C@4 A B@3 C@4 A B@3 C@4 A B@3 C@4 A B@3 C@4 ~@24 A B@3 C@4 A
  B@3 C@4 A B@3 A B@3 A B@3 A B@3 ~@5
>`.pickRestart({
  A: "~ x ~@3 x ~@2", B: "~@2 x ~@2 x ~@4 x ~@5", C: "~@2 x ~@2 x ~@4 x ~@2 x ~@2",
})).gain(0.42)

// drums · bongos
const bongos_2 = s("bongo:18").struct(`<
  ~@5 A@4 B@4 A@4 B@4 A@4 B@4 A@8 B@4 A@4 B@4 A@4 B@4 A@4 B@4 A@4 B@4 A@4 B@4 ~@24 A@4 B@4 A@4 B@4 A@16 ~@5
// … 64 more lines

More by Ricky Martin