Strudelify

o the deep deep love of jesus

Ebenezer

KeyG majorTempo120 bpm
0:00/0:00
// o the deep deep love of jesus — Ebenezer
// 120 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/648336; license: https://creativecommons.org/publicdomain/mark/1.0/
// note: Full arrangement: all 16 bars on a 24-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 E D F G H I J K L D>".pickRestart({
  A: "[b3,e4]@3 e4 f#4 g4 [d#4,f#4]@3 e4@3, ~ b3 ~@2", // E5 D#m
  B: "[e4,f#4]@6 f#4@2 g4@2 a4@2 e4@5 f#4 [b3,e4]@6, ~@3 d#4@3 g4@2 ~@4", // Esus2 E5
  C: "[b3,b4]@6 a4@2 b4@2 [e4,c5]@2 f#4@5 a4 [e4,g4]@6, ~@3 d4@3 b4@2 ~@4", D: "e4@5 g4 [d#4,f#4]@6 e4@12, a4 ~@5",
  E: "[b3,b4]@6 a4@2 b4@2 c5@2 f#4@5 a4 [e4,g4]@6, ~@3 d4@3 b4@2 ~@4", // B Em
  F: "[d4,b4]@3 g4 a4 b4 [d4,a4]@3 [d4,a4]@3, ~ d4 ~@2", G: "[b3,g4]@3 e4 f#4 g4 [e4,f#4]@3 f#4@3",
  H: "e4@3 e4 f#4 g4 [e4,a4]@3 [d4,a4]@3, ~ b3 ~@2", I: "[b3,g4]@3 a4 g4 a4 [d#4,b4]@6, ~ e4 ~@2",
  J: "e4@3 e4 f#4 g4 [d#4,f#4]@3 e4@3", K: "[e4,f#4]@6 f#4@2 g4@2 a4@2 e4@5 f#4 e4@6, ~@3 d#4@3 g4@2 ~@4",
  L: "[d4,b4]@6 a4@2 b4@2 c5@2 d4@5 a4 [e4,g4]@6, ~@3 d4@3 b4@2 ~@4", // G Em
})).s("gm_piano").gain(0.3)

// chords · piano
const piano_2 = note("<A B C D A B E D F G H I J B K D>".pickRestart({
  A: "[e3,g3] [g2,b3] [b2,b3] [c3,g3]", B: "[a2,c4]@6 [b2,b3]@6 e3@5 a3 [e3,g3]@6, ~@3 b3 ~@2",
  C: "[g3,d4]@2 [f#3,a3]!2 [d#3,b3]@2 [e3,b3]@2", D: "a2@5 b3 [b2,a3]@6 [e3,g3]@12, c4 ~@5",
  E: "[g3,d4]@3 [f#3,a3]!2 [e3,g3] [d#3,b3]@3 [e3,b3]@3", F: "[g2,g3] [b2,g3] [d3,g3] [d3,f#3]",
  G: "[e3,g3] [g2,b3] [b2,b3]!2", H: "e3 [d3,g3] [c3,g3] [d3,f#3]", I: "e3 d3 [c3,e3]@2 [b2,f#3]@4, g3 ~@3",
  J: "[c3,e3] [g2,b3] [b2,b3] [c3,g3]", K: "g3@6 f#3@2 g3@2 a3@2 g2@5 f#3 [c3,e3]@6, ~@3 d3@3 g3@2 ~@4",
})).s("gm_piano").gain(0.3)

stack(piano, piano_2)