Strudelify

I Don't Want to Be a Hero

Johnny Hates Jazz

KeyG♯ minorTempo117 bpm
0:00/0:00
// I Don't Want to Be a Hero — Johnny Hates Jazz
// 117 bpm, 4/4, key G# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Full arrangement: all 108 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(117/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 · synth bass 1
const bass = note(`<
  ~ A B C D A B C E F G H I F G H I J K L M C N O P A B Q R A B Q S F G H I F G H I J K L M C N O P A B Q R A B Q T U V
  W X U V W Y J K L M C N O P A B Q R A B Q Z A B Q R A B Q Z A B Q R A B Q Z A B Q R A B Q AA AB@3
>`.pickRestart({
  A: "g#1@2 ~@2 g#1@2 ~@2 g#1@2 f#1 g#1 ~@3 f#1", B: "g#1 ~ g#1 ~ g#1 ~ g#1 ~ g#1@2 f#1 g#1 ~@2 g#1 b1",
  C: "c#2@2 ~@2 c#2@2 ~@2 c#2@2 b1 c#2 ~@3 c#2", D: "e1@2 e2 ~@3 e1 ~ d#1@2 ~@2 f#1@2 ~@2",
  E: "e1@2 e2 ~@3 e1@2 d#1 ~ d#1 ~ g#1@2 f#1 ~", F: "g#1@2 ~@2 g#1 ~@3 g#1@2 f#1 g#1 ~@3 f#1",
  G: "g#1 ~ g#1 ~ g#1 ~ g#1 ~ g#1@2 f#1 g#1 ~@4", H: "c#2 ~@3 c#2 ~@3 c#2@2 b1 c#2 ~@4",
  I: "~@2 c#2 ~@3 c#2 ~ d#2@2 ~@2 d#2@2 ~@2", J: "a#1@2 ~@2 a#1@2 ~@2 a#1@2 g#1 a#1 ~@3 a#1",
  K: "e2@2 ~@2 e1@2 ~@2 e2@2 d#2 e2 ~@4", L: "g#1@2 ~@2 g#1@2 ~@2 g#1@2 f#1 g#1 ~@3 g#1",
  M: "c#2 ~ c#2 ~ c#2 ~ b1@2 ~@2 a#1@2 ~@2 g#1@2", N: "b1 ~ b1 ~ b1 ~ b1 ~ b1@2 a#1 b1 ~@4",
  O: "a#1@2 ~@2 a#1@2 ~@2 a#1@2 g#1 a#1 ~@2 g#1 a#1", P: "~@2 d#2 ~ d#2 ~@3 d#2 ~ d#2 ~@3 d#2 ~",
  Q: "c#2@2 ~@2 c#2 ~@3 c#2@2 b1 c#2 ~@3 c#2", R: "e1 ~ e2 ~@3 e1 ~ d#1@2 ~@2 f#1 ~@3",
  S: "e1 ~ e2 ~@3 e1 ~ d#1 ~ d#1 ~ g#1@2 f#1 ~", T: "e1 ~ e2 ~@3 e1 ~ f#1@2 ~@2 f#1@2 ~@2",
  U: "b1@2 ~@2 b1@2 ~@2 b1@2 a1 b1 ~@3 a1", V: "b1 ~ b1 ~ b1 ~ b1 ~ b1@2 a1 b1 ~@4",
  W: "e1@2 ~@2 e1@2 ~@2 e1@2 d1 e1 ~@2 e1 f#1", X: "g1@3 ~@3 g1 ~ f#1@2 ~@2 a1@2 f#1 ~",
  Y: "g1@3 ~@3 g1 ~ f#1@2 ~@2 a1@2 ~@2", Z: "e1 ~ e2 ~@3 e1 ~ d#1 ~ d#1 ~ a1@2 f#1 ~",
  AA: "e1 ~ e2 ~@3 e1 ~ d#1 ~ d#1 ~@2 a1@2 f#1", AB: "[~ b1@32 ~@15]/3",
})).s("gm_synth_bass_1").gain(0.45)

// chords · lead 8 bass lead
const lead_8_bass_lead = note(`<
  ~ A@2 B@2 A@2 B@2 C@2 D@2 C@2 D@2 E@2 F@2 G@2 H I A@2 B@2 A@2 B@2 C@2 D@2 C@2 D@2 E@2 F@2 G@2 H I A@2 B@2 A@2 J@2 K L
  M@2 K L N@2 E@2 F@2 G@2 H I A@2 B@2 A@2 O@2 A@2 B@2 A@2 O@2 A@2 B@2 A@2 O@2 A@2 B@2 A@2 P@2 Q@3
>`.pickRestart({
  A: "[b3 a#3, [g#3,d#4]]/2", B: "[b3@3 a#3, [g#3,d#4]]/2", C: "[~@16 f#4@15 ~, [g#3,b3,d#4]@31 ~]/2",
  D: "[[g#3,b3,d#4]@21 ~ [g#3,b3,d#4] ~ [f#3,a#3,c#4]@2 ~@2 [f#3,a#3,c#4]@2 ~@2]/2", E: "[[a#3,c#4,e4]@31 ~]/2",
  F: "[g#3,b3,d#4]/2", G: "[b3,c#4,e4]/2", H: "[g#3,b3,c#4,e4]",
  I: "~@2 [g#3,b3,d#4] ~ [g#3,b3,d#4] ~@3 [g#3,b3,d#4] ~ [g#3,b3,d#4] ~@3 [g#3,b3,d#4] ~", // G#m
  J: "[[g#3,b3,d#4]@6 [g#3,b3,d#4] [g#3,a#3,c#4]]/2", K: "[a3,d4,f#4]", L: "[a3,c#4,e4,f#4]",
  M: "[f#3@8 g3@4 [a3,c#4,e4] ~ [a3,c#4,e4] ~, [b3,d4]@3 ~]/2", // A Bm
  N: "[f#3@8 g3@4 [e3,a3,c#4] ~ [a3,c#4,e4] ~, [b3,d4]@3 ~]/2", // A Bm
  O: "[[g#3,b3,d#4]@12 [f#3,a#3,c#4] ~ [f#3,a#3,c#4] ~]/2", // G#m F#
  P: "[[g#3,b3,d#4]@24 [f#3,a#3,c#4]@2 ~@3 [f#3,a#3,c#4]@2 ~]/2", Q: "[~ [g#3,b3,d#4]@32 ~@15]/3",
})).s("gm_lead_8_bass_lead").gain(0.25).pan(0.3)

// other · flute
const flute = note(`<
  ~ A B A C A B A C D B D E F D A G H@2 I@2 B A J ~ A B A C A B A C D B D E F D A G H@2 I@2 B A J ~ A B A C A B A K L B
  M@2 N@3 O H@2 I@2 B A J ~ A B A C A B A P A B A C A B A P A B A C A B A P A B A C A B A Q R@3
>`.pickRestart({
  A: "b3", B: "c#4", C: "b3 a#3", D: "d#4", E: "~@3 d#4 c#4 ~ c#4 ~", F: "d#4@15 ~",
  G: "~@2 d#4@2 c#4 ~ d#4 ~ c#4@2 ~@2 c#4 ~@3", H: "c#4/2", I: "b3/2", J: "g#3", K: "b3@2 [g#3,b3] a#3", L: "d4",
  M: "[b3@6 c#4!2]/2", N: "[b3@11 ~]/3", O: "b3@4 c#4@2 c#4 ~", P: "b3@4 a#3 ~ a#3 ~", Q: "b3@8 a#3@2 ~@3 a#3@2 ~",
  R: "[~ b4@32 ~@15]/3",
})).s("gm_flute").gain(0.3).pan(0.8)

// other · alto sax
const alto_sax = note("<~@17 A B C D E@2 F ~@17 A B C D E@2 F ~@11 G@2 H I@2 ~ A B C D E@2 F ~@36>".pickRestart({
  A: "g#3", B: "g3", C: "f#3", D: "f3", E: "[g#3@31 ~]/2", F: "g#3@13 ~@3", G: "[~@14 e5@7 ~ d5@8 a4 b4]/2",
  H: "a4 g4 f#4@13 ~", I: "[~@7 c#5@5 d5@2 b4@11 a4 g4 f#4@5]/2",
})).s("gm_alto_sax").gain(0.4)

// other · electric guitar clean
const electric_guitar_clean = note(`<
  ~ A B C ~ A B C D E F E G H I J G E F E G H I J G A B C ~ A B C D E F E G H I J G E F E G H I J G A B C ~ A B C ~@9 E
  F E G H I J G A B C ~ A B C ~ A B C ~ A B C ~ A B C ~ A B C ~ A B C ~ A B C ~@4
>`.pickRestart({
  A: "~@2 f#3 ~ g#3 ~@7 g#3 f#3 d#3 [b3,d#4]", B: "~@11 f#3 g#3 f#3 d#3 [g#3,b3]", C: "~@12 g#3 f#3 d#3 [b3,d#4]",
  D: "~@10 f#3 ~ g#3 ~ f#3 ~", E: "~@8 f#3 ~@2 g#3 ~@4", F: "~@8 b3 ~@2 c#4 ~@4",
  G: "~@2 f#3 ~ f#3 ~ f#3 ~ f#3 ~@2 g#3 ~@4", H: "~@7 f#3!2 ~@2 g#3 ~@4", I: "~@6 b3!3 ~@2 c#4 ~@4",
  J: "~@6 g#3!2 f#3 ~@2 g#3 ~@4",
})).s("gm_electric_guitar_clean").gain(0.3).pan(0.3)

// chords · electric guitar clean
const electric_guitar_clean_2 = note(`<
  ~ A B C D A B C D E F G H E F G H I J K L M N O P A B C D A B C D E F G H E F G H I J K L M N O P A B C D A B C Q ~@8
  I J K L M N O P A B C D A B C Q A B C D A B C Q A B C D A B C Q A B C D A B C R ~@3
>`.pickRestart({
  A: "[b3,d#4,f#4]@6 ~@2 [b3,d#4,f#4]@2 ~ [b3,d#4,f#4]@3 ~@2", // B
  B: "[g#3,c#4,d#4]@6 ~@2 [g#3,c#4,d#4]@2 ~ [g#3,c#4,d#4]@3 ~@2", // G#sus4
  C: "[g#3,b3,d#4]@6 ~@2 [g#3,b3,d#4]@2 ~ [g#3,b3,d#4]@3 ~@2", D: "[g#3,b3,d#4]@7 ~ [g#3,a#3,c#4]@6 ~@2",
  E: "~@8 [f#4,b4,d#5]!4 ~@2 [f#4,b4,d#5] ~", F: "[d#4,g#4,c#5] ~ [d#4,g#4,c#5] ~ [d#4,g#4,c#5] ~ [d#4,g#4,c#5]@4 ~@6",
  G: "~@8 [g#4,b4]!4 ~@2 [e4,g#4] ~", H: "~@6 [g#4,b4] ~ [f#4,a#4] ~@3 [f#4,a#4] ~@3",
  I: "~@2 g#3 ~ g#3 ~ g#3 ~ b3 ~ b3 g#3 ~@2 g#3!2", J: "g#3 ~ g#3!3 ~ g#3 ~ b3 ~ b3 a#3 ~ a#3 f#3 g#3",
  K: "g#3!3 ~ g#3 ~ g#3 ~ b3 ~@2 g#3 ~ b3 g#3 f#3", L: "g#3 ~ g#3 ~ g#3 ~ g#3 ~ b3 ~@2 g#3 ~ f#3 d#3 ~",
  M: "g#3 ~ g#3!3 ~ g#3 ~ b3 ~ g#3 a#3 ~ b3 a#3 g#3", N: "b3 ~ b3 ~ b3 ~ b3 ~ b3 ~ g#3 b3 ~ a#3 ~ g#3",
  O: "g#3!3 ~ g#3 ~ g#3 ~ b3 ~ b3 a#3 ~ a#3 g#3 e3", P: "d#3 d#4!2 ~ d#4 ~ f#3 ~ f#3 ~ f#3 g#3 ~ f#3 d#3 ~",
  Q: "[g#3,b3,d#4]@7 ~ d#4@3 ~ [c#4,e4]@2 ~@2, ~@4 [f#3,a#3]@3 ~", // G#m C#m F#
  R: "[g#3,b3,d#4]@7 ~ d#4@3 ~@2 [c#4,e4]@3, ~@8 [f#3,a#3]@7 ~", // G#m C#m F#
})).s("gm_electric_guitar_clean").gain(0.45).pan(0.7)

// other · vibraphone
const vibraphone = note(`<
  ~ A@3 ~ A@3 ~@9 B@2 C@2 B@3 ~ A@3 ~ A@3 ~@4 D@2 ~@3 B@2 C@2 B@3 ~ A@3 ~ A@3 E F G ~ H F G ~@2 B@2 C@2 B@3 ~ A@3 ~ A@3
  ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~@4
>`.pickRestart({
  A: "[d#5@4 f#5@2 g#5 d#5@5 f#5@2 g#5 d#5@9]/3", B: "~ c#5 e5 b5 ~ a#5 ~@2", C: "~ b4 d#5 a#5 ~ g#5 ~@2",
  D: "[~@4 b5@2 a#5@5 ~ f#5@2 g#5@5 ~@13]/2", E: "~@2 d#5 e5", F: "f#5 ~@3 a5 ~ b5 f#5", G: "~@4 a5 ~ b5 f#5",
  H: "~@4 b4 c#5 d5 e5",
})).s("gm_vibraphone").gain(0.4)

// other · trumpet
const trumpet = note(`<
  ~@4 A ~@3 B ~@15 C ~@7 B ~@15 C ~@23 C ~@7 D E ~ F ~ E ~ G D E ~ F ~ E ~ G D E ~ F ~ E ~ G H I@3
>`.pickRestart({
  A: "~@4 [c#4,c#5]!2 ~@2 [a#3,a#4]!2 ~@2 [f#3,f#4]!2 ~@2", // C# A# F#
  B: "~@2 [d#4,d#5] ~@3 [d#4,d#5] ~ [c#4,c#5] ~@3 [c#4,c#5] ~@3", // D# C#
  C: "~@2 [d#4,d#5] ~ [d#4,d#5] ~@3 [d#4,d#5] ~ [d#4,d#5] ~@3 [d#4,d#5] ~", // D#
  D: "~@2 [g#4,b4,d#5] ~@3 [g#4,b4,d#5] ~ [f#4,a#4,c#5] ~@3 [f#4,a#4,c#5] ~@3", // G#m F#
  E: "~@4 [d#4,d#5] ~@3 [b3,b4]@2 [c#4,c#5] [e4,e5] [d#4,d#5] ~@3", // D# B C# E D#
  F: "~@2 [c#4,c#5]!2 [f#4,f#5]!2 [d#4,d#5]!2 [f#4,f#5]@2 [g#4,g#5] [f#4,f#5] ~@4", // C# F# D# F# G# F#
  G: "~@2 [d#4,d#5] [c#4,c#5]@3 [f#4,f#5] ~", // D# C# F#
  H: "~@2 [g#4,b4,d#5] ~@3 [g#4,b4,d#5] ~ [f#4,a#4,c#5] ~@4 [f#4,a#4,c#5] ~@2", I: "[~ g#4@32 ~@15]/3",
})).s("gm_trumpet").gain(0.59)

// drums · kick
const kick = s("bd").struct(`<
  ~ A@4 B A@7 B A@10 C A@4 B A@7 B A@10 C A@4 B A@7 B A@10 C A@4 B A@7 B A@7 B A@7 B A@2 D E ~@2
>`.pickRestart({
  A: "x!4", B: "x ~@3 x ~@3 x ~@3 x ~@2 x", C: "x ~@2 x ~@4", D: "x ~@3 x ~@3 x ~@4 x ~@2", E: "~ x ~@14",
})).gain(0.45)

// drums · snare
const snare = s("sd").struct("<~ A@23 B A@23 B A@23 B A@31 C D ~@2>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2", C: "~@4 x ~@8 x ~@2", D: "~ x ~@14",
})).gain(0.45)

// drums · clap
const clap = s("cp").struct("<~ [~ x ~ x]!103 [~@4 x ~@8 x ~@2] ~@3>").gain(0.4)

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

// drums · low tom
const low_tom = s("lt").struct("<[~@7 x] ~@7 [~@7 x] ~@51 [~@7 x] ~@47>").gain(0.45)

// drums · mid tom
const mid_tom = s("mt").struct("<~@8 A ~@15 B ~@23 B ~@11 A ~@11 B ~@31 C D ~@2>".pickRestart({
  A: "~@3 x", B: "~ x!2 ~ x!2 ~ x", C: "~@14 x!2", D: "x",
})).gain(0.45)

// drums · open hat
const open_hat = s("oh").struct("<~ [~ x ~ x ~ x ~ x]!103 [~@2 x ~@3 x ~@3 x ~@4 x] ~@3>").gain(0.35)

// drums · crash
const crash = s("cr").struct(`<
  ~ A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 B ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 B ~@3 A ~@2 C A ~@6 C A ~@3 A ~@7 A ~@7 A
  ~@7 A ~@7 A ~@3 D ~@2
>`.pickRestart({
  A: "x", B: "~ x ~@2", C: "~@3 x", D: "~ x ~@14",
})).gain(0.45)

// drums · high tom
const high_tom = s("ht").struct("<~@8 [~@5 x ~@2] ~@51 [~@5 x ~@2] ~@43 [~@13 x ~@2] ~@3>").gain(0.45)

// drums · tambourine
const tambourine = s("tb").struct("<~@17 A@7 B ~@16 A@7 B ~@16 A@7 B ~@35>".pickRestart({
  A: "~@3 x", B: "~@8 x!3 ~@5",
})).gain(0.35)

// drums · congas
const congas = s("conga:13").struct("<~ [~@3 x ~@7 x ~@4]!104 ~@3>").gain(0.48)

// drums · congas
const congas_2 = s("conga:18").struct("<~ [~@4 x!2 ~@6 x!2 ~@2]!103 [~@4 x!2 ~@7 x!2 ~] ~@3>").gain(0.48)

// drums · congas
const congas_3 = s("conga:33").struct("<~ [~@3 x ~@3 x]!103 [~@6 x ~@8 x] ~@3>").gain(0.48)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~ [x!12 ~ x!3]!103 [x!12 ~@2 x!2] x ~@2>").gain(0.5)

// drums · shaker
const shaker = s("sh").struct("<~@9 A@8 ~@8 A@16 ~@8 A@8 ~@16 A@31 B C ~@2>".pickRestart({
  A: "x!16", B: "x!12 ~ x!3", C: "x",
})).gain(0.2)

stack(
  bass, lead_8_bass_lead, flute, alto_sax, electric_guitar_clean, electric_guitar_clean_2, vibraphone, trumpet, kick,
  snare, clap, hihat, low_tom, mid_tom, open_hat, crash, high_tom, tambourine, congas, congas_2, congas_3, cabasa,
  shaker
)

More by Johnny Hates Jazz