Strudelify

How Great Thou Art! Wood Instrumental

Kyle Curry

KeyF majorTempo120 bpm
0:00/0:00
// How Great Thou Art! Wood Instrumental — Kyle Curry
// 120 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/1947351; license: https://creativecommons.org/publicdomain/mark/1.0/
// note: Full arrangement: all 51 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 · [...]/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 · oboe
const oboe = note("<~@17 A B C@2 D E F@2 ~ G H@2 ~ I@4 J ~@2 K L M N ~@6 O@4>".pickRestart({
  A: "c4!2 f4 a4", B: "bb4@2 c5@3 bb4 bb4@2", C: "[f4 bb4 d5@2 bb4@2 a4@10]/2", D: "~@3 bb4", E: "bb4 a4 g4 c4",
  F: "[g4 bb4 g4 a4@3 bb4 c5]/2", G: "a5@2 g5 f5", H: "[e5 f5 d5 c5@5]/2",
  I: "[e5@2 e5@2 d5@2 bb4@4 c5@4 f5@4 g4@4 f4@6 bb4 ~ d5 ~]/4", J: "~@4 c5 ~ bb4 ~", K: "g4!2 a4 c5", L: "d5 c5 bb4 a4",
  M: "d5 eb5 c5 d5", N: "d5!2 c5 bb4", O: "[eb5 eb4 c4 bb3@13]/4",
})).s("gm_oboe").gain(0.45)

// other · clarinet · "B♭ Clarinet"
const clarinet = note(`<
  ~ A@2 B@2 C@2 D@2 E@2 B@2 F G H@2 I J K@2 ~@5 L M@2 ~@4 N O P@2 ~ Q R S ~@4 T U@2 V@3
>`.pickRestart({
  A: "[c5@2 c5@3 c5 a4@6 c5@2 c5@2]/2", B: "[c5 d5!2 bb4@2 d5@3]/2", C: "[d5@2 d5@3 d5 c5@6 a4@2 c5@2]/2",
  D: "[c5 bb4!2 a4@5]/2", E: "[c5@2 c5@3 bb4 a4@6 c5@2 c5@2]/2", F: "d5!3 c5", G: "a4 f4 d5 c5",
  H: "[c5 bb4 g4 f4@3 c4 f3]/2", I: "c4!2 f4 c4", J: "c5@2 a4@3 g4 f4@2", K: "[a4 f4 g4@2 a4@2 a4@6 bb3@2 a3@2]/2",
  L: "c5@2 f4@2 f4 a4 g4@2", M: "[g4 a4 bb4 c5 d5 e5 f5@6 c5@2 a4@2]/2", N: "f4!2 bb4 d5", O: "d5 eb5 d5@2 c5@2 bb4@2",
  P: "[bb4 c5 bb4@2 g4@2 f4@10]/2", Q: "c5!2 bb4 a4", R: "g4 f4 d4 bb3", S: "d4!2 f4 bb4", T: "d5!2 bb4 c5",
  U: "[bb4 a4 d5 eb5@2 a4@2 bb4]/2", V: "[f4 g4 eb4 f4@4 bb3@5]/3",
})).s("gm_clarinet").gain(0.4)

// other · french horn · "Horn in F"
const french_horn = note("<A B ~@15 C@2 D@2 ~@13 E ~@14 F@2>".pickRestart({
  A: "f3@2 a3 c4", B: "f4", C: "[c4@2 c4@2 f4@2 a4@4 a4@3 g4 f4@2]/2", D: "[f4 e4 f4@2 d4@2 c4@6 c4@2 f4@2]/2",
  E: "~@4 eb4 ~ d4 ~", F: "d4/2",
})).s("gm_french_horn").gain(0.45)

// other · bassoon
const bassoon = note("<A B C D E F@2 G H I@3 J ~@4 K@2 L@2 ~@21 M N O ~@2 P Q@3>".pickRestart({
  A: "c3@2 f3 g3", B: "a3", C: "c3!2 a2 bb2", D: "bb2 d3!2 bb2", E: "a2 g2@3", F: "[g2 bb2 d3 c3@3 a2 c3]/2",
  G: "c3 bb2!2 a2", H: "g2 f2 c2 f2", I: "[~@3 f2@3 f2 bb2@2 bb2 a2 g2]/3", J: "g2 d2@3",
  K: "[c3@2 c3@2 f3@2 a3@4 a3@3 g3 f3@2]/2", L: "[f3 e3 f3@2 d3@2 c3@6 a2@2 f2@2]/2", M: "f2@2 bb2 d3",
  N: "c3 d3 bb2 f2", O: "e2 f2!2 bb2", P: "a2 bb2 d3 c3", Q: "[bb2 a2 g2 f2@2 f2@2 bb2@5]/3",
})).s("gm_bassoon").gain(0.2)

stack(oboe, clarinet, french_horn, bassoon)