Strudelify

Mis manos en tu cintura

Adamo

KeyB♭ majorTempo115 bpm
0:00/0:00
// Mis manos en tu cintura — Adamo
// 115 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 97 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(115/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.

// other · synth strings 1
const synth_strings_1 = note("<~@6 A B@2 ~@30 A ~@14 C D ~@15 A ~@7 A ~@7 A ~@9>".pickRestart({
  A: "~@2 c5 d5 ~ eb5 ~ f5 ~@8", B: "[~@7 d5@4 c5@4 bb4@13 ~@4]/2", C: "~@11 eb5 ~ g5 ~@2", D: "c5@3 ~@5",
})).s("gm_synth_strings_1").gain(0.45)

// chords · synth strings 1
const synth_strings_1_2 = note("<~@24 A B@7 ~@24 C@8 ~@33>".pickRestart({
  A: "[eb5,g5,bb5]@13 ~@3", // Eb
  B: "[[bb4,d5,f5]@11 ~@4 [f5,a5,c6]@10 ~@6 [bb4,d5,f5]@10 ~@6 [eb5,g5,bb5]@12 ~@4 [bb4,d5,f5]@12 ~@4 [f5,a5,c6]@12 ~@5 bb4@11 ~@5, ~@95 [d5,f5]@11 ~@6]/7", // Bb F Bb Eb Bb F Dm
  C: "[[eb5,g5,bb5]@11 ~@5 f5@9 ~@6 [f5,a5,c6]@12 ~@4 [bb4,d5,f5]@10 ~@6 [eb5,g5,bb5]@11 ~@5 [bb4,d5,f5]@10 ~@6 [f5,a5,c6]@11 ~@5 [bb4,d5,f5]@10 ~@7, ~@15 [bb4,d5]@9 ~@104, ~@16 g5 ~@111]/8", // Eb F Bb Eb Bb F Bb
})).s("gm_synth_strings_1").gain(0.15)

// other · accordion
const accordion = note(`<
  A B C@2 D E@2 F@2 ~@3 G H ~@3 I J ~@3 K L ~@7 M N O@4 P@3 Q ~@3 G R ~@3 I S ~@12 M T U@2 V@2 W@4 X Y@6 Z A Y@6 Z A Y@6
  AA
>`.pickRestart({
  A: "~@4 bb4@3 ~@4 a4@2 ~ g4@2, ~@8 bb4@5 ~@3", B: "bb4@3 a4@2 g4@8 bb4@3",
  C: "[a4@3 ~ a4 ~ a4 a4@2 ~ g4@3 f4 ~ a4@17]/2", D: "g4@3 a4 g4 ~ g4 ~ g4@3 f4@3 eb4@2",
  E: "[g4@3 f4@2 eb4@4 ~@4 eb4@2 f4@10 ~ eb4 ~ d4 ~ c4 ~, ~@10 c4@3 ~@19, ~@11 d4@4 ~@17]/2", F: "[bb3@31 ~]/2",
  G: "~@12 eb4 g4 ~@2", H: "c4@3 ~", I: "~@12 d4 ~ f4 ~", J: "bb3@11 ~@5", K: "~@12 eb4 ~ g4 ~", L: "c4@9 ~@7",
  M: "~@2 f3 bb3", N: "c4@3 d4@5 ~@3 f4@2 ~ bb4 ~, ~@8 eb4@5 ~@3",
  O: "[bb4@3 bb4@4 ~ bb4@4 a4@2 ~ bb4@4 a4@2 g4@8 bb4@2 a4@3 ~@2 a4!2 ~ a4@2 ~ g4@3 ~ a4@17 ~, ~@14 g4@2 ~@29 f4@2 ~@17]/4",
  P: "[g4@3 ~ g4 ~ g4 g4@4 f4@2 eb4@2 g4@4 f4@2 eb4@4 c4@2 ~@2 eb4@2 f4@11 a4 a4@2 g4@2 ~, ~@25 f4 ~ d4@4 ~@17]/3",
  Q: "f4@13 ~@3", R: "c4@11 ~@5", S: "bb3@3 ~", T: "c4@3 d4@5 eb4@3 f4 ~@2 bb4 ~",
  U: "[bb4@3 bb4@3 ~@5 a4@2 ~@2 bb4@4 a4@2 g4@9 bb4@2, ~@8 bb4@5 ~ g4@2 ~@16]/2",
  V: "[a4@3 ~ a4!2 ~ a4@2 ~ g4@3 ~ a4@17 ~, ~@13 f4@2 ~@17]/2",
  W: "[g4@3 ~ g4!2 ~ g4@3 f4@3 eb4@2 g4@5 ~ eb4@4 c4@2 ~@2 eb4@2 f4@11 [g4,a4] a4@3 ~ f4@14 bb4 ~@2, ~@20 f4@2 ~@5 d4@4 ~@15 g4@2 ~@16]/4", // Gsus2
  X: "bb4@3 ~ bb4@3 ~@4 a4@2 ~ g4@2, ~@8 bb4@5 ~@3",
  Y: "[bb4@3 a4@3 g4@7 bb4@2 a4@4 ~ a4!2 ~ a4@3 g4@3 f4@2 a4@16 g4@3 ~@2 g4!2 ~ g4@4 f4@2 eb4@2 g4@4 f4@2 eb4@4 c4@2 d4@2 eb4@2 f4@11 a4 ~ a4@2 g4@2]/6",
  Z: "f4@14 bb4!2", AA: "f4@7 ~",
})).s("gm_accordion").gain(0.22)

// bass · acoustic bass
const bass = note(`<
  A B C D E B F G H G H G I J E B F G H G H G I J E G F G E G F G H B E D C B E K F G H G I J E B F G H G H G I J E G F
  G E G F G H B E D C B E K H B E D C B E K H B E D C B E K H B E D C B E K H
>`.pickRestart({
  A: "~@6 bb2 ~ bb2@8", B: "eb2@6 bb2 ~ bb2 ~ bb2@3 ~ bb2@2", C: "d2@5 ~ a2 ~ a2@8", D: "d2@6 a2 ~ a2 ~ a2@3 ~ a2@2",
  E: "eb2@5 ~ bb2 ~ bb2@8", F: "f2@5 ~ c3 ~ c3@8", G: "bb1@6 f2 ~ f2 ~ f2@3 ~ f2@2", H: "bb1@5 ~ f2 ~ f2@8",
  I: "c2@5 ~ g2 ~ g2@8", J: "c2@6 g2 ~ g2 ~ g2@3 ~ g2@2", K: "f2@6 c3 ~ c3 ~ c3@3 ~ c3@2",
})).s("gm_acoustic_bass").gain(0.36)

// chords · soprano sax
const soprano_sax = note(`<
  A@2 B@2 C@2 D E F@4 G@2 C@2 D E F@4 G@2 H E D E H E D E I J H K L J H M D E F@2 G@2 C@2 D E F@4 G@2 H E D E H E D E I
  J H K L J H M I J H K L J H M I J H K L J H M I J H K L J H M I
>`.pickRestart({
  A: "[~@11 bb5@5, ~ bb4@15, ~@2 eb5@7 eb5@7, ~@3 g5@7 g5@6]/2",
  B: "[~@11 a5@5, d4, ~ a4@15, ~@2 d5@7 d5@7, ~@3 f5@7 f5@6]/2",
  C: "[~@11 bb5@5, eb4, ~ bb4@15, ~@2 eb5@7 eb5@7, ~@3 g5@7 g5@6]/2", D: "~@3 a5@5, f4, ~ c5@7, ~ f5@3",
  E: "bb4 ~@2 f5@5, [bb3,f4], d5 d5@3, ~ bb4@7", F: "[~@11 f5@5, bb3, ~ f4@15, ~@2 bb4@7 bb4@7, ~@3 d5@7 d5@6]/2",
  G: "[~@11 g5@5, c4, ~ g4@15, ~@2 c5@7 c5@7, ~@3 eb5@7 eb5@6]/2", H: "~@3 g5@5, eb4, ~ bb4@7, ~ eb5@3",
  I: "~@3 d5@5, bb3, ~ f4@7, ~ bb4@3", J: "eb5 ~@2 bb5@5, [eb4,bb4], g5 g5@3, ~ eb5@7",
  K: "d5 ~@2 a5@5, [d4,a4], f5 f5@3, ~ d5@7", L: "~@3 f5@5, d4, ~ a4@7, ~ d5@3",
  M: "f5 ~@2 c6@5, [f4,c5], a5 a5@3, ~ f5@7", // F5
})).s("gm_soprano_sax").gain(0.22).pan(0.6)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  A B C D A B E F G F G F H I A B E F G F G F H I A F E F A F E F G B A D C B A J E F G F H I A B E F G F G F H I A F E
  F A F E F G B A D C B A J G B A D C B A J G B A D C B A J G B A D C B A J G
>`.pickRestart({
  A: "[bb3,eb4,g4]@4 ~@2 [bb3,eb4,g4]@9 ~", B: "[bb3,eb4,g4]@5 ~ [bb3,eb4,g4]@8 ~@2",
  C: "[a3,d4,f4]@4 ~@2 [a3,d4,f4]@9 ~", D: "[a3,d4,f4]@5 ~ [a3,d4,f4]@8 ~@2", E: "[c4,f4,a4]@4 ~@2 [c4,f4,a4]@9 ~",
  F: "[f3,bb3,d4]@5 ~ [f3,bb3,d4]@8 ~@2", G: "[f3,bb3,d4]@4 ~@2 [f3,bb3,d4]@9 ~",
  H: "[g3,c4,eb4]@4 ~@2 [g3,c4,eb4]@9 ~", I: "[g3,c4,eb4]@5 ~ [g3,c4,eb4]@8 ~@2", J: "[c4,f4,a4]@5 ~ [c4,f4,a4]@8 ~@2",
})).s("gm_electric_guitar_clean").gain(0.16).pan(0.4)

// chords · whistle
const whistle = note(`<
  A B C D E B F G H I J G K L M N O I J G H I P Q E I F G E I F G H B M D R B M S O I J G K L M N O I J G H I P Q E I F
  G E I F G H B M D R B M S H B M D R B M S H B M D R B M S H B M D R B M S H
>`.pickRestart({
  A: "eb4@2 [eb3,bb3,eb4,g4] ~@3 [eb3,bb3,eb4,g4] ~ [bb3,eb4,g4]@2 [eb3,bb3,eb4,g4] ~@3 [eb3,bb3,eb4,g4] ~, g4 ~@7 eb3 ~@7", // Eb
  B: "[eb3,bb3,eb4,g4] ~ [eb3,bb3,eb4,g4] ~@3 [bb3,eb4,g4]@4 ~@4 g4@2, ~@3 eb3@5, ~@5 bb3@3, ~@3 eb4", // Eb
  C: "[d3,d4,f4]@2 [d3,a3,d4,f4] ~@3 [d3,a3,d4,f4]@4 [d3,a3,d4,f4] ~@3 [a3,d4,f4]@2, a3 ~@13 d3 ~", // Dm
  D: "[d3,a3,d4,f4] ~ [d3,a3,d4,f4] ~@3 [d3,a3,d4,f4]@9 ~", // Dm
  E: "[bb3,eb4]@2 [eb3,bb3,eb4,g4] ~@3 [eb3,bb3,eb4,g4] ~ [bb3,eb4,g4]@2 [eb3,bb3,eb4,g4] ~@3 [eb3,bb3,eb4,g4] ~, [eb3,g4] ~@7 eb3 ~@7", // Eb5 Eb
  F: "[f3,f4,a4]@2 [f3,c4,f4,a4] ~@3 [f3,c4,f4,a4]@4 [f3,c4,f4,a4] ~@3 [c4,f4,a4]@2, c4 ~@13 f3 ~", // F
  G: "[bb2,f3,bb3,d4] ~ [bb2,f3,bb3,d4] ~@3 [bb2,f3,bb3,d4]@9 ~", // Bb
  H: "[f3,bb3]@2 [bb2,f3,bb3,d4] ~@3 [bb2,f3,bb3,d4] ~ [f3,bb3,d4]@2 [bb2,f3,bb3,d4] ~@3 [bb2,f3,bb3,d4] ~, [bb2,d4] ~@7 bb2 ~@7", // Bb5 Bb
  I: "[bb2,f3,bb3,d4] ~ [bb2,f3,bb3,d4] ~@3 [f3,bb3,d4]@4 ~@4 d4@2, ~@3 bb2@5, ~@5 f3@3, ~@3 bb3", // Bb
  J: "[bb2,bb3,d4]@2 [bb2,f3,bb3,d4] ~@3 [bb2,f3,bb3,d4]@4 [bb2,f3,bb3,d4] ~@3 [f3,bb3,d4]@2, f3 ~@13 bb2 ~", // Bb
  K: "[g3,c4]@2 [c3,g3,c4,eb4] ~@3 [c3,g3,c4,eb4] ~ [g3,c4,eb4]@2 [c3,g3,c4,eb4] ~@3 [c3,g3,c4,eb4] ~, [c3,eb4] ~@7 c3 ~@7", // C5 Cm
  L: "[c3,g3,c4,eb4] ~ [c3,g3,c4,eb4] ~@3 [g3,c4,eb4]@4 ~@4 eb4@2, ~@3 c3@5, ~@5 g3@3, ~@3 c4", // Cm
  M: "[eb3,eb4,g4]@2 [eb3,bb3,eb4,g4] ~@3 [eb3,bb3,eb4,g4]@4 [eb3,bb3,eb4,g4] ~@3 [bb3,eb4,g4]@2, bb3 ~@13 eb3 ~", // Eb
  N: "[eb3,bb3,eb4,g4] ~ [eb3,bb3,eb4,g4] ~@3 [eb3,bb3,eb4,g4]@9 ~", // Eb
  O: "[c4,f4]@2 [f3,c4,f4,a4] ~@3 [f3,c4,f4,a4] ~ [c4,f4,a4]@2 [f3,c4,f4,a4] ~@3 [f3,c4,f4,a4] ~, [f3,a4] ~@7 f3 ~@7", // F5 F
  P: "[c3,c4,eb4]@2 [c3,g3,c4,eb4] ~@3 [c3,g3,c4,eb4]@4 [c3,g3,c4,eb4] ~@3 [g3,c4,eb4]@2, g3 ~@13 c3 ~", // Cm
  Q: "[c3,g3,c4,eb4] ~ [c3,g3,c4,eb4] ~@3 [c3,g3,c4,eb4]@9 ~", // Cm
  R: "[a3,d4]@2 [d3,a3,d4,f4] ~@3 [d3,a3,d4,f4] ~ [a3,d4,f4]@2 [d3,a3,d4,f4] ~@3 [d3,a3,d4,f4] ~, [d3,f4] ~@7 d3 ~@7", // D5 Dm
  S: "[f3,c4,f4,a4] ~ [f3,c4,f4,a4] ~@3 [f3,c4,f4,a4]@9 ~", // F
})).s("gm_whistle").gain(0.14)

// other · synth strings 1
const synth_strings_1_3 = note(`<
  A B C@2 D E@2 F@2 ~@3 G H ~@3 I J ~@3 K L ~@7 M N O@4 P@3 Q ~@3 G R ~@3 I S ~@12 M T U@2 V@2 W@4 X Y@6 Z A Y@6 Z A Y@6
  AA
>`.pickRestart({
  A: "~@4 bb5@3 ~@4 a5@2 ~ g5@2, ~@8 bb5@5 ~@3", B: "bb5@3 a5@2 g5@8 bb5@3",
  C: "[a5@3 ~ a5 ~ a5 a5@2 ~ g5@3 f5 ~ a5@17]/2", D: "g5@3 a5 g5 ~ g5 ~ g5@3 f5@3 eb5@2",
  E: "[g5@3 f5@2 eb5@4 ~@4 eb5@2 f5@10 ~ eb5 ~ d5 ~ c5 ~, ~@10 c5@3 ~@19, ~@11 d5@4 ~@17]/2", F: "[bb4@31 ~]/2",
  G: "~@12 eb5 g5 ~@2", H: "c5@3 ~", I: "~@12 d5 ~ f5 ~", J: "bb4@11 ~@5", K: "~@12 eb5 ~ g5 ~", L: "c5@9 ~@7",
  M: "~@2 f4 bb4", N: "c5@3 d5@5 ~@3 f5@2 ~ bb5 ~, ~@8 eb5@5 ~@3",
  O: "[bb5@3 bb5@4 ~ bb5@4 a5@2 ~ bb5@4 a5@2 g5@8 bb5@2 a5@3 ~@2 a5!2 ~ a5@2 ~ g5@3 ~ a5@17 ~, ~@14 g5@2 ~@29 f5@2 ~@17]/4",
  P: "[g5@3 ~ g5 ~ g5 g5@4 f5@2 eb5@2 g5@4 f5@2 eb5@4 c5@2 ~@2 eb5@2 f5@11 a5 a5@2 g5@2 ~, ~@25 f5 ~ d5@4 ~@17]/3",
  Q: "f5@13 ~@3", R: "c5@11 ~@5", S: "bb4@3 ~", T: "c5@3 d5@5 eb5@3 f5 ~@2 bb5 ~",
  U: "[bb5@3 bb5@3 ~@5 a5@2 ~@2 bb5@4 a5@2 g5@9 bb5@2, ~@8 bb5@5 ~ g5@2 ~@16]/2",
  V: "[a5@3 ~ a5!2 ~ a5@2 ~ g5@3 ~ a5@17 ~, ~@13 f5@2 ~@17]/2",
  W: "[g5@3 ~ g5!2 ~ g5@3 f5@3 eb5@2 g5@5 ~ eb5@4 c5@2 ~@2 eb5@2 f5@11 [g5,a5] a5@3 ~ f5@14 bb5 ~@2, ~@20 f5@2 ~@5 d5@4 ~@15 g5@2 ~@16]/4", // Gsus2
  X: "bb5@3 ~ bb5@3 ~@4 a5@2 ~ g5@2, ~@8 bb5@5 ~@3",
  Y: "[bb5@3 a5@3 g5@7 bb5@2 a5@4 ~ a5!2 ~ a5@3 g5@3 f5@2 a5@16 g5@3 ~@2 g5!2 ~ g5@4 f5@2 eb5@2 g5@4 f5@2 eb5@4 c5@2 d5@2 eb5@2 f5@11 a5 ~ a5@2 g5@2]/6",
  Z: "f5@14 bb5!2", AA: "f5@7 ~",
})).s("gm_synth_strings_1").gain(0.22)

// drums · rim
const rim = s("rim").struct(`<
  A B C@3 B C@3 B C@3 B C@3 B C@3 B C@3 B C@3 B C@3 B C@3 B C@3 B C@3 B C@3 B C@3 B C@3 B C@3 B C@3 B C@3 B C@3 B C@3 B
  C@3 B C@3 B C@3 B C@3 B C@3
>`.pickRestart({
  A: "~@3 x!2 ~@3", B: "x ~@2 x!3 ~@2", C: "x ~@2 x!2 ~@3",
})).gain(0.29)

// drums · pedal hat
const pedal_hat = s("hh").struct(`<
  A B@3 A B@3 A B@3 A B@3 A B@3 A B@3 A B@3 A B@3 A B@3 A B@3 A B@3 A B@3 A B@3 A B@3 A B@3 A B@3 A B@3 A B@3 A B@3 A
  B@3 A B@3 A B@3 A B@3 A B@3 A
>`.pickRestart({
  A: "~ x!3", B: "x!4",
})).gain(0.25)

// drums · crash
const crash = s("cr").struct("<~@8 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A>".pickRestart({
  A: "x",
})).gain(0.25)

// drums · ride
const ride = s("rd").struct(`<
  A B C D B@2 C D B@2 C D B@2 C D B@2 C D B@2 C D B@2 C D B@2 C D B@2 C D B@2 C D B@2 C D B@2 C D B@2 C D B@2 C D B@2 C
  D B@2 C D B@2 C D B@2 C D B@2 C D B@2 C D B@2 C D B@2 C D B@2 C D B@2 C D B
>`.pickRestart({
  A: "~@2 x!6", B: "x!8", C: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!2", D: "x!6 ~ x",
})).gain(0.25)

stack(
  synth_strings_1, synth_strings_1_2, accordion, bass, soprano_sax, electric_guitar_clean, whistle, synth_strings_1_3,
  rim, pedal_hat, crash, ride
)

More by Adamo