Strudelify
Straight Up cover art

1988 · Forever Your Girl

Straight Up

Paula Abdul

KeyF majorTempo95 bpm
0:00/0:00
// Straight Up — Paula Abdul
// 95 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 92 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(95/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// other · alto sax · "Sax"
const alto_sax = note(`<
  A B A B A B A B C D E F ~ G ~ H I ~@10 J C D E F ~ G ~ H I ~@10 J K L M N O L P ~@9 I ~@14 J Q R Q R Q R Q R Q R Q S
>`.pickRestart({
  A: "d4 ~@3 e4 ~@3 d4 ~ e4 f4 ~@4", B: "d4 ~ e4 ~ f4@2 g4 d4 ~@8", C: "~@4 f4 ~ f4 g4 ~@8",
  D: "~@2 g4 ~ f4 ~ e4 d4 ~@8", E: "~ g3 ~@2", F: "~@2 f4 ~ d4@2 c4 d4 ~@8", G: "~@2 d5 ~ a4@2 f4 g4 ~@8",
  H: "~@4 d4@2 c4 d4 ~@4 f5@4", I: "g5 ~@3", J: "~@2 g4 ~ f4 e4 ~ d4 ~@8", K: "~@2 a4!2 a4@2 a4!2",
  L: "bb4@2 bb4!2 bb4@2 c5@2", M: "g4@2 a4 bb4 a4@2 f4@2", N: "e4 d4@3 ~@4", O: "~@2 a4!5 c5", P: "g4@5 f4 g4 a4@5 ~@4",
  Q: "d5 ~ e5 ~ f5 ~@3 d5 ~ e5 f5 ~@4", R: "d5 ~ e5 ~ f5@2 g5 d5 ~@8", S: "d5 ~@15",
})).s("gm_alto_sax").gain(0.56)

// bass · electric bass finger · "Bass"
const bass = note(`<
  A B C D A B C D E F G H E F G I J K L ~ A B C D A B C M E F G H E F G I J K L ~ A B C D A B C M I N G H I F O I ~@8 J
  K J K J K L ~ A B C D A B C M A B C D A B C M A B C P
>`.pickRestart({
  A: "d2@2 d2@2 ~@4 d2@2 c2 d2 c2@2 c2@2", B: "bb1!2 ~@2 bb1!2 a1!2", C: "c2@2 c2@2 ~@4 c2@2 c2@2 c2@2 e2 f2",
  D: "d2@2 d2@2 ~@4 a2@2 g2 a2 g2 f2 d2 c2", E: "d2@2 d2@2 ~@11 c2", F: "bb1@2 bb1@2 ~@9 g1 bb1 a1",
  G: "g1@2 g1@2 ~@4 g1@2 g1 a1@2 a1 c2 a1", H: "d2@2 d2@2 ~@9 a1 c2 a1", I: "d2!2 ~@6",
  J: "g2@2 g2@2 ~@2 g2 ab2 a2@2 a2@2 ~@3 a2", K: "d3!2 e3!2 f3@2 e3!2", L: "g2@2 g2@2 ~@2 g2 ab2 a2@4 ~@4",
  M: "d2@2 d2@2 ~@3 d2 f2 g2 d2@2 e2 f2 a1@2", N: "bb1!2 ~@6", O: "g1@2 g1@2 ~@4 a1@2 a1 a1@2 a1 c2 a1", P: "d2 ~@7",
})).s("gm_electric_bass_finger").gain(0.56)

// other · lead 3 calliope · "Oh Oh Oh"
const lead_3_calliope = note(`<
  ~@3 A ~ B C A ~@2 D ~@8 E ~ F G ~@2 F G ~@3 D ~@8 E ~ F G ~@2 F G ~@4 H ~@19 E ~ F G ~@2 F G ~@2 F G ~@2 F G ~@2 F G ~
>`.pickRestart({
  A: "~@8 a2@4 g2 f2 d2 c2", B: "~@8 d6@2 c6@2 a5@2 f5 d5", C: "g5 ~@3", D: "~ d4 ~@2",
  E: "~@7 a3 bb3 d4 e4@2 f4 g4 a4@2", F: "~@6 d4!2", G: "c4 ~@3", H: "~@3 d5",
})).s("gm_lead_3_calliope").gain(0.56)

// other · piano · "tensax4"
const piano = note(`<
  A B A B A B A C ~@2 D E ~@3 F G ~@3 H I J K H L M N ~@2 D E ~@3 F G ~@3 H I J K H L M N ~@3 O ~@12 G ~ G ~ G ~@3 H I J
  K H L M N H I J K H L M N ~ I J ~
>`.pickRestart({
  A: "d3 ~@3 e3 ~@3 d3 ~ e3 f3 ~@4", B: "d3 ~ e3 ~ f3@2 g3 d3 ~@8", C: "d3 ~ e3 ~ f3@2 g3 d3 ~@2 c6@2 a5 g5 ~@2",
  D: "~ c4 ~@2", E: "~@2 d4 ~ a3@2 g3 a3 ~@8", F: "~@4 a3@2 g3 a3 ~@4 f4@4", G: "d5 ~@3",
  H: "~@2 f4 f4@2 f4@2 e4@2 e4 ~@6", I: "d4@2 ~@4 a3!2", J: "g3@2 ~@4 d4 e4", K: "f4@4 d4@2 e4@2 f4 g4 ~ a4 ~@4",
  L: "d4@3 ~@9 a3@2 a3@2", M: "g3@2 ~@4 d4!2", N: "f4 ~@3", O: "~@3 a4",
})).s("gm_piano").gain(0.56)

// other · piano · "tensax4"
const piano_2 = note(`<
  ~@7 A ~@2 B ~@9 C D E C@2 D E C ~@2 B ~@9 C D E C@2 D E C ~@3 F ~@20 C D E C@2 D E C@2 D E C@2 D E C@2 D E G
>`.pickRestart({
  A: "~@10 f6@2 d6 c6 ~@2", B: "~ f4 ~@2", C: "d4", D: "bb3", E: "c4", F: "~@3 f4", G: "d4 ~@3",
})).s("gm_piano").gain(0.56)

// drums · kick
const kick = s("bd").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 C D
  C@3 D@2 E 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 F
>`.pickRestart({
  A: "x ~@6 x!2 ~ x ~@3 x ~", B: "x ~@7 x ~ x!3 ~@3", C: "x ~ x ~@4 x!2 ~@3 x ~@3", D: "~@2 x ~ x ~@4 x!2 ~ x ~@3",
  E: "~@4 x!3 ~ x ~@7", F: "x",
})).gain(0.56)

// drums · snare
const snare = s("sd").struct("<~@4 [~ x ~ x]!59 ~ [~ x ~ x]!27 ~>").gain(0.56)

// drums · hihat
const hihat = s("hh").struct(`<
  A@4 B C B C B C B C D C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C ~@12 B C B C B C B
  C B C B C B C B C B C B C B C B C B C B ~
>`.pickRestart({
  A: "~ x ~ x", B: "x ~ x ~ x ~@2 x!2 ~ x ~ x ~@3", C: "x ~ x ~ x ~@2 x!2 ~ x ~ x!3 ~", D: "~@4 x!3 ~",
})).gain(0.56)

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

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

stack(alto_sax, bass, lead_3_calliope, piano, piano_2, kick, snare, hihat, mid_tom, crash)

More by Paula Abdul