Strudelify
Mr Big Stuff cover art

Mr. Big Stuff

Mr Big Stuff

Jean Knight

KeyD majorTempo180 bpm
0:00/0:00
// Mr Big Stuff — Jean Knight
// 180 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 122 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(180/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, A@4 for four bars: edit a riff to change every repeat.

// bass · electric bass finger · "bass"
const bass = note(`<
  ~ A B C D A E C F A E C D A E C D A E C D A E C D A E C D G E C D A E C D A E C D A E C D A E C D A E C D A E C D A E
  C H A E C I J K L M@2 N O P A Q C D A E C D A E R D A E C D S E C D A E C D A E C D A E C D A E C D A E C D A E C D A
  E C T U
>`.pickRestart({
  A: "~@2 d1@5 ~@9", B: "d1 ~ d1@5 ~@6 f#1@3, ~@6 d1 ~", C: "~@2 g1@5 ~@9", D: "g1 ~ g1@2 ~@2 a1 ~ a1@2 ~@2 a1@2 g1@2",
  E: "d1 ~ d1@4 ~@6 d1@2 f#1@2", F: "g1 ~ g1@2 ~@2 a1 ~ a1@2 ~@2 a1 ~ g1@2", G: "~@2 d1@5 ~@9, ~@2 g#1 ~@13",
  H: "g1 ~ g1@3 ~ a1 ~ a1@2 ~@3 g1@3, ~@6 a1 ~", I: "g1 ~ g1@3 ~ a1 ~ a1@2 ~@3 a#1@2 ~, ~@6 a1 ~",
  J: "~@2 b1@6 ~@2 b1@5 ~", K: "f#1 a1 ~ b1@3 a1 f#1", L: "~ e1@3 ~ g#1 a1@2",
  M: "[~@2 a#1@2 b1@3 ~ e2@3 ~ d2@2 b1@4 g1@6 ~@2 b1@2 c2@3 ~]/2", N: "~@2 c#2@2 d2@2 ~@2 g2@3 f2@2 d2@3",
  O: "~ a2 ~ a1 ~@4", P: "~@2 a1@2 a1@2 ~@2 a1@2 ~@2 f#1 e1@3", Q: "d1 ~ d1@3 ~@7 d1@2 f#1@2", R: "~ g1@2 ~@5",
  S: "~ d1@2 ~@5, ~@2 e1 ~@13", T: "g1@2 a1 ~ a1@2 ~@2 a1@2 ~@2 a1@2 g1@2", U: "~@2 d2@4 d1@5 ~@5",
})).s("gm_electric_bass_finger").gain(0.8)

// chords · brass section · "horns"
const brass_section = note(`<
  ~@8 A B ~@6 A C ~@14 D C E F G C H I A C ~@8 J ~ K L M N O C ~@2 A C ~@2 P Q R S T U T V W X ~@14 Y C ~@2 A C ~@2 Z C
  ~@2 AA C H F A C AB AC A C E F G C H F AD C AE F A AF
>`.pickRestart({
  A: "~@6 [c#5,e5,a5] ~ [c#5,e5,a5]@2 ~@2 [c#5,e5,a5] ~ [b4,d5,g5]@2", B: "~ [a4,d5,f#5]@3 ~@12",
  C: "~@2 [a4,d5,f#5]@3 ~@11", D: "~@5 c#5 [e5,a5] ~ e5@2 ~@2 [c#5,e5,a5] ~ [b4,d5]@2, ~@7 [c#5,a5]@2 ~@4 g5@3",
  E: "~ [b4,b5] [d5,d6] ~ [e5,e6] ~@2 c5, ~@6 [d5,d6] ~, ~@13 c6@2 ~", F: "~@2 [b4,b5]@3 ~@11",
  G: "~@6 [e5,a5] ~ [c#5,e5,a5]@2 ~@2 [e5,a5] ~ [b4,d5]@2, ~@3 c#5 ~@2 c#5 ~, ~@13 g5@3", // A5 A A5 Bm
  H: "~ [b4,b5] [d5,d6] ~ [e5,e6] ~ [d5,d6] [c5,c6]", I: "~@2 b5@3 ~@11, ~ b4@3 ~@12",
  J: "~@2 a#5 [b4,b5]@3 ~ d5@3 ~@6, ~ a#4 ~ d6 ~@4", // B
  K: "~@2 [b4,b5]@3 [d5,d6] ~@2 [d5,d6]@2 ~@3 [b4,b5]@3, ~@6 [d5,d6] ~", L: "~ [a4,a5]@3 ~@12",
  M: "~@3 b5@3 [d5,d6]@3 ~@7, ~ [a4,a5]@2 ~@13, ~ b4 ~@6", N: "~ [e5,e6]@2 [d5,d6] ~@4",
  O: "~@6 [c#5,e5] ~ [c#5,e5,a5]@3 [e5,a5] ~@2 [b4,d5]@2, ~@6 a5@2 ~@3 c#5@2 g5@3", // C#m A A5 Bm
  P: "~@6 [c#5,a5]@2 [c#5,e5,a5]@2 ~ [c#5,a5] e5 ~ [b4,d5,g5]@2, ~@6 e5 ~@9", // F#m A F#m G
  Q: "~@2 [b4,d5,a5]@3 ~@6 [b4,d5,f#5]@3 ~@2", R: "~ b4 ~ c#5 d5 ~ c#5 b4", S: "~@2 e5@3 ~ b4@2 ~@8",
  T: "~ b4 c#5 ~ d5 ~ c#5 b4", U: "~@2 d5@3 ~@11", V: "~@2 [c#5,e5,a5]@2 ~@2 [c#5,e5,a5]@3 ~@7",
  W: "~@6 [e5,a5,c#6] ~ [e5,a5,c#6]@2 ~@2 [e5,a5,c#6] ~ [d5,g5,b5]@2", X: "~@2 [d5,f#5,a5]@3 ~@11",
  Y: "~@6 [c#5,e5] ~ [c#5,e5,a5]@2 ~@2 [c#5,e5,a5] ~ [d5,g5]@2, ~@6 a5@2 ~@6 b4 ~", // C#m A G5
  Z: "~@6 [c#5,e5,a5] ~ [c#5,e5,a5]@3 [c#5,e5,a5] ~@2 b4@2, ~@13 [d5,g5]@3", // A G5
  AA: "~@6 [c#5,e5,a5] ~ [c#5,e5,a5]@2 ~@2 [e5,g#5] ~ [b4,d5,g5]@2, ~@6 c#5 ~", // A E G
  AB: "~@2 [b4,b5]@2 [d5,d6]@2 ~@2 [e5,e6]@2 ~@3 [c5,c6]@2 ~, ~@6 [d5,d6] ~", AC: "~ [b4,b5]@3 ~@12",
  AD: "~@6 [c#5,e5,a5] ~ [c#5,e5,a5]@2 ~@2 [c#5,e5,a5] ~ b4@2, ~@13 [d5,g5]@3", // A G5
  AE: "~@2 [b4,b5]@2 ~ d5@2 ~ [e5,e6]@2 ~@2 [d5,d6]@2 [c5,c6]@2, ~@2 d6 ~@5", // B E D C
  AF: "~@2 [a4,d5,f#5,d6]@3 ~ [a4,d5,f#5,d6]@2 ~@8", // D
})).s("gm_brass_section").gain(0.52)

// chords · distortion guitar · "guitar"
const distortion_guitar = note(`<
  ~ A B C D E F G H I J K L I J K H M J N O A B P Q R J C O I S T U E F K H E V T H I B N W I B X Q E V N Y E B Z AA E B
  T H E B AB AC AD AE AF AG AH AI AJ AK E V C AL AM V AN O E B C W AM V K H E V C AO E V AP AQ E AR C AS AM V X H E V C
  H AM J AT H AU V AV AW AX V AY H AZ
>`.pickRestart({
  A: "~@2 [d3,d4,f#4,a4,b4,d5] ~@5 d3@2 [d4,f#4,a4,b4,d5] ~@5", // Bm7
  B: "d3 ~ [d4,f#4,a4,d5] ~@3 d3 ~ [d4,f#4,a4,b4,d5] ~@3 d3 ~ [d4,f#4,a4,d5] ~", // D Bm7 D
  C: "~@2 [g3,d4,g4,b4,d5] ~@5 g3@2 [d4,g4,b4,d5] ~@5", // G
  D: "g3 ~ [d4,g4,b4,d5] ~@3 [a3,e4,f4,a4,c#5,e5] ~ [a3,e4,a4,c#5,e5] ~@3 [a3,e4,a4,c#5,e5] ~ [g3,d4,g4,b4,d5]@2", // G A G
  E: "~@2 [d3,d4,f#4,a4,d5]@2 ~@4 d3@2 [d4,f#4,a4,d5] ~@5", // D
  F: "d3 ~ [d4,f#4,a4,d5] ~@3 d3 ~ [d4,f#4,a4,d5] ~@3 d3 ~ [d4,f#4,a4,d5] ~", // D
  G: "~@2 [g3,d4,g4,b4,d5] ~@5 g3 ~ [d4,e4,g4,a4,b4,d5] ~@5", // G Em7
  H: "g3 ~ [d4,g4,a4,b4,d5] ~@3 [a3,e4,a4,c#5,e5] ~ [a3,e4,a4,c#5,e5] ~@3 [a3,e4,a4,c#5,e5] ~ [g3,d4,g4,b4,d5]@2", // G A G
  I: "~@2 [d3,d4,f#4,a4,b4,d5]@2 ~@4 d3 ~ [d4,f#4,a4,d5] ~@5", // Bm7 D
  J: "d3 ~ [d4,f#4,a4,b4,d5] ~@3 d3 ~ [d4,f#4,a4,b4,d5] ~@3 d3 ~ [d4,f#4,a4,d5] ~", // Bm7 D
  K: "~@2 [g3,d4,g4,b4,d5] ~@5 g3 ~ [d4,g4,a4,b4,d5] ~@5", // G
  L: "g3 ~ [d4,g4,a4,b4,d5] ~@3 [a3,e4,a4,c#5,e5] ~ [a3,e4,a4,c#5,e5]@2 ~@2 [a3,e4,a4,c#5,e5] ~ [g3,d4,g4,b4,d5]@2", // G A G
  M: "~@2 [d3,d4,f#4,a4,b4,d5] ~@5 d3 ~ [d4,f#4,a4,d5] ~@5", N: "~@2 [g3,d4,g4,a4,b4,d5] ~@5 g3 ~ [d4,g4,b4,d5] ~@5",
  O: "g3 ~ [d4,g4,b4,d5] ~@3 g3 ~ [d4,g4,b4,d5] ~@3 g3 ~ [d4,g4,b4,d5] ~", // G
  P: "~@2 [g3,d4,g4,b4,d5] ~@5 g3 ~ [d4,g4,b4,d5] ~@5", // G
  Q: "g3 ~ [d4,g4,b4,d5] ~@3 g3 ~ [d4,g4,a4,b4,d5] ~@3 g3 ~ [d4,g4,b4,d5] ~", // G
  R: "~@2 [d3,d4,f#4,a4,d5] ~@5 d3 ~ [d4,f#4,a4,d5] ~@5", // D
  S: "d3 ~ [d4,e4,f#4,a4,d5] ~@5 [d4,f#4,a4,d5]@2 ~@2 d3 ~ [d4,f#4,a4,d5] ~", // D
  T: "~@2 [g3,d4,g4,a4,b4,d5] ~@5 g3 ~ [d4,g4,a4,b4,d5] ~@5", // G
  U: "g3 ~ [d4,g4,a4,b4,d5] ~@3 [a3,e4,a4,c#5,e5] ~ [a3,e4,a4,c#5,e5] ~@3 [g3,a3,d4,e4,g4,a4,b4,c#5,d5,e5]@2 ~@2", // G A Em7
  V: "d3@2 [d4,f#4,a4,d5] ~@3 d3 ~ [d4,f#4,a4,d5] ~@3 d3@2 [d4,f#4,a4,d5] ~", // D
  W: "g3 ~ [d4,g4,a4,b4,d5] ~@3 g3 ~ [d4,g4,b4,d5] ~@3 g3 ~ [d4,g4,b4,d5] ~", // G
  X: "~@2 [g3,d4,g4,b4,d5]@2 ~@4 g3 ~ [d4,g4,b4,d5] ~@5", // G
  Y: "g3 ~ [d4,g4,b4,d5] ~@3 g3 ~ [d4,e4,g4,b4,d5] ~@3 g3 ~ [d4,g4,b4,d5] ~", // G Em7 G
  Z: "~@2 [g3,d4,g4,b4,d5]@2 ~@4 g3 ~ [d4,g4,a4,b4,d5] ~@5", // G
  AA: "g3 ~ [d4,g4,a4,b4,d5] ~@3 [a3,e4,a4,c#5,d5,e5] ~ [a3,e4,a4,c#5,e5] ~@3 [a3,e4,a4,c#5,e5] ~ [g3,d4,g4,b4,d5]@2", // G A G
  AB: "~@2 [g3,d4,g4,a4,b4,d5] ~@5 g3 ~ [d4,e4,g4,a4,b4,d5] ~@5", // G Em7
  AC: "g3 ~ [d4,g4,a4,b4,d5] ~@3 [a3,e4,a4,c#5,e5] ~ [a3,e4,a4,c#5,e5] ~@3 [a3,e4,a4,c#5,d5,e5] ~ [g3,d4,g4,b4]@2", // G A G
  AD: "~@5 [b3,d4,f#4] ~@2", AE: "~ [b3,d4,f#4] ~@3 [b3,d4,f#4] ~@2", AF: "~@2 [b3,e4,g#4]@3 ~@5 [b3,e4,g#4]@2 ~@4",
  AG: "~@2 [b3,e4,g#4]@2 ~@6 [b3,e4,g#4] ~@5", AH: "~@2 [g3,b3,d4,g4]@3 ~@5 [g3,b3,d4,g4]@2 ~@4",
  AI: "~ [g3,b3,d4,g4] ~@3 [g3,b3,d4,e4,g4] ~@2", AJ: "~@2 [e3,a3,c#4,e4] ~@3 [e3,a3,c#4,e4]@2 ~@8",
  AK: "~@6 [e3,a3,c#4] ~ [e3,a3,c#4]@2 ~@2 [e3,a3,c#4] ~ [e3,a3,c#4]@2", // A
  AL: "g3@2 [d4,g4,b4,d5] ~@3 g3 ~ [d4,g4,b4,d5] ~@3 g3@2 [d4,e4,g4,b4,d5] ~", // G Em7
  AM: "~@2 [d3,d4,f#4,a4,b4,d5]@2 ~@4 d3@2 [d4,f#4,a4,d5] ~@5", // Bm7 D
  AN: "~@2 [g3,d4,g4,a4,b4,d5] ~@5 g3@2 [d4,g4,b4,d5] ~@5", // G
  AO: "g3@2 [d4,g4,a4,b4,d5] ~@3 [a3,e4,a4,c#5,e5] ~ [a3,e4,a4,c#5,e5] ~@3 [a3,e4,a4,c#5,e5] ~ [g3,d4,e4,g4,b4,d5]@2", // G A Em7
  AP: "~@2 [g3,d4,g4,a4,b4,d5] ~@5 g3@2 [d4,g4,a4,b4,d5] ~@5", // G
  AQ: "g3@2 [d4,g4,a4,b4,d5] ~@3 [a3,e4,a4,c#5,e5] ~ [a3,e4,a4,c#5,e5] ~@3 [a3,e4,a4,c#5,e5] ~ [g3,d4,g4,b4,d5]@2", // G A G
  AR: "d3@2 [d4,f#4,a4,d5] ~@3 d3 ~ [d4,f#4,a4,d5] ~@3 d3@2 [d4,e4,f#4,a4,d5] ~", // D
  AS: "g3@2 [d4,g4,b4,d5] ~@3 [a3,e4,a4,c#5,e5] ~ [a3,e4,a4,c#5,e5]@2 ~@2 [a3,e4,a4,c#5,e5] ~ [g3,d4,g4,b4,d5] ~", // G A G
  AT: "~@2 [g3,d4,g4,b4,d5] ~@5 g3@2 [d4,g4,a4,b4,d5] ~@5", // G
  AU: "~@2 [d3,d4,f#4,a4,d5]@2 ~@4 d3@2 [d4,f#4,a4,b4,d5] ~@5", // D Bm7
  AV: "~@2 [g3,d4,g4,b4]@3 ~@3 g3@2 [d4,g4,b4,d5] ~@5, ~@2 d5 ~@13", // G
  AW: "g3 ~ [d4,g4,b4,d5] ~@3 [a3,e4,a4,c#5,e5] ~ [a3,e4,a4,c#5,e5] ~@3 [a3,e4,a4,c#5,e5] ~ [g3,d4,g4,b4,d5]@2", // G A G
  AX: "~@2 [d3,d4,f#4,a4,b4,d5]@3 ~@3 d3@2 [d4,f#4,a4,b4,d5] ~@5", // Bm7
  AY: "~@2 [g3,d4,g4,a4,b4,d5]@2 ~@4 g3 ~ [d4,g4,a4,b4,d5] ~@5", // G
  AZ: "~@2 [d3,d4,f#4,a4,c5,d5]@2 ~@2 [d3,d4,f#4,a4,b4,d5]@3 ~@7", // D7 Bm7
})).s("gm_distortion_guitar").gain(0.41)

// chords · rock organ · "organ"
const rock_organ = note(`<
  ~ A B@2 C D E F C D E F G D E F G D E F G D H F I D E F J D K@2 I D E F L D H F I D E F M D H F M D N F M D E F O D E
  F G D H F G P@2 Q@2 R@2 S T U E F M D H F M D E F M D E F G D H F G D H F G D E F G D E F G D H F G D V F G D W F G D
  E F G X
>`.pickRestart({
  A: "~ [a4,d5,f#5] ~@3 [a4,d5,f#5] ~@2, ~@2 b4 ~@13", // D
  B: "[~ [a4,f#5] ~@2 [a4,d5,f#5]@2 ~ [g4,c5,e5]@2 [g4,b4,d5] ~@3 [g4,b4,d5] ~@2, ~@2 d5 ~@29]/2", // D C G
  C: "~@2 [g4,b4] ~@3 [a4,c#5,e5] ~ [a4,c#5,e5]@3 ~ a4@2 [c#5,e5]@2, ~ d5 ~@6", D: "~ [a4,d5,f#5] ~@3 [a4,d5,f#5] ~@2",
  E: "~ [a4,d5,f#5] ~@2 [a4,d5,f#5]@2 ~ [g4,c5,e5]", F: "~ [g4,b4,d5] ~@3 [g4,b4,d5] ~@2",
  G: "~@2 [g4,b4,d5]@2 ~@2 [a4,c#5,e5] ~ [a4,c#5,e5]@2 ~@2 [a4,c#5,e5] ~ [a4,c#5,e5]@2", // G A
  H: "~@2 [a4,d5,f#5]@2 ~@5 [a4,d5,f#5]@4 ~ [g4,c5,e5]@2", // D C
  I: "~@2 [g4,b4] ~@3 [a4,c#5,e5] ~ [a4,c#5,e5]@3 ~ [a4,c#5,e5] ~ [a4,c#5,e5]@2, ~ d5 ~@6", // G A
  J: "~@2 [g4,d5]@2 ~@2 [a4,c#5,e5] ~ [a4,c#5,e5]@3 ~@3 [a4,c#5,e5]@2, ~@2 b4 ~@13", // G5 A
  K: "[~@2 [a4,d5]@2 ~@3 f#5 ~ [a4,d5,f#5]@5 ~ g4@2 ~ [g4,b4,d5]@2 ~@6 [g4,b4,d5]@2 ~@4, ~ f#5@2 ~@11 [c5,e5]@3 ~@15]/2", // D5 D G C
  L: "~ [g4,b4,d5]@3 ~@2 [a4,c#5,e5] ~ [a4,c#5,e5]@3 ~ [a4,c#5,e5] ~ [a4,c#5,e5]@2", // G A
  M: "~ [g4,b4,d5] ~@2 [a4,c#5,e5]@2 ~ [a4,c#5,e5]", N: "~@2 [a4,d5,f#5]@2 ~@5 a4@4 ~ [g4,c5,e5]@2, ~@2 [d5,f#5] ~",
  O: "~@2 [g4,b4] ~@3 e5@2 e5@3 ~@3 [a4,c#5,e5]@2, ~@2 d5@2 ~@2 [a4,c#5]@5 ~@5", // G A
  P: "[~@2 [b4,d5,f#5]@16 ~ [b4,d5,b5]@13, ~@9 f#5@7]/2", Q: "[~@2 [b4,e5,g#5]@22 ~ [b4,e5,a5]@5 [b4,e5,g#5]@2]/2",
  R: "[~@2 [b4,d5,g5]@29 ~]/2", S: "~@2 a5 [e6,a6]@2 ~ [a5,c#6,e6,a6]@2 ~@8, ~ c#6 ~@6",
  T: "~@2 [a5,c#6,e6,a6] ~@2 [a5,e6,a6]@2 ~ [a5,c#6,e6,a6]@2 ~@3 e6@2 ~, ~@5 c#6 ~@6 [a5,f#6]@3 ~", // A A5 A D
  U: "~@2 [a5,d6,f#6]@4 [e5,f5,g5] d5 ~@2 [a4,d5,f#5]@2 ~@4", V: "~@2 [a4,d5,f#5]@2 ~@5 [a4,d5,f#5]@3 ~@2 [g4,c5,e5]@2",
  W: "~@2 [a4,d5,f#5]@2 ~@4 [a4,d5,f#5]@3 ~@3 [g4,c5,e5]@2", X: "~ [d5,f#5,a5,d6] ~ [d5,f#5,a5,d6]@2 ~@3",
})).s("gm_rock_organ").gain(0.54)

// drums · kick
const kick = s("bd").struct(`<
  ~ A B C B C B C B A B C B C B C B A B C B C B C B A B C B C B C B A B C B C B C B A B C B C B C B A B C B C B C B A B
  C B C B C B A B C B C B D E A B C B C B C B A B C B C B C B A B C B C B C B A B C B C B C B A B C B C B C B A B C B C
  B C B E
>`.pickRestart({
  A: "~ x ~@6", B: "x!2 ~ x ~@4", C: "x!2 ~@6", D: "x ~@6 x", E: "~ x ~ x ~@4",
})).gain(0.72)

// drums · rim
const rim = s("rim").struct("<[~ x ~ x ~ x ~ x] ~@121>").gain(0.72)

// drums · snare
const snare = s("sd").struct("<~ [~@5 x ~@2]!70 [~@2 x!2 ~@3 x ~@8] [x ~@2 x!2 ~ x!2] [~@5 x ~@2]!48 [~ x ~@14]>")
  .gain(0.8)

// drums · mid tom
const mid_tom = s("mt").struct("<~@8 [~@5 x!3] x ~@112>").gain(0.8)

// drums · high tom
const high_tom = s("ht").struct("<~@8 [~@2 x ~@2 x!2 ~ x ~@7] ~@62 [~@11 x ~ x ~@2] ~@50>").gain(0.8)

// drums · tambourine
const tambourine = s("tb").struct("<~ [~ x!7] [x!8]!69 x [~@6 x!2] [x!8]!47 [x!6 ~@2] ~>").gain(0.72)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~ [~ x!7] [x!8]!119 [x!3 ~@5]>").gain(3.24)

stack(bass, brass_section, distortion_guitar, rock_organ, kick, rim, snare, mid_tom, high_tom, tambourine, cabasa)