Strudelify

Cum on Feel the Noise

Oasis

KeyD majorTempo140 bpm
0:00/0:00
// Cum on Feel the Noise — Oasis
// 140 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 167 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(140/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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 · distortion guitar · "Guitar"
const distortion_guitar = note(`<
  A@4 B C D@2 E F G@2 H@4 E F I J H@4 K C L@4 H@4 L@4 M N C@2 E F G@2 H@4 E F I J H@4 K C L@4 H@4 L@4 M N C O L@4 M N
  C@2 L@4 P@4 L@4 M N C@2 E F G@2 H@4 E F I J H@4 K C Q ~@7 R@2 S@2 M N C@2 T@4 U@4 L@4 M N C@2 L@2 V@2 H@4 L@4 M N W X
  ~
>`.pickRestart({
  A: "[[g2,d3]@7 ~ [d3,a3,d4]@5 ~ [b2,f#3,b3]@17 ~]/2", B: "[a2,e3,a3]!8", C: "[d3,a3,d4]!8",
  D: "[d3,a3,d4]@3 ~ [d3,a3,d4]@3 ~ [d3,a3,d4]@3 ~ [d3,a3,d4]@3 ~", E: "[g2,d3]!8", F: "[b2,f#3,b3]!2 b2 [b2,f#3,b3]!5",
  G: "[e2,e3,b3]!2 e2 [e2,e3,b3]!3 e2 [e2,e3,b3]", H: "[[a2,e3,a3]@7 ~ [g2,d3,g3]@5 ~ [d3,a3,d4]@17 ~]/2",
  I: "e2!2 [e3,b3] e2!3 [e3,b3] e2", J: "[e3,b3] e2!2 [e3,b3] e2 [e3,b3] e2!2", K: "[e3,b3,e4]!8",
  L: "[[g2,d3]@7 ~ [f#2,d3]@5 ~ [e2,b2]@17 ~]/2", M: "[c3,g3]@7 ~ [b2,g3]@7 ~", N: "[a2,e3]@7 ~ [g2,d3]@7 ~",
  O: "[d3,a3,d4]@2 [d3,a3,d4]@2 [d3,a3,d4]@2 [d3,a3,d4]@2 [d3,a3,d4]@2 [d3,a3,d4]@2 [d3,a3,d4]@3 ~", // D5
  P: "[[a2,e3,a3]@7 ~ [g2,d3,g3]@5 ~ [d3,a3,d4]@4 [d3,a3,d4]@2 [d3,a3,d4]@2 [d3,a3,d4]@2 [d3,a3,d4]@2 [d3,a3,d4]@2 [d3,a3,d4]@2 [d3,a3,d4]@2]/2", // A5 G5 D5
  Q: "[g2,d3,g3]@3 ~@13", // G5
  R: "[[g2,d3]@7 ~ [f#2,d3]@5 ~ [e2,b2]@5 ~ [f#2,a2,c3] [g2,a#2,c#3] [g#2,b2,d3] [a2,c3,d#3] [b2,c#3,e3] [c#3,d3,f3] [c3,d3,e3] [b2,c#3,d3] [a2,b2,c#3] [g#2,a#2,c3] [g2,a2,b2] [g#2,a#2]]/2", // G5 D E5 F#dim Gdim G#dim Adim C#m7 …
  S: "[[g2,d3]@7 ~ [f#2,d3]@5 ~ [e2,b2]@5 ~ [f2,g#2] [f#2,a2,c3] [g2,b2,c#3] [g#2,c3,d3] [a2,c#3,e3] [a2,b2,d#3] [g#2,a#2,d3] [g2,a2,c#3] [f#2,g#2,c3] [f2,g#2,b2] [f2,g2,a#2] [e2,a2]]/2", // G5 D E5 Fm F#dim C#m7b5 Dm7b5 A …
  T: "[[g2,d3]@7 ~ [f#2,d3]@5 ~ [e2,b2]@4 [e2,b2]@2 [e2,b2]@2 [e2,b2]@2 [e2,b2]@2 [e2,b2]@2 [e2,b2]@2 [e2,b2]@2]/2", // G5 D E5
  U: "[[a2,e3,a3]@7 ~ [g2,d3,g3]@5 ~ [d3,a3,d4]@5 ~ [d3,a3,d4]@3 ~ [d3,a3,d4]@2 [d3,a3,d4]@5 ~]/2", // A5 G5 D5
  V: "[[g2,d3]@7 ~ [f#2,d3]@5 ~ [e2,b2]@9 ~@3 [e2,b2]@2 [e2,b2]@2 [e2,b2]@2]/2", // G5 D E5
  W: "d3@3 ~ [d3,a3,d4]@5 ~ [d3,a3,d4]@5 ~", X: "[d3,a3,d4]@5 ~ [d3,a3,d4]@9 ~",
})).s("gm_distortion_guitar").gain(0.72)

// other · overdriven guitar · "Lead Guitar"
const overdriven_guitar = note(`<
  ~@10 A@2 B@4 ~@2 C D B@4 ~@6 B@4 ~@10 A@2 B@4 ~@2 C D B@4 ~@6 B@4 ~@11 E F G H I J@2 K@2 L@2 M@2 N O P Q R G S T@3 U@2
  V@2 W@2 X@2 Y Z V@2 W@2 AA AB AC ~@3 AD@4 ~@8 AE ~@16 AF AG AH AI@4 AJ@2 AK AL AM AN AO AP ~
>`.pickRestart({
  A: "e3!2 ~ e3!3 ~ e3", B: "[~@14 f#3@17 ~]/2", C: "~@4 e3@3 ~@5 e3@3 ~", D: "e3@3 ~@3 e3@2 ~@2 e3@2 ~@4",
  E: "~@4 e2 f2 f#2 g2 g#2 a2 a#2 a2 b2 c3 c#3@2", F: "d3 e3 g3 a3 b3 a3 b3 d4 e4 d4 e4 g4 a4 g4 e4 d4",
  G: "e4 d4 e4 g4 a4 g4 a4 b4 d5 b4 d5 e5 g5 e5 d5 e5", H: "g5@5 ~ g5@2 f#5@2 g5@2 f#5 g5 f#5 e5",
  I: "f#5@2 e5 f#5 e5@2 d5@2 d5@3 ~ b4@2 c5@2", J: "[d5 c5 b4 c5@2 b4 a4 b4@2 a4 g4 f#4 g4 a4 b4 c5]/2",
  K: "[d5@2 c5@2 b4@2 c5@4 b4@2 a4@2 b4@4 a4@2 g4@2 a4@2 g4@5 ~ b4@2]/2",
  L: "[g5@3 ~ g5@3 ~ a5@2 g5@2 f#5@2 g5@4 a5@2 g5@2 f#5@2 d5@5 ~ b4@2]/2",
  M: "[g5@3 ~ g5@3 ~ a5@2 g5@2 f#5@2 f5@4 a5@2 g5@2 f#5@2 d5@5 ~ d5@2]/2", N: "a5@3 ~ a5@10 b5@2",
  O: "b5@2 g5@2 a5@2 b5@2 b5@5 ~ g5@2", P: "b5 g5!3 a5 g5!3 b5 g5!3 a5 g5 f#5!2",
  Q: "a5 f#5 g5 f#5 e5 g5 e5@2 e5 d5 d#5@5 ~", R: "g3 e3 g3 a3 b3 a3 b3 d4 e4 d4 e4 g4 a4 g4 e4 d4",
  S: "g5@5 ~ g5@2 f#5 g5 f#5 e5 f#5 g5 f#5 e5", T: "[e5 f#5 a5@2 c6@2 c6@37 ~@5]/3", U: "e4!2 ~ e4!3 ~ e4",
  V: "[~@14 f#5@5 ~ a4@2 b4@2 c5@2 d5@2 c5 d5 c5 b4]/2", W: "[c5@19 ~ a5@2 b5@2 d6@5 ~ b5@2]/2", X: "[g5@31 ~]/2",
  Y: "~@4 e4@3 ~@5 e4@3 ~", Z: "e4@3 ~@3 e4@2 ~@2 e4@2 ~@4", AA: "g5@15 ~", AB: "f#5@15 ~", AC: "g5@3 ~@13",
  AD: "[c5@7 ~ b4@5 ~ a4@5 ~@13]/2", AE: "~@6 d5@2 d5@7 ~", AF: "~ b4!2 c5 d5 c5 b4 a4", AG: "g4@15 ~",
  AH: "~@2 e4@2 g4@2 a4@2 b4@3 c5@3 d5@2", AI: "[e5@11 ~ d5 e5 d5@17 ~]/2",
  AJ: "[b5@3 ~ b5@10 b5@4 a5 g5 a5@2 g5@2 f#5 g5 f#5 e5 f#5@2 g5@2]/2",
  AK: "f#5 a5 f#5 g5 f#5 a5 f#5 g5 f#5 a5 f#5 g5 f#5 e5 f#5 e5", AL: "f#5@2 e5 d5 d5@7 ~@5",
  AM: "d4@2 e4@2 g4@2 b4@5 d4 b4 c5 b4 a4", AN: "b4@2 g5@9 ~ b4 d5 b4 a4",
  AO: "b4 a4 b4 a4 g4 a4@3 a4 g4@2 f#4 g4 f#4 e4 f#4", AP: "e4@2 e4 d4 b3 d4 e4 d4@8 ~",
})).s("gm_overdriven_guitar").gain(0.72)

// bass · electric bass pick · "Bass"
const bass = note("<~@6 A@2 B C D@2 E@4 B C D@2 E@4 ~@143>".pickRestart({
  A: "d2@3 ~ d2@3 ~ d2@3 ~ d2@3 ~", B: "g1!8", C: "b1!8", D: "e1!8", E: "[a1@7 ~ g1@5 ~ d2@17 ~]/2",
})).s("gm_electric_bass_pick").gain(0.72)

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

// drums · snare
const snare = s("sd").struct(`<
  ~@8 A@7 B A@7 B C D A@15 E A@7 F A@7 B C G A@15 H ~@3 I A@11 ~ A@7 J A@7 B A@7 B C K A@6 L A@7 M N A@3 O A O A O A O
  A@9 P Q A@2 R A@7 S K
>`.pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@7 x ~ x!2", C: "~ x!3", D: "x ~@3 x ~ x ~ x ~ x ~ x!4", E: "~@4 x ~@5 x!2 ~@4",
  F: "~@2 x ~@3 x!2", G: "x ~ x!4 ~@2", H: "~@2 x ~@2 x!2 ~", I: "~@5 x!2 ~", J: "~ x!2 ~ x!4", K: "x",
  L: "~@4 x ~@7 x!3 ~", M: "x!8", N: "~@2 x!14", O: "~@3 x ~@2 x ~", P: "~@2 x ~ x ~ x!2", Q: "x!2 ~ x",
  R: "~@4 x ~@5 x!3 ~ x!2", S: "~@2 x ~@2 x!3",
})).gain(0.72)

// drums · low tom
const low_tom = s("lt").struct("<~@3 A B@2 ~ C ~@33 D ~@7 E ~@9 D ~@31 D ~@25 D ~@49>".pickRestart({
  A: "x!7 ~", B: "x!8", C: "~@8 x!2 ~@6", D: "~@12 x!4", E: "~@15 x",
})).gain(0.72)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@8 A B@3 A B@3 A B@3 A B@3 ~@2 C D C D A D@3 E F D@5 G A B@3 A B@3 A B@3 A B@3 ~@2 C D C D A D@3 E F D@5 G H I J I
  K@3 L K@7 M K@7 M A B@3 A B@3 A B@3 A B@3 ~@18 C N D N D N D N D N D N D N B@2 K D@2 O P D@2 G F D@3 Q R D@2 M
>`.pickRestart({
  A: "x ~ x ~ x!3 ~", B: "x!3 ~ x!3 ~", C: "x ~ x ~ x!4", D: "x!8", E: "x ~ x!6", F: "x!3 ~ x!4", G: "x!5 ~@3",
  H: "~ x!3", I: "~ x ~ x", J: "~@2 x ~@3 x!2", K: "x!4", L: "x ~ x ~ x ~ x!2", M: "x", N: "x!7 ~", O: "x!4 ~@4",
  P: "~@2 x!6", Q: "x!2 ~ x ~ x ~ x", R: "~ x ~ x ~ x ~ x",
})).gain(0.72)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@6
  [x ~ x ~ x!4]
  [~@2 x!6 ~@2 x ~ x ~ x ~]
  ~@83
  [~@8 x!4 ~@4]
  ~@25
  [~@2 x!4 ~@2]
  ~@49
>`).gain(0.72)

// drums · high tom
const high_tom = s("ht").struct("<~@91 [~@2 x!5 ~@9] ~@75>").gain(0.72)

// drums · crash
const crash = s("cr").struct(`<
  A ~ A ~@5 B ~@3 B ~@3 B ~@3 B ~@3 B ~ B ~ B ~ B ~@3 B ~@3 B ~@3 B ~@3 B ~@3 B ~@3 B ~@3 B ~ B ~ B ~ B ~@3 B ~@3 B ~@2
  C B ~ B ~ B ~@11 B ~@7 B ~@3 B ~@3 B ~@3 B ~@3 B ~@17 B D ~ D ~ D ~ D ~@16 E ~@3 B ~ B ~ B
>`.pickRestart({
  A: "x ~@3 x ~@2 x", B: "x", C: "~@5 x!2 ~", D: "~@3 x", E: "~ x ~@2",
})).gain(0.72)

stack(distortion_guitar, overdriven_guitar, bass, kick, snare, low_tom, hihat, mid_tom, high_tom, crash)

More by Oasis