Strudelify

my little pony frienship is magic - my past is not today

Misc Cartoons

KeyD majorTempo128 bpm
0:00/0:00
// my little pony frienship is magic - my past is not today — Misc Cartoons
// 128 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/1042606; license: https://creativecommons.org/publicdomain/mark/1.0/
// note: Full arrangement: all 73 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(128/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 · violin
const violin = note(`<
  ~@4 A@3 B@2 C@3 D@4 E@4 F@3 G@5 H@2 I@6 J K L@2 M@4 ~ D@4 N O@3 P@3 Q@5 H@2 R@7 ~@3
>`.pickRestart({
  A: "[~ d5@8 b4 d5 e5@3 d5 d5@5 ~@4]/3", B: "[~@6 d5 f#5@2 a5@2 e5@3 e5!2]/2",
  C: "[d5 d5@4 b4 d5 e5@3 f#5 e5@2 d5 d5@8 ~@2]/3", D: "[~ b4!3 d5@2 d5 d5@5 ~ b4 d5 e5@3 f#5 e5@2 d5@2 b4@2 ~@7]/4",
  E: "[~ b4!3 a5@2 f#5 e5@2 d5@4 b4 d5 e5@2 d5@2 d5@2 e5@2 e5@7 d5!2]/4",
  F: "[d5@2 [a4,d5] [a4,d5]@2 [d5,f#5]@2 [e5,g5]@4 [d5,f#5]@2 [e5,g5]@2 [f#5,a5]@9]/3", // D5 D Em D Em F#m
  G: "[~@2 [d5,f#5] [d5,f#5]@2 [d5,f#5]!2 [f#5,a5]@2 [f#5,a5]@2 [g5,b5]@3 [f#5,a5] [f#5,a5]@3 [d5,f#5] [c#5,e5]@3 [b4,d5] [b4,d5]@10 ~@6 d5]/5", // D F#m G F#m D C#m Bm
  H: "[g5 g5@2 g5@2 g5!2 f#5@2 e5@2 d5@2 ~@2 b4]/2",
  I: "[d5@2 d5@4 d5@4 e5@4 e5@10 ~@2 [d5,f#5]@2 [e5,g5]@2 [f#5,a5]@6 [a5,c#6]@2 [b5,d6]@6 [a5,c#6]@2 [a5,c#6]@4 [f#5,a5]@3 ~@5 [b4,d5]@2 [d5,f#5]@2 [e5,g5]@6 [f#5,a5]@2 [e5,g5]@6 [d5,f#5]@2 [d5,f#5]@18]/6", // D Em F#m A Bm A F#m Bm …
  J: "~@7 e5", K: "f#5 d5@5 ~@2", L: "[~ b4 d5 g5@3 f#5 f#5@7 ~@2]/2",
  M: "[~@6 e5 f#5@2 a5@2 e5@3 d5 d5@3 d5 f#5 e5@2 d5 d5@7 ~@2]/4", N: "~ d5!3 a5@2 f#5 e5",
  O: "[d5 d5@3 ~ d5 e5 e5@3 d5 d5@2 e5@2 e5@7 [d5,f#5]!2]/3", // D
  P: "[[d5,f#5]@2 [a4,d5] [a4,d5]@2 [d5,f#5]@2 [e5,g5]@4 [d5,f#5]@2 [e5,g5]@2 [f#5,a5]@9]/3", // D D5 D Em D Em F#m
  Q: "[~@2 [d5,a5] [d5,a5]@2 [d5,a5] [d5,c#6] [f#5,d6]@2 [f#5,d6]@2 [g5,d6]@3 [f#5,d6] [f#5,d6]@3 [a5,f#6] [g5,e6]@3 [g5,d6] [g5,d6]@10 ~@6 d5]/5", // D5 Dmaj7 D G5 D C G5
  R: "[d5@2 d5@4 d5@4 e5@4 e5@10 ~@2 [b4,d5]@2 [c#5,e5]@2 [d5,f#5]@6 [f#5,a5]@2 [g5,b5]@6 [f#5,a5]@2 [f#5,a5]@4 [d5,f#5]@3 ~@5 [b4,d5]@2 [d5,f#5]@2 [e5,g5]@6 [f#5,a5]@2 [e5,g5]@6 [e5,c#6]@2 [f#5,d6]@30 ~@4]/7", // Bm C#m D F#m G F#m D Bm …
})).s("gm_violin").gain(0.45)

// chords · violin
const violin_2 = note(`<
  ~@4 A@3 B@2 C@3 D@4 E@4 F@3 G@5 H@2 I@6 J K L@2 M@4 ~ D@4 N O@3 P@3 Q@5 H@2 R@7 ~@3
>`.pickRestart({
  A: "[~ d4@8 b3 d4 e4@3 d4 d4@5 ~@4]/3", B: "[~@6 d4 f#4@2 a4@2 e4@3 e4!2]/2",
  C: "[d4 d4@4 b3 d4 e4@3 f#4 e4@2 d4 d4@8 ~@2]/3", D: "[~ b3!3 d4@2 d4 d4@5 ~ b3 d4 e4@3 f#4 e4@2 d4@2 b3@2 ~@7]/4",
  E: "[~ b3!3 a4@2 f#4 e4@2 d4@4 b3 d4 e4@2 d4@2 d4@2 e4@2 e4@7 d4!2]/4",
  F: "[d4@2 [a3,d4] [a3,d4]@2 [d4,f#4]@2 [e4,g4]@4 [d4,f#4]@2 [e4,g4]@2 [f#4,a4]@9]/3", // D5 D Em D Em F#m
  G: "[~@2 [d4,f#4] [d4,f#4]@2 [d4,f#4]!2 [f#4,a4]@2 [f#4,a4]@2 [g4,b4]@3 [f#4,a4] [f#4,a4]@3 [d4,f#4] [c#4,e4]@3 [b3,d4] [b3,d4]@10 ~@6 d4]/5", // D F#m G F#m D C#m Bm
  H: "[g4 g4@2 g4@2 g4!2 f#4@2 e4@2 d4@2 ~@2 b3]/2",
  I: "[d4@2 d4@4 d4@4 e4@4 e4@10 ~@2 [d4,f#4]@2 [e4,g4]@2 [f#4,a4]@6 [a4,c#5]@2 [b4,d5]@6 [a4,c#5]@2 [a4,c#5]@4 [f#4,a4]@3 ~@5 [b3,d4]@2 [d4,f#4]@2 [e4,g4]@6 [f#4,a4]@2 [e4,g4]@6 [d4,f#4]@2 [d4,f#4]@18]/6", // D Em F#m A Bm A F#m Bm …
  J: "~@7 e4", K: "f#4 d4@5 ~@2", L: "[~ b3 d4 g4@3 f#4 f#4@7 ~@2]/2",
  M: "[~@6 e4 f#4@2 a4@2 e4@3 d4 d4@3 d4 f#4 e4@2 d4 d4@7 ~@2]/4", N: "~ d4!3 a4@2 f#4 e4",
  O: "[d4 d4@3 ~ d4 e4 e4@3 d4 d4@2 e4@2 e4@7 [d4,f#4]!2]/3", // D
  P: "[[d4,f#4]@2 [a3,d4] [a3,d4]@2 [d4,f#4]@2 [e4,g4]@4 [d4,f#4]@2 [e4,g4]@2 [f#4,a4]@9]/3", // D D5 D Em D Em F#m
  Q: "[~@2 [d4,a4] [d4,a4]@2 [d4,a4] [d4,c#5] [f#4,d5]@2 [f#4,d5]@2 [g4,d5]@3 [f#4,d5] [f#4,d5]@3 [a4,f#5] [g4,e5]@3 [g4,d5] [g4,d5]@10 ~@6 d4]/5", // D5 Dmaj7 D G5 D C G5
  R: "[d4@2 d4@4 d4@4 e4@4 e4@10 ~@2 [b3,d4]@2 [c#4,e4]@2 [d4,f#4]@6 [f#4,a4]@2 [g4,b4]@6 [f#4,a4]@2 [f#4,a4]@4 [d4,f#4]@3 ~@5 [b3,d4]@2 [d4,f#4]@2 [e4,g4]@6 [f#4,a4]@2 [e4,g4]@6 [e4,c#5]@2 [f#4,d5]@30 ~@4]/7", // Bm C#m D F#m G F#m D Bm …
})).s("gm_violin").gain(0.45)

// chords · electric guitar muted · "12-string Guitar"
const electric_guitar_muted = note(`<
  A B A C D E F G F H A C I J K L I J K M N O P@2 N Q P R S T U V W X Y A Z A AA A C A B A C I J K L I J K M N O P@2 N Q
  P R S T U V W X Y AB AC AD@3
>`.pickRestart({
  A: "[b3,f#4]!3 [d4,a4]!4 [g4,b4]", // B5 D5 G
  B: "[g4,b4]@2 [g4,b4]@2 [g4,b4]@2 [g4,b4]@2 [g4,b4]@2 [g4,a4]@2 [g4,a4]@2 [g4,a4] ~", C: "[g4,b4]!5 [g4,a4]!3",
  D: "[b3,b4] b3!2 d4!4 g4", E: "g4@2 g4@2 g4@2 g4@2 g4@2 g4@2 g4@2 g4 ~", F: "b3!3 d4!4 g4", G: "g4!8",
  H: "g4@2 [g4,b4]@2 [g4,b4]@2 [g4,b4]@2 [g4,b4]@2 [g4,a4]@2 [g4,a4]@2 [g4,a4] ~", // G Gsus2
  I: "[g3,f#4] [g3,b3] [g3,d4] [g3,f#4] [g3,b3] [g3,d4] [g3,f#4] [g3,d4]", // Gmaj7 G G5 Gmaj7 G G5 Gmaj7 G5
  J: "[b3,f#4] b3 [b3,d4] [b3,f#4] b3 [b3,d4] [b3,f#4] [b3,d4]", // B5 Bm B5 Bm B5 Bm
  K: "[a3,e4] a3 [a3,c#4] [a3,e4] a3 [a3,c#4] [a3,e4] [a3,c#4]", L: "[a3,c#4] [b3,f#4,b4]!4 [a3,e4,a4]!3",
  M: "[a3,e4,a4]!8", N: "[d3,a3,d4]!8", O: "[e3,b3,e4]!7 g3", P: "[g3,d4,g4]!8", Q: "[e3,b3,e4]!8",
  R: "[g3,d4,g4] [f#3,f#4] [g3,g4] [a3,a4] [g3,g4] [f#3,f#4] [e3,e4] [d3,d4]", // G5 F# G A G F# E D
  S: "[e3,e4] e3!4 [e3,e4]!2 a3, ~ e4@2 e4@2 ~@3", T: "[b2,b3] b2!4 [b2,b3]!3, ~ b3@2 b3@2 ~@3",
  U: "[d3,d4]@2 d3@2 d3@2 d3@2 d3@2 [d3,d4]@2 d3@2 [d3,d4] ~, ~ d4@2 d4@2 ~@3", // D
  V: "[g3,g4] g3!4 [g3,g4] g3 [g3,g4], ~ g4@2 g4@2 ~@3", W: "[d3,d4]!8", X: "[e3,e4]!8",
  Y: "[b2,b3]@2 [b2,b3]@2 [b2,b3] ~ [a2,a3]@2 [a2,a3]@2 [a2,a3]@2 [a2,a3]@2 [a2,a3]@2", Z: "[g4,b4]!5 ~@3",
  AA: "[g4,b4]@2 g4@2 [g4,b4]@2 [g4,b4]@2 [g4,b4]@2 [g4,a4]@2 [g4,a4]@2 [g4,a4] ~", AB: "[d3,d4]!3 [e3,e4]!4 [f#3,f#4]",
  AC: "[f#3,f#4]!3 [g3,g4] [g3,g4]@2 [g3,g4]@2", AD: "[[d3,a3,d4]@5 ~]/3",
})).s("gm_electric_guitar_muted").gain(0.35)

// bass · electric bass finger · "Elbas"
const bass = note(`<
  A B A C D E F G F H A C I J K L I J K M N O P@2 N Q P R S T U V W X Y A Z A AA A C A B A C I J K L I J K M N O P@2 N Q
  P R S T U V W X Y AB AC AD@3
>`.pickRestart({
  A: "[b2,f#3]!3 [d3,a3]!4 [g3,b3]", // B5 D5 G
  B: "[g3,b3]@2 [g3,b3]@2 [g3,b3]@2 [g3,b3]@2 [g3,b3]@2 [g3,a3]@2 [g3,a3]@2 [g3,a3] ~", C: "[g3,b3]!5 [g3,a3]!3",
  D: "[b2,b3] b2!2 d3!4 g3", E: "g3@2 g3@2 g3@2 g3@2 g3@2 g3@2 g3@2 g3 ~", F: "b2!3 d3!4 g3", G: "g3!8",
  H: "g3@2 [g3,b3]@2 [g3,b3]@2 [g3,b3]@2 [g3,b3]@2 [g3,a3]@2 [g3,a3]@2 [g3,a3] ~", // G Gsus2
  I: "[g2,f#3] [g2,b2] [g2,d3] [g2,f#3] [g2,b2] [g2,d3] [g2,f#3] [g2,d3]", // Gmaj7 G G5 Gmaj7 G G5 Gmaj7 G5
  J: "[b2,f#3] b2 [b2,d3] [b2,f#3] b2 [b2,d3] [b2,f#3] [b2,d3]", // B5 Bm B5 Bm B5 Bm
  K: "[a2,e3] a2 [a2,c#3] [a2,e3] a2 [a2,c#3] [a2,e3] [a2,c#3]", L: "[a2,c#3] [b2,f#3,b3]!4 [a2,e3,a3]!3",
  M: "[a2,e3,a3]!8", N: "[d2,a2,d3]!8", O: "[e2,b2,e3]!7 g2", P: "[g2,d3,g3]!8", Q: "[e2,b2,e3]!8",
  R: "[g2,d3,g3] [f#2,f#3] [g2,g3] [a2,a3] [g2,g3] [f#2,f#3] [e2,e3] [d2,d3]", // G5 F# G A G F# E D
  S: "[e2,e3] e2!4 [e2,e3]!2 a2, ~ e3@2 e3@2 ~@3", T: "[b1,b2] b1!4 [b1,b2]!3, ~ b2@2 b2@2 ~@3",
  U: "[d2,d3]@2 d2@2 d2@2 d2@2 d2@2 [d2,d3]@2 d2@2 [d2,d3] ~, ~ d3@2 d3@2 ~@3", // D
  V: "[g2,g3] g2!4 [g2,g3] g2 [g2,g3], ~ g3@2 g3@2 ~@3", W: "[d2,d3]!8", X: "[e2,e3]!8",
  Y: "[b1,b2]@2 [b1,b2]@2 [b1,b2] ~ [a1,a2]@2 [a1,a2]@2 [a1,a2]@2 [a1,a2]@2 [a1,a2]@2", Z: "[g3,b3]!5 ~@3",
  AA: "[g3,b3]@2 g3@2 [g3,b3]@2 [g3,b3]@2 [g3,b3]@2 [g3,a3]@2 [g3,a3]@2 [g3,a3] ~", AB: "[d2,d3]!3 [e2,e3]!4 [f#2,f#3]",
  AC: "[f#2,f#3]!3 [g2,g3] [g2,g3]@2 [g2,g3]@2", AD: "[[d2,a2,d3]@5 ~]/3",
})).s("gm_electric_bass_finger").gain(0.35)

// drums · kick
const kick = s("bd").struct("<A@14 B A B A@3 C@15 A D A@7 C A@2 B A B A@6 D A@3 D A@3 D A@2 D A E F ~@2>".pickRestart({
  A: "x!4", B: "x ~@2 x ~@4 x ~@3 x ~@3", C: "x!2", D: "x!3 ~", E: "x ~@3 x!5 ~@3 x ~@3", F: "x",
})).gain(0.44)

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

// drums · crash
const crash = s("cr").struct("<~@69 [~@4 x!5 ~@3 x ~@3] x ~@2>").gain(0.44)

stack(violin, violin_2, electric_guitar_muted, bass, kick, snare, crash)

More by Misc Cartoons