Strudelify
Shout It Out Loud cover art

1997 · Destroyer

Shout It Out Loud

Kiss

KeyB majorTempo137 bpm
0:00/0:00
// Shout It Out Loud — Kiss
// 137 bpm, 4/4, key B major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 3 "Paul" distortion guitar (copy of ch 2 "Ace" distortion guitar)
// note: Full arrangement: all 98 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 31.
setcpm(137/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 · electric bass pick · "Gene"
const bass = note(`<
  ~ A@2 B@2 A@2 C@2 D E F G D E F H I@6 J@3 D@2 K@2 D@2 L@2 D E F G D E F H I@6 J@3 D@2 K@2 D@2 I@6 M@3 ~@8 D@2 K@2 D@2
  K@2 D@2 K@2 D@2 K@2 D@2 K@2 N@3 O
>`.pickRestart({
  A: "[f#3@3 g#3@3 f#3@3 g#3@3 f#3 g#3 f#3@2]/2", B: "e3/2", C: "[a3@3 g#3@3 f#3@3 e3@3 d#3@2 c#3@2]/2", D: "b1!8",
  E: "b1!7 d2", F: "~ a1 a1@2 a1!3 d2", G: "~@2 a1@2 a1@4 a1@2 a1@2 a1@2 b1!2", H: "~ a1 a1@2 a1!3 b1",
  I: "[d2@2 b1 ~@2 a1 b1 d2@3 b1 ~@2 a1 b1 a1@2 a1!4 d2 d#2 e2@2 e2!4 b1 e2 d2@3 b1 ~@2 a1 b1 d2@3 b1 ~@2 a1 b1 a1]/6",
  J: "[~ a1!6 b1@14 ~@3]/3", K: "[a2@3 g#2@3 f#2@3 e2@3 d#2@2 c#2 c2]/2", L: "[a1@15 b1]/2", M: "[~ a1!6 b1@17]/3",
  N: "[b1@2 ~@6 b1@2 ~@4 b1@33 ~]/3", O: "b1 ~@3",
})).s("gm_electric_bass_pick").gain(0.59)

// chords · distortion guitar · "Ace"
const distortion_guitar = note(`<
  ~ A@2 B@2 A@2 C@2 D@2 E@2 D@2 F@2 G@6 H@3 I@2 J@2 K@2 L@2 D@2 E@2 D@2 F@2 G@6 H@3 I@2 J@2 K@2 G@6 M@3 ~@12 I@2 J@2 I@2
  J@2 I@2 J@2 I@2 J@2 N@3 O
>`.pickRestart({
  A: "[d#5@3 d#5@3 d#5@3 d#5@3 d#5@4]/2", B: "[c#5@31 ~]/2", C: "[c#5@30 [b2,f#3,b3,d#4,f#4,b4]!2]/2",
  D: "[[b2,f#3,b3,d#4,f#4,b4]@14 ~ [d3,a3,d4]]/2", // B D5
  E: "[~@2 [a2,e3,a3]@2 [a2,e3,a3]@8 ~@2 [d3,a3,d4]@4 [a2,e3,a3]@2 [a2,e3,a3]@8 ~@2 [b2,f#3,b3,d#4,f#4,b4]!2]/2", // A5 D5 A5 B
  F: "[~ [a2,e3,a3] [a2,e3,a3]@4 ~ [d3,a3,d4]@2 [a2,e3,a3] [a2,e3,a3]@6]/2", // A5 D5 A5
  G: "[[d3,a3]@2 [d3,b3] [d3,a3]!3 [d3,b3] [d3,a3]@2 [d3,a3] [d3,b3] [d3,a3]!3 [d3,b3] [a2,e3]@2 [a2,e3] [a2,f#3] [a2,e3]!3 [a2,f#3] [e2,b2]@2 [e2,b2] [e2,c#3] [e2,b2] f#2 b2 c#3 [d3,a3]@3 [d3,b3]@2 [d3,a3]@2 [d3,b3] [d3,a3]@2 [d3,a3] [d3,b3] [d3,a3] [d3,a3]@2 ~ [a2,e3]]/6", // D5 G D5 G D5 G D5 G …
  H: "[~ [a2,e3] [a2,f#3] [a2,e3]!3 c#3 [b2,f#3,b3,d#4,f#4,b4]@14 ~@3]/3", // A5 D A5 B
  I: "[[f#3,b3,d#4]@3 [g#3,b3,e4]@3 [f#3,b3,d#4]@3 [g#3,b3,e4]@3 [f#3,b3,d#4] [g#3,b3,e4] [f#3,b3,d#4]@2]/2", // B E B E B E B
  J: "[[a2,e3,a3,c#4,e4,a4]@12 [a3,c#4,e4,a4]@2 [b3,d#4,f#4,b4] ~]/2", // A B
  K: "[[f#3,b3,d#4]@6 [g#3,b3,e4]@3 [g#3,b3,e4] [g#3,b3,e4]@2 [f#3,b3,d#4]@6 [g#3,b3,e4]@3 [g#3,b3,e4] [g#3,b3,e4]@2 [f#3,b3,d#4]@2 [g#3,b3,e4]@2 [f#3,b3,d#4]@4]/2", // B E B E B E B
  L: "[[a2,e3,a3,c#4,e4,a4]@14 [a2,e3,a3,c#4,e4,a4] [b2,f#3,b3,d#4,f#4,b4]]/2", // A B
  M: "[~@2 [a2,e3]@2 [a2,f#3]@2 [a2,e3]@2 [a2,e3]@2 [a2,e3]@2 c#3@2 [b2,f#3,d#4,f#4,b4]@29 ~@5, ~@14 b3@27 ~@7]/3", // A5 D A5 B
  N: "[[b2,f#3,b3,d#4,f#4,b4] ~@3 [b2,f#3,b3,d#4,f#4,b4] ~@2 [b2,f#3,b3,d#4,f#4,b4]@17]/3", // B
  O: "[b2,f#3,b3,d#4,f#4,b4] ~@7", // B
})).s("gm_distortion_guitar").gain(0.25).pan(0.9)

// other · distortion guitar · "Ace (Lead)"
const distortion_guitar_2 = note("<~@57 A B@4 C@3 D ~@32>".pickRestart({
  A: "~ [c5,d5]@3", // Csus2
  B: "[c5 ~@2 c5 ~ c5 ~@2 c5 ~@2 c5 ~ d5@7 a4@2 c#5@2 a4@4 ~@6 a3@4 ~@2 a3@4 e4@2 [d3,a3]@6 [c5,d5]@4 c5@4 c5@4, ~@15 e2@4 e2@3 ~@10]/4", // D5 Csus2
  C: "[c5 ~@2 c5 ~ c5 ~@2 c5 ~@2 c5 ~ d5@7 a4@2 c#5@2 a4@4 ~@2 f#3@6 a3@6 e4@6]/3", D: "c#5@4 g#4 ~ c#5@4 g#4 ~ b4@4",
})).s("gm_distortion_guitar").gain(0.64)

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

// drums · kick
const kick = s("bd").struct(`<
  ~ A@8 B C D E B C D E F D@2 E F D E B A@8 G B C D E B C D E F D@2 E F D E H A@6 G F D@2 E F D E B A@15 I J A@11 G K ~
  L M
>`.pickRestart({
  A: "~@5 x ~@2", B: "x ~@3 x!2 ~@2", C: "x!2 ~@2 x!2 ~ x", D: "~ x ~@2 x!2 ~ x", E: "~ x ~@2 x!2 ~@2",
  F: "x ~@3 x!2 ~ x", G: "~@5 x ~ x", H: "x ~@4 x ~@2", I: "~@4 x!4", J: "x!8", K: "x ~@3 x ~@2 x", L: "~@14 x!2",
  M: "x",
})).gain(0.36)

// drums · snare
const snare = s("sd").struct("<~ A@8 B@16 A@9 B@15 C A@7 B@8 A@15 D ~ A@12 ~@4>".pickRestart({
  A: "x!4", B: "~ x ~ x", C: "~ x!3", D: "x!2 ~@2",
})).gain(0.36)

// drums · hihat
const hihat = s("hh").struct("<~@66 [x!5 ~ x!2]!14 [x!8]!2 ~@16>").gain(0.36)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~ A@8 B C@6 D B C@8 B C@6 E B C@7 B C@7 E B C@5 B C@8 F@14 ~@2 C@12 ~@4
>`.pickRestart({
  A: "x ~ x ~ x!3 ~", B: "~ x!7", C: "x!8", D: "x!6 ~@2", E: "x!7 ~", F: "~@5 x ~@2",
})).gain(0.36)

// drums · crash
const crash = s("cr").struct("<~@9 A ~@6 B A ~@8 A ~@7 A ~@7 A ~@8 A ~@5 A ~@36 C ~@2 A>".pickRestart({
  A: "x", B: "~@3 x", C: "x ~@3 x ~@2 x",
})).gain(0.36)

// drums · ride
const ride = s("rd").struct("<~@33 [~@7 x] ~@16 [~@7 x] ~@47>").gain(0.36)

stack(bass, distortion_guitar, distortion_guitar_2, rim, kick, snare, hihat, open_hat, crash, ride)

More by Kiss