Strudelify

What a Friend We Have in Jesus

Joseph M. Scriven

KeyB♭ majorTempo60 bpm
0:00/0:00
// What a Friend We Have in Jesus — Joseph M. Scriven
// 60 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/1539221; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 24 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(60/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 · contrabass · "Violins 1"
const contrabass = note("<A B C D A B E F G H I J K L M N O P Q R G H S N>".pickRestart({
  A: "f5@3 f5 g5 f5 d5 bb4", B: "bb4 g4", C: "f4@3 bb4 d5 bb4 f5 d5", D: "c5", E: "f4@3 bb4 d5 c5 bb4 a4", F: "bb4",
  G: "[bb1,f5]@3 [bb1,f5] [bb1,g5] [f1,f5] [bb1,d5] [f1,bb4]", H: "[bb1,bb4] [bb1,g4]",
  I: "f4@3 bb4 d5 bb4 f5 d5, a1!2", J: "f1 a1, c5", K: "f5@3 f5 g5 f5 d5 bb4, bb1 f1", L: "[g1,bb4] [bb1,g4]",
  M: "f4@3 bb4 d5 c5 bb4 a4, f1!2", N: "[f1,bb4]", O: "c5@3 b4 c5 d5 eb5 c5, f1!2", P: "[f1,d5] [bb1,f5]",
  Q: "g5@3 g5 f5 d5 eb5 d5, bb1!2", R: "[a1,c5]", S: "f4@3 bb4 d5 c5 bb4 a4, a1!2",
})).s("gm_contrabass").gain(0.3)

// other · string ensemble 1 · "Violins 2"
const string_ensemble_1 = note("<A B C D A E F G A B C D A E F G H I J D A E F G>".pickRestart({
  A: "bb4@2 bb4@2 bb4 a4 bb4 f4", B: "eb4 g4", C: "f4@2 bb4@2 d5 bb4 a4 bb4", D: "a4", E: "eb4!2",
  F: "f4@2 f4@2 g4 f4!2 eb4", G: "d4", H: "f4!2", I: "bb4 d5", J: "eb5!2 d5 bb4",
})).s("gm_string_ensemble_1").gain(0.3)

// other · string ensemble 1 · "Violas"
const string_ensemble_1_2 = note("<~@8 A B C D E F G H I J K D E F G H>".pickRestart({
  A: "bb3@3 bb3!2 a3 d4 bb3", B: "g3 eb3", C: "f3@3 bb3 d4 bb3 a3 bb3", D: "a3 f3", E: "d4 bb3 eb4 d4", F: "bb3 eb3",
  G: "f3!2", H: "bb3", I: "f3@2 f3 a3", J: "bb3 d4", K: "eb4@3 eb4 d4 bb3 a3 bb3",
})).s("gm_string_ensemble_1").gain(0.3)

// other · string ensemble 1 · "Violoncellos"
const string_ensemble_1_3 = note("<~@8 A B C D E F C G C H I J A B C G>".pickRestart({
  A: "f3@3 f3 g3 f3 d3 bb2", B: "eb2!2", C: "f2!2", D: "a2 f2", E: "bb2 f2", F: "eb2 g2", G: "bb2", H: "bb2 d3",
  I: "eb3 d3", J: "f2",
})).s("gm_string_ensemble_1").gain(0.3)

stack(contrabass, string_ensemble_1, string_ensemble_1_2, string_ensemble_1_3)