Strudelify

blessed be your name

Beth and Matt Redman

KeyA majorTempo120 bpm
0:00/0:00
// blessed be your name — Beth and Matt Redman
// 120 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/174865; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 63 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/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 D A B C D A E C F A E F@2 A E C F A E F@2 G H I J G K L M N O P Q N O R S T U@2 V W X Y V W X Z V W X Y V W X AA
  U S AB AC
>`.pickRestart({
  A: "[g4,d5] d4 g4 [g4,d5] d4 g4 [g4,d5] [g3,d4], g3@2 ~ g3@3 ~@2", // G5
  B: "[a4,d5]@2 d4@2 a4@2 [a4,d5]@2 d4@2 a4@2 [a4,d5]@2 g4 f#4, d3@2 ~ d3@3 ~ d3", // D5
  C: "[g4,d5] d4 g4 [g4,d5] d4 g4 [g4,d5] [d3,d4], e3@2 ~ e3@3 ~@2", // G5 D
  D: "[g4,d5]@2 d4@2 g4@2 [g4,d5]@2 d4@2 g4@2 [c3,g4,d5]@2 g4 f#4, c3@2 ~ c3@3 ~ d3", // G5 Csus2
  E: "[a4,d5] d4 a4 [a4,d5] d4 a4 [a4,d5] [d3,d4], d3@2 ~ d3@3 ~@2", // D5 D
  F: "[g4,d5] d4 g4 [g4,d5] d4 g4 [c3,g4,d5] [d3,d4], c3@2 ~ c3@3 ~@2", G: "[g3,g4,d5]@2 ~ [g4,d5]@3 ~@2, ~@3 g3@4 ~",
  H: "[d3,a4,d5]@2 ~ [a4,d5]@3 ~@2, ~@3 d3@4 ~", I: "[e3,g4,d5]@2 ~ [g4,d5]@3 ~@2, ~@3 e3@4 ~",
  J: "[c3,g4,d5]@2 ~ [g4,d5]@3 ~@2, ~@3 c3@4 ~", K: "[d3,a4,d5]@2 ~ [a4,d5]@3 [a4,d5] [d3,d4], ~@3 d3@4 ~",
  L: "[e3,g4,d5]@2 ~ [g4,d5]@3 [g4,d5] [d3,d4], ~@3 e3@4 ~", // Em7 G5 D
  M: "[c3,g4,d5]@2 ~ [a4,d5] g4 d4 [c3,a4,d5] [d3,g4], ~@3 c3@3 ~@2", // Csus2 D5 D7 G5
  N: "[d5,g5] g4 d5 ~@3 g3 g2, g2!3 ~, ~@3 [d5,g5]@2 [g4,d5]@3", // G5
  O: "[a4,d5,f#5] a4 d5 ~@3 d4 d3, d3!3 ~, ~@3 [a4,d5,f#5]@2 [a4,d5]@3", // D D5
  P: "[b4,e5,g5] g4 b4 [b4,e5,g5]@2 ~@2 d3, e3@3 e3@4 ~, ~@5 [b4,e5]@3", // Em E5
  Q: "[g4,c5,e5] g4 c5 ~ c3 c4 g3 c3, c3!2 ~@2, ~@3 [c5,g5]@2 [g4,c5]@3", // C C5
  R: "[e5,g5] b4 [e4,g4] [e3,b4,e5,g5]@2 [d3,a4,d5,f#5]@2 [c3,g4,c5,e5], e3 ~@3", S: "c3@2 c4@2 c3!2 c4@2, [g4,c5,e5]",
  T: "c3@2 c4@2 [c3,d5] [c3,c5] c4 c3, [c5,g5]@2 ~ g4", U: "[g4,c5,e5] g4 c5 [c3,g5] d5 c5 c4 c3, c3@3 ~ c4@2 g4@2",
  V: "[g2,b4,d5,g5]@2 g3@2 g2 [g2,g4] [g3,d5] [g2,g5], ~@2 [b4,d5,g5]@3 ~@3", // G G5 G
  W: "[d3,a4,d5,f#5]@2 d4@2 d3 [d3,a4] [d4,d5] [d3,f#5], ~@2 [a4,d5,f#5]@3 ~@3", // D D5 D
  X: "[e3,b4,e5,g5]@2 [e4,b4,e5,g5]@2 [e3,b4,e5,g5] [e3,g4] [e4,b4,e5] [e3,g4]", // Em E5 Em
  Y: "[c3,g4,c5,e5]@2 c4@2 c3 [c3,g4] [c4,g4,c5,e5] [c3,d5], ~@2 [g4,c5,e5]@3 ~@3", // C C5 C Csus2 C
  Z: "[c3,g4,c5,e5]@2 [c4,g4,c5,e5]@2 [c3,g4,c5,e5] [c3,g4] [c4,c5] [c3,d5]", // C C5 C Csus2
  AA: "[g4,c5,e5] g4 c5 [c3,g5] d5 c5 c4 c3, [c3,c4]@3 ~ c4@2 g4@2", AB: "[c3,g4,d5]@3 [c3,d4,a4,d5]@5",
  AC: "[g2,g3,g4,d5,g5]", // G5
})).s("gm_piano").gain(0.3)

stack(piano)