Strudelify

break on through

Austin Zell

KeyG majorTempo120 bpm
0:00/0:00
// break on through — Austin Zell
// 120 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/59380; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 27 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/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
const flute = note("<~@7 A B@2 ~@4 C D C D E F ~@4 G@2 H>".pickRestart({
  A: "~@5 b5!3", B: "[b5@4 b5@4 b5@4 a5@2 b5 b5@9 ~@8, ~@15 c6 ~@16]/2", C: "g6!2 ~ e6@3 g6!2", D: "g6!2 ~ e6@3 ~@2",
  E: "d6!2 ~ e6@3 b5!2", F: "a5@2 g5 e5@3 ~@2", G: "b5!4", H: "b5 ~@3",
})).s("gm_flute").gain(0.3)

// other · clarinet · "Bb Clarinet"
const clarinet = note("<~@10 A@2 ~@2 B C B C D E ~@4 F@2 G>".pickRestart({
  A: "[d5@2 d5 d5@3 c#5 b4@5 ~@4]/2", B: "g5!2 ~ e5@3 g5!2", C: "g5!2 ~ e5@3 ~@2", D: "d5!2 ~ e5@3 b4!2",
  E: "a4@2 g4 e4@3 ~@2", F: "e5!4", G: "e5 ~@3",
})).s("gm_clarinet").gain(0.3)

// bass · clarinet · "Bass Clarinet"
const bass = note("<~@4 A B A B A B A B C@2 D@6 ~@4 E@2 F>".pickRestart({
  A: "~@2 e3 ~ d3 ~@2 e3", B: "~ e3 ~@2 d3@2 ~@2", C: "d3@3 d3@5", D: "e3/2", E: "e4!4", F: "e4 ~@3",
})).s("gm_electric_bass_finger").gain(0.3)

// other · alto sax · "Alto Saxophone"
const alto_sax = note("<~@14 A B C B A D ~@4 E@2 F>".pickRestart({
  A: "e3 g3 a3 b3 a3 b3 d4 e4", B: "g4 a4 g4 e4@2 d4 e4@2", C: "e3 f#3 a3 b3 a3 b3 d4 e4", D: "g4 a4 g4 e4@3 ~@2",
  E: "b4!4", F: "b4 ~@3",
})).s("gm_alto_sax").gain(0.3)

// other · tenor sax · "Tenor Saxophone"
const tenor_sax = note("<~@14 A B C B A D ~@4 E@2 F>".pickRestart({
  A: "e3 g3 a3 b3 a3 b3 d4 e4", B: "g4 a4 g4 e4@2 d4 e4@2", C: "e3 f#3 a3 b3 a3 b3 d4 e4", D: "g4 a4 g4 e4@3 ~@2",
  E: "e4!4", F: "e4 ~@3",
})).s("gm_tenor_sax").gain(0.3)

// other · baritone sax · "Baritone Saxophone"
const baritone_sax = note("<~@2 A B A B A B A B A C ~@2 D@6 ~@4 E@2 F>".pickRestart({
  A: "e3@2 b2 ~ d3@2 a2 e3", B: "~ b2 ~ b2 d3@2 a2 ~", C: "~ b2 ~ b2 d3@2 e3 ~", D: "e2/2", E: "e2 b2 d3 e3",
  F: "e2 ~@3",
})).s("gm_baritone_sax").gain(0.3)

// other · trumpet · "Bb Trumpet"
const trumpet = note("<~@7 A B@2 C@2 D@2 E@4 F@2 ~@4 G@2 H>".pickRestart({
  A: "~@5 b4!3", B: "[b4@2 b4@2 b4@2 a4 b4@5 ~@4]/2", C: "[d5@2 d5 d5@3 c#5 b4@5 ~@4]/2", D: "d5@2 b4 d5@3 ~@2",
  E: "[e4,e5]/2", F: "[~ e4, b4]/2", G: "e5 ~ e5 ~", H: "e5 ~@3",
})).s("gm_trumpet").gain(0.3)

// chords · french horn · "F Mellophone"
const french_horn = note("<~@9 A ~ A B@2 C@4 D@2 ~@4 E@2 F>".pickRestart({
  A: "~@6 [e4,b4,e5] ~", B: "[f#4,d5]@3 [f#4,d5]@5", C: "e4/2", D: "b3/2", E: "b4 ~ b4 ~", F: "b4 ~@3",
})).s("gm_french_horn").gain(0.3)

// other · tuba · "Euphonium"
const tuba = note("<~@6 A B A B A B ~@2 C D C E F G ~@4 H@2 I>".pickRestart({
  A: "~@2 e3 ~ d3 ~@2 e3", B: "~ e3 ~@2 d3@2 ~@2", C: "g4!2 ~ e4@3 g4!2", D: "g4@2 ~ e4@3 ~@2", E: "g4!2 ~ e4@3 ~@2",
  F: "d4!2 ~ e4@3 b3!2", G: "a3@2 g3 e3@3 ~@2", H: "b3 ~ b3 ~", I: "b3 ~@3",
})).s("gm_tuba").gain(0.3)

// bass · tuba · "Bb Tuba"
const bass_2 = note("<~@2 A B A B A B A B A C D@2 E@6 ~@4 F@2 G>".pickRestart({
  A: "e2@2 b1 ~ d2@2 a1 e2", B: "~ b1 ~ b1 d2@2 a1 ~", C: "~ b1 ~ b1 d2@2 e2 ~", D: "d2@3 d2@5", E: "e2/2",
  F: "e2 b2 d3 e3", G: "e2 ~@3",
})).s("gm_tuba").gain(0.3)

// drums · kick
const kick = s("bd").struct("<A@5 B A B A B A@2 C@2 D@6 E@2 ~@2 A@2 F>".pickRestart({
  A: "x!2", B: "x ~ x!2", C: "x ~@2 x ~@4", D: "~ x ~ x", E: "x!4", F: "x",
})).gain(0.3)

// drums · snare
const snare = s("sd").struct("<A B A B A B A B A B A C D@2 E@6 F G ~@2 H@2 I>".pickRestart({
  A: "x ~@2 x ~@2 x ~", B: "~@2 x ~@2 x ~@2", C: "~@4 x ~@5 x!3 ~ x ~", D: "x ~ x ~@3 x!2", E: "~ x ~ x", F: "x!4",
  G: "x ~ x ~ x ~ x ~ x!8", H: "x!2", I: "x",
})).gain(0.3)

// drums · crash
const crash = s("cr").struct("<~@12 [x ~@2 x ~@4]!2 ~@10 [~ x ~ x]!2 ~>").gain(0.3)

// drums · ride
const ride = s("rd").struct("<[x!8]!12 ~@2 [x!8]!5 [x!7 ~] ~@4 [~ x ~ x]!2 ~>").gain(0.3)

stack(
  flute, clarinet, bass, alto_sax, tenor_sax, baritone_sax, trumpet, french_horn, tuba, bass_2, kick, snare, crash, ride
)