Strudelify

Baila mi son

Selena

KeyF minorTempo132 bpm
0:00/0:00
// Baila mi son — Selena
// 132 bpm, 4/4, key F minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 111 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(132/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.

// bass · electric bass finger
const bass = note(`<
  ~@5 A B C D A B C E F B C D F B C E G H I J@3 K L M B L@2 M B E L M B L@2 M B E A B C D A B C E F B C D F B C E G H I
  J@3 K L M B L@2 M B E L M B L@2 M B E N O N O N O N O N O N O L M B L@2 M B E L M B L@2 M B E
>`.pickRestart({
  A: "f1@2 ~ f1@2 ~ c1@2 f1@2 ~ f1@2 ~ b1@2", B: "c2@2 ~ c2@2 ~ g1@2 c2@2 ~ c2@2 ~ g1@2",
  C: "c2@2 ~ c2@2 ~ g1@2 c2@2 ~ c2@2 ~ e1@2", D: "f1@2 ~ f1@2 ~ c2@2 f1@2 ~ f1@2 ~ c1@2",
  E: "f1@2 ~ f1@2 ~ c2@2 f1 ~ f1 ~ f1 ~@3", F: "f1@2 ~ f1@2 ~ c2@2 f1@2 ~ f1@2 ~ b1@2",
  G: "bb1@2 ~ bb1@2 ~ bb1 ~ bb1@2 ~ bb1@2 ~ bb1 ~", H: "f2@2 ~ f2@2 ~ f2 ~ f2@2 ~ f2@2 ~ f2 ~",
  I: "db2@2 ~ db2@2 ~ db2 ~ db2@2 ~ db2@2 ~ db2 ~", J: "c2@2 ~ c2@2 ~ c2 ~ c2@2 ~ c2@2 ~ c2 ~",
  K: "c2@2 ~ c2@2 ~ db2 ~ c2 ~ db2 ~ c2 ~@3", L: "f1@2 ~ f1@2 ~ c2@2 f1@2 ~ f1@2 ~ c2@2",
  M: "bb1@2 ~ bb1@2 ~ f1@2 bb1@2 ~ bb1@2 ~ f1@2", N: "f2 ~@2 f2 ~@2 eb2 ~ f2 ~@7",
  O: "f2 ~@2 f2 ~@2 eb2 ~ f2 ~ eb2 ~ f2 ~@3",
})).s("gm_electric_bass_finger").gain(0.45)

// other · accordion
const accordion = note(`<
  ~@5 A B C D A B C D E F E G E F E G H I H J@3 K ~@16 A B C D A B C D E F E G E F E G H I H J@3 K ~@44
>`.pickRestart({
  A: "[ab4,c5] ~@2 [ab4,c5] ~@2 [ab4,c5] ~ [ab4,c5] ~ [bb4,db5]@2 [ab4,c5] ~@3", // Ab Bbm Ab
  B: "[g4,c5] ~@2 [g4,c5] ~@2 [g4,c5] ~ [g4,c5]@2 [g4,db5]@2 [g4,c5] ~@3", // C5 Gdim C5
  C: "[g4,c5] ~@2 [g4,c5] ~@2 [g4,c5] ~ [g4,c5] ~ [bb4,db5]@2 [g4,c5] ~@3", // C5 Bbm C5
  D: "[ab4,c5] ~@2 [ab4,c5] ~@2 [ab4,c5] ~ [ab4,c5]@2 [ab4,db5]@2 [ab4,c5] ~@3", // Ab Db5 Ab
  E: "[c4,c5] ~@2 [c4,c5] ~@2 [db4,db5]@2 [c4,c5]@2 [db4,db5]@2 [c4,c5]@2 [b3,b4]@2", // C Db C Db C B
  F: "[c4,c5] ~@2 [c4,c5] ~@2 [db4,db5]@2 [c4,c5]@2 [db4,db5]@2 [c4,c5]@2 [bb3,bb4]@2", // C Db C Db C Bb
  G: "[c4,c5] ~@2 [c4,c5] ~@2 [db4,db5]@2 [c4,c5]@2 [db4,db5]@2 [c4,c5] ~@3", // C Db C Db C
  H: "[db4,db5] [bb3,bb4] [c4,c5] [bb3,bb4] [db4,db5] [bb3,bb4] [c4,c5] [bb3,bb4] [db4,db5] [bb3,bb4] [c4,c5] [bb3,bb4] [db4,db5] [bb3,bb4] [c4,c5] [bb3,bb4]", // Db Bb C Bb Db Bb C Bb …
  I: "[c4,c5] [ab3,ab4] [bb3,bb4] [ab3,ab4] [c4,c5] [ab3,ab4] [bb3,bb4] [ab3,ab4] [c4,c5] [ab3,ab4] [bb3,bb4] [ab3,ab4] [c4,c5] [ab3,ab4] [bb3,bb4] [ab3,ab4]", // C Ab Bb Ab C Ab Bb Ab …
  J: "[c4,c5] [g3,g4] [bb3,bb4] [g3,g4] [c4,c5] [g3,g4] [bb3,bb4] [g3,g4] [c4,c5] [g3,g4] [bb3,bb4] [g3,g4] [c4,c5] [g3,g4] [bb3,bb4] [g3,g4]", // C G Bb G C G Bb G …
  K: "[c4,c5] [g3,g4] [bb3,bb4] [g3,g4] [c4,c5] [g3,g4] [bb3,bb4] [g3,g4] [c4,c5] [g3,g4] [bb3,bb4] [g3,g4] [c4,c5] ~@3", // C G Bb G C G Bb G …
})).s("gm_accordion").gain(0.3)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  ~@5 A B@2 A@2 B@2 A@2 B@2 A@2 B@2 C D A E B@3 F A D B A@2 D B C A D B A@2 D B C A B@2 A@2 B@2 A@2 B@2 A@2 B@2 C D A E
  B@3 F A D B A@2 D B C A D B A@2 D B C ~@12 A D B A@2 D B C A D B A@2 D B C
>`.pickRestart({
  A: "[c4,f4,ab4]!16", B: "[c4,e4,g4]!16", C: "[c4,f4,ab4]!13 ~@3", D: "[db4,f4,bb4]!16", E: "[db4,f4,ab4]!16",
  F: "[c4,e4,g4]!13 ~@3", // C
})).s("gm_acoustic_guitar_nylon").gain(0.2).pan(0.3)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~@5 A B@2 A@2 B@2 A@2 B@2 A@2 B@2 C D A E B@3 F A D B A@2 D B C A D B A@2 D B C A B@2 A@2 B@2 A@2 B@2 A@2 B@2 C D A E
  B@3 F A D B A@2 D B C A D B A@2 D B C ~@12 A D B A@2 D B C A D B A@2 D B C
>`.pickRestart({
  A: "[ab3,c4,f4]!16", B: "[g3,c4,e4]!16", C: "[ab3,c4,f4]!13 ~@3", D: "[bb3,db4,f4]!16", E: "[ab3,db4,f4]!16",
  F: "[g3,c4,e4]!13 ~@3", // C
})).s("gm_acoustic_guitar_steel").gain(0.2).pan(0.7)

// chords · brass section
const brass_section = note(`<
  ~@4 A B C D E F G H I ~@9 J ~ K L@2 M ~ N O P ~ Q R S ~ N O P ~ Q R T B C D E F G H I ~@9 J ~ K L@2 M ~ N O P ~ Q R S
  ~ N O P ~ Q R U V W V W V W V W V W V W ~ N O P ~ Q R S ~ N O P ~ Q R U
>`.pickRestart({
  A: "~@7 [e4,e5]", B: "[f4,f5] ~@5 [e4,e5]@2 [f4,f5] ~@5 [e4,e5]@2",
  C: "[f4,f5]@4 [e4,e5]@4 [g4,g5]@2 [d4,eb4,e4,f4,gb4,d5,eb5,e5,f5,gb5] ~@3 [gb4,gb5]@2", // F E G Gb
  D: "[g4,g5] ~@5 [gb4,gb5]@2 [g4,g5] ~@5 [gb4,gb5]@2", // G Gb G Gb
  E: "[g4,g5]@4 [f4,f5]@4 [ab4,ab5]@2 [eb4,e4,f4,gb4,g4,eb5,e5,f5,gb5,g5] ~@3 [e4,g4,e5]@2", // G F Ab Em
  F: "[f4,ab4,f5] ~@5 [e4,g4,e5]@2 [f4,ab4,f5] ~@5 [e4,g4,e5]@2", // Fm Em Fm Em
  G: "[f4,ab4,f5]@4 [e4,g4,e5]@4 [g4,bb4,g5]@2 [d4,eb4,e4,f4,gb4,g4,ab4,a4,d5,eb5,e5,f5,gb5] ~@3 [gb4,a4,gb5]@2", // Fm Em Gm Gbm
  H: "[g4,bb4,g5] ~@5 [gb4,a4,gb5]@2 [g4,bb4,g5] ~@5 [gb4,a4,gb5]@2", // Gm Gbm Gm Gbm
  I: "[g4,bb4,g5]@4 [f4,ab4,f5]@4 [ab4,c5,ab5]@2 [eb4,e4,f4,gb4,g4,ab4,a4,bb4,b4,eb5,e5,f5,gb5,g5] ~@5", // Gm Fm Ab
  J: "~@8 [f3,f4,f5] ~ [f3,f4,f5] [g3,g4,g5] ~ [g3,g4,g5] [ab3,ab4,ab5] ~", // F G Ab
  K: "~@9 [c4,g4] ~ [db4,ab4] [c4,g4]@2 [c4,g4] ~", L: "[c4,e4,g4]@7 ~@2 [c4,g4] ~ [db4,ab4] [c4,g4]@2 [c4,g4] ~",
  M: "[c4,g4,c5] ~@2 [c4,g4,c5] ~@2 [db4,ab4,db5] ~ [c4,g4,c5] ~ [db4,ab4,db5] ~ [c4,g4,c5] ~@3", // C5 Db5 C5 Db5 C5
  N: "~@7 [a2,b2,a3,b3,a4,b4] [c3,d3,e3,c4,d4,e4,c5,d5,e5] ~ [e3,g3,e4,g4,e5]@2 [f3,ab3,f4,ab4,f5]@2 [gb3,a3,gb4,a4,gb5]@2, ~@4 [f3,ab3,f4,ab4,f5] ~@3", // Asus2 C Em Fm Gbm Fm
  O: "[g3,bb3,g4,bb4,g5] ~@15", P: "~@2 [f4,ab4,c5,f5] ~@3 [f4,ab4,c5,f5] ~@9",
  Q: "~@8 [f3,f4,f5] [ab3,ab4,ab5] ~ [c4,c5,c6] ~ [db4,db5,db6] ~ [bb3,bb4,bb5]", // F Ab C Db Bb
  R: "[c4,c5,c6]@2 [b3,b4,b5] [ab3,a3,bb3,ab4,a4,bb4,ab5,a5,bb5] ~@12", // C B
  S: "[f4,ab4,c5,f5] ~@2 [f4,ab4,c5,f5] ~@2 [f4,ab4,c5,f5] ~ [f4,ab4,c5,f5] ~ [f4,ab4,c5,f5] ~ [f4,ab4,c5,f5] ~@3", // Fm
  T: "[f3,f4,f5] ~@2 [f3,f4,f5] ~@2 [eb3,eb4,eb5] ~ [f3,f4,f5] ~ [eb3,eb4,eb5] ~ [f3,f4,f5] ~ [e4,e5]@2", // F Eb F Eb F E
  U: "[f3,f4,f5] ~@2 [f3,f4,f5] ~@2 [eb3,eb4,eb5] ~ [f3,f4,f5] ~ [eb3,eb4,eb5] ~ [f3,f4,f5] ~@3", // F Eb F Eb F
  V: "[f3,f4,c5,f5] ~@2 [f3,f4,c5,f5] ~@2 [eb3,eb4,c5,eb5] ~ [f3,f4,c5,f5] ~@7", // F5 Cm F5
  W: "[f3,f4,c5,f5] ~@2 [f3,f4,c5,f5] ~@2 [eb3,eb4,c5,eb5] ~ [f3,f4,c5,f5] ~ [eb3,eb4,c5,eb5] ~ [f3,f4,c5,f5] ~@3", // F5 Cm F5 Cm F5
})).s("gm_brass_section").gain(0.35)

// chords · brass section · soft notes
const brass_section_soft = note(`<
  ~@6 A ~ B ~ C ~ D ~@16 E ~@4 F ~@2 E ~@4 F ~@2 A ~ B ~ C ~ D ~@16 E ~@4 F ~@2 E ~@4 F ~@14 E ~@4 F ~@2 E ~@4 F ~
>`.pickRestart({
  A: "~@10 [db4,db5] [a3,bb3,b3,c4,a4,bb4,b4,c5] ~@4", B: "~@10 [d4,d5] [bb3,b3,c4,db4,bb4,b4,c5,db5] ~@4",
  C: "~@10 [db4,db5] [a3,bb3,b3,c4,db4,d4,eb4,a4,bb4,b4,c5] ~@4", // Db
  D: "~@10 [d4,d5] [bb3,b3,c4,db4,d4,eb4,e4,f4,bb4,b4,c5,db5] ~@4", E: "~@7 [e2,f2,g2,e3,f3,g3,e4,f4,g4] ~@8",
  F: "~@3 [d3,eb3,e3,f3,gb3,g3,d4,eb4,e4,f4,gb4,g4,d5,eb5,e5,f5,gb5,g5] [c3,db3,c4,db4,c5,db5] ~@11", // Dbmaj7
})).s("gm_brass_section").gain(0.2)

// chords · trombone
const trombone = note(`<
  ~@4 A B C D E F G H I ~@9 J ~ K L@2 M ~ N O P ~ Q R S ~ T U P ~ Q R V B C D E F G H I ~@9 J ~ K L@2 M ~ N O P ~ Q R S
  ~ T U P ~ Q R W X W X W X W X W X W X W ~ N O P ~ Q R S ~ T U P ~ Q R W
>`.pickRestart({
  A: "~@7 e3", B: "f3 ~@5 e3@2 f3 ~@5 e3@2", C: "f3@4 e3@4 g3@2 [eb3,e3,f3,gb3] ~@3 gb3@2",
  D: "g3 ~@5 gb3@2 g3 ~@5 gb3@2", E: "g3@4 f3@4 ab3@2 [e3,f3,gb3,g3] ~@3 [e3,g3]@2",
  F: "[f3,ab3] ~@5 [e3,g3]@2 [f3,ab3] ~@5 [e3,g3]@2", // Fm Em Fm Em
  G: "[f3,ab3]@4 [e3,g3]@4 [g3,bb3]@2 [eb3,e3,f3,gb3] ~@3 [gb3,a3]@2", // Fm Em Gm Gbm
  H: "[g3,bb3] ~@5 [gb3,a3]@2 [g3,bb3] ~@5 [gb3,a3]@2", I: "[g3,bb3]@4 [f3,ab3]@4 [ab3,c4]@2 [e3,f3,gb3,g3] ~@5",
  J: "~@8 f3 ~ f3 g3 ~ g3 ab3 ~", K: "~@9 c4 ~ db4 c4@2 c4 ~", L: "c4@7 ~@2 c4 ~ db4 c4@2 c4 ~",
  M: "c4 ~@2 c4 ~@2 db4 ~ c4 ~ db4 ~ c4 ~@3", N: "~@4 [f3,ab3] [e3,g3] [f3,ab3] [gb3,a3]", O: "[g3,bb3] ~@15",
  P: "~@2 f3 ~@3 f3 ~@9", Q: "~@8 f3 ab3 ~ c4 ~ db4 ~ bb3", R: "c4@2 b3 [a3,bb3] ~@12",
  S: "f3 ~@2 f3 ~@2 f3 ~ f3 ~ f3 ~ f3 ~@3", T: "~@4 f3 e3 f3 gb3", U: "g3 ~@15",
  V: "f3 ~@2 f3 ~@2 eb3 ~ f3 ~ eb3 ~ f3 ~ e3@2", W: "f3 ~@2 f3 ~@2 eb3 ~ f3 ~ eb3 ~ f3 ~@3",
  X: "f3 ~@2 f3 ~@2 eb3 ~ f3 ~@7",
})).s("gm_trombone").gain(0.45).pan(0.3)

// chords · trombone · soft notes
const trombone_soft = note(`<
  ~@6 A ~ B ~ A ~ B ~@21 C ~@7 C ~@2 A ~ B ~ A ~ B ~@21 C ~@7 C ~@19 C ~@7 C ~
>`.pickRestart({
  A: "~@10 [db3,d3] [a2,bb2,b2,c3] ~@4", B: "~@10 [d3,eb3] [bb2,b2,c3,db3] ~@4",
  C: "~@3 [d3,eb3,e3,f3,gb3,g3,ab3] [c3,db3] ~@11", // Dbmaj7
})).s("gm_trombone").gain(0.2).pan(0.3)

// other · trumpet
const trumpet = note("<~@86 A B C D E F G H I ~@14 J I>".pickRestart({
  A: "~@15 [e5,f5,g5,ab5,bb5]", B: "c6@12 bb5 c6 db6 ~, b5 ~@15",
  C: "c6@2 ~ c6@3 b5 [f5,g5,ab5,bb5] e5 ~@4 [a5,bb5] ~ bb5", // Gm7 Bbmaj7
  D: "bb5!2 ~ bb5!3 ~ bb5!3 ~ bb5 ~ [bb5,b5] ab5@2, ~@12 c6@2 a5 ~", // Bmaj7
  E: "f5@2 ~ f5@5 ~@5 [e5,f5,g5] [ab5,bb5,b5] ~, ~@7 c6", F: "bb5@7 ab5", G: "c6@3 [ab5,bb5,b5] [e5,f5,g5] ~@9 c6@2",
  H: "bb5@6 ab5@2 g5@3 ~ f5 ~@2 [a5,bb5,c6,db6]", I: "[eb6,e6,f6] ~@2 f6 ~@2 eb6 ~ f6 ~ eb6 ~ f6 ~@3",
  J: "~@15 [bb5,c6,db6]", // Bbm
})).s("gm_trumpet").gain(0.35)

// other · trumpet · soft notes
const trumpet_soft = note("<~@86 A ~ B ~ C ~ D E ~@15 F ~>".pickRestart({
  A: "~@13 c5 [db5,eb5] ~", B: "~@8 [db5,eb5] c5 ~@6", C: "~@12 [c5,db5] eb5 ~@2", D: "~@4 eb5 [c5,db5] ~@10",
  E: "~@14 [f5,gb5,ab5] ~", F: "~@14 [f5,gb5,ab5] a5",
})).s("gm_trumpet").gain(0.15)

// chords · synth strings 1
const synth_strings_1 = note(`<
  ~@21 A B@2 C@3 D B A C B@2 A C B@2 A C B@2 A C E ~@16 A B@2 C@3 D B A C B@2 A C B@2 A C B@2 A C E ~@12 B A C B@2 A C
  B@2 A C B@2 A C E
>`.pickRestart({
  A: "[f4,bb4]", B: "[f4,ab4]", C: "[e4,g4]", D: "[e4,g4]@3 ~", E: "[f4,ab4]@13 ~@3",
})).s("gm_synth_strings_1").gain(0.25)

// drums · kick
const kick = s("bd").struct("<~@3 [x ~@2 x ~@2 x ~ x!2 ~ x!2 ~@3] [x ~@2 x ~@2 x ~ x!2 ~ x!2 ~ x ~] [x!4]!106>")
  .gain(0.4)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~ A B C ~@79 D E D E D E D E D E D E ~@16>".pickRestart({
  A: "~@3 x ~@4", B: "~@2 x ~ x!2 ~@3 x!2 ~ x!2 ~@2", C: "~@13 x ~@2", D: "x ~@2 x ~@2 x ~ x ~@7",
  E: "x ~@2 x ~@2 x ~ x ~ x ~ x ~@3",
})).gain(0.15)

// drums · clap
const clap = s("cp").struct("<~@5 [~ x ~ x]!106>").gain(0.45)

// drums · hihat
const hihat = s("hh").struct("<[~@2 x!2] [x!2 ~@2] ~@3 [x!4]!78 ~@12 [x!4]!16>").gain(0.45)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@2 A B C ~@6 A D ~@6 A D ~@5 A D ~@6 A D ~@6 A D ~@6 A D ~@6 A D ~@5 A D ~@6 A D ~@6 A D E D E D E D E D E D E D ~@6
  A D ~@6 A D
>`.pickRestart({
  A: "~@14 x!2", B: "x ~@2 x ~@2 x ~ x!2 ~ x!2 ~ x!2", C: "x ~@2 x ~@2 x ~ x!2 ~ x!2 ~ x ~",
  D: "x ~@2 x ~@2 x ~ x ~ x ~ x ~@3", E: "x ~@2 x ~@2 x ~ x ~@7",
})).gain(0.3)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@5
  [~ x ~ x ~ x ~ x]!38
  [~ x ~ x ~ x ~@2]
  [~ x ~ x ~ x ~ x]!38
  [~ x ~ x ~ x ~@2]
  ~@12
  [~ x ~ x ~ x ~ x]!15
  [~ x ~ x ~ x ~@2]
>`).gain(0.25)

// drums · crash
const crash = s("cr").struct(`<
  ~@5 A ~@3 A ~@3 A ~@3 A ~@3 A ~@2 A@2 ~@2 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@2 A@2 ~@2 A ~@3 A ~@3 A
  ~@3 A ~@15 A ~@3 A ~@3 A ~@3 A ~@3
>`.pickRestart({
  A: "x",
// … 84 more lines

More by Selena