Strudelify

Trombone Concerto

N. Rimsky-Korsakoff

KeyB♭ majorTempo120 bpm
0:00/0:00
// Trombone Concerto — N. Rimsky-Korsakoff
// 120 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Transcription provider: pdmx. https://musescore.com/score/5951700; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 87 bars on a 24-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 · [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 · piano
const piano = note(`<
  A B@3 C D E@2 F@2 G H A B@3 I J K L M N O P O P Q@2 R@2 S@2 T@2 U V W X Y Z AA AB AC AD AE AF AG AH A B@2 AI AJ AK AL
  AM F@2 G H A B@2 AI AN AO AP@2 AQ@2 AR AS AR AS AT AU AV@2 AW@2 AX AY AZ BA BB@3
>`.pickRestart({
  A: "[bb1,bb2,bb4,d5,f5,bb5] [f4,bb4,d5]!11", B: "[f4,bb4,d5]!12",
  C: "[d4,f4,d5]!6 [f4,bb4]!6, [d3,f3]@11 ~ [f3,bb3]@11 ~", D: "[bb4,d5]!6 [f4,bb4,d5]!6, [bb3,d4]@7 ~@5",
  E: "[f3 [f3,a3,eb4]!11 [f3,a3,eb4] ~ [f3,a3,eb4]!3 [f3,eb4] [f3,c4,eb4] ~ [f3,c4,eb4]!4, f2@30 [c5,c6]@4 a3@2 [ab4,ab5]@2 [f3,c4,eb4] [bb4,bb5]@3 [a4,a5]@6, [c5,c6] [b4,b5], a5@3 eb5@5, ~@18 [a4,a5]@8 [f3,a3,eb4] [d5,d6]@21]/2", // F7 C Ab F7 Bb A C B …
  F: "[f3 [f3,c4,eb4]!11 [f3,c4,eb4,ab4,ab5] ~ [f3,c4,eb4]!4 [f3,a3,c4,e4,e5] ~ [f3,a3,c4]!4, f2@23 ~, [c5,c6]@8 ~ [bb4,bb5] [a4,a5]@2 ~ [g4,g5] [f4,f5]@2, eb5@9 [a4,eb5,a5]@3 ~ [f3,c4,eb4] ~@5 [f3,a3,c4] ~@4]/2", // F7 Fm7 F7 Fmaj7 F C Bb A …
  G: "[d3,d4,a4,c5,f5] ~ [a4,c5,f5]!4 [b2,b3,a4,eb5,g5,a5] ~ [a4,eb5,g5,a5]!4, ~ [a4,c5,f5] ~@5 [a4,eb5,g5,a5] ~@4, ~ [f3,f4] [eb3,eb4]@2 ~ [d3,d4] [c3,c4]@2", // Dm7 F Baug Am7b5 F Am7b5 F Eb …
  H: "[ab2,ab3,eb5,f5,c6] ~ [eb5,f5,c6]!4 [e2,e3,eb5,a5,eb6] ~ [eb5,a5,eb6]!4, ~ [eb5,f5,c6] ~@5 [eb5,a5,eb6] ~@4, ~ [bb2,bb3] [a2,a3]@2 ~ [g2,g3] [f2,f3]@2", // Fm7 F7 A Ebdim F7 Ebdim Bb A …
  I: "[d4,ab4,d5]!12, [bb2,d3]@11 ~ [d3,f3]@11 ~", J: "[f4,ab4,f5]!9 [d4,ab4,bb4]!3, [f3,ab3]@23 ~",
  K: "[eb2,eb3,eb4,g4,bb4] [bb3,eb4,g4]!11", L: "[d2,d3,d4,f4,bb4] [d4,f4,bb4]!5 [bb3,f4,bb4]!6",
  M: "[eb2,eb3,bb3,eb4,g4] [bb3,eb4,g4]!11", N: "[d2,d3,bb3,eb4,g4] [bb3,eb4,g4]!5 [f4,bb4]!6",
  O: "[e4,g4,bb4]!12, [c2,c3]@23 ~", // Edim C
  P: "[a3,c4]!3 [a3,c4,f5,c6,f6] [a3,c4]!2 [f3,ab3,b3]!3 [f3,a3,c4,c5,a5,c6] [f3,a3,c4]!2, c3@23 ~, [g5,c6,g6] ~ [d5,ab5,d6] ~", // Am F Am Fdim F C5 Ddim
  Q: "[~ [g3,bb3,e4]!11 [g3,bb3,e4]!12, [c2,c3,bb4,e5,g5,bb5]@23 ~]/2", // Edim C7
  R: "[[c5,f5]!2 ~ [c4,f4,a4]!2 ~ [a2,c3]!2 a2 [f2,a2]!2 a2 [c3,f3]!3 [a2,c3]!3 [f3,a3]!3 [c3,f3]!3, a5@8 c3@3 f2@12 ~, f2 f3 ~@2, a4@6 ~@4 [c4,f4,a4]@14 a3@11 ~ c4@11 ~, ~ [c5,f5]@5 ~@6]/2", // F5 F Am F F5 Am F F5 …
  S: "[[a3,c4]!2 a3 [f3,a3]!5 f3 [c3,f3]!3 [a3,c4]!3 [f3,a3]!3 [c4,f4]!3 [a3,c4]!3, f2@23 ~, f4@24 f4@11 ~ a4@11 ~, ~ c4@2 c4@3 ~@6, ~@2 a3 ~@3]/2", // Am F F5 Am F F5 Am
  T: "[[f4,a4]!2 f4 [c4,f4]!2 ~ [a4,c5]!2 a4 [f4,a4]!3 [c5,f5]!3 [a4,c5]!3 [f5,a5]!3 [c5,f5]!3, f2@23 ~, c5@5 f4@3 c5@4 ~@12, ~@4 a4@8 f5@12 a5@11 ~ c6@11 ~, ~@5 c4@7 ~@12]/2", // F F5 Am F F5 Am F F5
  U: "[f5,a5,c6]!3 [c5,f5,a5]!3 [a4,c5,f5]!3 [f4,a4,c5]!3, [f2,f3,f6]@11 ~ [eb2,eb3]@11 ~", // F Eb
  V: "[db2,db3,f4,ab4,db5] ~ [db4,f4] ab3 [db4,f4] ab3 [db4,f4] ab3, ~@12 f2@11 ~", // Db
  W: "bb3 ~ eb4 bb3 [bb3,eb4] ~ [db4,f4] bb3, g2@3 f2, ~ bb3@2 ~@2 bb3@2 ~", // Eb5 Db
  X: "~ bb3 gb4 bb3 g4 [c4,eb4] gb4 eb4, [eb2,eb3] bb4 ab4 bb4", // Cm Eb
  Y: "~ eb3 [ab3,c4] eb3 [ab3,c4] eb3 [bb4,db5] [gb4,eb5], [ab1,ab2,ab4,c5]@17 ~ [gb2,gb3]@6", // Ab Bbm Ebm Ab Gb
  Z: "[ab4,db5] f4 [ab4,db5] f4 [a4,db5] f4 [a4,db5] f4, [f2,f3]@23 ~", // Db5 A F
  AA: "~ eb4 [bb4,eb5] eb4 [bb4,db5] f4 [bb4,db5] f4, bb3@23 ~, [gb2,gb3]@11 ~ [f2,f3]@11 ~", // Eb5 Bbm Gb F
  AB: "~ bb3 eb4 bb3 gb4 eb4 db4 [bb3,eb4], [eb2,eb3] [db2,db3,bb4] [c2,c3,a4] [bb1,bb2,bb4]", // Eb5 Eb Gb F Bb
  AC: "~ [eb3,gb3] [gb3,c4] [eb3,gb3] [gb3,c4] [eb3,gb3] [gb3,c4,db5] [gb3,eb5], [a1,a2,eb4]@23 ~, c5@17 ~@7", // Ebm Gbdim Ebm Gbdim Ebm Gb Ebm Adim
  AD: "[f4,db5] [db4,f4] [f4,db5] [db4,f4] [f4,db5] [db4,f4] [f4,db5] [db4,f4], [bb1,bb2]@23 ~", // Db Bb
  AE: "~ [c4,eb4] [eb4,gb4] [c4,eb4] gb4 eb4 [gb4,bb4] f4, gb3@23 ~, [eb2,eb3]@3 [db2,db3]", // Cm Ebm Cm Gb Eb Db
  AF: "eb4 bb4 ~ [bb4,eb5] ~ [bb4,eb5] ~ [bb4,eb5], [c2,c3]@11 ~@13, ~ [gb4,gb5] [f4,f5] [gb4,gb5]", // Eb5 C Gb F Gb
  AG: "bb3 eb4 [eb4,gb4] eb4 [eb4,gb4] [bb3,eb4] c4 e4, [gb2,gb3]@23 ~, bb4@17 ~ c5@6, ~ bb3@2 bb3@2 ~@3", // Ebm Eb5 Gb
  AH: "[f3,f4,a4]!3 [f3,f4]!9, f2 ~@3", // F
  AI: "[f4,bb4,d5]@2 [f4,bb4,d5]@2 [f4,bb4,d5]@2 [f4,bb4,d5]@2 [f4,bb4,d5]@2 [f4,bb4,d5]@2 [f4,bb4,d5]@2 ~ [d2,d3] [f4,bb4,d5]@2 [f4,bb4,d5]@2 [f4,bb4,d5]@2 [f4,bb4,d5]@2, ~@12 [c2,c3] ~ [f4,bb4,d5]@2 ~@2 [bb1,bb2]@6", // Bb D Bb C Bb
  AJ: "[d3,f3,bb3,d4,d5] [d3,f3,bb3,f4,f5] [d3,f3,bb3,bb4,bb5] [d3,f3,bb3]!2 [d3,f3,bb3,bb4,bb5] [f3,bb3,f4,f5] [f3,bb3,bb4,bb5] [f3,bb3,d5,d6] [f3,bb3]!2 [f3,bb3,d5,d6], ~@3 [c5,c6]@2 ~@4 [eb5,eb6]@2 ~", // Bb Bb5 Bb Bb5 Bb C Eb
  AK: "[bb3,db4,a4,a5] [bb3,db4,bb4,bb5] [bb3,db4,db5,db6] [bb3,db4]!3 [f3,bb3,d4]!3 [d3,f3,bb3,d4,f5,f6] [d3,f3,bb3,d4]!2, ~@6 [e5,e6]@11 ~@7", // Bbm Bb E
  AL: "f3 [f3,a3,eb4]!11, [f2,eb5,eb6], a5@3 [c5,a5,c6]", // F7 F
  AM: "[f3,a3,eb4,b4,b5] ~ [f3,a3,eb4]!4 [f3,c4,eb4,ab4,ab5] ~ [f3,c4,eb4]!4, f2@23 ~, ~ [f3,a3,eb4] ~@5 [f3,c4,eb4] ~@4, ~ [d5,d6] [c5,c6]@2 ~ [bb4,bb5] [a4,a5]@2", // F7 Fm7 F7 D C Bb A
  AN: "[d3,ab3,bb3,bb4] [d3,ab3,bb3,d4,d5] [d3,ab3,bb3,f4,f5] [d3,ab3,bb3]!2 [d3,ab3,bb3,f4,f5] [f3,ab3,d4,d5] [f3,ab3,d4,f4,f5] [f3,ab3,d4,bb4,bb5] [f3,ab3,d4]!2 [f3,ab3,d4,bb4,bb5], ~@3 [g4,g5]@2 ~@4 [c5,c6]@2 ~", // Bb7 Ddim Bb7 Ddim Bb7 G C
  AO: "[ab3,c4,f4,f5] [ab3,c4,f4,ab4,ab5] [ab3,c4,f4,c5,c6] [c4,f4,ab4]!3 [f4,ab4,c5]!3 [f4,ab4,b4,f5,f6] [f4,ab4,b4]!2, ~@6 [g5,g6]@11 ~@7", // Fm Fdim G
  AP: "[[eb4,g4,bb4] [bb3,g4,bb4]!11 [bb3,g4,bb4]!6 [d2,d3,f4,f5] ~ [bb3,f4]!4, [eb2,eb3]@17 ~@2 [bb3,f4] ~@4, ~@13 [c5,c6] [bb4,bb5]@2]/2", // Eb Dm Bb5 Eb Bb5 C Bb
  AQ: "[[bb3,g4,bb4]!12 [bb3,f4,bb4]!3 [d2,d3,bb3,f4,bb4] [bb3,f4,bb4]!2 [bb2,f3,bb3,a4,a5] [bb2,f3,bb3,c5,c6] [bb2,f3,bb3,bb4,bb5] [bb2,f3,bb3,f4,f5] [bb2,f3,bb3]!2, [eb2,eb3]@7 ~@5]/2", // Eb Bb5 Bb Bb5 Bbmaj7 Bbsus2 Bb5 Eb
  AR: "[c4,eb4,a4]!9 [c4,eb4,a4,a5] [c4,eb4,a4,c5,c6] [c4,eb4,a4,eb5,eb6], [f2,f3]@23 ~", // Adim F
  AS: "[db4,e4,bb4]!3 [d4,f4,bb4,f5,f6] [d4,f4,bb4]!2 [d3,f3,d4]!3 [d3,f3,d4,bb4,f5,bb5] [d3,f3,d4]!2, [g5,g6] ~ [c5,f5,c6] ~", // Bbdim Bb Dm Bb Dm G F5
  AT: "~ [c3,eb3,a3] ~ [c4,eb4,a4]!9, [f2,f3]@5 [eb5,eb6] [g5,g6]@6, [c4,eb4,a4] a5@3, ~ [c3,eb3,a3]@5, ~ [c5,c6]@2", // Adim F Eb G Adim C
  AU: "[c4,eb4,a4,a5] [c4,eb4,a4,c5,c6] [c4,eb4,a4,eb5,eb6] [c4,eb4,a4]!6 [c4,eb4,a4,a5] [c4,eb4,a4,c5,c6] [c4,eb4,a4,eb5,eb6], ~@6 [g5,g6]@11 ~@7", // Adim G
  AV: "[[d5,bb5] [d5,f5,bb5] ~ [d4,f4,bb4]!2 ~ [d3,f3]!2 d3 [bb2,d3]@3 [f3,bb3]!3 [d3,f3]!3 [bb3,d4]!3 [f3,bb3]!3, bb1@23 ~, d6@3 bb3 f3@2 ~@6, bb2@10 [d4,f4,bb4]@14 d4@11 ~ f4@11 ~, ~ [d5,f5,bb5]@5 ~@6]/2", // Gm Bb Dm Bb Bb5 Dm Bb Bb5 …
  AW: "[[d4,f4]!2 d4 [bb3,d4]!5 bb3 [f3,bb3]!3 [d4,f4]!3 [bb3,d4]!3 [f4,bb4]!3 [d4,f4]!3, [bb1,bb2]@23 ~, bb4@24 bb4@11 ~ d5@11 ~, ~ f4@2 f4@3 ~@6, ~@2 d4 ~@3]/2", // Dm Bb Bb5 Dm Bb Bb5 Dm Bb
  AX: "[bb4,d5]!2 bb4 [d4,f4,bb4]!2 ~ [d5,f5]!2 d5 [f4,bb4,d5]!3, [bb1,bb2], f5@5 [f4,bb4]@3 f5@4, ~ d5@2 bb5@3, ~@5 d4@7", // Bb Dm Bb Bb5
  AY: "[f5,bb5]!3 [bb4,d5,f5]!3 [bb5,d6]!3 [d5,f5,bb5]!3, [bb1,bb2]@23 ~, d6@11 ~ f6@11 ~", // Bb5 Bb
  AZ: "[bb4,d5,f5]!12, bb6@23 ~, [bb1,bb2] [bb2,bb3] [f2,f3] [d2,d3]", // Bb F D
  BA: "[bb1,bb2,bb5,d6,f6,bb6] ~ [bb1,bb2,bb4,d5,f5,bb5] ~", BB: "[[bb1,bb2,bb3,bb4]@17 ~]/3",
})).s("gm_piano").gain(0.2)

stack(piano)