Strudelify

Power of American Natives (Markus Schulz Return to Coldharbour remix)

Dance 2 Trance

KeyE minorTempo135 bpm
0:00/0:00
// Power of American Natives (Markus Schulz Return to Coldharbour remix) — Dance 2 Trance
// 135 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 127 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(135/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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 · shamisen · "Synthesizr" · Gm Dm Fm Am Em Gm
const shamisen = note(`<
  ~@48
  [[g3,a#3,d4] ~ [d3,f3,a3] ~ [d3,f3,a3] ~@2 [d3,f3,a3] ~@2 [d3,f3,a3]!2 ~ [d3,f3,a3] ~ [f3,g#3,c4]]!4
  [[a3,c4,e4] ~ [e3,g3,b3] ~ [e3,g3,b3] ~@2 [e3,g3,b3] ~@2 [e3,g3,b3]!2 ~ [e3,g3,b3] ~ [g3,a#3,d4]]!16
  ~@59
>`).s("gm_shamisen").gain(0.28)

// chords · shamisen · "Synthesizr" · soft notes · Dm Em
const shamisen_soft = note("<~@48 [~@9 [d3,f3,a3] ~@6]!4 [~@9 [e3,g3,b3] ~@6]!16 ~@59>").s("gm_shamisen").gain(0.12)

// bass · electric bass finger · "Bass"
const bass = note("<A@27 ~ A@20 B@4 A@16 ~@10 A@11 ~ A@34 ~@3>".pickRestart({
  A: "e2 ~ e2 ~ e2!2 ~ e2!2 ~ e2 ~ e2!2 ~ e2", B: "d2 ~ d2 ~ d2!2 ~ d2!2 ~ d2 ~ d2!2 ~ d2",
})).s("gm_electric_bass_finger").gain(0.43)

// other · lead 2 sawtooth · "Sawth Wave"
const lead_2_sawtooth = note(`<
  ~@28
  [e3 ~ e3 ~ d3 ~ d3 e3 ~ e3!2 ~ g3 ~ b3 ~]!20
  [d3 ~ d3 ~ c3 ~ c3 d3 ~ d3!2 ~ f3 ~ a3 ~]!4
  [e3 ~ e3 ~ d3 ~ d3 e3 ~ e3!2 ~ g3 ~ b3 ~]!16
  ~@22
  [e3 ~ e3 ~ d3 ~ d3 e3 ~ e3!2 ~ g3 ~ b3 ~]!34
  ~@3
>`).s("gm_lead_2_sawtooth").gain(0.42)

// other · lead 2 sawtooth · "Sawth Wave" · soft notes
const lead_2_sawtooth_soft = note(`<
  ~@28
  [~ e3 ~ e3 ~ d3 ~@2 e3 ~@2 e3 ~ g3 ~ b3]!20
  [~ d3 ~ d3 ~ c3 ~@2 d3 ~@2 d3 ~ f3 ~ a3]!4
  [~ e3 ~ e3 ~ d3 ~@2 e3 ~@2 e3 ~ g3 ~ b3]!16
  ~@22
  [~ e3 ~ e3 ~ d3 ~@2 e3 ~@2 e3 ~ g3 ~ b3]!34
  ~@3
>`).s("gm_lead_2_sawtooth").gain(0.24)

// chords · string ensemble 2 · "Strings"
const string_ensemble_2 = note(`<
  ~@44 A@2 B C D@2 E F A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 ~@16 A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C
  A@2 B C A@2 B C G@4 ~
>`.pickRestart({
  A: "[e4,g4,b4]/2", B: "[g4,b4,d5]", C: "[a4,c5,e5]", D: "[d4,f4,a4]/2", E: "[f4,a4,c5]", F: "[g4,a#4,d5]",
  G: "[[e4,g4,b4]@7 ~]/4", // Em
})).s("gm_string_ensemble_2").gain(0.26)

// other · synth drum · "Syn Drum"
const synth_drum = note(`<
  ~@27
  [c7 ~@3 c7 ~@3 c7 ~@3 c7 ~@3]
  ~@15
  [c7 ~@3 c7 ~@3 c7 ~@3 c7 ~@3]
  ~@61
  [c7 ~@3 c7 ~@3 c7 ~@3 c7 ~@3]
  ~@21
>`).s("gm_synth_drum").gain(0.72)

// drums · kick
const kick = s("bd").struct("<A@27 ~ A@40 B@3 C A@17 ~ A@32 B@3 D ~>".pickRestart({
  A: "x!4", B: "x ~@6 x", C: "x ~ x!2", D: "x",
})).gain(0.56)

// drums · snare
const snare = s("sd").struct("<~@94 [~ x ~ x]!28 ~@5>").gain(0.32)

// drums · clap
const clap = s("cp").struct("<~@12 [~@4 x!12]!15 ~ [~@4 x!12]!40 ~@30 [~@4 x!12]!24 ~@5>").gain(0.24)

// drums · clap · soft notes
const clap_soft = s("cp").struct("<~@13 [x!4 ~@12]!14 ~ [x!4 ~@12]!40 ~@30 [x!4 ~@12]!24 ~@5>").gain(0.16)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~@8 A@19 ~ A@40 B ~@5 A@15 B A@34 B ~@2>".pickRestart({
  A: "x!4", B: "x",
})).gain(0.08)

// drums · open hat
const open_hat = s("oh").struct("<~@8 A@19 ~ A@40 ~@6 A@15 ~ A@34 ~@3>".pickRestart({
  A: "~ x ~ x ~ x ~ x",
})).gain(0.4)

// drums · shaker
const shaker = s("sh").struct("<~@36 [x!16]!32 ~@22 [x!16]!33 ~@4>").gain(0.48)

stack(
  shamisen, shamisen_soft, bass, lead_2_sawtooth, lead_2_sawtooth_soft, string_ensemble_2, synth_drum, kick, snare,
  clap, clap_soft, pedal_hat, open_hat, shaker
)