Strudelify

Natural One

The Folk Implosion

KeyF♯ minorTempo107 bpm
0:00/0:00
// Natural One — The Folk Implosion
// 107 bpm, 4/4, key F# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: ch 3 "Bass (bridge)" named as a bass, played on electric bass finger (its electric guitar muted patch is not one)
// note: sustain pedal (CC 64) lengthens the held notes
// note: duplicate parts dropped: ch 1 "Bass" acoustic bass (copy of ch 2 "Bass" fretless bass); ch 7 "Grunge chord" distortion guitar (copy of ch 6 "Grunge chord" distortion guitar); ch 9 "Synth" lead 1 square (copy of ch 8 "Synth" lead 2 sawtooth)
// note: Full arrangement: all 85 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(107/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 · electric guitar clean · "Guitar"
const electric_guitar_clean = note("<~@27 A B@8 ~@15 A B@8 ~@7 A C@8 B@8 ~>".pickRestart({
  A: "~@7 e4",
  B: "[~@2 f#4 ~@2 f#4 ~@12 f#4 ~@2 f#4 ~@12 f#4 ~@2 f#4 ~@12 f#4 ~@2 f#4 ~ a4@9, f#4@2 ~ f#4@2 ~ f#4@9 e4@8 a4@15 f#4@9 e4@16 ~, ~ g4@15 f#4 g4@15 f#4 g4@15 f#4 g4@15, ~@4 g#4@15 f#4 g#4@15 f#4 g#4@15 f#4 g#4@12, ~@7 a4@15 f#4@9 e4@8 a4@15 f#4@10]/8",
  C: "[~@2 f#4 ~@2 f#4 ~@12 f#4 ~@2 f#4 ~@12 f#4 ~@2 f#4 ~@12 f#4 ~@2 f#4 ~@9 e4, f#4@2 ~ f#4@2 ~ f#4@9 e4@8 a4@15 f#4@9 e4@8 a4@9, ~ g4@15 f#4 g4@15 f#4 g4@15 f#4 g4@15, ~@4 g#4@15 f#4 g#4@15 f#4 g#4@15 f#4 g#4@12, ~@7 a4@15 f#4@9 e4@8 a4@15 f#4@10]/8",
})).s("gm_electric_guitar_clean").gain(0.64).pan(0.6)

// chords · acoustic guitar steel · "Repetitive keyboard" · E5 B E5 B E5 B
const acoustic_guitar_steel = note(`<
  ~@20
  [[b4,e5] ~ [b4,e5] ~ [b4,e5]@2 ~ [b4,d#5] ~ [b4,d#5]!2 ~ [b4,d#5] ~@3]!40
  ~@8
  [[b4,e5] ~ [b4,e5] ~ [b4,e5]@2 ~ [b4,d#5] ~ [b4,d#5]!2 ~ [b4,d#5] ~@3]!15
  [[b4,e5] ~ [b4,e5] ~ [b4,e5]@2 ~ [b4,d#5] ~@8]
  ~
>`).s("gm_acoustic_guitar_steel").gain(0.48).pan(0.4)

// bass · electric bass finger · "Bass (bridge)"
const bass = note("<~@60 [f#2@2 ~ a2 b2 c3 b2 a2]!4 ~@21>").s("gm_electric_bass_finger").gain(0.56)

// bass · fretless bass · "Bass"
const bass_2 = note(`<
  ~@8 A@3 B C A C D C E C F A@3 B A@3 G C F C A C H C A I A@2 B A@3 B C A C D J A J D A@3 B A@3 G ~@4 J A C B@2 C A@2 B
  C A C A C K@2 C L@2 M ~
>`.pickRestart({
  A: "f#2@2 ~ a2 b2 c3 b2 a2", B: "f#2 a2 g#2 e2", C: "f#2@2 ~ f#3 e3@2 c#3@2", D: "f#2@2 a2@2 b2@2 c3 c#3",
  E: "f#2@2 ~ a2 b2 c3 c#3@2", F: "f#2@2 a2@2 b2 c3 c#3@2", G: "f#2 f#3 e3 c#3", H: "f#2@2 ~ a2 b2@2 c#3@2",
  I: "f#2@2 a2 b2 c3@2 b2 a2", J: "f#2@4 ~@2 f#3@2 e3@3 ~ c#3@3 ~", K: "f#2@2 ~ a2 b2@2 c3 c#3",
  L: "f#2@2 ~ a2 g#2@2 e2@2", M: "f#2 ~@3",
})).s("gm_fretless_bass").gain(0.56).pan(0.2)

// bass · lead 2 sawtooth · "Synth"
const bass_3 = note("<A@8 ~@51 A@8 ~@18>".pickRestart({
  A: "[f#1,f#2]/8", // F#
})).s("gm_lead_2_sawtooth").gain(0.5)

// drums · kick
const kick = s("bd").struct("<~@4 [x ~@3 x!2 ~@2]!56 ~@8 [x ~@3 x!2 ~@2]!15 x ~>").gain(0.72)

// drums · snare
const snare = s("sd").struct("<~@4 [~ x ~ x]!56 ~@8 [~ x ~ x]!15 [~ x ~@2] ~>").gain(0.72)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@4
  [x ~ x ~ x ~ x!3 ~ x ~ x ~ x ~]!56
  ~@8
  [x ~ x ~ x ~ x!3 ~ x ~ x ~ x ~]!15
  [x ~ x ~ x ~ x!2 ~@8]
  ~
>`).gain(0.72)

// drums · tambourine
const tambourine = s("tb").struct("<~@28 [x!16]!8 ~@16 [x!16]!31 [x!8 ~@8] ~>").gain(0.48)

// drums · vibraslap
const vibraslap = s("vibraslap:0").struct(`<
  ~@20 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@6 A ~@13
>`.pickRestart({
  A: "x",
})).gain(8.46)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@20 [x!16]!8 ~@8 [x!16]!16 ~@33>").gain(3.24)

// drums · shaker
const shaker = s("sh").struct("<~@4 [x ~ x ~ x ~ x!3 ~ x ~ x ~ x ~]!79 [x ~ x ~ x ~ x!2 ~@8] ~>").gain(0.48)

stack(
  electric_guitar_clean, acoustic_guitar_steel, bass, bass_2, bass_3, kick, snare, hihat, tambourine, vibraslap, cabasa,
  shaker
)