Strudelify

You're Makin Me High

Toni Braxton

KeyB♭ minorTempo93 bpm
0:00/0:00
// You're Makin Me High — Toni Braxton
// 92.5 bpm, 4/4, key A# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 97 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(92.5/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.

// chords · piano
const piano = note("<~@65 A B C@4 D E@2 ~@23>".pickRestart({
  A: "[ab3,c4,db4,f4,f5]!2 ~ [ab3,c4,db4,f4,f5] ~ [ab3,c4,db4,f4,eb5] [ab3,c4,db4,f4]@2 ~@2 bb4@2 ~@2 db5 [ab3,c4,db4,f4,e5,f5], ~@6 eb5@9 ~, ~@8 [ab3,c4,db4,f4]@7 ~, ~@4 db5@2 db5 ~, ~@13 bb4@2 ~", // Dbmaj7
  B: "~ f5@2 f5@2 ~@5 bb4@2 ~@2 eb5 [ab3,c4,db4,f4,a5,bb5], ~ [ab3,c4,db4,f4]@11 [ab3,c4,db4,f4,bb4]@3 ~, ~@5 eb5@2 eb5@7 ~@2, ~@6 f5@9 ~, ~@8 db5@5 db5@2 ~", // Dbmaj7
  C: "[~ ab5@7 eb5!2 db5 ~@6 [eb5,eb6]@2 ~@11 db6 f7@2 f6 [f6,f7]!4 ~ bb6!2 ~ f6!2 ~@2 bb5 [ab5,bb5] ~@4 eb5 ~ db5@2 db5 ~ bb4!2 ~@2 db5 [db4,f4,db5], ~ [ab3,c4,db4,f4]@20 [f5,f6]@2 [gb5,gb6]@2 [ab5,ab6]@2 [bb5,bb6]@2 [c6,c7]@2 f6 ~@6 [eb6,f6,f7]@2 ~ ab6@4 db6@3 ~ ab5@8 ~@7, ~@8 ab5@2 eb5@7 ~@2 [eb5,eb6]@11 db7@2 ~@10 e6@6 ~@4 e5@5 ~@3 db5@2 ~@2, ~@9 e5@2 db5@2 db5@2 db5@16 ~@12 db6 eb6@4 ~@2 f5@6 ~@5 eb5@3, ~@12 bb4@2 bb4@17 [gb3,bb3,db4,f4]@32 ~]/4", // Eb F Absus2 Db Dbmaj7 F Gb Ab …
  D: "~ [ab3,c4,db4,f4,db5] ~ db5@2 ~ c5@2 ~@2 bb4@2 ~@2 ab4@2, ~@3 [ab3,c4,db4,f4]@5 [ab3,c4,db4,f4]@4 [ab3,c4,db4,f4,bb4]@4, ~@5 db5@3 [c5,db5]@8", // Dbmaj7
  E: "[[ab3,c4,db4,f4,ab4,c5,db5] ~@14 db5 [bb4,c5] ~@15, ~@8 ab7@7 [eb5,f5]@2 ~@15, ~@9 gb7@8 ~@15, ~@5 db7@3 ~@8, ~@11 bb6@6 ~@15]/2", // Dbmaj7 Bbsus2 Ebsus2
})).s("gm_piano").gain(0.29)

// chords · piano · soft notes · Gb Cm Ab Gbmaj7
const piano_soft = note(`<
  ~@69
  [~@7 ab6 ~@2 eb6!2 f6@3 ~]
  [~@5 eb5@4 ~@7]
  ~
  [~@7 [gb5,ab5,bb5], ~@9 f7@4 [c6,db6,eb6]@3, ~@5 eb7@3, ~@11 [ab6,c7]@5, ~@3 [f6,gb6]]
  ~@24
>`).s("gm_piano").gain(0.14)

// bass · electric bass finger · "Bass"
const bass = note(`<
  ~ A B A C D E A F A B A C D E A G A B A C D E A G A B A C D E A G A B A C D E A G A B A C D E A G A B A C D E A H I J
  I K L M N O A B A C D E A P A B A C D E A G A B A C D E A G A B A C D E A G
>`.pickRestart({
  A: "ab1@2 bb1@2 ~@4 f1@2 ~@4 f1 ~", B: "ab1@2 bb1 ~@5 f1@2 ~@4 f1 ~", C: "ab1@2 bb1@2 ~@4 f1@2 ~@4 bb1 ~",
  D: "db2@2 eb2@2 ~@4 bb1@2 ~@4 bb1 ~", E: "db2@2 eb2@2 ~@4 bb1@2 ~@4 f1 ~", F: "ab1@2 bb1 ~@5 f1 ~@7",
  G: "ab1@2 bb1 ~@5 f1 ~@5 f1 ~", H: "ab1@2 bb1 ~@5 f1 ~@5 [bb0,f1] ~", I: "eb1@2 f1@2 ~@4 c1 ~@5 bb0 ~",
  J: "db1@2 eb1@2 ~@4 eb1 ~@5 bb0 ~", K: "db1@2 eb1 ~@5 bb0 ~@5 f1 ~", L: "ab1@2 bb1@2 ~@4 bb1 ~@5 bb1 ~",
  M: "ab1@6 ~@2 ab1@2 ~@4 ab1 ~", N: "db1@2 eb1@3 ~@3 eb1@8", O: "f1", P: "ab1 ~@7",
})).s("gm_electric_bass_finger").gain(0.31)

// chords · acoustic guitar steel · "Guitar"
const acoustic_guitar_steel = note(`<
  ~ A B@2 C D E F G H@4 I@2 H J K L M N@2 O P Q A B@2 C D E F G H@4 I@2 H J K L M N@2 O P Q A B@2 C D E F G ~@8 A B@2 C
  D E F R K L M N@2 O P Q A B@2 C D E F G A B@2 C D E F G
>`.pickRestart({
  A: "~@2 [f3,ab3,c4,db4,f4] ~@3 [f3,ab3,c4,db4,f4] ~@3 [f3,ab3,c4,db4,f4] ~@3 [eb3,f3,ab3,c4,db4,f4] f3", // Dbmaj7
  B: "ab3@2 [f3,ab3,bb3,c4,db4,f4] ~@3 [f3,ab3,c4,db4,f4] ~@3 [f3,ab3,c4,db4,f4] ~@3 [eb3,f3,ab3,c4,db4,f4] f3", // Dbmaj7
  C: "ab3@2 [f3,ab3,bb3,c4,db4,f4] ~@3 [f3,ab3,c4,db4,f4] ~@3 [f3,ab3,c4,db4,f4] ~@3 [f3,ab3,c4,db4,f4] bb3", // Dbmaj7
  D: "db4@2 [f3,gb3,bb3,db4,eb4,f4] ~@3 [f3,gb3,bb3,db4,f4] ~@3 [f3,gb3,bb3,db4,f4] ~@3 [f3,gb3,ab3,bb3,db4,f4] bb3", // Ebm7 Gbmaj7
  E: "db4@2 [f3,gb3,bb3,db4,eb4,f4] db4 ~@2 [f3,gb3,bb3,db4,f4] ~@3 [f3,gb3,bb3,db4,f4] ~@3 [eb3,f3,gb3,bb3,db4,f4] f3", // Ebm7 Gbmaj7 Ebm7
  F: "ab3@2 [f3,ab3,bb3,c4,db4,f4] ~@3 [f3,ab3,c4,db4,f4] ~ [ab3,bb3]@2 [f3,ab3,c4,db4,f4] bb3@2 ab3 [f3,ab3,c4,db4,f4] ~", // Dbmaj7 Absus2 Dbmaj7
  G: "f3@2 [f3,ab3,c4,db4,f4] ~@3 [f3,ab3,c4,db4,f4] ~@9", // Dbmaj7
  H: "~@2 [f3,ab3,c4,db4,f4] ~@3 [f3,ab3,c4,db4,f4] ~@3 [f3,ab3,c4,db4,f4] ~@3 [f3,ab3,c4,db4,f4] ~", // Dbmaj7
  I: "~@2 [f3,gb3,bb3,db4,f4] ~@3 [f3,gb3,bb3,db4,f4] ~@3 [f3,gb3,bb3,db4,f4] ~@3 [f3,gb3,bb3,db4,f4] ~", // Gbmaj7
  J: "~@2 [f3,ab3,c4,db4,f4] ~@3 [f3,ab3,c4,db4,f4] ~@3 [f3,ab3,c4,db4,f4] ~@3 [f3,ab3,c4,db4,f4] f4", // Dbmaj7
  K: "c5 db5 c5 bb4 c5 bb4 ab4 ~@8 f3", L: "bb3 c4@2 bb3 db4 ~ bb3 eb4@2 db4@2 bb3 ~@3 f4",
  M: "c5 db5 c5 bb4 c5 bb4 ab4 ~@8 bb3",
  N: "[db4 eb4@2 [bb3,eb4]@2 db4 ~ [bb3,db4,eb4] ~ [bb3,c4] ~ [bb3,db4]@2 eb4 ~ db4 [db4,f4]@8 ~ [db4,eb4,f4] eb4@2 db4@2 bb3 ~, ~@7 bb3@5 ~@4]/2", // Eb5 Eb7 Bbsus2 Bbm Db
  O: "~@15 f4", P: "c5 db5 c5 bb4 c5 bb4 ab4@2 f4 ~@7",
  Q: "~ eb4 ~ [bb3,db4] ~ c4 ~ [bb3,db4] ~@4 [bb3,eb4]@2 ~@2, [bb3,db4] ~@7", R: "[f3,ab3,c4,db4,f4] ~@15",
})).s("gm_acoustic_guitar_steel").gain(0.14)

// chords · string ensemble 2 · "Strings"
const string_ensemble_2 = note("<~@41 A@8 B@8 ~@10 C@5 ~ A@8 D@8 E@4 F@4>".pickRestart({
  A: "[~@3 bb4, f4, ~ db5]/8", B: "[~@96 db5 ~@19 bb4@11 ~, bb5@80 db6@37 ~@11, ~@64 f5@32 bb5@31 ~]/8",
  C: "[~@2 f5@3, bb4]/5", D: "[bb4@64 ~@32 db5 ~@19 bb4@11 ~, bb5@80 db6@37 ~@11, ~@64 f5@32 bb5@31 ~]/8", E: "bb4/4",
  F: "[~@32 db5 ~@19 bb4@11 ~, f5@32 bb5@31 ~, ~@16 db6@37 ~@11]/4",
})).s("gm_string_ensemble_2").gain(0.04)

// chords · percussive organ · "Organ"
const percussive_organ = note("<~@57 A B C D E F G H ~@32>".pickRestart({
  A: "[eb5,ab5,db6] ~ [ab5,db6] c6!2 bb5!2 ab5!2 f5 eb5 f5 [db5,f5] ~ db5 eb5, ~@13 bb4@3", // Dbsus2 Db5 Db
  B: "[bb4,db5,gb5]@2 f5 [bb4,db5,gb5] ~ [bb4,f5] ~ [bb4,eb5]@4 bb4 db5 bb4 db5 [f5,gb5]", // Gb Bb5 Eb5 Gbmaj7
  C: "[eb5,gb5,ab5,db6] ~ [ab5,db6] c6!2 [eb5,bb5] [eb5,ab5] bb5 [eb5,ab5] eb5 ~ [f5,gb5] ~ f5 db5 [bb4,eb5], ~@2 eb5@3 ~@7 eb5@3 ~", // Ebm7 Db5 Eb5 Ab5 Gbmaj7 Eb5
  D: "[bb4,db5,gb5]@3 [db5,f5] ~@2 [bb4,db5,f5]@3 [gb4,bb4,db5] ~@2 [db5,gb5]@2 bb4 ~, ~@12 bb4 ~@3", // Gb Db Bbm Gb Gb5
  E: "[db5,eb5,f5,ab5,c6]@3 [db5,f5,bb5] ~@2 [db5,f5,bb5]@4 [db5,f5,ab5] ~ [db5,f5,ab5] ~ c5 ~", // Dbmaj7 Bbm Db
  F: "[db5,f5,bb5]@3 [db5,f5,ab5,bb5] ~@2 f5@3 ~ f5@4 ~ db5, ~@3 [db5,ab5]@4 bb4", // Bbm Bbm7 Db5
  G: "[bb4,db5,gb5]@6 [bb4,db5,eb5,gb5]@4 [db5,eb5]@3 [db5,eb5]@2 ~, ~@10 [bb4,ab5]@5 ~", // Gb Ebm7 Dbsus2 Bb7
  H: "[a4,db5,eb5,ab5]@10 a4@2 ~ a4@3, ~@5 [eb5,ab5]@3, ~@10 db5 ~ db5@2 ~@2", // Amaj7 Ab5
})).s("gm_percussive_organ").gain(0.07)

// chords · string ensemble 1 · "Marcato"
const string_ensemble_1 = note("<~@57 A B C B D@2 E F ~@32>".pickRestart({
  A: "[c5,eb5,ab5]", B: "[bb4,db5,gb5]", C: "[c5,eb5,ab5], gb5 ~@15",
  D: "[~@2 db5@13 ~ [bb4,db5,f5]@16, ab5, [c5,f5]@16 c5 ~@15]/2", E: "[bb4,db5,gb5]@15 ~", F: "[a4,db5,eb5,ab5]",
})).s("gm_string_ensemble_1").gain(0.06)

// drums · kick
const kick = s("bd").struct("<~ [x!2]!71 x [x!2]!24>").gain(0.4)

// drums · low tom
const low_tom = s("lt").struct("<~ [~@7 x]!7 ~ [~@7 x]!63 ~ [~@7 x]!7 ~ [~@7 x]!16>").gain(0.2)

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

// drums · shaker
const shaker = s("sh").struct(`<
  ~ A B A B A B A C 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 D A B A B A B A C A B A B A B A B A B A B A B A B
>`.pickRestart({
  A: "x!2", B: "x!2 ~@2 x ~@2 x", C: "x!2 ~@2 x ~@3", D: "x",
})).gain(0.25)

// drums · shaker · soft notes
const shaker_soft = s("sh").struct("<~ [~ x ~@14]!71 ~ [~ x ~@14]!24>").gain(0.15)

stack(
  piano, piano_soft, bass, acoustic_guitar_steel, string_ensemble_2, percussive_organ, string_ensemble_1, kick, low_tom,
  hihat, shaker, shaker_soft
)

More by Toni Braxton