Strudelify

We Shall overcome

Charles Albert Tindley

KeyC majorTempo60 bpm
0:00/0:00
// We Shall overcome — Charles Albert Tindley
// 60 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 1 "Flute 1" named as a pipe, played on flute (its tuba patch is not one)
// note: duplicate parts dropped: ch 9 "Baritone Saxophone" baritone sax (copy of ch 3 "Bassoon 1" bassoon); ch 11 "B♭ Trumpet 1" trumpet (copy of ch 4 "B♭ Clarinet 1" clarinet); ch 7 "Alto Saxophone 1" alto sax (copy of ch 5 "B♭ Clarinet 3" clarinet); ch 13 "B♭ Trumpet 2" trumpet (copy of ch 5 "B♭ Clarinet 3" clarinet); ch 15 "F Horn 1 & 2" french horn (copy of ch 5 "B♭ Clarinet 3" clarinet); ch 16 "Trombone 1" trombone (copy of ch 8 "Tenor Saxophone" tenor sax)
// note: Transcription provider: pdmx. https://musescore.com/score/5421258; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 16 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 · [...]/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.

// chords · flute · "Flute 1"
const flute = note("<A B C D E F G H I J K L M N O@2>".pickRestart({
  A: "g5!2 a5!2, g3 a3", B: "g5@3 f5 [g3,e5]@4, g3 ~", C: "g5!2 a5!2, e3 f3", D: "g5@3 f5 [g3,e5]@4, e3 ~",
  E: "g5!2 [c4,a5] [b3,b5], c4 ~", F: "[a3,c6] [a3,d6]", G: "g3@2 ~ a5, b5@11 ~@5, ~ a3",
  H: "b3!2 [a3,a5] [f3,b5], g5 ~", I: "[e3,c6]@2 b5 a5, ~ f3", J: "e3!2, g5@15 ~", K: "f3!2 [b3,g5] [b3,f5], a5 ~",
  L: "a3!2, e5@15 ~", M: "[c4,g5]!2 [a3,c5] [a3,f5]", N: "[g3,e5] [f3,d5]", O: "[e3 f3 e3@2, c5@15 ~]/2",
})).s("gm_flute").gain(0.2)

// chords · tuba · "Oboe 1"
const tuba = note("<A B C B D E F G H I J K L M N@2>".pickRestart({
  A: "g5!2 a5!2, c3 f3", B: "g5@3 f5 [g2,e5]@4, c3 ~", C: "g5!2 a5!2, c3 f2", D: "g5!2 [f2,a5] [g2,b5], c3 ~",
  E: "[a2,c6] [d2,d6]", F: "g2@2 ~ a5, b5@3 ~, ~ d2", G: "g2 d2 a5 b5, g5 g1", H: "[c2,c6]@2 b5 a5, ~ f2",
  I: "c2@2 g2 c2, g5", J: "[f2,a5]@2 g5 f5, ~ g2", K: "a2 e2 a1@2, e5", L: "[c2,g5]!2 [f2,c5] [f2,f5]",
  M: "[g2,e5] [g2,d5]", N: "[c3 f2 c3@2, c5]/2",
})).s("gm_tuba").gain(0.2)

// other · bassoon · "Bassoon 1"
const bassoon = note("<A B C B D E F G H I J K L M C N>".pickRestart({
  A: "c3 f3", B: "c3 g2", C: "c3 f2", D: "c3@2 f2 g2", E: "a2 d2", F: "g2 d2", G: "g2 d2 g2@2", H: "c2 f2",
  I: "c2@2 g2 c2", J: "f2 g2", K: "a2 e2 a2@2", L: "c2!2 f2!2", M: "g2!2", N: "c3",
})).s("gm_bassoon").gain(0.2)

// other · clarinet · "B♭ Clarinet 1"
const clarinet = note("<A B A B C D E F G H I J K L M@2>".pickRestart({
  A: "g4!2 a4!2", B: "g4@3 f4 e4@4", C: "g4!2 a4 b4", D: "c5 d5", E: "b4@3 a4", F: "g4@2 a4 b4", G: "c5@2 b4 a4",
  H: "g4", I: "a4@2 g4 f4", J: "e4", K: "g4!2 c4 f4", L: "e4 d4", M: "c4/2",
})).s("gm_clarinet").gain(0.15)

// other · clarinet · "B♭ Clarinet 3"
const clarinet_2 = note("<A B C B D E F G H C I C J K L M>".pickRestart({
  A: "e4 c4", B: "e4@3 d4 c4@4", C: "c4!2", D: "e4@2 f4 d4", E: "e4 [c4,f#4]", F: "d4 [c4,f#4]", G: "d4!2 c4 d4",
  H: "e4 a3", I: "c4!2 d4!2", J: "e4!2 c4!2", K: "c4 b3", L: "g3 a3", M: "g3",
})).s("gm_clarinet").gain(0.2)

// bass · clarinet · "Bass Clarinet"
const bass = note("<A B C B D E F G C H I J K L C M>".pickRestart({
  A: "c3 f3", B: "c3 g2", C: "c3 f2", D: "c3@2 f2 g2", E: "a2 d2", F: "g2 d2", G: "g2 d2 g2@2", H: "c3@2 g2 c3",
  I: "f2 g2", J: "a2 e2 a2@2", K: "c3!2 f2!2", L: "g2!2", M: "c3",
})).s("gm_electric_bass_finger").gain(0.2)

stack(flute, tuba, bassoon, clarinet, clarinet_2, bass)