Strudelify

Marche funèbre Op.72 No.2

Chopin Frederic

KeyE♭ majorTempo84 bpm
0:00/0:00
// Marche funèbre Op.72 No.2 — Frédéric Chopin
// 84 bpm, 4/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 1 "2 Flutes" named as a pipe, played on flute (its pizzicato strings patch is not one); ch 2 "2 Oboes" named as a reed, played on oboe (its tremolo strings patch is not one); ch 3 "2 B♭ Clarinets" named as a reed, played on clarinet (its string ensemble 1 patch is not one); ch 4 "2 Bassoons" named as a reed, played on bassoon (its pizzicato strings patch is not one); ch 5 "2 Horns in F" named as a brass, played on brass section (its tremolo strings patch is not one); ch 6 "2 B♭ Trumpets" named as a brass, played on trumpet (its string ensemble 1 patch is not one)
// note: Transcription provider: pdmx. https://musescore.com/score/1533001; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 76 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(84/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.

// other · flute · "2 Flutes"
const flute = note(`<
  ~@2 A B ~@2 C D E F G H G I J K E L ~@3 M J K N O ~@12 P Q R S T U T V W X Y Z P Q AA AB P Q R AC ~@6 C D E F G H G I
  J K E L
>`.pickRestart({
  A: "[eb5,g5]@4 [eb5,g5]@3 [eb5,g5] [eb5,g5]@4 [eb5,g5]@4", // Eb
  B: "[g5,bb5] [f5,ab5] [eb5,g5] [d5,f5] [eb5,g5]@2 [c5,eb5]@2", C: "c5@4 c5@3 d5 eb5@4 eb5@4",
  D: "bb5@2 ab5@2 g5@3 f5 g5@4 eb5@4", E: "eb5@4 c6@3 c6 c6@4 d6@3 eb6", F: "c6@4 ~@8 g5@3 f5",
  G: "f5@4 f5@3 f5 f5@4 f5@4", H: "f5@2 eb5@2 d5@3 c5 d5@4 g5@3 f5, ~@4 eb5 ~@11", I: "f5 eb5 d5 eb5 f5@3 gb5",
  J: "g5@4 [bb4,g5]@3 [bb4,g5] [c5,eb5]@4 [c5,ab5]@4", K: "[bb4,g5]@3 [ab4,f5] [g4,eb5]@3 [ab4,d5] [g4,eb5]@4 bb4@4",
  L: "c6@4 c6@3 c6 c6@4 ~@4", M: "~@7 gb5", N: "c5@4 c6@3 c6 c6@4 d6@3 eb6", O: "c6@4 [c5,c6]@3 [c5,c6] [c5,c6]@4 ~@4",
  P: "eb6 c6", Q: "bb5@4 bb5@3 c6 db6@8", R: "bb5@4 bb5@3 c6 db6@2 eb6@2 f6@2 g6@2", S: "ab6@2 ~@3 ab6 g6 gb6",
  T: "f6@5 ~@3", U: "~@5 c6 b5 c6", V: "~@10 c6@2 db6@3 ab5", W: "c6@5 ~@3", X: "~@10 c6@2 bb5@3 ab5", Y: "g5 ~",
  Z: "~@5 db6 b5 c6", AA: "bb5@4 bb5@3 c6 db6@3 eb6 f6@3 eb6", AB: "db6 c6", AC: "ab6 ~@3",
})).s("gm_flute").gain(0.3)

// other · flute · "2 Flutes" · soft notes
const flute_soft = note(`<
  ~@17
  [~@12 g5@3 f5]
  [f5@4 f5@3 f5 f5@4 f5@4]
  [f5@2 eb5@2 d5@3 c5 d5@4 g5@3 f5, ~@4 eb5 ~@11]
  [f5@4 f5@3 f5 f5@4 f5@4]
  [f5 eb5 d5 eb5 f5@3 ~]
  ~@54
>`).s("gm_flute").gain(0.15)

// other · oboe · "2 Oboes"
const oboe = note(`<
  ~@2 A B C D E F G H I J I K L M G N ~@4 O M P Q ~@8 R S T U R S V W X Y Z AA AB AC AD AE R S T U R S V AF ~@6 E F G H
  I J I K L M G N
>`.pickRestart({
  A: "[eb5,g5]@4 [eb5,g5]@3 [eb5,g5] [eb5,g5]@4 [eb5,g5]@4", // Eb
  B: "[g5,bb5] [f5,ab5] [eb5,g5] [d5,f5] [eb5,g5]@2 [c5,eb5]@2", C: "d4@4 d4@3 d4 d4@4 d4@4", D: "g4 ~@3",
  E: "c5@4 c5@3 d5 eb5@4 eb5@4", F: "bb4@2 ab4@2 g4@3 f4 g4@4 eb4@4", G: "eb4@4 c5@3 c5 c5@4 d5@3 eb5",
  H: "c5@4 ~@8 g5@3 f5", I: "f5@4 f5@3 f5 f5@4 f5@4", J: "f5@2 eb5@2 d5@3 c5 d5@4 g5@3 f5, ~@4 eb5 ~@11",
  K: "f5 eb5 d5 eb5 f5@3 gb5", L: "g5@4 [bb4,g5]@3 [bb4,g5] [c5,eb5]@4 [c5,ab5]@4",
  M: "[bb4,g5]@3 [ab4,f5] [g4,eb5]@3 [ab4,d5] [g4,eb5]@4 [eb4,bb4]@4", N: "c5@4 c5@3 c5 c5@4 ~@4",
  O: "[bb4,g5]@4 [bb4,g5]@3 [bb4,g5] [c5,eb5]@4 [c5,ab5]@4", P: "[eb4,c5]@4 c5@3 c5 c5@4 d5@3 eb5",
  Q: "c5@4 [c5,c6]@3 [c5,c6] [c5,c6]@4 ~@4", R: "eb5 c5", S: "bb4@4 bb4@3 c5 db5@8",
  T: "bb4@4 bb4@3 c5 db5@3 eb5 f5@3 eb5", U: "db5 c5", V: "bb4@4 bb4@3 c5 db5@2 eb5@2 f5@2 g5@2",
  W: "ab5@2 ~@3 ab5 g5 gb5", X: "f5@10 eb5@2 d5@3 eb5", Y: "db5@5 c5 b4 c5", Z: "f5@10 eb5@2 f5@3 c5",
  AA: "db5@10 c5@2 db5@3 ab4", AB: "c5@10 c5@2 bb4@3 ab4", AC: "g4@10 c5@2 bb4@3 ab4", AD: "g4 ~", AE: "~@5 db5 b4 c5",
  AF: "ab5 ~@3",
})).s("gm_oboe").gain(0.3)

// other · oboe · "2 Oboes" · soft notes · Ab G Ab G Ab G Ab Abm …
const oboe_soft = note(`<
  ~@18
  [~ [ab4,c5] [g4,b4] [ab4,c5]]
  [[g4,b4] ~@3]
  [~ [ab4,c5] [g4,b4] [ab4,c5]]
  [[ab4,b4]@3 [bb4,d5]]
  ~@54
>`).s("gm_oboe").gain(0.15)

// chords · clarinet · "2 B♭ Clarinets"
const clarinet = note(`<
  A B C D E F G H I J K L K M N O I P ~@3 Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ@2 AR AD
  AS AT AG AH AI AJ AU AV AW ~@3 AX G H I J K L K M N O I AY
>`.pickRestart({
  A: "c4@8 eb4@4 eb4@3 eb4", B: "c4 eb4 ~@2", C: "c5@4 c5@3 c5 c5@4 c5@4", D: "c5!4",
  E: "bb3@4 bb3@3 bb3 [g3,bb3]@4 [g3,bb3]@4", F: "g3@3 ab3 f3@3 d4 eb3@3 f3 d3@3 g3",
  G: "[c3,eb4]@4 [c3,eb4]@3 [d3,eb4] [eb3,eb4]@4 [eb3,eb4]@4", H: "[eb3,eb4] eb4!2 [eb3,g4], ~ eb3@2 ~",
  I: "[ab3,eb4]@4 [eb3,eb4]@3 [d3,eb4] [c3,eb4]@4 [ab2,f4,b4]@3 g2", J: "[c3,eb4,c5] ~@3",
  K: "~ [ab3,c4] [g3,b3] [ab3,c4]", L: "[g3,b3] ~@3", M: "[ab3,b3]@3 [bb3,d4]", N: "[eb3,eb4]!2 [ab3,eb4]!2",
  O: "[bb3,eb4]@3 b3 bb3@3 f4 eb4@4 [g3,eb4]@4, eb3@3 ~", P: "[c3,eb4,c5]@4 [c3,c4,c5]@3 [c3,c4,c5] [c3,c4,c5]@4 ~@4",
  Q: "~@7 gb4, ~@3 bb3", R: "[eb3,eb4] eb4!3", S: "[bb3,eb4]@3 b3 bb3@3 f4 eb4@4 [bb3,g4]@4",
  T: "[c4,ab4]@4 [eb3,eb4]@3 [d3,eb4] [c3,eb4]@4 [ab2,f4,b4]@3 g2", // Fm Eb Ebmaj7 Cm Fdim
  U: "[c3,eb4,c5]@4 [c3,c4,c5]@3 [c3,c4,c5] [c3,c4,c5]@4 bb2@4", V: "ab2 eb3 ab2 eb3", W: "db2 ab3 db3 ab3",
  X: "eb2 bb3 eb2 bb3", Y: "e2@4 e3@4 f3@4 eb3@3 db3", Z: "c3@6 bb2@2 ab2@3 g2 f2@3 eb2", AA: "db2 ~ db3 ~",
  AB: "eb2 eb3 eb2 eb3", AC: "ab2 ab3 db3 c3", AD: "ab2 [eb3,eb4,ab4] ab2 [eb3,eb4,ab4]",
  AE: "db2 [ab3,e4,ab4] db3 [ab3,e4,ab4]", AF: "eb2 [bb3,db4,g4] eb2 [bb3,db4,g4]",
  AG: "e2@4 [e3,g4,bb4]@4 [f3,ab4]@4 [eb3,eb4,ab4]@3 db3", // Edim Fm Ab5
  AH: "~@6 bb2@2 ab2@3 g2 [f2,f4,ab4]@3 eb2, c3@3 ~@5, ~ [eb4,ab4] ~@2", AI: "db2 [f4,ab4] db3 [e4,ab4]",
  AJ: "eb2 eb3 eb2 [eb3,g4,db5], ~ ab4@2 ~", AK: "[ab2,c5]@2 ~@3 ab4 g4 gb4",
  AL: "~@4 g3@4 ~@2 eb4@2 d4@3 eb4, f4@5 ~@3, ~ ab3", AM: "~@2 e3@2 ~ c4 b3 c4, db4@5 ~@3, ~ f3",
  AN: "~@4 g3@4 ~@2 eb4@2 f4@3 c4, f4@5 ~@3, ~ ab3", AO: "~@4 e3@4 ~@2 c4@2 db4@3 ab3, db4@5 ~@3, ~ f3",
  AP: "~@4 c3@4 ~@2 c4@2 bb3@3 ab3, c4@5 ~@3, ~ db3",
  AQ: "[~@4 c3@4 ~@2 c4@2 bb3@3 ab3 ~@4 c3@4 [db3,db4]@2 [c3,c4]@2 [g2,g3]@2 [ab2,ab3]@2, g3@5 ~@3 g3@4 ~@4, ~@2 db3@3 ~@3]/2", // Db C G Ab
  AR: "[bb2,bb3] [ab2,ab3] [e2,e3] [f2,f3] [eb2,eb3] [db3,db4] [b2,b3] [c3,c4]", // Bb Ab E F Eb Db B C
  AS: "db3 [ab3,e4,ab4] db3 [ab3,e4,ab4]", AT: "eb3 [bb3,db4,g4] eb3 [bb3,db4,g4]",
  AU: "[ab2,c5]@4 [ab2,ab3]@3 [ab2,ab3] [ab2,ab3]@4 [g2,d3,g3,b3]@4", AV: "c3@8 eb3@4 eb3@3 eb3, c4 ~@3",
  AW: "c3 eb3 ~@2", AX: "~@7 d3 eb2@3 [f2,f3] [d2,d3]@3 [g2,g3]",
  AY: "[c3,eb4,c5]@4 [c2,c3,c4,c5]@3 [c2,c3,c4,c5] [c2,c3,c4,c5]@4 ~@4", // Cm C
})).s("gm_clarinet").gain(0.3)

// chords · clarinet · "2 B♭ Clarinets" · soft notes
const clarinet_soft = note("<~@17 A B C B D ~@38 E F G H ~@12>".pickRestart({
  A: "~@12 g4@3 f4", B: "f4@4 f4@3 f4 f4@4 f4@4", C: "f4@2 eb4@2 d4@3 c4 d4@4 g4@3 f4, ~@4 eb4 ~@11",
  D: "f4 eb4 d4 eb4 f4@3 ~", E: "[eb4,g4]@4 [eb4,g4]@3 [eb4,g4] [eb4,g4]@4 [eb4,g4]@4",
  F: "[g4,bb4] [f4,ab4] [eb4,g4] [d4,f4] [c3,eb4,g4]@2 [c3,c4,eb4]@2, f3 c3 ~@2", // Gm Fm Eb Dm Cm
  G: "[bb3,d4]@4 [d3,bb3,d4]@3 [c3,bb3,d4] [bb3,d4]@4 ~@2 a2@2, ~@4 bb2@3 ~, ~@3 [bb3,d4]", // Bb Gm Bb
  H: "[g2,g3,g4]@3 [ab2,ab3] [f2,f3]@3 d4 eb3@3 ~@5", // G Ab F
})).s("gm_clarinet").gain(0.15)

// other · bassoon · "2 Bassoons"
const bassoon = note(`<
  A B ~@2 C D E F G H ~@3 I J K G L ~@3 I J K G M N ~@6 O P Q R S T U V N W X W X Y Z@2 AA P AB AC S T U V AD AE ~@4 AF
  E F G H ~@3 I J K G L
>`.pickRestart({
  A: "c3@8 eb3@4 eb3@3 eb3", B: "c3 eb3 ~@2", C: "g3@4 d3@3 c3 bb2@6 a2@2", D: "g2@3 ab2 f2@3 d3 eb2@3 f2 d2@3 g2",
  E: "[c2,c3] ~ [eb2,eb3] ~", F: "[ab2,eb3] [eb2,eb3]@2 [eb2,eb3]", G: "[ab2,ab3]@4 eb3@3 d3 c3@4 ab2@3 g2",
  H: "eb3 ~@3", I: "~@3 bb2", J: "eb3!2 ab3!2", K: "eb3@3 g3", L: "eb3@4 c3@3 c3 c3@4 ~@4",
  M: "eb3@4 [c2,c3]@3 [c2,c3] [c2,c3]@4 bb2@4", N: "ab2 ~@3", O: "~ [ab2,ab3] [db2,db3] [c2,c3]", P: "ab2 eb3 ab2 eb3",
  Q: "db2 ab3 db3 ab3", R: "eb2 bb3 eb2 bb3", S: "e2@4 e3@4 f3@4 eb3@3 db3", T: "c3@6 bb2@2 ab2@3 g2 f2@3 eb2",
  U: "db2 ~ db3 ~", V: "eb2 eb3 eb2 eb3", W: "~ [g2,db4] [ab2,c4]@2", X: "~ [e2,bb3] [f2,ab3]@2",
  Y: "~ [c2,g3] [db2,f3]@2", Z: "[~@2 c2@2 db2@6 c2@2 db3 c3 g2 ab2, ~ g3@5 ~@2]/2",
  AA: "bb2 ab2 e2 f2 eb2 [db2,db3] [b1,b2] [c2,c3]", AB: "[db2,db3] [ab2,ab3] [db2,db3] [ab2,ab3]",
  AC: "[eb2,eb3] [bb2,bb3] [eb2,eb3] [bb2,bb3]", AD: "ab2@4 ab2@3 ab2 ab2@4 [g2,d3]@4", AE: "[c2,c3] ~@3",
  AF: "~@7 d3 eb2@3 f2 d2@3 g2",
})).s("gm_bassoon").gain(0.3)

// other · bassoon · "2 Bassoons" · soft notes
const bassoon_soft = note(`<
  ~@60
  [c4@4 c4@3 c4 c4@4 c4@4]
  [c4!4 c4@2 c4@2]
  [~@4 d3@3 c3 bb2@6 a2@2]
  [g2@3 ab2 f2@3 ~@9]
  ~@12
>`).s("gm_bassoon").gain(0.15)

// chords · brass section · "2 Horns in F"
const brass_section = note(`<
  ~@6 A B C D E F E G H I C J ~@3 K L ~ M N ~@8 O P Q R S P T U V W V W X Y@2 ~ O P Q R S P T Z AA ~@4 AB A B C D E F E
  G H I C J
>`.pickRestart({
  A: "[c4,g4]@4 [c4,g4]@3 [c4,g4] [bb3,g4]@4 [bb3,g4]@4", B: "c4@4 bb3@3 ab3 [bb3,g4]@4 [g3,eb4]@4",
  C: "c4@4 c4@3 c4 c4@4 [b3,f4]@4", D: "[c4,g4] ~@3", E: "~ [ab3,c4] [g3,b3] [ab3,c4]", F: "[g3,b3] ~@3",
  G: "[ab3,b3]@3 [ab3,d4]", H: "[bb3,eb4] eb4 [ab3,eb4] [ab3,d4]", I: "[bb3,eb4]@3 b3 bb3@3 f4 eb4@4 g3@4",
  J: "[c4,g4]@4 c4@3 c4 c4@4 ~@4", K: "~@3 [ab3,d4]", L: "[bb3,eb4] ~@3", M: "~@4 c4@3 c4 c4@4 [b3,f4]@4",
  N: "[c4,g4]@4 [c3,c4]@3 [c3,c4] [c3,c4]@4 ~@4", O: "~ [ab3,c4] ~ [ab3,c4]", P: "~ [bb3,db4] ~ [bb3,db4]",
  Q: "~ [db4,g4] ~ [db4,g4]", R: "~ [bb3,db4] [ab3,c4] ~", S: "~ [eb4,ab4] ~ [f4,ab4]", T: "~ [bb3,eb4] ~ [bb3,eb4]",
  U: "[ab3,eb4] ~@3", V: "~ [g3,bb3] [ab3,c4]@2", W: "~ [e3,g3] [f3,ab3]@2", X: "~ [c3,e3] [db3,f3]@2",
  Y: "[~ [c3,e3] [db3,f3]@3 [c3,e3] ~@2]/2", Z: "[ab3,eb4]@4 ab3@3 ab3 ab3@4 [g3,b3]@4", AA: "[c3,c4] ~@3",
  AB: "~@11 f3 d3@3 g3",
})).s("gm_brass_section").gain(0.3)

// chords · brass section · "2 Horns in F" · soft notes · Eb Gm Fm Eb Dm Eb Cm Bb …
const brass_section_soft = note(`<
  ~@60
  [[eb4,g4]@4 [eb4,g4]@3 [eb4,g4] [eb4,g4]@4 [eb4,g4]@4]
  [[g4,bb4] [f4,ab4] [eb4,g4] [d4,f4] [eb4,g4]@2 [c4,eb4]@2]
  [[bb3,d4]@4 [bb3,d4]@3 [bb3,d4] [bb3,d4]@4 [bb3,d4]@4]
  [[g3,g4]@3 ab3 f3@3 d4 eb3@3 ~@5]
  ~@12
>`).s("gm_brass_section").gain(0.15)

// other · tremolo strings · "Timpani in E♭, G, C"
const tremolo_strings = note(`<
  ~@3 A ~ B C ~ D E ~@4 F G D H ~@6 D H ~@23 I J ~@5 I J ~@5 B C ~ D E ~@4 F G D H
>`.pickRestart({
  A: "~@4 c3@3 c3 c3@4 c3@4", B: "~@5 [g2,ab2]!11", C: "c3 ~@3", D: "~@4 c3@3 c3 c3@4 g2 [g2,ab2]!3",
  E: "c3 ~@3, ab2 ~@15", F: "g2 ~ c3 ~", G: "eb2 ~@3", H: "c3@4 c3@3 c3 c3@4 ~@4, ab2 ~@15", I: "[eb2,f2]!16",
  J: "ab2 ~@3",
})).s("gm_tremolo_strings").gain(0.3)

// other · tremolo strings · "Timpani in E♭, G, C" · soft notes · Abmaj7
const tremolo_strings_soft = note("<~@5 [[g2,ab2]!5 ~@11] ~@55 [~@4 c3@3 c3 c3@4 c3@4] ~ [[g2,ab2]!5 ~@11] ~@12>")
  .s("gm_tremolo_strings").gain(0.15)

// other · string ensemble 1 · "Violin I"
const string_ensemble_1 = note(`<
  ~@6 A B C D E F E G H I C J ~@6 K J L M N O L M P Q L M N O L M P Q R S R S T U@2 V L M N O L M P W X Y ~@4 A B C D E
  F E G H I C Z
>`.pickRestart({
  A: "c5@4 c5@3 d5 eb5@4 eb5@4", B: "bb5@2 ab5@2 g5@3 f5 g5@4 eb5@4", C: "eb5@4 c6@3 c6 c6@4 d6@3 eb6",
  D: "c6@4 ~@8 g5@3 f5", E: "f5@4 f5@3 f5 f5@4 f5@4", F: "f5@2 eb5@2 d5@3 c5 d5@4 g5@3 f5, ~@4 eb5 ~@11",
  G: "f5 eb5 d5 eb5 f5@3 gb5", H: "g5@4 g5@3 g5 eb5@4 ab5@4", I: "g5@3 f5 eb5@3 d5 eb5@4 bb4@4",
  J: "c6@4 c6@3 c6 c6@4 ~@4", K: "~@4 c6@3 c6 c6@4 d6@3 eb6", L: "eb5 c5", M: "bb4@4 bb4@3 c5 db5@8",
  N: "bb4@4 bb4@3 c5 db5@3 eb5 f5@3 eb5", O: "db5 c5", P: "bb4@4 bb4@3 c5 db5@2 eb5@2 f5@2 g5@2", Q: "ab5 ~@3",
  R: "~ bb4 c5@2", S: "~ g4 ab4@2", T: "~ e4 f4@2", U: "[~ e4 f4@3 e4 ~@2]/2", V: "~@5 db5 b4 c5",
  W: "ab5@4 ab3@3 ab3 ab3@4 b3@4", X: "c4@8 eb4@4 eb4@3 eb4", Y: "c4 eb4 ~@2",
  Z: "[g4,eb5,c6]@4 [c5,c6]@3 [c5,c6] [c5,c6]@4 ~@4", // Cm C
})).s("gm_string_ensemble_1").gain(0.3)

// other · string ensemble 1 · "Violin I" · soft notes · G5 G
const string_ensemble_1_soft = note(`<
  ~@60
  [g4@4 g4@3 g4 g4@4 g4@4]
  [bb4 ab4 g4 f4 g4@2 eb4@2]
  [[g3,d4]@4 d4@3 d4 [g3,d4]@4 [g3,d4]@4]
  [[g3,g4] ~@3]
  ~@12
>`).s("gm_string_ensemble_1").gain(0.15)

// chords · string ensemble 1 · "Violin II"
const string_ensemble_1_2 = note(`<
// … 54 more lines

More by Chopin Frederic