Strudelify

the seasons no 6 - june barcarolle

P. Tchaikovsky

KeyB♭ majorTempo73 bpm
0:00/0:00
// the seasons no 6 - june barcarolle — P. Tchaikovsky
// 73 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 1 "Flutes" named as a pipe, played on flute (its pizzicato strings patch is not one); ch 2 "Oboes" named as a reed, played on oboe (its tremolo strings patch is not one); ch 3 "Clarinets in B♭" named as a reed, played on clarinet (its cello patch is not one); ch 4 "Bassoons" named as a reed, played on bassoon (its pizzicato strings patch is not one); ch 5 "Horns in F" named as a brass, played on brass section (its tremolo strings patch is not one); ch 11 "Glockenspiel" named as a mallet, played on glockenspiel (its pizzicato strings patch is not one)
// note: Transcription provider: pdmx. https://musescore.com/score/6163494; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 31 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(73/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 · "Flutes"
const flute = note("<A@2 B C D E F G H I J K L M N O L P Q R S T B C D E F G H I J>".pickRestart({
  A: "g3 d4 g4@2", B: "g3 d4 g4 [a3,a4]", C: "bb3@2 g4@2 d5!2 a4 c5, bb4@2 ~ c4",
  D: "bb4@2 bb3 ~ bb3 bb4 gb4 a4, d4 ~@5 d4@2", E: "g3, g4 ~", F: "g3 d4 g4 [a3,eb5]",
  G: "bb3@2 f4@2 ~ f5 eb5 f5, bb4@2 bb4 g3", H: "a3@2 a4@2 ~ eb5 d5 eb5, c5@2 c5 gb3",
  I: "g3@2 d4@2 ~ d5 c5 d5, bb4@2 g4 c4", J: "c5 bb4 a4 g4 bb4@3 a4, d4", K: "g4@2 ~@3 g4 a4 bb4, ~@2 g3 ~",
  L: "c5 d5 eb5 f5 g5 a5 bb5 c6", M: "f5@4 ~ f5 g5 bb5", N: "eb5@4 ~ eb5 f5 a5", O: "d5@4 ~ g4 a4 bb4",
  P: "f5@2 ~@3 d5 e5 gb5", Q: "g5@4 ~ d5 c5 bb4", R: "gb5@4 ~ c5 bb4 a4", S: "g5 d5 db5 d5 eb5 d5 bb4 g4", T: "bb4 ~@3",
})).s("gm_flute").gain(0.25)

// other · oboe · "Oboes"
const oboe = note("<~ A B C D E B F G H I J K L M L K N O P O Q B C D E B F G H I>".pickRestart({
  A: "~@5 d4 e4 gb4", B: "g4 a4 bb4 c5 d5 g5 gb5 g5", C: "d5@2 ~ g4", D: "g4 ~@2 c4", E: "bb3@4 ~ d4 e4 gb4",
  F: "d5@2 ~ d5", G: "a4@2 ~ c5", H: "g4@2 ~ a4", I: "g4 bb3 e4 gb4", J: "d4 ~@3", K: "~ f4 c4@2", L: "~ f4 d4@2",
  M: "~ f4 eb4@2", N: "~ gb4 d4@2", O: "~ d4 bb3@2", P: "~ d4 c4@2", Q: "d4 ~@9 d4@2 e4@2 gb4@2",
})).s("gm_oboe").gain(0.25)

// chords · clarinet · "Clarinets in B♭"
const clarinet = note("<~@2 A ~ B C D E F G H@2 I J K L I M N O P Q A ~ B C D E F G R>".pickRestart({
  A: "~@3 a4", B: "~ eb4 db4 eb4 d4 ~@3", C: "~ eb3 db3 eb3 ~@2 c4@2, ~ d3", D: "bb3 ~@2 c5", E: "f4@2 ~ bb4",
  F: "eb4@2 ~ a4", G: "d4@2 ~ eb4",
  H: "[d4@2 [bb3,d4]@2 [db4,e4]@2 eb4@2 bb3!2 g3 d3 ~ g4 a4 bb4, ~@6 c4@3 ~@3 g2@2 ~@2]/2", // Bb Dbm
  I: "c5 d5 eb5 f5 g5 a5 bb5 c6, ~ f4 c4@2", J: "~@2 f4@2 ~ f5 g5 bb5, f5 d4", K: "~@2 f4@2 ~ eb5 f5 a5, eb5 eb4",
  L: "~@2 f4@2 ~ g4 a4 bb4, d5@2 d4 ~", M: "f5@2 gb4@2 ~ d5 e5 gb5, ~ d4", N: "~@2 d4@2 ~ d5 c5 bb4, g5 bb3",
  O: "~@2 d4@2 ~ c5 bb4 a4, gb5 c4", P: "g5 d5 db5 d5 eb5 d5 bb4 g4, ~ d4 bb3@2", Q: "bb4 ~@3, d3 ~@15",
  R: "d4 [bb3,d4] [db4,e4] [c4,eb4]", // Bb Dbm Cm
})).s("gm_clarinet").gain(0.25)

// chords · clarinet · "Clarinets in B♭" · soft notes
const clarinet_soft = note("<~@3 A B C ~@17 A B C ~@5>".pickRestart({
  A: "bb4@2 ~ eb4", B: "d4 ~@2 c4", C: "bb3 ~",
})).s("gm_clarinet").gain(0.15)

// chords · brass section · "Horns in F"
const brass_section = note("<A@2 B C D E F G H I J K L M N O L P Q R Q ~ B C D E F G H I J>".pickRestart({
  A: "~ [bb3,d4]", B: "~@3 a4", C: "bb4@2 ~ [eb4,g4]", D: "[d4,g4] ~@2 c4", E: "bb3 ~", F: "~@3 [c5,eb5]",
  G: "[f4,bb4]@2 ~ [bb4,d5]", H: "[eb4,a4]@2 ~ [a4,c5]", I: "[d4,g4]@2 ~ [eb4,a4]", J: "[d4,g4] bb3 e4 [eb4,gb4]",
  K: "[bb3,d4] ~@3", L: "eb3 ~ [f3,a3]@2", M: "d3 ~ [f3,bb3]@2", N: "c3 [f3,a3]", O: "bb3 ~ [bb3,f4]@2",
  P: "d3 ~ [gb3,a3]@2", Q: "d3 ~ [g3,bb3]@2", R: "d3 ~ [a3,c4]@2",
})).s("gm_brass_section").gain(0.2)

// other · violin · "Trombón"
const violin = note("<~@2 A B C D E F G H I J K L M N K O P Q R S E B C D E F G H I>".pickRestart({
  A: "~@2 bb4 c5 d5 g5 gb5 g5", B: "~@5 d5 a4 c5", C: "bb4@2 ~@3 bb4 gb4 a4", D: "g4 d3",
  E: "g4 a4 bb4 c5 d5 g5 gb5 g5", F: "d5@4 ~ f5 eb5 f5", G: "c5@4 ~ eb5 d5 eb5", H: "bb4@2 ~@3 d5 c5 d5, ~@3 c3",
  I: "c5 bb4 a4 g4 bb4@3 a4, d3", J: "~ bb3 g3 d3 ~ g4 a4 bb4, [g3,g4] ~ g2 ~", K: "c5 d5 eb5 f5 g5 a5 bb5 c6",
  L: "f5@4 ~ f5 g5 bb5", M: "eb5@4 ~ eb5 f5 a5", N: "d5@4 ~ g4 a4 bb4", O: "f5@2 ~@3 d5 e5 gb5", P: "g5@4 ~ d5 c5 bb4",
  Q: "gb5@4 ~ c5 bb4 a4", R: "g5 d5 db5 d5 eb5 d5 bb4 ~", S: "~@6 e4 gb4",
})).s("gm_violin").gain(0.2)

// other · violin · "Trombón" · soft notes
const violin_soft = note("<~ A B C ~ A ~@14 D E ~ C ~ A ~@5>".pickRestart({
  A: "~@5 d4 e4 gb4", B: "g4 a4 ~@6", C: "d5 ~", D: "~@7 g4", E: "bb4@2 ~@3 d4 ~@2",
})).s("gm_violin").gain(0.15)

// chords · glockenspiel
const glockenspiel = note("<~@2 A B C D E F G H I J K L M N K O P Q R S A B C D E F G H I>".pickRestart({
  A: "~@3 a6", B: "bb6@4 ~ d7 a6 c7, ~@3 g6", C: "[g6,bb6]@2 ~@3 bb6 gb6 a6, ~@3 c6", D: "[bb5,g6]@2 ~ c6",
  E: "bb5 ~@2 eb7", F: "[bb6,d7]@4 ~ f7 eb7 f7, ~@3 d7", G: "[a6,c7]@4 ~ eb7 d7 eb7, ~@3 c7",
  H: "[g6,bb6]@4 ~ d7 c7 d7, ~@3 a6", I: "c7 bb6 a6 g6 bb6@3 a6, g6 ~@3", J: "[d6,g6] ~@3", K: "eb6 f7 [a6,c7]@2",
  L: "d6 f7 [bb6,d7]@2", M: "~ f7 [a6,eb7]@2, c6 ~", N: "bb5 f7 [bb6,d7]@2", O: "d6 gb7 [gb6,a6]@2",
  P: "d6 d7 [g6,bb6]@2", Q: "d6@2 d7@2 c7 ~ bb6 a6, ~@4 a6@3 ~, ~@5 c7@3",
  R: "g7@2 d7@2 [d7,eb7] db7 d7@2 eb7@2 d7@2 bb6@2 g6@2", S: "bb6 ~ d7@2 d7 ~@3",
})).s("gm_glockenspiel").gain(0.25)

// other · tremolo strings · "Timpani"
const tremolo_strings = note("<~@12 A@4 B@6 ~@9>".pickRestart({
  A: "[~@8 bb2!7 bb2@4 ~ d3@4 bb2!7 bb2@4 ~ d3@4 bb2!7 bb2@4 ~@13]/4",
  B: "[~@8 bb2!7 bb2@4 ~ d3@4 bb2!7 bb2@4 ~ d3@4 bb2!7 bb2@4 ~ d3@4 bb2!7 bb2@4 ~ d3@4 bb2!7 bb2@4 ~ d3@4 ~@8]/6",
})).s("gm_tremolo_strings").gain(0.3)

// other · tremolo strings · "Timpani" · soft notes
const tremolo_strings_soft = note("<A@2 B C D E B C@2 F G H I ~@2 J I ~@4 K B C D E B C@2 F G>".pickRestart({
  A: "g2 d3 g3@2", B: "g2 d3 g3 g2", C: "bb2 d3 g3 g2", D: "bb2 ~ g3 ~ g3 ~ d3@2", E: "g2!2", F: "bb2 d3 g3!2", G: "d3",
  H: "g3 ~ g2 ~", I: "g2 d3 ~@2", J: "~ d3 bb2@2", K: "~@4 d3 ~@3",
})).s("gm_tremolo_strings").gain(0.2)

// chords · tremolo strings · "Arpa"
const tremolo_strings_2 = note("<A@2 B C D E F G H I ~ J K L M J K N O P Q R ~@4 S G H I ~>".pickRestart({
  A: "g2 d3 [g3,bb3,d4]@2", B: "g2 d3 [g3,bb3,d4] a2", C: "bb2@4 g3@4 [d4,g4]@4 ~ a4@3, ~@3 [c3,eb4,g4]",
  D: "d3 ~ [g3,bb3] ~ [g3,bb3] ~ [d3,c4,gb4]@2", E: "g2", F: "g2@4 d3@4 [g3,bb3,d4]@4 ~ [eb5,gb5]@3, ~@3 [a2,f4,c5]",
  G: "~@4 f3@4 [bb3,d4,f4]@4 ~ eb5@3, [f4,bb4] ~, bb2 ~@2 [g2,bb4,d5], ~ d5@7 ~@8", // Bb Bb5 Gm
  H: "~@4 a3@4 [c4,eb4,g4]@4 ~ d5@3, [eb4,a4] ~, a2 ~@2 [gb2,a4,c5], ~ c5@7 ~@8", // Cm Ebdim Gbdim
  I: "~@4 d3@4 g3@4 ~ c5@3, [d4,g4] ~, g2 ~@2 [c3,eb4,a4], ~ bb4@7 ~@8", J: "~@6 a4 bb4",
  K: "[eb3,c5,eb5] f4 [f3,a3,c4]@2", L: "d3@2 f4@2 ~ f5 g5 bb5, ~ [f3,bb3,d4]",
  M: "~@2 f4@2 ~ eb5 f5 a5, [c3,eb5,g5] [f3,a3,eb4]", N: "d3@2 gb4@2 ~ d5 e5 gb5, ~ [gb3,a3,d4]",
  O: "d3@2 d4@2 ~ d5 c5 bb4, g5 [g3,bb3]", P: "d3 d4 [a3,c4]@2, gb5 ~", Q: "d3 d4 [g3,bb3]@2",
  R: "d3 ~ g4@2 f4@2 eb4@2 [d4,d5]@2 c4@2 bb3@2 a3@2, ~ d5 ~@2", S: "~@13 [eb5,gb5]@3, ~@3 c5",
})).s("gm_tremolo_strings").gain(0.3)

// chords · tremolo strings · "Arpa" · soft notes
const tremolo_strings_soft_2 = note("<~@10 A B ~@3 C ~@6 D E F G H ~@3 A>".pickRestart({
  A: "~ c5@3 ~@12, d3, [d4,g4] ~@3", B: "[g3,d4,g4]@2 ~@3 g4 ~@2, ~@2 g2 ~",
  C: "bb2@2 f4@2 ~ g4 ~@2, [bb4,d5] [f3,bb3,d4]", D: "g2 d3 [g3,bb3,d4] a2",
  E: "bb2@4 g3@4 [d4,g4]@4 ~ a4@3, ~@3 [c3,eb4,g4]", F: "d3 ~ [g3,bb3] ~ [g3,bb3] ~ [d3,c4,gb4]@2", G: "g2",
  H: "g2 d3 [g3,bb3,d4] [a2,f4]", // Gm Dm
})).s("gm_tremolo_strings").gain(0.2)

// other · violin · "Violin II"
const violin_2 = note("<~@2 A ~@3 B C D E F G H I J K H L M N O P A ~@3 B C D E F>".pickRestart({
  A: "~@3 a4", B: "~@3 c5", C: "f4@2 ~ d5", D: "a4@2 ~ c5", E: "g4@2 ~ a4", F: "g4 bb3 e4 gb4", G: "d4@2 ~@3 g4 a4 bb4",
  H: "c5 d5 eb5 f5 g5 a5 bb5 c6", I: "f5@4 ~ f5 g5 bb5", J: "eb5@4 ~ eb5 f5 a5", K: "d5@4 ~ g4 a4 bb4",
  L: "f5@2 ~@3 d5 e5 gb5", M: "g5@4 ~ d5 c5 bb4", N: "gb5@4 ~ c5 bb4 a4", O: "g5 d5 db5 d5 eb5 d5 bb4 g4", P: "bb4 ~@3",
})).s("gm_violin").gain(0.25)

// other · violin · "Violin II" · soft notes
const violin_soft_2 = note("<~@3 A B C D ~@16 A B C D ~@4>".pickRestart({
  A: "bb4@2 ~ g4", B: "g4 ~@2 c4", C: "bb3@2 ~ c4", D: "bb3 ~@3",
})).s("gm_violin").gain(0.15)

// other · viola
const viola = note("<~@12 A B C ~@2 D B E B ~@10>".pickRestart({
  A: "eb3 ~ a3@2", B: "d3 ~ bb3@2", C: "c3 a3", D: "d3 ~ a3@2", E: "d3 ~ c4@2",
})).s("gm_viola").gain(0.35)

// other · viola · soft notes
const viola_soft = note("<~@15 [bb3 ~ bb3 ~] [eb3 ~ a3@2] ~@4 [a3 ~@15] ~@9>").s("gm_viola").gain(0.2)

// bass · contrabass
const bass = note("<~@5 A ~@6 B C D E B F G H G I ~@3 A ~@5>".pickRestart({
  A: "~ eb2 db2 eb2 d2@4", B: "eb2 ~ f2@2", C: "d2 ~ f2@2", D: "c2 f2", E: "bb1 ~ f2 ~", F: "d2 ~ gb2@2",
  G: "d2 ~ g2@2", H: "d2 ~ a2@2", I: "d2 ~@15",
})).s("gm_contrabass").gain(0.25)

// bass · pizzicato strings
const bass_2 = note("<A@2 B C D ~ B E F G H I ~@10 B C D ~ B E F G H>".pickRestart({
  A: "g1 d2 g2@2", B: "g1 d2 g2 a1", C: "bb1 g2 d3 c2", D: "d2 ~ g2 ~ g2 ~ d2@2", E: "bb1 f2 bb2 g1", F: "a1 a2 c3 gb1",
  G: "g1 d2 g2 c2", H: "d2", I: "g2 ~ g1 ~",
})).s("gm_pizzicato_strings").gain(0.2)

stack(
  flute, oboe, clarinet, clarinet_soft, brass_section, violin, violin_soft, glockenspiel, tremolo_strings,
  tremolo_strings_soft, tremolo_strings_2, tremolo_strings_soft_2, violin_2, violin_soft_2, viola, viola_soft, bass,
  bass_2
)