Strudelify

Hot Lunch Jam

Micheal Gore

KeyD majorTempo138 bpm
0:00/0:00
// Hot Lunch Jam — Micheal Gore
// 138 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 6 "Klarinet in E♭" pizzicato strings (copy of ch 1 "Klarinet in B♭" electric guitar muted)
// note: Transcription provider: pdmx. https://musescore.com/score/5828381; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 55 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): Klarinet in B♭, Viool Solo.
setcpm(138/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 · slap bass 2 · "Viool"
const slap_bass_2 = note("<~@21 A@8 B@8 C D@8 E@7 F G>".pickRestart({
  A: "[~@7 [c4,e4,g4]@8 [c4,e4,g4]@8 [g4,b4,d5]@8 [g4,b4,d5]@8 [c4,e4,g4]@8 [c4,e4,g4]@8 [g4,b4,d5]@8 [g4,b4,d5]]/8", // C G C G
  B: "[~@7 [c4,e4,g4]@8 [d4,f#4,a4]@8 [c4,e4,g4]@8 [c4,e4,g4]@8 [e4,g#4,b4]@8 [e4,g#4,b4]@8 [e4,g#4,b4]@8 [e4,g#4,b4]]/8", // C D C E
  C: "~@7 [c4,e4,g4]", // C
  D: "[~@7 [c4,e4,g4]@8 [g4,b4,d5]@8 [g4,b4,d5]@8 [c4,e4,g4]@8 [c4,e4,g4]@8 [g4,b4,d5]@8 [g4,b4,d5]@8 [c4,e4,g4]]/8", // C G C G C
  E: "[~@7 [d4,f#4,a4]@8 [c4,e4,g4]@8 [c4,e4,g4]@8 [e4,g#4,b4]@8 [e4,g#4,b4]@8 [e4,g#4,b4]@8 [e4,g#4,b4]]/7", // D C E
  F: "[e4,g#4,b4]@7 [c4,e4,g4]", G: "[c4,e4,g4]!16",
})).s("gm_slap_bass_2").gain(0.23)

// chords · piano
const piano = note("<~@13 A B@8 C@4 D@2 E@8 F@2 C@4 D@2 E@8 G H I>".pickRestart({
  A: "~@2 [e2,e3,e4,g4,b4,d5]@4 [d2,d4] [a1,a3]", // Em7 D A
  B: "[~@14 [d4,f#4,b4]@4 d4@2 e4@2 f#4@4 g4@2 a4@2 [c3,c4,e4,g4,c5]@15 ~ [e3,d4,e4,f#4,a4,d5]@15 ~ [e2,e3,e4,g#4,b4,e5]@15 ~ [e2,e3,e4,g#4,b4,e5]@15 ~ [e2,e3,e4,g#4,b4,e5]@15 ~ [e2,e3,e4,g#4,b4,e5]@9 ~ [g5,g#5,a5] [e5,f5,f#5] [b4,c5,c#5,d5,d#5] [g4,g#4,a4,a#4] [e4,f4,f#4] [b3,c4,c#4,d4,d#4] [a1,a2,a3]@2, ~@14 [b2,a3,b3]@15 ~@97 a#3 ~]/8", // Bm C D E A B7
  C: "[~@8 [e2,e3,e5]@2 ~@4 [a1,a2,a3,c4,e4,g4]@15 ~ [e2,e3,e4,g4,b4,d5]@9 ~ [a2,a3,a5]@2 ~@4 [e2,e3,e4,g4,b4,d5]@15 ~ [a1,a2,a3]@2]/4", // E Am7 Em7 A Em7 A
  D: "[~@8 [e2,e3,e5]@2 ~@4 [a1,a2,a3,c4,e4,g4]@15 ~ [e2,e3,e4,g4,b4,d5]@2]/2", // E Am7 Em7
  E: "[~@8 [a2,a3,a5]@2 ~@4 [e2,e3,e4,g4,b4,d5]@15 ~ [a1,a2,a3,c4,e4,g4]@15 ~ [b1,b2,b3,d4,f#4,a4]@15 ~ [c2,c3,c4,e4,g4,b4]@15 ~ [d2,d3,d4,f#4,a4,c#5]@15 ~ [e2,e3,e4,g#4,b4,e5]@15 ~ [e2,e3,e4,g#4,b4,e5]@15 ~ [e2,e3,e4,g#4,b4,e5]@2]/8", // A Em7 Am7 Bm7 Cmaj7 Dmaj7 E
  F: "[~@14 [e2,e3,e4,g#4,b4,e5]@9 ~ [g5,g#5,a5] [e5,f5,f#5] [b4,c5,c#5,d5,d#5] [g4,g#4,a4,a#4] [e4,f4,f#4] [b3,c4,c#4,d4,d#4] [a1,a2,a3]@2, ~@30 a#3 ~]/2", // E A
  G: "~@7 [e2,e3,e4,g#4,b4,e5]", H: "[e2,e3,e4,g#4,b4,e5]@11 ~@3 [a1,a2,a3,a4]@2",
  I: "[a2,a3] [a1,a3] [a2,a3] [a1,a3] [a2,a3] [a1,a3] [a2,a3] [a1,a3] [a2,a3] [a1,a3] [a2,a3] [a1,a3] [a2,a3] [a1,a3] [a2,a3] [a1,a3]", // A
})).s("gm_piano").gain(0.23)

// other · cello
const cello = note("<~@21 A@8 B@8 C D@8 E@7 F G>".pickRestart({
  A: "[~@7 a2@8 a2@8 e3@8 e3@8 a2@8 a2@8 e3@8 e3]/8", B: "[~@7 a2@8 b2@8 c3@8 d3@8 e3@8 e3@8 e3@8 e3]/8", C: "~@7 a2",
  D: "[~@7 a2@8 e3@8 e3@8 a2@8 a2@8 e3@8 e3@8 a2]/8", E: "[~@7 b2@8 c3@8 d3@8 e3@8 e3@8 e3@8 e3]/7", F: "e3@7 a2",
  G: "a2!16",
})).s("gm_cello").gain(0.23)

// other · electric guitar clean · "Elektrische gitaar"
const electric_guitar_clean = note("<~@18 A@8 B@8 C@4 D@8 E@7 F G>".pickRestart({
  A: "[~@2 f#4 e4 g4 e4 g#4 e4@3 f#4 e4 g4 e4 g#4 e4@3 f#4 e4 g4 e4 g#4 e4@3 f#4 e4 g4 e4 g#4 a2@2 a2 b2 a2 c3 d3 e3 a2@2 a2 b2 a2 c3 d3 e3 e3@2 e3 f#3 e3 g3 a3 b3 e3@2 e3 f#3 e3 g3 a3 b3 a2]/8",
  B: "[~ a2 b2 a2 c3 d3 e3 a2@2 a2 b2 a2 c3 d3 e3 e3@2 e3 f#3 e3 g3 a3 b3 e3@2 e3 f#3 e3 g3 a3 b3 a2@2 a2 b2 a2 c3 d3 e3 b2@2 b2 c#3 b2 d3 e3 f#3 c3@2 c3 d3 c3 e3 f#3 g3 d3@2 d3 e3 d3 f#3 g3 a3 e3]/8",
  C: "[~ e3 f#3 e3 g3 e3 g#3 e3@2 e3 f#3 e3 g3 e3 g#3 e3@2 e3 f#3 e3 g3 e3 g#3 e3@2 e3 f#3 e3 g3 e3 g#3 a2]/4",
  D: "[~ a2 b2 a2 c3 d3 e3 a2@2 a2 b2 a2 c3 d3 e3 e3@2 e3 f#3 e3 g3 a3 b3 e3@2 e3 f#3 e3 g3 a3 b3 a2@2 a2 b2 a2 c3 d3 e3 a2@2 a2 b2 a2 c3 d3 e3 e3@2 e3 f#3 e3 g3 a3 b3 e3@2 e3 f#3 e3 g3 a3 b3 a2]/8",
  E: "[~ a2 b2 a2 c3 d3 e3 b2@2 b2 c#3 b2 d3 e3 f#3 c3@2 c3 d3 c3 e3 f#3 g3 d3@2 d3 e3 d3 f#3 g3 a3 e3@2 e3 f#3 e3 g3 e3 g#3 e3@2 e3 f#3 e3 g3 e3 g#3 e3@2 e3 f#3 e3 g3 e3 g#3 e3]/7",
  F: "e3!2 f#3 e3 g3 e3 g#3 a2", G: "a2!16",
})).s("gm_electric_guitar_clean").gain(0.31)

// bass · electric bass pick · "Bas-gitaar"
const bass = note("<~@21 A@8 B@8 C D@8 E@7 F G>".pickRestart({
  A: "[~@7 a1@2 a1 b1 a1 c2 d2 e2 a1@2 a1 b1 a1 c2 d2 e2 e2@2 e2 f#2 e2 g2 a2 b2 e2@2 e2 f#2 e2 g2 a2 b2 a1@2 a1 b1 a1 c2 d2 e2 a1@2 a1 b1 a1 c2 d2 e2 e2@2 e2 f#2 e2 g2 a2 b2 e2]/8",
  B: "[~ e2 f#2 e2 g2 a2 b2 a1@2 a1 b1 a1 c2 d2 e2 b1@2 b1 c#2 b1 d2 e2 f#2 c2@2 c2 d2 c2 e2 f#2 g2 d2@2 d2 e2 d2 f#2 g2 a2 e2@2 e2 f#2 e2 g2 e2 g#2 e2@2 e2 f#2 e2 g2 e2 g#2 e2@2 e2 f#2 e2 g2 e2 g#2 e2]/8",
  C: "~ e2 f#2 e2 g2 e2 g#2 a1",
  D: "[~ a1 b1 a1 c2 d2 e2 a1@2 a1 b1 a1 c2 d2 e2 e2@2 e2 f#2 e2 g2 a2 b2 e2@2 e2 f#2 e2 g2 a2 b2 a1@2 a1 b1 a1 c2 d2 e2 a1@2 a1 b1 a1 c2 d2 e2 e2@2 e2 f#2 e2 g2 a2 b2 e2@2 e2 f#2 e2 g2 a2 b2 a1]/8",
  E: "[~ a1 b1 a1 c2 d2 e2 b1@2 b1 c#2 b1 d2 e2 f#2 c2@2 c2 d2 c2 e2 f#2 g2 d2@2 d2 e2 d2 f#2 g2 a2 e2@2 e2 f#2 e2 g2 e2 g#2 e2@2 e2 f#2 e2 g2 e2 g#2 e2@2 e2 f#2 e2 g2 e2 g#2 e2]/7",
  F: "e2!2 f#2 e2 g2 e2 g#2 a1", G: "a1!16",
})).s("gm_electric_bass_pick").gain(0.31)

// drums · kick
const kick = s("bd").struct("<A B A B A B A B A B A B A B A B A B C@3 D C@32 ~>".pickRestart({
  A: "x ~@6 x", B: "x", C: "x!4", D: "x ~@3 x ~ x ~ x!8",
})).gain(0.23)

// drums · low tom
const low_tom = s("lt").struct("<~@54 [x!16]>").gain(0.23)

// drums · hihat
const hihat = s("hh").struct("<[x!8]!2 [x ~ x!3 ~ x!3 ~ x!3 ~ x!2]!2 [x!16]!17 ~ [x!16]!32 ~>").gain(0.23)

stack(slap_bass_2, piano, cello, electric_guitar_clean, bass, kick, low_tom, hihat)