Strudelify

Our Day Will Come

The Four Seasons

KeyG majorTempo100 bpm
0:00/0:00
// Our Day Will Come — The Four Seasons
// 100 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 69 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(100/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 · electric guitar jazz · "Guitar-Harry"
const electric_guitar_jazz = note(`<
  ~ A@4 B C D E F G H I@3 J@2 K@2 L M N O P Q R S T U V W@2 X Y Z AA ~ AB AC@2 AD AE@2 AF@2 AG AH AI@2 AJ@2 AK@2 AL AM
  AN@2 AO AP AQ AR AS@2 AT AU AV@2 AW ~
>`.pickRestart({
  A: "[~@24 d4@9 ~@3 g4@10 ~@2, ~@7 g3@52 ~@37, ~@2 b3@5 ~]/4",
  B: "~@5 g4@5 ~@2, ~@4 g3@17 ~@3, ~@3 b3@8 ~, ~@2 d4@3 ~",
  C: "~@10 g#4@5 ~@3 f#3@2 ~ [g3,g#3] a3@2, ~ f3@16 ~@7, ~@3 b3@13 ~@8, ~@3 d4@5 ~@4", // G#maj7
  D: "~@13 a3@3 g#3@4 ~ g3@3, ~ a3@11 ~@12, ~ e4@3 ~@2",
  E: "~@12 b4@3 ~@5 e4@3 ~, ~ f#3@16 ~@7, ~@5 c4@19, ~@8 e4@11 ~@5",
  F: "~@6 d4@5 ~, ~ g2@18 ~@5, ~@4 f#3@15 ~@5, ~@8 b3@15 ~",
  G: "~@6 d4@3 g#4 [f#3,c4,d#4,a4] [g3,c#4,e4,a#4] ~ g#3@9 ~@2, f3 ~@3, ~@3 b3@7 ~@2 d4@9 ~@3", // F#dim Gdim
  H: "~@12 a3@3 ~ g#3@4 ~ g3@3, a3 ~, ~ c4@3 ~@4, ~@3 e4@5 ~@4",
  I: "[~@6 c4@20 ~@16 a4@2 ~@2 c#4 c4@2 ~@5 b3@13 ~@5, ~@2 f#3@25 ~@6 d4@13 ~@4 f3@17 ~@5, ~@38 f4@9 ~@25]/3",
  J: "[~@5 b4@5 ~@4 b4@17 ~@5 b4@3 a#4@2 ~ a4@3 b4@2 ~, ~ g3@31 ~@16, ~@2 c4@32 ~ c4@12 ~, ~@3 e4@32 ~ e4@11 ~]/2",
  K: "[~ a4!2 g#4 [g4,g#4] ~ g4@2 ~@17 c4@23, ~@4 d#4@9 ~@11, ~@13 c4@10 ~@25, ~@21 g3@26 ~]/2", L: "~ g3@21 ~@2",
  M: "a3@5 ~ g#3@3 g3@2 ~ f#3@4 ~@4 d4@2 ~@2, ~@19 [f#3,a#3]@4 ~", N: "~@3 b3@5, ~ g2@21 ~@2, ~@5 f#3@17 ~@2",
  O: "~@8 g#4 [d#4,a4] [f#3,g3,c4,c#4,a#4] ~@2 b4@2 [d#4,f#4,c5,c#5] e4 ~@2 d5@4 ~, ~ f3@9 ~ g#3@4 ~@9, ~@5 b3@5 ~@2 [d4,f4]@3 ~@3 [f4,g#4]@6, ~@7 d4@2 ~@2 b4@2 ~@11", // D#dim F# Cdim Dm Fm
  P: "~@13 a3@3 g#3@4 ~ g3@2 ~, ~ a3@3 ~@4, ~@7 e4@8 ~@9", Q: "~@18 a2@2 g#2@3 ~, ~ f#3@16 ~@7, ~@5 c4@15 ~@4",
  R: "g2@2 ~", S: "~@10 d4@8 f#3@3 g3 g#3 a3, f3@17 ~@7, ~@6 b3@11 ~@7",
  T: "~@6 a4@9 ~@3 g#3@2 ~ g3@3, ~ a3@16 ~@7, ~@5 e4@13 ~@6",
  U: "~@13 a4@2 ~@3 d3@2 d#3 [e3,f3] f#3 g3, ~ f#3@7 ~@4, ~@5 c4@11 ~@8, ~@9 e4@7 ~@8", // Fmaj7
  V: "~@2 f4@3 ~@3, ~ g3@14 ~@9, ~ b3@3 ~@2",
  W: "[f#3 ~@2 e5@3 ~ d5@11 ~@7 b4@18 ~@5, b3@5 ~@43, ~ f4@17 ~@5 e4@23 ~@2, ~ a4@8 ~@3 g4@12]/2",
  X: "~@4 [g4,b4]@2 [d#4,f#4,a#4] d4 c#4 c4@4 ~@9 e4 ~, ~@3 e4@2 ~@9 c4@9 ~, ~@5 d#4@3", // G D#m
  Y: "~@2 g2@8 ~@2 f3@5 ~ f#3@3 g3 g#3 a3", Z: "~@4 e4@3 ~ g#3@3 g3@3 ~ f#3@5 a2@4, ~ a3@7 ~@16",
  AA: "~ g2@14 ~@4 a#2@5", AB: "~@6 g4@2 f#4 f4 e4 ~ d4@8 ~ e4@3",
  AC: "[~ f4@25 ~@5 e4@2 f4 [f#4,g4] ~ g#4 g4@7 g#4 a4@2 a#4]/2", AD: "b4@2 ~ b4@6 ~ a4@3 ~ a4@9 ~",
  AE: "[~@5 b3 ~@3 f#4 f4 e4@2 d4@5 e4@3 ~ f4@19 ~@7, ~@3 d4 c5 ~@19, ~@7 g4@3 ~@38]/2",
  AF: "[f3 [f#3,g3] [g#3,a3] a3 ~ a4@2 ~ b4@2 ~ a4@2 [g4,g#4] f#4@2 ~ g4@2 ~ a4@3 [a#4,b4]@2 ~ b4@6 ~ a4@3 ~ a4@10 ~, ~@4 [c4,e4]@3 ~@41]/2", // Gmaj7 Amaj7 G#maj7 Bmaj7 C
  AG: "~@6 d5@2 c#5 c5 b4@2 ~ g4@4 ~ a4@3 [a#4,b4]@2 ~, ~@13 d4 ~@10", AH: "~ b4@3 c5@3 ~ d5@3 ~ c5@3 b4@4 ~ a4@3 ~",
  AI: "[a#4 ~ f#4 ~@3 a#4@3 a4 ~ g4@4 g4@15 b3@2 ~ c4@3 e4@3 g4@3 g4@3 ~ g4@2, ~ b4@6 ~@32 d#4 ~@8]/2",
  AJ: "[~ [g#4,a4] ~ [a4,a#4] a#4!2 ~ a4!2 ~@2 g4@3 g4@16 ~ g4@2 g4 ~ g4 ~ g4!2 ~ f#4 e4 ~ d#4 ~@2 c4@2]/2", // Amaj7 A#maj7
  AK: "[~ b3@8 ~ b3@3 e4@8 [b3,d4]@2 a#3@2 ~ a3@5 ~@2 [a3,c4] ~ [a#3,c4] ~ a3@2 g#3@2 ~ g3@3 g3@3]/2", // Bm Am A#sus2
  AL: "~@9 d4@3 ~@7 b3@3 b3@2, ~ g2@19 ~@4, ~@4 f#3@15 f#3@5, ~@2 b3@3 ~@3, ~ d4",
  AM: "~ b3@2 ~@4 d4 d#4 [c4,e4,a4,a#4] c#4 ~ f4@2 ~ [f4,b4] [d#4,f#4,c5] [e4,f4,g4,c#5,d5] f4@4 [g#4,d5] ~, ~ f3@8 f#3@5 ~@10, ~@3 b3@6 ~ [d4,b4]@6 ~ g#4@4 ~@3", // Am Fdim Cdim C#dim G#dim G
  AN: "[~@6 a4@3 a4@2 ~ a3@2 ~ g#3@3 g3@3 a3 ~ g#3@2 ~@5 e4 ~@5 f#3@2 ~@4 a#3@3 d4 ~@2, a3@12 ~@14 f#3@10 ~@3 f#3@8 ~, ~@3 c4@9 ~@16 c4@10 ~@10, ~@16 e4@3 ~@5]/2",
  AO: "~@12 b3@3 ~@3 b3@3 ~ [b3,d4]@2, ~ g2@20 ~@3, ~@3 f#3@8 ~ f#3@12, ~ b3 ~@2, ~@9 d4@13 ~@2", // Bm
  AP: "~@6 d4@3 [d#4,g#4] [c4,c#4,e4,a4,a#4] [d4,b4] d4@3 [f4,b4] [d#4,f#4,c5] [e4,f4,g4,c#5] g#4@3 [g#4,d5]@2 [d#4,f#4], f3@11 ~, ~@3 b3@6 ~@2 f4@4 ~@2 d5@4 ~@3, ~@18 f4@5 ~", // G#5 A G Fdim Cdim C#dim G#dim D#m
  AQ: "~@3 a4@3 ~@3 a4@2 ~@4 [e4,a4]@2 ~@5 [d#4,g#4]@2, ~ e4@4 ~@2 c4, ~@6 a3@5 ~ g#3@6 g3@6", // A5 G#5
  AR: "e3 ~@3 e4 ~@2 d3@2 [c#3,d3,f#3] [c4,d#4] ~@2 a#3 ~@2 [a#3,d4,g4]@3 a2@2 ~ g#2@2, b3@3 c4@2 ~@19, ~ f#3@4 ~@7 f#3@7 ~@5", // Dmaj7 Cm Gm
  AS: "[~@4 c#3 ~ b3@4 d3 ~@3 [d#3,e3,g3] [f3,f#3] ~@7 g4@3 ~@6 b3 ~@2 e5@2 [a4,d5]@8 ~@3, ~ g2@9 ~@6 g3@11 ~@4 d3@8 ~@9, ~@19 b3@7 ~@5 f#3@3 a4@3 ~@11, ~@21 f4@6 ~@6 f4@13 ~@2]/2", // D# F#maj7 D5
  AT: "~@2 g4@4 ~ g4@5 ~ [g4,b4]@7 ~@4, ~ e4@18 ~@5, ~@2 b4@11 ~@11", AU: "~@4 a4@15 ~@5, ~@2 c4@21 ~, ~@3 d#4@20 ~",
  AV: "[~ f#3@8 g3@4 b3@5 ~ g3@3 g#3 a3@2 a3@6 ~ g#3@2 g3@3 ~@8 e4@2 ~, ~@19 f#3@5, ~@41 c4@7]/2", AW: "~ g2@10 ~",
})).s("gm_electric_guitar_jazz").gain(0.25).pan(0.9)

// chords · electric guitar jazz · "Guitar-Harry" · soft notes
const electric_guitar_jazz_2 = note(`<
  ~@7 A ~@2 B C D@2 E F ~@2 G H ~@2 I J K L ~ M ~ N ~@2 O ~ P ~@2 Q ~@5 R ~ S ~@4 T ~ U V W X Y ~@2 Z AA AB ~@4 AC ~@2
>`.pickRestart({
  A: "~@5 a4@6 ~@13", B: "~@11 f4@12 ~", C: "~@3 a4@2 ~@7", D: "[~@9 d4@17 ~@22]/2", E: "~ b3 ~@8 d4@9 ~@5",
  F: "~@10 b4@3 ~@11", G: "~@7 g4@14 ~@3, ~ d#4@5", H: "d3 ~@22 [g#3,a3]",
  I: "~@10 e4 f4 ~@3 [a3,g4] [g#4,d5]@2 ~@6, ~@16 b3@7 ~", J: "~@8 a4@3 ~@13", K: "~@4 d4@5 ~@3",
  L: "~@13 e4@10 ~, ~@5 b3@6 ~", M: "~@2 c4@3 ~@7", N: "~@9 g4@7 ~@8", O: "~@7 [f4,a4] [e4,g#4] g4 ~@5 g4@7 ~@2",
  P: "~@4 a4@2 ~@13 g3@4 ~, ~@4 c#4 ~@19", Q: "~@11 d#4 ~@12", R: "~@4 f#4 ~@7", S: "~@13 c5 ~@10", T: "~@10 d4 ~",
  U: "~@10 c#4 ~@13", V: "~ c3@16 ~@7", W: "~@10 f4@2 ~@2 g#3@3 b3@6 ~, ~@17 a3 ~@6", X: "~@21 d#3 ~@2",
  Y: "~@9 a4@5 ~@10", Z: "a3@6 ~@17 e4", AA: "~@3 a#3@2 ~@19", AB: "~@9 c#4 ~@4 [g#3,a3] ~@9", AC: "~@4 e4@3 ~@17",
})).s("gm_electric_guitar_jazz").gain(0.13).pan(0.9)

// chords · piano
const piano = note(`<
  ~ A@2 B@2 C D E F C D E F G H I@2 J@2 K L C D E F C D E F G M N O P@2 Q R C D E F C D E F G H I@2 J@2 K L C D E F C D
  E F G M N O P@2 Q S
>`.pickRestart({
  A: "[d5@7 ~]/2", B: "b4/2", C: "~ [b3,d4,g4] [g3,b3,d4] [g3,b3,e4]", D: "f4", E: "~ [g3,c4,e4] [c4,e4,g4] [c4,e4,a4]",
  F: "b4@3 a4 a4@4", G: "~ [f4,a4,d5] [c4,f4,a4] [d4,f4,b4]",
  H: "[f4,a4,c5]@4 [f4,a4,d5]@4 [f4,a4,c5]@4 [d4,f4,b4]@6 [d4,f4,a4]@3 ~@3", I: "[b4@3 g4 g4@10 a4@2]/2",
  J: "[a#4@9 g4@3 g4@24 [c4,e4,a#4]@4 [c4,e4,a4]@4 [c4,e4,g4]@4]/2", K: "d4@2 a4 d5 d4@2 g#4 d5",
  L: "c4@2 g4 c5 [d4,f#4,b4]@2 [c4,f#4,a4]@2", M: "[f4,a4,c5]@4 [f4,a4,d5]@4 [f4,a4,c5]@4 [d4,f4,b4]@9 [d4,f4,a4]@3",
  N: "b4@3 g4 g4@3 a4", O: "a#4@3 g4 g4@4", P: "[d4 b4@2 f#4]/2", Q: "g4@3 [e4,g4,b4,e5]", R: "g4 a4",
  S: "[d4,e4,g4,b4]@3 ~", // Em7
})).s("gm_piano").gain(0.64)

// chords · electric guitar muted · "Guitar"
const electric_guitar_muted = note(`<
  ~ A B C@2 ~ D ~ E ~ D ~ E ~@2 F@2 G H I J ~ D ~ E ~ D ~ E ~@2 F G K L M N ~ D ~ E ~ D ~ E ~@2 F@2 G H I J ~ D ~ E ~ D
  ~ E ~@2 F G K L M O
>`.pickRestart({
  A: "~ [e4,g4,b4] ~ [e4,g4,b4]", B: "~ [e4,g4,b4] ~ [e4,g4,b4,e5]", C: "~ [d4,e4,g4] ~ [d4,e4,g4]",
  D: "~ [g#3,d4] ~ [g#3,d4]", E: "~ [c4,f#4] ~ [c4,f#4]", F: "~ [c4,e4] ~ [c4,e4]", G: "~ [c4,d#4] ~ [c4,d#4]",
  H: "~ [c4,d#4] ~@2", I: "d4!2", J: "c4 ~", K: "~ [g3,b3] ~ [d4,g4]", L: "~ [c4,e4,g4] ~ [c4,d4]", M: "~ [b3,d4] ~@2",
  N: "~ [c4,e4] ~ [c4,f#4]", O: "~ [d4,e4,g4,b4]@3",
})).s("gm_electric_guitar_muted").gain(0.29)

// bass · acoustic bass · "Bass"
const bass = note(`<
  ~ A@4 B C D E B C D E F G H I J K L M B C D E B C D E F N O@2 P Q R Q B C D E B C D E F G H I J K L M B C D E B C D E
  F N O@2 P Q R S
>`.pickRestart({
  A: "g2@2 ~ g2 d2@2 ~ d2", B: "g2@2 ~ d2 g2@2 ~ g2", C: "a#2@2 ~ a#2 f2@2 ~ a#2", D: "a2@2 ~ a2 e2@2 ~ a2",
  E: "d2@2 ~ a2 d3@2 ~ d3", F: "d2@2 ~ d3 g2@2 ~ g2", G: "[d2,d3]@2 ~ d3 g2@2 ~ g2", H: "c2@2 ~ g2 c3@2 ~ g3",
  I: "b3@3 g3 g3@4, c3", J: "c3@2 ~ g3 c3@2 ~@2", K: "a#3@3 g3 g3@4, c3", L: "[b2,f#3] [a#2,f3]",
  M: "[a2,e3]@4 d3@3 d3", N: "[d2,f#3]@2 ~ d3 g2@2 ~ g2", O: "c3 g3", P: "g2@2 ~ f#2 e2@2 ~ b2",
  Q: "a2@2 ~ a2 d2@2 ~ d3", R: "g2@2 ~ g2 d2@2 ~ d3", S: "g2@2 ~ d2 g2@2 ~@2",
})).s("gm_acoustic_bass").gain(0.4)

// drums · kick
const kick = s("bd").struct(`<
  ~ A ~ A ~@2 A@2 ~ A ~@2 A ~ B ~@2 A@2 ~@2 A ~@4 A ~@4 A ~@2 A@4 ~ C A C A@3 ~@2 A C ~@2 A ~@2 B ~ A ~@2 A ~@2 A B ~@2
  A ~ A
>`.pickRestart({
  A: "x", B: "x ~@10 x", C: "~@11 x",
})).gain(0.36).pan(0.3)

// drums · rim
const rim = s("rim").struct("~ x ~ x").gain(0.43).pan(0.3)

// drums · hihat
const hihat = s("hh").struct("<A@3 B A@18 B A@2 B A C A C A@6 C A B A@21 C@2 A@4 B A D>".pickRestart({
  A: "x ~@2 x ~ x!2 ~@2 x ~ x", B: "x ~@2 x ~ x!2 ~ x!2 ~ x", C: "x ~ x!2 ~ x!2 ~@2 x ~ x",
  D: "x ~@2 x ~ x!2 ~@2 x ~@2",
})).gain(0.43).pan(0.3)

stack(electric_guitar_jazz, electric_guitar_jazz_2, piano, electric_guitar_muted, bass, kick, rim, hihat)

More by The Four Seasons