Strudelify

Impact Zone (Surf)

Rainbowdragoneyes

KeyD♭ majorTempo198 bpm
0:00/0:00
// Impact Zone (Surf) — Rainbowdragoneyes
// 198 bpm, 4/4, key Db major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5666937; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 127 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(198/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 · piano
const piano = note(`<
  A B@4 C@4 D E F C G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF@2 AG AH AI@2 AJ AK AL AM AN AO AP AQ AR
  AS@2 AT@2 AU AV AW AX AY@2 AZ@2 B C@4 D E F C G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF@2 AG AH AI@2
  AJ AK AL AM AN AO AP AQ AR AS@2 AT@2 AU AV AW AX AY@2 AZ@2 B
>`.pickRestart({
  A: "f5 e5 [d5,eb5] db5 c5 b4 bb4 a4 ab4 g4 gb4 f4 e4 eb4 d4 db4", B: "db4 eb4@3 eb4@2 db4 eb4@3 eb4@2 eb4@2 eb4@2",
  C: "db4 ~ eb2@2 [gb2,eb4]@2 db4 ~ eb2@2 [gb2,eb4]@2 [eb2,eb4]@2 [gb2,eb4]@2, eb2 ~@2 eb2 ~@4, ~ eb4@3 ~@3 eb4@3 ~@6", // Ebm Eb Ebm
  D: "db4 ~ ab2@2 [b2,eb4]@2 db4 ~ ab2@2 [b2,eb4]@2 [ab2,eb4]@2 [b2,eb4]@2, ab2 ~@2 ab2 ~@4, ~ eb4@3 ~@3 eb4@3 ~@6", // B Ab5 B
  E: "db4 ~ gb5 f5 [b2,eb4,ab5]@2 db4 ~ [ab2,gb5]@2 [b2,eb4,eb5]@2 [ab2,eb4,db5]@2 [b2,eb4,ab4]@2, ab2!2 ~ [ab2,f5] ~@4, ~ eb4@3 ~@3 eb4@3 ~@6", // Abm Ab7 B Absus4 Abm Db
  F: "db4 ~ eb2@2 [gb2,eb4]@2 db4 ~ eb2@2 [gb2,eb4]@2 [eb2,eb4]@2 [gb2,eb4]@2, bb4 ~, eb2 ~@2 eb2 ~@4, ~ eb4@3 ~@3 eb4@3 ~@6", // Ebm Eb Ebm
  G: "bb2!8, f4@15 ~, ~ d5", H: "b2!8, gb4@15 ~, eb5 gb5", I: "bb2!8, bb4@15 ~, f5 bb5", J: "b2!8, b4@15 ~, b5 eb6",
  K: "bb2!4 b2!4, [d5,d6] [eb5,eb6]", L: "bb2!4 b2!4, [f5,f6] [gb5,gb6], ~ bb4@2 bb4",
  M: "[bb2,f5] [bb2,bb4] [b2,gb5] [b2,bb4] [bb2,f5] [bb2,bb4] [b2,gb5] [b2,bb4], bb5 b5 d6 eb6", // Bb5 Bb B5 Bmaj7 Bb5 Bb B5 Bmaj7
  N: "bb5 a5 ab5 g5 gb5 f5 e5 eb5 d5 db5 c5 b4 bb4 a4 ab4 g4, f6 b5 gb6 f6, bb2!2 b2!2 bb2!2 b2!2",
  O: "db4 ~ eb2@2 [gb2,eb4,gb5]@2 db4 ~ eb2@2 [gb2,eb4,ab5]@2 [eb2,eb4,eb5]@2 [gb2,eb4,eb5]@2, eb6@15 ~, [eb2,eb5]@2 eb5@4 ~ eb4@3 ~@6, ~ eb4@3 ~@2 [eb2,eb5]@2 eb5@4 ~@4", // Ebm Ab7 Eb Ebm Eb
  P: "db4 ~ [eb2,eb5]@2 [gb2,eb4,eb5]@2 db4 ~ [eb2,eb5]@2 [gb2,eb4,eb5]@2 [eb2,eb4,db6]@2 [gb2,eb4,gb6]@2, [eb2,bb5] ~@2 [eb2,db6] ~@4, ~ eb4@3 ~@3 eb4@3 ~@6", // Eb Ebm Eb Ebm Eb7 Ebm Eb5 Eb7
  Q: "db4 ~ [eb2,eb5]@2 [gb2,eb4,gb5]@2 db4 ~ [eb2,eb5]@2 [gb2,eb4,ab5]@2 [eb2,eb4,eb5]@2 [gb2,eb4,eb5]@2, [eb2,eb6] ~@2 [eb2,eb5] ~@4, ~ eb4@3 ~@3 eb4@3 ~@6", // Eb Ebm Eb Ab7 Eb Ebm Eb
  R: "[bb2,f4,bb5]@2 [bb2,f4,eb5]@2 [b2,gb4,b5]@2 [b2,gb4,eb5]@2 [bb2,f4]@2 ~@2 [a5,bb5] [g5,ab5] [f5,gb5] [eb5,e5], ~@8 bb5 ~@7", // Bb5 Bbsus4 B5 B Bb5 Bbmaj7 Abmaj7 Gbmaj7 …
  S: "b4!4 bb4!4 ab4!4 gb4!4, gb3@15 ~, b1@2 b2 b1@2 b2 b1 b2",
  T: "f4!2 gb4!2 f4!2 gb4!2 f4!2 db4!2 bb3!2 f4!2, ab3@15 ~, db2@2 db3 db2@2 db3 db2 eb3",
  U: "eb4!4 gb4!2 eb4!4 gb4!2 db4!2 eb4!2, bb3@11 ~@5, eb1@2 eb2 eb1@2 eb2 eb1 eb2",
  V: "eb4@2 gb4 ab4 bb4 db5 ~ gb5 [db5,eb5] ~ bb4 gb4 eb4 gb4 bb4 db5, eb5@6 eb5@2 ~ db5@6 ~, eb1@2 eb2 eb1@2 eb2 eb1 eb2", // Dbsus2
  W: "b4 gb4!7 ab4!4 db5!4, b3@15 ~, b1@2 b2 b1@2 b2 b1 b2",
  X: "eb5!2 ab4!2 bb4!2 db5!2 eb5!2 ab4!2 bb4!2 db5!2, db4@15 ~, db2@2 db3 db2@2 db3 db2 db3",
  Y: "db5!2 eb5!2 db5!2 bb4!2 ab4!2 bb4!2 ab4!2 gb4!2, gb3@15 ~, gb2@2 bb2 gb2@2 bb2 gb2 bb2",
  Z: "f4!2 gb4!2 f4!2 db4!2 eb4!2 gb4 eb4 ab4 eb4 bb4 eb4, db4@3 ~ bb3@4, gb2@2 ab2 gb2 bb2 ab2 gb2 f2",
  AA: "[b3,eb4]@2 b3@2 [b2,gb3]@2 eb4!2 db4!2 gb3!2 f3!2 db4!2, b1@2 gb5@2 gb5 gb5@3, ~@3 b1@2 b2 b1 b2", // B B5
  AB: "eb4!2 bb3!2 f4!2 bb3!2 gb4!2 bb3!2 ab4!2 bb3!2, [db2,f5]@2 [db4,f5]@2 f5 ~@3, ~@2 db3 db2@2 [db3,db4,gb5] [db2,f5] [eb3,db4,eb5]", // Db Gb5 Db Eb7
  AC: "gb4!2 eb4!2 db4!2 eb4!2 gb4!2 eb4!2 gb4!2 eb4!2, eb1@2 eb2 eb1@2 eb2 eb1 eb2, ~ bb4",
  AD: "db4!2 eb4!2 ab4!2 eb4!2 bb4!2 ab4!2 gb4!2 f4!2, eb1@2 eb2 eb1@2 eb2 eb1 eb2",
  AE: "f4!2 gb4!2 eb4!2 db4!4 eb4!2 bb3!2 ab3!2, b1@2 gb5@2 gb5 ~ b1 ~, ~@4 b2@2 b1@4 [b2,gb5]@3 ~ b2@2", // B5
  AF: "[ab3!2 bb3!2 db4!2 eb4!2 gb4!2 ab4!2 bb4!4 gb4@2 gb4 bb4 ab4!2 gb4!2 f4!2 gb4!2 eb4!2 db4!2, [db2,f5]@4 f5@4 f5@2 ~@4 eb5@15 ~@3, ~@2 db3 db2@2 [db3,gb5] [db2,f5] db3 eb1@2 eb2 eb1@2 eb2 eb1 eb2]/2", // Db Gb5 Db
  AG: "db4!2 eb4!2 gb4!2 eb4!2 ab4!2 eb4!2 bb4!2 eb4!2, eb1@2 eb2 eb1@2 eb2 eb1 eb2",
  AH: "b4!2 [b2,bb4] bb4 [ab4,gb5] [b2,ab4] [b1,gb4] [b2,gb4], gb3@15 ~, b1@2 gb5@2 ~ gb5@2 ~, ~@3 b1@2 ~@3", // Bmaj7 Ab7 E B5
  AI: "[f4 gb4 [db3,f4] gb4 [f4,f5] [db3,db4,gb5] [db2,bb3,f5] [eb3,f4] eb4!2 [eb2,eb4] eb5!2 [eb2,eb5] [eb1,eb5] [eb2,eb5], ab3@15 ~ bb3@8 ~@8, [db2,f5]@2 f5@2 ~@3 eb5@4 ~ bb4@4, ~@3 db2@2 ~@3 eb1@2 ~ eb1@2 ~@3]/2", // Db F Gb5 Bbm Ebsus2 Eb Db
  AJ: "bb4 db5 eb5 gb5 eb5 db5 bb4 ab4 gb4 ab4 bb4 db5 bb4 ab4 gb4 f4, eb1@2 eb2 eb1@2 eb2 eb1 eb2",
  AK: "b4 gb4!7 ab4!4 db5!4, gb3@15 ~, b1@2 gb5@2 gb5 gb5@2 ~, ~@2 b2 b1@2 b2 b1 b2",
  AL: "eb5!2 ab4!2 bb4!2 db5!2 eb5!2 ab4!2 bb4!2 db5!2, ab3@15 ~, [db2,f5]@2 f5@2 f5 ~@3, ~@2 db3 db2@2 [db3,gb5] [db2,f5] db3", // Db Gb5 Db
  AM: "db5!2 eb5!2 db5!2 bb4!2 ab4!2 bb4!2 ab4!2 gb4!2, eb2@2 eb3 eb2@2 eb3 eb2 eb3",
  AN: "f4!2 gb4!2 f4!2 db4!2 eb4!2 gb4 eb4 ab4 eb4 bb4 eb4, eb2@2 eb3 eb2@2 eb3 eb2 eb3", AO: "eb3!4 bb3!4 eb4!4 f3!4",
  AP: "gb3!4 f3!4 eb3!4 bb2!4", AQ: "eb2!4 bb2!4 eb3!4 e3!4", AR: "eb3!4 b2!4 bb2!4 e2!4",
  AS: "[eb3!4 bb3!4 eb4!4 f3!4 gb3!4 f3!4 eb3!4 bb2!4, eb4@6 f4@6 gb4@6 ~@2 ab4@6 bb4@3 b4@3]/2",
  AT: "[eb2!4 bb2!4 eb3!4 e3!4 eb3!4 b2!4 bb2!4 e2!4, d5@3 eb5@3 f5@3 gb5@3 ab5@3 bb5@3 b5@3 db6@3 d6@3 eb6@3 ~@2]/2",
  AU: "eb2!2 eb3 eb2!2 eb3 eb2!2", AV: "b2 b1!2 b2 b1!2 b2 b1", AW: "gb2@2 gb2@2 gb3@2 gb2@2 gb2@2 gb3 ab3 db3@2 db3@2",
  AX: "db3!8",
  AY: "[[eb2,gb5] eb2 eb3 [eb2,bb5] eb2 eb3 [eb2,eb6] eb2 b2 b1!2 b2 [b1,gb5] [b1,ab5] [b2,gb5] [b1,eb5], ~ bb4@2 ~ eb5@2 ~ db6@3 eb5@2 ~@4]/2", // Ebm Eb5 Eb B5 E B5 B
  AZ: "[gb2@2 gb2@2 gb3@2 gb2@2 gb2@2 gb3 ab3 db3@2 db3@2 db3@2 db3@2 db3@2 db3@2 db3@2 db3@2 db3@2 db3@2, db5@6 ab5@6 f5@11 ~ eb5@8]/2",
})).s("gm_piano").gain(0.3)

// drums · kick
const kick = s("bd").struct("<~@5 A@19 B A@24 C B@7 A@8 ~ A@19 B A@24 C B@7 A@8 ~>".pickRestart({
  A: "x ~@4 x ~@2", B: "x!2", C: "~@12 x!4",
})).gain(0.3)

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

// drums · hihat
const hihat = s("hh").struct("<~@3 A@21 B A@24 ~@8 A@8 ~ A@19 B A@24 ~@8 A@8 ~>".pickRestart({
  A: "x!8", B: "x!4 ~@4",
})).gain(0.3)

// drums · mid tom
const mid_tom = s("mt").struct("<[~@5 x ~@2] ~@126>").gain(0.3)

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

// drums · crash
const crash = s("cr").struct(`<
  ~ A ~@3 A ~@13 B@2 A ~@2 C A D A ~ A ~@2 E A F A ~@3 A ~ A ~@8 G@7 A ~@3 A ~@4 A ~@13 B@2 A ~@2 C A D A ~ A ~@2 E A F
  A ~@3 A ~ A ~@8 G@7 A ~@3 A ~@4
>`.pickRestart({
  A: "x", B: "x!4", C: "~ x", D: "~@2 x!2", E: "~@6 x!2", F: "~@3 x", G: "x!2",
})).gain(0.4)

stack(piano, kick, snare, hihat, mid_tom, high_tom, crash)

More by Rainbowdragoneyes