Strudelify

Dawn (Go Away)

The Four Seasons

KeyC majorTempo129 bpm
0:00/0:00
// Dawn (Go Away) — The Four Seasons
// 129 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 4 "Melody 1" distortion guitar (copy of ch 9 "Strings" cello)
// note: Full arrangement: all 89 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(129/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.

// bass · fretless bass · "Bass"
const bass = note(`<
  A@2 B C@5 D E F G H I J F D E K L M N M O P Q H@2 R K S H T J D E U V H@2 W X H@2 W Y Z AA AB Y H@2 F X E H G W H@2
  K@2 M Q AC AD M AD H@2 K R H E W@2 D H X W D H X W D H X W ~
>`.pickRestart({
  A: "[~@9 c2@9 ~ c2@3 a1@9 ~@2 a1@3 g2@9 ~ g2@2]/2", B: "~@2 d3@7 d2@5 ~@2 c2@8",
  C: "[~@2 c2@2 ~ c2@9 ~@2 c2@2 ~@2 c2@6 c2@6 c2@8 ~@2 c2@3 c2@6 c2@6 c2@8 ~@2 c2@3 f2@6 f2@6 f2@13 f2@6 f2@6 f2@13]/5",
  D: "c2@8 ~ c2@2 ~ c2@12", E: "c2@7 ~@2 c2@2 ~ c2@8 ~ c2@2 ~", F: "f2@7 ~@2 f2@2 ~ c3@5 ~ f2@3 ~@3",
  G: "f2@8 ~ f2@2 ~ c3@6 c2@4 ~@2", H: "c2@7 ~@2 c2@2 ~ g2@5 ~ c2@3 ~@3", I: "c2@7 ~@2 c2@2 ~ g2@6 c2@2 ~@4",
  J: "f2@7 ~@2 f2@2 ~ c2@6 f2@2 ~@4", K: "a1@8 ~ a1@2 ~ a1@12", L: "a1@7 ~@2 a1@2 ~ e2@5 ~ a1@3 ~@3",
  M: "d2@12 e2@8 ~ e2@3", N: "f2@8 ~ f2@3 g2@8 ~ g2@3", O: "f2@8 ~ f2@3 g2@12", P: "d2@8 ~ d2@3 e2@8 ~ e2@3",
  Q: "f2 g2", R: "a1@7 ~@2 a1@2 ~ a1@8 ~ a1@2 ~", S: "c2@6 c2@6 c2@8 ~ c2@3", T: "f2@7 ~@2 f2@2 ~ c3@6 f2@2 ~@4",
  U: "d2@8 ~ d2@2 ~ d2@12", V: "g2@7 ~@2 g2@2 ~ g2@8 ~ g2@2 ~", W: "f2@8 ~ f2@2 ~ f2@12",
  X: "f2@7 ~@2 f2@2 ~ f2@8 ~ f2@2 ~", Y: "g2@7 ~@2 g2@2 ~ d2@6 g2@2 ~@4", Z: "d#2 f2", AA: "g2@8 ~ g2@2 ~ g2@12",
  AB: "d#2@8 ~ d#2@3 f2@12", AC: "d2@8 ~ d2@3 e2@12", AD: "f2@12 g2@8 ~ g2@3",
})).s("gm_fretless_bass").gain(0.27)

// chords · piano
const piano = note(`<
  A@8 B C D E F B E@2 G@2 H I J K L M N O B C I@2 P Q R S F B T U Q G V S B W X U Y Z AA AB C@2 D AC W Q E@2 F G AD AE
  AF AG AH AI AJ AG F B AD AE AK AL AM E AK AN D AO AK AN D AO AK AN D AO ~
>`.pickRestart({
  A: "[~@9 [g3,c4,g4]@13 ~ [e3,a3,e4]@13 ~@21 g#3@7 [c2,c4]@9 ~@15 c4 ~@3 [g3,b3,e4]@6 [g3,a3,c4,e4]@6 [c3,a3,c4,e4,g4]@13 [g3,b3,c4,e4]@6 [g3,a3,c4,e4]@6 [c3,a3,c4,e4,g4]@13 [f3,a3,c4,e4]@6 [f3,a3,c4,d4]@6 ~ a3@12 [f3,a3,c4,e4]@6 [f3,a3,c4,d4]@6 ~ [f2,a3,c4]@12, ~@8 e4@14 c4@14 [g2,b3,d4,f4]@28 [e4,g4]@27 c4@6 ~@82 [d4,f4]@13, ~@64 g3@17 c3@10 ~@101, ~@74 c2@17 ~@63 [f2,c4,d4,f4]@13 ~@25, ~@85 g3@6 ~@101]/8", // C5 A5 C Em Am7 Cmaj7 Am7 Fmaj7 …
  B: "[c2,g3,c4,e4,g4]", C: "~@3 [e4,g4]@5, c4@17 ~@7, g3@5 ~@3", D: "[f2,c4,f4,a4]", E: "[f2,a3,c4,f4,a4]",
  F: "[g3,c4]@4 ~ [c3,g3]@7, [c2,e4,g4], ~@3 c4@5", G: "~@3 g3, [c2,c4,e4,g4], ~@5 c3@3", H: "[a2,a3,c4,e4]",
  I: "[a2,e3,a3,c4,e4]", J: "[a3,c4,d4,f4] [g3,b3,e4,g4]", K: "a3@2 ~ a3 [g2,b3,d4,f4,g4]@4, [c4,f4,a4] ~",
  L: "[d3,c4,d4,f4,a4] [g3,b3,e4,g4]", M: "[f2,a3,c4,f4,a4] [g2,b3,d4,f4,g4]",
  N: "a3@2 ~ a3 [e2,g3,b3,e4,g4]@4, [c4,d4,f4] ~", O: "[f2,a3,c4,f4,a4] [g3,b3,d4,f4]",
  P: "[g3,b3,c4,e4] [g3,a3,c4,e4] [g3,a3,c4,e4]@2", Q: "~@21 c4 ~@2, [e4,g4], [c2,c4]@8 ~ c2@15, ~ g3@14 c3@9, ~@3 g3",
  R: "[f2,a3,c4,d4,f4]", S: "[f2,g#3,c4,d4,f4]", T: "[d2,a3,d4,f4,a4]", U: "[g2,b3,d4,f4]",
  V: "~@3 [c4,d4]@5, a3@17 ~@7, f3@5 ~@3", W: "[c2,c4,e4,g4]", X: "[f2,c4,f4,g#4]",
  Y: "[d#2,g3,a#3,d#4,g4] [a3,c4,f4,a4]", Z: "[b3,d4]@4 ~ b3@7, [g2,g4,b4], ~@3 d4@5",
  AA: "g3@2 ~ g3 [a3,c4,f4,a4]@4, [a#3,d#4,g4] ~", AB: "~@21 b3 ~@2, [d4,f4], [g2,b3]@8 ~ g2@15, ~ g3@15 ~@2 g3@6",
  AC: "~@3 a3, [f2,c4,f4,a4]", AD: "~@3 e3, [a2,a3,c4,e4]", AE: "~@3 [c4,e4]@5, a3@17 ~@7, e3@5 ~@3",
  AF: "[d3,c4,d4,f4,a4] [e2,g3,b3,e4,g4]", AG: "[a3,c4,f4,a4] [g2,b3,d4,f4,g4]", AH: "[a3,c4,d4,f4] [e2,g3,b3,e4,g4]",
  AI: "a3@2 ~ a3 [g3,b3,d4,f4]@4, [c4,f4,a4] ~", AJ: "[d3,c4,d4,f4,a4]@4 g3@2 ~ g3, ~ [b3,e4,g4]",
  AK: "~@3 g3, [c2,a3,c4,e4], ~@5 c3@3", AL: "~@21 a3 ~@2, [c4,e4], [c2,a3]@8 ~ c2@15, ~ g3@14 c3@9, ~@3 g3",
  AM: "~@3 [f4,a4]@5, c4@17 ~@7, a3@5 ~@3", AN: "[g3,a3]@4 ~ [c3,g3]@7, [c2,c4,e4], ~@3 a3@5",
  AO: "[a3,c4]@4 ~ a3@7, [f2,f4,a4], ~@3 c4@5", // Am F
})).s("gm_piano").gain(0.13).pan(0.3)

// chords · piano · soft notes
const piano_soft = note(`<
  ~ A@2 B ~@6 C ~@5 D@2 E ~@12 F ~@5 G F D ~@3 H I G ~@3 J ~@2 C K H F ~@3 D L ~@9 L ~ D M ~@2 D ~ C ~ D ~ C ~ D ~ C ~@2
>`.pickRestart({
  A: "[~@3 g#3@4 ~@5]/2", B: "~ c4@5 ~@6", C: "a3", D: "g3@7 ~@5", E: "e3", F: "~@9 c4@8 ~@7", G: "g3", H: "~@3 c3, g3",
  I: "g#3", J: "~@9 b3@8 ~@7", K: "a3@7 ~@5", L: "e3@7 ~@5", M: "~@9 a3@8 ~@7",
})).s("gm_piano").gain(0.06).pan(0.3)

// chords · electric guitar jazz · "Guitar"
const electric_guitar_jazz = note(`<
  A B@3 C@4 D E F G H I J G D E K@2 L M N O P M E Q K R S H T U E H V W D X Y Z H E AA AB AC AD AE AF Q@2 J AG X Q J F
  D@2 AH AI P AJ AK AL AM AN E X R AO AP AQ F AG AQ@2 AG@2 ~@9
>`.pickRestart({
  A: "~@4 [g3,c4,e4]@7 ~", // C
  B: "[~@3 a2@2 [a3,c4,e4]@6 ~ [b3,d4,f4,g#4]@18 g2@3 [b3,d4,f4,g#4]@4 ~@3 [g3,c4,e4]@18 c3@3 [g3,c4,e4]@4 ~@2 [b3,d4,e4,g4]@5]/3", // Am Bdim C Em7
  C: "[~@2 [a3,c4,e4,g4]@6 [a3,c4,e4,g4]@12 [b3,d4,e4,g4]@6 ~ [a3,c4,e4,g4]@6 [a3,c4,e4,g4]@13 [c4,e4,g4,a4]@6 [c4,d4,f4,a4]@6 [c4,d4,f4,a4]@13 [c4,e4,g4,a4]@6 [c4,d4,f4,a4]@6 [c4,d4,f4,a4]@13]/4", // Am7 Em7 Am7 Dm7 Am7 Dm7
  D: "[g3,c4,e4]@15 ~ c3@2 [g3,c4,e4]@3 ~@3", E: "~@6 c3 ~, [g3,c4,e4]@5 ~", F: "~@6 f3 ~, [a3,c4,f4]@5 ~",
  G: "[a3,c4,f4]@15 ~ f3@2 [a3,c4,f4]@3 ~@3", H: "[c4,e4,g4]@23 ~", I: "[g3,c4,e4]@15 ~@3 e4 ~ g4@2 c5@2, ~@8 c4@3 ~",
  J: "[a3,c4,f4]@13 ~@3 [a3,c4,f4] ~@5 f3@2", K: "~@6 a2 ~, [a3,c4,e4]@5 ~",
  L: "[c4,d4,f4,a4]@12 ~@4 e3@2 [g3,b3,e4]@5 ~", M: "[a3,c4,f4] [b3,d4,f4,g4]",
  N: "~@4 d3@2 [c4,d4,f4,a4]@5 ~@5 e3@2 [g3,b3,e4]@5 ~", O: "~@4 [a3,c4,f4]@3 ~@3 f3 ~@5 g2@2 [b3,d4,f4,g4]@5 ~",
  P: "[c4,d4,f4,a4] [g3,b3,e4]", Q: "[g3,c4,e4]@13 ~@3 [g3,c4,e4] ~@5 c3@2", R: "[a3,c4,e4]@15 ~ a2@2 [a3,c4,e4]@3 ~@3",
  S: "[b3,d4,e4,g4] [a3,c4,e4,g4] [a3,c4,e4,g4]@2", T: "~@6 f3 ~, [c4,d4,f4,a4]@5 ~",
  U: "[c4,d4,f4,g#4]@13 ~@3 [c4,d4,f4,g#4] ~@5 f3@2", V: "[a3,d4,f4]@15 ~ d3@2 [a3,d4,f4]@3 ~@3",
  W: "~@6 g2 ~, [b3,d4,f4,g4]@5 ~", X: "[g3,c4,e4]@15 ~@3 e4 ~ g4@2 c5 ~, ~@8 c4@3 ~",
  Y: "[c4,d4,f4,a4]@15 ~ f3@2 [c4,d4,f4,a4]@3 ~@3", Z: "[g#3,c4,d4,f4]@23 ~",
  AA: "[g#3,c4,f4]@13 ~@3 [g#3,c4,f4] ~@5 f3@2", AB: "[b3,d4,f4,g4]@13 ~@3 [b3,d4,f4,g4] ~@5 g2@2",
  AC: "[g3,a#3,d#4]@12 ~@4 f3@2 [a3,c4,f4]@5 ~", AD: "[d4,g4,b4]@23 ~",
  AE: "~@4 [g3,a#3,d#4]@3 ~@3 d#3 ~ [a3,c4,f4]@12", AF: "[b3,d4,f4,g4]@15 ~@3 b3 ~ d4@2 g4 ~, ~@8 f3@3 ~",
  AG: "[c4,f4,a4]@23 ~", AH: "[a3,c4,e4]@13 ~@3 [a3,c4,e4] ~@5 a2@2",
  AI: "[a3,c4,e4]@15 ~@3 c4 ~ e4@2 a4@2, ~@8 a3@3 ~", AJ: "~@4 [a3,c4,f4]@3 ~@3 f3 ~@5 [b3,d4,f4,g4]@3 ~@3 g2 ~",
  AK: "[c4,d4,f4,a4]@12 ~@4 [g3,b3,e4]@3 ~@3 e3 ~", AL: "[a3,c4,f4]@12 ~@4 g2@2 [b3,d4,f4,g4]@5 ~",
  AM: "~@4 d3@2 [c4,d4,f4,a4]@5 ~ [g3,b3,e4]@12", AN: "[a3,c4,f4]@12 ~@4 [b3,d4,f4,g4]@3 ~@3 g2 ~",
  AO: "[e4,a4,c5]@23 ~", AP: "~@6 c3 ~, [a3,c4,e4,g4]@5 ~", AQ: "[a3,c4,e4,g4]@23 ~",
})).s("gm_electric_guitar_jazz").gain(0.11).pan(0.6)

// bass · electric bass finger · "Bass"
const bass_2 = note(`<
  A@4 B@4 C D E F G D E F G H I J K L K M N O G P I J G P Q R S T U V S P Q R S T R V W X W Y C D E F G D E F G H I J K
  L K M N O G P I J C D E F C D E F C D E F C D E F ~
>`.pickRestart({
  A: "[~@8 [c3,g3]@14 [a2,e3]@14 [g2,f3]@28 [c2,e3]@13 g3@5 f3@5 d3@4 c3@5]/4", // C5 A5 G7 C
  B: "[~@5 g2@3 c3@6 ~@3 g2@3 c3@6 ~@4 g2@3 c3@6 c2@6 ~ f2@6 ~@3 c2@3 f2@6 ~@4 c2@3 f2@6 ~@3 c2@3 f2@6 ~ f2@6]/4",
  C: "c3@2 g2 ~ c3@2 ~ g2", D: "c3@2 ~ g2 c3@2 c2@2", E: "f2@2 ~ c2 f2@2 ~ c2", F: "f2@2 ~ c2 f2@2 f2@2",
  G: "c3@2 ~ g2 c3@2 ~ g2", H: "c3@2 ~ g2 c3@2 b2@2", I: "a2@2 ~ e2 a2@2 ~ e2", J: "a2@2 ~ e2 a2@2 a2@2",
  K: "d2@2 ~ d2 e2@2 ~ e2", L: "f2@2 ~ f2 g2@2 ~ g2", M: "f2@2 ~ f2 g2@2 ~@2", N: "d2 e2", O: "f2 g2",
  P: "c3@2 ~ g2 c3@2 c3@2", Q: "f2@2 ~ f2 c3@2 c2@2", R: "f2@2 ~ f2 c3@2 f2@2", S: "c3@2 ~ c3 g2@2 g2@2",
  T: "c3@2 ~ c3 g2@2 c3@2", U: "d3@2 ~ d3 a2@2 f3@2", V: "g2@2 ~ g2 d3@2 g2@2", W: "d#2@2 ~ d#2 f2@2 ~ f2",
  X: "g2 g3 f3 d3", Y: "g2@2 ~ g2 f2@2 e2@2",
})).s("gm_electric_bass_finger").gain(0.31).pan(0.7)

// other · tuba · "Extra"
const tuba = note("<~@11 A ~@3 B ~ C ~ D ~@29 E ~@3 A ~@3 B ~ F ~ D ~@27>".pickRestart({
  A: "~@2 c5 a4", B: "c4@2 d4 c4", C: "c4@2 e4 c4", D: "e4@2 ~ a4 b4 g4 b4@2", E: "~ g4 f5 e5", F: "~@2 e4 c4",
})).s("gm_tuba").gain(0.2).pan(0.4)

// drums · kick
const kick = s("bd").struct(`<
  A B C D E F G H I J K J K J K J K J K J K J K J K J K J K J K J L J K J K J K J K J K J K J K J K J K J K J K J K J K
  J K J K J K J K J K J K J K J K J K J K L K J K L K J K L ~
>`.pickRestart({
  A: "~@4 x ~@6 x", B: "~ x", C: "~@2 x ~@2 x ~@10 x ~@7", D: "~@5 x ~@13 x ~@4", E: "~@8 x ~@2 x ~@8 x ~@3",
  F: "~@9 x ~@12 x ~", G: "~@10 x ~@2 x ~@10", H: "~@2 x ~ x ~@6 x ~ x ~@7 x ~@2", I: "~@4 x!2 ~@2", J: "x!2",
  K: "x ~@3 x!2 ~@2", L: "x ~@2 x!2 ~@2 x",
})).gain(0.18).pan(0.4)

// drums · snare
const snare = s("sd").struct("<A B C D E F G H I@24 J I@46 J I@3 J I@3 J ~>".pickRestart({
  A: "~@5 x ~@2", B: "~@5 x ~@13 x ~@4", C: "~@9 x ~@13 x", D: "~ x", E: "~ x ~@5 x ~@4", F: "~ x ~@3 x ~@2",
  G: "~@4 x ~@12 x ~@5 x", H: "x ~ x ~ x!2 ~ x!2 ~ x!2 ~ x ~ x!2 ~ x!2 ~@2 x ~", I: "~ x ~ x",
  J: "~@6 x ~@8 x ~ x!2 ~@2 x ~@2",
})).gain(0.31).pan(0.4)

// drums · hihat
const hihat = s("hh").struct("<A B C D E F G ~ H I@79 ~>".pickRestart({
  A: "~@8 x ~@3 x ~@2 x ~@3 x ~@2 x ~", B: "~@2 x ~@2 x ~@3 x ~@2 x ~@2 x ~@3 x ~@2 x ~",
  C: "~@2 x ~@2 x ~@3 x ~@2 x ~@3 x ~@2 x ~@3 x", D: "~@2 x ~@2 x ~@3 x ~@2 x ~@3 x ~@2 x ~@2 x ~",
  E: "~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@3", F: "x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@3 x ~@2 x ~",
  G: "~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@3 x ~@2 x ~@3", H: "~ x!7", I: "x!8",
})).gain(0.27).pan(0.4)

stack(bass, piano, piano_soft, electric_guitar_jazz, bass_2, tuba, kick, snare, hihat)

More by The Four Seasons