Strudelify

estrellita

Manuel Ponce

KeyF majorTempo50 bpm
0:00/0:00
// estrellita — Manuel Ponce
// 50 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5915514; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 40 bars on a 48-step grid, each part at one level. Source detail keeps the original performance.
setcpm(50/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.

// chords · piano
const piano = note(`<
  A B C D E F G H I J K@2 L M N O P Q R S T@2 U V W X Y Z AA AB AC AD AE AF AG AH AI AJ@3
>`.pickRestart({
  A: "~@6 [db4,a4]@11 ~ [d4,g4]@6 ~@6 [gb3,f4]@11 ~ [g3,e4]@6, [f2,c3]@23 ~ [f2,c3]@23 ~, ~@6 bb3@17 ~@7 bb3@17 ~", // Gbm G5 Gbmaj7 C F5
  B: "~@6 [ab3,d4]@12 [a3,c4]@6 ~@6 e4@11 ~ d4@6, [f2,c3]@23 ~ [a2,f3]@23 ~, ~@30 c4@17 ~", // Abdim Am F5 Dm
  C: "~ [c4,db4]@2 [bb3,d4] ~ [bb3,d4,f4]@2 [d4,f4,bb4], [bb2,f3,g3]@23 ~ [g2,f3]@23 ~", // Dbmaj7 Bb Gm7 G7
  D: "[c2,g2,d4,e4,bb4]@6 ~@3 [a3,c4,eb4]@3 [g3,bb3,c4,g4]@6 ~@3 [a3,c4,eb4,gb4]@3 ~@6 c3@11 ~ [c3,bb3,c4,e4,ab4]@6, ~@6 c3@6 ~@6 c3@11 ~@19, ~@24 bb3@17 ~@7, ~@24 [c4,e4,g4]@11 ~@13", // C7 Adim C7 Adim Caug C
  E: "~@6 [a3,c4,f4,a4]@11 ~ [a3,c4,f4,a4]@11 ~ [a3,c4,f4,a4]@6 [c3,a3,c4]@4 c2@4 [c3,ab3,b3]@4, [f2,c3]@17 ~@7", // F E F5
  F: "~@18 f1@6 ~@6 [g3,eb4]@11 ~ [g3,e4]@6, [c3,g3,bb3]@11 ~ [c3,g3,bb3]@11 ~@7 db4@17 ~, ~@6 f2@11 ~@7 [a1,a2]@23 ~", // Cm C C7 A
  G: "~@6 [g3,db4,g4]@12 [f3,d4,f4]@6 ~@6 [c4,e4]@11 ~ [bb3,d4]@6, [bb1,bb2]@23 ~ g2@23 ~, ~@30 f3@17 ~", // Gdim Dm C Bb
  H: "~@6 [f3,a3,c4]@11 ~ [f3,bb3,db4]@6 d4@6 eb4@6 [g3,bb3,e4]@11 ~, c3@23 ~ c2@23 ~, ~@24 [f3,b3]@11 ~@13", // F Bbm Edim Fdim
  I: "~@6 [c4,f4]@11 ~ [f4,c5]@6 [c5,f5]@11 ~@13, [f1,f2]@23 ~@25, ~@6 [c3,a3]@17 ~@25", // F5 F
  J: "f2@6 ~@6 c4@6 ~@3 d4@3 a2@6 ~@6 f4@4 ~@4 c5@4, ~@6 [d3,f3,a3]@11 ~ [c3,d3,f3,a3]@6 e4@11 ~@5 a4@4 ~@4, ~@30 [f3,a3,d4]@11 ~ [f3,a3,c4]@6", // Dm Dm7 Dm F
  K: "[bb2@6 [f3,g3,db4]@11 ~ [f3,g3,d4,f5]@6 [g2,f5]@6 g4@3 g4@3 ~@6 [f3,e4]@6 c2@6 [e3,bb3,d4]@11 ~ [e3,bb3,c4,d5]@6 [a2,d5]@6 ~@3 [eb4,gb4]@3 [bb3,e4,g4]@6 ~@3 ab4@3, g5@17 ~@13 bb3@17 ~@31 c4@17 ~, ~@30 g3@11 ~@37 f3@6 ~@6 c3@6, ~@36 g4@23 ~@37]/2", // Gm7b5 G7 Fmaj7 Em7b5 D5 Ebm Edim
  L: "f2@6 [c3,f3,a3]@11 ~ d5@6 [c3,d5]@6 ~@3 e5@3 c5@6 ~@3 c4@3, [c4,f4,a4]@11 ~@19 [a3,c4,f4]@11 ~ [ab3,b3,e4]@6", // F Csus2 F E
  M: "[f2,c3]@6 [a3,c4,f4]@6 c4@9 d4@3 [a2,g3,c4]@6 ~@6 f4@4 ~@4 c5@4, a4@11 ~@13 e4@11 ~@5 a4@4 ~@4, ~@30 [f3,c4]@11 ~ [f3,c4]@6", // F5 F Am7 F5
  N: "bb1@6 ~@12 [f3,bb3,d4]@6 a1@6 [f3,d4,f4,a4]@11 ~ [bb3,d4,f4,bb4]@6, [f4,c5,e5]@11 ~ [f4,bb4,d5]@11 ~@25, ~@6 [bb3,d4]@11 ~@31", // Bb Dm Bb Fmaj7 Bb
  O: "[c3,a3,b4]@2 c5@2 d5@2 ~ d4 [c3,g3,eb4]@2 e4@2 [e4,gb4]@2 ~ [e4,ab4], ~@6 [a3,c4,f4]@11 ~ [a3,c4,gb4]@6 ~@6 [bb3,c4]@11 ~ [bb3,c4]@6", // F Cm Esus2 E F Gbdim Bbsus2
  P: "[f2,c3]@6 [f3,a3,d4]@11 ~ [f3,a3,db4]@11 ~ [f3,a3,c4]@6 ~@12, [f4,a4]@17 ~@7", // F5 Dm Faug F
  Q: "c2@11 ~ [e4,bb4,c5]@4 [f4,bb4,d5]@4 [gb4,bb4,eb5]@4 [g4,bb4,f5]@23 ~, ~@12 [e3,bb3,c4]@11 ~ [bb3,c4,e4]@11 ~@13", // C7 Bb Ebm Gm7 C7
  R: "[f2,c3]@11 ~ [a4,c5,f5]@4 [bb4,eb5,g5]@4 [db5,e5,ab5]@4 [c4,f4,a4,c5,f5,a5]@11 ~@13, ~@12 [a3,c4,f4]@11 ~@25", // F5 F Eb Dbm F
  S: "c2@11 ~ [g4,bb4,eb5]@4 [gb4,bb4,d5]@4 [f4,bb4,db5]@4 [e4,bb4,c5]@23 ~, ~@12 [e3,bb3,c4]@11 ~ [bb3,c4]@11 ~@13", // Eb Gbaug Bbm C7 Bbsus2
  T: "[f2@11 ~ db5@4 ~@4 b4@4 d4@6 db4@6 [c4,a4]@4 ~@4 bb3@4 f2@6 ~@6 [a3,c4]@4 ~@4 [f4,a4]@4 a1@6 [g3,a3,db4]@10 ~@4 [a4,db5]@4, ~@12 f3@23 ~ c3@17 ~ [c3,f3]@11 ~ [c3,f3]@6 ~@24, ~@12 [g3,eb4,f4]@6 a3@6 [bb3,f4,bb4]@11 ~@5 b3@4 ~@20 [c4,f4]@4 ~@22 [g3,a3,db4]@6, ~@16 c5@4 ~@22 g4@6 e4@11 ~@13 [db5,f5]@15 ~ [c5,eb5]@4 ~@4]/2", // F Am F A7 A F5 Cm Bb5 …
  U: "[d2,a2,e5]@6 d5@6 d4@4 ~@4 c4@4 [g2,d3,f3,bb3]@11 ~@13, a4@11 ~ f4@23 ~@13, ~@3 [f3,a3]@5 db4@2 ~@14, ~@3 [f3,a3] ~@4", // Dsus2 Gm7 F
  V: "c4 [f4,a4,c5] db4 [f4,a4,db5] d4 [f4,bb4,d5] e4 [a4,db5,e5], a3@23 ~@25, c3@11 ~ b2@11 ~ [bb2,ab3]@11 ~ [a2,g3]@11 ~", // F Faug Bb A Bb7 A7
  W: "[f2,c3,a3,c4]@6 [a3,c4,f4,c5,f5]@11 ~ [a3,c4,f4,c5,f5]@11 ~ [a3,c4,f4,c5,f5]@6 ~@12", // F
  X: "[bb3,d4]@6 [f4,bb4]@11 ~ [f4,bb4]@6 [bb3,c4]@6 [e4,bb4]@11 ~ [e4,bb4]@6, [g2,d3,f3]@23 ~ [g2,c3,e3]@23 ~", // Bb Bb5 Bbsus2 Edim G7 C
  Y: "d4@6 ~@12 [f4,a4]@6 [a3,c4]@6 [f4,a4]@11 ~ [f4,a4]@6, [f2,a3]@24 [f2,c3]@23 ~, d3@12 [db3,db4]@11 ~@25, ~@6 [f4,a4]@11 ~@31", // F Am F F5 Db F
  Z: "[g3,a3]@6 [db4,a4]@11 ~ [db4,a4]@6 [g3,bb3]@6 [eb4,g4]@11 ~ [eb4,g4]@6, [e2,db3]@23 ~ [eb2,db3]@23 ~", // Gsus2 Gbm Gm Eb Dbm Eb7
  AA: "[gb3,c4] [d4,gb4] [f3,b3] [db4,f4] [f3,bb3] [db4,f4] [e3,bb3] [c4,e4], [d2,c3]@11 ~ [db2,b2]@11 ~ [g1,g2]@11 ~ [c2,g2]@11 ~", // Gbdim D Fdim Db Bb5 Db Edim C …
  AB: "[f2,c3]@6 [f3,bb3,d4,f4,bb4,d5]@11 ~ [f3,a3,c4,f4,a4,c5]@6 a2@6 [g3,a3,db4,f4,ab4,db5,ab5]@11 ~ [g3,a3,db4,eb4,g4,db5,a5]@6", // F5 Bb F Db Eb7
  AC: "[db2,ab2]@6 [ab3,db4,f4,ab4,db5,g5]@11 ~ [ab3,db4,f4,ab4,db5,ab5]@6 [bb2,f3]@6 [c4,db4,ab4,db5,f5]@11 ~ [bb3,db4,ab4,db5,f5]@6", // Db5 Db Bb5 Dbmaj7 Bbm7
  AD: "eb2@6 [g3,db4,f4,bb4]@11 ~ [ab3,db4,f4,ab4]@11 ~ [bb3,db4,f4,g4]@11 ~ [b3,d4,f4,g4]@6", // Gm7b5 Db Gm7b5 G7
  AE: "[ab2,eb3]@6 [bb3,c4,eb4,g4]@11 ~ [ab3,c4,eb4,ab4]@11 ~ [eb4,ab4]@6 eb4@9 f4@3, ~@30 [ab3,bb3]@11 ~@7", // Ab5 Cm7 Ab Ab5 Absus2
  AF: "[ab2,eb3]@6 ~@6 ab4@4 ~@4 eb5@4 c3@6 [bb3,e4,gb4]@11 ~ [bb3,e4,g4,g5]@6, g4@11 ~@5 c5@4 ~@4 c6@18 ~@6, ~@6 [bb3,c4,eb4]@11 ~ [ab3,c4,eb4]@6 ~@24", // Ab5 Gb7 Edim Cm7 Ab
  AG: "[f2,c3,bb5]@6 ~@3 ab5@3 ~@6 [eb3,ab3,c4]@6 [d3,c4]@11 ~ [db3,b3]@6 ~@6, ~@6 [f3,ab3,c4]@11 ~@7 f4@24, ~@12 c5@24 b4@11 ~, ~@24 ab3@17 ~@7", // Fsus4 Ab D7 Db7 Fm
  AH: "c4 [f4,a4,c5] db4 [f4,bb4,db5] d4 [f4,bb4,d5] e4 [bb4,d5,e5], c3@23 ~@25, a3@11 ~ bb3@34 ~@2", // F Bbm Bb Em7b5
  AI: "[d2,a2,f3,a3,d4]@3 [f3,a3,d4,f4,a4,d5,f5]@3 [f3,a3,db4,f4,a4,db5,f5]@3 [f3,ab3,c4,f4,ab4,c5,f5]@3 ~ b3@5 ~@6, ~@2 [g2,f4,g4,b4,f5] ~, ~@25 [d3,f3]@11 ~@12", // Dm Faug Fm G7 Dm
  AJ: "[c4@7 [f4,a4,c5]@6 d4@7 [f4,a4,d5]@6 ~ f4@6 [bb4,db5,f5]@6 ~ a4@7 [c5,e5,a5]@14 ~@10 [f4,ab4,ab5,b5]@6 ~@2 [a4,d6]@6 ~ [g4,b4,db6,f6]@6 ~@2 [a4,c5,f6,a6]@14 ~@36, [c3,a3]@13 [b2,a3]@13 ~ [bb2,eb3,g3,db4]@13 [c3,bb3,d4]@20 ~@2 [f3,a3]@57 ~@25, ~@62 c4@30 c4@27 ~@25, ~@70 [eb4,b4,f5]@7 [eb4,d5]@7 ~ [db4,f5,a5]@7 ~ [f4,c6]@14 ~@37, ~@78 [f4,f5,a5]@7 ~@7 a5@15 ~@37]/3", // F Dm Bbm Am Fdim D5 G7 F …
})).s("gm_piano").gain(0.2)

stack(piano)