Strudelify

Evermore

Alan Melken

KeyA♭ majorTempo92 bpm
0:00/0:00
// Evermore — Alan Melken
// 92 bpm, 4/4, key Ab major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5913513; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 76 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(92/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 · cello · "Violoncello"
const cello = note(`<
  ~@2 A B C D E F D G H G I J K L M G H G I J K H ~ N I H I H O P ~ Q R S R T U B V W ~ X Y Z AA AB AC AD AE@2 AF AG AH
  AI AJ AK AL AM AN AO AP AQ AR AS AT ~ AU@2 AV AW AX@4
>`.pickRestart({
  A: "f4!16", B: "eb4", C: "eb4!16", D: "f4", E: "ab4 g4 ab4 bb4", F: "g4", G: "eb3@3 eb3", H: "eb3", I: "f3",
  J: "f3@3 eb3", K: "g3 f3", L: "eb2", M: "g2@3 ~", N: "eb4 f4 g4 ab4 g4 ab4 bb4 c5 eb5@4 ~@4", O: "f3 e3",
  P: "eb3 db3", Q: "bb3@3 bb3 bb3@2 bb3@2", R: "bb4!3 ab4 db5@3 c5", S: "eb4 ab4@6 ~", T: "ab4", U: "~ ab4!4 g4 f4 c4",
  V: "~ eb4!4 ab3!2 g3", W: "ab3", X: "~@2 eb4@2 eb4@2 eb4 e4@3 eb4@2 db4@2 b3@2", Y: "b3",
  Z: "~@2 eb4@2 eb4@2 eb4 e4@3 eb4@2 db4@2 eb4@2", AA: "e4", AB: "~@2 e4@2 e4@2 e4@3 eb4 eb4@4 gb4@2",
  AC: "gb4 eb4 e4 gb4 ab4@4", AD: "~ b4!2 bb4 gb4@3 b3", AE: "[gb4@12 ~@2 bb3 b3]/2", AF: "db4@3 b3 e4@3 eb4",
  AG: "ab3 b3@6 ~", AH: "db4!2 db4@4 b3@2 e4@6 eb4@2", AI: "eb4@3 ~", AJ: "db4@2 db4@2 db4@2 b3@2 e4@2 eb4 eb4@4 ~",
  AK: "db4@2 b3 e4@4 eb4", AL: "db4 b3 eb4 b3", AM: "gb3@3 ~", AN: "db4@2 db4 db4@3 b3@2 e4@6 eb4@2", AO: "gb3 b3@6 ~",
  AP: "db4!3 b3 e4@3 eb4", AQ: "b3@3 ~", AR: "~ eb3!4 db3!2 eb3", AS: "b2@3 ~@4 gb3",
  AT: "gb3@2 gb3 gb3@3 e3@2 e3@2 gb3 eb3@3 ~@2", AU: "[~@2 b3@2 b3@2 b3 b3@3 bb3@2 bb3@2 b3 eb3@9 ~@4 b2@2 db3@2]/2",
  AV: "eb3 b2", AW: "gb3!2", AX: "b3/4",
})).s("gm_cello").gain(0.25)

// other · cello · "Violoncello"
const cello_2 = note(`<
  A@2 B C D E F G H I@2 J K L M@2 N I@2 J K L M@2 O P Q R S T U V W X E Y Z F AA AB C AC@2 AD AE AD AF AG AH AI AJ AK AL
  AM AN AO AP AQ AR AO AS AT AU AV ~ AW@3 AX F ~@2 AY AZ@2 BA
>`.pickRestart({
  A: "f2/2", B: "c3 bb2 c3 db3", C: "bb2", D: "bb2 ab2 bb2 c3", E: "f3", F: "ab3", G: "f3 eb3", H: "eb3 db3",
  I: "[~@2 c3@2 c3@2 c3 c3@3 bb2@2 bb2@2 c3 ab2@17]/2", J: "~@2 c3@2 c3@2 c3 c3@3 bb2@2 bb2@2 c3@2", K: "db3",
  L: "~ db3!4 c3!2 eb3", M: "[eb3 c3!2 eb3 f3@5 ab3!2 g3 eb3@3 ab2]/2", N: "bb2@3 ~", O: "eb3@3 ~", P: "~@6 g3 ab3",
  Q: "bb3@3 ab3 db4@3 c4", R: "eb3 ab3@7", S: "bb3!3 ab3 db4@3 c4", T: "c4", U: "bb3!3 ab3 db4 c4@2 ~",
  V: "bb3@2 ab3@2 db4 c4@2 ~", W: "bb3@4 ab3@4 ~@3 c4@2 ab3@3", X: "g3@3 g3 g3@2 g3@2", Y: "eb3", Z: "f3 g3", AA: "c3",
  AB: "eb3 e3 gb3 ab3", AC: "[ab2@13 g2 ab2 bb2]/2", AD: "gb3!2 e3!2", AE: "gb3!3 eb3", AF: "ab3!2 gb3 e3",
  AG: "ab3 gb3", AH: "bb3@4 b3 db4 eb4 gb4", AI: "e4@3 e4 eb4@3 eb4", AJ: "gb3 b3 db4 bb3", AK: "gb3@6 db4 eb4",
  AL: "e4@3 eb4 ab4@3 gb4", AM: "gb4 eb4@6 ~", AN: "e4!2 e4@4 eb4@2 ab4@6 gb4@2", AO: "gb4@3 ~",
  AP: "e4@2 e4@2 e4@2 eb4@2 b3@2 bb3 bb3@4 ~", AQ: "e4@2 eb4 db4@4 gb4", AR: "e4 eb4 gb4 eb4",
  AS: "e4@2 e4 e4@3 eb4@2 ab4@6 bb4@2", AT: "b4 gb4@6 ~", AU: "e4!3 eb4 bb3@3 bb4", AV: "b4@3 ~",
  AW: "[~@3 b3 gb3 eb3 e3@4 gb3@4 ab3@6 bb3@4]/3", AX: "b2!2", AY: "~ eb4@2 eb4!2 db4!2 eb4",
  AZ: "~ gb4@2 gb4!2 e4!2 gb4", BA: "gb4",
})).s("gm_cello").gain(0.3)

// bass · electric bass finger · "Chapman Stick"
const bass = note(`<
  A@2 ~@24 B C D E F G H I J K L M N O P Q R S T S U V W X Y Z AA AB AA AB AC AD AE AF AA AB AG ~@7 AH@2 AI AJ AK AL
>`.pickRestart({
  A: "[f1,f2]", B: "db3 f3 ab3 [db2,f3] db3 f3 db4 f3, db2@3 ~ db2@4",
  C: "ab3 c4 eb4 [ab2,ab4] bb4 ab4!2 eb4, ab2@3 ~ ab2@4", D: "db3 f3 ab3 [db2,f3] db3 f3 ab3 f3, db2@3 ~ db2@4",
  E: "ab3 c4 eb4 [ab2,ab4] [eb4,bb4] ab4 [eb4,ab4] eb4, ab2@3 ~ ab2@4", // Ab Eb5 Ab5
  F: "f4 db4 ab4 [f2,bb4] e4 g4 bb4 [e2,c5], f2@3 ~ e2@3 ~", // Bb5 C
  G: "f4 eb4 f4 [eb2,ab4] db4 f4 ab4 [db2,c5], eb2@3 ~ db2@3 ~", H: "c4 f4 ab4 db2 ~ ab4 f4 bb4, db2@3 ~@5",
  I: "eb2@3 eb2 eb2@2 eb2@2", J: "db3 f3 ab3 [db1,db2,f3] db3 f3 db4 f3, [db1,db2]@3 ~ [db1,db2]@4",
  K: "ab3 c4 eb4 [ab1,ab2,ab4] bb4 ab4!2 eb4, [ab1,ab2]@3 ~ [ab1,ab2]@4", // Ab
  L: "db4 f4 ab4 bb4 e4 g4 bb4 c5, [db1,db2] [e1,e2]", M: "[ab1,ab2]@3 [ab1,ab2] [ab1,ab2]@4", N: "[ab1,ab2,eb3,ab3]",
  O: "[ab1,db2,eb3]", P: "[ab1,eb2] [eb1,eb2], eb3", Q: "~@2 c4 eb3 bb3 eb3 c4 eb3, ~ c3 bb2 c3",
  R: "db4 eb3 bb3 eb3 [c3,c4] [g1,g2,eb3] [ab1,ab2,bb3] [bb1,bb2,eb3], db3 bb2 ~@2", // C Cm Absus2 Eb5
  S: "[b1,eb3,b3]!2 [db2,e3,db4] [bb1,db3,bb3]", T: "[eb2,bb2,eb4] [db2,bb2,gb3,eb4] [db2,bb2,ab3,e4] [db2,gb2,bb4]",
  U: "[e2,b2,ab3,e4]!2 [eb2,bb2,gb3,eb4] [db2,ab2,e3,db4]", // E Ebm Dbm
  V: "[db2,ab2,e3,db4]@3 [eb2,ab2,e3,db4] [b1,gb2,eb3,b3]@3 [b1,gb2,eb3,b3]", // Dbm B
  W: "[bb1,e2,db3,bb3]@3 [bb1,e2,db3,bb3] [ab1,ab2] [gb1,gb2] [e1,e2] [eb1,eb2,b2,ab3], ~@4 [b2,ab3]@3 ~", // Bbdim Ab Gb E Abm E
  X: "[e1,e2,e3,b3]@3 [e1,e2,e3,b3] [b1,b2,e3,b3]@3 [b1,b2,e3,b3]", Y: "[gb1,gb2,gb3]",
  Z: "~ [gb3,b3,e4]!3 [gb3,b3,eb4]!2 [gb1,gb2,gb3,b3,e4]@2, [gb1,gb2]!3 ~", // Esus2 B Esus2 Gb
  AA: "[e1,e2,ab3,b3]@3 [e1,e2,ab3,b3] [e1,e2,ab3,b3]@3 [e1,e2,ab3,b3]", // E
  AB: "[b1,b2,gb3,b3]@3 [b1,b2,gb3,b3] [b1,b2,gb3,b3]@3 [b1,b2,gb3,b3]", // B5
  AC: "[ab1,ab2,b2,ab3]@3 [ab1,ab2,b2,ab3] [g1,g2,b2,g3]@3 [g1,g2,b2,g3]", // Abm G
  AD: "[gb1,gb2,db3,gb3]@3 [gb1,gb2,db3,gb3] [f1,f2,f3]@3 [f1,f2,f3]", AE: "[e1,e2]!8, [e3,b3]@3 [e3,b3]@3 [e3,b3]@2",
  AF: "[bb1,gb2,gb3,bb3]@3 [bb1,gb2,gb3,bb3] [gb1,gb2,gb3,bb3]@3 [gb1,gb2,gb3,bb3]", // Ebm Gb
  AG: "[e1,e2,b3,e4]@3 [e1,e2,b3,e4] [eb1,eb2,bb3,eb4]@3 [eb1,eb2,b3,g4]", // E5 Eb5 Ebaug
  AH: "[~@3 [b1,b2,b3,b4]@2 [gb2,gb3,gb4,gb5]@2 [gb1,gb2,gb3,gb4]]/2", // B Gb
  AI: "~ [eb2,eb4]@2 [eb2,eb4]!2 [db2,db4]!2 [eb2,eb4]", AJ: "~ [ab1,eb4]@2 [ab1,eb4]!2 [gb1,db4]!2 [ab1,eb4]",
  AK: "~ [e1,eb4]@2 [e1,eb4]!2 [gb1,db4]!2 [bb1,eb4]", AL: "[b1,eb4]",
})).s("gm_electric_bass_finger").gain(0.3)

// bass · electric bass finger · "Chapman Stick" · soft notes
const bass_soft = note("<~@2 A B C D E F G H I J K L M N O P Q R S T U V O W ~@37 X Y Z@3 AA AB AC ~@5>".pickRestart({
  A: "c4 f3 ab3 f3 bb3 f3 g3 f3 c4 f3 ab3 f3 db4 f3 g3 f3, f2", B: "bb3 f3 g3 eb3 bb3 eb3 g3 eb3 bb3@8, eb2",
  C: "bb3 eb3 g3 eb3 ab3 eb3 g3 eb3 bb3 eb3 g3 eb3 c4 eb3 g3 eb3, eb2", D: "ab3 f3 ab3 f3 bb3 f3 ab3 g3 f3@8, f2",
  E: "ab3 g3 ab3 bb3, db2", F: "[c2,c4]", G: "[db2,f3]", H: "[ab2,ab3]@3 [g2,g3]", I: "ab2@3 ab2 ab2@2 ab2@2, ab3",
  J: "[ab2,ab3]@3 [c2,c4]", K: "[db2,db4]@6 [db2,db4]!2 [db2,db4]@4 [db2,db4]@4",
  L: "[db2,ab2,ab3,db4]@3 [c2,g2,g3,c4]", M: "[eb2,eb3,bb3]@2 f1 g1, ~ [f3,c4]", N: "[ab1,eb2,eb3,ab3]!2",
  O: "[g2,g3,eb4]@3 eb2", P: "~ c4 eb4 c4 eb4 c4 eb4 c4, ab2@3 g2",
  Q: "eb3 c3 eb3 [ab2,c4] [ab2,c4]@2 [ab2,bb3]@2, ab2@3 ~@5", R: "~ c4 eb4 c4 eb4 c4 eb4 c4, ab2@3 c3",
  S: "db4@2 f3@2 ab3@2 db2!2 db4@2 f3@2 eb3@2 f3@2, db2@3 db4 db2@2 db2@2",
  T: "[f3,ab3] f3!2 ab3 [f3,ab3]@2 [c2,g2,f3,ab3]@2, [db2,ab2]@3 ~", U: "[g2,g3,bb3] [bb2,f3,bb3] f2 eb2",
  V: "db2 f2 c2 eb2, [eb3,ab3]!2", W: "[eb2,g3,eb4]", X: "[ab1,ab2,b3,ab4]@3 [ab1,ab2,b3,ab4]@3 [ab1,ab2,b3,ab4]@2",
  Y: "[gb2,gb3,gb4]", Z: "[~@3 [e2,db4]@2 [gb2,db4]@2 [ab2,eb4]@3 [bb2,eb4]@2]/3", AA: "eb4@2 ~ gb2, ab2@3 ~, ~ eb4",
  AB: "[e2,b3]", AC: "~ [eb2,eb3,eb4,eb5]@2 ~",
})).s("gm_electric_bass_finger").gain(0.2)

stack(cello, cello_2, bass, bass_soft)