Strudelify

La Primavera

Antonio Vivaldi

KeyF majorTempo110 bpm
0:00/0:00
// La Primavera — Antonio Vivaldi
// 110 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (1/4 at bar 1, 4/4 at bar 2) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5491811; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 85 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(110/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [...]/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 · clarinet · "B♭ Clarinet"
const clarinet = note(`<
  A B@2 C ~@2 D E@2 F G ~@2 H I J K L ~ M N O P Q R S T U E@2 F V ~@8 W X@2 Y Z AA AB AC AD AE AF AG ~@3 AH AI@2 AJ AK
  AL AM@2 AN AO AM AP AQ AR@2 AS AT AU ~@4 E@2 AV G ~@4
>`.pickRestart({
  A: "~@7 bb4", B: "eb5@2 eb5@2 eb5@2 eb5@2 g5@6 g5 f5", C: "eb5@2 f5 g5 f5@2 eb5@2 d5@4 ~@4", D: "~@7 g5",
  E: "g5@2 f5 eb5 f5@2 g5@2 ab5@2 g5@4 g5@2", F: "ab5 g5@2 f5 eb5@2 d5@2", G: "eb5 ~@3",
  H: "~@16 bb5 c6 bb5@6 bb5 c6 bb5@6", I: "bb5 c6 bb5@6 bb5 c6 bb5@6 bb5 c6 bb5@6 bb5 c6 bb5@6",
  J: "bb5 c6 bb5@6 bb5 c6 bb5@6 bb5@2 ~@2 bb5@2 ~@2 bb5@2 ~@2 bb5@2 ~@2",
  K: "bb5 ~ bb5 ~ bb5 ~ bb5 ~ bb5 ~ bb5 ~ bb5 ~ bb5 ~", L: "bb5 ~ bb5 ~ bb5 ~ c6 d6 eb6 d6 c6 bb5 ab5 g5 f5 eb5",
  M: "eb6 d6 c6 bb5 ab5 g5 f5 eb5 ~@6 eb5 ~",
  N: "eb5@2 ~@2 eb5@2 ~@2 eb5@2 ~@2 eb5@2 ~@2 eb5 f5 eb5 f5 eb5 f5 eb5 f5 eb5 f5 eb5 f5 eb4@2 ~@2",
  O: "eb4@2 ~@2 eb4@2 ~@2 eb4@2 ~@2 eb4@2 ~@2 eb4 f4 eb4 f4 eb4 f4 eb4 f4 g4@8",
  P: "~@8 g4 ab4 g4 ab4 g4 ab4 g4 ab4 ~@8 g4 ab4 g4 ab4 g4 ab4 g4 ab4",
  Q: "~@8 g4 ab4 g4 ab4 g4 ab4 g4 ab4 bb4@10 eb5@2 bb4@2 c5@2", R: "bb4@5 eb5 bb4 c5 bb4 eb5 bb4 c5 bb4 eb5 bb4 c5",
  S: "bb4 eb5 bb4 c5 bb4 eb5 bb4 c5 bb4@2 eb4@2 ~@4",
  T: "eb5@4 ~@4 eb5@4 ~@4 eb5 f5 eb5 f5 eb5 f5 eb5 f5 eb5 f5 eb5 f5 eb5 f5 eb5 f5",
  U: "eb5@4 ~@4 eb5@4 ~@4 eb5 f5 eb5 f5 eb5 f5 eb5 f5 ~@4 eb5@4", V: "eb5@3 ~@13", W: "~@7 d5",
  X: "d5@2 c5 bb4 c5@2 d5@2 eb5@2 d5@4 d5@2", Y: "eb5 d5@2 c5 bb4@2 a4@2", Z: "bb4@2 bb3!14",
  AA: "bb4 c5 d5 eb5 f5 g5 ab5 bb5 ~@8 bb4 c5 d5 eb5 f5 g5 ab5 bb5 ~@8", AB: "bb3!8 ab3!8", AC: "g3 ~@3",
  AD: "ab3!8 a3@4 ~@4", AE: "~@8 bb3!8", AF: "b3 ~@3", AG: "c4!8 c4@4 ~@4", AH: "~@7 g4",
  AI: "eb5 ~ d5 c5 d5@2 eb5@2 f5 ~ eb5@4 eb5@2", AJ: "f5 ~ eb5@4 d5@2 c5@4 b4@4",
  AK: "c5@2 g4 ~ g4 ~ g4 ~ g4 ~ g4 ~ g4 ~ g4 ~", AL: "ab4@2 ab4 ~ a4 ~ a4 ~ bb4 ~ bb4 ~ b4 ~ b4 ~",
  AM: "c5 d5 c5 d5 c5 d5 c5 d5 c5 d5 c5 d5 c5 d5 c5 d5 c5 d5 c5 d5 c5 d5 c5 d5 c5 d5 c5 d5 c5 d5 c5 d5",
  AN: "c5 d5 c5 d5 c5@4 c5 d5 c5 d5 c5@4",
  AO: "~@2 d5@2 c5@2 d5@2 c5@2 d5@2 c5@2 d5@2 c5 d5 c5 d5 c5 d5 c5 d5 c5 d5 c5 d5 c5 d5 c5 d5",
  AP: "eb5@2 eb5@2 eb5@2 d5 eb5 f5@6 f5 eb5", AQ: "d5@2 d5@2 d5@2 c5 d5 eb5@6 eb5 f5",
  AR: "g5@2 g5@2 g5@2 g5 f5 eb5@2 eb5@2 eb5@2 eb5 f5", AS: "g5@2 g5@2 g5@2 f5 eb5 d5@4 ~@4",
  AT: "~@8 bb4 ab4 c5 bb4 d5 c5 eb5 d5", AU: "f5 eb5 g5 f5 ab5 g5 bb5 ab5 ~@8",
  AV: "ab5@4 g5@8 f5@4 eb5@8 d5 eb5 d5 eb5 d5 eb5 d5 eb5",
})).s("gm_clarinet").gain(0.4)

// other · clarinet · "B♭ Clarinet" · soft notes
const clarinet_soft = note("<~@3 A B@2 C ~@3 D E F G ~@17 H I J K L M N O P Q ~@39 D E R@3>".pickRestart({
  A: "~@7 bb4", B: "eb5@2 eb5@2 eb5@2 eb5@2 g5@6 g5 f5", C: "eb5@2 f5 g5 f5@2 eb5@2 d5@4 ~@4",
  D: "~@6 g5@2 g5@2 f5 eb5 f5@2 g5@2", E: "ab5@2 g5@4 g5@2 g5@2 f5 eb5 f5@2 g5@2", F: "ab5 g5@2 g5 ab5 g5@2 f5",
  G: "eb5 d5 ~@2", H: "~@3 f4 g4@3 f4 eb4@3 f4 g4@3 f4", I: "eb4@3 f4 g4@3 f4 eb4@3 f4 g4@3 ab4",
  J: "bb4 c5 bb4 c5 d5 c5 d5 c5 bb4 c5 bb4 c5 d5 c5 d5 c5", K: "bb4 c5 bb4 c5 d5 eb5 d5 eb5 f5 eb5 f5 eb5 d5 f5 eb5 d5",
  L: "eb5@2 d5 c5 bb4 ab4 g4 f4 eb4 f4 eb4 f4 g4 f4 g4 f4", M: "eb4 f4 eb4 f4 g4 f4 g4 f4 eb4 f4 eb4 f4 g4 f4 g4 f4",
  N: "eb4@2 ~ eb5 f5@4", O: "eb5 d5", P: "eb5 f5", Q: "eb5@2 d5 ~",
  R: "[ab5@4 g5@8 g5@4 ab5@5 g5@9 f5@4 eb5@12 ~ d5@12 eb5@29 ~@8]/3",
})).s("gm_clarinet").gain(0.2)

// other · clarinet · "B♭ Clarinet"
const clarinet_2 = note(`<
  A B@2 C ~@2 A D@2 E F ~@4 G H I J K L M N@3 O P Q R@2 S T ~@8 U V@2 W X Y Z AA AB AC AD AE AF@2 AG AH AI@2 AJ AK ~@3
  AL AM AN AO AP AQ@2 AR ~@6 R@2 AS F ~@4
>`.pickRestart({
  A: "~@7 g4", B: "bb4@2 bb4@2 bb4@2 bb4@2 eb4@6 g4 ab4", C: "bb4!2 c5!2 f4@2 ~@2", D: "eb4@2 eb4@2 ab4 eb4@2 eb4",
  E: "ab4 eb4@2 d5 bb4@2 bb4@2", F: "g4 ~@3", G: "~@4 bb5 ~ bb5 ~", H: "bb5 ~ bb5 ~ bb5 ~ bb5 ~",
  I: "bb5 ~ bb5 ~ bb5 ~ bb5 ~ bb5 ~ bb5 ~ bb5 ~ bb5 ~", J: "bb5 ~ bb5 ~ bb5 ~ bb5 ~ bb5 ~ bb5 ~ bb5@2 c6 d6",
  K: "~@8 ab4@3 bb4 ab4@3 bb4", L: "ab4@3 bb4 ab4@3 bb4 ab4 bb4 ab4 bb4 ab4 bb4 ab4 bb4", M: "ab4 ~",
  N: "g4 ab4 g4 ab4 g4 ab4 g4 ab4 ~@8 g4 ab4 g4 ab4 g4 ab4 g4 ab4 ~@8",
  O: "g4 ab4 g4 ab4 g4 ab4 g4 ab4 ~@8 eb5@10 bb5@2 eb5@2 f5@2", P: "eb5@5 bb5 eb5 f5 eb5 bb5 eb5 f5 eb5 bb5 eb5 f5",
  Q: "eb5 bb5 eb5 f5 eb5 bb5 eb5 f5 eb5@4 ~@2 bb4@2", R: "eb4@2 eb4@2 ab4 eb4@2 bb4", S: "eb4@2 g4 d5 bb4@2 bb4@2",
  T: "g4 ~@7", U: "~@7 f4", V: "bb3@2 bb3@2 eb4 bb3@2 f4", W: "eb4 bb3 d4 a4 f4@2 f4@2", X: "d4 bb3!15",
  Y: "bb3 ~ bb3 ~ bb3 ~ bb3 ~", Z: "bb3!8 ab3!8", AA: "g3 ~@3", AB: "ab3!8 a3@4 ~@4", AC: "~@8 bb3!8", AD: "b3 ~@3",
  AE: "c4!8 c4@4 ~@4", AF: "bb3!8 ab3@4 ~@4", AG: "eb4!4 c4!4 g3!8", AH: "g3!8 c4@4 ~@2 g4@2",
  AI: "c4@4 c4@4 f4 ~ c4@4 g4@2", AJ: "f4 ~ c4@2 f4@2 b4@2 g4@4 g4@4", AK: "c5 ~@3",
  AL: "eb5@5 f5 eb5 f5 eb5@5 f5 eb5 f5",
  AM: "eb5 f5 eb5 f5 eb5 f5 eb5 f5 eb5 f5 eb5 f5 eb5 f5 eb5 f5 eb5 f5 f5@2 eb5@2 f5@2 eb5@2 f5@2 eb5@2 f5@2",
  AN: "eb5 f5 eb5 f5 eb5 f5 eb5 f5 eb5 f5 eb5 f5 eb5 f5 eb5 f5 ~@16", AO: "eb4!4 c4!2 f4 ab4", AP: "ab4!2 f4 d4 bb3!4",
  AQ: "bb3!8", AR: "bb3!4 bb3@2 ~@2", AS: "ab4 eb4 g4 d5 bb4@2 bb4@2",
})).s("gm_clarinet").gain(0.34)

// other · clarinet · "B♭ Clarinet" · soft notes
const clarinet_soft_2 = note("<~@3 A B@2 C ~@3 D E F G ~@17 H I J K I@2 L@3 M ~@39 N O P@3>".pickRestart({
  A: "~@7 g4", B: "bb4@2 bb4@2 bb4@2 bb4@2 eb4@6 g4 ab4", C: "bb4!2 c5!2 f4@2 ~@2", D: "~@3 g4 eb4@2 eb4@2",
  E: "ab4 eb4@2 eb4 eb4@2 eb4@2", F: "ab4 eb4@2 eb4 ab4 eb4@2 d5", G: "bb4!2 g4 ~", H: "~ bb3!7", I: "bb3!8",
  J: "bb3 f4!7", K: "f4!4 d4!4", L: "bb3/3", M: "bb3@2 bb3 ~", N: "~@3 bb4 eb4@2 eb4@2", O: "ab4 eb4@2 bb4 eb4@2 eb4@2",
  P: "[ab4@4 eb4@8 bb4@4 ab4@5 eb4@4 g4@5 d5@4 bb4@12 ~ bb4@12 g4@29 ~@8]/3",
})).s("gm_clarinet").gain(0.17)

// other · clarinet · "B♭ Clarinet"
const clarinet_3 = note(`<
  A B@2 C ~@2 A B@2 D E ~@16 A B@2 D F ~@8 G H@2 I J K L M N O P Q R@2 S T U@2 V W@7 X Y Z@2 AA@3 AB@4 B@2 D E ~@4
>`.pickRestart({
  A: "~@7 eb4", B: "eb4!4", C: "eb4!2 ab3 a3 bb3@2 ~@2", D: "eb4@2 eb4 bb3 eb4 eb3 bb4 bb3", E: "eb3 ~@3", F: "eb4 ~@7",
  G: "~@7 bb3", H: "bb3!4", I: "bb3@2 bb3 f4 bb4 bb3 f4 f3", J: "bb3@2 bb3!14", K: "bb3 ~ bb3 ~ bb3 ~ bb3 ~",
  L: "bb3!8 ab3!8", M: "g3 ~@3", N: "ab3@2 a3 ~", O: "~ bb3", P: "b3 ~@3", Q: "c4@2 c4 ~", R: "bb3@2 ab3 ~",
  S: "eb4 c4 g3!2", T: "g3@2 g3@2 c4@2 ~ c4", U: "c4!4", V: "c4@2 c4 g4 c5 c4 g4 g3", W: "c4/7", X: "c4!4 f4!4",
  Y: "bb3!4 eb4!3 bb3", Z: "eb4!3 bb3 eb4!3 bb3", AA: "[eb4!3 bb3 bb3@16 eb4@2 eb4@2]/3",
  AB: "[f4@9 f4@9 g4@12 ~ g4@12 ab4@12 g4@7 f4@7 ~ eb4@15 ~@9 eb4@9 ~@8 eb4@8 bb3@8 ~]/4",
})).s("gm_clarinet").gain(0.35)

// other · clarinet · "B♭ Clarinet" · soft notes
const clarinet_soft_3 = note("<~@3 A B@2 C ~@3 D B E F ~@17 G H I@2 H@2 J K J L ~@39 D B M@3>".pickRestart({
  A: "~@7 eb4", B: "eb4!4", C: "eb4!2 ab3 a3 bb3@2 ~@2", D: "~@3 eb4 eb4@2 eb4@2", E: "eb4@2 eb4@2 eb4@2 eb4 bb3",
  F: "eb4 eb3 bb4 bb3 eb3@2 ~@2", G: "~ eb4!7", H: "eb4!8", I: "bb3!8",
  J: "eb4 bb3 eb4 bb3 eb4 bb3 eb4 bb3 d4 bb3 d4 bb3 d4 bb3 d4 bb3", K: "eb4 bb3 eb4 bb3 eb4 bb3 eb4 bb3 f4!4 f4@2 g4@2",
  L: "eb4 bb3 eb4 bb3 eb4 bb3 eb4@2 bb3@4 ~@4",
  M: "[eb4@8 eb4@8 eb4@9 eb4@5 bb3@4 eb4@6 ~ eb3@6 bb4@6 bb3@6 eb3@29 ~@8]/3",
})).s("gm_clarinet").gain(0.18)

stack(clarinet, clarinet_soft, clarinet_2, clarinet_soft_2, clarinet_3, clarinet_soft_3)

More by Antonio Vivaldi