Strudelify

In The Summertime

Jerry Mungo

KeyE majorTempo85 bpm
0:00/0:00
// In The Summertime — Mungo Jerry
// 85 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 75 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(85/4)

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

// 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 A B C D E I A B C D E F A B
  C D E F A B C D E F A B C D E G
>`.pickRestart({
  A: "e2@2 ~@2 b1@2 ~@2 e2@2 ~@2 b1 ~ c#2 ~", B: "e2@2 ~@2 b1@2 ~@2 e2@3 ~ e2 ~ f#2 ~",
  C: "a2@2 ~@2 e2@2 ~@2 a1@2 ~@2 a1 ~ c#2 ~", D: "e2@2 ~@2 b1@2 ~@2 e2@3 ~ b1 ~ e2 ~",
  E: "b1@3 ~ f#2@2 ~@2 a1@3 ~ e2 ~ b1 ~", F: "e2@3 ~ b1@3 ~ e2@3 ~ b1 ~ c#2 ~", G: "e2@3 ~ b1@3 ~ e2 ~ b1@2 e2 ~@3",
  H: "~@12 b1 ~ c#2 ~", I: "e2@3 ~ b1@3 ~ e2@3 ~ b1@2 c#2 ~",
})).s("gm_acoustic_bass").gain(0.58)

// chords · electric guitar jazz
const electric_guitar_jazz = 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 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
>`.pickRestart({
  A: "[e3,g#3,b3,e4] [g#3,b3] b3 [g#3,b3,e4] ~ e3 g#3 ~@2 g#3 [b3,e4] [e3,g#3,b3,e4] ~ b3!3", // E G#m E E5 E
  B: "[e3,g#3,b3,e4] ~ [g#3,b3] [g#3,b3,e4] ~ e3 ~ b3!2 [g#3,b3] [g#3,b3,e4]!2 ~ [g#3,b3,e4]!2 ~", // E G#m E G#m E
  C: "[a3,c#4] ~ a3 [a3,c#4,e4] ~@2 c#4 ~@2 [c#4,e4] c#4 [a3,c#4,e4] ~ [c#4,e4] [a3,c#4,e4] ~", // A C#m A C#m A
  D: "[g#3,b3,e4] b3!2 [g#3,b3,e4] ~ b3 ~ b3 [g#3,b3,e4]!2 [g3,a#3,e4] ~ [g#3,b3,e4] b3!2 ~", // E Edim E
  E: "[f#3,b3,d#4] b3 ~ [f#3,b3,d#4] ~@2 [f#3,b3,d#4] f#3 [a3,c#4,e4] c#4 [c#4,e4] [a3,c#4,e4] ~ [a3,c#4] [a3,c#4,e4] ~", // B A C#m A
  F: "[g#3,b3,e4] b3!2 [g#3,b3,e4] ~@2 b3 [g#3,b3,e4] ~@2 [g#3,b3,e4] [b3,e4] [g#3,b3,e4] ~ [b3,e4] [g#3,b3,e4]", // E E5 E E5 E
  G: "[g#3,b3,e4] b3!2 [g#3,b3,e4] ~@2 b3 [g#3,b3,e4] e3 ~ b2 ~ e3 ~@3", H: "~@14 b3 c#4",
})).s("gm_electric_guitar_jazz").gain(0.32).pan(0.2)

// chords · electric guitar jazz · soft notes
const electric_guitar_jazz_2 = note(`<
  ~ A ~ B C D E A ~ B C D E A ~ B C D E A ~ B C D E A ~ B C D E A ~ B C D E A ~ B C D F ~@2 A ~ B C D E A ~ B C D E A ~
  B C D E A ~ B C D E A ~ B C D F
>`.pickRestart({
  A: "~ e3 ~@7 e3 ~@6", B: "~@2 c#4 ~@7 e4 ~@5", C: "~ e4 ~@14", D: "~ f#3 ~@14", E: "~ e4 ~@3 b3 ~@8 g#3 ~",
  F: "~ e4 ~@3 b3 ~@10",
})).s("gm_electric_guitar_jazz").gain(0.2).pan(0.2)

// other · banjo
const banjo = note(`<
  ~@6 A B C D E F G H I D J K G L M D J N O P Q R S T U ~@5 A L M D J N V ~@7 A L M D J N G L M D J N G L M D J N O P Q
  R S T U
>`.pickRestart({
  A: "~@14 b4 c#5", B: "e5 ~ e5!3 ~ c#5 b4 c#5 b4 g#4 b4@2 ~ b4 c#5",
  C: "e5!2 ~ e5@2 ~ c#5 b4 c#5 b4 g#4 b4@2 ~ f#4 g#4", D: "f#4@2 e4 c#4 ~@2 f#4 g#4 f#4 e4 c#4 f#4 e4 c#4 f#4 g#4",
  E: "e4 ~@13 f#4 g#4", F: "b4 ~ b4 b4@2 ~ f#4 g#4 f#4 e4 c#4 f#4 e4 c#4 f#4 g#4", G: "e4 ~@13 b4 c#5",
  H: "e5 ~ e5 e5@3 c#5 b4 c#5 b4 g#4 b4 ~@2 b4 c#5", I: "e5!2 ~ e5@3 c#5 ~ c#5 b4 g#4 b4 ~@2 f#4 g4",
  J: "e4 ~@12 e4 f#4 g#4", K: "b4@2 ~ b4@3 f#4 g#4 f#4 e4 c#4 f#4 e4 c#4 f#4 g#4",
  L: "e5!2 ~ e5@3 c#5 b4 c#5 b4 g#4 b4 ~@2 b4 c#5", M: "e5 ~ e5 e5@2 ~ c#5 ~ c#5 b4 g#4 b4 ~@2 f#4 g4",
  N: "b4@2 ~ b4 ~@2 f#4 g#4 f#4 e4 c#4 f#4 e4 c#4 f#4 g#4", O: "e4 ~@13 b5 c#6",
  P: "e6 ~@2 e6@2 ~ c#6 b5 c#6 b5 g#5 b5 ~@2 b5 c#6", Q: "e6!2 ~ e6@2 ~ c#6 b5 c#6 b5 g#5 b5 ~@4",
  R: "f#5@2 ~ e5 ~ f#5 e5 c#5 f#5 e5 c#5 f#5 e5 c#5 f#5 ~", S: "g#5@3 ~@11 f#5 g#5, g5 ~@15",
  T: "b5!2 ~ b5 ~@4 f#5!2 ~ f#5 ~ e5 g5 g#5", U: "e5 ~@15", V: "e4 ~@15",
})).s("gm_banjo").gain(0.45)

// other · banjo
const banjo_2 = 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 ~ 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
>`.pickRestart({
  A: "~@14 b3 c#4", B: "e4 ~@2 e4!2 ~ b3 c#4!2 b3 g3 g#3 e3 ~ b3 c#4", C: "e4 ~@2 e4!2 ~ b3 c#4!2 b3 g3 g#3 e3 ~@3",
  D: "[f#4,a4]@2 ~ [e4,a4] ~ [f#4,a4] e4 c#4 [f#4,a4] e4 c#4 [f#4,a4] e4 c#4 b3 c#4", // F#m A5 F#m
  E: "e4 ~@2 e4!2 ~ b3!2 [e4,g#4]@2 g4@2 [e4,g#4] ~@3, ~@10 d#4 ~@5", // E
  F: "[b3,d#4,f#4]@2 ~ [d#4,g#4]@2 b3 [b3,d#4,f#4] ~ f#4 e4 c#4 f#4 e4 c#4 f#4 g#4, ~ b3 ~@6", // B G#5 B
  G: "e4 ~@2 [e4,g#4]!2 ~ b3 c#4 e4@2 [d#4,g4] ~ [e4,g#4] ~ [a3,b3] c#4, ~@8 g#4 ~@7", // E D# E Asus2
  H: "[b3,e4] ~@2 [b3,e4] ~@4 [b3,e4] ~ b3 ~ e4 ~@3", // E5
})).s("gm_banjo").gain(0.32).pan(0.8)

// other · tenor sax
const tenor_sax = note(`<
  ~ A B C D E@2 A B C D E@2 A B C D E@2 A B C D E@2 A B C D E@2 A B C D E@2 A B C D E F ~@2 A B C D E F A B C D E@2 A B
  C D E@2 A B C D E@2 A B C D E F
>`.pickRestart({
  A: "~@3 a#2 ~@3 a#2", B: "~@3 c3 ~@3 a#2", C: "~@3 c#3 ~@3 c3", D: "~@3 a#2 ~@3 c#3", E: "~@3 a#2 ~@3 c3",
  F: "~@3 a#2 ~@4",
})).s("gm_tenor_sax").gain(0.52)

// drums · kick
const kick = s("bd").struct("<~ [x!4]!41 [x ~ x ~ x!3 ~] ~@2 [x!4]!29 [x ~ x ~ x!3 ~]>").gain(0.6)

// drums · low tom
const low_tom = s("lt").struct("<~ [~@3 x ~@3 x]!41 [~@3 x ~@4] ~ [~@7 x] [~@3 x ~@3 x]!29 [~@3 x ~@4]>").gain(0.6)

// drums · hihat
const hihat = s("hh").struct("<[x!4] ~@42 [x ~@2 x!2 ~@3 x ~@2 x!2 ~@3]!2 ~@30>").gain(0.42)

// drums · ride
const ride = s("rd").struct("<~ A ~@5 A ~@5 A ~@5 A ~@5 A ~@5 A ~@5 A ~@7 A ~@5 A ~@5 A ~@5 A ~@5 A ~@5>".pickRestart({
  A: "x",
})).gain(0.48)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~ [x!4]!42 ~@2 [x!4]!30>").gain(2.74)

// drums · cabasa · soft notes
const cabasa_soft = s("cabasa:4").struct("<~ [~@3 x ~@7 x ~@4]!42 ~@2 [~@3 x ~@7 x ~@4]!30>").gain(1.22)

stack(
  bass, electric_guitar_jazz, electric_guitar_jazz_2, banjo, banjo_2, tenor_sax, kick, low_tom, hihat, ride, cabasa,
  cabasa_soft
)