Strudelify

Friend Like Me

Alan Menken

KeyG majorTempo176 bpm
0:00/0:00
// Friend Like Me — Alan Menken
// 176 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/3858026; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 118 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(176/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 · trumpet · "B♭ Trumpet"
const trumpet = note(`<
  A ~ A ~ A ~ B C D E F@2 G H I@2 D E F@2 J K L M N O P@2 Q R S T N U V@2 ~@11 W ~@3 X Y Z S AA A ~ A ~ A ~ B AB ~ AC ~
  AD ~@2 AE AF AG AH@2 AI AJ R AK@2 ~@2 AL@2 ~@3 AM AN ~@2 AO AP@2 AQ ~ AR AS AT@2 ~@6 AU@2 AV AW AX AY AZ AY AZ AY ~ BA
>`.pickRestart({
  A: "a5 f5@2 d5@5", B: "f4 a#3 d4 f4 a3 e4@3", C: "d4 ~@4 f3 g3 g#3", D: "a3 a#3 b3 c#4", E: "d4 f4@2 a3 ~ f3 g3 g#3",
  F: "[a3!2 a#3!2 b3 c#4@2 d4@5 ~ f3 g3 g#3]/2", G: "a3 a#3@3 b3@2 c#4@2", H: "d4 e4@2 f4@2 d4 c#4 d4",
  I: "[e4 d#4 e4!3 e4@2 f4@5 ~ f3 g3 g#3]/2", J: "a3@2 ~ a#3 b3@2 c#4@2", K: "d4 e4@2 f4@2 d4!2 d#4", L: "e4!5 e4@2 f4",
  M: "~@2 a4 g4@2 f4@3", N: "~ d4 f4 d4", O: "g#4 f4@2 g4@2 f4@3", P: "[d4@2 f4@2 g#4 f4@2 g4@5 ~@2 f4!2]/2",
  Q: "c5@2 a4@2 g4 f4@3", R: "g4 f4@2 g4 ~ f4 g4@2", S: "a4 c5 a4 f4 g4 f4@2 d4", T: "~ g#4@2 g4@2 f4@3",
  U: "g#4@2 f4 g4@4 f4", V: "[d5@4 f5@4 [g#5,a#5] g#5@2 ~ f5@2 g5@10 ~@8, ~@9 g5 ~@22]/2", W: "a5 b5 c6 c#6",
  X: "~@3 e4 ~ f4@3", Y: "c5@2 a4 g4@2 f4@3", Z: "g4@2 f4 g4 ~ f4 g4@2", AA: "~@3 f5@3 e5@2",
  AB: "d4 a3 a3@2 c4@2 c#4@2", AC: "~ a3 a3@2 c4@2 c#4@2", AD: "~ d4 d4@2 d#4@2 e4@2", AE: "~@4 a5@3 ~ a5@3 ~ a5@3 ~",
  AF: "a5@3 ~ a5 ~ a5 ~@9", AG: "a5", AH: "[~@2 a#4@2 a#4 a#4@2 a#4@5 ~@4]/2", AI: "~ f4 f4@2 g4@2 g#4@2",
  AJ: "a4 g#4 a4@2 g4@2 f4@2", AK: "[c#5@2 d5@2 d#5 e5@2 f#5@3 g5@2 g#5 a5@2 ~]/2", AL: "[~@7 d4@3 d4@2 d4 ~@3]/2",
  AM: "d4 e4 f4 f#4", AN: "d4 ~@3", AO: "~@5 d5!3", AP: "[d5@2 d#5@2 e5 f#5@2 g5@3 a5 a#5 ~ g5 f#5 g5]/2",
  AQ: "a5!5 a5@2 a#5", AR: "~ g5 a#5 g5", AS: "c#6 a#5@2 c6@2 a#5@2 a#5", AT: "[g5@2 a#5@2 c#6 a#5@2 c6@5 ~@4]/2",
  AU: "c#5 a4@7", AV: "d5", AW: "f#5", AX: "g5", AY: "a#5@3 a5 ~@4", AZ: "d6 a#5@2 g5 ~@4", BA: "~@8 g5@3 ~@5",
})).s("gm_trumpet").gain(0.4)

// other · trumpet · "B♭ Trumpet"
const trumpet_2 = note(`<
  A B A B A B C D ~ E F@2 ~ G H I ~ E F@2 ~ G H J K L M N O P Q R K S T@2 U@2 Q ~ V W X@2 Y Z Y AA AB AC AD AE AF AG
  AH@2 A B A B A B C AI ~ AJ ~ AK ~ AL@2 AM AN ~@2 AO AP AQ AR@2 AS AT AU@2 AS AV AW@2 AX AY AS AZ BA@2 BB BC BD BE BF@2
  BG BH BI BJ BK BL BM@2 BN BO BP BQ BR BQ BR BS BT@2
>`.pickRestart({
  A: "d5 f5@2 f4@5", B: "g#4@3 g4@3 ~@2", C: "g#3 ~@4 g3@3", D: "f3 ~@7", E: "f3 a3@2 f3 ~@4",
  F: "[~@4 g3 c#4@2 d4@2 f4 e4@2 d4 ~@3]/2", G: "d4 e4@2 a3@2 ~@3", H: "g#3", I: "~ g3 ~@2", J: "g3@2 a3 g3@2 g3@3",
  K: "~ d4 f4 d4", L: "d4 f4@2 c#4@2 g3@3", M: "d4@2 f4@2 d4 f4@2 g4", N: "d4@3 c#4 ~@4", O: "c5@2 c4@2 g4 ~ c4@2",
  P: "a#3 f4@2 b3 ~ f4 b3@2", Q: "c4 c5 a4 f4 g4 g3@2 f3", R: "~ g#4@2 g#3@2 g3@3", S: "d4@2 f4 c#4@5",
  T: "[~@4 f4@2 f4 d4@3 d4@2 ~@4]/2", U: "[c5@2 c4@2 g4 a3@2 g4@3 a#3!2 ~ f4 a#3@2]/2", V: "d4!2 g4 d4",
  W: "g4 f4 ~ g#3@3 ~@2", X: "[d4@2 ~ f4 g4@2 c#4 a4@2 f4 e4@2 d4@2 g#4@2]/2", Y: "d4", Z: "~ d4 ~ d4",
  AA: "a4 b4 c5 c#5", AB: "~ d4!3", AC: "f4 f4@2 g4@2 c#4@3", AD: "d4@2 f4@2 f4 f4@2 g4", AE: "d4@3 c#4 ~ g3@3",
  AF: "c5@2 c4 g4@2 a3@3", AG: "a#3@2 f4 b3 ~ f4 b3@2", AH: "[c4 c5 a4 f4 g4 g3@2 f3@3 ~ a#4@3 a4@2]/2",
  AI: "f3 a3 a3@2 c4@2 c#4@2", AJ: "~ a3 a3@2 c4@2 c#4@2", AK: "~ d4 d4@2 d#4@2 e4@2",
  AL: "[~ d#4@2 d#4 f4 f#4@2 g4@2 a3 c#4 a4 d4 a3 d4 a4]/2", AM: "f#4@3 g4 ~@4", AN: "f5", AO: "a3 f4 f4@2 a#3@2 b3@2",
  AP: "c#4 a3", AQ: "c4 a3", AR: "[c#4@2 d4@2 d#4 e4@2 f#4@3 g4@2 g#4 a4@2 ~]/2", AS: "c4", AT: "d4 ~@7",
  AU: "[c4@7 g4@3 g4@2 g4 ~@3]/2", AV: "d4 ~@2 g4@2 ~@3", AW: "[g4@7 f#4@5 ~ c#5!3]/2", AX: "c5!2 d4@2 e4@2 f4@2",
  AY: "d4 a#4@2 d4 ~@4", AZ: "~@2 d4@2 ~ d4!3", BA: "[d4@2 d#4@2 e4 f#4@2 d5@3 a4 g5 ~@4]/2", BB: "c#5",
  BC: "~@2 d5 f#4@2 a#4 g4@2", BD: "~ a#4!3", BE: "g5 g5@2 f#5@2 g5@2 d#5", BF: "[d5@2 d5@2 g5 g5@2 g5@5 ~@4]/2",
  BG: "d5 d5@2 c5@2 f4@3", BH: "g4 a#4@2 c5 ~ a#4 a#4@2", BI: "a#4!3 g4 a#4@2 a#4!2", BJ: "a#4 g4 a#4@2 g4 a#4@3",
  BK: "a#4!3 f#4 a#4@2 a#4!2", BL: "a#4 f#4 a#4@2 e4 a#4@3", BM: "g4", BN: "a4", BO: "c5", BP: "a#4 a#4@2 a#4 ~@4",
  BQ: "c#5@3 c5 ~@4", BR: "d5 a#4@2 a#4 ~@4", BS: "c#5@3 c5 ~ g4 f4@2",
  BT: "[g4@2 g4@2 a4@2 g4@2 a#4@2 f#4@4 d4@10 g4@3 ~@5]/2",
})).s("gm_trumpet").gain(0.4)

// other · trumpet · "B♭ Trumpet"
const trumpet_3 = note(`<
  ~ A ~ A ~ A ~@21 B C ~@3 D E F@2 ~@8 G H I J ~ K L B ~@2 M@2 ~ A ~ A ~ A ~@2 N O N O P Q@2 R S ~@2 T U V W X ~ Y Z@2 ~
  AA AB@2 AC AD AE@2 AF@2 AG AH AI AJ AK@2 AL AM AN AO AP AQ AR@2 AS AT AU AV AW AV AW AX AY@2
>`.pickRestart({
  A: "d5@3 c#5@3 ~@2", B: "g#3@3 g3 ~@4", C: "~@3 a3", D: "d4 ~@3", E: "a#3@2 f4 g3@5",
  F: "[~@4 d4@2 f4 g#3@3 g#3@2 ~@4]/2", G: "g#3", H: "~ g#3 ~ g#3", I: "a#3", J: "c#4 d4 d#4 e4",
  K: "d4 f4@2 c#4@2 g3@3", L: "d4@2 f4@2 d4 f4@2 g4", M: "[~@7 d4@3 ~ g#4@3 g4@2]/2", N: "d4@4 a3@3 a3 d4@4 a3@3 a3",
  O: "d4 ~", P: "f4@4 c4@3 c4 f4@4 c4@3 c4", Q: "[~ a3@2 a3 a#3 c4@2 c#4@2 a3 c#4 g4 d4 a3 d4 a4]/2", R: "d#4@3 e4 ~@4",
  S: "d5", T: "~ f3 g3 g#3", U: "a3 b3", V: "c4 c#4", W: "a3 b3 c4 c#4", X: "d4 e4 f4 f#4", Y: "a#3 ~@7",
  Z: "[~@7 a#3@3 a#3@2 a#3 ~@3]/2", AA: "a#3 ~@2 d4@2 ~@3", AB: "[c#4@7 c4@5 ~ c#5!3]/2", AC: "f#4!2 d4@2 e4@2 f4@2",
  AD: "a#3 ~@2 d4 ~ d4!3", AE: "[d4!2 d#4!2 e4 f#4@2 g4@5 ~ d4!3]/2",
  AF: "[d4@2 d#4@2 e4 f#4@2 a#4@3 a4 d5 ~ g4 f#4 g4]/2", AG: "a4!5 a4@2 f#5", AH: "~@2 d5 f#5@2 a#4 g4@2",
  AI: "~ d5 a#4 d5", AJ: "c#5 a#4@2 c5@2 a#4@2 a#4", AK: "[a#4@2 a#4@2 c#5 a#4@2 d#5@5 ~@4]/2",
  AL: "a#4 d5@2 c5@2 d4@3", AM: "d#4 a#4@2 c5 ~ a#4 e4@2", AN: "f4 a#4!2 g4 a#4@2 f4 a#4", AO: "a#4 g4 a#4@2 g4 a#4@3",
  AP: "e4 a#4!2 f#4 a#4@2 e4 a#4", AQ: "a#4 f#4 a#4@2 c#4 a#4@3", AR: "d#4", AS: "g4", AT: "a4", AU: "g4 g4@2 g4 ~@4",
  AV: "d#5@3 d5 ~@4", AW: "g4 a#4@2 g4 ~@4", AX: "d#5@3 d5 ~ g4 c4@2",
  AY: "[c#4@2 g4@2 a4@2 g4@2 a#4@2 c4@4 a#3@10 g3@3 ~@5]/2",
})).s("gm_trumpet").gain(0.4)

// other · trumpet · "B♭ Trumpet"
const trumpet_4 = note(`<
  ~ A ~ A ~ A ~@29 B C@2 D E F G H@2 ~@3 I ~@9 A ~ A ~ A ~@2 J K J K L M ~ N O P Q R S T U@2 V W X@2 Y Z AA@2 ~@3 AB
  AC@2 AD ~ AE AF AG@2 ~@6 AH@2 AI AJ AK AL AM AL AM AN AO AP
>`.pickRestart({
  A: "f5@3 e5@3 ~@2", B: "~@5 f4 f4@2", C: "[c5@2 a4@2 g4 f4@2 g4@3 f4 g4 ~ f4 g4@2]/2", D: "a4 c5 a4 f4 g4 f4@2 d4",
  E: "~ a4 g4 f4", F: "g#4 f4 g4 f4", G: "g4 f4@3 ~@2 g4 f4", H: "[a4@2 ~ f4 g4@2 f4 a4@5 ~@4]/2", I: "a3 b3 c4 c#4",
  J: "d4@4 a3@3 a3 d4@4 a3@3 a3", K: "d4 ~", L: "f4@4 c4@3 c4 f4@4 c4@3 c4", M: "f4 ~", N: "c4@3 c#4 ~@4", O: "d4 ~@3",
  P: "~ d4@3 d#4@2 e4@2", Q: "f4 ~@3", R: "~ f4 f4@2 g4@2 g#4@2", S: "a4 g#4 a4@2 g4@2 f4@2", T: "g4 f4@2 g4 ~ f4 g4@2",
  U: "[a4!5 a4@2 d5@5 ~ d4!3]/2", V: "d4!2 e4 f#4", W: "g4 a#4@2 d4 ~ d4!3", X: "[d4!2 d#4!2 e4 f#4@2 g4@3 ~@3 d4!3]/2",
  Y: "~ d4@2 d#4 e4@2 f#4@2", Z: "g4 a4@2 a#4@2 g4!2 g#4", AA: "[a4!4 a4@2 a4 a#4@5 ~@4]/2", AB: "~ a#3!2 ~",
  AC: "[d4@2 d#4@2 e4 f#4@2 g4@3 a4 a#4 ~ g4 f#4 g4]/2", AD: "a4!5 a4@2 c5", AE: "~ g4 a#4 g4",
  AF: "c#5 a#4@2 c5@2 a#4@2 a#4", AG: "[g4@2 a#4@2 c#5 a#4@2 c5@5 ~@4]/2", AH: "d#4!2", AI: "d4!2", AJ: "d5 c5 a#4 a4",
  AK: "g4 ~@3", AL: "a#4@3 a4 ~ d5 d5@2", AM: "g4@4 ~@8 g4 a4 ~ a#4", AN: "a#4@3 a4 ~ d4 d4@2", AO: "d#4@2 ~@3 d4@3",
  AP: "g4@8 g4@3 ~@5",
})).s("gm_trumpet").gain(0.4)

stack(trumpet, trumpet_2, trumpet_3, trumpet_4)

More by Alan Menken