Strudelify

Crazy Noisy Bizarre Town

Jerome Tan

KeyG majorTempo136 bpm
0:00/0:00
// Crazy Noisy Bizarre Town — Jerome Tan
// 136 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 3, 4/4 at bar 3) are rendered on a constant 4/4 grid of one bar per cycle
// note: ch 6 "Flute" named as a pipe, played on flute (its electric guitar muted patch is not one); ch 7 "Saxophone" named as a reed, played on alto sax (its electric guitar jazz patch is not one)
// note: Transcription provider: pdmx. https://musescore.com/score/5837104; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 41 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(136/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 · flute · Dsus2
const flute = note("<~@19 [[d6,e6]!16] ~@3 [[d6,e6]!16] ~@17>").s("gm_flute").gain(0.5)

// other · flute · soft notes
const flute_soft = note("<A B C D E F ~ D E ~@9 G ~@7 H@2 ~@10 I J@2>".pickRestart({
  A: "~@8 a5 a#5 b5 d6 ~@2 a5 a#5", B: "b5 d6 ~@2 b5!2 ~@2 a5 a#5 b5 d6 ~@2 b5 a5", C: "g5 e5 ~@2 e6!2 ~@10",
  D: "b5@15 ~", E: "a5 g5", F: "~@2 e6 ~ e6 ~ e6 ~", G: "g5 a5 b5 c6", H: "[~@14 d6@4 d6 ~ d6 ~ d6 ~ e6@3 ~@5]/2",
  I: "g5 e5 d5 b4 ~@2 e5 d5 b4 a4 ~@2 d5 b4 a4 g4", J: "[~@2 b4 a4 g4 e4 ~@4 b4 d5 g5 f#5 b4 d5@3 e5 ~@13]/2",
})).s("gm_flute").gain(0.25)

// other · alto sax · "Saxophone"
const alto_sax = note(`<
  A B C D E@2 F D G@3 ~ H I J K L M N O P Q P O ~ R S ~ T U V W X Y Z AA@2 ~ AB AC@2
>`.pickRestart({
  A: "~@8 a3 a#3 b3 d4 ~@2 a3 a#3", B: "b3 d4 ~@2 g4!2 ~@2 a3 a#3 b3 d4 ~@2 b3 a3", C: "g3 e3 ~@2 e4!2 ~@10",
  D: "g4 e4 d4 e4 ~@2 g4 e4 d4 e4 ~@2 g4 e4 d4 e4",
  E: "[~ d4 e4@6 ~@2 d4 e4 g4 f#4 e4 d4@3 e4@2 ~@10 [d4,d#4] [e4,f4]]/2", // D#maj7 Fmaj7
  F: "g4@3 ~ f#4@3 ~ e4@2 ~ d4 ~ d4@3, f#4 ~@15", G: "[~ d4 e4@7 ~@5 a3@7 ~ b3@7 ~ c4@8 e4@4 e4 ~ e4 ~ e4 ~]/3",
  H: "~@10 d4 e4 d4 b3 a3 g3", I: "e3 ~@7", J: "~@10 a3 b3 d4 a3 b3 d4", K: "e4@3 d4@5", L: "d4@3 d4@5", M: "g4@7 ~",
  N: "g3@2 a3@2 b3@2 c4 [e3,g3]", O: "[d3,f#3]!3 d3 [d3,f#3] [e3,g3]!2 ~", P: "~@7 [e3,g3]",
  Q: "[d3,f#3]!3 d3 [f#3,a3] [e3,g3]@2 ~", R: "c4!3 b3 ~ g3 ~ g3", S: "a3@3 ~", T: "~ b3!3 b3@2 b3@2",
  U: "a3 b3@2 b3@5", V: "~ b3@2 b3 b3@2 b3@2", W: "g3@2 b3@3 ~ b3@10", X: "~ b3!3 b3@2 g4@2", Y: "d4@2 d4 e4@4 ~",
  Z: "g4 e4 c4 a3", AA: "[g3@4 f#3@3 g3@9]/2", AB: "g4 e4 d4 b3 ~@2 e4 d4 b3 a3 ~@2 d4 b3 a3 g3",
  AC: "[~@2 b3 a3 g3 e3 ~@4 b3 d4 g4 f#4 b3 d4@3 e4 ~@13]/2",
})).s("gm_alto_sax").gain(0.3)

// bass · guitar harmonics · "Bass Guitar"
const bass = note("<~@3 A B A C A D@4 E A F G H I J K@2 L@2 M@2 N@3 O P Q R S T U V@3 ~@3>".pickRestart({
  A: "e1@2 e2@2 e1@2 f#2@2 g1@2 e1 g1@2 e1 g#1@2", B: "a1@2 ~@4 e1@2 a1@2 e1 a1@3 g1@2",
  C: "a1@3 ~@3 e1@2 b1@2 e1 b1@2 e1 d2@2",
  D: "[a1@3 ~@3 e1@2 a1@2 e1 a1@2 e1 f#1@7 ~ c2@4 a1@2 c2@2 f#2@4 a1@2 a#1@2 c2@4 b1@2 b1 a1 g1 e1@3 e2@2 e1@2 f#2@2 g1@2 e1 g1@2 e1 g#1@2]/4",
  E: "a1@2 ~@4 e1@2 a1@2 e1 a1@2 e1 g1@2", F: "a1@2 ~@4 b1@4 c2@2 d2 b1 d#2@2", G: "e2@3 e2 ~@2 d2@4 a1@2 b1@2 d2@2",
  H: "c2@3 c2 ~@2 g1@4 g1@3 e1 g1@2", I: "c#2@2 ~@2 c#2@2 c#2 a1 c#2@2 e1@2 a1@2 c#2@2", J: "d2 g1 d2 g1 d2!2 c2@2",
  K: "[b1@2 ~@2 b1@2 b1@2 c2@3 c2@2 ~ d2@4 d2@2 d2@2 d2@2 e1@2 f#1@2 g1@2 a1@2]/2",
  L: "[b1@2 ~@2 b1@2 b1@2 c2@3 c2@2 ~ d2@4 d1@2 d2@2 d1@2 d2@2 d2@2 c2@2 c2@2]/2",
  M: "[b1@2 ~@2 b1@2 b1@2 c2@3 c2@2 ~ d2@6 d#2@4 e2@2 b1@2 d2@2 e2@2]/2",
  N: "[f2@2 f1@2 f2@2 e2@2 ~@2 c2@2 ~@2 d1@4 d1@2 d2@2 d1@2 d2@2 d1@2 d2@2 e2@4 e2 ~ e2 ~ e2 ~ e2@2 [e1,f1,f#1,g1] [g#1,a1,a#1,b1,c2,c#2] [c#2,d2,d#2,e2] [g1,g#1,a1,a#1,b1,c2] [e1,f1,f#1] ~]/3",
  O: "c2@2 ~@2 c2@2 ~ g1 c2@2 g1@2 g#1@2 a1@2", P: "b1!2 ~ e1@2 f#1 g1 e1",
  Q: "c2@2 g1@2 c2@2 ~ g1 c2@2 g1@2 a1@2 c2@2", R: "d2 g1 a1 g1@2 a1 b1 g1",
  S: "c2@2 ~@2 c2@2 ~ g1 c2@2 g1@2 d2@2 c2@2", T: "b1@4 ~@2 e2@4 d2@2 b1 a1 g1@2", U: "a1!2 b1 a1 c2 a1 b1 a1",
  V: "[d2@8 d2@3 f#1@3 g1@8 c2@4 a1@2 c2@2 f#2@4 a1@2 b1@2 c2@4 c2@6]/3",
})).s("gm_guitar_harmonics").gain(0.5)

// bass · guitar harmonics · "Bass Guitar" · soft notes
const bass_soft = note("<A B C ~@35 D E@2>".pickRestart({
  A: "~@8 a2 a#2 b2 d3 ~@2 a2 a#2", B: "b2 d3 ~@2 b1!2 ~@2 a2 a#2 b2 d3 ~@2 b2 a2",
  C: "g2 e2 ~@2 e2!2 ~@2 [e1,f1,f#1,g1] [g#1,a1,a#1,b1,c2,c#2,d2] [d#2,e2,f2,f#2,g2,g#2,a2] [a#2,b2,c3,c#3,d3,d#3,e3] [c3,c#3,d3,d#3,e3,f3,f#3,g3] [a1,a#1,b1,c2,c#2,d2,d#2,e2,f2,f#2,g2,g#2,a2,a#2,b2] [e1,f1,f#1,g1,g#1] ~",
  D: "g2 e2 d2 b1 ~@2 e2 d2 b1 a1 ~@2 d2 b1 a1 g1", E: "[~@2 b1 a1 g1 e1 ~@4 b1 d2 g2 f#2 b1 d2@3 e2 ~@13]/2",
})).s("gm_guitar_harmonics").gain(0.3)

// chords · electric guitar muted · "Electric Guitar"
const electric_guitar_muted = note(`<
  A B C D E D F D G@3 H I H J K L M N O P Q R S@2 T@3 U V W X W Y Z AA@3 AB AC@2
>`.pickRestart({
  A: "~@8 a3 a#3 b3 d4 ~@2 a3 a#3", B: "b3 d4 ~@2 b3!2 ~@2 a3 a#3 b3 d4 ~@2 b3 a3", C: "g3 e3 ~@2 e4!2 ~@10",
  D: "[b3,e4]@2 e3@2 [b3,e4]@2 e3@2 [b3,e4]@3 [b3,e4] ~ e3 [b3,e4]@2", // E5
  E: "[a3,e4]@2 a2 [a3,e4]@2 ~ [a3,d4]@2 [a3,e4]@2 ~@6", // A5 D5 A5
  F: "[a3,e4]@2 a2 [a3,e4]@2 ~ b3!2 [a3,d4]@2 f#3 [a3,d4]@2 d4!3", // A5 D5
  G: "[[a3,e4]@2 a2 [a3,e4]@2 ~ [a3,d4]@2 [a3,e4]@2 ~@4 [f#3,b3]@4 f#3@2 b3@2 [b3,e4]@4 b3@2 e4@2 [b3,f#4]@4 f#4@2 f#4@2 [e4,c5]@4 [b3,e4] ~ [b3,e4] ~ [b3,e4] ~]/3", // A5 D5 A5 B5 E5 B5 C E5
  H: "[b3,e4]@2 e3@2 [b3,e4]@2 e3@2 [b3,e4]@3 [b3,e4]@2 e3 e4!2", // E5
  I: "[b3,e4]@2 e3@2 g3@2 [b3,e4]@2 [b3,e4]@2 ~@4 [b3,e4]!2", // E5
  J: "[b3,e4]@2 e3 [b3,e4]@2 ~ e4!2 d#4@2 b3 [d#4,f#4]@2 ~ f#4!2", // E5 D#m
  K: "[g3,b3,e4]@3 [g3,b3,e4] ~@2 [g3,b3,d4]@6 [g3,b3,d4]@2 [g3,b3,d4]!2", // Em G
  L: "[e3,a3,c4]@3 [e3,a3,c4] ~@2 [g3,b3,d4]@4 [g3,b3,d4]@2 [g3,b3,d4]@2 [g3,b3,d4]!2", // Am G
  M: "[g3,b3,e4] ~ [g3,b3,e4] e3 [g3,b3,e4] ~@3", N: "[g3,b3,d4]!2 [f#3,a3,d4] [e3,g3,c4]",
  O: "[f#3,b3]@2 ~@2 [f#3,b3]@2 [f#3,b3]@2 [g3,c4]@3 [a3,c4]@2 ~ c4!2", P: "d4@3 d4@2 ~ d4!2 b3@3 b3@2 ~@3",
  Q: "[f#3,b3]@2 ~@2 [f#3,b3]@2 [f#3,b3]@2 c4@3 c4@2 ~ c4!2", R: "d4@3 d4@2 ~ b3 a3 b3@4 c4@4",
  S: "[[f#3,b3]@2 ~@2 [f#3,b3]@2 [f#3,b3]@2 c4@3 c4@2 ~ [f#3,a3,d4]@4 [f#3,a3,d4]@2 [f#3,b3,d#4]@4 [g3,b3,e4]@6 ~@2]/2", // B5 D B Em
  T: "[f4@4 f4@2 e4@2 ~@2 e4@2 ~@2 [f#3,a3,d4]@14 ~@2 [b3,e4,a4]@4 [b3,e4,a4] ~ [b3,e4,a4] ~ [b3,e4,a4] ~ [b3,e4,g#4]@3 ~@5]/3", // D Esus4 E
  U: "[b3,d4]@2 d4!2 [b3,d4]@2 [b3,d4]@2 [b3,d4]@2 d4!2 [b3,d4]@2 [b3,d4]@2", // Bm
  V: "[f#3,a3,d4]@3 [g3,d4,g4]@3 [g3,d4,g4]!2", W: "[b3,d4]@2 d4!2 [b3,d4]@2 [b3,d4]@2 [b3,d4]@2 d4!2 [b3,d4]@2 d4!2",
  X: "[b3,d4,g4]@4 [b3,d4,g4]@2 [d4,g4,b4]@4 [d4,g4,b4]@2 [d4,g4,b4]@2 [d4,g4,b4]!2", // G
  Y: "[d4,g4,b4]@4 [d4,g4,b4]@2 [e4,g4,b4]@4 [e4,g4,b4]@2 [e4,g4,b4]@2 [e4,g4,b4]!2", Z: "[c4,e4,g4]!4",
  AA: "[[c4,e4,g4]@4 [a3,d4,f#4]@2 ~ [g3,b3]@2 g3 b3 [b3,e4]@2 b3 e4 [b3,f#4]@2 f#4!2 [f#4,c5]@2 [f#4,c5]@3, ~@19 d#4@5]/3", // C D G E5 B5 F#dim
  AB: "g4 e4 d4 b3 ~@2 e4 d4 b3 a3 ~@2 d4 b3 a3 g3", AC: "[~@2 b3 a3 g3 e3 ~@4 b3 d4 g4 f#4 b3 d4@3 e4 ~@13]/2",
})).s("gm_electric_guitar_muted").gain(0.4)

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

// drums · snare
const snare = s("sd").struct(`<
  A B C D@3 E F D G H I J I J K@2 L M G N G N G O G P Q G R G S G T G@3 U V W X
>`.pickRestart({
  A: "~@8 x!4 ~@2 x!2", B: "x!2 ~@2 x!2 ~@2 x!4 ~@2 x!2", C: "x!2 ~@2 x!2 ~@4 x!4 ~@2", D: "~@4 x ~@2 x ~ x ~@2 x ~@3",
  E: "~@4 x ~@3 x ~ x ~ x!4", F: "~@7 x ~ x ~@2 x ~@3", G: "~ x ~ x", H: "~@4 x ~@3 x!2 ~@2 x!2 ~@2",
  I: "~@4 x ~@2 x ~@4 x ~@3", J: "~@4 x ~@2 x ~@4 x!2 ~@2", K: "~@2 x ~@2 x!2 ~", L: "~@4 x ~@5 x ~@3 x!2",
  M: "x ~@3 x ~@2 x!3 ~ x!3 ~ x", N: "~@4 x ~@7 x ~ x!2", O: "~@4 x ~@5 x!6", P: "~@4 x ~@4 x ~@2 x!2 ~@2",
  Q: "~@2 x ~ x ~ x ~ x ~@2 x!3 ~@2", R: "x ~ x ~ x ~@7 x ~ x!2", S: "~ x!4 ~@7 x ~@3", T: "~@2 x!3 ~@3 x!3 ~ x ~ x!2",
  U: "~@4 x ~@3 x!3 ~ x!4", V: "x!4 ~@2 x!4 ~@2 x!4", W: "~@2 x!4 ~@4 x!6", X: "~ x ~@6",
})).gain(0.45)

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

// drums · hihat
const hihat = s("hh").struct("<~@3 A B C D E B@2 F G H I B ~@10 C J K L ~@7 M N ~@3>".pickRestart({
  A: "~@2 x!3 ~ x ~", B: "x!4", C: "~ x!3", D: "x!3 ~", E: "~@2 x!2", F: "x ~ x!2 ~ x ~ x", G: "~ x!7",
  H: "x ~ x ~ x ~ x!3 ~@3 x ~@3", I: "x!7 ~", J: "x", K: "~ x!4 ~@3", L: "x!2 ~@2", M: "~ x ~ x", N: "~@2 x ~ x ~@2 x",
})).gain(0.4)

// drums · mid tom
const mid_tom = s("mt").struct("<~ A B ~@4 C ~@6 D@3 ~ E ~@8 F ~@13>".pickRestart({
  A: "~@4 x!2 ~@10", B: "~@4 x!2 ~@8 x ~", C: "x!4 ~@12", D: "~@14 x!2", E: "~@5 x ~ x", F: "~ x!5 ~ x",
})).gain(0.45)

// drums · open hat
const open_hat = s("oh").struct("<~@3 A B@2 C D C E F ~ G H C I@3 ~@8 J ~ B I@2 K I K L@2 E M ~@3>".pickRestart({
  A: "~ x ~@3 x ~ x", B: "~ x ~ x ~ x ~ x", C: "~ x ~ x ~ x ~@2", D: "~@3 x ~ x ~ x", E: "~ x ~@3 x ~@2",
  F: "~ x ~@2 x ~ x ~", G: "~@5 x ~ x", H: "~@7 x", I: "~ x!3", J: "~ x!2 ~", K: "~@2 x!2", L: "~ x ~ x",
  M: "~ x ~ x ~ x!2 ~",
})).gain(0.4)

// drums · crash
const crash = s("cr").struct("<~@3 A ~ A ~ B C D ~ A ~@3 A@3 E A ~ A F G H I C ~ A J A J A J K L D ~@3 M>".pickRestart({
  A: "x", B: "~ x ~@2", C: "~@7 x", D: "~@3 x ~@3 x", E: "x!4", F: "~@3 x", G: "x ~@6 x", H: "~ x!2 ~",
  I: "x!2 ~ x ~ x ~ x", J: "x ~@2 x ~@4", K: "x!2", L: "x ~@3 x!2 ~ x", M: "~ x ~@6",
})).gain(0.45)

// drums · high tom
const high_tom = s("ht").struct("<~@2 [~ x] ~@38>").gain(0.45)

// drums · ride
const ride = s("rd").struct("<~@19 [~ x ~ x ~ x ~ x]!3 [~ x ~ x ~ x ~@2]!2 ~@17>").gain(0.4)

stack(
  flute, flute_soft, alto_sax, bass, bass_soft, electric_guitar_muted, kick, snare, clap, hihat, mid_tom, open_hat,
  crash, high_tom, ride
)

More by Jerome Tan