Strudelify
How Bizarre cover art

How Bizarre

How Bizarre

OMC

KeyC majorTempo125 bpm
0:00/0:00
// How Bizarre — OMC
// 125 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 117 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(125/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 · acoustic bass · "ACBASS"
const bass = note("<A@18 ~@2 A@10 ~@2 A@30 B@2 A@30 ~@10 A@10 B@2 ~>".pickRestart({
  A: "[c2@6 ~@2 g2@6 f2@13 ~ g2@3 ~]/2", B: "[c2@6 ~@2 g2@6 f2@13 ~@5]/2",
})).s("gm_acoustic_bass").gain(0.36)

// chords · acoustic guitar nylon · "NYLONSTR"
const acoustic_guitar_nylon = note(`<
  A B C D A B C D A B A B A B A B A B A B A B C D A B A B A B A B A B C D A B A B A B A B A B A B A B A B A B A B A B A
  B A B A E A B C D A B A B A B A B A B A B A B A B A B A B A B A B A B F ~@9 A B A B A B A B A B A B F
>`.pickRestart({
  A: "[e3,g3]@3 ~ [e3,g3]@2 c3@2 [g3,b3]@3 ~ [g3,b3]@2 [c3,f3,a3]@2, c3@2 ~@2 d3@3 ~", // Em G F
  B: "[c3,f3,a3]@3 ~ [f3,a3]@2 c3 ~ [c3,f3,a3]@4 [d3,g3,b3]@3 ~", // F G
  C: "[c3,e3,g3]@3 ~ [e3,g3]@2 c3@2 [g3,b3]@3 ~ [g3,b3]@2 [c3,f3,a3] ~, ~@4 d3@3 ~", // C Em G F
  D: "[c3,f3,a3]@3 ~ [f3,a3]@2 c3@2 [c3,f3,a3]@3 ~ [d3,g3,b3]@3 ~", E: "[f3,a3]@3 ~@13", F: "[e3,g3]@3 ~@13",
})).s("gm_acoustic_guitar_nylon").gain(0.26)

// other · trumpet · "TROMPET"
const trumpet = note("<~@81 A B@2 C@2 B@2 D@2 ~@27>".pickRestart({
  A: "~@3 g4", B: "[g5@11 e5 f5 a5 g5 f5]/2", C: "[g5@7 g4]/2", D: "[g5@7 ~]/2",
})).s("gm_trumpet").gain(0.32)

// chords · acoustic guitar nylon · "NYLONSTR"
const acoustic_guitar_nylon_2 = note(`<
  A B C D E@2 F G ~@12 A B C D ~@3 H I@2 ~@2 A B C D ~@28 A B C D ~@49
>`.pickRestart({
  A: "~@4 [c5,e5] ~ [c5,e5] ~ [c5,e5]@3 ~ [b4,d5] ~ [b4,d5]@2", // C Bm
  B: "[b4,d5]@3 ~ [a4,c5] ~ [a4,c5] ~ [a4,c5]@3 ~ [g4,b4] ~ [g4,b4] ~", // Bm Am G
  C: "[g4,b4]@3 ~ [f4,a4] ~ [f4,a4] ~ [f4,a4]@3 ~ [e4,g4] ~ [e4,g4] ~", // G F Em
  D: "[e4,g4]@4 [d4,f4] ~ [d4,f4] ~ [d4,f4]@2 [e4,g4] ~ [e4,g4]@2 [e4,g4]@2", // Em Dm Em
  E: "[~@2 [f4,a4] ~ [f4,a4]@2 ~@2 [e4,g4]@2 ~@2 [d4,f4]@2 [d4,f4]@4 [e4,g4]@2 [e4,g4]@2 g4@2 ~@2 [c5,e5] ~ [c5,e5] ~ [c5,e5] ~]/2", // F Em Dm Em C
  F: "[c5,e5]@3 ~ [b4,d5] ~ [b4,d5]@2 [b4,d5]@3 ~ [a4,c5] ~ [a4,c5] ~", // C Bm Am
  G: "[a4,c5]@3 ~ [g4,b4] ~ [g4,b4] ~ [g4,b4]@2 [f4,a4] ~@5", H: "~@3 g4", I: "g5/2",
})).s("gm_acoustic_guitar_nylon").gain(0.21)

// other · brass section · "BRASS1"
const brass_section = note("<~@11 A B@2 ~@13 A B@2 ~@21 A B@2 ~@5 A B@2 ~@55>".pickRestart({
  A: "~@3 g4", B: "g5/2",
})).s("gm_brass_section").gain(0.41)

// chords · accordion · "ACCORDEON"
const accordion = note("<~@11 A B@2 ~@32 C@2 ~@3 A B@2 ~@5 A B@2 ~@16 C@16 ~@10 C@6 ~@7>".pickRestart({
  A: "~@3 g4", B: "g5/2", C: "[[c5,e5]@8 [b4,d5]@6 [f4,c5]@14 a4 ~@3, g4@13 ~ a4@13 ~@5]/2",
})).s("gm_accordion").gain(0.21)

// other · recorder · "BLOKFLUIT"
const recorder = note(`<
  ~@35 A B C B D E@2 F@2 G@3 ~@20 A B C B D E@2 F@2 G@3 H@2 ~@12 A B C B D E@2 F@2 G@3 A B C B D E@2 F@2 G@3
>`.pickRestart({
  A: "~@8 e5@4 c5 ~ c5@2", B: "~ c5 ~@6", C: "~@6 c5 ~ c5 ~ c5 ~ c5 ~ c5@2", D: "~@12 e5 ~ e5 ~",
  E: "[e5@4 f5@4 e5@2 d5@3 ~ c5@6 ~@8 e5 ~ e5 ~]/2", F: "[e5@4 f5@4 e5@2 d5@4 c5@4 ~@10 e5 ~ e5 ~]/2",
  G: "[e5@4 f5@4 e5@2 d5@4 c5@5 ~@3 e5 ~ e5 ~ e5@3 ~ e5@6 ~@12]/3", H: "[~@6 e5 ~ e5 ~ e5@3 ~ e5@6 ~@12]/2",
})).s("gm_recorder").gain(0.41)

// 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 ~@2 A B A B A B A B A B ~@2 A B A B A B A B A B A B A B A B A B A B A B A B A B A
  B A B A C A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B ~@2 A B A B A B A B ~@3
>`.pickRestart({
  A: "x ~@2 x!2 ~@3", B: "x ~@2 x!3 ~@2", C: "x",
})).gain(0.45)

// drums · clap
const clap = s("cp").struct("<~@104 [~ x ~ x]!2 ~@11>").gain(0.45)

// drums · snare
const snare = s("sd").struct("<A@18 ~@2 A@10 ~@2 A@31 ~ A@40 ~@2 A@8 ~@3>".pickRestart({
  A: "~ x ~ x",
})).gain(0.45)

// drums · hihat
const hihat = s("hh").struct("<A@18 ~@2 A@10 ~@2 A@31 ~ A@40 ~@2 A@8 ~@3>".pickRestart({
  A: "x ~ x!3 ~ x!3 ~ x!3 ~ x!2",
})).gain(0.25)

// drums · tambourine
const tambourine = s("tb").struct(`<
  A B@3 A B@3 A B@9 C ~ A B@3 A B@5 C ~ A B@3 A B@26 C A B@3 A B@35 C ~ A B@7 C ~@2
>`.pickRestart({
  A: "~ x!7", B: "x!8", C: "x",
})).gain(0.2)

stack(
  bass, acoustic_guitar_nylon, trumpet, acoustic_guitar_nylon_2, brass_section, accordion, recorder, kick, clap, snare,
  hihat, tambourine
)