Strudelify

10000 Reasons (Bless The Lord)

JONAS MYRIN and MATT REDMAN

KeyG majorTempo73 bpm
0:00/0:00
// 10000 Reasons (Bless The Lord) — JONAS MYRIN and MATT REDMAN
// 73 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 18, 4/4 at bar 19, 2/4 at bar 21, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: ch 1 "Flute" named as a pipe, played on flute (its pizzicato strings patch is not one); ch 2 "B♭ Clarinet" named as a reed, played on clarinet (its tremolo strings patch is not one)
// note: duplicate parts dropped: ch 2 "B♭ Clarinet" clarinet (copy of ch 1 "Flute" flute)
// note: Transcription provider: pdmx. https://musescore.com/score/2582766; license: https://creativecommons.org/publicdomain/mark/1.0/
// note: Full arrangement: all 99 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(73/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [...]/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.

// other · flute
const flute = note(`<
  ~@3 A B C D@2 B E F@2 G H I J@2 K L M N O A B C D@2 B E F@2 G H P Q R S T M N O A B C D@2 B E U O ~@7 G H P Q V S T M
  N O A B C D@2 B E W@2 B C D@2 B E X@2 U Y X@2 ~@2 A B E X@2 Z@2 X@2
>`.pickRestart({
  A: "~@6 b4 d5", B: "e5@2 e5 d5 b4@2 ~@2", C: "a4 b4 a4 g4 e4@2 ~@2",
  D: "[e4@2 g4@2 d5@2 b4@6 g4@2 a4@9 ~@5 b4@2 d5@2]/2", E: "e5@4 f#5@4 b4@4 ~@3 g4",
  F: "[g4@2 a4@2 b4@2 a4@6 g4@2 g4@9 ~@9]/2", G: "~@7 d4", H: "g4@2 g4@2 g4@2 e4 d4", I: "f#4 g4!2 d4",
  J: "[~ d4 g4!2 g4@2 g4 a4@3 b4 b4@3 ~ g4]/2", K: "c5!3 b4 b4@2 a4 g4", L: "a4 g4 a4 b4 a4 g4 e4@2", M: "~@5 g4!3",
  N: "g4!3 a4 b4@2 a4@2", O: "g4 ~", P: "f#4@4 g4@4 g4@4 d4@3 d4", Q: "g4@2 g4@2 g4@2 g4!2", R: "a4@2 b4 b4@3 ~ g4",
  S: "c5@2 c5@2 b4 a4 g4 a4", T: "a4@4 b4@4 b4@4 a4 g4@3", U: "g4 a4 b4 a4@3 g4!2", V: "a4@2 b4 b4@3 ~@2",
  W: "[e4@2 a4@2 b4@2 d5@6 d5@2 d5@9 ~@5 b4@2 d5@2]/2", X: "[g4 a4 b4 a4@3 g4 g4@3 ~@6]/2",
  Y: "g4 a4 g4@6 ~@4 b4@2 a4@2", Z: "[g4 a4 b4 a4@3 b4 b4@3 ~@6]/2",
})).s("gm_flute").gain(0.3)

// other · violin
const violin = note(`<
  A B C D A B E@2 A F G H I J K J K J L@2 M N O P Q P R S T U H I J K J K J L@2 M N O P Q P R S T U V P Q P R S F W X Y
  Z Y Z AA AB@2 M N O P Q P R S T AC AD P Q P R S T U V U V W AE AF AE AG AH F U AI U AI AJ AK
>`.pickRestart({
  A: "c5 ~ d5 ~ b4@4", B: "a4 b4 a4 g4@5", C: "c5 ~ d5 ~ b4@2 ~@2", D: "a4", E: "[c5 ~ d5 b4@3 g4 a4@9]/2",
  F: "e5 f#5 b4@2", G: "e5 ~ e5 ~ d5@4", H: "c5@2 ~@2 d5@2 ~@2 b4@5 ~@3", I: "c5 ~ d5 ~ b4 ~ d5 ~",
  J: "e5@2 e5 ~ d5@2 d5 ~", K: "f#5@2 f#5 ~ g5@2 g5 ~", L: "[d5@2 d5 ~ b4@8 d5 ~ d5 ~]/2", M: "b4 ~ d5 ~ d5@2 d5 ~",
  N: "b4 ~ b4 ~ b4 ~ c5@2", O: "b4 ~ b4 ~ d5 ~ b4 ~", P: "e5 ~ e5 ~ d5 ~ d5 ~", Q: "d5 ~ d5 ~ b4 ~ b4 ~",
  R: "d5 ~ d5 ~ d5 ~@3", S: "e5 ~ e5 ~ e5 ~ e5 ~", T: "e5 f#5 b4!2", U: "c5 ~ c5 ~ a4@2 ~@2", V: "b4 ~ b4 ~ b4 ~ b4 ~",
  W: "c5 d5", X: "d5!4", Y: "e5!2 d5@2", Z: "d5!2 e5@2", AA: "e5!2 b5!2", AB: "[e4 c4 e4 c4 g4@8 d5 ~ d5 ~]/2",
  AC: "c5 ~ c5 ~ d5 ~ d5 ~", AD: "d5 ~ d5 ~ d5 ~ d5 ~", AE: "e5 g4 e5 d5 ~@4", AF: "a4@2 b4@2 a4@2 g4@7 g4 b4 d5",
  AG: "a4!2 a4@2", AH: "e5!4", AI: "b4!4", AJ: "c5 ~ c5 ~ a4@4", AK: "b4",
})).s("gm_violin").gain(0.3)

// other · violin
const violin_2 = note(`<
  A ~ B C A ~ D E A F G H I J K J K J L@2 M N O P Q P R P S T H U V K V K V W@2 M N O P Q P R P S T X P Q P R P F Y Z AA
  AB AA AB AC AD@2 M N O P Q P R P S AE AF P Q P R P S T X T X Y AG ~ AH E AI F T Z T Z AJ AK
>`.pickRestart({
  A: "g4 ~ g4 ~ g4@4", B: "g4 ~ g4 ~ g4@2 g4@2", C: "g4 ~", D: "g4 ~ g4 g4@3 ~@2", E: "g4!2 f#4@2", F: "c5 d5 g4@2",
  G: "c5 ~ c5 ~ a4@4", H: "g4@2 ~@2 g4@2 ~@2 g4@5 ~@3", I: "g4 ~ g4 ~ g4 ~ b4 g4", J: "c5@2 c5 ~ b4@2 a4 ~",
  K: "d5@2 d5 ~ e5@2 e5 ~", L: "[b4@2 b4 ~ g4@8 g4 ~ g4 ~]/2", M: "g4 ~ b4 ~ a4@2 a4 ~", N: "g4 ~ g4 ~ g4 ~ g4@2",
  O: "g4 ~ g4 ~ b4 ~ g4 ~", P: "c5 ~ c5 ~ b4 ~ b4 ~", Q: "a4 ~ a4 ~ g4 ~ g4 ~", R: "a4 ~ a4 ~ a4 ~@3", S: "c5 d5 g4!2",
  T: "g4 ~ g4 ~ f#4@2 ~@2", U: "g4 ~ g4 ~ g4 ~ b4 ~", V: "c5@2 c5 ~ b4@2 b4 ~", W: "[a4@2 a4 ~ g4@8 g4 ~ g4 ~]/2",
  X: "g4 ~ g4 ~ g4 ~ g4 ~", Y: "g4 a4", Z: "g4!4", AA: "c5!2 b4@2", AB: "a4!2 b4@2", AC: "c5!2 g5!2",
  AD: "[e4 c4 e4 c4 e4@8 g4 ~ g4 ~]/2", AE: "g4 ~ g4 ~ a4 ~ a4 ~", AF: "b4 ~ b4 ~ b4 ~ b4 ~", AG: "~@4 b4@3 ~",
  AH: "~@2 g4 ~", AI: "c5!2 b4!2", AJ: "g4 ~ g4 ~ f#4@4", AK: "g4",
})).s("gm_violin").gain(0.3)

// bass · cello · "Violoncello"
const bass = note(`<
  A B A C A B A C D E F G@2 H I H I H J@2 K L M N O N P Q R S G@2 H I H I H J@2 T L M N O N P Q R S G N O N P Q U V W H
  X H X Y Z@2 T L M N O N AA Q R AB AC N O N AA Q R AB AD AB AD V A B AE C AF U V AG V AG V AH
>`.pickRestart({
  A: "g2 g3", B: "d3@4 e2 b2 e3@2", C: "a2", D: "g2 e2", E: "g2 a2 b2@2", F: "g2 a2", G: "g3!2", H: "c2 g2", I: "d2 e2",
  J: "[f#2 e2@2 c2]/2", K: "g2 d2", L: "g2@12 g2 g2@2 g2", M: "g2@2 g2!2", N: "c2@3 c2 g2@3 g2", O: "f#2@3 f#2 e2@3 e2",
  P: "d2@3 d2 d2@3 d2", Q: "c2@3 c2 e2@3 e2", R: "c2@2 d2@2 e2@3 e2", S: "c2@3 c2 d2@3 c2", T: "g2 d3", U: "c2 d2 e2@2",
  V: "c2 d2", W: "g2!2", X: "f#2 e2", Y: "c3 e3", Z: "[c3 e2@2 c2]/2", AA: "d2@3 d2 d2@2 d2 ~", AB: "c2@3 c2 d2@3 d2",
  AC: "g2@3 g2 g2@2 g2@2", AD: "e2@3 e2 e2@2 e2@2", AE: "c2 g3", AF: "c2 e2", AG: "e2@3 e2 e2@4", AH: "g2",
})).s("gm_cello").gain(0.3)

// bass · cello · "Violoncello"
const bass_2 = note(`<
  A B A C A B A C D E F G@2 A H A H A I@2 J K L M N M O P Q R G@2 A H A H A I@2 S K L M N M O P Q R G M N M O P E F G A
  T A T U V@2 S K L M N M W P Q X Y M N M W P Q X Z X Z F A B G C D E F AA F AA F AB
>`.pickRestart({
  A: "c2 g2", B: "f#2@4 e2 b2 e3@2", C: "d2", D: "c2 e2", E: "c2 d2 e2@2", F: "c2 d2", G: "g2!2", H: "d2 e2",
  I: "[f#2 e2@2 c2]/2", J: "g2 d2", K: "g2@12 g2 g2@2 g2", L: "g2@2 g2!2", M: "c2@3 c2 g2@3 g2", N: "f#2@3 f#2 e2@3 e2",
  O: "d2@3 d2 d2@3 d2", P: "c2@3 c2 e2@3 e2", Q: "c2@2 d2@2 e2@3 e2", R: "c2@3 c2 d2@3 c2", S: "g2 d3", T: "f#2 e2",
  U: "c3 e3", V: "[c3 e2@2 c2]/2", W: "d2@3 d2 d2@2 d2 ~", X: "c2@3 c2 d2@3 d2", Y: "g2@3 g2 g2@2 g2@2",
  Z: "e2@3 e2 e2@2 e2@2", AA: "e2@3 e2 e2@4", AB: "g2",
})).s("gm_cello").gain(0.3)

stack(flute, violin, violin_2, bass, bass_2)