Strudelify
Money's Too Tight (to Mention) cover art

Picture Book

Money's Too Tight (to Mention)

Simply Red

KeyB minorTempo114 bpm
0:00/0:00
// Money's Too Tight (to Mention) — Simply Red
// 114 bpm, 4/4, key B minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 6 slap bass 1 (copy of ch 1 fretless bass)
// note: Full arrangement: all 143 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
// note: The whole transcription plays 40 ms behind the beat; the grid follows it, so its parts stay together.
setcpm(114/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.

// chords · piano
const piano = note(`<
  A@2 B C D E F C D G B C D E F C D G H C D E F C D G B C D E F C D G B C D G B C D E F C D I J K L I J K M E F C D G B
  C D ~@8 I J K L I J K M G B C D E F C D G B C D E F C N I J K L I J K M G B C D E F C D G B C D E F C D G B C D E F C
  D ~@8 I J K L I J K M O@2
>`.pickRestart({
  A: "[~@10 f#3 ~ b3 d4 b3 ~ [b2,b3,d4,f#4]@13 ~@3, ~@11 a3@2 ~@2 a3@2 ~@15]/2", // Bm
  B: "[e3,a3,c#4]@3 [e3,a3,c#4]@3 [b3,d4,f#4]@9 ~", C: "[a3,d4,f#4]@6 [b3,d4,g4]@9 ~",
  D: "[b3,d4,g4] ~ [b3,g4]@2 [a3,f#4]@3 ~ [b3,d4,g4]@4 [a3,c#4,e4]@4, ~ d4@3 ~@4", E: "[b3,d4,f#4]@13 ~@3",
  F: "[a3,c#4,e4]@3 [a3,c#4,e4,a4]@3 [b3,d4,f#4]@9 ~", G: "[b2,b3,d4,f#4]@13 ~@3",
  H: "[e3,a3,c#4]@3 [e3,a3,c#4]@3 [b2,b3,d4,f#4]@9 ~", I: "[d4,f#4,a4], a3@3 ~", J: "[g#3,d4,f#4,g#4,b4]",
  K: "[b3,d4,g4]@15 ~", L: "[e3,g4,b4]@4 [f#3,a4,c#5]@3 ~ [g3,b4,d5]@4 [g4,b4]@3 ~",
  M: "~@2 [f#3,a#3,c#4,f#4,a#4] ~ [c#4,f#4,a#4]@2 ~@4 [c#4,f#4,a#4] ~ [c#4,f#4,a#4]@2 ~@2", // F#
  N: "[b4,d5,g5] ~ [b4,g5]@2 [a4,f#5]@3 ~ [b4,d5,g5]@4 [a4,c#5,e5]@4, ~@2 d5@5 ~@9", // G Em D G A
  O: "[[b2,b3,d4,f#4]@13 ~@2 [b2,f#4,b4,d5]@4 ~@13]/2", // Bm
})).s("gm_piano").gain(0.36)

// chords · piano
const piano_2 = note("<~@125 A B@3 C@4 ~@10>".pickRestart({
  A: "[b4,b5]", B: "[[c#5,c#6]@4 ~@4 [g5,b5]@15 ~, ~ d5@5, ~@4 d6@19 ~]/3",
  C: "[b5@2 [c#5,c#6] ~ [g5,b5]@4, b4@9 ~@3 [d5,d6]@20]/4", // C# G D
})).s("gm_piano").gain(0.4)

// bass · fretless bass
const bass = note(`<
  A@2 B C D E B C D E B C D E B C D E B C D E B C D E B C D E B C D E B C D E B C D E B C F G H I J G H K L E B C D E B
  C D M N O D M N O D G H I J G H K L E B C D E B C D E B C D E B C D G H I J G H K L E B C D E B C D E B C D E B C D E
  B C D E B C F P B O F M N O D G H I J G H K L Q@2
>`.pickRestart({
  A: "[~@10 f#2 ~ b2 d3 b2 ~ b1 ~ b1@4 a1@2 b1 ~@6 a1, ~@11 a2@2 ~@2 a2@2 ~@15]/2",
  B: "b1 ~ b1@2 c#2 ~ c#2@2 d2 ~ d2 ~ f#2@4", C: "e2 ~ e2@4 d2@2 e2 ~@6 e2",
  D: "e1 ~ e1@2 f#1 ~ f#1@2 g1 ~ g1 ~ a1 ~ a1@2", E: "b1 ~ b1@4 a1@2 b1 ~@6 a1",
  F: "e1 ~ e1@2 f#1 ~ f#1@2 g1 ~ g1 ~ a1@3 ~", G: "a1@5 ~ a1 ~@7 a2 a1", H: "g#1@4 ~@2 g#1@3 ~ g#1 ~@3 g#1@2",
  I: "g1@5 ~ g1 ~@7 g1@2", J: "e1@4 f#1@4 g1@4 e1@3 ~", K: "g1@5 ~ g1 ~@9", L: "~@2 f#1 ~ f#1@2 ~@4 f#1 ~ f#1@2 ~@2",
  M: "~@2 b1 ~ a1@4 b1 ~@5 a1 a#1", N: "b1 ~ b1@2 c#2 ~ c#2@2 d2 ~ d2 ~ f#2@3 ~", O: "~@2 e1 ~ d1@4 e1@2 ~@4 d1 d#1",
  P: "b1 ~ b1@4 a1@2 b1@2 ~@4 a1 a#1", Q: "[b1 ~ b1@4 a1@2 b1 ~@6 b1@4 ~@13]/2",
})).s("gm_fretless_bass").gain(0.4).pan(0.1)

// drums · rim
const rim = s("rim").struct("<[x!4] ~@142>").gain(0.3)

// drums · kick
const kick = s("bd").struct("<~ A@51 B A@23 B A@23 B A@39 B C ~>".pickRestart({
  A: "x!4", B: "~ x!2 ~@2 x!2 ~", C: "x ~ x ~@3 x ~ x ~@6 x",
})).gain(0.35)

// drums · snare
const snare = s("sd").struct("<~ A@44 ~@7 B A@16 ~@7 B A@16 ~@7 B A@15 C A@16 ~@7 B D ~>".pickRestart({
  A: "~ x ~ x", B: "~ x!2 ~@2 x!2 ~", C: "~@4 x ~@7 x ~ x!2", D: "~@8 x ~@6 x",
})).gain(0.45)

// drums · low tom
const low_tom = s("lt").struct("<~@61 x!8 ~@56 x!8 ~@10>").gain(0.35)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@61 x!8 ~@56 x!8 ~@10>").gain(0.35)

// drums · open hat
const open_hat = s("oh").struct("<~@141 [~@3 x ~ x ~ x] ~>").gain(0.35)

// drums · high tom
const high_tom = s("ht").struct("<~@61 x!8 ~@56 x!8 ~@10>").gain(0.35)

// drums · crash
const crash = s("cr").struct(`<
  ~ A ~@19 A ~@3 A ~@11 A ~@3 A ~@3 A ~@3 A ~@2 B A ~@15 A ~@3 A ~@2 B A ~@15 A ~@3 A ~@2 B A ~@7 A ~@6 C A ~@3 A ~@11 A
  ~@3 A ~@2 B D ~
>`.pickRestart({
  A: "x", B: "~@3 x", C: "~@15 x", D: "~@2 x ~@5 x ~@6 x",
})).gain(0.4)

stack(piano, piano_2, bass, rim, kick, snare, low_tom, hihat, mid_tom, open_hat, high_tom, crash)

More by Simply Red