Strudelify

How Great Thou Art

Sweden

KeyB♭ majorTempo60 bpm
0:00/0:00
// How Great Thou Art — Sweden
// 60 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (3/8 at bar 1, 4/4 at bar 2, 5/8 at bar 9, 3/8 at bar 9, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: ch 1 "B♭ Trumpet" named as a brass, played on trumpet (its viola patch is not one); ch 3 "B♭ Trumpet" named as a brass, played on trumpet (its tremolo strings patch is not one); ch 5 "Horn in F" named as a brass, played on brass section (its pizzicato strings patch is not one); ch 6 "Trombone" named as a brass, played on trombone (its tremolo strings patch is not one); ch 7 "Tuba" named as a brass, played on tuba (its piano patch is not one)
// note: duplicate parts dropped: ch 5 "Horn in F" brass section (copy of ch 3 "B♭ Trumpet" trumpet); ch 9 "Alto Saxophone" alto sax (copy of ch 3 "B♭ Trumpet" trumpet); ch 11 "Tenor Saxophone" tenor sax (copy of ch 6 "Trombone" trombone); ch 12 "B♭ Clarinet" clarinet (copy of ch 8 "Flute" flute); ch 4 "Violoncello" cello (copy of ch 13 "Bass Clarinet" clarinet)
// note: Transcription provider: pdmx. https://musescore.com/score/5687880; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 17 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 part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// chords · trumpet · "B♭ Trumpet"
const trumpet = note("<A B C D E B C D F G H I F G J K L>".pickRestart({
  A: "~@5 [bb3,f4]!3", B: "[f3,d4]@3 [bb3,f4] [a3,f4] [f3,f4] [bb3,g4]!2", C: "[g3,eb4]@2 [bb3,g4]@3 [bb3,g4]!3",
  D: "[bb3,f4]@3 [f3,d4] [a3,f4]!2 [g3,eb4] [f3,eb4]", E: "[f3,d4]@5 [bb3,f4]!3", F: "[f3,d4]@5 [bb3,f4]!2 [bb3,bb4]",
  G: "[bb3,d5]@3 [bb3,c5] [eb4,bb4] [eb4,a4] [eb4,bb4] [bb3,g4]", H: "[bb3,f4]@5 [f3,bb4]!2 [c4,a4]",
  I: "[f3,c4]@5 [a3,eb4] [bb3,g4] [a3,f4]", J: "[bb3,f4]@5 [bb3,bb4] [f3,a4] [bb3,bb4]",
  K: "[bb3,c5]@5 [b3,d5] [c4,eb5] [c4,a4]", L: "[bb3,bb4]@5 ~@3",
})).s("gm_trumpet").gain(0.3)

// other · trombone
const trombone = note("<A B C D E B C D E F G H E F I J K>".pickRestart({
  A: "~@5 bb3!3", B: "f3@3 bb3 a3 f3 bb3!2", C: "g3@2 bb3@3 bb3!3", D: "bb3@3 f3 a3!2 g3 f3", E: "f3@5 bb3!3",
  F: "bb3@3 bb3 eb4!3 bb3", G: "bb3@5 f3!2 c4", H: "f3@5 a3 bb3 a3", I: "bb3@5 bb3 f3 bb3", J: "bb3@5 b3 c4!2",
  K: "bb3@5 ~@3",
})).s("gm_trombone").gain(0.3)

// chords · tuba
const tuba = note("<A B C D E B C D F G H I F G J K L>".pickRestart({
  A: "~@5 [bb2,bb3,d4,f4]!3", B: "[bb2,f3,bb3,d4]@3 [bb2,bb3,d4,f4] [c3,a3,eb4,f4] [d3,f3,bb3,f4] [eb3,bb3,eb4,g4]!2",
  C: "[eb3,g3,bb3,eb4]@2 [eb3,bb3,eb4,g4]@3 [eb3,bb3,eb4,g4]!2 [e3,bb3,db4,g4]", // Eb Edim
  D: "[f3,bb3,d4,f4]@3 [f3,bb3,d4] [f2,a3,d4,f4]!2 [f2,g3,c4,eb4] [f2,f3,a3,eb4]", E: "[bb2,f3,d4]@5 [bb2,bb3,d4,f4]!3",
  F: "[bb2,f3,d4]@5 [bb2,bb3,d4,f4]!2 [bb2,bb3,d4,bb4]", // Bb
  G: "[bb2,bb3,f4,d5]@3 [d3,bb3,ab4,c5] [eb3,eb4,g4,bb4] [eb3,eb4,gb4,a4] [eb3,eb4,g4,bb4] [eb3,bb3,eb4,g4]", // Bb Dm7b5 Eb Ebdim Eb
  H: "[bb2,bb3,f4]@5 [bb2,f3,d4,bb4] [f3,d4,bb4] [f3,c4,eb4,a4]", // Bb5 Bb F7
  I: "[f2,f3,c4]@5 [f2,a3,c4,eb4] [f2,bb3,eb4,g4] [f2,a3,c4,f4]", // F5 F7 Eb F
  J: "[bb2,bb3,f4]@5 [bb2,bb3,d4,bb4] [c3,f3,eb4,a4] [d3,bb3,f4,bb4]", // Bb5 Bb F7 Bb
  K: "[eb3,bb3,c5]@5 [d3,b3,f4,d5] [c3,c4,g4,eb5] [f3,c4,eb4,a4]", L: "[bb2,bb3,bb4]@5 ~@3",
})).s("gm_tuba").gain(0.3)

// other · flute
const flute = note("<A B C D E B C D F G H I F G J K L>".pickRestart({
  A: "~@5 f4!3", B: "d4@3 f4!3 g4!2", C: "eb4@2 g4@3 g4!3", D: "f4@3 d4 f4!2 eb4!2", E: "d4@9 ~ f4@2 f4@2 f4@2",
  F: "d4@9 ~ f4@2 f4@2 bb4@2", G: "d5@3 c5 bb4 a4 bb4 g4", H: "f4@9 ~ bb4@2 bb4@2 a4@2", I: "c4@9 ~ eb4@2 g4@2 f4@2",
  J: "f4@9 ~ bb4@2 a4@2 bb4@2", K: "c5@9 ~ d5@2 eb5@2 a4@2", L: "bb4@9 ~@7",
})).s("gm_flute").gain(0.3)

// bass · clarinet · "Bass Clarinet"
const bass = note("<A B C D E B C D E F G H E F I J K>".pickRestart({
  A: "~@5 bb2!3", B: "bb2@3 bb2 c3 d3 eb3!2", C: "eb3@2 eb3@3 eb3!2 e3", D: "f3@3 f3 f2!4", E: "bb2@5 bb2!3",
  F: "bb2@3 d3 eb3!4", G: "bb2@5 bb2 f3!2", H: "f2@5 f2!3", I: "bb2@5 bb2 c3 d3", J: "eb3@5 d3 c3 f3", K: "bb2@5 ~@3",
})).s("gm_electric_bass_finger").gain(0.3)

// chords · violin
const violin = note("<A B C D E B C D F G H I F G J K L>".pickRestart({
  A: "~@5 [d4,f4]!3", B: "[bb3,d4]@3 [d4,f4] [eb4,f4] [bb3,f4] [eb4,g4]!2",
  C: "[bb3,eb4]@2 [eb4,g4]@3 [eb4,g4]!2 [db4,g4]", D: "[d4,f4]@3 [bb3,d4] [d4,f4]!2 [c4,eb4] [a3,eb4]",
  E: "d4@5 [d4,f4]!3", F: "d4@5 [d4,f4]!2 [d4,bb4]", G: "[f4,d5]@3 [ab4,c5] [g4,bb4] [gb4,a4] [g4,bb4] [eb4,g4]",
  H: "f4@5 [d4,bb4]!2 [eb4,a4]", I: "c4@5 [c4,eb4] [eb4,g4] [c4,f4]", J: "f4@5 [d4,bb4] [eb4,a4] [f4,bb4]",
  K: "c5@5 [f4,d5] [g4,eb5] [eb4,a4]", L: "bb4@5 ~@3",
})).s("gm_violin").gain(0.3)

stack(trumpet, trombone, tuba, flute, bass, violin)