Strudelify

money thats what i want

Berry Gordy

KeyD majorTempo128 bpm
0:00/0:00
// money thats what i want — Berry Gordy
// 128 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 1 "Trumpet" named as a brass, played on trumpet (its piano patch is not one)
// note: Transcription provider: pdmx. https://musescore.com/score/2258691; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 83 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(128/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// other · trumpet
const trumpet = note(`<
  ~@9 A B A C D E F G H I F ~@5 J K J K J K L ~@29 J K J K J K L ~ J K J K J K J K J K L M N F
>`.pickRestart({
  A: "~ c5 c5@2 c5@2 c5!2", B: "e5@2 c5 e5 c5 ~@3", C: "e5@2 c5 e5 c5!4", D: "c5!2 ~@6", E: "~@5 c5!3", F: "c5 ~@7",
  G: "~@5 b4!3", H: "b4 g4 ~@6", I: "~@2 c5@2 e5@2 c5 e5", J: "~@2 c5 ~@5", K: "c5 d5@2 c5@2 ~@3",
  L: "~@2 c5@2 c5 c5@2 c5", M: "~ g5!7", N: "c5",
})).s("gm_trumpet").gain(0.3)

// other · alto sax
const alto_sax = note(`<
  ~@13 A B A B A B C ~ D E D F G H I J K L I ~@29 A B A B A B C ~ A B A B A B A B A B C M N I
>`.pickRestart({
  A: "~@2 c5 ~@5", B: "c5 d5@2 c5@2 ~@3", C: "~@2 c5@2 c5 c5@2 c5", D: "~ c5 c5@2 c5@2 c5!2", E: "e5@2 c5 e5 c5 ~@3",
  F: "g5@2 f5 d#5@2 c5!3", G: "c5!2 ~@6", H: "~@5 c5!3", I: "c5 ~@7", J: "~@5 b4!3", K: "b4 g4 ~@6",
  L: "~@2 c5@2 e5@2 c5 e5", M: "~ g5!7", N: "c5",
})).s("gm_alto_sax").gain(0.3)

// other · tenor sax
const tenor_sax = note(`<
  ~@13 A B A B A B C ~@5 A B A B A B C ~@25 D E D F G H I J K L I ~ A B A B A B A B A B C M N I
>`.pickRestart({
  A: "~@2 c4 ~@5", B: "c4 d4@2 c4@2 ~@3", C: "~@2 c4@2 c4 c4@2 c4", D: "~ c4 c4@2 c4@2 c4!2", E: "e4@2 c4 e4 c4 ~@3",
  F: "g4@2 f4 d#4@2 c4!3", G: "c4!2 ~@6", H: "~@5 c4!3", I: "c4 ~@7", J: "~@5 b3!3", K: "b3 g3 ~@6",
  L: "~@2 c4@2 e4@2 c4 e4", M: "~ g4!7", N: "c4",
})).s("gm_tenor_sax").gain(0.3)

// other · trombone
const trombone = note(`<
  ~@13 A B A B C D E ~@5 A B C D C D E ~@29 A B C D C D E ~ C D C D A B C D C D E F G H
>`.pickRestart({
  A: "~@2 f2 ~@5", B: "f2 g2@2 f2@2 ~@3", C: "~@2 c3 ~@5", D: "c3 d3@2 c3@2 ~@3", E: "~@2 c3@2 c3 c3@2 c3", F: "~ g3!7",
  G: "c3", H: "c3 ~@7",
})).s("gm_trombone").gain(0.3)

// chords · piano
const piano = note(`<
  ~@5 A@3 B C ~@3 D E F G H I A B C J C J D E F G H I A B F G F G D E F G H I A B F G F G D E F G H I A B C J C J D E F
  G H I A B F G F G D E F G H I A B K C
>`.pickRestart({
  A: "[c3,c4]!2 [d#3,d#4] [e3,e4] [f3,f4]!2 [d#3,d#4] [f3,f4]", B: "~ [g3,g4]!7", C: "[c3,c4] ~@7",
  D: "~ [d#4,f4,a4,c5] c3@2 [d#3,d#4,f4,a4,c5]@2 d#3 e3, f3 ~@3", // F7
  E: "[f3,d#4,f4,a4,c5]@2 ~ [d#4,f4,a4,c5] d#3@2 d#3 e3, ~ c3 ~@2", // F7
  F: "~ [a#3,c4,e4,g4] g2@2 [a#2,a#3,c4,e4,g4]@2 a#2 b2, c3 ~@3", // C7
  G: "[c3,a#3,c4,e4,g4]@2 ~ [a#3,c4,e4,g4] a#2@2 a#2 b2, ~ g2 ~@2", // C7
  H: "~ [f4,g4,b4,d5] d3@2 [f3,f4,g4,b4,d5]@2 f3 f#3, g3 ~@3", // G7
  I: "[f3,d#4,f4,a4,c5]@2 ~ [d#4,f4,a4,c5] d#3@2 d3 c3, ~ e3 ~@2", J: "~@5 [g3,g4]!3", K: "[c3,c4]@15 ~",
})).s("gm_piano").gain(0.3)

// bass · acoustic bass · "Bass"
const bass = note(`<
  ~@5 A@3 B C ~@3 D E F G H I A B C J C J D E F G H I A B K L F G D E F G H I A B K L F G D E F G H I A B C J C J D E F
  G H I A B K L F G D E F G H I A B M C
>`.pickRestart({
  A: "c2!2 d#2 e2 f2!2 d#2 f2", B: "~ g2!7", C: "c2 ~@7", D: "f2 c2 d#2 e2", E: "f2!2 a2@2 a#2@2 b2@2",
  F: "c3@2 e2@2 g2!2 a#1@2", G: "c2 e2 f2 f#2", H: "g2@2 d#2@2 f#2!2 a1@2", I: "f2 e2 d#2 d2", J: "~@5 g2!3",
  K: "c2 g1 a#1 b1", L: "c2!2 e2@2 f2@2 f#2@2", M: "c2",
})).s("gm_acoustic_bass").gain(0.3)

// drums · kick
const kick = s("bd").struct("<~ [x!4]!79 [x!2 ~@2] x ~>").gain(0.3)

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

// drums · low tom
const low_tom = s("lt").struct("<~@80 [~@7 x] ~@2>").gain(0.3)

// drums · hihat
const hihat = s("hh").struct("<~ [x!8]!68 [~ x ~ x ~ x ~ x]!11 [x!4 ~@4] ~@2>").gain(0.3)

// drums · mid tom
const mid_tom = s("mt").struct("<~@80 [~@5 x!2 ~] ~@2>").gain(0.3)

// drums · high tom
const high_tom = s("ht").struct("<~@80 [~ x] ~@2>").gain(0.3)

// drums · crash
const crash = s("cr").struct(`<
  ~@13 A ~ A ~ A ~ A ~ A ~@3 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@3 A ~ A ~ A ~ A ~ A ~ A
  ~ A ~ A ~ A ~ A ~ A ~
>`.pickRestart({
  A: "x",
})).gain(0.3)

// drums · ride
const ride = s("rd").struct("<~@69 [x!4]!11 ~@3>").gain(0.3)

stack(trumpet, alto_sax, tenor_sax, trombone, piano, bass, kick, snare, low_tom, hihat, mid_tom, high_tom, crash, ride)