Strudelify

Smashing Young Man

Collective Soul

KeyE♭ majorTempo94 bpm
0:00/0:00
// Smashing Young Man — Collective Soul
// 94 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 91 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(94/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · "a, b" plays two voices at once.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// bass · electric bass finger · "Track-1"
const bass = note(`<
  ~@9 A B C@5 D E F C G H I J K L M N O P M C@3 D C@3 D E F C G H I J K L M N O P M Q R Q S Q R T U V W X Y Z AA AB AC J
  K L M N O P M J K L M N O P M C@3 D ~@2
>`.pickRestart({
  A: "f1@2 f1@2 ~@2 f2@2 eb2@2 ~ d2@3 c2@2", B: "f1@2 f1@2 ~@2 eb2@2 d2@3 eb2@3 f2@2",
  C: "g1 bb1!2 ~ bb1 ~ bb1 ~@2 g1 bb1 g1 c2@2 bb1@2", D: "g1 bb1!2 ~ bb1 ~ bb1 ~@2 g1 bb1 g1 c2@2 bb1 ~",
  E: "f1@5 ~ f2@2 eb2@3 d2@3 c2@2", F: "f1@4 ~@2 eb2@2 d2@3 eb2@3 f2@2",
  G: "e1 bb1!2 ~ bb1 ~ bb1 ~@2 g1 bb1 g1 c2@2 bb1@2", H: "f1@4 ~@2 f2@2 eb2@3 d2@3 c2@2",
  I: "f1@4 ~@2 eb2@2 d2@3 eb2@3 f2 ~", J: "bb1@2 bb1@2 bb2@4 f2@3 eb2@2 ~ d2 ~", K: "f1 ~ f1@2 f2@3 ~ f1@3 g1@3 f1 ~",
  L: "ab1@2 ab1@2 ab2@4 ab1@2 ~ g1@2 ~ f1 ~", M: "eb2@2 eb2@2 eb2@2 eb2@2 eb2@2 eb2@2 eb2@2 eb2 ~",
  N: "bb1@2 bb1@2 bb2@4 f2@2 ~ eb2@2 ~ d2 ~", O: "f1@2 f1@2 f2@3 ~ f1@3 g1@3 f1 ~",
  P: "ab1@2 ab1@2 ab2@4 ab1@2 ~ g1@3 f1 ~", Q: "g1@15 ~", R: "c2@15 ~", S: "f1@6 f1@2 c2 d2@2 c2@4 ~, ~@9 db2 ~@6",
  T: "eb2", U: "eb2@7 ~", V: "bb1@2 ~@2 bb2@3 bb1@2 bb1 bb1@4 bb1 ~, ~@2 bb1@5 ~@9",
  W: "f1@2 ~@2 f2@3 f1@2 f1@5 f1 ~, ~@2 f1@5 ~@9", X: "ab1@2 ~@2 ab2@3 ab1@2 ab1 ab1@4 ab1 ~, ~@2 ab1@5 ~@9",
  Y: "eb2@2 eb2@2 eb2@3 eb2@2 eb2 eb2@2 eb2@2 eb2 ~", Z: "bb1@2 ~@5 bb1@2 bb1 bb1@4 bb1 ~, ~@2 bb1@5 ~@9, ~@2 bb2@5 ~",
  AA: "f1 ~@6 f1@2 f1 f1@4 f1 ~, ~@2 f1@5 ~@9, ~@4 f2@11 ~",
  AB: "ab1@2 ~@5 ab1@2 ab1 ab1@4 ab1 ~, ~@2 ab1@5 ~@9, ~@4 ab2@11 ~",
  AC: "eb2@2 ~@5 eb2@2 eb2 eb2@4 eb2 ~, ~@2 eb2@5 ~@9, ~@4 eb3@11 ~",
})).s("gm_electric_bass_finger").gain(0.36)

// drums · kick
const kick = s("bd").struct(`<
  ~@3
  [x ~ x ~@7 x ~@2 x ~@2]!50
  [x!2 ~@6]
  ~
  [~@10 x ~@2 x ~@2]
  [x ~ x ~@7 x ~@2 x ~@2]!6
  ~
  [x ~ x ~@7 x ~@2 x ~@2]!28
>`).gain(0.41)

// drums · rim
const rim = s("rim").struct("<[x!4] ~@90>").gain(0.41)

// drums · snare
const snare = s("sd").struct(`<
  ~@3
  [~@4 x ~@2 x ~ x ~@2 x ~@3]!50
  [~@4 x ~@2 x ~@8]
  ~
  [~@3 x]
  [~@4 x ~@2 x ~ x ~@2 x ~@3]!6
  ~
  [~@4 x ~@2 x ~ x ~@2 x ~@3]!28
>`).gain(0.31)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@3 A@6 B@2 A@6 B@2 A@2 B@2 C B@7 A@8 B@2 A@2 B@2 C B@7 D ~ E A@6 F A@9 B@3 A B@3 C B@7 A@4
>`.pickRestart({
  A: "x!16", B: "x ~ x!3 ~ x!2 ~ x!2 ~ x!3 ~", C: "x ~ x ~ x ~ x!2 ~ x!2 ~ x!3 ~", D: "x!9 ~@7", E: "~@9 x!7",
  F: "~ x ~ x ~ x ~ x",
})).gain(0.36)

// drums · crash
const crash = s("cr").struct("<~@23 A ~@21 A ~@17 A ~@7 A ~@3 A ~@3 A ~@11>".pickRestart({
  A: "x",
})).gain(0.36)

// drums · bongos
const bongos = s("bongo:4").struct("<~@53 [~ x ~@6] ~@2 [~ x ~@6]!6 ~@29>").gain(0.54)

// drums · bongos
const bongos_2 = s("bongo:18").struct("<~@9 A@2 ~@6 A@2 ~@2 A@10 ~@8 A@2 ~@2 A@10 B ~@18 A@3 ~ A@11 ~@4>".pickRestart({
  A: "x!4", B: "~ x",
})).gain(0.54)

stack(bass, kick, rim, snare, hihat, crash, bongos, bongos_2)

More by Collective Soul