Strudelify

Big in Japan

Alphaville

KeyD minorTempo105 bpm
0:00/0:00
// Big in Japan — Alphaville
// 105 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 124 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(105/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [...]/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 · synth bass 1 · "Bass Synth"
const bass = note(`<
  A B C D A B C D A B C D A B C D E F G D E F G D E F G D E F G D E F G D E F G D E F G D E F G D A B C D A B C D E F G
  D E F G D E F G D E F G D E F G D E F G D A B C D A B C D E F G D E F G D E F G D E F G D E F G D A B C D A B C D A B
  C D A B C H
>`.pickRestart({
  A: "d3 d3@2 d3 d3@2 d3!3 d3@2 d3 d3@2 d3!2", B: "bb2 bb2@2 bb2 bb2@2 bb2!3 bb2@2 bb2 bb2@2 bb2!2",
  C: "c3 c3@2 c3 c3@2 c3!3 c3@2 c3 c3@2 c3!2", D: "a2 a2@2 a2 a2@2 a2!3 a2@2 a2 a2@2 a2!2",
  E: "d3 d3@2 d3 d3@2 d3!2 bb2 bb2@2 bb2 bb2@2 bb2!2", F: "c3 c3@2 c3 c3@2 c3!2 a2 a2@2 a2 a2@2 a2!2",
  G: "bb2 bb2@2 bb2 bb2@2 bb2!2 g2 g2@2 g2 g2@2 g2!2", H: "a2 a2@2 a2 a2@2 a2!3 a2@2 a2 a2@2 a2 ~",
})).s("gm_synth_bass_1").gain(0.4)

// chords · electric guitar muted · "Guitar"
const electric_guitar_muted = note("<A B C D E F C G ~@72 E F C G E F C H ~@20 A B C D E F C G ~@8>".pickRestart({
  A: "f4 ~ d4 ~ c4!2 d4 f4 ~@8", B: "~@2 d4 ~ c4!2 d4 g4 ~@4 f4 ~@3", C: "~@2 d4 ~ c4!2 d4 f4 ~ f4 d4 ~ c4 ~ d4 ~",
  D: "a4 ~@2 a4 ~@2 a4 ~ c5 ~@2 c5 ~@2 c5 ~", E: "f4 ~ d4 ~ c4!2 d4 f4 ~ f4 d4 ~ c4 ~ d4 ~",
  F: "f4 ~ d4 ~ c4!2 d4 g4 ~ g4 ~ g4 f4 ~ f4 ~", G: "a4 ~@2 a4 ~@2 a4 ~ a4 ~ g4 c5 ~ g4 a4 ~",
  H: "a4 ~@2 a4 ~@2 a4 ~ a4@2 g4 c5@2 g4 a4@2",
})).s("gm_electric_guitar_muted").gain(0.8).pan(0.3)

// chords · electric guitar muted · "Guitar" · soft notes
const electric_guitar_muted_2 = note("<A B C D E F C G@2 ~@71 E F C H E F C I ~@20 A B C D E F C G@2 ~@7>".pickRestart({
  A: "~ f4@2 d4@2 ~ c4 d4 f4@8", B: "~ f4 ~ d4@2 ~ c4 d4 g4@5 f4@3", C: "~ f4 ~ d4@2 ~ c4 d4 f4 ~ f4 d4@2 c4@2 d4",
  D: "~ a4@2 ~ a4@2 ~ a4@2 c5@2 ~ c5@2 ~ c5", E: "~ f4@2 d4@2 ~ c4 d4 f4 ~ f4 d4@2 c4@2 d4",
  F: "~ f4@2 d4@2 ~ c4 d4 g4 ~ g4 ~ g4 f4 ~ f4", G: "[~ a4@2 ~ a4@2 ~ a4 ~ a4@2 g4 c5@2 g4 a4@5 ~@12]/2",
  H: "~ a4@2 ~ a4@2 ~ a4 ~ a4@2 g4 c5@2 g4 a4", I: "~ a4@2 ~ a4@2 ~ a4 ~@8",
})).s("gm_electric_guitar_muted").gain(0.32).pan(0.3)

// other · overdriven guitar · "OD guitar"
const overdriven_guitar = note(`<
  ~@24 A B C D A ~@3 A B C D A ~@27 A B C D A ~@3 A B C D A ~@11 A B C D A ~@3 A B C D A ~@23
>`.pickRestart({
  A: "d4!2 e4 f4@3 ~@10", B: "c4!2 d4 e4@3 ~@10", C: "bb3!2 c4 d4 ~@12", D: "a3!2 bb3 db4@5 a3 bb3 db4 e4 ~@4",
})).s("gm_overdriven_guitar").gain(0.4).pan(0.3)

// other · lead 3 calliope · "synth calliope"
const lead_3_calliope = note("<~@39 A B C D E F G D H I ~@75>".pickRestart({
  A: "~@6 a4!2", B: "a4 d4@7 bb4 c5@7", C: "c5 d5@7 a4@8", D: "a4 ~@2 g4@3 d5@4 c5@4 g4@2", E: "a4@6 a4!2",
  F: "a4 d4@7 d5 bb4@7", G: "c5 d5@7 a4@4 a4@2 a4@2", H: "a4@3 c5@3 d5@4 f5@2 a4@2 a4@2", I: "a4 d4@3 ~@12",
})).s("gm_lead_3_calliope").gain(0.4).pan(0.1)

// other · lead 8 bass lead · "bass & lead"
const lead_8_bass_lead = note(`<
  ~@104
  [d4!2 ~ d4!2 ~ d4!2 bb3!2 ~ bb3!2 ~ bb3!2]
  [c4!2 ~ c4!2 ~ c4!2 a3!2 ~ a3!2 ~ a3!2]
  [bb3!2 ~ bb3!2 ~ bb3!2 g3!2 ~ g3!2 ~ g3!2]
  [a3!2 ~ a3!2 ~ a3!4 ~ a3!2 ~ a3!2]
  ~@16
>`).s("gm_lead_8_bass_lead").gain(0.4).pan(0.3)

// drums · kick
const kick = s("bd").struct("<A@8 B@32 A@7 C B@3 D B@3 D B@24 A@8 B@20 A@8 B@8>".pickRestart({
  A: "x ~@2 x ~@4 x ~@2 x ~@4", B: "x!2", C: "x ~@2 x ~@4 x ~@7", D: "x",
})).gain(0.4)

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

// drums · low tom
const low_tom = s("lt").struct("<~@23 [~@3 x] ~@39 [~@11 x!2 ~@3] ~@43 [~@11 x!2 ~@3] ~@16>").gain(0.4)

// drums · mid tom
const mid_tom = s("mt").struct("<~@23 [~@11 x ~@4] ~@100>").gain(0.4)

// drums · tambourine
const tambourine = s("tb").struct("<~@8 A@32 ~@8 A@3 B A@28 ~@8 A@20 ~@8 A@8>".pickRestart({
  A: "~@6 x!2", B: "~@9 x ~ x!2 ~ x ~",
})).gain(0.4)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@8 [x!6 ~@2]!32 [x!8]!8 [x!6 ~@2]!32 ~@8 [x!6 ~@2]!20 ~@8 [x!6 ~@2]!8>")
  .gain(1.26)

// drums · shaker
const shaker = s("sh").struct(`<
  ~@8
  [~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x]!72
  ~@8
  [~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x]!20
  ~@8
  [~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x]!7
  [~ x ~ x ~ x ~ x ~ x ~ x ~ x ~@2]
>`).gain(0.25)

stack(
  bass, electric_guitar_muted, electric_guitar_muted_2, overdriven_guitar, lead_3_calliope, lead_8_bass_lead, kick,
  snare, low_tom, mid_tom, tambourine, cabasa, shaker
)

More by Alphaville