Strudelify

One Summer's Day

Hasty

KeyC majorTempo95 bpm
0:00/0:00
// One Summer's Day — Hasty
// 95 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 5 pizzicato strings (copy of ch 8 pizzicato strings)
// note: Transcription provider: pdmx. https://musescore.com/score/2096486; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 85 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(95/4)

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

// other · violin
const violin = note(`<
  ~@11 A ~@9 B C D E F G H I J K@3 L M N O P Q R S T U V W X Y C Z AA AB C Z AA AC AD AE AF AG AH AI AJ AK AL AK AM C Z
  AA AB C Z AA AC AD AE AF ~@8
>`.pickRestart({
  A: "~@2 e4 f4", B: "~@6 a4 b4", C: "c5!2 d5 c5 b4@2 e4 g4", D: "a4!2 g4 f4 g4@3 g4", E: "g4 f4!2 d#4 f4@2 g4 g#4",
  F: "a#4 g#4!2 g4 g4@2 g4 ~", G: "~@2 g4 ~ g4 ~ g4 ~ f4 ~ f4 ~ f4 ~ f4 ~",
  H: "~@2 g#4 ~ g#4 ~ g#4 ~ g#4 ~ g#4 ~ g#4 ~ g#4 ~", I: "~@2 g#4 ~ g#4 ~ g#4 ~ g4@4 ~@4",
  J: "a4!2 e5!2 d5!2 e5!2 a5!2 e5!2 d5!2 e5!2", K: "~@2 e5!2 d5!2 e5!2 a5!2 e5!2 d5!2 e5!2", L: "a3 ~ a3@4 c4@2",
  M: "b3 ~ b3@6", N: "g3 ~ g3@3 g3!2 d4", O: "b3 ~ a3@6", P: "f4!2 f4@3 f4 g4 a4", Q: "g4@5 e4 f4 g4",
  R: "g#4@3 a#4 c5@4", S: "b4@2 e5 f5", T: "g5 g5@2 g5!2 f5 e5 d5", U: "d5 e5 c5@4 e5 f5", V: "g5!5 f5 e5 d5",
  W: "d5 e5@5 c5 d5", X: "e5@3 a4 c5@4", Y: "e5@3 d5@3 a4 b4", Z: "c5!3 a4 d5@2 c5@2", AA: "~ g4 f4 ~",
  AB: "~@2 c5@2 c#5@2 a4 b4", AC: "~ f4 e4 a#4", AD: "f4 g4 f4 g4 f4 g4 f4 g4", AE: "f4 g4 f4 g4 f4@2 g#4@2",
  AF: "~ b4 a4 c5 b4@2 ~@2", AG: "e4@3 g4 d4@3 g4", AH: "c4@2 g4 f4", AI: "d4 c4 b3 c4 c5@3 c4", AJ: "e4@4 d4 ~ a4 b4",
  AK: "g4 ~ g4@4 g4 ~ g4 ~ g4@4 g4 ~", AL: "d4 ~ d4@4 d4 ~ c4 ~ c4@4 c4 ~", AM: "g4 ~ g4@4 g4 ~ d4@2 ~@2 a4@2 b4@2",
})).s("gm_violin").gain(0.3)

// other · violin · soft notes
const violin_soft = note("<A@2 B C ~@4 D E F G ~@65 H@2 I J K L B M>".pickRestart({
  A: "a4 b4 a4 b4 a4 b4 a4 b4", B: "g4 a4 g4 a4 g4 a4 g4 a4", C: "b4 c5 b4 c5 b4 c5 b4 g4", D: "g4 f4", E: "g4@3 ~",
  F: "~ g4 f4 e4 d4@2 c4@2", G: "d4 ~", H: "a4!2 b4!2 a4!2 b4!2 a4!2 b4!2 a4!2 b4!2",
  I: "g4!2 a4!2 g4!2 a4!2 g4!2 a4!2 g4!2 a4!2", J: "b4!2 c5!2 b4!2 c5!2 b4!2 c5!2 b4!2 g4!2", K: "e4@2 a4 e4",
  L: "f4 e4 f4@6", M: "g4",
})).s("gm_violin").gain(0.2)

// other · viola
const viola = note(`<
  A B C D E F G H I J ~ K L M N O P Q ~@4 R S T U V W X Y@2 Z Y AA AB AC AD AE AF AG AH AI AJ AK AL AM AN ~@2 AO AP ~@2
  AO AQ AR AS AT AU AV AW AX AY AZ AY BA ~@2 AO AP ~@2 AO AQ AR AS AT A B C D AM BB BC BD
>`.pickRestart({
  A: "e4@3 d4@3 g4@2", B: "e4@3 d4@5", C: "d4@3 c4@3 g4@2", D: "d4@3 c4@3 b3@2", E: "a3@3 c4", F: "b3@2 e4 b3",
  G: "a3 b3", H: "b3 a3", I: "a3@5 c4 b3 a3", J: "d4@2 c4@2 b3 c4@3", K: "b3@2 g4 g#4", L: "a4 ~ a4@4 a4 ~ g#4@4 f4@4",
  M: "e4@2 f4 a#4", N: "a4!4 g#4@2 f4@2", O: "e4@3 g4", P: "f#4@4 a4 b4 c5 d5", Q: "e5@3 d5 d5@2 ~@2",
  R: "~ c4 e4 c4 ~ b3 e4 b3", S: "~ a3 c4 a3 ~ g3 c4@2", T: "~ g3 c4 g3 ~ f3 a#3 f3", U: "~ f3 a#3 f3 ~ a#3 d#4 a#3",
  V: "~@2 g3 ~ g3 ~ g3 ~ f3 ~ f3 ~ f3 ~ f3 ~", W: "~@2 g#3 ~ g#3 ~ g#3 ~ g#3 ~ g#3 ~ g#3 ~ g#3 ~",
  X: "~@2 g#3 ~ g#3 ~ g#3 ~ g3@4 ~@4", Y: "a4!2 b4!2 a4!2 b4!2 a4!2 b4!2 a4!2 b4!2",
  Z: "a4!2 c5!2 a4!2 c5!2 a4!2 c5!2 a4!2 c5!2", AA: "~ e4!4 d4 e4 a4", AB: "e4 d4 d4@6", AC: "~ d4!4 c4 d4 g4",
  AD: "d4@2 c4@2 b3@2 c4@8 a3 b3", AE: "c4@2 c4@2 c4@2 c4@2 c4@6 a3 b3", AF: "c4@2 c4@2 c4@2 c4@2 b3@2 c4@4 a3 b3",
  AG: "c4@2 c4@4 c4@2 c4@2 g4@4 f4 e4", AH: "g4 ~", AI: "e4 c4 d4 b3", AJ: "b3 c4 [a3,c4]@2 a#3@2 a#3@2",
  AK: "a3 c4 d4 b3", AL: "b3 c4 c4@6", AM: "c4", AN: "c4@2 b3 ~", AO: "~ g3 f3 ~", AP: "~ c4 c#4 ~", AQ: "~ f3 e3 a#3",
  AR: "f3 g3 f3 g3 f3 g3 f3 g3", AS: "f3 g3 f3 g3 f3@2 g#3@2", AT: "~ b3 a3 c4 b3@2 ~@2", AU: "~ g3 c4 g3 ~ g3 a3 g3",
  AV: "~ g3 a3 g3 ~ f3 g3 f3", AW: "~ e3 c4 e3 ~ c4 e4 c4", AX: "~ a3 e4 a3 ~ b3 f4 b3",
  AY: "e4 ~ e4@4 e4 ~ e4 ~ e4@4 e4 ~", AZ: "b3 ~ b3@4 b3 ~ a3 ~ a3@4 a3 ~", BA: "e4 ~ e4@4 e4 ~ b3@4 ~@4", BB: "b4 g#4",
  BC: "g4 a4 g4 a4 g4 a4 g4 a4", BD: "g4",
})).s("gm_viola").gain(0.3)

// other · pizzicato strings
const pizzicato_strings = note(`<
  ~@18
  [a3 e4 a4 ~@2 e4 b4 ~]
  [~ a3 a4 ~@2 b4 g4 ~]
  [~ b4 g4 ~@2 g4 f4 ~]
  [~ g4 f4 ~@2 b4 ~@2]
  ~@63
>`).s("gm_pizzicato_strings").gain(0.4)

// other · cello
const cello = note(`<
  A B C D E F G H I J K L M N O P Q R ~@4 S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AH AP AQ AR AS AT
  AQ AU AS AV AW AX AY AZ BA BB BC BD BE BD BF AQ AR AS AT AQ AU AS AV AW AX AY ~@4 E F G BG
>`.pickRestart({
  A: "f2 c3 f3@2", B: "g2 d3 b3@2", C: "c2 g2 e3 b2", D: "a2 e3 c4 e3", E: "f3", F: "g3", G: "c3", H: "a2@3 e3",
  I: "d3", J: "e3", K: "f3 d3", L: "g2 c3!2 d3!2 c3 b2@2", M: "f2 c3 f3@2 e2 b2 e3@2", N: "a2 e3 a3 g3 f3@2 e3@2",
  O: "f2 c3 f3@2 e2 b2 d3@2", P: "b3 c4@2 b3 c4@4", Q: "c4 d4", R: "g3 d3 g2 ~", S: "a2 g2", T: "f2@2 e2 e3",
  U: "d#3 d3", V: "c#3 c3", W: "f3 d#3", X: "d3 d2", Y: "d2 f2 b2 c3 d3@4", Z: "f3 f3@2 f3", AA: "e3 e3@2 e3",
  AB: "d3 d3@2 d3", AC: "e3 e3@2 e2", AD: "f3 ~ f3@4 f3@2", AE: "g3 ~ g3@6", AF: "c3 ~ c3@4 b2@2", AG: "a2 ~ a2@4 e3@2",
  AH: "d3@5 d3 e3 f3", AI: "e3@5 c3 d3 e3", AJ: "f3@3 g3 g#3@4", AK: "a3 d3 g2@2", AL: "f3@2 e3 d4",
  AM: "c4@3 g#2 g2@2 c3@2", AN: "f2@2 e2 d3", AO: "a2 e3 a3@2", AP: "a3 c4 b3 ~", AQ: "a2 a3 g3 g2", AR: "f2 f3 e3 e2",
  AS: "~ d#3 d3 ~", AT: "~ d#3 f3 g2", AU: "f2@2 f3@2 e3@2 e2 ~", AV: "~ f3 e3 a#3", AW: "f3@3 f3 d#3@3 d#3",
  AX: "d3@3 d3 d3@2 g#2@2", AY: "g2@3 ~", AZ: "c3 b2", BA: "a#2 a2", BB: "g2 f#2", BC: "f2 g2",
  BD: "g3 ~ g3@4 g3 ~ g3 ~ g3@4 g3 ~", BE: "d3 ~ d3@4 d3 ~ c3 ~ c3@4 c3 ~", BF: "a3 ~ a3@4 a3 ~ b3@4 ~@4", BG: "c2",
})).s("gm_cello").gain(0.3)

// other · pizzicato strings
const pizzicato_strings_2 = note("<~@18 A B C D ~@55 E F G H ~@4>".pickRestart({
  A: "a2 e3 a3 a2 g2 ~@2 g2", B: "f2 ~@2 f3 e3 ~@2 e2", C: "d#2 ~@2 d#3 d3 ~@2 d#2", D: "d2 ~@2 c3 c#3@2 g2@2",
  E: "f3 c4 f4@2", F: "g3 d4 b3@2", G: "c3 g3 e4 b3", H: "a3 e4 c4 e4",
})).s("gm_pizzicato_strings").gain(0.3)

// bass · contrabass
const bass = note(`<
  ~@4 A B C D E F G H I J K L M N ~@8 O P Q ~@4 R S T U ~@2 V W X Y Z AA AB AC ~@3 AD ~@3 AE O AF AG AH AI AJ AK AL AM
  AN AO ~@3 AD ~@3 AE O AF AG ~@5 AL AP@2
>`.pickRestart({
  A: "f2@3 c3", B: "b2", C: "c3", D: "a2@3 e2", E: "d2", F: "e2", G: "f2 d2", H: "b1@2 e2 f2", I: "a2", J: "e2@3 a#2",
  K: "~@2 g#2 f2", L: "e2@3 g2", M: "f#2 d2", N: "g2 d2 g1 ~", O: "f2 d#2", P: "d2!2", Q: "d2 b2 d2@2",
  R: "f1 ~ f1@4 f1@2", S: "g1 ~ g1@6", T: "c2 ~ c2@4 b1@2", U: "c2 ~ c2@4 e2@2", V: "f1 g#1", W: "a2 d2 g1@2",
  X: "f1@3 d2", Y: "c2@3 c2", Z: "f1@2 e2 d2", AA: "~ e2 a1@2", AB: "d2@5 d2 e2 f2", AC: "f2 d2 g1 ~",
  AD: "~ d#2 f2 g1", AE: "~ f2 e2 a#2", AF: "d2@2 d2 g#1", AG: "g1@3 ~", AH: "e2@3 g2 d2@3 g2", AI: "a#2 a1",
  AJ: "g1 f#1", AK: "f1 g1", AL: "g1", AM: "d2 ~ d2@4 d2 ~ c2 ~ c2@4 c2 ~", AN: "g2 ~ g2@4 g2 ~ g2 ~ g2@4 g2 ~",
  AO: "a2 ~ a2@4 a2 ~ b2@4 ~@4", AP: "c2",
})).s("gm_contrabass").gain(0.3)

// bass · contrabass · soft notes
const bass_soft = note("<A B C D ~@25 E F G F ~@52>".pickRestart({
  A: "f2@3 g2", B: "e2@3 d2@5", C: "c2 e2", D: "a1", E: "f2 f2@2 f2", F: "e2 e2@2 e2", G: "d2 d2@2 d2",
})).s("gm_contrabass").gain(0.2)

// bass · acoustic bass
const bass_2 = note(`<
  ~@18
  [a1@2 ~ a1 g1 ~@2 g1]
  [f1 ~@2 f2 e2 ~@2 e2]
  [d#2 ~@2 d#2 d2 ~@2 d2]
  [d2 ~@2 c2 c#2@2 g1@2]
  ~@63
>`).s("gm_acoustic_bass").gain(0.4)

// bass · acoustic bass · soft notes
const bass_soft_2 = note("<~@77 [f2 c3 f3 g2] [g2 d3 b2 c2] [c2 g2 e3 b2] [a2 e2 c2 g1] ~@4>")
  .s("gm_acoustic_bass").gain(0.2)

stack(violin, violin_soft, viola, pizzicato_strings, cello, pizzicato_strings_2, bass, bass_soft, bass_2, bass_soft_2)