Strudelify

Six Days

Intermission

KeyB minorTempo120 bpm
0:00/0:00
// Six Days — Intermission
// 120 bpm, 4/4, key B minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 129 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.

// bass · synth bass 1 · "SYN BASS 1"
const bass = note(`<
  ~@8 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 A B A B A B A B C D C D C D C E 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 ~@8 A B A B A B A B A B A B A B A B ~@9
>`.pickRestart({
  A: "b1!5 ~ b1!7 ~ b1!2", B: "g1!5 ~ g1!2 a1!5 ~ a1!2", C: "~ b2!3 b1@2 b2!2 ~ b2!3 b1@2 b2!2, b1 ~@3 b1 ~@3",
  D: "~ b2!3 b1@2 b2!2 ~ b2!3 ~ b2!3, b1 ~@3 b1 ~ b1 ~", E: "~ b2!3 b1@2 b2!2 b1@2 ~@6, b1 ~@7",
})).s("gm_synth_bass_1").gain(0.64)

// other · lead 2 sawtooth · "SAW WAVE"
const lead_2_sawtooth = note(`<
  A B A B A B A B A B A B A B A B C D E F C D E F ~@16 A B A B A B A B C D E F C D E F ~@24 A B A B A B A B C D E F C D
  E F ~@4 C D E F A B A B A B A B A B A B A B A B A B A B A B A B G
>`.pickRestart({
  A: "b3@3 ~ b3 ~ b3 ~ f#4 ~ f#4 ~ d4 ~ g3@2", B: "~@2 g3 ~ g3@2 e4@2 a3 ~ a3 ~ f#3 ~ f#3 ~",
  C: "b3@2 d4 ~ b3 ~ b3 ~ f#4 ~ f#4 ~ d4 ~ [g3,d4]@2", // G5
  D: "~@2 [g3,d4] ~ g3@2 e4@2 [a3,e4] ~ [a3,d4] ~ c#4@2 [f#3,b3] ~, ~@6 d4 ~@5 f#3 ~@3", // G5 A5 D5 B5
  E: "b3@2 b3 ~ b3 ~ b3 ~ f#4 ~ f#4 ~ d4 ~ [g3,d4]@2", // G5
  F: "~@2 [g3,d4] ~ g3@2 e4@2 [a3,e4] ~ [a3,d4] ~ f#4@2 [f#3,d4] ~, ~@6 d4 ~@5 f#3 ~@3", // G5 A5 D5 D
  G: "f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~",
})).s("gm_lead_2_sawtooth").gain(0.45)

// other · shakuhachi
const shakuhachi = note(`<
  ~@8 A B C D A B C D E@8 ~@6 F G H I J I H K L@2 A B C D A B C D E@8 ~@13 M N@2 ~@5 O P@2 A B C D A B C Q@3 R@2 S@2 ~@2
  A B C D A B C D T@8 ~@17
>`.pickRestart({
  A: "b4@3 ~ b4 ~ b4 ~ b4@5 ~ b4@2", B: "d5@2 b4 ~ b4@2 f#4@2 a4@2 b4@4 ~@2", C: "~@2 b4 ~ b4 ~ b4 ~ b4@3 ~ b4 ~ b4 ~",
  D: "b4@3 ~ b4@2 f#4@2 a4@2 b4@2 ~@4", E: "[d4 ~ f#4@8 ~ f#4 e4@2 c#4 e4@2 d4@9 ~@6]/4", F: "~@8 c#4@4 b3@3 ~",
  G: "c#4@4 b3@3 ~ c#4@4 b3@3 ~", H: "d4 ~ d4 ~ d4@2 c#4 d4", I: "~@6 f#4@3 ~ f#4@2 e4@2 d4 ~",
  J: "d4@2 ~@4 c#4 ~ d4@4 c#4@2 d4@2", K: "~@6 f#4 ~ f#4 ~ f#4@2 f#4@2 e4 ~", L: "[f#4@3 ~ f#4@27 ~]/2",
  M: "~@3 a4 g4 f#4 e4 c#4", N: "[e4 d4@11 ~@4]/2", O: "~@6 a4@2 g4@2 f#4@2 g4@2 f#4 ~", P: "[a4 g4 a4@29 ~]/2",
  Q: "[b4@3 ~ b4@2 f#4@2 a4@2 b4@38]/3", R: "d5/2", S: "[c#5@3 b4@9 f#4@3 ~]/2",
  T: "[d4@2 ~@2 f#4@16 ~@2 f#4@2 e4@4 c#4@2 e4@4 ~@4 f#4 ~ a4@2 b4 ~@3 f#4 ~ a4@2 b4 ~@3 f#4 ~ a4@2 b4@2 ~@4, ~@17 d4@9 ~@6]/4",
})).s("gm_shakuhachi").gain(0.36)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note("<~@20 A@4 B@16 ~@24 B@16 ~@16 B@32 ~>".pickRestart({
  A: "[f#4@4 g4@2 a4 g4 f#4@8, [b3,d4]]/4", B: "[f#4@4 g4@2 a4 g4 f#4@12 g4@2 a4 g4 f#4@8, [b3,d4]]/8",
})).s("gm_string_ensemble_1").gain(0.17)

// chords · synth brass 1 · "SYNBRASS 1"
const synth_brass_1 = note("<~@56 A B A C A B A C ~@65>".pickRestart({
  A: "[f#3,b3,d4] ~ [f#3,b3,d4] ~@2 [f#3,b3,d4] ~ [f#3,b3,d4]", // Bm
  B: "~@2 [f#3,b3,d4]@2 ~@2 [f#3,b3,d4] ~ [f#3,b3,e4]@2 ~@2 [f#3,b3,d4]@2 ~@2", // Bm Esus2 Bm
  C: "~@2 [f#3,b3,d4]@2 ~@2 [f#3,b3,d4] ~ [f#3,b3,c#4]@2 ~@2 [f#3,b3,c#4]@2 ~@2", // Bm F#sus4
})).s("gm_synth_brass_1").gain(0.26)

// other · melodic tom · "MELO TOM 1"
const melodic_tom = note("<~@33 A ~ A ~ A ~ A ~@17 A ~ A ~ A ~@11 A ~ A ~ A ~ A ~@49>".pickRestart({
  A: "~@12 [a2,a3] ~@3", // A
})).s("gm_melodic_tom").gain(0.54)

// drums · rim
const rim = s("rim").struct("<~@8 A@16 ~@16 A@23 B ~@16 A@16 ~@8 A@12 ~@13>".pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~ x ~ x ~@4",
})).gain(0.5)

// drums · kick
const kick = s("bd").struct("<~@8 A@55 B A@32 ~@8 A@16 C D C D ~@5>".pickRestart({
  A: "x!4", B: "x!3 ~", C: "x ~ x!3 ~ x!2", D: "x ~ x!6",
})).gain(0.64)

// drums · hihat
const hihat = s("hh").struct("<~@8 [x!4]!55 [x!3 ~] [x!4]!32 ~@8 [x!4]!12 [x!16]!4 ~@9>").gain(0.43)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@8
  [~ x ~ x ~ x ~ x]!55
  [~ x ~ x ~@4]
  [~ x ~ x ~ x ~ x]!32
  ~@8
  [~ x ~ x ~ x ~ x]!12
  ~@13
>`).gain(0.43)

// drums · crash
const crash = s("cr").struct("<~@7 [~@2 x!2] x ~@120>").gain(0.29)

// drums · tambourine
const tambourine = s("tb").struct("<~@8 A@16 ~@16 A@23 B ~@16 A@16 ~@8 A@20 ~@5>".pickRestart({
  A: "x!16", B: "x!10 ~@6",
})).gain(0.29)

// drums · shaker
const shaker = s("sh").struct("<~@24 [x!16]!16 ~@24 [x!16]!16 ~@49>").gain(0.36)

stack(
  bass, lead_2_sawtooth, shakuhachi, string_ensemble_1, synth_brass_1, melodic_tom, rim, kick, hihat, open_hat, crash,
  tambourine, shaker
)