Strudelify

One Hand, One Heart

Debbie Gibson

KeyE♭ majorTempo120 bpm
0:00/0:00
// One Hand, One Heart — Debbie Gibson
// 120 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 107 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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 · "Everything"
const piano = note(`<
  A@6 B@2 C@4 D@6 E@3 F@8 G@5 H@5 I@5 J@2 ~ K@3 L@2 M@8 N@5 O@7 P@6 Q@8 R@7 S@2 T@6 U@6
>`.pickRestart({
  A: "[~@20 eb4@4 ~@14 bb5@8 ~@15 eb5@8 d5@9 ~@26 [g5,bb5]@3 ~@17 bb5@4 ~@7 g4@4 ~@16 eb5@9 [bb2,d5]@9 eb5@12 ~@7, ~@7 g3@17 g3@23 ~@6 [ab4,f5]@17 ~@17 d5@14 ~@2 eb4@7 bb5@7 g3@22 ab3@26 ~@27, ~@10 eb4@10 ~@7 d4@20 ~@2 c4@20 ~@31 g3@13 eb4@7 d4@19 g5@9 ~@44, ~@10 bb5@7 bb5@11 ~@3 bb5@7 ~@8 ab3@24 ~@26 eb3@24 ~@4 g4@7 ~ bb5@9 ~@2 c4@22 ~@27, ~@14 c6@11 ~@9 c6@13 ~@60 c6@14 ~@7 c6@13 ~@6 [ab4,f5]@18 ~@27]/6", // Gm Bb Db
  B: "[~@24 g3@7 ~@7 eb4@7 bb4@19, ~@4 bb4@17 bb4@24 ~@19, ~@9 g4@14 ~@9, ~@24 [g2,eb5]@21 ~@19, ~@31 g3@15 ~@18]/2", // Cm
  C: "[~@22 bb2@4 eb4@7 ~@13 eb5@24 ~@54 f5@3 eb5, ~@8 ab4@10 ab4@8 g4@9 eb4@35 ~@20 ab3@14 ~@3 eb5@20 ~, ~@12 g4@14 bb4@13 g4@31 ~@33 d5@8 ~@3 g5@14, ~@15 ab3@12 ~@6 bb3@14 ~@43 [f3,bb4]@21 ~@17, ~@19 eb3@7 eb3@16 bb4@27 ~@28 c5@15 ~@16]/4", // Bb5
  D: "[~@23 f5@2 ~@54 f3@3 ~@36 c3@8 [bb2,d4]@8 [c3,c4,eb4]@9 [d3,f4]@11 ~@31 eb4@7, ~@3 [b2,g5]@22 [bb2,eb5]@13 g3@10 eb5@3 g3@3 c5@10 ab3@9 eb4@10 c5@10 eb5@3 eb4@4 c5@27 ~@27 [g4,bb4]@14 bb4@24, ~@3 eb5@18 eb5@4 g5@10 g5@6 f5@22 eb4@7 [c5,g5]@13 [f3,g5]@21 ab2@16 ~@52 [eb3,eb5]@20, ~@18 eb3@46 c4@42 ~@58 eb4@21 ~@7, ~@31 bb5@13 a2@20 f3@12 ab3@30 ~@4 eb3@16 ~@41 g4@25]/6", // Bb Cm Dm Em Eb5 Gm C5 Fsus2 …
  E: "[[eb3,bb4]@20 ~@45 g3@14 bb4@17, ~@20 eb3@10 ab3@9 g4@10 eb4@10 eb5@22 ~@15, ~@21 bb4@19 eb3@18 [g2,eb3]@22 ~@16, ~@24 ab4@9 [eb3,ab4]@7 bb4@15 bb4@24 ~@17, ~@27 g4@9 bb2@6 ~@4 bb3@14 ~@36]/3", // Eb5 Cm Ab5
  F: "[~@158 c5@7 ~@20 eb5@6 eb5@3 ~@17 eb5@3 eb5@3 ~@16 eb4@4 [bb2,bb3,d4,bb4]@7 [c3,c4,eb4]@8 [d3,d4,f4]@4, ~@5 [eb3,bb4]@18 eb5@40 g5@37 f5@32 g3@43 eb5@10 ~@9 eb5@16 ~@14 d5@15 ~@17, ~@6 f3@21 ~@11 g3@7 c6@18 b2@19 b2@12 f5@3 eb5@3 bb2@13 eb3@6 bb2@19 a2@40 [f3,c4]@40 ~@38, ~@13 c5@14 ~@17 eb3@13 eb3@19 eb3@12 eb3@19 g3@18 eb3@14 ~@26 c5@13 ab3@26 ab3@13 [bb2,eb3,f3,eb5]@22 ~@17, ~@19 d5@7 c3@38 ~@30 g3@12 eb5@64 ~ d5@7 eb4@19 eb4@20 ab3@13 [ab3,c5]@9 ~@17]/8", // Bb Cm Dm Eb5 F5 Bbsus4 Ab
  G: "[~@11 bb3@10 ~@37 bb4@4 bb4@3 ~@23 eb4@7 eb4@6 ~@22 bb4@20 ~@13 f4@4, ~@4 [eb3,eb4,g4,bb4]@19 [g4,bb4]@17 ab3@15 ab3@8 ~@6 g4@16 ~@3 [g4,bb4]@14 [g4,bb4]@23 ~@25 g4@10, ~@22 d4@19 eb4@30 eb4@13 ~ bb3@14 ~@2 d4@15 ~@6 eb4@38, ~@29 f4@12 g4@22 ~@2 ab4@10 ab4@10 ~@24 f4@16 ~@18 [bb3,ab4]@17, ~@42 bb4@16 ~@4 bb3@13 ~@7 eb3@21 ~@57]/5", // Eb Gm Bb7
  H: "[~@35 c4@6 ~ f3@17 ~@19 ab3@18 ~@14 db4@6 ~ f3@6 ~@7 eb3@7 ~ bb2@7 [c3,c4,eb4]@8 [d3,d4,f4]@7, g4@15 c4@20 ~@6 a3@25 f4@12 f3@25 f3@14 bb2@21 ~@22, ~@3 c3@25 c3@14 c4@30 [a3,eb4]@7 ~@18 ab3@21 ~@5 f3@15 ~@22, ~@9 eb3@13 [g4,c5]@21 ~@16 f3@16 c4@38 ~@3 bb3@21 [bb3,d4]@9 ~@14, ~@6 g3@15 g4@19 ~@18 eb3@7 ~@15]/5", // Cm Dm Adim C5 Bb
  I: "[~@35 ab4@3 ~@16 bb4@3 ~@45 bb3@14 bb4@25 ~@19, ~ [eb4,bb4]@18 [g3,d4]@19 ab3@7 c4@22 eb4@9 eb3@19 [g3,d4]@23 ~@42, ~ g4@10 ab4@3 g4@4 bb3@11 ab4@3 g4@6 g4@20 ~@3 ab4@9 ab4@9 ~@4 bb4@13 bb4@20 ~@44, ~@2 eb3@18 bb4@18 c4 bb4@12 ab3@7 [bb3,bb4]@21 ~ bb3@13 g4@25 ~@42, ~@8 bb3@8 ab4@4 g4@6 f4@13 eb4@25 g4@15 ~@3 eb4 g4@6 eb4@8 ~@63]/5", // Eb5 G5 Bb
  J: "[~@7 eb3@38 ~@19]/2",
  K: "[~@49 f5@16 d5@11 ~@20, ~@5 g3@13 eb4@6 d4@17 ab3@25 ~@30, ~@7 g5@14 g3@23 c4@22 ~@30, ~@7 eb4@7 bb5@13 bb5@7 bb5@10 ~@4 ab4@18 ~@30, ~@8 bb5@3 c6@12 ~@8 c6@14 ~@51]/3",
  L: "[~@14 eb4@7 ~@15 g3@7 ~ [ab2,c3]@19 ab3, g4@21 ~ [g2,bb4,eb5]@23 ~@19, ~ bb4@21 ~@21 [eb3,bb4]@21]/2", // Ab Eb Eb5
  M: "[~@13 ab4@7 ~@21 eb5@20 [c3,bb4]@21 ~@37 f5@4 ~@16 f5@4 ~@34 g5@7 ~@10 ab5@2 g5@2 ~@14 [f3,f5,c6]@16 ab3@7 ~@7 eb3@8 [bb2,bb3,d4]@6, ~ bb4@19 bb4@21 ~@49 c5@10 eb5@3 c3@4 c6@3 g3@20 ~@13 eb5@6 eb5@7 f5@3 g5@18 ~@7 g5@12 ~@2 f5@14 ~@16 eb3@14 ~@14, ~@3 ab4@10 ~@7 eb4@13 eb4@29 ~@21 [f3,bb4]@33 eb3@21 ~@6 bb2@19 a2@23 ~@43 [bb2,f3,bb5]@23 ~@5, ~@7 g4@13 g4@16 g4@26 ~@21 eb3@14 d5@26 [b2,eb5]@21 ~@2 f5@4 g3@20 ~@14 [ab3,c4]@45 ~@6 ab3@16 ~@5, ~@27 bb3@14 ~@41 ab3@34 f5 g5@8 ~@18 g5@13 eb3@29 ~@6 eb4@14 eb4@24 ~@27]/8", // C7 F5 Bb Bb5 B Ab
  N: "[~@2 [c3,c4,eb4]@8 [d3,d4,f4]@8 ~@10 ab4@4 ~@6 f4@7 ~@9 ab4@4 eb4@14 ~@4 bb4@3 ~@13 [c4,ab4]@7 ~@6 eb4@7 ~@20 g3@7 bb4@21, ~@18 [eb3,bb4]@20 g4@10 ab4@6 ~@4 c4@28 g4@13 eb3@19 bb4@21 ~@21, ~@18 g4@14 g4@6 [g3,bb4]@20 ab3@22 bb3@21 ~@4 bb3@10 ~@2 f4@23 ~@20, ~@25 bb3@12 d4@14 [d4,g4]@7 bb4@18 ~@3 bb4@21 ~@5 [g4,bb4]@14 ~@41, ~@34 ab4@5 ~@6 f4@15 ~@12 eb4@11 ab4@6 eb4@12 ~@11 eb4@8 ~@5 bb3@15 ~@20]/5", // Cm Dm Fm Eb5 Gm G5 Gm
  O: "[~@8 g4@10 ~@37 g3@8 ~@38 ab3@7 eb2@13 ~@23 eb4@3 ~ [eb2,eb3]@7 ~@6 g3@6 eb3@7 ~@6 g3@7 ~@35 bb4@2, ~ [bb3,ab4]@20 c3@27 ~@39 [bb2,eb3]@11 eb4@10 [g3,bb3,eb4]@20 bb3@10 g3@10 db4@19 ~@7 eb3@15 ~@4 ab4@7 c3@13 bb4@6 ab4@5, ~@18 g4@23 [g4,c5]@23 ~@31 f4@15 ~@18 eb4@16 ~@3 bb3@20 [bb3,db4]@21 ~@2 eb4@10 bb4@3 c5@21, ~@28 g3@27 ~@8 [a3,g4]@47 ~@14 eb3@4 g3@6 eb3@13 ~ g3@9 eb3@10 g3@13 ~@7 [ab2,c4]@19 bb2@18, ~@34 eb3@30 ~@24 f3@22 ~@11 eb2@26 ~@8 eb2@34 ~@5 eb3@30]/7", // Eb Bb7 Eb5 Eb C5 Bbm A7 Ab
  P: "[~@38 ab4@3 ab4@2 ~ ab4@3 ~@6 ab3@8 ~@33 eb3@7 ~@13 db3@7 ~@15 bb4@3 ~@14 bb4@3 ~@24 c3@12, ~ g2@40 ab3@12 ~@25 g4@44 ~@2 eb4@13 ~@6 bb4@4 eb3@12 [g2,bb2]@14 d3@6 g3@13, ~ bb2@27 bb2@14 ~@19 [bb2,c3,ab4]@20 eb3@13 ~@7 db3@13 ~@7 [ab2,c4]@16 ~@3 [bb2,c5]@16 bb4@7 g4@18 ~@11, ~ d3@24 d3@17 ~@33 [eb3,bb4]@8 ~@5 bb3@19 bb3@15 ~@6 eb3@18 ab4@13 d3@10 f4@7 eb4@16, ~ f3@7 g4@34 ~@5 [eb4,ab4]@15 ~@6 c5@15 ~@44 ab4@7 c3@27 ~@5 f3@14 ~@12]/6", // Gm Fm Ab Bbsus2 Eb5 Ab5
  Q: "[~@12 f4@4 ~@10 eb4@3 ~@4 f4@3 ~@70 c5@4 bb2 [bb2,bb4]@7 [c3,c4,eb4]@8 [d3,d4,f4]@9 eb4@15 eb4@7 ~@20 f4@4 eb4@46 ~ [eb2,eb3,g4]@7 [bb3,eb4]@2 ~@19, ~@8 [c4,g4]@22 [f3,g4]@19 f3@37 d5@4 [d3,f3]@29 ~@62 ab2@23 ~@52, ~@8 a3@15 a3@7 eb4@13 eb4@6 bb2@21 eb3@20 bb2@13 bb4@7 [bb3,d4]@9 ~@39 bb4@24 ~@74, ~@16 f4@15 ~@5 f4@10 f4@3 ab3@7 c5@20 [bb2,c5]@13 ab3@7 c5@7 ab3@16 ~@62 eb3@16 ~@30 [bb3,eb4]@8 ~@21, ~@37 a3@12 eb3@14 [ab3,bb4]@20 [ab3,bb4]@8 ~ c5@2 bb4@5 g4@12 ~@46 g4@16 g4@8 ~@75]/8", // Bb Cm Dm Eb Eb5 C5 Fsus2 Dm …
  R: "[~@11 bb2@8 ~@36 f4@7 ~@36 [eb3,g4,c5]@7 a3@23 ~@14 eb4@6 ~@34 db5@7 ~@13 eb3@7 [bb2,bb3,d4]@8 [c3,c4,eb4]@7, ~@19 eb4@22 eb4@22 ~@28 g3@15 ~@22 a3@20 f3@21 ab3@7 f3@13 [bb2,f3,c5]@21 ~@14, ~@34 eb3@29 c3@43 ~@42 c4@41 ab3@7 ab3@14 ~@14, ~@42 [bb2,ab4]@22 ~@41 [f3,c4,g4]@43 ab3@14 eb4@28 ~@3 bb4@17 ~@14, ~@48 g4@14 g4@36 ~@36 f4@14 eb4@7 c5@34 eb3@13 ~@22]/7", // Cm Bb Cm Bbsus2 Bb7 Fsus2
  S: "[[d3,f4]@8 ~@10 ab4@4 ~@23 ab4@4 bb4@15, d4@2 ~@6 [eb3,eb4,bb4]@21 bb4@20 ~@15, ~@8 g4@13 ~ g4@6 [d4,g4]@10 ab4@4 [d4,g4]@8 ~@14, ~@15 bb3@13 [g3,bb3]@22 ~@14, ~@25 ab4@5 ~@5 f4@15 ~@14]/2", // Dm Eb5 G5 Gm
  T: "[~@2 bb4@3 ~@14 [eb4,ab4]@7 ~@6 [bb3,eb4,g4,bb4]@16 [g4,bb4]@21 ~@7 eb4@16 [bb3,c4]@24 ~@23 c5@20 ~ a3@25 ~@7, ~@5 bb4@22 ~@165, ~@6 bb3@21 ~@42 eb4@7 ~@116, ~@9 ab4@10 ~@7 eb3@22 ~@22 c4@14 ~@32 c3@29 ~@47, ~@4 g4@5 ~@14 g4@8 ~@22 g4@9 ~@2]/6", // Ab5 Eb Gm Bbsus2
  U: "[~@3 eb4@13 ~@36 bb5@8 ~@16 eb5@9 [bb2,d5]@10 [c3,c5,eb5]@13 [d3,d5,f5]@16 eb2@64 ~@4, ~@16 eb3@15 bb5@14 g4@11 ~@4 ab3@26 ~@106, ~@10 g3@9 g3@11 g5@4 f5@9 ~@53, ~@24 g5@15 ~@3 d4@21 ~ c4@23 ~@105, ~@24 bb5@3 c6@12 ~@6 bb5@3 c6@14 ~@130]/6", // Bb Cm Dm
})).s("gm_piano").gain(0.31)

// chords · piano · "Everything" · soft notes
const piano_soft = note(`<
  A@2 B@2 ~ C@4 D@5 E@4 F@4 G@2 ~@5 H@3 I@4 ~ J ~@3 K@8 L M@6 N O@2 ~ P@2 ~ Q@3 R@3 S ~@2 T@3 ~ U@3 ~@3 V@6 W ~@5 X@2
  Y@4 Z@3 AA AB@3
>`.pickRestart({
  A: "[~@10 g5@14 ~@7 g4@11 ~@3 g5@8 ~@11, ~@3 eb3@21 ~@18 g4@6 ~@16]/2",
  B: "[~@5 [bb3,bb4]@8 ~ [c4,c5]@9 [d4,f5]@14 ~@27, ~@13 eb5@9 ~@42]/2", // Bb C Dm
  C: "[~@4 bb4@9 ~ c3@10 [d3,d5,f5]@12 ~@20 eb3@21 [ab2,c3,eb3]@24 ~ f3@21 ~@5, ~@13 c5@11 ~@12 eb3@20 ~@45 bb2@17 ~@10, ~@36 g4@14 ~@51 bb4@4 ~@23, ~@36 eb4@10 eb4@23 ~@32 ab3@10 ~@17, ~@43 bb3@14 ~@44 eb3@14 ~@13]/4", // Dm Ab
  D: "[~@22 g3@14 ~ [c3,eb3,bb4]@20 ~@15 ab3@6 ~@29 g3@27 ~@26, ~@13 eb3@24 ~@21 eb3@22 ~@5 g3@22 ~@53, ~@14 g3@8 ~@14 ab2@23 ~@19 c3@22 ~@60, ~@15 g2@23 ~@19 bb2@22 ~@13 eb3@22 ~@46]/5", // Cm7
  E: "[~@26 f5@16 ~@14 ab2@6 bb3@9 ~@8 d4@11 ~@7 bb3@11 ~@7 g3@13, ~@47 bb4@16 ~@27 eb3@18 g3@7 ~@13, ~@90 eb4@10 ~@9 g2@19]/4",
  F: "[c3@20 ~ ab3@9 ~@9 eb4@9 ~@10 g3@7 ~@7 eb4@7 [ab2,c3,eb3]@22 ~ bb2@21 ~@5, ~@20 bb2@16 ~@65 ab3@22 ~@5, ~@21 f3@21 ~@11 g4@27 ~@48]/4", // Ab
  G: "[eb3@12 ~@7 g3@18 g3@25 ~@2]/2", H: "[~@40 c4@4 ~@31 bb3@9 ~@12, ~@21 bb3@22 ~@5 c4@36 ~@12, ~@11 g3@11 ~@26]/3",
  I: "[~@20 d4@6 c4@41 ~@19 eb3@20 ~@22, ~@3 [g3,bb3]@23 ab3@21 ~@81]/4", J: "~@17 c4@5 ~@10",
  K: "[~@6 c4@8 ~@16 bb3@8 ~@14 ab3@24 ~@55 c3@8 [f3,a3,c4]@26 ~@28 eb3@22 ~@4 g4@10 ~@4 g5@8 ~@7 eb5@8, ~@45 f4@10 ~@21 [bb3,ab4]@22 c3@33 ~@34 [bb2,d3]@31 ~@60, ~@52 [c4,eb4]@47 ~@11 g3@14 g3@17 ~@24 f3@16 ~ f3@14 ~@60, ~@83 g4@11 g4@23 [g4,c5]@24 ~@36 eb4@18 ~@61, ~@91 f4@8 ~@40 f4@34 f4@22 ~@34 g4@7 ~@20]/8", // F Bb7 Bb Cm C5
  L: "~ [bb2,bb4]@10 [c3,c5,eb5]@10 [d3,d5,f5]@11", // Bb Cm Dm
  M: "[~@8 bb3@13 ~ [eb4,g4]@23 ~@33 eb3@6 eb3@20 g3@14 g3@8 [ab2,eb3]@21 bb2@41 ~@4, eb3@21 eb3@22 ~@19 bb2@23 ~@19 [g2,eb3]@22 ~@66, eb4@14 ~@7 g3@15 ~@27 eb3@15 ~@114, ~@64 f3@21 ~@107, ~@73 ab3@12 ~@107]/6", // Eb Ab5 Cm
  N: "~@9 eb3@19 ~@4, ~ g3@10 ~@5", O: "[~@10 g3@14 ~ f3@27 ~@12, ~@24 eb4@7 ~@33]/2", P: "[~@17 eb4@20 bb3@22 ~@5]/2",
  Q: "[~@21 g3@15 ~@7 ab3@23 ~@12 f4@7 ~@11, ~@19 bb3@10 ~@13 eb4@43 ~@11, ~@20 d4@23 c4@42 ~@11]/3",
  R: "[~@16 c3@15 [f3,c4]@24 ~ c4@20 eb3@16 ~@4, ~@55 ab3@14 ~@27]/3", S: "~@13 bb3@6 ~@13",
  T: "[~@15 f3@7 f3@19 ~ f3@18 eb3@14 ~@22, ~@41 c4@21 ~@34]/3", U: "[~@31 f3@7 ~@13 eb3@21 f3@22 ~@2, ~@12 eb4@3 ~]/3",
  V: "[~@14 bb3@14 ~@2 d4@24 ~@23 bb2@24 ~@19 bb3@4 ~@15 g4@8 ab2@23 ~@22, ~@7 g4@22 [g3,bb3]@25 ~@15 eb3@31 ~@32 d3@16 ~@44, ~@8 [eb3,bb4]@22 ~@31 c3@39 ~@24 [g2,f4]@24 ~@44]/6", // Gm Eb5 G7
  W: "~@5 eb3@3", X: "[~@17 c4@42 ~@5, ~@16 eb4@35 ~@13, ~@17 ab3@21 ~@26]/2",
  Y: "[~@15 [g3,d4,f4]@22 ~@15 c4@8 ~@16 f4@8 ~@36 g3@8, ~@14 bb3@23 ab3@23 ab4@24 ~@8 g3@28 ~@8, ~@68 g4@16 g4@22 g4@21 ~, ~@99 eb3@29, ~@113 c3@15]/4", // G7
  Z: "[[f3,c4]@23 ~@8 f4@18 ~@7 eb4@15 ~@17 g4@6 ~@2, ~@23 bb2@26 ~@47, ~@12 [c3,eb3]@13 ~@23]/3", // F5 Cm
  AA: "~@4 ab4@17 bb4@11", AB: "[~@29 [eb5,g5,bb5]@64 ~@3, ~@7 eb3@16 ~]/3",
})).s("gm_piano").gain(0.05)

stack(piano, piano_soft)

More by Debbie Gibson