Strudelify

I Wanna Be Rich

Calloway

KeyG majorTempo116 bpm
0:00/0:00
// I Wanna Be Rich — Calloway
// 116 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 133 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(116/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 · slap bass 1 · "SLAPBASS 1"
const bass = note(`<
  ~@4 A B A C D E D F D E D F G ~@3 G ~@3 H I J@2 K L M N O P Q R S T U V W X W Y G ~@3 G ~@3 H I J@2 K L M N O P Q R S
  T U V D E D E D E D F Z AA AB AC AD AE AF AG W X W Y W X W Y W AH W AH W AH W AH AI AJ AK AL AM AN AO AP H I J@2 K L M
  N O P Q R S T U V O P Q R S T U V G
>`.pickRestart({
  A: "g3 ~@2 g2 ~@2 g3!2 ~@8", B: "~@6 c3 c2 ~@2 c3@2 d2@2 ~@2", C: "~@2 d2 ~@2 d2 ~@2 d3@2 d2 d3@2 d2 d3 ~",
  D: "g3 ~@2 g2 ~@2 g3!2 ~@6 d3@2", E: "~@2 d3 ~@2 d2 ~@2 d2@2 ~ d3 ~ d2 d3 ~",
  F: "~@2 d3 ~@2 d2 ~@2 d2 ~@2 d2 ~ d2 d3 ~", G: "g2 ~@7", H: "g2 ~@2 g2 ~@2 g3 ~@2 g2 g3 ~ g2 ~ a2 ~",
  I: "~@2 a2 ~ a3 ~ d2@2 ~ d2 d3 ~ d2 ~ d3 ~",
  J: "[g2 ~@5 g2 ~@2 g2 g3 ~ g2 ~ d3@4 d2 ~ d3@3 d2 d3@2 d2 ~ d3 a2 ~@2]/2",
  K: "g2 ~@2 g2 ~@2 g2 ~@2 [f2,g2] g3 ~ g2 ~ a2 ~", L: "~@2 a2 ~ a3 ~ d2 ~@2 d2 d3@2 d2 ~ g2 ~",
  M: "~@2 g2 ~ g3 ~@3 g2 ~ g3 ~ g2 ~ d3@2", N: "~@2 d3@2 d2 d3@2 d2 d3@3 d2@3 d3 ~",
  O: "g3 ~@3 g2 ~ g3!2 ~@2 g3 ~ g2 ~ d3 ~", P: "~@2 d3 ~ d3 d2 ~@2 d3@5 d2 d3 ~",
  Q: "g3 ~@2 g2 ~@2 g3!2 ~@2 g3 ~ g2 ~ d3@2", R: "~@5 d3 d2 ~ d3 ~ d3 ~ d3 d2 ~@2",
  S: "g3 ~@2 g2 ~@2 g3!2 ~@2 g3 ~@2 g2 ~@2", T: "~@2 d3 ~@2 d2 ~@2 d2 ~ d2 d3 ~ d2 d3 ~",
  U: "g3 ~@2 g2 ~@2 g3!2 ~@2 g3 ~ [g2,a2] ~ d3@2", V: "~@2 d3@3 d2 d3 ~ d3 a2 ~ d2 ~ d2 d3 ~",
  W: "g2 ~@2 a#2 ~@2 c3 ~@2 d3 ~@2 c3 ~ a#2 a2", X: "g2 ~@2 a#2 ~@2 c3 ~@2 a#2 ~@2 g2@2 f2 ~",
  Y: "g2 ~@2 a#2 ~@2 c3 ~@2 a#2@2 ~ g2 ~ f2 ~", Z: "c3@2 ~ c3 c4 ~ c3@2 ~ c3 c4@3 c3 c4@2",
  AA: "b2@2 ~ b2 b3 ~ b2@3 ~ b2@2 b3 a3 b2 ~", AB: "c3@2 ~ c3 c4@2 c3@3 ~ c3@2 c4 c3@2 ~",
  AC: "b3@3 b2 b3 ~ e3@3 ~ e3@2 b2 e3 e2@2", AD: "c3@3 c3 c4 ~ c3@3 ~ c3@3 c3 c4@2",
  AE: "b2@2 ~ b2 b3 ~ e3@3 ~ e3@2 e2 e3@3", AF: "a2@3 a2 a3@2 a2@4 a3@2 a2@3 ~",
  AG: "d3@3 ~ d3@3 d2 d3@2 d2@2 d3@2 ~@2", AH: "g2 ~@15", AI: "g3 g2 g3 ~@2 g3 ~@4 g3 ~ g3!2 ~@2",
  AJ: "f2 f3 f2 ~@2 f3 ~@4 f3 ~ f3 f2 f3@2", AK: "g2 g3 g2 ~@6 g3 g2 ~ g3 ~ g3 ~", AL: "f2 f3 ~@7 f3 f2 ~ f3 ~ f3 ~",
  AM: "g2 g3 g2 ~@2 g3 ~@4 g3 ~ g3 g2 ~@2", AN: "f2 f3 f2 ~@6 f3 f2 ~ f3 ~ f3 ~",
  AO: "g2 g3 ~@4 g3 g2 ~ g2 ~ g2 g3@2 g2 ~", AP: "f2 f3 ~@4 f3 f2 ~ f2 ~ f2 f3 ~ f2 ~",
})).s("gm_slap_bass_1").gain(0.72)

// chords · epiano2 · "E.PIANO 2"
const epiano2 = note(`<
  ~@4 A ~ A ~ B ~ B C B ~ B C D ~@7 E F G@2 H I G@2 J ~ J ~ J ~ K@2 L ~@2 M D N ~ O ~@4 E F G@2 H I G@2 J ~ J ~ J ~ K@2
  B ~ B ~ B ~ B C P Q R S P T U V W X ~ Y Z X ~ AA@2 ~ AB AC AD AE AF AG AH AI B AJ AH AI B AJ E F G@2 H I G@2 J ~ J ~ J
  ~ K@2 J ~ J ~ J ~ K@2 AK
>`.pickRestart({
  A: "[g3,d4,g4,a4,b4,d5] ~@15", B: "[g3,d4,g4,a4,b4,d5] ~@13 [g4,a4,c5,e5,g5] ~",
  C: "~@8 [a3,c4,d4,e4,g4] ~ [a3,c4,d4,e4,g4] ~ [a3,c4,d4,e4,g4] [c4,d4,e4] ~@2, ~@13 [a3,g4]@2 ~", // Am7 C A7
  D: "[g3,d4,a4,b4,d5,g5] ~@15", E: "[g3,a3,b3,d4,g4] ~ g5 ~ g4 ~ g4!2 ~ g5 ~ g4 g5 ~ [a3,c4,e4,g4] ~",
  F: "~@6 [c4,d4,e4,g4]@5 ~@5", G: "[[g3,a3,b3,d4,g4] ~ g5 ~ g4 ~ g4 g5 ~ g4 ~ g4 g5 ~ [c4,d4,e4,g4]@14 ~@4]/2",
  H: "[g3,a3,b3,d4,g4] ~ g5 ~ g4 ~ g4 g5 ~ g4 ~ g4 g5 ~ [a3,c4,e4,g4] ~", I: "~@6 [g4,g5] g4 ~@8, ~@6 [c4,d4,e4]@5 ~@5",
  J: "[d4,g4,a4,b4,d5] ~@13 [a3,e4,a4,c5,e5,g5] ~", K: "[[d4,g4,a4,b4,d5] ~@13 [a3,e4,a4,c5,e5,g5]@16 ~@2]/2",
  L: "[g4,a4,b4,d5] ~@15", M: "[c4,e4,g4,a4,c5,d5]@15 ~", N: "~@9 a5 a4 ~@3 a3 ~", O: "~@8 c5!2 c4 ~@5",
  P: "[c3,g3,b3,d4,e4,g4]@7 ~", Q: "[b2,f#3,a3,b3,d4,f#4]@7 ~", R: "[c3,g3,b3,d4,e4,g4]@15 ~",
  S: "[b2,f#3,a3,b3,d4,f#4]@5 ~ [e3,g3,b3,d4,g4,b4]@8 ~@2", T: "[b2,f#3,a3,b3,d4,f#4]@3 [e3,g4]@4 ~, ~@3 [b3,d4]@3 ~@2",
  U: "[a2,g3,c4,e4]@15 ~", V: "[d3,c4,e4,g4]@13 ~@3", W: "[g4,a4,b4,d5,g5] ~@15",
  X: "~@6 [d5,f5,g5,a#5]@5 ~ [d5,f5,g5,a#5]!2 ~@2", // Gm7
  Y: "d5@10 [f5,g5,a#5] ~ [d5,f5,g5,a#5] [f5,g5,a#5] ~@2, [c4,e4,g4,a4,c5]@15 ~, ~@10 d5@2 ~ d5@3", // Gm7 Am7
  Z: "[f5,g5,a#5] ~@9 g5 g4 ~@4, d5 ~@3", // Gm7
  AA: "[d5@10 [f5,g5,a#5] ~ [d5,f5,g5,a#5] [f5,g5,a#5] ~@18, [c4,e4,g4,a4,c5]@15 ~@17, ~@10 d5@2 ~ d5@7 ~@12]/2", // Gm7 Am7
  AB: "g2!2 g3!2 ~ g2 g3 ~ g3 ~@5 g3 g2", AC: "~@9 g2!2 ~ g2 ~ g2 ~", AD: "~ g2 g3 g2 ~@8 g3 g2 ~ g2",
  AE: "~@9 g2 ~ g2 g3 g2 g3 ~", AF: "~@12 g3 g2 ~ g2", AG: "~@9 g2 g3 g2 g3 g2 g3 g2",
  AH: "[g3,d4,g4,a4,b4,d5,g6] g5 g6 g5 ~@10 [g4,a4,c5,e5,g5] ~", AI: "~@6 g5 g4 ~ g4 ~ g4 g5 ~ g4 ~",
  AJ: "~@6 g5 g4 ~ g4 ~ g4 g5 g4 g5 ~", AK: "[g3,d4,g4,a4,b4] ~@15, d5 ~@7",
})).s("gm_epiano2").gain(0.6)

// chords · synth brass 1 · "SYNBRASS 1"
const synth_brass_1 = note(`<
  ~@4 A ~ A ~ B ~ C ~ B ~ D@2 E ~@7 F G H@2 F G I@2 J ~ J ~ J ~ K@2 L ~@2 M N ~@7 F G H@2 F G I@2 J ~ J ~ J ~ K@2 B ~ B
  ~ B ~ D@2 O P O Q R Q S T ~ U V W ~ U V W X Y Z AA AB AC AD AE AF AG B AH AF AG B AH F G H@2 F G I@2 J ~ J ~ J ~ K@2 J
  ~ J ~ J ~ K@2 AI
>`.pickRestart({
  A: "[g3,d4,g4,a4,b4,d5] ~@15", B: "[g3,d4,g4,a4,b4,d5] ~@13 [g4,a4,c5,e5,g5] ~",
  C: "[g3,d4,g4,a4,b4,d5] ~@7 [d4,d5] [e4,e5] [g4,g5] ~ [g4,g5]@2 [g4,a4,c5,e5,g5,a5] ~", // G D E G Am7
  D: "[[g3,d4,g4,a4,b4,d5] ~@7 [d4,d5] [e4,e5] [g4,g5] ~@3 [a3,c4,d4,g4,a4,c5,d5,g5]@16 ~@2]/2", // G D E G Am7
  E: "[g3,d4,a4,b4,d5,g5] ~@15", F: "[b4,d5,g5] ~@13 [c5,e5,g5] ~", G: "~@8 [g4,g5] ~@2 [a4,a5] ~@2 [b4,b5]@2",
  H: "[~@2 [d5,d6] ~@11 [a3,e4,a4,c5,e5,g5]@17 ~]/2", I: "[~@2 [d5,d6] ~@11 [a3,e4,a4,c5,e5,g5]@18]/2",
  J: "[g4,b4,d5,g5] ~@13 [a4,c5,e5,g5] ~", K: "[[g4,b4,d5,g5] ~@13 [a4,c5,e5,g5]@17 ~]/2", L: "[g4,b4,d5,g5] ~@15",
  M: "[a4,c5,e5,g5]@15 ~", N: "[g3,d4,g4,a4,b4,d5,g5] ~@15",
  O: "~@2 [e4,g4,b4] ~@2 [e4,g4,b4] ~@2 [e4,g4,b4]@2 ~ [e4,g4,b4] ~@4", // Em
  P: "~@2 [d4,f#4,a4] ~@2 [d4,f#4,a4] ~@2 [d4,f#4,a4]@5 ~@3", // D
  Q: "~@2 [d4,f#4,a4] ~@2 [d4,f#4,a4] ~@4 [e4,g4,b4] ~ [e4,g4,b4]!2 ~@2", // D Em
  R: "~@2 [e4,g4,b4] ~@2 [e4,g4,b4] ~@2 [e4,g4,b4]@2 ~ [e4,g4,b4] ~@2 [e4,g4,b4] ~", // Em
  S: "~@2 [a3,c4,e4] ~@2 [a3,c4,e4] ~@2 [a3,c4,e4]@5 ~@3", T: "[d3,c4,e4,g4]@9 ~ [d3,c4,e4,g4] ~ [d3,c4,e4,g4] ~@3",
  U: "~@6 [d5,f5,g5,a#5]@5 ~ [d5,f5,g5,a#5]!2 ~@2", V: "~ [c5,d5,f5,a5] ~@2 g5 ~@11",
  W: "~@10 [d5,f5,g5,a#5] ~ [d5,f5,g5,a#5]!2 ~@2", X: "~@2 [d5,g5] ~ [g4,d5,g5] ~@3, ~@4 g4 ~@11",
  Y: "[d5,f5,g5,a#5]!9 ~@7", Z: "[d5,d6] [d#5,d#6] [a4,a5] [g4,g5] ~@2 [d5,d6] [d#5,d#6] [f5,f6] [g5,g6] ~@6",
  AA: "[d5,d6] [d#5,d#6] [e5,e6] [f5,f6] ~ [e5,e6] [d#5,d#6] [d5,d6] ~@8", // D D# E F E D# D
  AB: "[d5,d6] [d#5,d#6] [a5,a6] [g5,g6] ~@2 [d5,d6] [d#5,d#6] [e5,e6] [f5,f6] ~@2 [f5,f6] [e5,e6] [d#5,d#6] [d5,d6]", // D D# A G D D# E F …
  AC: "~@4 [d#5,d#6] [d5,d6] ~ [a#4,a#5] ~ [a#4,a#5] ~ [a#4,a#5] [c5,c6] ~ [a4,a5] [g4,g5]", // D# D A# C A G
  AD: "[g5,g6] [f#5,f#6] [f5,f6] [e5,e6] ~ [d5,d6] ~ [d5,d6] ~ [d5,d6] [c#5,c#6] [c5,c6] [b4,b5] ~ [a#4,a#5] ~", // G F# F E D C# C B …
  AE: "[a#4,a#5] [a4,a5] [g4,g5] [f4,f5] ~ [f4,f5] ~ [f4,f5] ~ [d#4,d#5] [d4,d5] [c4,c5] ~@4", // A# A G F D# D C
  AF: "[g3,d4,g4,a4,b4,d5] ~@9 [d4,f4,g4,a#4,d5,f5,g5,a#5]!2 ~@2 [g4,a4,c5,e5,g5] ~", // G Gm7 Am7
  AG: "~@10 [d4,f4,g4,a#4,d5,f5,g5,a#5] ~@2 [d4,f4,g4,a#4,d5,f5,g5,a#5] ~@2", // Gm7
  AH: "~@6 [d4,f4,g4,a#4,d5,f5,g5,a#5]!2 ~ [d4,f4,g4,a#4,d5,f5,g5,a#5] ~ [d4,f4,g4,a#4,d5,f5,g5,a#5] ~ [d4,f4,g4,a#4,d5,f5,g5,a#5] [g4,a4,g5,a5] [f4,f5]", // Gm7 Gsus2 F
  AI: "[a4,b4,d5,g5] ~@15", // G
})).s("gm_synth_brass_1").gain(0.48)

// drums · kick
const kick = s("bd").struct("<A@40 B A B A@25 B A B A@13 B A B A B A B A B A B A B A B A@33 C>".pickRestart({
  A: "x ~@2 x ~@2 x ~@3 x ~@3 x ~", B: "x ~@2 x!2 ~ x ~@3 x ~@3 x ~", C: "x",
})).gain(0.7)

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

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

// drums · clap
const clap = s("cp").struct("<[~ x ~ x]!132 ~>").gain(0.7)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@7 A ~@7 A ~@15 A B@8 ~ C ~ D ~@15 A B@8 ~ C ~ D ~@3 A ~@7 E ~ C ~ D ~ C ~ D ~ C ~ D ~ C ~ D B@8 ~@7 A B@15 F G
>`.pickRestart({
  A: "~@5 x ~@2", B: "~ x ~ x", C: "~@13 x ~@2", D: "~@12 x!2 ~@2", E: "~@3 x ~@4", F: "~@4 x ~@9 x!2", G: "x",
})).gain(0.7)

// drums · hihat
const hihat = s("hh").struct("<[x!4]!132 ~>").gain(0.7)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A
  B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B
  A B A B A B A B A B A B A B ~
>`.pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~ x ~ x ~ x ~@2",
})).gain(0.23)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@7 A ~@7 A ~@15 A ~@9 B ~ C ~@15 A ~@9 B ~ C ~@3 A ~@7 D ~ B ~ C ~ B ~ C ~ B ~ C ~ B ~ C ~@15 A ~@15 E ~
>`.pickRestart({
  A: "~@3 x ~@4", B: "~ x ~@2 x ~@11", C: "~@4 x ~ x ~@4 x ~@4", D: "~@3 x ~@6 x ~@5", E: "~@9 x ~ x!3 ~@2",
})).gain(0.7)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~
  A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~
>`.pickRestart({
  A: "~@7 x",
})).gain(0.7)

// drums · high tom
const high_tom = s("ht").struct(`<
  ~@7 A ~@7 A ~@15 A ~@9 B ~ C ~@15 A ~@9 B ~ C ~@3 A ~@7 D ~ B ~ C ~ B ~ C ~ B ~ C ~ B ~ C ~@15 A ~@15 E ~
>`.pickRestart({
  A: "~@3 x ~@12", B: "~@5 x ~@2", C: "~ x ~ x ~ x ~@2 x!3 ~@5", D: "x", E: "~@6 x!2 ~@8",
})).gain(0.7)

// drums · crash
const crash = s("cr").struct(`<
  ~@4 A ~@3 A ~@3 A ~@3 A ~@7 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@7 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3
  A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@2 B ~
>`.pickRestart({
  A: "x", B: "~ x ~@2",
})).gain(0.7)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@32 A@8 ~@20 A@8 ~@32 A@8 ~@8 A@16 ~>".pickRestart({
  A: "x!16",
})).gain(1.18)

stack(
  bass, epiano2, synth_brass_1, kick, snare, snare_soft, clap, low_tom, hihat, hihat_soft, mid_tom, open_hat, high_tom,
  crash, cabasa
)