Strudelify

amorfoda

Bad Bunny

KeyA minorTempo70 bpm
0:00/0:00
// amorfoda — Bad Bunny
// 70 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5054649; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 38 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(70/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 L M N O P Q R@3 S T U V W X Y Z AA AB AC AD@2 AE AF AG AH AI>".pickRestart({
  A: "a2@2 c3@2 e3@2 g3@2 a3@2 g3@2 e3@2 c3!2, [a4,c5,e5,g5]!4", // Am7
  B: "f2@2 a2@2 c3@2 e3@2 f3@2 e3@2 c3@2 a2!2, [f4,a4,c5,e5]!4", // Fmaj7
  C: "g2@2 c3@2 e3@2 c3@2 g3@2 e3@2 c3@2 g2 [b2,d3], [g4,c5,e5]!4", // Bm C
  D: "g2 b2 d3 e3 d3 ~ [g#4,b4,d5,e5]@2, [g#4,b4,d5,e5]!3 ~, ~@5 e3@3", // E7
  E: "[a2,c3,e3,g3]@4 [a2,c3,e3,g3]@4 e4 d4 c4 d4 e4 d4 c4 d4, [a4,c5,e5,g5] ~@3 [a2,c3,e3,g3]@2 [a2,c3,e3,g3]@2", // Am7
  F: "[f2,a2,c3,e3,e4]@3 g4 e4@2 ~@2 [f2,a2,c3,e3]@4 e4 d4 e4@2, ~ [f2,a2,c3,e3] ~ [f2,a2,c3,e3], ~@3 d4@3 ~@2", // Fmaj7
  G: "[g2,c3,e3,g3]@4 e4 d4 e4 d4 e4 d4 e4@2 [g2,c3,e3,c4]@4, ~ [g2,c3,e3]!2 ~", // C
  H: "e4 d4 e4 d4 e4 d4 e4@2 [g#2,b2,d3,e3,c4]@4 d4@2 d4@2, [g#2,b2,d3,e3]!2 ~ [g#2,b2,d3,e3]", // E7
  I: "[a2,c3,e3,g3]@4 [a2,c3,e3,g3]@4 e5 d5 c5 d5 e5 d5 c5 d5, c4@2 [a2,c3,e3,g3]!2", // Am7
  J: "[f2,a2,c3,e3,e5]@3 g5 e5@2 ~@2 [f2,a2,c3,e3]@4 e5 d5 e5@2, ~ [f2,a2,c3,e3] ~ [f2,a2,c3,e3], ~@3 d5@3 ~@2", // Fmaj7
  K: "[g2,c3,e3,g4]@4 e5 d5 e5 d5 e5 d5 e5@2 [g2,c3,e3,c5]@4, ~ [g2,c3,e3]!2 ~", // C
  L: "e5 d5 e5 d5 e5 d5 e5@2 [g#2,b2,d3,e3]@4 ~@2 [e4,e5]!2, [g#2,b2,d3,e3]@2 [g#2,b2,d3,e3]@2 c5@3 ~, ~@3 [g#2,b2,d3,e3]", // E7 E E7
  M: "[e4,e5]!4 [g4,g5] [e4,e5]!7 [g4,g5] [e4,e5]!2 [d4,d5], [a2,c3,e3,g3]!4", // E G E G E D Am7
  N: "[e4,e5] [d4,d5] [e4,e5] [d4,d5] [e4,e5] [d4,d5] [e4,e5] [d4,d5] [e4,e5] [d4,d5] [e4,e5] [d4,d5] [e4,e5] [d4,d5] [e4,e5] [g4,g5], [f2,a2,c3,e3]!4", // E D E D E D E D …
  O: "[g4,g5]@2 [d4,d5]!9 [g4,g5] [e4,e5]@2 [d4,d5]!2, [g2,c3,e3]!4", // G D G E D C
  P: "[d4,d5]!11 [g4,g5] [g#2,b2,d3,e3,e4,e5]@4, [g#2,b2,d3,e3]!3 ~", // D G E7
  Q: "~ [a3,a4] [c4,c5] [a3,a4] [c4,c5] [a3,a4] [c4,c5] [a3,a4]!2 [c4,c5] [a3,a4] [c4,c5] [e4,e5]@2 [a3,a4]@2, [a2,c3,e3,g3]!4", // A C A C A C A C …
  R: "[[a3,a4]@2 [a3,a4]!2 [c4,c5] [a3,a4] [c4,c5] [a3,a4] [c4,c5] [a3,a4] [c4,c5] [a3,a4] [e4,e5]@2 ~@4 [e4,e5] [g4,g5] [e4,e5] [d4,d5]!2 [c4,c5] [d4,d5] [c4,c5] [d4,d5] [c4,c5] [e4,e5]@2 ~@4 [e4,e5] [g4,g5] [e4,e5] [d4,d5]!2 [c4,c5] [d4,d5] [c4,c5] [d4,d5] [c4,c5] [e4,e5]@2 [a3,a4]!2, [f2,a2,c3,e3]!4 [g2,c3,e3]!4 [g#2,b2,d3,e3]!4, ~@7 [a3,a4]@2 ~@6 [c4,c5]@2 ~@7]/3", // A C A C A C A C …
  S: "[c4,c5] [a3,a4] [c4,c5] [a3,a4] [c4,c5] [a3,a4]@3 [a3,a4]!8, [a2,c3,e3,g3]!4", // C A C A C A Am7
  T: "[c4,c5] [a3,a4] [c4,c5] [a3,a4] [c4,c5] [a3,a4] [c4,c5] [a3,a4] [c4,c5] [a3,a4] [c4,c5] [a3,a4]!5, [f2,a2,c3,e3]!4", // C A C A C A C A …
  U: "[a3,a4] [g3,g4] [a3,a4] [g3,g4] [a3,a4] [g3,g4]@3 [a3,a4]!8, [g2,c3,e3]!4", V: "[a3,a4]!16, [g#2,b2,d3,e3]!4",
  W: "[a3,a4]!4 [e4,e5]@2 [d4,d5] [c4,c5] [d4,d5] [c4,c5] [d4,d5] [c4,c5] [e4,e5] [c4,c5] [a3,a4]!2, [a2,c3,e3,g3]!4", // A E D C D C D C …
  X: "[a3,a4]!8 [e4,e5] [d4,d5]!2 [c4,c5] [e4,e5]@2 [c4,c5]!2, [f2,a2,c3,e3]!4", // A E D C E C Fmaj7
  Y: "[d4,d5]!3 [c4,c5] [d4,d5] [c4,c5] [d4,d5] [c4,c5] [d4,d5] [c4,c5] [d4,d5] [c4,c5] [e4,e5] [c4,c5] [a3,a4]!2, [g2,c3,e3]!4", // D C D C D C D C …
  Z: "[a3,a4]!7 ~@2 [a3,a4]!3 [e4,e5]@2 [d4,d5] [c4,c5], [g#2,b2,d3,e3]@4 [g#2,b2,d3,e3]@3 [a3,a4]@2 ~@7, ~@2 [g#2,b2,d3,e3]!2", // A E D C E7 A E7
  AA: "[d4,d5] [c4,c5] [d4,d5] [c4,c5] [d4,d5] [g4,g5] [e4,e5]@2 [e4,e5] [d4,d5]!2 [c4,c5] [d4,d5] [c4,c5] [a3,a4]!2, [a2,c3,e3,g3]!4", // D C D C D G E D …
  AB: "[a3,a4]!8 [e4,e5] [d4,d5]!2 [c4,c5] [d4,d5] [c4,c5] [d4,d5] [c4,c5], [f2,a2,c3,e3]!4", // A E D C D C D C …
  AC: "[d4,d5]!2 [c4,c5] [d4,d5]!2 [c4,c5] [d4,d5] [c4,c5] [e4,e5] [d4,d5]@2 [c4,c5]!5, [g2,c3,e3]!4", // D C D C D C E D …
  AD: "[[c4,c5] [b3,b4] [c4,c5] [b3,b4] [c4,c5] [b3,b4] [c4,c5] [b3,b4] [c4,c5] [b3,b4] [c4,c5] [b3,b4] [c4,c5] [b3,b4] ~@2 [a2,c3,e3,g3]@4 [a2,c3,e3,g3]@4 [e5,e6] [d5,d6] [c5,c6] [d5,d6] [e5,e6] [d5,d6] [c5,c6] [d5,d6], [g#2,b2,d3,e3]@14 [c4,c5]@9 ~ [a2,c3,e3,g3]@4 [a2,c3,e3,g3]@4]/2", // C B C B C B C B …
  AE: "[f2,a2,c3,e3,e5,e6]@3 [g5,g6] [e5,e6]@2 ~@2 [f2,a2,c3,e3]@4 [e5,e6] [d5,d6] [e5,e6]@2, ~ [f2,a2,c3,e3] ~ [f2,a2,c3,e3], ~@3 [d5,d6]@3 ~@2", // Fmaj7 G E Fmaj7 E D E Fmaj7 …
  AF: "[g2,c3,e3,g4,g5,g6]@4 [e5,e6] [d5,d6] [e5,e6] [d5,d6] [e5,e6] [d5,d6] [e5,e6]@2 [g2,c3,e3,c4,c5,c6]@4, ~ [g2,c3,e3]!2 ~", // C E D E D E D E …
  AG: "[e5,e6] [d5,d6] [e5,e6] [d5,d6] [e5,e6] [d5,d6] [e5,e6]@2 [g#2,b2,d3,e3,c5,c6]@4 [d5,d6]@2 [d5,d6]@2, [g#2,b2,d3,e3]!2 ~ [g#2,b2,d3,e3]", // E D E D E D E E7 …
  AH: "[a2,c3,e3,g3,c5,c6] [g#2,d3,e3,b3]", AI: "[a2,c3,e3,c4] ~",
})).s("gm_piano").gain(0.4)

// drums · kick
const kick = s("bd").struct("x!4").gain(0.45)

// drums · snare
const snare = s("sd").struct("~@3 x ~@2 x ~@4 x ~@2 x ~").gain(0.45)

// drums · open hat
const open_hat = s("oh").struct("x ~@2 x!2 ~ x ~ x ~@2 x!2 ~ x ~").gain(0.45)

stack(piano, kick, snare, open_hat)

More by Bad Bunny