Strudelify

Silent All These Years

Tori Amos

KeyE majorTempo150 bpm
0:00/0:00
// Silent All These Years — Tori Amos
// 150 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 1 "breathy flute" named as a pipe, played on flute (its cello patch is not one); ch 3 "bass" named as a bass, played on electric bass finger (its french horn patch is not one)
// note: Full arrangement: all 127 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(150/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// 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 B D E F G H G I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI E F G H G I J K L M N O P Q AJ S T
  U V W X Y Z AA AB AC AD AE AK AL AM AN AO AP AQ AR AS AT AU AV AW AX AY AZ E F G H G I J K L M N O P Q AJ S T U V W X
  Y Z AA AB AC AD BA BB BC BD BE BF BG BH BI BJ BK BL BM BN BO BP BQ BR BS
>`.pickRestart({
  A: "~@7 e4", B: "d4 e4 f4 e4 d4 e4 f4 d4", C: "d4 e4 f4 e4 g#4@3 e4", D: "d4 e4 f4 e4 g#4@3 [e4,e5]",
  E: "~@2 e5!2 b4!2 [e4,b4]@2, [e4,e5] e4!2 ~, ~ [g#5,e6]@3 ~ [b5,d#6]@3", // E5 E C#m B
  F: "c#5!3 b4 ~@3 b4, e4@2 e4@2 b4@3 ~, ~ [a5,c#6]@3 e4@2 e4@2, ~@5 [g#5,b5]@3", // A G#m
  G: "~@2 [e4,e5]@2 ~@2 d#5!2, [e4,e5] ~ [e4,d#5] e4, ~ [a5,e6]@3 ~ [b5,d#6]@3", // E Emaj7 A5 B
  H: "c#5 ~@2 b4!3 [e4,b4] e4, e4!3 ~, ~ [a5,c#6]@3 ~@2 [g#5,b5]@2, ~ c#5@2 ~@5", // E5 A G#m
  I: "c#5 ~@2 b4!3 [f#4,b4] [e4,g#4], e4!3 ~, ~ [a5,c#6]@3 ~@2 [g#5,b5]@2, ~ c#5@2 ~@5", // B5 E A G#m
  J: "a3@2 e4 a4 b4 ~@2 g#4, b4 a4, ~@5 e5@3", K: "[a3,g#4] b4 [g#4,e5]@2 b3 d#4 f#4 [d#4,b4], ~ e4@3 [b4,f#5]@2 e5@2",
  L: "~@2 e5 d#5 ~@2 d#5!2, [e4,e5] e4 [e4,d#5] e4, ~ [g#5,e6]@3 ~ [b5,d#6]@3", // E Emaj7 C#m B
  M: "c#4 ~@2 b3 ~@2 b3!2, e4!2 ~ e4, ~ [a4,c#5]@3 ~ [g#4,b4]@3, ~ c#4@2 ~ [b3,e4]@2 ~@2", // A G#m E5
  N: "e5!3 d#5!4 c#5, e4!4, ~ [g#5,e6]@3 ~ [b5,d#6]@3", // C#m B
  O: "~@3 f#5 e5!2 c#5 b4, e4!3 [e4,a5,b5], ~ [a5,c#6]@3 ~@4, ~ g#5@2 ~@5", // Esus4 A
  P: "~@2 [e4,e5]@2 ~@2 d#5!2, [e4,e5] ~ [e4,d#5] e4, ~ [g#5,e6]@3 ~ [b5,d#6]@3", // E Emaj7 C#m B
  Q: "c#5!3 e5 b4!4, e4!4, ~ [a5,c#6]@3 ~ [g#5,b5]@3", R: "[e5,b5]@2 e4 a4 b4 e5@3, a2",
  S: "g#4@2 b4@2 [g#4,e5]@4 [b4,f#5]@4 [b4,d#5]@3 g#4, [a3,e4] [b3,f#4]", // C#m B5 B A5 B5
  T: "b4 ~@2 b4 [e4,b4]@2 g#4 b4, [a2,e3,e5], ~ g#4@2 ~@5, ~ c#4 ~ c#4", // E5 A5
  U: "b4@2 [d#4,g#4]@2 b4 ~ d#4@2, [b2,f#3,f#5], ~@2 e4 ~, ~@5 g#4@3", // G#5 B5
  V: "b4@2 g#4 b4!4 g#4, [a2,e3,g#5], ~ c#4 e4 c#4", W: "b4@2 [d#4,b4]@2 c#5 b4!2 g#4, [b2,f#3,a5], ~@2 e4 d#4",
  X: "b4 ~@2 b4 [e4,b4]@2 [c#4,g#4]@2, [a2,e3,e5,b5], ~ g#4@2 ~@5, ~ c#4 ~@2", // E5 C#5 Asus2
  Y: "b4 [d#4,g#4] [e4,b4] [d#4,g#4], [b2,f#3,f#5,c#6]", // G#5 E5 G#5 Bsus2
  Z: "b4@2 b4 g#4 b4 ~@2 b4, [a2,e3,e5,c#6], ~ c#4 e4 c#4, ~@5 g#4@2 ~", // A
  AA: "b4@2 g#4 b4!2 ~ d#4@2, [b2,f#3,f#5,d#6], ~ d#4 e4 ~, ~@5 b4@3", // B
  AB: "[e4,g#4]@2 e5 d#5 [g#4,e5] d#5 e5 d#5, [c#3,g#3], ~ g#5", // E C#m C#5
  AC: "[e4,d5]@4 a4@2 d5@2 f#4@2 a4@2 [e4,a4,e5]@2 ~ c#5, [d3,a3], f#5@6 ~ d5", AD: "[b3,f#4,b4,e5,b5]",
  AE: "~@3 e4!2 ~@2 a3, [d#5,d#6] [e5,e6] [c#5,c#6] [b4,b5], ~ a3@2 ~@2 g#4@2 ~", // D# E C# B
  AF: "e4@2 f4 e4 d#4 e4 f4 e4, [b4,g#5,b5]@3 ~", AG: "d#4 e4 f4 e4 g#4@3 f4", AH: "d#4 e4 f4 e4 d#4 e4 f4 e4",
  AI: "d#4 e4 f4 e4 ~@2 b4 [e4,b4], ~@4 g#4@3 ~", AJ: "[e5,b5]@2 e4 a4 b4 e5@3, a3",
  AK: "[b3,e4,g#4,b4]@2 [b3,e4,g#4,b4]@2 [e2,e3] b2 [e3,b3,d#4,f#4,b4] [b2,b3,d#4,f#4,b4], [e2,e3]@2 [b3,d#4,f#4,b4] ~", // E B E B
  AL: "[c#4,e4,b4]@2 [c#4,e4,b4]@2 ~@2 [d#4,f#4,b4] [f#2,g#3,d#4,f#4,b4], [e2,a2,e3]@2 [d#4,f#4,c#5] ~, ~@5 [f#2,f#3]@2 ~", // C#m7 B G#m7 A5 D#m7 F#
  AM: "[c#4,e4,b4]@2 [c#4,e4,b4]!2 [a3,c#4,e4,b4]@2 [c#4,e4,b4] [b3,e4,b4], a2, a3@2 ~ e3", // C#m7 A C#m7 E5
  AN: "[b3,e4,b4] ~@2 [d#4,f#4,b4] [d#4,f#4] e4 d#4 e4, b2 f#3 b3 b2, ~ [d#4,f#4,b4]@2 ~ b4@4", // E5 B D#m B
  AO: "b4@2 b4@2 b4@2 b4!2, [e3,e4,g#4] [e3,d#4,f#4]", AP: "b4@2 b4!2 c#5 b4!3, [c#4,e4,a4] [b3,d#4,f#4]",
  AQ: "b4 b4@2 [c#4,e4,b4] [a3,c#4,e4,b4]@2 b4!2, a3@2 ~ [a3,c#4,e4], [c#4,e4]@3 ~@5", // C#m7 A C#m
  AR: "[b3,e4,b4] b2 f#3 [b3,d#4,f#4,b4] [b2,d#4,f#4] [e3,g#4] [f#3,f#4] [b3,e4], ~ [d#4,f#4,b4]@2 ~ b4@4", // E5 B E F# E5 B
  AS: "[e2,e3] b2 e3 b2 f#2 b2 [b1,b3,d#4,f#4,b4] [f#2,b3,d#4,f#4,b4], [b3,e4,g#4,b4]!2 [b3,d#4,f#4,b4] ~", // E B E B
  AT: "[c#2,c#4,e4,b4]@2 [c#4,e4,b4]!2 c#5 b4 [b2,d#4,f#4,b4]@2, ~ c#3 [b1,d#4,f#4] ~", // C#m7 B
  AU: "b4 b4@2 [a3,e4,a4,b4] [a3,e4,a4,b4]@2 b4!2, [a3,e4,a4]@3 ~@3 [a3,e4,a4]@2", // Asus2 A5
  AV: "[b3,e4,g#4,b4] b2 f#3 [b3,d#4,f#4,b4] f#3@2 b2 f#2, ~ [d#4,f#4,b4]@2 ~ [d#4,f#4,b4]@4", // E B
  AW: "[b3,g#4,b4]@2 [b3,g#4,b4]@2 [f#4,b4]@2 [f#4,b4] [e4,b4], e2 [d#3,b3]", // E B5 E5 G#m
  AX: "[e4,b4] [e4,b4]@2 [e4,b4]!2 [f#4,b4] f#4 g#4, [c#3,a3] [b2,b3], ~@3 b4", // E5 B5 F#m B
  AY: "c#5 b4@3 [e4,b4]@4 c#5 b4@3 [e4,b4]@4, [a2,e3,b3]!2, e4 ~ e4 ~", // E5 Asus2
  AZ: "[f#4,c#5] [e4,b4]@3 [e4,b4]@4 ~@4 b4@2 b4@2, [b2,f#3,b3]!2", // F#5 E5 B5
  BA: "b4@2 ~ g#4 [f#4,b4]@2 [d#4,g#4]@2, [b2,f#3,f#5,b5], ~ e4 ~@2", // B5 G#5 B5
  BB: "b4@2 ~ g#4 [e4,b4]@2 [c#4,g#4]@2, [a2,e3,e5,b5], ~ c#4 ~@2", // E5 C#5 Asus2
  BC: "b4@2 ~ g#4 [f#4,b4]@2 [g#4,b4]@2, [b2,f#3,f#5,b5], ~ e4 ~@2", // B5 G#m B5
  BD: "[e4,g#4]@2 e5 d#5 [g#4,e5] d#5 e5 d#5, [c#2,g#2,c#3], ~ g#5", // E C#m C#5
  BE: "[f#4,d5]@4 a4@2 d5@2 f#4@2 a4@2 [e4,a4,e5]@2 ~ c#5, [d2,a2,d3], e5@6 ~ d5", BF: "[b1,f#2,b2,b3,f#4,b4]",
  BG: "~@3 [e3,e4]!2 ~@2 [a2,a3], d#5 e5 c#5 b4, ~ [a2,a3]@2 ~@2 [a3,a4]@2 ~", // E A
  BH: "b4@2 b4 e5 f#5 b4 f#5 g#5, e3, g#4 ~",
  BI: "~ b4 f#5 [b2,b3,g#5] [e3,e4,g#4,b4,g#5]@2 [d#3,d#4,g#4,b4,g#5]@2, e4@3 ~@5", // E G#m
  BJ: "[e4,g#4]@2 d#5 c#5 [g#4,e5] d#5 e5 d#5, [c#3,c#4], ~ g#5", // E C#m C#
  BK: "[f#4,d5]@4 a4@2 d5@2 f#4@2 a4@2 [e4,a4,e5]@2 ~ c#5, [d3,d4], f#5@6 ~ d5", BL: "[g#2,g#3,f#4,b4]",
  BM: "~@3 e4 [e4,f#5] e5 ~ a3, d#5@2 e5@2 ~ a4@2 ~, ~ a3@2 ~@3 e5@2", // Esus2
  BN: "~@3 c#5 ~@2 b3@2 e4@2 e3@2 b3@2 e4@2, e3@3 ~@5, [e4,b4,e5] b4@3, ~ e2@3 e2@4, ~ e4 ~@2", // E5
  BO: "~@3 b3!2 ~@2 g#4, [e2,e3], [d#5,d#6] [e5,e6] [c#5,c#6] [b4,b5], ~ g3@2 ~@2 e4@2 ~", // E D# E C# B
  BP: "~ d3 [g3,d4,g4,b4,d5] [d3,b3,d4,g4,b4], g2, [d4,g4,b4,d5] ~", // G
  BQ: "[d#4,a4,d#5] [e3,c#4,e4,a4,c#5] a3 e3, a2, ~ [c#4,e4,a4,c#5]", BR: "[e2,b2,g#3,b3,e4,g#4,b4]!2",
  BS: "[e2,b2,g#3,b3,e4,g#4,b4]", // E
})).s("gm_piano").gain(0.35)

// bass · electric bass finger · "bass"
const bass = note(`<
  ~@21 A B A B A B A B C D ~@22 A B A B A B A B C D ~@34 A B A B A B A B C D ~@10 E F G H I J K L ~@2
>`.pickRestart({
  A: "~ c#4 e4 c#4, [a2,e3]", B: "~ d#4 e4 d#4, [b2,f#3]", C: "[c#3,g#3]", D: "[d3,a3]", E: "[c#3,c#4]", F: "[d3,d4]",
  G: "[g#2,g#3]", H: "~ a3@2 e4!2 a4@2 a3", I: "~@3 b3 e4 e3 b3 e4, e3@3 ~@5, ~ e2@3 e2@4",
  J: "~ g3@2 b3!2 e4@2 g#4, [e2,e3]", K: "~ d3 g3 d3, g2", L: "~ e3 a3 e3, a2",
})).s("gm_electric_bass_finger").gain(0.2)

stack(piano, bass)

More by Tori Amos