Strudelify

Don't Cry Out Loud

Melissa Manchester

KeyD majorTempo88 bpm
0:00/0:00
// Don't Cry Out Loud — Melissa Manchester
// 88 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 79 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(88/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(`<
  A@2 B@2 C D E F G H I@3 J K L M N O L P Q@2 R B@2 C D E F G H I@3 J K L M N O L P S@2 T U V W X@2 Y Z@2 U V W X@2 Y
  Z@2 U V W X@2 Y Z@2 U V W X@2 Y AA@3
>`.pickRestart({
  A: "[a3,d4,f#4]@4 [a3,d4,f#4]@4 [a3,d4,f#4]@4 [a3,d4,f#4] [b3,d4,g4]@3, d2", // D G
  B: "[d4 c#4 d4@2 c#4 d4@2 c#4 d4 c#4@2 ~@3 e4 ~ f#2@4 f#2@4 f#2@4 ~@2 a3!2, [f#3,a3] ~, d2@4 d2@4 d2@3 d4@3 ~ c#4@5 ~@12, ~@3 d2 ~@3 f#2]/2", // F#m
  C: "g4 f#4 g4@2 ~ f#4 ~@4 f#4@2 d4@2 e4@2, e2!2 a2!2, ~@3 g4@2 ~@3",
  D: "e4@2 f#4@6 [c#4,e4,a4]@2 [d4,f#4,a4]@4 a3!2, [d2,a3,d4] d3", // A D D5
  E: "d4 c#4 d4 c#4 [d2,d4]@3 c#4 d4 c#4@3 d4@2 e4@2, [f#3,a3], d2 ~ d2!2", // D F#m
  F: "f#2@4 f#2@4 f#2@4 ~@2 a3!2, [e3,a3]@7 ~, c#4@3 f#2", // A5
  G: "g4@2 f#4 ~@2 f#4 ~@4 f#4@2 d4@2 e4@2, [b3,d4] [g3,b3], e2@3 g4@2 ~ g4@4 ~@6, ~ e2 a2!2", // Bm G
  H: "e4 ~@3 d3@2 ~ f#4, [a3,d4]@3 [c#3,a3,c#4], d2 ~, ~ f#4@5 ~@2", // D5 F#m
  I: "[b4@2 f#4 f#4@3 e4 ~@2 f#4@3 f#4 g4 ~@2 f#2@6 f#2@2 ~@8 d4@2 e4 d4@2 b3 b2@2 ~@2 e4@2 ~@2 e4@2, [b3,d4]@8 [a3,c#4]@5 a3@5 ~@6, b2@3 b2 b2@4 ~@4 f#2@4 b2@3 ~ [e2,g#3]@4, ~@7 f#4@2 ~@5 a4@14 c#4@4 ~@8 d4@4 d4@4, ~@15 f#4@2 ~@2 f#4@2 ~@3]/3", // Bm A E
  J: "a2@3 a2 [g3,c#4]@3 a3, e4@3 ~, [g3,d4] a2", K: "d3@3 d3 e5@3 c#5, [d4,f#4,a4] [c#3,e4,a4]",
  L: "b2@6 b2@2 ~@3 [f#4,a4]!2 [e4,g4] [d4,f#4]@2, [d4,f#4,b4,d5] b2", // F#m Em D Bm
  M: "e2@6 e2@2 ~@4 a4@2 g4 f#4, g4@3 ~, [b3,e4] [e2,b3,d#4]", // E5 Emaj7
  N: "g4@2 ~ a2 [g3,b3,d4]@2 [g3,c#4,e4]@2, [b3,d4] ~, a2@3 ~ a2@4, ~ f#4 ~@2", // G C#dim Bm
  O: "a4@2 ~ d3 e5@3 c#5, [d4,f#4] ~, d3@3 ~ [c#3,e4,a4]@4, ~ a4 ~@2", // D A
  P: "e2@6 e2@2 b3@3 b3 a4@2 g4 f#4, g4@3 [b3,d#4], [b3,e4] e2", // B E5
  Q: "[g4@4 ~@2 a2@2 [a2,g3,b3,d4]@4 [a2,g3,b3,d4,e4]@2 a#3 b3 a#3 b3 a#3 b3 a#3 b3 a#3 b3 a#3 b3 a#3 b3 a#3 b3 a#3 b3, [b3,d4] ~@3, a2@3 ~@4 [b2,d#4,f#4]@9, ~ f#4 ~@6]/2", // G Em7 Bm B
  R: "a3 b3 a3 b3 a3 b3 a3 b3 a3 b3 a3 b3 a3 b3 a3 b3, [a2,e3,d4,g4]", // Asus4
  S: "[g4@2 ~ a2 [a2,d4,e4,g4,b4]@2 [b2,d4,g4,a4,b4]@3 [a#2,d4,f#4,g#4,a#4] [a#2,d4,f#4,g#4,a#4]@2 [a#2,d4,f#4,g#4,a#4] [a#2,d4,f#4,g#4,a#4]@2 [a#2,d4,f#4,g#4,a#4], [b3,d4,e4] ~@3, a2@3 ~@13, ~ a4 ~@6]/2", // Em7 G A#aug E7
  T: "d#2@6 d#2@2 ~@2 a#4@2 [f4,a#4,f5]@3 d5, [a#3,d#4,g4] d2, ~@2 [a#3,f4] ~", // A#5 D# A#5
  U: "c2@6 c2@2 ~@2 [g4,a#4]@2 [g4,a#4] [f4,g#4] [d#4,g4]@2, [d#4,g4,c5,d#5] c2", // Gm Fm D# Cm
  V: "f2@6 f2@2 ~@2 a#4@4 g#4 g4, [c4,f4,g#4] [f2,c4,e4]", // Fm Fmaj7
  W: "g#4@2 ~ a#2 [g#3,c4,d#4]@2 [g#3,d4,f4]@2, [c4,d#4] ~, a#2@3 ~ a#2@4, ~ g4 ~@2", // G# Ddim Cm
  X: "[~@6 d#2@2 [d2,f4,a#4]@8 ~@2 d#5@4 [c2,c5]@2 [d#4,g4,d#5]@3 [d#4,g4] a#4!2 a#4@2, [a#3,d#4,g4]@2 ~@2 g4@2 ~ [d#4,g4], d#2@3 ~@5 [c2,c5]@3 ~ c2@4, ~@2 a#4@2 f5@5 ~@7]/2", // A# C D# C
  Y: "f2@6 f2@2 ~@3 g#4 a#4@2 g#4 g4, [c4,f4,g#4] [f2,c4,e4]", // Fm Fmaj7
  Z: "[g#4@2 ~ a#2 [d#4,f4,g#4,c5]@2 [f4,g#4,a#4,d5] ~ d#2@3 d#2 ~ g5@2 f5, [c4,d#4]@4 ~@3 [d#4,g4,a#4]@5 ~@4, a#2@3 ~ a#2@4 ~@4 [d2,f4,a#4]@4, ~ a#4 ~@6]/2", // Fm7 A#7 Cm D# A#
  AA: "[g#4@2 ~ a#2 [d#4,f4,g#4,c5]@2 [f4,g#4,a#4,d5] ~ d#2@9 ~@7, [c4,d#4]@4 ~@3 [d#4,g4,a#4]@10 ~@7, a#2@3 ~ a#2@4 ~@16, ~ a#4 ~@10]/3", // Fm7 A#7 Cm D#
})).s("gm_piano").gain(0.4)

// bass · electric bass finger
const bass = note(`<
  A@2 B C D E F G D H I C J K L M N O L M N P@2 Q F G R E F G D H I C J S L M N T L M N T U V W X Y V W X Y V W X Z V W
  X Y V W X Y V W X AA V W X AA V W X AA AB AC
>`.pickRestart({
  A: "d2@12 d2@3 ~", B: "d2@8 d2@6 a1 d2", C: "f#1@5 ~ f#1 ~ f#1@7 ~", D: "e1@7 ~ a1@6 a2!2",
  E: "d2@5 ~ d2 ~ d2@6 f#2 a2", F: "d2@8 d2@6 a2 d3", G: "f#2@5 ~ f#2 ~ f#2@7 ~", H: "d2@8 d2@4 c#2@2 c#2!2",
  I: "b1@8 b1@6 f#1 b1", J: "b1@7 ~ e1@6 e2!2", K: "e1@8 a1@6 e1 a1", L: "d2@4 ~@2 d2 ~ c#2@4 ~@3 c#2",
  M: "b1@4 ~@2 b1 ~ b1@4 ~@2 d2 f#1", N: "e1@4 ~@2 e1 ~ e1@4 ~ e2 ~ e2", O: "a1@4 ~@2 a1 ~ a1@4 a1@4",
  P: "[e1@4 ~@2 e1 ~@7 b1@10 b1@6 f#1 b1, ~ e1 ~@2]/2", Q: "a1@8 a1@6 b2 a2", R: "e2@7 ~ a1@6 a2!2", S: "a1!2",
  T: "a1@4 ~@2 a1 ~ a1@7 ~", U: "~ a#1@3 a#1@4, a1 ~@3", V: "d#2@4 ~@2 d#2 ~ d2@4 ~@3 d2",
  W: "c2@4 ~@2 c2 ~ c2@4 ~@2 d#2 g1", X: "f1@4 ~@2 f1 ~ f1@4 ~ f2 ~ f2", Y: "a#1@3 a#1", Z: "a#1@8 a#1@4 a#1@2 f2 a#2",
  AA: "a#1", AB: "d#2@4 ~@2 d#2 ~ d#2@4 ~@2 a#2 d#3", AC: "d#2",
})).s("gm_electric_bass_finger").gain(0.35)

// chords · pad warm · F#m7 Bm7
const pad_warm = note("<[[a3,e4,f#4,a4]@12 [d4,a4,b4,d5]@3 ~]!2 ~@77>").s("gm_pad_warm").gain(0.2)

// chords · synth strings 2
const synth_strings_2 = note("<~@2 A B C D A B C E ~@11 F@2 G ~@4 A B C ~@48>".pickRestart({
  A: "[a3,d4,f#4]", B: "[c#4,f#4,a4]", C: "[b3,e4,g4,b4]!2", D: "[a3,d4,f#4,a4]", E: "[a3,d4,f#4]@6 [c#4,f#4,a4] ~",
  F: "[~@7 [f#4,b4,d#5]@9]/2", G: "[b3,e4,g4]@7 ~",
})).s("gm_synth_strings_2").gain(0.24)

// chords · epiano1
const epiano1 = note("<~@10 A B C D ~@10 E F G H ~@3 I A B C ~@21 J ~@22>".pickRestart({
  A: "[f#4,b4,d5,f#5,b5,d6]@15 ~", B: "[c#4,f#4,a4,c#5,f#5,f#6]@15 ~",
  C: "[f#4,b4,d5,f#5,a5,b5,f#6]@4 [b3,d4,e4,g#4,b4,e5,b5]@3 ~", D: "[b3,e4,g4,b4,e5,g5]@4 [g4,a4,c#5,g5,a5,c#6]@3 ~",
  E: "[a3,d4,f#4,a4,d5,f#5]@15 ~", F: "[c#4,f#4,a4,c#5,e5,f#5,f#6]@15 ~",
  G: "[b3,d4,e4,g4,b4,e5,b5]@4 [b3,d4,e4,g4,b4,e5,b5]@3 ~", H: "[a3,d4,f#4,d5,a5,d6]@11 ~ [a3,d4,f#4,a4,d5,a5]@4",
  I: "[a3,d4,f#4,a4,d5,f#5]@6 [c#4,f#4,a4,c#5,f#5,a5] ~", // D F#m
  J: "[c4,f4,g#4,c5,f5] ~@11 [a#4,d5,g#5,a#5,d6]@2 ~@2, g#5@12 g#4 ~@3", // Fm A#7
})).s("gm_epiano1").gain(0.2)

// chords · synth strings 2
const synth_strings_2_2 = note("<~@10 A B C D ~@10 E B F G ~@3 H A B I@8 ~@14 J ~@22>".pickRestart({
  A: "[f#4,b4,d5]", B: "[c#4,f#4,a4]", C: "[f#4,b4,d5,f#5] [d4,e4,g#4,d5]", D: "[b3,e4,g4]@4 [g4,a4,c#5]@3 ~",
  E: "[a3,d4,f#4]", F: "[b3,e4,g4,b4]!2", G: "[a3,d4,f#4,a4]", H: "[a3,d4,f#4]@6 [c#4,f#4,a4] ~",
  I: "[[f#4,b4,d5,f#5] [g#4,d5]@15]/8", J: "[c4,f4]@6 a#4 ~, g#4@7 ~",
})).s("gm_synth_strings_2").gain(0.2)

// chords · string ensemble 2
const string_ensemble_2 = note(`<
  ~@14 A B C D A B C E ~@13 F A B G H A B G E I J K L M J K L N J K O P@4 Q@4 P@4 R@4 P@4 S T U
>`.pickRestart({
  A: "[d4,f#4,a4,d5,a5] [a4,c#5,e5,a5,e6]", B: "[f#4,b4,d5,f#6,b6]@15 ~, [e4,a4,c#5,e6,a6] ~@15",
  C: "[b3,e4,g4,b4,g5] [b3,d#4,e4,g4,b4,g5], [f#4,d5,f#5,d6] ~@15", // Em D
  D: "[b3,d4,e4,g4,b4,e5,b5]@3 [e4,a4,c#5,e5,g5,a5,e6], d#4 ~@15", E: "[b3,d4,e4,g4,b4,e5,b5]@15 ~, d#4 ~@15",
  F: "[b3,e4,g4,b5,e6] [g4,a4,c#5,g6,a6]", G: "[b3,e4,g4,b4,g5]@8 [b3,d#4,e4,g4,b4,g5]@7 ~, [f#4,d5,f#5,d6] ~@15",
  H: "[b3,d4,e4,g4,b4,e5,b5]@8 [e4,a4,c#5,e5,g5,a5,e6]@7 ~, d#4 ~@15", // Em7 A7
  I: "~ [g#4,a#4,d5,g#6,a#6]@3 [g#4,a#4,d5,g#6,a#6]@4, [b3,e4,g4,b5,e6] ~@3", // A#7 Em
  J: "[d#4,g4,a#4,d#5,a#5] [a#4,d5,f5,a#5,f6]", K: "[g3,c4,d#4,g5,c6]@15 ~, [f4,a#4,d5,f6,a#6] ~@15",
  L: "[c4,f4,g#4,c5,g#5] [c4,f4,g#4,c5,e5,g#5], [g3,d#4,g4,d#5] ~@15", M: "[c4,f4,g#4,c5,e5,f5,c6] ~@15",
  N: "[c4,f4,g#4,c6,f6]@3 [g#4,a#4,d5,g#6,a#6], [c5,e5,f5] ~@15", // Fm A#7 Fmaj7
  O: "[c4,f4,g#4,c5,g#5]@8 [c4,f4,g#4,c5,e5,g#5]@7 ~, [g3,d#4,g4,d#5] ~@15", // Fm Cm
  P: "[~@2 [d#4,g4,a#4,d#5,a#5] [a#4,d5,a#5,f6] [g3,c4,d#4,f4,g5]@2 [c4,f4,g#4,c5,g#5] [c4,f4,g#4,c5,e5,g#5], e5@7 ~, [g#4,c5]@32 [a#4,d5,f6,a#6] ~@15 [g3,d#4,g4,d#5] ~@15, [c4,f4,c6] c6, f5@3 f5@5]/4", // D# A# Cm Fm G# A# Cm F5
  Q: "[[g#4,f6]@3 [a#4,d5,g#6,a#6] [d#4,g4,a#4,d#5,a#5]@2 [a#4,d5,a#5,f6]@2 [g3,c4,d#4,f4,g5]@4 [c4,f4,g#4,c5,g#5]@2 [c4,f4,g#4,c5,e5,g#5]@2, e5@7 ~, c5 c6, [c4,f4,c6]@3 f5@5, f5@12 g#4@20 [a#4,d5,f6,a#6] ~@15 [g3,d#4,g4,d#5] ~@15]/4", // C# A#7 D# A# Cm Fm F5 A# …
  R: "[f6@2 [d#4,g4,a#4,d#5,a#5] [a#4,d5,a#5,f6] [g3,c4,d#4,f4,g5]@2 [c4,f4,g#4,c5,g#5] [c4,f4,g#4,c5,e5,g#5], e5@7 ~, [g#4,c5]@32 [a#4,d5,f6,a#6] ~@15 [g3,d#4,g4,d#5] ~@15, [c4,f4,c6] c6, f5@3 f5@5]/4", // D# A# Cm Fm G# A# Cm F5
  S: "[c4,f4,g#4,c6,f6], e5 ~@15", T: "[d#4,g4,a#4,d#5,a#5]", U: "[a#3,d#4,g4,a#5,d#6]",
})).s("gm_string_ensemble_2").gain(0.2)

// chords · epiano2
const epiano2 = note(`<
  ~@14 A B C D A B C E ~@13 F A B C G A B C E H I J K ~ I J K L I J K ~ I J K L I J K ~ I J K M I J K ~ I J K M ~@2
>`.pickRestart({
  A: "[d4,f#4,a4] [a4,c#5,e5]", B: "[b4,d5,f#5,b5]", C: "[e4,g4,b4] [d#4,e4,g4,b4]",
  D: "[b3,d4,e4,g4]@3 [e4,a4,c#5,g5]", E: "[b3,d4,e4,g4]", F: "[g4,b4] [a4,c#5,g5], e4 ~@15",
  G: "[b3,d4,e4,g4] [e4,a4,c#5,g5]", H: "~ [a#4,d5,g#5]@3 [a#4,d5,g#5]@4, [e4,g4,b4] ~@3",
  I: "[d#4,g4,a#4] [a#4,d5,f5]", J: "[c4,d#4,g4,c5]", K: "[f4,g#4,c5] [f4,g#4,c5,e5]", L: "[f4,g#4,c5]@3 [a#4,d5,g#5]",
  M: "[f4,g#4,c5]", // Fm
})).s("gm_epiano2").gain(0.2)

// chords · string ensemble 2 · Fm A#7 Fm A#7 Fm
const string_ensemble_2_2 = note(`<
  ~@48
  [[c4,f4,g#4,c6,f6]@3 [g#4,a#4,d5,g#6,a#6]]
  ~@15
  [[c4,f4,g#4,c6,f6]@3 [g#4,a#4,d5,g#6,a#6]]
  ~@7
  [[c4,f4,g#4,c6,f6]]
  ~@6
>`).s("gm_string_ensemble_2").gain(0.24)

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

// drums · rim · soft notes
const rim_soft = s("rim").struct(`<
  ~@3 A ~ A ~ A ~@3 A ~@3 B ~@3 B ~@5 A ~ A ~ A ~@3 A ~@3 B ~@3 B ~@4 B ~@3 B ~@3 B ~@3 B ~@3 B ~@3 B ~@3 B ~@3 B ~@4
>`.pickRestart({
  A: "~@15 x", B: "~@13 x!3",
})).gain(0.07)

// drums · kick
const kick = s("bd").struct("<[~ x]!2 [x!2]!19 [x ~@3 x ~@2 x] [~ x] [x!2]!55 x>").gain(0.25)

// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
  A@2 ~ B ~ B ~ B ~ C ~ B ~ C B@8 ~ C ~ B ~ B ~ B ~ C ~ B ~@2 B@8 ~ B@3 ~ B@3 ~ B@3 C B@3 ~ B@3 ~ B@3 ~ B@3 ~ B@3 ~ B ~
>`.pickRestart({
  A: "~@7 x ~@8", B: "~@3 x ~@4", C: "~@11 x ~@4",
})).gain(0.14)

// drums · snare
const snare = s("sd").struct("<~@14 A@8 ~@13 A@9 B A@11 ~ A@21 ~>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@4 x ~",
})).gain(0.32)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@35 A ~@8 A ~@3 A ~@3 A ~@7 A ~@3 A ~@3 A ~@3 A ~@3 A ~@2>".pickRestart({
  A: "~@11 x ~@4",
})).gain(0.22)

// drums · low tom
const low_tom = s("lt").struct(`<
  A@2 ~@7 A ~@3 A ~@9 A ~@7 A ~@3 B ~@8 B ~@3 B ~@3 B ~@3 A ~@3 B ~@3 B ~@3 B ~@3 B ~@3 B A ~
>`.pickRestart({
  A: "~@14 x!2", B: "~@13 x!2 ~",
})).gain(0.22)

// drums · hihat
const hihat = s("hh").struct(`<
  A@2 B@7 C B@3 C D@7 E F C B@7 C B@3 G D@8 H D@3 G D@3 G D@3 C D@3 G D@3 G D@3 G D@3 G D@3 G D ~
>`.pickRestart({
  A: "~ x", B: "x!4", C: "x!3 ~", D: "~ x ~ x", E: "~@2 x ~@3 x!2", F: "~ x!3", G: "~@2 x ~@2 x ~@2",
  H: "~ x ~@3 x ~@2",
})).gain(0.22)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@2 A B@3 A B@2 C A B@2 C ~@8 A C A B@3 A B@2 C A B@2 ~@21 C ~@22>".pickRestart({
  A: "~ x ~@3 x ~ x", B: "~ x ~ x ~ x ~ x", C: "~ x ~@6",
})).gain(0.07)

// drums · mid tom
const mid_tom = s("mt").struct("<A@2 ~@7 A ~@3 A ~@9 A ~@7 A ~@24 A ~@22>".pickRestart({
  A: "~@3 x",
})).gain(0.25)

// drums · mid tom · soft notes
const mid_tom_soft = s("mt").struct("<[~@11 x ~@4]!2 ~@77>").gain(0.07)

// drums · open hat
const open_hat = s("oh").struct(`<
  A@2 ~@7 B ~@3 B ~@9 B ~@7 B ~@3 C ~@8 C ~@3 C ~@3 C ~@3 B ~@3 C ~@3 C ~@3 C ~@3 C ~@3 C D ~
>`.pickRestart({
  A: "~@7 x ~@8", B: "~@15 x", C: "~@9 x ~@5 x", D: "~@11 x ~@4",
})).gain(0.14)

// drums · open hat · soft notes
const open_hat_soft = s("oh").struct("<~@2 A ~@3 A ~@2 A@2 ~@2 A ~@8 A@3 ~@3 A ~@2 A@2 ~@23 A ~@22>".pickRestart({
  A: "~@3 x ~@4",
})).gain(0.07)

// … 39 more lines

More by Melissa Manchester