Strudelify

Down in the River to Pray

Misc Traditional

KeyB♭ majorTempo120 bpm
0:00/0:00
// Down in the River to Pray — Misc Traditional
// 120 bpm, 2/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (1/4 at bar 1, 2/4 at bar 2) are rendered on a constant 2/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/4474591; license: https://creativecommons.org/publicdomain/mark/1.0/
// note: Full arrangement: all 190 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/2)

// 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 · trumpet · "Trumpet 1"
const trumpet = note(`<
  ~@50 A@2 B C@5 A@2 B D E F ~@2 G H E I J K L M N O P Q R S T U@2 V W X V Y Z AA AB V W X V N AC AD@2 G H E I J K L M N
  O P Q R S T U@2 S L AE D AF AG I AH AI L AE D M AJ AD@2 ~@17 A@2 B AK@2 AL@2 AM A@2 B D E AJ AN@4 G H E I AM K L M N O
  P Y Q S T AD@2 ~ AL@2 ~ AO@2
>`.pickRestart({
  A: "[bb4@3 ab4]/2", B: "c5", C: "[bb4 ab4@19]/5", D: "bb4 ab4@3", E: "ab4@2 ab4!2", F: "ab4!2 ~@2", G: "~ eb4",
  H: "eb4 f4", I: "ab4!2 ab4@2", J: "ab4 ~", K: "bb4!3 c5", L: "bb4 ab4", M: "c5@2 bb4 ab4", N: "ab4@2 f4 eb4",
  O: "eb4 c4", P: "eb4@3 f4", Q: "ab4 c5", R: "c5 bb4 ab4@2", S: "bb4", T: "ab4 ab4@2 f4", U: "[eb4@3 ~]/2", V: "eb4",
  W: "eb4!2", X: "ab4!2", Y: "ab4 f4", Z: "f4", AA: "f4 f4@3", AB: "c4", AC: "eb4!2 db4@2", AD: "eb4/2", AE: "c5 eb5",
  AF: "c5 bb4@3", AG: "ab4@2 ab4 f4", AH: "f4 eb4@3", AI: "bb4 bb4@3", AJ: "ab4!2 f4 eb4", AK: "[bb4 ab4@7]/2",
  AL: "ab4/2", AM: "ab4", AN: "eb4/4", AO: "eb5/2",
})).s("gm_trumpet").gain(0.3)

// other · trumpet · "Trumpet 2"
const trumpet_2 = note(`<
  ~@50 A@2 B C@5 A@2 B D E F ~@2 G H E I J K L M N O P Q R S T U@2 V W X Y Z B AA D V W X Y AB AC AD@2 G H E I J K L M N
  AE P Q R S AF AG@2 AH AI AJ AH AK AL AM AN AO AI AJ AH M AP AQ@2 ~@17 A@2 B AR@2 AD@2 AH A@2 B D E I AS@4 ~@2 AT AU B
  AV W AB M AW AX AY AZ V BA AD@2 ~ AD@2 ~ BB@2
>`.pickRestart({
  A: "[g4@3 f4]/2", B: "ab4", C: "[f4 eb4@19]/5", D: "f4 eb4@3", E: "eb4@2 eb4!2", F: "eb4!2 ~@2", G: "~ eb4",
  H: "eb4 f4", I: "eb4!2 eb4@2", J: "eb4 ~", K: "f4!3 ab4", L: "f4 eb4", M: "ab4@2 f4 eb4", N: "eb4 db4", O: "c4 ab3",
  P: "c4@3 db4", Q: "eb4 ab4", R: "ab4 f4 eb4@2", S: "f4", T: "f4 f4@2 f4", U: "[eb4@3 ~]/2", V: "bb4", W: "bb4 ab4",
  X: "c5 eb5", Y: "bb4 ab4@3", Z: "c5 bb4", AA: "ab4 ab4@3", AB: "c5@2 bb4 ab4", AC: "ab4!2 f4 eb4", AD: "eb4/2",
  AE: "c4!2", AF: "f4 f4@2 db4", AG: "[c4@3 ~]/2", AH: "eb4", AI: "eb4!2", AJ: "ab4!2", AK: "ab4 f4@3", AL: "f4@2 f4!2",
  AM: "f4!2 f4@2", AN: "c4", AO: "eb4 eb4@3", AP: "eb4!2 db4@2", AQ: "ab4/2", AR: "[f4 eb4@7]/2", AS: "eb4/4",
  AT: "ab4@2 ab4!2", AU: "ab4!2 ab4@2", AV: "bb4!3 c5", AW: "eb4 c4", AX: "eb4@3 f4", AY: "ab4 f4", AZ: "ab4 c5",
  BA: "ab4 ab4@2 f4", BB: "bb4/2",
})).s("gm_trumpet").gain(0.3)

// other · french horn · "Horn in F"
const french_horn = note(`<
  ~@33 A B C D E F G H I J K L M N O P@2 ~@18 Q R S T U V H L W X Y Z AA AB@2 ~@18 Q R S T U V AC AD W X Y Z AE AF@2 N
  AG AH AI AJ AK AL E AM AG AN AI AO AP AQ@2 ~@2 AR@7 AS@8 AT@2 AU AV@2 AW@2 Z AT@2 AU@2 H D AX@4 ~@2 C D E F G H I J K
  L M N O AY@2 ~ AV@2 ~ AZ@2
>`.pickRestart({
  A: "~ eb3", B: "eb3 f3", C: "ab3@2 ab3!2", D: "ab3!2 ab3@2", E: "ab3", F: "bb3!3 c4", G: "bb3 ab3", H: "c4@2 bb3 ab3",
  I: "ab3@2 f3 eb3", J: "eb3 c3", K: "eb3@3 f3", L: "ab3 f3", M: "ab3 c4", N: "bb3", O: "ab3 ab3@2 f3",
  P: "[eb3@3 ~]/2", Q: "c4@2 c4!2", R: "c4!2 c4@2", S: "c4 ~", T: "db4!3 eb4", U: "db4 c4", V: "eb4@2 db4 c4",
  W: "ab3@3 bb3", X: "c4 eb4", Y: "eb4 db4 c4@2", Z: "db4", AA: "db4 db4@2 db4", AB: "[c4@3 ~]/2", AC: "c4@2 bb3 g3",
  AD: "ab3!2", AE: "db4 db4@2 ab3", AF: "[ab3@3 ~]/2", AG: "bb3 c4", AH: "eb4!2", AI: "db4 c4@3", AJ: "eb4 db4@3",
  AK: "db4@2 db4!2", AL: "db4!2 db4@2", AM: "bb3 bb3@3", AN: "eb4 ab4", AO: "eb4@2 db4!2", AP: "db4!2 bb3 ab3",
  AQ: "ab3/2", AR: "eb4/7", AS: "f4/8", AT: "[eb4@3 db4]/2", AU: "c4", AV: "c4/2", AW: "db4/2", AX: "ab3/4",
  AY: "eb3/2", AZ: "g3/2",
})).s("gm_french_horn").gain(0.3)

// other · trombone · "Euphonium 2"
const trombone = note(`<
  ~@17 A B C D E F G H A B C D I J K@2 ~@50 A L M N O P Q F A L M N R S T@2 ~@2 U V W X Y Z AA AB AC AD AE AF AG AH@2 AI
  AJ AK H AL AM AN AI AO AP AQ AR AS AT AU@2 ~@29 AS AV AW@4 ~@2 AX AY F AZ B I Z BA BB BC BD A BE K@2 ~ BF@2 ~ BG@2
>`.pickRestart({
  A: "bb3", B: "bb3 ab3", C: "c4 eb4", D: "bb3 ab3@3", E: "c4 bb3", F: "ab3", G: "ab3 ab3@3", H: "f3 eb3@3",
  I: "c4@2 bb3 ab3", J: "ab3!2 f3 eb3", K: "eb3/2", L: "bb3 c4", M: "eb4!2", N: "db4 c4@3", O: "eb4 db4", P: "db4",
  Q: "db4 db4@3", R: "eb4@2 db4!2", S: "db4!2 db4@2", T: "eb4/2", U: "eb3@2 eb3!2", V: "eb3!2 eb3@2", W: "eb3 ~",
  X: "f3!3 ab3", Y: "f3 eb3", Z: "ab3@2 f3 eb3", AA: "eb3 db3", AB: "c3 f3", AC: "c3@3 db3", AD: "eb3 g3",
  AE: "g3 f3 eb3@2", AF: "f3", AG: "f3 f3@2 db3", AH: "[c3@3 ~]/2", AI: "eb3", AJ: "eb3!2", AK: "ab3!2", AL: "ab3 f3@3",
  AM: "f3@2 f3!2", AN: "f3!2 f3@2", AO: "bb2 bb2@3", AP: "bb2 c3", AQ: "eb3 ab3", AR: "ab2", AS: "eb3@2 db3!2",
  AT: "db3!2 bb2@2", AU: "ab3/2", AV: "db3!2 db3@2", AW: "db3/4", AX: "ab3@2 ab3!2", AY: "ab3!2 ab3@2", AZ: "bb3!3 c4",
  BA: "eb3 c3", BB: "eb3@3 f3", BC: "ab3 f3", BD: "ab3 c4", BE: "ab3 ab3@2 f3", BF: "c3/2", BG: "g2/2",
})).s("gm_trombone").gain(0.4)

// other · trombone · "Euphonium 2" · soft notes
const trombone_soft = note("<~@35 A@8 ~@7 A@8 ~@4 B C ~@68 A@8 ~ D@8 E@3 F@2 G@2 H E@3 I ~@29>".pickRestart({
  A: "eb3/8", B: "db3@2 db3!2", C: "db3!2 ~@2", D: "db3/8", E: "eb3/3", F: "eb3/2", G: "f3/2", H: "f3", I: "eb3",
})).s("gm_trombone").gain(0.2)

// bass · tuba
const bass = note(`<
  ~@17 A B C D E F G H A B C D I J K@2 ~@68 L M N O P Q R E S T U V W X@2 Y Z AA AB AC AD AE H AF Z AA AB AG AH AI@2
  ~@29 AJ AK AL@4 ~@2 AJ AK AM AN AO AP AQ AR AS E C AT AU K@2 ~ AI@2 ~ AV@2
>`.pickRestart({
  A: "g2", B: "g2 f2", C: "ab2 c3", D: "f2 eb2@3", E: "ab2 f2", F: "f2", G: "eb2 eb2@3", H: "c2", I: "f2@2 f2 eb2",
  J: "eb2!2 db2@2", K: "eb2/2", L: "c3@2 c3!2", M: "c3!2 c3@2", N: "c3 ~", O: "db3!3 eb3", P: "db3 c3",
  Q: "eb3@2 db3 c3", R: "c3 bb2", S: "ab2@3 bb2", T: "c3 eb3", U: "eb3 db3 c3@2", V: "db3", W: "db3 db3@2 bb2",
  X: "[ab2@3 ~]/2", Y: "bb1", Z: "bb1 c2", AA: "eb2 ab2", AB: "ab1", AC: "eb2 db2@3", AD: "db2@2 db2!2",
  AE: "db2!2 db2@2", AF: "bb1 bb1@3", AG: "eb2@2 db2!2", AH: "db2!2 bb1@2", AI: "ab1/2", AJ: "ab2@2 ab2!2",
  AK: "ab2!2 ab2@2", AL: "ab2/4", AM: "ab2", AN: "bb2!3 c3", AO: "bb2 ab2", AP: "c3@2 bb2 ab2", AQ: "ab2@2 f2 eb2",
  AR: "eb2 c2", AS: "eb2@3 f2", AT: "bb2", AU: "ab2 ab2@2 f2", AV: "eb1/2",
})).s("gm_tuba").gain(0.4)

// bass · tuba · soft notes
const bass_soft = note("<~@35 A@8 ~@7 A@8 ~@4 B C ~@68 A@8 ~@9 D@3 E@4 F D@3 F ~@6 G H ~@21>".pickRestart({
  A: "ab2/8", B: "ab2@2 ab2!2", C: "ab2!2 ~@2", D: "ab2/3", E: "ab2/2", F: "ab2", G: "~ eb2", H: "eb2 f2",
})).s("gm_tuba").gain(0.2)

stack(trumpet, trumpet_2, french_horn, trombone, trombone_soft, bass, bass_soft)

More by Misc Traditional