Strudelify

L'Internationale

Gabe Nunag

KeyB♭ majorTempo105 bpm
0:00/0:00
// L'Internationale — Gabe Nunag
// 105 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5996145; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 33 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(105/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// other · trumpet · "B♭ Trumpet"
const trumpet = note("<A B C D E B F G H ~@3 I J K L M ~@7 N O P Q R S T U V>".pickRestart({
  A: "ab4@2 ~ eb4", B: "ab4@3 g4 bb4 ab4 eb4 c4", C: "f4@6 ~ f4", D: "bb4@3 ab4 g4 f4 eb4 db4", E: "c4@3 eb4",
  F: "f4@12 bb4@3 ab4", G: "g4 bb4 db5 g4", H: "ab4@3 ~", I: "~@3 bb4", J: "bb4@3 g4 eb4!2 d4 eb4",
  K: "c5@4 ab4 f4 g4 ab4", L: "g4 bb4 ab4 f4", M: "eb4@3 ~", N: "~@12 c5@3 bb4", O: "ab4@4 eb4@3 c4",
  P: "f4@8 db4@4 bb4@3 ab4", Q: "g4@2 f4 eb4", R: "eb4@3 eb4", S: "eb5@3 eb5 db5@2 c5@2", T: "bb4@2 c5@2 db5@3 db5",
  U: "c5@3 ab4 bb4@3 g4", V: "ab4",
})).s("gm_trumpet").gain(0.4)

// other · alto sax · "Alto Saxophone"
const alto_sax = note("<A B C D E F C G H ~@2 I J ~@11 K L M N O P Q R S>".pickRestart({
  A: "eb4@2 ~ eb3", B: "ab3@2 eb3@2 db3 eb3 f3 g3", C: "ab3 c4 db4 f4", D: "bb3@2 f3@2 g3 ab3 bb3 db4", E: "eb4@3 eb3",
  F: "ab3 g3 f3 eb3 db3 eb3 f3 g3", G: "eb4 f4 db4 bb3", H: "ab3@3 ~", I: "~@3 f3 bb3@3 ab3", J: "g3@3 ~",
  K: "~@12 [ab3,c5]@3 [bb3,bb4]", L: "[c4,ab4]@4 [c4,eb4]@3 c4", M: "ab3@4 a3@4 [bb3,db4]@4 [g3,bb4]@3 [ab3,ab4], f4 ~",
  N: "[bb3,g4]@2 [ab3,f4] [bb3,eb4]", O: "[c4,eb4]@3 [c4,eb4]", P: "[ab4,eb5]@3 [ab4,eb5] [f4,db5]@2 [f4,c5]@2",
  Q: "[f4,bb4]@2 [eb4,c5]@2 [db4,db5]@3 [db4,db5]", R: "[eb4,c5]@3 [f4,ab4] [eb4,bb4]@3 [db4,g4]", S: "[c4,ab4]",
})).s("gm_alto_sax").gain(0.45)

// other · alto sax · "Alto Saxophone" · soft notes
const alto_sax_soft = note("<~@8 [~@12 c4@3 bb3] [g3@6 g3@2 f3@3 g3 ab3@2 f3@2] [g3@4 eb3!2 d3 eb3] [f3@3 ~@5] ~@21>")
  .s("gm_alto_sax").gain(0.25)

// other · tenor sax · "Tenor Saxophone"
const tenor_sax = note("<A B C D E B F G E ~@2 H I J K L M ~@7 N O P Q R O S T U>".pickRestart({
  A: "c3 ~", B: "ab3!2 bb3 c4", C: "db4 c4 bb3 ab3", D: "g3 eb4 db4 g3", E: "c3@3 ~", F: "db4 c4 bb3 db4",
  G: "eb4 db4 g3 eb3", H: "~@3 bb3", I: "eb3 g3!2 ab3", J: "~ bb3 ~ g3", K: "~ ab3 ~ ab3", L: "~ g3 ~ ab3", M: "g3@3 ~",
  N: "g3@4 eb3@3 f3 eb3@2 db3@2 c3@2 bb2@2", O: "ab2!2 bb2 c3", P: "db3 c3 bb2 ab2", Q: "g3 eb3 db3 g3", R: "c3",
  S: "db3 c3 bb2 db3", T: "eb3 db3 g3 eb3", U: "ab3 db4 c4@2",
})).s("gm_tenor_sax").gain(0.3)

// other · tenor sax · "Tenor Saxophone" · soft notes
const tenor_sax_soft = note("<~@9 [~ bb3 ~ bb3]!2 [~ bb3 ~@2] ~@21>").s("gm_tenor_sax").gain(0.2)

// other · baritone sax · "Baritone Saxophone"
const baritone_sax = note("<A B C D E B C F E ~@2 G H I J K L ~@8 B C D M B C F N>".pickRestart({
  A: "ab2 ~", B: "eb2!2", C: "f2!2", D: "g2@2 g2 bb2", E: "ab2 eb2 ab2 ~", F: "eb2@2 g2 bb2", G: "~ f3 bb2 f3",
  H: "eb3 d3 c3 bb2", I: "eb3 g3 eb3 d3", J: "ab2 eb3 ab2 eb3", K: "bb2 eb3 bb2 d3", L: "eb3@3 ~", M: "ab2",
  N: "ab2 bb2 ab2@2",
})).s("gm_baritone_sax").gain(0.3)

// other · baritone sax · "Baritone Saxophone" · soft notes
const baritone_sax_soft = note("<~@9 [eb3 g3 bb2 d3] [eb3 g3 eb3 g3] [d3 ~@3] ~@21>").s("gm_baritone_sax").gain(0.2)

// other · french horn · "Horn in F"
const french_horn = note("<A B C D E F C G H ~@3 I J K L M ~@7 N O P Q R S T U V>".pickRestart({
  A: "ab3@2 ~ eb3", B: "ab3@2 eb3@2 db3 eb3 f3 g3", C: "ab3 a3 bb3 c4", D: "bb3@2 f3@2 g3 ab3 bb3 db4", E: "eb4@3 eb3",
  F: "ab3 g3 f3 eb3 db3 eb3 f3 g3", G: "eb4 f4 db4 bb3", H: "ab3@3 ~", I: "~@3 bb3", J: "bb3 ab3 g3 f3 eb3 c3 d3 eb3",
  K: "c4 d4 c4 bb3 ab3 bb3 c4 ab3", L: "g3 eb4 bb3 f3", M: "eb3@3 ~", N: "~@12 c4@3 bb3", O: "ab3@4 eb3@3 c3",
  P: "f3@8 db3@4 bb3@3 ab3", Q: "g3@2 f3 eb3", R: "eb3@3 eb3", S: "eb4@3 eb4 db4@2 c4@2", T: "bb3@2 c4@2 db4@3 db4",
  U: "c4@3 ab3 bb3@3 g3", V: "ab3",
})).s("gm_french_horn").gain(0.4)

// bass · trombone · "Bass Trombone"
const bass = note("<A B C D E B F G H ~@3 I J K L M ~@2 N O P Q R S T U V W X Y Z AA>".pickRestart({
  A: "c3 ~", B: "c3@3 f2", C: "ab2 a2 bb2 c3", D: "db3@2 bb2 g2", E: "ab2 eb2 ab2 bb2", F: "ab2 a2 bb2 db3",
  G: "db3@2 db3!2", H: "c3@3 ~", I: "eb3 d3 c3 bb2", J: "eb2@3 d2", K: "c2 eb2", L: "g2@3 f2", M: "eb2@3 ~",
  N: "~@2 ab2 db3", O: "c3!2 bb2!2", P: "~ c3 ~ bb2", Q: "~ bb2 ~ bb2", R: "~ ab2 ~ ab2", S: "bb3@12 ab2@3 bb2",
  T: "c3@4 c3@3 c3", U: "ab2@4 a2@4 bb2@4 g2@3 ab2", V: "bb2@2 ab2 bb2", W: "c3@3 c3", X: "ab3@3 ab3 f3@2 f3@2",
  Y: "f3@2 eb3@2 db3@3 db3", Z: "eb3@3 f3 eb3@3 db3", AA: "c3",
})).s("gm_trombone").gain(0.3)

// bass · trombone · "Bass Trombone" · soft notes
const bass_soft = note("<~@8 [~@3 eb3] [eb3@3 d3] [c3@3 bb2] ab2 ~@21>").s("gm_trombone").gain(0.2)

// bass · trombone · "Tuba"
const bass_2 = note("<A B C D E B C F G ~@3 H ~@3 I J K L M N O P Q B C D R B C F S>".pickRestart({
  A: "ab1 ~", B: "eb2!2", C: "f2!2", D: "g2@2 g2 bb2", E: "ab2 eb2 ab2 ~", F: "eb2@2 g2 bb2", G: "ab2 eb2 ab1 ~",
  H: "eb2 g2!2 f2", I: "~@12 c3@3 bb2", J: "ab2@4 eb2@3 c2", K: "f2@8 c2@4 bb2@3 ab2", L: "g2@2 f2 eb2", M: "eb2@3 eb2",
  N: "ab2 eb2 g2 db2", O: "f2 d2 eb2 c2", P: "f2 c2 bb1 d2", Q: "eb2@3 ~", R: "ab2", S: "ab2 bb2 ab2@2",
})).s("gm_trombone").gain(0.3)

// bass · trombone · "Tuba" · soft notes
const bass_soft_2 = note("<~@9 [eb2 bb1] [c2@3 g2] f2 ~@21>").s("gm_trombone").gain(0.2)

stack(
  trumpet, alto_sax, alto_sax_soft, tenor_sax, tenor_sax_soft, baritone_sax, baritone_sax_soft, french_horn, bass,
  bass_soft, bass_2, bass_soft_2
)

More by Gabe Nunag