Strudelify
In The Summertime cover art

In the Summertime

In The Summertime

Jerry Mungo

KeyE majorTempo84 bpm
0:00/0:00
// In The Summertime — Jerry Mungo
// 84 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 71 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(84/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 · piano
const piano = note(`<
  A B C D E F G B C D E F G B C D E F G B C D E F G B C D E F G B C D E F G B C D E F H ~ I J K L M N O J K L M N O J K
  L M N O J K L M N O J P
>`.pickRestart({
  A: "~@14 b4 c#5", B: "e5 ~@2 e5!2 ~ b4 c#5!2 b4 g4 g#4 e4@2 b4 c#5",
  C: "e5 ~@2 e5 e5@2 b4 c#5!2 b4 g4 g#4 e4 ~ e4 f#4", D: "a4 e4 f#4 a4 e4 f#4 a4 e4 f#4 a4 e4 f#4 a4 e4 b4 c#5",
  E: "e5 ~@2 e5!2 ~ b4 c#5!2 b4 g4 g#4 e4 ~@3", F: "f#4@2 ~ g#4 g#4@2 f#4 ~ e4@2 ~ f#4 f#4@2 b4 c#5",
  G: "e5 ~@2 e5!2 ~ b4 c#5!2 b4 g4 g#4 e4 ~ b4 c#5", H: "e5 ~@2 e5!2 ~@11",
  I: "~@2 b4 c#5 e5 ~@2 e5!2 ~ b4 c#5!2 b4 g4 g#4", J: "e4@2 b4 c#5 e5 ~@2 e5 e5@2 b4 c#5!2 b4 g4 g#4",
  K: "e4 ~ e4 f#4 a4 e4 f#4 a4 e4 f#4 a4 e4 f#4 a4 e4 f#4", L: "a4 e4 b4 c#5 e5 ~@2 e5!2 ~ b4 c#5!2 b4 g4 g#4",
  M: "e4 ~@3 f#4@2 ~ g#4 g#4@2 f#4 ~ e4@2 ~ f#4", N: "f#4@2 b4 c#5 e5 ~@2 e5!2 ~ b4 c#5!2 b4 g4 g#4",
  O: "e4 ~ b4 c#5 e5 ~@2 e5!2 ~ b4 c#5!2 b4 g4 g#4", P: "e4 ~ e4 f#4 a4 ~@11",
})).s("gm_piano").gain(0.35).pan(0.2)

// other · piano
const piano_2 = note(`<
  ~ A@2 B A C A@3 B A C A@3 B A C A@3 B A C A@3 B A C A@3 B A C A@3 B A C D ~ E F G H I H F@2 G H I H F@2 G H I H F@2 G
  H I H F@2 J
>`.pickRestart({
  A: "e2 g#2 b2 g#2 e2 g#2 b2 g#2", B: "a2 c#3 e3 c#3 a2 c#3 e3 c#3", C: "b2 d#3 f#3 d#3 a2 c#3 e3 c#3",
  D: "e2 g#2 b2 g#2 e2 g#2 e2 ~", E: "~@2 e2 g#2 b2 g#2 e2 g#2", F: "b2 g#2 e2 g#2 b2 g#2 e2 g#2",
  G: "b2 g#2 a2 c#3 e3 c#3 a2 c#3", H: "e3 c#3 e2 g#2 b2 g#2 e2 g#2", I: "b2 g#2 b2 d#3 f#3 d#3 a2 c#3",
  J: "b2 g#2 a2 ~@5",
})).s("gm_piano").gain(0.22).pan(0.1)

// bass · acoustic bass
const bass = note(`<
  ~ A B C D E F A B C D E F A B C D E F A B C D E F A B C D E F A B C D E F A B C D E G ~ H I J K L M N I J K L M N I J
  K L M N I J K L M N I O
>`.pickRestart({
  A: "e2@3 ~ b1 ~@3 e2@2 ~@2 b1 ~ d2 ~", B: "e2@2 ~@2 b1@2 ~@2 e2 ~@3 b1 ~ e2 ~",
  C: "a2@2 ~@2 e2@2 ~@2 a2 ~ a2 ~ f#2 ~ f2 ~", D: "e2@2 ~@2 b1@2 ~@2 e2 ~@3 b1@2 e2@2", E: "b1 ~ f#2 ~ a1 ~ e2 ~",
  F: "e2@2 ~@2 b1 ~@3 e2@2 ~@2 b1 ~ d2 ~", G: "e2@2 ~@2 b1 ~@3 e2@3 ~ e2 ~@3", H: "~@4 e2@3 ~ b1 ~@3 e2@2 ~@2",
  I: "b1 ~ d2 ~ e2@2 ~@2 b1@2 ~@2 e2 ~@3", J: "b1 ~ e2 ~ a2@2 ~@2 e2@2 ~@2 a2 ~ a2 ~",
  K: "f#2 ~ f2 ~ e2@2 ~@2 b1@2 ~@2 e2 ~@3", L: "b1 e2 b1 ~ f#2 ~ a1 ~", M: "e2@2 ~@2 e2@2 ~@2 b1 ~@3 e2@2 ~@2",
  N: "b1 ~ d2 ~ e2@3 ~ b1 ~@3 e2@2 ~@2", O: "b1 ~ e2 ~ a2@2 ~@10",
})).s("gm_acoustic_bass").gain(0.4)

// other · lead 3 calliope
const lead_3_calliope = note(`<
  ~ A@5 B C D E F G H C I J F K H L M E N O H P Q R S T U ~@5 V W X E F Y Z ~ AA AB@5 AC@2 AD AE AF AG AH@2 AI AE AJ AE
  AK AL AD AE AM AE AN@2 AO
>`.pickRestart({
  A: "~@6 e4 ~@7 e4 ~", B: "~@6 e4 ~@7 b4 c#5", C: "e5!2 ~ e5 ~@2 c#5 b4 c#5 b4 g#4 b4@2 ~ b4 c#5",
  D: "e5!2 ~ e5@2 ~ c#5 b4 c#5 b4 g#4 e4 ~@2 g#4!2", E: "f#4 e4@2 c#4@2 ~ g#4!2 f#4 e4 c#4 f#4!2 e4 c#4 f#4",
  F: "e4@2 ~@12 f#4 g#4", G: "b4 ~ b4!2 b4@2 ~@2 g4!2 ~ f#4 ~ e4 c#4 f#4", H: "e4@2 ~@12 b4 c#5",
  I: "e5!2 ~ e5@2 ~ c#5@2 c#5 b4 g#4 b4 ~@2 g#4!2", J: "f#4 e4@2 c#4@2 ~ g#4!2 f#4@2 e4 f#4!2 e4 c#4 f#4",
  K: "b4!2 ~ b4@2 ~ g4!2 f#4 e4 c#4 f#4!2 e4 c#4 f#4", L: "e5!2 ~ e5 ~@2 c#5 b4 c#5 b4 g4 g#4 b4@2 b4 c#5",
  M: "e5 ~ e5 e5@2 e5 c#5 b4 c#5 b4 g#4 b4 ~@2 g#4!2", N: "e4@2 ~@11 e4 f#4 g#4",
  O: "b4@3 b4@2 ~ g4!2 f#4 e4 c#4 f#4!2 e4 c#4 f#4", P: "e5@2 e5!2 ~@2 c#5 b4 c#5 b4 ~ b4@2 ~ b4 c#5",
  Q: "e5!2 ~ e5@2 ~ c#5 b4 c#5 b4 ~ g#4 ~@4", R: "f#4@3 e4@3 c#4@2 f#4 e4 c#4 f#4 e4 c#4 f#4 e4",
  S: "g#4@2 ~@12 f#4 g#4", T: "b4!2 ~ b4@2 ~@3 g4!2 ~ f#4 ~ e4 g4@2", U: "g#4@5 ~@11", V: "~@14 b4 c#5",
  W: "e5!2 ~ e5 ~@2 c#5 b4 c#5 b4 ~ b4@2 ~ b4 c#5", X: "e5!5 b4 c#5 b4 c#5 b4 c#5 b4 g#4 ~ g#4!2",
  Y: "b4 ~ b4!3 ~ g4!2 f#4 e4 c#4 f#4!2 e4 c#4 f#4", Z: "e4 ~@7", AA: "~@10 e4 ~@5", AB: "~@2 e4 ~@7 e4 ~@5",
  AC: "[~@2 b4 c#5 e5!2 ~ e5 ~@2 c#5 b4 c#5 b4 g#4 b4@2 ~ b4 c#5 e5!2 ~ e5@2 ~ c#5 b4 c#5 b4 g#4 e4]/2",
  AD: "~@2 g#4!2 f#4 e4@2 c#4@2 ~ g#4!2 f#4 e4 c#4 f#4", AE: "f#4 e4 c#4 f#4 e4@2 ~@10",
  AF: "~@2 f#4 g#4 b4 ~ b4!2 b4@2 ~@2 g4!2 ~ f#4", AG: "~ e4 c#4 f#4 e4@2 ~@10",
  AH: "[~@2 b4 c#5 e5!2 ~ e5 ~@2 c#5 b4 c#5 b4 g#4 b4@2 ~ b4 c#5 e5!2 ~ e5@2 ~ c#5@2 c#5 b4 g#4 b4]/2",
  AI: "~@2 g#4!2 f#4 e4@2 c#4@2 ~ g#4!2 f#4@2 e4 f#4", AJ: "~@2 f#4 g#4 b4!2 ~ b4@2 ~ g4!2 f#4 e4 c#4 f#4",
  AK: "~@2 b4 c#5 e5!2 ~ e5 ~@2 c#5 b4 c#5 b4 g4 g#4", AL: "b4@2 b4 c#5 e5 ~ e5 e5@2 e5 c#5 b4 c#5 b4 g#4 b4",
  AM: "~ e4 f#4 g#4 b4@3 b4@2 ~ g4!2 f#4 e4 c#4 f#4",
  AN: "[~@2 b4 c#5 e5@2 e5!2 ~@2 c#5 b4 c#5 b4 ~ b4@2 ~ b4 c#5 e5!2 ~ e5@2 ~ c#5 b4 c#5 b4 ~ g#4]/2",
  AO: "~@4 f#4@3 ~@9",
})).s("gm_lead_3_calliope").gain(0.4).pan(0.9)

// other · electric guitar jazz
const electric_guitar_jazz = note(`<
  A B C D E F G B C D E F G B C D E F G B C D E F G B C D E F H B C I J K L B C D E F M ~ N O P Q R@2 S O P Q R@2 S O P
  Q R@2 S O P Q R@2 S O T
>`.pickRestart({
  A: "~@14 b3 c#4", B: "e4@2 ~ e4!2 ~ c#4 b3 c#4 b3 g3 g#3 e3 ~ b3 c#4", C: "e4 ~@2 e4!2 ~ c#4 b3 c#4 b3 g3 g#3 e3 ~@3",
  D: "f#4@3 e4 ~@2 c#4 ~ f#4 e4 c#4 f#4 e4 c#4 f#4 ~", E: "g#4@2 ~ g#4!2 ~@3 g#4@2 ~ g#4!2 ~@3",
  F: "[f#4,b4]@3 [f#4,c#5]@2 ~ [f#4,b4] ~@2 e4 c#4 ~ f#4@2 [e4,a4] ~, ~@8 [f#4,b4]@2 ~ [f#4,b4]@2 ~@3", // B5 F#5 B5 A5 B5
  G: "[e4,g#4]@2 ~ e4@2 ~ c#4 b3 c#4 b3 g3 g#3 e3@2 ~ c#4", H: "[e4,g#4]@2 ~ e4@2 ~ c#4 b3 c#4 b3 g3 g#3 e3@2 b3 c#4",
  I: "e4@3 f#4 ~@2 e4 ~ f#4 e4 c#4 f#4 e4 c#4 f#4 ~", J: "e4@2 ~ e4!2 ~ c#4 b3 c#4 b3 g3 g#3 e3 ~@3",
  K: "g#4@3 [f#4,c#5]@2 ~ [f#4,b4] ~@2 e4 ~@2 f#4@2 [e4,a4] ~, ~@8 [f#4,b4]@2 ~ [f#4,b4]@2 ~@3", // F#5 B5 A5 B5
  L: "e4@2 ~ e4 e4@2 c#4 b3 c#4 b3 g3 g#3 e3@2 ~ c#4", M: "e4@2 ~ e4@2 b3 c#4 ~ b3!2 ~ b3 ~@4",
  N: "~@2 b3 c#4 e4@2 ~ e4!2 ~ c#4 b3 c#4 b3 g3 g#3", O: "e3 ~ b3 c#4 e4 ~@2 e4!2 ~ c#4 b3 c#4 b3 g3 g#3",
  P: "e3 ~@3 f#4@3 e4 ~@2 c#4 ~ f#4 e4 c#4 f#4", Q: "e4 c#4 f#4 ~ g#4@2 ~ g#4!2 ~@3 g#4@2 ~ g#4",
  R: "[g#4 ~@3 [f#4,b4]@3 [f#4,c#5]@2 ~ [f#4,b4] ~@2 e4 c#4 ~ f#4@2 [e4,a4] ~ [e4,g#4]@2 ~ e4@2 ~ c#4 b3 c#4 b3 g3 g#3, ~@12 [f#4,b4]@2 ~ [f#4,b4]@2 ~@15]/2", // B5 F#5 B5 A5 E B5
  S: "e3@2 ~ c#4 e4@2 ~ e4!2 ~ c#4 b3 c#4 b3 g3 g#3", T: "e3 ~@3 f#4@3 ~@9",
})).s("gm_electric_guitar_jazz").gain(0.25).pan(0.7)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~ A@2 B A C A@3 B D C A@3 B D C A@3 B D C A@3 B D C A@3 B D C A@3 B D C E ~ F G H I J I G@2 H K J I G@2 H K J I G@2 H
  K J I G@2 L
>`.pickRestart({
  A: "[g#3,b3,e4]@2 ~ [g#3,b3,e4]!2 ~@3 [g#3,b3,e4]@2 ~ [g#3,b3,e4]!2 ~@3", // E
  B: "[a3,c#4,e4]@2 ~ [a3,c#4,e4]!2 ~@3 [a3,c#4,e4]@2 ~ [a3,c#4,e4]!2 ~@3", // A
  C: "[f#3,b3,d#4]@2 ~ [f#3,b3,d#4]!2 ~@3 [a3,c#4,e4]@2 ~ [a3,c#4,e4]!2 ~@3", // B A
  D: "[g#3,b3,e4]@2 ~ [g#3,b3,e4]!2 ~@3 [g#3,b3,e4]@3 [g#3,b3,e4]!2 ~@3", // E
  E: "[g#3,b3,e4]@2 ~ [g#3,b3,e4]!2 ~@3 [g#3,b3,e4] [g#3,b3,e4]@2 [g#3,b3,e4]!2 ~@3", // E
  F: "~@4 [g#3,b3,e4]@2 ~ [g#3,b3,e4]!2 ~@3 [g#3,b3,e4]@2 ~ [g#3,b3,e4]", // E
  G: "[g#3,b3,e4] ~@3 [g#3,b3,e4]@2 ~ [g#3,b3,e4]!2 ~@3 [g#3,b3,e4]@2 ~ [g#3,b3,e4]", // E
  H: "[g#3,b3,e4] ~@3 [a3,c#4,e4]@2 ~ [a3,c#4,e4]!2 ~@3 [a3,c#4,e4]@2 ~ [a3,c#4,e4]", // E A
  I: "[a3,c#4,e4] ~@3 [g#3,b3,e4]@2 ~ [g#3,b3,e4]!2 ~@3 [g#3,b3,e4]@2 ~ [g#3,b3,e4]", // A E
  J: "[g#3,b3,e4] ~@3 [f#3,b3,d#4]@2 ~ [f#3,b3,d#4]!2 ~@3 [a3,c#4,e4]@2 ~ [a3,c#4,e4]", // E B A
  K: "[a3,c#4,e4] ~@3 [g#3,b3,e4]@2 ~ [g#3,b3,e4]!2 ~@3 [g#3,b3,e4]@3 [g#3,b3,e4]", // A E
  L: "[g#3,b3,e4] ~@3 [a3,c#4,e4]@2 ~@10", // E A
})).s("gm_acoustic_guitar_steel").gain(0.3).pan(0.7)

// chords · banjo
const banjo = note(`<
  ~ A B C D E F A B C D E F A B C D E F A B C D E F A B C D E F A B C D E F A B C D E G ~ H I J K L M N I J K L M N I J
  K L M N I J K L M N I O
>`.pickRestart({
  A: "[b4,e5] ~ [b4,e5] ~ [b4,e5] ~ [b4,e5]!3 ~ [b4,e5] ~ [b4,e5] ~ [b4,e5]!2", // E5
  B: "[b4,e5] ~ [b4,e5] ~ [b4,e5] ~ [b4,e5]!3 ~ [b4,e5] ~ [b4,e5]!3 ~", C: "[c#5,e5] ~ [c#5,e5]!7 ~ [c#5,e5]!6",
  D: "[b4,e5] ~ [b4,e5] ~ [b4,e5]!4 ~@2 [b4,e5]!2 ~ [b4,e5]!2 ~", // E5
  E: "[b4,d#5] ~ [b4,d#5] ~ [b4,d#5]!4 [c#5,e5] ~ [c#5,e5] ~ [c#5,e5]!3 ~", // B C#m
  F: "[b4,e5] ~ [b4,e5] ~ [b4,e5]!2 ~@2 [b4,e5] ~ [b4,e5]!3 ~ [b4,e5] ~", // E5
  G: "[b4,e5] ~ [b4,e5] ~ [b4,e5]!2 ~@2 [b4,e5]!2 ~ [b4,e5]!2 ~@3", // E5
  H: "~@4 [b4,e5] ~ [b4,e5] ~ [b4,e5] ~ [b4,e5]!3 ~ [b4,e5] ~", // E5
  I: "[b4,e5] ~ [b4,e5]!3 ~ [b4,e5] ~ [b4,e5] ~ [b4,e5]!3 ~ [b4,e5] ~", // E5
  J: "[b4,e5]!3 ~ [c#5,e5] ~ [c#5,e5]!7 ~ [c#5,e5]!2", K: "[c#5,e5]!4 [b4,e5] ~ [b4,e5] ~ [b4,e5]!4 ~@2 [b4,e5]!2",
  L: "~ [b4,e5]!2 ~ [b4,d#5] ~ [b4,d#5] ~ [b4,d#5]!4 [c#5,e5] ~ [c#5,e5] ~", // E5 B C#m
  M: "[c#5,e5]!3 ~ [b4,e5] ~ [b4,e5] ~ [b4,e5]!2 ~@2 [b4,e5] ~ [b4,e5]!2", // C#m E5
  N: "[b4,e5] ~ [b4,e5] ~ [b4,e5] ~ [b4,e5] ~ [b4,e5] ~ [b4,e5]!3 ~ [b4,e5] ~", O: "[b4,e5]!3 ~ [c#5,e5] ~@11",
})).s("gm_banjo").gain(0.22).pan(0.1)

// drums · kick
const kick = s("bd").struct("<~ [x!2]!42 ~ [~ x ~ x]!26 [~ x ~@2]>").gain(0.64)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~ [~ x ~ x]!42 ~ [~ x] [x!2]!25 x>").gain(0.56)

// drums · cabasa
const cabasa = s("cabasa:4").struct(`<
  ~
  [x ~@2 x!2 ~@3 x ~@2 x!2 ~@3]!6
  ~@37
  [~@4 x ~@2 x!2 ~@3 x ~@2 x]
  [x ~@3 x ~@2 x!2 ~@3 x ~@2 x]!5
  x
  ~@20
>`).gain(3.24)

stack(
  piano, piano_2, bass, lead_3_calliope, electric_guitar_jazz, acoustic_guitar_steel, banjo, kick, pedal_hat, cabasa
)