Strudelify

The Other Side

Aerosmith

KeyE minorTempo127 bpm
0:00/0:00
// The Other Side — Aerosmith
// 127 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 114 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(127/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 finger · "Bass"
const bass = note(`<
  A ~@3 B@3 C D E F G D E F G H I J K H I J K H I J K H I J L D E F G D E F G H I J K H I J K H I J K H I J L M ~@3 B@4
  D E F G D E F G D E F G D E F G H I J K H I J K H I J K H I J L D E F G D E F G D E F G D E F G N ~
>`.pickRestart({
  A: "e1@3 ~@5", B: "e2!8", C: "g1 a1!2 g1 a1!2 g1 a1", D: "e1@3 e1 e1@4", E: "e1 e1@3 e1 e1@3", F: "c2@3 c2!2 c2@3",
  G: "a1@3 a1 a1@4", H: "d1!2 f#1 d1!3 f#1 d1", I: "d2 d1 f#1 d1 d2 d1!3", J: "g1!6 b1 g1", K: "c2!4 e2 c2 e2 c2",
  L: "~@2 c2@2 c2@2 c2@2 c2@3 ~@5", M: "e2@2 e1@3 ~@3", N: "e2!2 d2 e2@4 ~",
})).s("gm_electric_bass_finger").gain(0.51)

// other · overdriven guitar · "Guitarr"
const overdriven_guitar = note(`<
  A B C D A B C D E@2 F G E@2 F G H I J K H I J K H I J K H I J L E@2 F G E@2 F G H I J K H I J K H I J K H I J L A B C
  D A B C D E@2 F G E@2 F G E@2 F G E@2 F G H I J K H I J K H I J K H I J L E@2 F G E@2 F G E@2 F G E@2 F G M ~
>`.pickRestart({
  A: "~ [e3,e4] ~@2 [d3,d4] [e3,e4] ~@2", B: "[e3,e4]@2 ~@2 [d3,d4]@2 [e3,e4]@5 ~@5",
  C: "[e3,e4]@2 [e3,e4]@2 ~@2 [g3,c4]@3 ~@3 [g3,c4]@3 ~", D: "[e3,a3]@2 [e3,a3]@2 ~@2 a3@7 ~@3, ~@6 e3@5 ~@5",
  E: "~@2 [e3,b3,e4]@3 ~@3 [e3,b3,e4]@3 ~@5", F: "~@2 [c3,g3,c4]@3 ~@3 [c3,g3,c4]@3 ~@5",
  G: "~@2 [a2,e3,a3]@3 ~@3 [a2,e3,a3]@3 ~@5", H: "d3!4 ~ d3 f#3 d3", I: "d3!2 f#3 d3 ~ d3 f#3 d3",
  J: "g2!2 b2 g2 ~ g2 b2 g2", K: "c3@2 c3@2 c3@2 c3@2 ~@2 c3!2 e3@2 c3@2", L: "~@2 c3@2 c3@2 c3@2 c3@3 ~@5",
  M: "[e2,e4]!2 [g2,d4] e4@5, ~@3 e2@4 ~", // E G5
})).s("gm_overdriven_guitar").gain(0.34).pan(0.3)

// other · brass section · "Brass"
const brass_section = note(`<
  ~@4 A@2 B C@2 ~@7 D ~ E F D ~ E F D ~ E F D ~ G@2 ~ H ~ H ~ H ~ H D ~ E F I ~ E F J ~ E F K ~ G@2 ~@5 L B C@2 ~@15 D ~
  E F D ~ E F D ~ E F D ~ G@2 ~@4 A@2 B C@2 ~@3 A@2 B M@2 ~
>`.pickRestart({
  A: "[[e4,e5]@13 [d4,d5] [e4,e5] [g4,g5]]/2", B: "~ [f#4,f#5]@2 [e4,e5]@2 [d4,d5]@2 [b3,b4]",
  C: "[~ [a3,a4]@2 [g3,g4]@2 [f#3,f#4]@2 e3@6 ~@3]/2", D: "~@2 [d4,d5,d6] ~@5", E: "~ g4@3", F: "c5",
  G: "[~@2 g4@7 c5!3 c5@2 ~@2]/2", H: "~@2 d5 e5 d5 e5 ~@2", I: "~ [d4,d5] ~@2, ~@2 d6 ~@5",
  J: "~@2 [d4,d6] d4 ~@4, ~ d5 ~@2", K: "~@2 [d4,d5,d6] ~@3 [d4,d5] ~", L: "~@5 [d4,d5] [e4,e5] [g4,g5]",
  M: "[~ [a3,a4]@2 [g3,g4]@2 [f#3,f#4]@2 ~ e4!2 d4 e4@5, ~@7 e3@6 ~@3]/2", // A G F#
})).s("gm_brass_section").gain(0.55)

// other · distortion guitar · "1 Guitarr"
const distortion_guitar = note(`<
  ~@8 A B C D A B C D E F G H I F G H I F G H I F G H A B C D A B C D E F G H I F G H I F G H I F G H ~@8 J K L M N O P
  Q R@2 S T U V W X E F G H I F G H I F G H I F G H Y Z C D Y Z C D Y Z C D Y Z C D AA ~
>`.pickRestart({
  A: "[e2,e3]", B: "e2!2 e2@14, e3@15 ~", C: "c4!2 ~ c4@4 ~, c3@3 c3@3 ~@2",
  D: "~ a2 a3@2 ~@2 a3@9 ~, [a2,a3]@2 a2@11 ~@3", E: "~@5 [d3,f#3] [f#3,a3] [a3,d4]",
  F: "~ [d3,f#3] [f#3,a3] [a3,d4] [f#3,a3] [d3,f#3] [a3,d4] [d3,f#3]", G: "g3 d3 b2 g2 d3 g2 d3 b2",
  H: "c3@2 c3@2 g3@2 e3@2 c3@2 c3!2 c3@4", I: "d3@9 ~ [d3,f#3]@2 [f#3,a3]@2 [a3,d4]@2",
  J: "~@2 [e3,e4]!6 [e3,e4]@2 [g2,g3]@2 [e2,e3]@2 [e3,e4]!2", K: "[e3,e4]!4 g4@2 a4@2 b4@2 g4@2 ~@2 f#4 e4",
  L: "e5@4 e5@6 b4!2 e5!2 b4 a4", M: "g4 e4@2 ~ g4 a4 g4 e4 g4!2 e4 d4 b3 a3 g3@2",
  N: "~@4 g3@2 [e3,e4,g4]@4 a4 g4 a4@4", O: "[a4,d5]@2 [g4,b4]@3 ~ a4 b4 a4 g4 e4 e4@4 ~",
  P: "g5@2 g5 f#5 d5 [e4,a4]@3 g5@2 g5 f#5 d5 a4@3", Q: "~ b4 d5 g5 d5 ~ b5@9 ~, ~@5 b4@9 ~@2",
  R: "[e2,e3]!5 [g2,g3] [e2,e3] [a#2,a#3] [e2,e3] ~ a3 e3 [e3,e4]@4", S: "~@2 e4 g4 g5 f#5 e5 d5 [g4,b4]@4 ~@2 b4 d5",
  T: "e5 b4 e5 d5 [g4,b4]@4 a4@2 g4 f#4 e4 d4@3", U: "~@4 [e5,e6]@4 ~ d5 [e5,e6]@5 ~, ~@4 [d5,d6] ~@3",
  V: "b5@2 a5 b5 e6@4 ~@6 b5 d6", W: "e6!2 d6 b5 g5 e5 g5 a5 b5!2 a5 g5 e5@2 ~@2",
  X: "[e4,e5,e6]@2 [d4,d5,d6] [d#4,d#5,d#6] [e4,e5,e6]@2 c5 a4 e4 e4@6 ~, ~ e3", // E D D# E
  Y: "~@4 [e2,e3]@4 [d2,d3]@2 [e2,e3]@5 ~", Z: "e2!2 e2@2 [d2,d3]@2 [e2,e3]@6 ~@4, e3 ~@3",
  AA: "e4@2 e4@2 d4!2 e4@7 ~@3",
})).s("gm_distortion_guitar").gain(0.51).pan(0.8)

// chords · piano
const piano = note("<~@64 A@2 B C A@2 B C A@2 B C A@2 B C ~@32 D ~>".pickRestart({
  A: "[e3,g3,b3]!8", B: "[c2,e2,g2]!8", C: "[a2,c#3,e3,a5,c#6,e6]!4 [a2,c#3,e3,a5,c6,e6] [a2,c#3,e3,a5,c#6,e6]!3",
  D: "[e4,g4,b4]!2 [d4,f#4,a4] [e4,g4,b4] ~@4", // Em D Em
})).s("gm_piano").gain(0.36)

// other · rock organ · "Tecla2"
const rock_organ = note("<~@96 A@2 B C A@2 B C A@2 B C A@2 B C ~@2>".pickRestart({
  A: "e4", B: "c5@7 c5", C: "a4@6 b4 a4",
})).s("gm_rock_organ").gain(0.42)

// other · tenor sax · "Sax1"
const tenor_sax = note("<~@40 A ~ B C ~@2 B C A ~ B C ~@2 B C ~@58>".pickRestart({
  A: "d3@15 ~", B: "~ g2 b2 g2 d3 g2 b2 d3", C: "~ c3 e3 c3 g3 c3 g3 e3",
})).s("gm_tenor_sax").gain(0.34).pan(0.8)

// other · baritone sax · "Sax2"
const baritone_sax = note("<~@40 A ~ B C ~@2 B C A ~ B C ~@2 B C ~@58>".pickRestart({
  A: "d4@15 ~", B: "~ g3 b3 g3 d4 g3 b3 d4", C: "~ c4 e4 c4 g4 c4 g4 e4",
})).s("gm_baritone_sax").gain(0.35).pan(0.3)

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

// drums · snare
const snare = s("sd").struct(`<
  A@7 B A@7 C A@15 D A@7 E A@7 F A@7 D ~@3 G ~ H I J A@23 F A@7 D A@7 F A@7 F I ~
>`.pickRestart({
  A: "~ x ~ x", B: "~@2 x ~ x!4", C: "~@4 x ~@7 x ~ x!2", D: "~ x!4 ~@3", E: "~@4 x ~@6 x!5", F: "~ x!2 ~ x!2 ~ x",
  G: "~@3 x", H: "x!8", I: "x", J: "~@4 x ~@3 x ~ x ~ x!2 ~@2",
})).gain(0.64)

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

// drums · low tom
const low_tom = s("lt").struct("<~@63 [x ~ x!2 ~@10 x ~] ~@48 [~ x ~@2] ~>").gain(0.64)

// drums · mid tom
const mid_tom = s("mt").struct("<~@62 [~@4 x!2 ~ x] [~@4 x!4 ~@8] ~@48 [~ x ~@6] ~>").gain(0.64)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@19 A ~@3 A ~@7 B ~@16 C ~@2 A ~@3 B D@4 ~@21 A ~@6 C ~@6 B ~@2 A ~@10 A ~@4
>`.pickRestart({
  A: "~@7 x", B: "x", C: "~@5 x ~@2", D: "~ x ~ x",
})).gain(0.64)

// drums · high tom
const high_tom = s("ht").struct("<~@62 [~ x!2 ~@5] ~@51>").gain(0.64)

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

// drums · ride bell
const ride_bell = s("rd").struct("<~@64 A B@3 A C B D A B E B A B C D ~@34>".pickRestart({
  A: "~ x!7", B: "x!8", C: "x ~ x!7 ~ x ~ x ~ x ~", D: "x!7 ~", E: "x!3 ~ x ~ x ~ x ~ x ~ x ~ x ~",
})).gain(0.64)

stack(
  bass, overdriven_guitar, brass_section, distortion_guitar, piano, rock_organ, tenor_sax, baritone_sax, kick, snare,
  hihat, low_tom, mid_tom, open_hat, high_tom, crash, ride_bell
)

More by Aerosmith