Strudelify

Precious Declaration

Collective Soul

KeyF♯ majorTempo110 bpm
0:00/0:00
// Precious Declaration — Collective Soul
// 110.4 bpm, 4/4, key F# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 98 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(110.4/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.

// other · overdriven guitar · "Guitar"
const overdriven_guitar = note(`<
  ~@2 A B C@2 D E C@2 D E C@2 F@2 ~ G F@2 ~ G H I J K H I J L C@4 D E C@2 D E C@2 F@2 ~ G F@2 ~ G H I J K H I J L M@2
  N@2 O@2 N P Q@4 R@2 S G T U V W H I J K H I J K H I J K H I J L C@3 X
>`.pickRestart({
  A: "d#2@2 ~@4 [f2,g#2] f#2@3 d#2@2 d#2@3 d#2, ~ g#2 c#3@2 ~@4, ~@3 a#2@2 a#2@3 ~@8", // Fm
  B: "d#2@2 ~@4 [f2,g#2] f#2@3 d#2@2 d#2@3 d#2, ~@2 g#2@2 c#3@3 ~@9, ~@3 a#2@2 a#2@3 ~@8", // Fm
  C: "d#2@2 ~@4 g#2 f#2@3 d#2@2 d#2@3 d#2, ~@2 g#2@2 c#3@3 ~@9, ~@3 a#2@2 a#2@3 ~@8", D: "f#2!8", E: "[f#2,a#2]!8",
  F: "[~@10 g#2@2 a#2@2 b2@3 a#2@15, a#2@3 ~@5]/2", G: "d#3 c#3!2 d#3 a#2 g#2 f#2@2",
  H: "f#3 a#3 g#3 f#3 b3 a#3 g#3 f#3 a#3 g#3 f#3 a#3 g#3 f#3 a#3 g#3",
  I: "f#3 b3 a#3 g#3 f#3 a#3 g#3 f#3 a#3 g#3 f#3 b3 a#3 g#3 f#3 a#3",
  J: "g#3 f#3 a#3 g#3 f#3 b3 a#3 g#3 f#3 a#3 g#3 f#3 a#3 g#3 f#3 b3",
  K: "a#3 g#3 f#3 a#3 g#3 f#3 a#3 g#3 f#3 b3 a#3 g#3 f#3 a#3 g#3 f#3",
  L: "a#3 g#3 f#3 a#3 g#3 f#3 a#3 g#3 f#3 e3!2 ~ e3 ~ e3!2", M: "[g#2,c#3,f3]", N: "[a#2,d3,f3]",
  O: "[[g#2,f3] [g#2,f3], c#3@3 ~]/2", P: "~@9 d#3!2 ~ d#3 ~ d#3!2, [a#2,d3,f3]",
  Q: "d#2@2 ~@4 g#2 f#2@3 d#2@3 ~@3, ~@2 g#2@2 c#3@3 ~@9, ~@3 a#2@2 a#2@3 ~@8",
  R: "[~@5 g#2 a#2 b2@2 ~@3 d#3@2 f3@2, a#2@3 ~@5]/2", S: "d#3@4 ~@3 a#2", T: "~@5 f3 f#3 f3, f#3@3 ~",
  U: "f#3@2 g#3 a#3", V: "~@3 f#3@4 f#3, a#3 ~", W: "d#4 c#4!2 d#4 a#3 g#3 f#3!2",
  X: "d#2@2 ~@4 g#2 f#2@3 d#2@2 d#2@3 ~, ~@2 g#2@2 c#3@3 ~@9, ~@3 a#2@2 a#2@3 ~@8",
})).s("gm_overdriven_guitar").gain(0.41)

// chords · distortion guitar · "Rythm Guitar"
const distortion_guitar = note(`<
  ~@4 A@2 ~@2 A@2 ~@2 A@2 B@2 C@2 B@2 C@2 D E F G D E F H@2 A@3 ~@2 A@2 ~@2 A@2 B@2 C@2 B@2 C@2 D E F G D E F I@2 J K@2
  J@2 K L M@4 B@2 C@2 B@2 C@2 D E F G D E F G D E F G D E F H@2 A@2 N
>`.pickRestart({
  A: "d#2@2 ~@4 f2 f#2@3 d#2@2 d#2@2 d#2!2, ~@2 g#2@2 c#3@3 ~@9, ~@3 a#2@2 a#2@3 ~@8", B: "a#2@4 ~ g#2 f#2@2, f#2@3 ~",
  C: "b2@4 ~ g#2 f#2@2, f#2@3 ~",
  D: "[c#3,f#3,a#3]@4 ~@2 [c#3,f#3,a#3] [c#3,f#3,a#3]@3 [c#3,f#3,a#3]@2 [c#3,f#3,a#3]@2 [c#3,f#3,a#3]@2", // F#
  E: "[c#3,f#3,a#3]@4 ~@2 [c#3,f#3,a#3]!2 [c#3,f#3,a#3]@2 [c#3,f#3,a#3]@2 [c#3,f#3,a#3]@4", // F#
  F: "[b2,f#3,b3,d#4]@2 ~@4 [b2,f#3,b3,d#4] [b2,f#3,b3,d#4]@2 ~ [b2,f#3,b3,d#4]@2 [b2,f#3,b3,d#4]@2 [b2,f#3,b3,d#4]@2", // B
  G: "[b2,f#3,b3,d#4]@2 ~@4 [b2,f#3,b3,d#4] [b2,f#3,b3,d#4]@2 ~ [b2,f#3,b3,d#4]@2 [b2,f#3,b3,d#4]@2 ~@2", // B
  H: "[[b2,f#3,b3,d#4]@2 ~@4 [b2,f#3,b3,d#4] [b2,f#3,b3,d#4]@2 [c3,e3,a#3,c4,e4] [c3,e3,a#3,c4,e4]@2 [c3,e3,a#3,c4,e4]@2 [c3,e3,a#3,c4,e4] ~ d#2@2 ~@4 f2 f#2@3 d#2@2 d#2@2 d#2!2, ~@15 [c3,e3,a#3,c4,e4]@2 ~ g#2@2 c#3@3 ~@9, ~@19 a#2@2 a#2@3 ~@8]/2", // B C7
  I: "[[b2,f#3,b3,d#4]@2 ~@4 [b2,f#3,b3,d#4] [b2,f#3,b3,d#4]@2 [c3,e3,a#3,c4,e4] [c3,e3,a#3,c4,e4]@2 [c3,e3,a#3,c4,e4]@2 [c3,e3,a#3,c4,e4] [c3,e3,a#3,c4,e4]@2 ~@3 [g#2,c#3,f3]@4 ~@4 [g#2,c#3,f3]@4]/2", // B C7 C#
  J: "~ [g#2,c#3,f3] ~ [g#2,c#3,f3]", K: "~ [d3,f3,a#3] ~ [d3,f3,a#3]",
  L: "~@4 [d3,f3,a#3]@4 ~ [d#2,g#2] [d#2,g#2,c#3,d#3]@2 [d#2,g#2,c#3,d#3]@2 [d#2,g#2,c#3,d#3]!2", // A# G#5 C#sus2
  M: "d#2@2 ~@4 f2 f#2@3 d#2@3 ~@3, ~@2 g#2@2 c#3@3 ~@9, ~@3 a#2@2 a#2@3 ~@8",
  N: "d#2@2 ~@4 f2 f#2@3 d#2@2 d#2@3 ~, ~@2 g#2@2 c#3@3 ~@9, ~@3 a#2@2 a#2@3 ~@8",
})).s("gm_distortion_guitar").gain(0.41)

// bass · electric bass finger · "Bass"
const bass = note(`<
  ~@5 A B@2 C@2 B@2 D C E@2 F@2 E@2 F@2 G@2 F@2 E@2 F H@2 C D C B@2 C@2 B@2 D C E@2 F@2 E@2 F@2 G@2 F@2 E@2 F I@2 J K L
  M N K O P Q P Q E@2 F@2 E@2 F@2 G@2 F@2 E@2 F@2 G@2 F@2 E@2 F R@2 C D C
>`.pickRestart({
  A: "~@15 f2", B: "f#2!8", C: "d#2@2 ~@4 g#2 f#2@3 d#2@2 d#2@3 ~, ~@2 g#2@2 c#3@3 ~@9, ~@3 a#2@2 a#2@3 ~@8",
  D: "d#2@2 ~@4 g#2 f#2@3 d#2@2 d#2@3 ~, f#2 ~ g#2@2 c#3@3 ~@9, ~@3 a#2@2 a#2@3 ~@8",
  E: "f#2@2 f#2@2 f#2@2 f#2!2 f#2@2 f#2@2 f#2@2 f#2@2", F: "b2@2 b2@2 b2@2 b2!2 b2@2 b2@2 b2@2 b2@2",
  G: "f#3@2 f#3@2 f#3@2 f#3!2 f#3@2 f#3@2 f#3@2 f#3@2",
  H: "[b2@2 b2@2 b2@2 b2 ~@2 e3 e3@2 e3@2 e3 e3@2 ~@5 g#2 f#2@3 d#2@2 d#2@3 ~, ~@18 g#2@2 c#3@3 ~@9, ~@19 a#2@2 a#2@3 ~@8]/2",
  I: "[b2@2 b2@2 b2@2 b2 ~@2 e3 e3@2 e3@2 e3 ~ g#2@2 g#2@2 g#2@2 g#2@2 g#2@2 g#2@2 g#2@2 g#2@2, ~@15 e3@2 ~@15]/2",
  J: "g#2!3 a#2 f3 g#2 d#3 a#2", K: "a#2!8", L: "a#2!2 f3 a#2!3 f3 a#2", M: "g#2!8", N: "g#2!2 d#3 g#2 f3 a2 d#3 a#2",
  O: "a#2@2 f3@2 a#2@2 a#2@2 ~ d#3!2 ~ d#3 ~ d#3!2",
  P: "d#2@2 ~@4 g#2 f#2@3 d#2@3 ~@3, f#2 ~ g#2@2 c#3@3 ~@9, ~@3 a#2@2 a#2@3 ~@8",
  Q: "d#2@2 ~@4 g#2 f#2@3 d#2@3 ~@3, ~@2 g#2@2 c#3@3 ~@9, ~@3 a#2@2 a#2@3 ~@8",
  R: "[b2@2 b2@2 b2@2 b2 ~@2 e3 e3@2 e3@2 e3 ~ d#2@2 ~@4 g#2 f#2@3 d#2@2 d#2@3 ~, ~@15 e3@2 ~@2 a#2@2 a#2@3 ~@8, ~@16 f#2 ~ g#2@2 c#3@3 ~@9]/2",
})).s("gm_electric_bass_finger").gain(0.51)

// chords · pad choir · "OOhs"
const pad_choir = note(`<
  ~@14 A@2 ~@2 A@2 ~@5 B ~@3 C ~@12 A@2 ~@2 A@2 ~@5 B ~@3 C ~@12 A@2 ~@2 A@2 ~@5 B ~@3 C ~@3 B ~@3 C ~@4
>`.pickRestart({
  A: "[~ a#4, f#4@3 ~, a#4 ~, ~@7 b4@2 ~@7]/2", B: "f#4 ~ g#4@3 ~ f#4 ~ g#4@3 ~ f#4@3 ~, b3@5 ~ b3@5 ~@5",
  C: "f#4 ~ g#4@3 ~ f#4 ~ g#4 ~@7, b3@5 ~ b3@5 ~@5",
})).s("gm_pad_choir").gain(0.41)

// drums · kick
const kick = s("bd").struct("<A@3 B A@10 C@15 D A@12 C@15 D A@7 E A@4 C@23 D A@4>".pickRestart({
  A: "x!2", B: "x ~@3 x!2 ~@2", C: "x ~@2 x!2 ~@3", D: "x ~@5 x ~@2 x!2 ~@5", E: "x ~@8 x!2 ~@5",
})).gain(0.51)

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

// drums · pedal hat
const pedal_hat = s("hh").struct(`<
  A@6 B@2 A@2 B@2 A@2 B@15 C A@4 B@2 A@2 B@2 A@2 B@15 C B@7 C A@4 B@23 C A@3 D
>`.pickRestart({
  A: "x!16", B: "x!8", C: "x!4 ~@4", D: "x!13 ~@3",
})).gain(0.51)

// drums · ride bell
const ride_bell = s("rd").struct(`<
  ~@3 A ~ A ~@3 A ~@3 A ~@15 B ~ A ~ A ~@3 A ~@3 A ~@15 C ~@7 D ~ A ~ A ~@23 C ~ A ~ A
>`.pickRestart({
  A: "~@5 x ~@2", B: "~ x", C: "~@9 x ~@6", D: "~@8 x!2 ~@6",
})).gain(0.51)

// drums · tambourine
const tambourine = s("tb").struct("<~@3 A ~ A ~@3 A ~@3 A ~@17 A ~ A ~@3 A ~@3 A ~@25 A ~ A ~@25 A ~ A>".pickRestart({
  A: "~@5 x ~@2",
})).gain(0.51)

// drums · splash
const splash = s("cr").struct("<~ [~@5 x ~@2] ~@63 [~ x] ~@32>").gain(0.51)

stack(overdriven_guitar, distortion_guitar, bass, pad_choir, kick, snare, pedal_hat, ride_bell, tambourine, splash)

More by Collective Soul