Strudelify

Amazing Grace (vocals with piano)

John Newton

KeyG majorTempo86 bpm
0:00/0:00
// Amazing Grace (vocals with piano) — John Newton
// 86 bpm, 3/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Transcription provider: pdmx. https://musescore.com/score/6331613; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 88 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(86/3)

// 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(`<
  ~@18 A B C A D E F G A B C A D H I J ~@15 K L M N O P Q R@2 S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AE AM
  AN AO AP AQ ~@3 AR
>`.pickRestart({
  A: "~@5 [b3,d4]@7, g2, ~ d3@5, ~ g3@2, ~@3 a3@5", B: "~@5 [b3,d4]@7, b2, ~ f#3@5, ~ g3@2, ~@3 a3@5",
  C: "~@5 [d4,g4]@7, c3, ~ e3@5, ~ g3@2, ~@3 c4@5", D: "~@5 [b3,e4]@7, e2, ~ e3@5, ~ g3@2, ~@3 a3@5",
  E: "~@11 g4@13, a2@5 [c#4,e4]@7, ~ e3@5, ~ a3@2, ~@3 b3@5", // C#m
  F: "~@5 e4, d2@5 [d4,g4]@3 f#4@4, ~ d3@5, ~ g3@2, ~@3 c4@5", G: "~@5 [c4,d4]@7, [d2,f#4], ~ d3@5, ~ f#3@2, ~@3 a3@5",
  H: "~@2 a4, d3@5 [f#4,b4]@7, ~ a3@5, ~ c4@2, ~@3 d4@5", I: "~@5 a3, g2@5 g4@3 b3@4, ~ g3@5, ~ c4@2, ~@3 d4@5",
  J: "~@5 g4@7, g2, b3 b3@2, ~ g3@5, ~@3 d4@5", K: "~@2 d5",
  L: "~@5 g5, [g2,a4]@3 b3 [d4,d5,b5]@2, g5 g3@2, ~ b4@23, ~ d5 d3@10", // Gsus2 G
  M: "~@2 [d4,a5], [b2,d5,f#5,b5], ~ f#3@5, ~ g3@2, ~ b3", // D5 Bm
  N: "~@2 [e4,g4,c5,e5], c3@2 c4 d4@3, c5 e5 g3@10, ~ d5@23, ~ g5@11", // C
  O: "~@2 [d4,g4,b4,d5], b2, d5@2 g4 [b3,a4]@3, g4 a3@2, ~ [g3,f#4]@5", // G B7 Gmaj7
  P: "~@5 g5, [e3,b4]@3 f#4 [g4,d5,b5]@2, g5 e4@2, ~ d5@3 b3@20, ~ e5@11", // E5 G
  Q: "~@2 [c#4,a5], [a2,c#5]@2 a3 b3@3, ~ e5@23, ~ [g5,b5]@11, ~ e3@5", // F#m A G
  R: "[~@5 a3 ~@4 b5@2, [d5,a5,d6]@3 d3, [d2,g5]@3 e3 g3@2 [d4,f#5]@6, ~ a2@5 ~@2 f#3@4, ~@2 d3@4 ~ a3@5]/2", // D5 G5 D
  S: "~@4 d5 [d5,b5], g2@3 [a3,b5] [b3,d6]@2, d5 d3@5, ~ g5@23, ~ b5 d6@6 g3@16", // G Asus2 Bm
  T: "~@2 [d4,g4,b4,d5], [b2,g5], d5@2 b4 g3@3, b4 a3@2, ~ [f#3,a4]@5", // G Em F#m
  U: "~@3 g5 ~ e5, [c3,g4]@3 d4 [e4,c5,g5]@2, ~ d5@23, ~ c5@3 g3@20, ~ e5@3 c4@8", // C5 C
  V: "~@2 [d4,g4,b4,d5], b2, d5@2 g4 [g3,f#4]@3, g4 g3 b3@4, ~ a4@5", // G Gmaj7
  W: "~@5 [e5,g5], [a2,a4]@2 [c#4,c#5,b5], ~ c#5@7 a3@16, ~ [e5,g5]@5 b3@6, ~ e3@5", // Em A C#7 Em
  X: "~@5 d3, [c5,d5,f#5,b5]@2 [d4,a5], d3 a3, ~ e3@5, ~ f#3@2", // Bm D5
  Y: "~@5 c3, c3@2 [d#3,d#4,g4,c5], g4 d#5 g3@2 [g4,c5]@2 g3@6, ~ c5@7 [c4,d#5]@16, ~ g5@11", // Cm C5 Cm
  Z: "~@5 [f3,g4], [f2,f4]@2 [g#3,g#4], g#4@2 f3 [g3,a#4]@3, c5 a#4 c5@4, ~ c3@5", // Fsus2 F G# Gm
  AA: "~@5 c#5, [a#2,a#3,c#4]@2 [g#2,g#3,a#4], c#5 g#4, a#4 [f3,f4]@2, f4 d#4@5", // A#m G#sus2 F
  AB: "~@15 f5 [d#5,f5] f5 ~@4 g#5@2, [g2,g3]@9 f5 g5@2, d#5!4 [f2,f3]@8, ~ f5@2 f5@2 f5@2 f5@2 f5@2 f5@2 f5@2 ~@2 d#5@7, ~@4 d#5!4 [d#2,d#3]@4", // D#sus2 G F D#
  AC: "~@5 d#3, [g#2,a#5], c5 [g#3,g#5]@2, ~ d#5@11 a#3@12, ~ d#3@3 [c4,g#4,c5,d#5]@2", // G#sus2 G#
  AD: "~@5 c3, g5@2 [d#3,d#4,g4,c5], c3@2 [g4,c5] [g3,d5]@3, [c5,d#5] g3 [c4,d#5]@4, ~ f5@5", // Cm C5 G5 Cm
  AE: "~@5 a#3, [c#3,d#5]@2 [c#4,f4,g#4,a#4], [f4,g#4]@2 c#4 d#4@3, ~ g#3@5, ~ c#5@2", // C#sus2 A#m7 Fm
  AF: "~@5 g2, [c4,d#4,g#4]@2 [a#2,e4,g4,a#4,c5], c5 c3, ~ g#3@5, ~ d#3@2", // G# C7
  AG: "~@5 c4, [f2,f4]@2 [g#3,c5,f5,g5], [g#4,c5] [f3,g#4]@2, ~ c3@5, ~@2 [c5,f5] g3@3", // F Fm G# Fm F5
  AH: "~@5 f2, [d4,g#5]@2 [a#2,f4,a#4,d5], [a#4,d5,f5] [f3,f5]@2, ~ [a#3,g5]@5, ~@2 [a#4,d5] [d3,d#5]@3", // Ddim A# F D# A# D#maj7
  AI: "~@5 a#3, [d#2,d#5]@2 [g#3,f4,g#4], ~ a#2@5, ~ [d#3,g4,a#4]@2, ~ f3", // D# C# D#
  AJ: "~@5 a#2, d#4@2 [c#3,a#4,d#5,g5], [g4,a#4] [g3,g4]@2, ~ a#3@5, ~@2 [a#4,d#5] d#3@3", // D#7 Gm G D#5
  AK: "~@5 f5, [g#2,g#5]@2 [c4,c5,d#5,g5], [c5,d#5] a#3, ~ d#3@5, ~ g#3@2", // G# Cm
  AL: "~@5 c3, d#5@2 [d#3,d#4,g#4,c5], c3@2 [d#4,g#4,c5] [g#3,a#4]@3, [g#4,c5] g#3 c4@4, ~ c#5@5", // G# G#sus2 G#
  AM: "~@5 c3, c5, [c4,d#4,g#4]@3 c3 [g#2,c4,d#4,g#4]@2, ~ g#3@5, ~ d#3@2", // G#
  AN: "~@5 d3, a#2, a#3@2 [d4,f4] a#3@3, [g#3,d4,f4] [g#3,g4]@2, ~ f3@3 [f3,d4,f4,g#4,a#4]@2", // Dm Ddim G#maj7 A#7
  AO: "~@5 d#3, c5@2 [g3,c#4,d#4,g4], d#3@2 [d#4,g4] a#3@3, [d#4,g4] [g#3,a#4]@2, ~ f3@5", // D#7 D# G#sus2
  AP: "~@5 d#4, g#2@2 [c4,g#4,c5,d#5], c4@2 [d#4,g#4,c5] a#3@3, [d#4,g#4] g#3@2, ~ d#3@5", // G# G#5
  AQ: "~ g#6@11, [g#4,a#5], ~ [d#5,g#5,c6,d#6]@23", AR: "~ [d#3,g#3,g#4]@23, [g#2,c4]",
})).s("gm_piano").gain(0.3)

stack(piano)

More by John Newton