Strudelify

To Deserve You

Bette Midler

KeyF majorTempo123 bpm
0:00/0:00
// To Deserve You — Bette Midler
// 123 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 128 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(123/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 · pad sweep · "#Clstl.Pa"
const pad_sweep = note(`<
  ~@4 A B C D E F G D A B ~@10 E F G D A B C D E F G D A B C D E F G D A B C D E F G D A B C D E F G D A B C D E F G D A
  B C D E F G D A B C D E F G D A B C D ~@8 E F G D A B C H ~@2 I J K L M J N O I J K L M J N O I J K L M P
>`.pickRestart({
  A: "[g3,bb3,d4]@2 ~@2 [g3,bb3,d4] ~@2 [g3,bb3,d4] ~@2 [g3,bb3,d4] ~@3 [g3,bb3,d4] ~", // Gm
  B: "[f3,bb3,d4]@2 ~@2 [f3,bb3,d4] ~@2 [f3,bb3,d4] ~@2 [f3,bb3,d4] ~@3 [f3,bb3,d4] ~", // Bb
  C: "[a3,c4,f4]@2 ~@2 [a3,c4,f4] ~@2 [a3,c4,f4] ~@2 [a3,c4,f4] ~@3 [a3,c4,f4] ~", // F
  D: "[g3,c4,e4]@2 ~@2 [g3,c4,e4] ~@2 [g3,c4,e4] ~@2 [g3,c4,e4] ~@3 [g3,c4,e4] ~", // C
  E: "[a3,d4,f4]@2 ~@2 [a3,d4,f4] ~@2 [a3,d4,f4] ~@2 [a3,d4,f4] ~@3 [a3,d4,f4] ~", // Dm
  F: "[bb3,d4,f4]@2 ~@2 [bb3,d4,f4] ~@2 [bb3,d4,f4] ~@2 [bb3,d4,f4] ~@3 [bb3,d4,f4] ~", // Bb
  G: "[a3,c4,e4]@2 ~@2 [a3,c4,e4] ~@2 [a3,c4,e4] ~@2 [a3,c4,e4] ~@3 [a3,c4,e4] ~", // Am
  H: "[g3,c4,e4]@2 ~@2 [g3,c4,e4] ~@2 [g3,c4,e4] ~@2 [g3,c4,e4] ~@5", // C
  I: "[bb3,db4,f4]@2 ~@2 [bb3,db4,f4] ~@2 [bb3,db4,f4] ~@2 [bb3,db4,f4] ~@3 [bb3,db4,f4] ~", // Bbm
  J: "[ab3,db4,f4]@2 ~@2 [ab3,db4,f4] ~@2 [ab3,db4,f4] ~@2 [ab3,db4,f4] ~@3 [ab3,db4,f4] ~", // Db
  K: "[ab3,b3,eb4]@2 ~@2 [ab3,b3,eb4] ~@2 [ab3,b3,eb4] ~@2 [ab3,b3,eb4] ~@3 [ab3,b3,eb4] ~", // Abm
  L: "[gb3,b3,eb4]@2 ~@2 [gb3,b3,eb4] ~@2 [gb3,b3,eb4] ~@2 [gb3,b3,eb4] ~@3 [gb3,b3,eb4] ~", // B
  M: "[bb3,db4,gb4]@2 ~@2 [bb3,db4,gb4] ~@2 [bb3,db4,gb4] ~@2 [bb3,db4,gb4] ~@3 [bb3,db4,gb4] ~", // Gb
  N: "[bb3,eb4,gb4]@2 ~@2 [bb3,eb4,gb4] ~@2 [bb3,eb4,gb4] ~@2 [bb3,eb4,gb4] ~@3 [bb3,eb4,gb4] ~", // Ebm
  O: "[b3,eb4,gb4]@2 ~@2 [b3,eb4,gb4] ~@2 [b3,eb4,gb4] ~@2 [b3,eb4,gb4] ~@3 [b3,eb4,gb4] ~", // B
  P: "[ab3,db4,f4]@2 ~@2 [ab3,db4,f4] ~@11", // Db
})).s("gm_pad_sweep").gain(0.24).pan(0.6)

// bass · synth bass 1 · "#TB303 Ba"
const bass = note(`<
  ~@8 A B C D E B F G A B C D E B F G A B C D E B F G A B C D E B F G A B C D E B F G A B C D E B F G A B C D E B F G A
  B C D E B F G A B C D E B F G ~@8 A B C D E B F G A B C D E B F G H ~ B I J K L F M K B I J K L F M K B I J K L F
>`.pickRestart({
  A: "d1@2 ~@2 d1@2 ~ d1@2 ~ d1@2 ~@2 d1 ~", B: "bb1@2 ~@2 bb1@2 ~ bb1@2 ~ bb1@2 ~@2 bb1 ~",
  C: "a1@2 ~@2 a1@2 ~ a1@2 ~ a1@2 ~@2 a1 ~", D: "c2@2 ~@2 c2@2 ~ c2@2 ~ c2@2 ~@2 c2 ~",
  E: "g1@2 ~@2 g1@2 ~ g1@2 ~ g1@2 ~@2 g1 ~", F: "f1@2 ~@2 f1@2 ~ f1@2 ~ f1@2 ~@2 f1 ~",
  G: "e1@2 ~@2 e1@2 ~ e1@2 ~ e1@2 ~@2 e1 ~", H: "d1 ~@7", I: "db2@2 ~@2 db2@2 ~ db2@2 ~ db2@2 ~@2 db2 ~",
  J: "ab1@2 ~@2 ab1@2 ~ ab1@2 ~ ab1@2 ~@2 ab1 ~", K: "b1@2 ~@2 b1@2 ~ b1@2 ~ b1@2 ~@2 b1 ~",
  L: "gb1@2 ~@2 gb1@2 ~ gb1@2 ~ gb1@2 ~@2 gb1 ~", M: "eb1@2 ~@2 eb1@2 ~ eb1@2 ~ eb1@2 ~@2 eb1 ~",
})).s("gm_synth_bass_1").gain(0.42)

// chords · pad warm · "#Soft Pad"
const pad_warm = note(`<
  A@2 B@4 C@2 A@2 B@4 C@2 ~@16 A@2 B@4 C@2 A@2 B@4 C@2 ~@16 A@2 B@4 C@2 A@2 B@4 C@2 A@2 B@4 C@2 A@2 B@4 C@2 ~@10 D@4 E@2
  F@2 D@4 E@2 F@2 D@4 E@2
>`.pickRestart({
  A: "[a3 bb3, [d4,f4]]/2", B: "[a3 ~@2 f3, [c4,e4] [bb3,d4], ~ g3@2 ~]/4", C: "[[a3,f4] [g3,e4], c4]/2",
  D: "[bb3 ~@2 gb3, [db4,f4] [b3,eb4], ~ ab3@2 ~]/4", E: "[[bb3,gb4] [ab3,f4], db4]/2", F: "[bb3 b3, [eb4,gb4]]/2",
})).s("gm_pad_warm").gain(0.14)

// other · string ensemble 1 · "#St.Strin"
const string_ensemble_1 = note(`<
  ~@48 A B A C A B A C ~@16 A B A C A B A C A B A C A B A C ~@7 D ~@24 E F E G E F E G
>`.pickRestart({
  A: "d5 ~ a5 ~ g5 ~ a5 ~ d5 ~ a5 ~ g5 ~ a5 ~", B: "d5 ~ bb5 ~ a5 ~ bb5 ~ d5 ~ bb5 ~ a5 ~ bb5 ~",
  C: "d5 ~ a5 ~ g5 ~ a5 ~ bb5 ~ a5 ~ g5 ~ a5 ~", D: "~@8 bb5 ~ a5 ~ g5 ~ a5 ~",
  E: "eb5 ~ bb5 ~ ab5 ~ bb5 ~ eb5 ~ bb5 ~ ab5 ~ bb5 ~", F: "eb5 ~ b5 ~ bb5 ~ b5 ~ eb5 ~ b5 ~ bb5 ~ b5 ~",
  G: "eb5 ~ bb5 ~ ab5 ~ bb5 ~ b5 ~ bb5 ~ ab5 ~ bb5 ~",
})).s("gm_string_ensemble_1").gain(0.42)

// chords · synth brass 1 · "Syn.Brass"
const synth_brass_1 = note(`<
  ~@14 A B ~@15 C D E F B G H A B D E F B G H A B D E F B G H A B D E F B G H A B ~@24 D E F B G H A B ~@10 I J K L M J
  N O I J K L M J N O I J K L M J
>`.pickRestart({
  A: "[f3,a3,c4]@2 ~@2 [f3,a3,c4] ~@2 [f3,a3,c4] ~@2 [f3,a3,c4] ~@3 [f3,a3,c4] ~", // F
  B: "[e3,g3,c4]@2 ~@2 [e3,g3,c4] ~@2 [e3,g3,c4] ~@2 [e3,g3,c4] ~@3 [e3,g3,c4] ~", C: "~@14 [e3,g3,c4] ~",
  D: "[f3,a3,d4]@2 ~@2 [f3,a3,d4] ~@2 [f3,a3,d4] ~@2 [f3,a3,d4] ~@3 [f3,a3,d4] ~", // Dm
  E: "[f3,bb3,d4]@2 ~@2 [f3,bb3,d4] ~@2 [f3,bb3,d4] ~@2 [f3,bb3,d4] ~@3 [f3,bb3,d4] ~", // Bb
  F: "[e3,a3,c4]@2 ~@2 [e3,a3,c4] ~@2 [e3,a3,c4] ~@2 [e3,a3,c4] ~@3 [e3,a3,c4] ~", // Am
  G: "[d3,g3,bb3]@2 ~@2 [d3,g3,bb3] ~@2 [d3,g3,bb3] ~@2 [d3,g3,bb3] ~@3 [d3,g3,bb3] ~", // Gm
  H: "[d3,f3,bb3]@2 ~@2 [d3,f3,bb3] ~@2 [d3,f3,bb3] ~@2 [d3,f3,bb3] ~@3 [d3,f3,bb3] ~", // Bb
  I: "[f3,bb3,db4]@2 ~@2 [f3,bb3,db4] ~@2 [f3,bb3,db4] ~@2 [f3,bb3,db4] ~@3 [f3,bb3,db4] ~", // Bbm
  J: "[f3,ab3,db4]@2 ~@2 [f3,ab3,db4] ~@2 [f3,ab3,db4] ~@2 [f3,ab3,db4] ~@3 [f3,ab3,db4] ~", // Db
  K: "[eb3,ab3,b3]@2 ~@2 [eb3,ab3,b3] ~@2 [eb3,ab3,b3] ~@2 [eb3,ab3,b3] ~@3 [eb3,ab3,b3] ~", // Abm
  L: "[eb3,gb3,b3]@2 ~@2 [eb3,gb3,b3] ~@2 [eb3,gb3,b3] ~@2 [eb3,gb3,b3] ~@3 [eb3,gb3,b3] ~", // B
  M: "[gb3,bb3,db4]@2 ~@2 [gb3,bb3,db4] ~@2 [gb3,bb3,db4] ~@2 [gb3,bb3,db4] ~@3 [gb3,bb3,db4] ~", // Gb
  N: "[gb3,bb3,eb4]@2 ~@2 [gb3,bb3,eb4] ~@2 [gb3,bb3,eb4] ~@2 [gb3,bb3,eb4] ~@3 [gb3,bb3,eb4] ~", // Ebm
  O: "[gb3,b3,eb4]@2 ~@2 [gb3,b3,eb4] ~@2 [gb3,b3,eb4] ~@2 [gb3,b3,eb4] ~@3 [gb3,b3,eb4] ~", // B
})).s("gm_synth_brass_1").gain(0.2).pan(0.3)

// chords · rock organ · "#Rtr.Orga"
const rock_organ = note(`<
  ~@16 A ~@7 A ~@3 B ~@3 A ~@31 A ~@3 B ~@3 A ~@3 B ~@3 A ~@3 B ~@11 A ~@3 B ~@3 A ~@3 C ~@3 D ~@3 C ~@3 D ~@7
>`.pickRestart({
  A: "[f4,a4,d5,f5]", B: "[g4,bb4,d5,g5]", C: "[ab4,b4,eb5,ab5]", D: "[gb4,bb4,eb5,gb5]",
})).s("gm_rock_organ").gain(0.36)

// other · synth strings 2 · "Syn.Strin"
const synth_strings_2 = note(`<
  ~@34 A B C D E ~@5 F G H ~@19 A B C D E ~@5 F G H ~@29 I J K ~@5 I J K ~@9
>`.pickRestart({
  A: "d5@3 e5@3 c5@2", B: "g4", C: "~@4 bb3@3 d4", D: "f4 g4", E: "f4@5 ~@11", F: "~@2 d4 g4", G: "bb4 c5", H: "f4 ~",
  I: "~@2 eb4 ab4", J: "b4 db5", K: "gb4 ~",
})).s("gm_synth_strings_2").gain(0.42)

// other · pad metallic · "#Tine Pad"
const pad_metallic = note("<~@42 A B ~@30 A B ~@22 C ~@15 D E ~@12>".pickRestart({
  A: "~@3 c5 g4 f4 e4 c4", B: "g3@7 ~@9", C: "~@3 g5@2 ~@3, ~ c5@2 ~@5, ~ d5 ~@2", D: "f5@2 eb5@2 db5@2 ab4 gb4",
  E: "f4@3 ~",
})).s("gm_pad_metallic").gain(0.36)

// drums · kick
const kick = s("bd").struct("<~@8 A@43 ~ A@2 ~@2 A@24 ~@8 A@16 B ~ A@22>".pickRestart({
  A: "x!4", B: "x",
})).gain(0.56)

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@80 [x ~@3 x!2 ~ x]!8 ~@40>").gain(0.32)

// drums · snare
const snare = s("sd").struct("<~@8 A@8 B@16 C@19 B C@2 B@2 C@8 A@16 D@8 A@8 C@8 A ~ A@14 C@8>".pickRestart({
  A: "~@7 x ~@8", B: "x!3 ~ x ~ x!5 ~ x ~ x ~", C: "~ x ~@4 x!2 ~@2 x ~@3 x ~", D: "x!5 ~ x!7 ~ x!2",
})).gain(0.16)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@32 A@19 ~ A@2 ~@2 A@8 ~@32 A@8 ~@16 A@8>".pickRestart({
  A: "~@2 x ~@6 x ~@6",
})).gain(0.08)

// drums · clap
const clap = s("cp").struct("<~@8 A@8 ~@16 A@19 ~ A@2 ~@2 A@24 ~@8 A@16 ~@2 A@22>".pickRestart({
  A: "~ x ~ x",
})).gain(0.48)

// drums · low tom
const low_tom = s("lt").struct("<~@105 [~@11 x!2 ~ x ~] ~@22>").gain(0.56)

// drums · hihat
const hihat = s("hh").struct("<~@8 A@43 B A@2 C D A@24 E@8 A@16 C ~ A@21 F>".pickRestart({
  A: "x ~@3 x ~@3 x ~@3 x ~@2 x", B: "x ~@14 x", C: "x", D: "~@15 x", E: "x!8", F: "x!4",
})).gain(0.48)

// drums · mid tom
const mid_tom = s("mt").struct("<~@105 [~@4 x ~ x!3 ~ x ~@5] ~@22>").gain(0.4)

// drums · open hat
const open_hat = s("oh").struct("<~@8 A@43 ~ A@2 ~@2 A@24 ~@8 A@16 ~@2 A@22>".pickRestart({
  A: "~ x ~ x ~ x ~ x",
})).gain(0.48)

// drums · high tom
const high_tom = s("ht").struct("<~@104 [~@8 x ~@2 x ~@2 x!2] [x!2 ~ x ~@12] ~@22>").gain(0.48)

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

// drums · tambourine
const tambourine = s("tb").struct("<~@8 A@43 ~ A@2 ~@2 A@24 ~@8 A@16 ~@2 A@21 B>".pickRestart({
  A: "x!16", B: "x!15 ~",
})).gain(0.16)

// drums · shaker
const shaker = s("sh").struct("<~@4 A@47 ~ A@2 ~@2 A@24 ~@8 A@16 ~@2 A@21 B>".pickRestart({
  A: "x!16", B: "x!15 ~",
})).gain(0.4)

// drums · rim
const rim = s("rim").struct("<~@8 A@43 ~ A@2 ~@2 A@24 ~@8 A@16 B ~ A@22>".pickRestart({
  A: "x!4", B: "x",
})).gain(0.4)

stack(
  pad_sweep, bass, pad_warm, string_ensemble_1, synth_brass_1, rock_organ, synth_strings_2, pad_metallic, kick,
  kick_soft, snare, snare_soft, clap, low_tom, hihat, mid_tom, open_hat, high_tom, crash, tambourine, shaker, rim
)

More by Bette Midler