Strudelify

Breathe Again

Toni Braxton

KeyC majorTempo77 bpm
0:00/0:00
// Breathe Again — Toni Braxton
// 77 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: bank select 127 (Roland MT-32 map) read through the MT-32 patch table: ch 2 "#FRETLESS1" Fretless 1 -> fretless bass
// note: duplicate parts dropped: ch 5 "FINGERDBAS" electric bass finger (copy of ch 2 "#FRETLESS1" fretless bass)
// note: Full arrangement: all 86 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(77/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 · epiano2 · "E.PIANO 2"
const epiano2 = note(`<
  ~ A@3 B C@2 D@3 E F G H@2 I ~ J K L M N O P ~ L Q R S@2 T ~@2 A@3 B C@2 D@3 E F G H@2 I ~ J K L M N O P ~ L Q R S@2 T
  ~@2 A@3 B C@2 D@3 E F G H@2 I ~ H@2 I ~@2
>`.pickRestart({
  A: "[~ [c4,e4,g4]@10 ~@2 [b3,d4,f4]@2 [c4,e4,g4]@2 [f4,a4,c5]@3 [f4,a4,c5]@3 ~]/3", B: "~@2 [f4,a4,c5] ~@13",
  C: "[~ [e4,g4,b4]@10 ~@5]/2", // Em
  D: "[~@2 [a4,c5]@20 b4 ~@3 b4@4 ~@4 [e4,b4]@13 ~, ~ f4@14 ~@2 g4@5 ~@2, ~@11 c5@10 ~@3, ~@11 a4@4 a4@6 ~@3]/3", // Am E5
  E: "~ [a4,c5,e5]@6 ~", F: "~@2 [d4,f4,a4]@13 ~", G: "[d4,a4] ~@15, f4 ~@7",
  H: "[~@2 [f4,a4,c5]@12 ~@2 a4 [a4,c5] [f4,a4,c5]@13 ~, ~@15 f4@3 ~@14]/2", I: "~@2 [c5,e5,g5]@11 ~@3",
  J: "~@2 [f3,a3,c4]@4 ~@2 [d3,f3,a3]@6 ~ g3", K: "a3 b3 [g3,b3,d4]@4 ~@2 [a3,c4,e4]@8",
  L: "~@2 [f3,a3,c4]@4 ~@2 [d3,f3,a3]@7 ~", M: "~@2 [g3,b3,d4]@5 ~ [c4,e4]@4 b3@3 [c4,e4], ~ a3",
  N: "c4 ~ [f3,a3,c4]@4 ~@2 [d3,f3,a3]@6 ~@2", O: "~@2 [g3,b3,d4]@5 ~ [a3,c4,e4]@5 ~ e4 c4, ~@13 a3@2 ~", P: "a3 ~@7",
  Q: "~@2 [b3,d4]@3 ~ b3 d4 b3 ~@5 e4 c4, ~ g3@2 ~ a3@4", R: "a3 ~ [f3,a3,c4]@4 ~@2 [d3,f3,a3]@7 ~",
  S: "[~@2 [g3,b3,d4]@5 g3 ~ [a3,c4,e4]@6 ~ c4 [d4,e4] ~@14, ~@15 a3@2 ~@15]/2", T: "~ [g3,b3,d4]@2 ~ [a3,c4,e4]@4",
})).s("gm_epiano2").gain(0.34).pan(0.7)

// bass · fretless bass · "#FRETLESS1"
const bass = note(`<
  ~ A B C D E F G H I J K L@2 M A@2 N O P Q R@2 S@2 P O T U V@3 W A B C D E F G H I J K L@2 M A@2 N O P Q R@2 S@2 P O T
  U V@3 W A B C D E F G H I J K L@2 M A X@2 M Y ~@2
>`.pickRestart({
  A: "~@2 c2@4 ~@2 c2 ~ c2@4 ~@2", B: "~ c2@2 ~ c3 c2@2 ~", C: "c2 c#2 d2@4 ~@2 d2 ~ d2@5 ~",
  D: "~@2 d2@4 ~@2 d2 ~ d2@4 ~@2", E: "d2 d#2 e2@4 ~@2 e2 ~ e2@5 ~", F: "~@2 e2@4 ~@2 e2 ~ e2@4 ~@2",
  G: "~@2 f2@4 ~@2 f2 ~ f2@6", H: "~ f2@2 ~ f2!2 c2 f2", I: "f2 e2@2 ~ b1 e2@2 ~",
  J: "f2 g2 a2@4 ~@2 e2 ~ a2@4 [a2,b2] f2", K: "c2 d2@2 ~ c2 d2@2 ~",
  L: "[e2 f2 g2@5 ~ d2@2 g2@3 ~ c2@4 f2@4 ~@2 f2 ~ f2@4 ~@2]/2", M: "f2 c2 f1@4 ~@2 f2 ~ f2@5 ~", N: "~@2 f2@6 d2@7 ~",
  O: "~@2 e2@5 ~ a2@7 ~", P: "~ f2@3 d2@3 ~", Q: "~ e2@3 a2@3 ~", R: "[~@2 f2@6 d2@5 ~ d3@4 e2@5 ~ a2@7 ~]/2",
  S: "[a2 g#2 g2@4 ~@2 c3@6 ~ g2 c2@2 f1@4 ~@2 f2 ~ f2@4 ~@2, ~@7 c3@3 ~@6]/2", T: "~ f2@2 ~ d2@3 ~",
  U: "~@2 e2@4 ~@2 a2@6 f2!2",
  V: "[a2 ~ f2@4 ~@2 d2@6 d3@4 e2@4 ~@2 a2@6 ~ e2 c2 ~ a#1@3 f2@3 a#1@6 ~@2, ~@5 a2 ~@2]/3",
  W: "~@2 g2@2 ~ g2@3 ~ g2@5 ~@2", X: "[~@2 c2@4 ~@2 d2@2 g2@3 ~ c2@4 f2@4 ~@2 f2 ~ f2@4 ~@2]/2", Y: "~ c2@2 ~@5",
})).s("gm_fretless_bass").gain(0.7).pan(0.4)

// chords · piano · "SLOWSTRING"
const piano = note("<~@34 A B@4 C@4 D E F@4 G H I J K L M N G O G O P Q R S@3 B@4 C@4 D E T@4 F@4 ~>".pickRestart({
  A: "~@5 d4@2 e4", B: "[~@13 e4@2 ~@14 f5@2 g5, ~ [a4,c5]@15 ~ [g4,b4,d5]@15, ~ f4@14 f4@14 ~@3]/4",
  C: "[~ a5@4 ~@6 a5@2 g5@2 f5@2 [e4,g4,b4]@8 [a4,c5,e5]@7, ~@2 [f4,c5]@31 ~@31, ~@2 a4 ~@61]/4", D: "~ [d5,f5,a5]@7",
  E: "~ [a4,c5]@4 b4@3, ~ f4@7", F: "[~ [f4,a4,c5]@8 ~@6 b4@2 [e4,c5,e5,g5]@15, ~@9 [f4,a4,c5]@8 ~@15]/4",
  G: "~@2 [f4,a4,c5]@5 ~ [d4,f4,a4]@8", H: "~@2 [g4,b4,d5]@5 ~ [a4,c5,e5]@8",
  I: "~@2 [f4,a4,c5]@6 ~ [d4,f4,a4]@7, ~@9 g4 ~@6", J: "~@3 d5@7 [a4,c5,e5]@6, ~@2 [g4,b4]@7 ~@7",
  K: "~@2 [f4,a4,c5]@7 ~ [d4,f4,a4]@6", L: "~@2 [g4,b4,d5]@7 ~ [a4,c5,e5]@6", M: "~ [c4,e4,g4]@7",
  N: "~ [a3,c4,e4]@7, ~@2 [f4,c5] ~@13", O: "~@2 [g4,b4,d5]@6 ~ [a4,c5,e5]@7", P: "~@2 [f4,a4,c5]@5 ~@2 [d4,f4,a4]@7",
  Q: "~@2 [g4,b4,d5]@6 ~ [a4,c5,e5]@6 ~", R: "~ [a#4,d5,f5]@7", S: "[~ [g4,b4,d5]@8 [c4,e4,g4]@12 d4@2 e4]/3",
  T: "[~ [f4,a4,c5]@8 ~@6 b4@2 ~@12 b4@3, ~@9 [f4,a4,c5]@8 [e4,c5,e5,g5]@15]/4", // F C
})).s("gm_piano").gain(0.16).pan(0.3)

// chords · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note("<~ A@2 B@4 C@4 D E F@4 G H I J K L M N G O G O P Q R S@2 ~@52>".pickRestart({
  A: "[~ [c4,e4,g4]@12 d4@2 e4]/2", B: "[~@13 e4@2 ~@14 f5@2 g5, ~ [a4,c5]@15 ~ [g4,b4,d5]@15, ~ f4@14 f4@14 ~@3]/4",
  C: "[~ a5@4 ~@6 a5@2 g5@2 f5@2 [e4,g4,b4]@8 [a4,c5,e5]@7, ~@2 [f4,c5]@31 ~@31, ~@2 a4 ~@61]/4", D: "~ [d5,f5,a5]@7",
  E: "~ [a4,c5]@4 b4@3, ~ f4@7", F: "[~ [f4,a4,c5]@8 ~@6 b4@2 [e4,c5,e5,g5]@15, ~@9 [f4,a4,c5]@8 ~@15]/4",
  G: "~@2 [f4,a4,c5]@5 ~ [d4,f4,a4]@8", H: "~@2 [g4,b4,d5]@5 ~ [a4,c5,e5]@8",
  I: "~@2 [f4,a4,c5]@6 ~ [d4,f4,a4]@7, ~@9 g4 ~@6", J: "~@3 d5@7 [a4,c5,e5]@6, ~@2 [g4,b4]@7 ~@7",
  K: "~@2 [f4,a4,c5]@7 ~ [d4,f4,a4]@6", L: "~@2 [g4,b4,d5]@7 ~ [a4,c5,e5]@6", M: "~ [c4,e4,g4]@7",
  N: "~ [a3,c4,e4]@7, ~@2 [f4,c5] ~@13", O: "~@2 [g4,b4,d5]@6 ~ [a4,c5,e5]@7", P: "~@2 [f4,a4,c5]@5 ~@2 [d4,f4,a4]@7",
  Q: "~@2 [g4,b4,d5]@6 ~ [a4,c5,e5]@6 ~", R: "~ [a#4,d5,f5]@7", S: "[~ [g4,b4,d5]@8 ~@7]/2",
})).s("gm_string_ensemble_2").gain(0.16).pan(0.3)

// chords · synth strings 1 · "SYN STR 1"
const synth_strings_1 = note(`<
  ~ A@2 B@4 C@4 D E F@4 G@2 H I H J ~@2 K L H M N L ~@2 A@2 B@4 C@4 D E F@4 G@2 H I H J ~@2 K L H M N L ~@2 A@2 B@4 C@4
  D E O@4 F@4 ~
>`.pickRestart({
  A: "[~ [c4,e4,g4]@12 d4@2 e4]/2", B: "[~@13 e4@2 ~@14 f5@2 g5, ~ [a4,c5]@15 ~ [g4,b4,d5]@15, ~ f4@14 f4@14 ~@3]/4",
  C: "[~ a5@4 ~@6 a5@2 g5@2 f5@2 [e4,g4,b4]@8 [a4,c5,e5]@7, ~@2 [f4,c5]@31 ~@31, ~@2 a4 ~@61]/4", D: "~ [d5,f5,a5]@7",
  E: "~ [a4,c5]@4 b4@3, ~ f4@7", F: "[~ [f4,a4,c5]@8 ~@6 b4@2 [c5,e5,g5]@15, ~@9 [f4,a4,c5]@8 ~@15]/4",
  G: "[~@2 [c5,e5,g5]@8 [a4,c5,e5]@8 [g4,b4,d5]@7 ~ [a4,c5,e5]@6]/2", H: "~@2 [c5,e5,g5]@7 ~ [a4,c5,e5]@6",
  I: "~ [g4,b4,d5]@4 [a4,c5,e5]@3", J: "~@2 [g4,b4,d5]@7 ~ [a4,c5,e5]@6", K: "~@2 [c5,e5,g5]@7 [a4,c5,e5]@7",
  L: "~@2 [g4,b4,d5]@7 [a4,c5,e5]@7", M: "~@2 [g4,b4,d5]@7 [a4,c5,e5]@7, ~@9 b4 ~@6",
  N: "~@2 [c5,e5,g5]@7 ~ [a4,c5,e5]@6, ~@2 [d5,f5] ~@13", // C Am Dm
  O: "[~ [f4,a4,c5]@8 ~@6 b4@2 ~@12 b4@3, ~@9 [f4,a4,c5]@8 [c5,e5,g5]@15]/4", // F C
})).s("gm_synth_strings_1").gain(0.13).pan(0.4)

// chords · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2_2 = note(`<
  ~ A@2 B@4 C@4 D E F@4 G H I J K L M N G O G O P Q R S@3 B@4 C@4 D E F@4 G H I J K L M N G O G O P Q R S@3 B@4 C@4 D E
  T@4 F@4 ~
>`.pickRestart({
  A: "[~ [c4,e4,g4]@12 d4@2 e4]/2", B: "[~@13 e4@2 ~@14 f5@2 g5, ~ [a4,c5]@15 ~ [g4,b4,d5]@15, ~ f4@14 f4@14 ~@3]/4",
  C: "[~ a5@4 ~@6 a5@2 g5@2 f5@2 [e4,g4,b4]@8 [a4,c5,e5]@7, ~@2 [f4,c5]@31 ~@31, ~@2 a4 ~@61]/4", D: "~ [d5,f5,a5]@7",
  E: "~ [a4,c5]@4 b4@3, ~ f4@7", F: "[~ [f4,a4,c5]@8 ~@6 b4@2 [c5,e5,g5]@15, ~@9 [f4,a4,c5]@8 ~@15]/4",
  G: "~@2 [f4,a4,c5]@5 ~ [d4,f4,a4]@8", H: "~@2 [g4,b4,d5]@5 ~ [a4,c5,e5]@8",
  I: "~@2 [f4,a4,c5]@6 ~ [d4,f4,a4]@7, ~@9 g4 ~@6", J: "~@3 d5@7 [a4,c5,e5]@6, ~@2 [g4,b4]@7 ~@7",
  K: "~@2 [f4,a4,c5]@7 ~ [d4,f4,a4]@6", L: "~@2 [g4,b4,d5]@7 ~ [a4,c5,e5]@6", M: "~ [c4,e4,g4]@7",
  N: "~ [a3,c4,e4]@7, ~@2 [f4,c5] ~@13", O: "~@2 [g4,b4,d5]@6 ~ [a4,c5,e5]@7", P: "~@2 [f4,a4,c5]@5 ~@2 [d4,f4,a4]@7",
  Q: "~@2 [g4,b4,d5]@6 ~ [a4,c5,e5]@6 ~", R: "~ [a#4,d5,f5]@7", S: "[~ [g4,b4,d5]@8 [c4,e4,g4]@12 d4@2 e4]/3",
  T: "[~ [f4,a4,c5]@8 ~@6 b4@2 ~@12 b4@3, ~@9 [f4,a4,c5]@8 [c5,e5,g5]@15]/4", // F C
})).s("gm_string_ensemble_2").gain(0.11)

// chords · epiano1 · "E.PIANO 1"
const epiano1 = note(`<
  ~ A@3 B C@2 D@3 E F G H@2 ~@3 I@2 J@2 ~@11 A@3 B C@2 D@3 E F G H@2 ~@3 I@2 J@2 ~@11 A@3 B C@2 D@3 E F G H@2 ~@2 H@2
  ~@3
>`.pickRestart({
  A: "[~ [c5,e5,g5]@10 ~@2 [b4,d5,f5]@2 [c5,e5,g5]@2 [f5,a5,c6]@3 [f5,a5,c6]@3 ~]/3", B: "~@2 [f5,a5,c6] ~@13",
  C: "[~ [e5,g5,b5]@10 ~@5]/2", // Em
  D: "[~@2 [a5,c6]@20 b5 ~@3 b5@4 ~@4 [e5,b5]@13 ~, ~ f5@14 ~@2 g5@5 ~@2, ~@11 c6@10 ~@3, ~@11 a5@4 a5@6 ~@3]/3", // Am E5
  E: "~ [a5,c6,e6]@6 ~", F: "~@2 [d5,f5,a5]@13 ~", G: "[d5,a5] ~@15, f5 ~@7",
  H: "[~@2 [f5,a5,c6]@12 ~@2 a5 [a5,c6] [f5,a5,c6]@13 ~, ~@15 f5@3 ~@14]/2", I: "[~@7 g5@2 ~@7]/2",
  J: "[~@12 b3@3 c4@3 ~@14]/2",
})).s("gm_epiano1").gain(0.31).pan(0.3)

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

// drums · snare
const snare = s("sd").struct("<~ [~@3 x ~@3 x]!82 ~@3>").gain(0.48)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~ [~@2 x ~ x ~ x ~ x!7 ~]!82 [~ x ~@6] ~@2>").gain(0.64)

// drums · open hat
const open_hat = s("oh").struct("<~@2 x!82 ~@2>").gain(0.72)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~ A B@6 A B@5 C B@3 C B@3 C B@3 C B@3 C B@2 A B@6 A B@5 C B@3 C B@3 C B@3 C B@3 C B@2 A B@6 A B@5 C B@3 C ~@3
>`.pickRestart({
  A: "~@6 x ~ x!4 ~ x!2 ~", B: "~@6 x ~ x!2 ~ x ~ x!2 ~", C: "~@6 x ~ x!2 ~ x!4 ~",
})).gain(0.72)

// drums · triangle
const triangle = s("triangles:35").struct("<[~@13 x!2 ~] [~@5 x!2 ~@6 x!2 ~]!82 ~@3>").gain(4.18)

stack(
  epiano2, bass, piano, string_ensemble_2, synth_strings_1, string_ensemble_2_2, epiano1, kick, snare, pedal_hat,
  open_hat, tambourine, triangle
)

More by Toni Braxton