Strudelify
Hands cover art

1995 · Spirit

Hands

Jewel

KeyA♭ majorTempo134 bpm
0:00/0:00
// Hands — Jewel
// 134 bpm, 8/8, key Ab major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 2 "Piano" named as a piano, played on piano (its electric guitar jazz patch is not one); ch 3 "E. Guitar" named as a guitar, played on electric guitar clean (its contrabass patch is not one); ch 5 "Bass" named as a bass, played on electric bass finger (its epiano1 patch is not one)
// note: Full arrangement: all 122 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(134/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@8 B@4 C D E F C D E G H I H J H I K L@5 D E F C D E M@2 D E F C D E G H I H J H I K N E F C D E F C O@2 P@4 Q@8 H I
  H J H I K N H I H J H I K N R@8 S@16 T@6
>`.pickRestart({
  A: "[~@15 eb2, f3@4 f3@4 f3@4 f3@4 f3@3 ab4@3 eb4@3 c4@2 f4@3 eb4@4 eb4@4 eb4@4 db4@4 db4@2 ~@2 ab3@4 ab3@2 ~@2 eb3@6, ~ c4@4 c4@4 c4@4 c4@4 c4@3 f3@3 g4@3 eb4@2 f3@4 f3@3 ab4@4 g4@4 f4@4 eb4@4 c4@4 bb3@4 [g3,eb4]@5, ~@2 eb4@4 eb4@4 eb4@4 eb4@4 eb4@3 c4@3 f3@3 f5@9 f3@4 db3@4 db3@4 ab2@4 ab2@4 eb2@4 ~@4, ~@3 ab4@4 g4@4 f4@4 c5@8 g5@6 c4@4 c4@4 c4@3 ~ ab3@4 ab3@4 eb3@4 eb3@4 bb2@7]/8", // Cm
  B: "[~@7 eb2, f3!2 db3!2 ab2!2 eb2 ~, ~ c4@4 c4@3 ~ ab3@4 ab3@4 eb3@4 eb3@4 bb2@7, ~ eb4@2 eb4@2 db4@2 db4 ~ ab3@2 ab3 ~ eb3@3, ~@3 ab4@4 g4@4 f4@4 eb4@4 c4@4 bb3@4 [g3,eb4]@5]/4", // Cm
  C: "c3@3 ~@2 ab3@3, f2, ~@3 c3@5, ~ [g3,c4,f4]", D: "~ ab3 [ab3,db4,f4]@2, [db2,ab2,db3]",
  E: "[eb3,ab3] ~ [eb3,bb3,c4,eb4]@2, ab2@3 ab2@5, ~ ab3@3, ~ eb3 ~@2", // Ab5 Cm7
  F: "~@5 [ab3,f4]@3, eb3, [eb2,bb2]@3 [eb2,bb2]@5, ~ g3 [g3,eb4]@2", // Db Eb5 Cm
  G: "~@4 [bb3,ab4] [bb3,g4]@3, eb3, [eb2,bb2]@3 [eb2,bb2]@5, ~ g3@3", // Bb7 Eb Eb5
  H: "[ab2,eb3,ab3,c4]@4 ~@3 bb3, ~ [eb2,bb2,eb3,g4], ~@4 bb3@3 ~, ~@3 eb4", // Ab Eb
  I: "f3 ~@6 eb3, bb2@2 f3!2, bb3 bb3@3, ~ f3@3 db4@4, ~@5 bb2@3",
  J: "ab3 ~@6 ab3, [db2,ab2,db3], f4 eb4, db4@2 db4@3 f4@3, ~ ab3@2 ab3@3 db4@2", // Db5
  K: "~ [g2,eb3], [ab2,eb3,ab3,c4] ~, ~@3 [bb3,eb4]@5", // Cm Ab Eb5
  L: "[~@14 c5@2 ~@16 c3@3 ~@2 ab3@3, f3@4 f3@4 f3@4 f3@4 f3@3 ab4@3 eb4@4 eb4@4 eb4@4 ~@2 [g3,c4,f4]@4, ~ c4@4 c4@4 c4@4 c4@4 c4@3 f3@3 g4@4 f4@4 ~@9, ~@2 eb4@4 eb4@4 eb4@4 eb4@4 eb4@3 c4@4 c4@4 c4@4 ~@2 c3@5, ~@3 ab4@4 g4@4 f4@4 ~ c5@8 f3@4 f3@4 f2@8]/5", // Csus4
  M: "[~@4 [bb3,g4] ab4 g4 ~ c3@3 ~@2 ab3@3, eb3@7 f4@5 ~@4, [eb2,bb2]@3 [eb2,bb2]@5 f2@8, ~@2 g3@6 ~@3 c3@5, ~@5 bb3@3 ~@4 [g3,c4,f4]@4]/2", // Eb Eb5 Csus4
  N: "~@3 [f3,ab3], f2, ~ c3@4 c3@3, ~ f3@2 ~, ~@3 ab3@3 ~@2", O: "[~ ab3 [ab3,db4,f4]@6, [db2,ab2,db3] ~]/2",
  P: "[~@7 eb2, f3!2 db3 eb5@5, ~ c4@4 c4@3 ~ ab3@3 db3@3 eb4@3 ab3@3 eb3@4 bb2@7, ~@2 eb4@4 eb4@4 db4@3 ab3@4 eb3@3 ab2@3 bb3@3 eb3@6, ~@3 ab4@4 g4@4 f4@3 db4@2 ab2@3 c4@3 ab3@2 eb2@3 [g3,eb4]@5]/4", // Cm
  Q: "[~@28 bb4@3 ~@29 eb2@4, f3@4 f3@4 db3@4 db3@4 ab2@4 ab2@4 eb2@3 [g3,eb4]@4 c5@7 eb4@4 db4@3 ab3@4 eb3@4 eb3@4 bb2@7, ~ c4@4 c4@3 ~ ab3@4 ab3@4 eb3@4 eb3@4 bb2@7 ~ c4@3 f3@4 db3@4 db3@4 ab2@4 ab2@3 bb3@3 eb3@6, ~@2 eb4@4 eb4@4 db4@4 db4@2 ~@2 ab3@4 ab3@2 ~ bb4@3 eb2@4 ~@2 eb4@3 c4@3 ~ ab3@3 c5@2 db4@2 ~@2 ab3@4 ab3@2 eb2@3 [g3,eb4]@5, ~@3 ab4@4 g4@4 f4@4 eb4@4 c4@4 bb3@3 eb3@6 f3@3 ab4@4 g4@4 f4@4 [eb4,bb4]@4 [c4,ab4]@4 g4@8 ~]/8", // Cm Eb5 Fm
  R: "[~@63 [g3,c4], [ab2,eb3,ab3,c4] [g2,eb3] [db2,db3] [eb2,eb3] [f2,f3] ~ [db2,db3] [eb2,eb3] [f2,f3] ~ [db2,db3] [eb2,eb3] [f2,f3] ~ [db2,db3] [eb2,eb3], ~@3 [bb3,eb4]@5 ~@12 ab3@4 ~@7 [g3,c4]@4 [g3,c4]@4 [f3,c4]@4 [f3,c4]@4 ~@5 ab3@4 ~@8, ~@7 [f3,c4]@4 [f3,c4]@4 [g3,c4]@4 [g3,c4]@4 [f3,c4]@4 [f3,c4]@4 ~@5 ab3@4 ~@7 [g3,c4]@4 [g3,c4]@4 [f3,c4]@4 [f3,c4]@4 ~]/8", // C5 Ab Cm Db Eb F Db Eb …
  S: "[~@63 [g3,c4], [f2,f3] ab3 [db2,db3] [eb2,eb3] [f2,f3] ab3 [db2,db3] [eb2,eb3] [f2,f3] ab3 [db2,db3] [eb2,eb3] [f2,f3] ab3 [db2,db3] [eb2,eb3], ~@3 [g3,c4]@4 [f3,c4]@4 [f3,c4]@4 [g3,c4]@4 [g3,c4]@4 [f3,c4]@4 [f3,c4]@4 [g3,c4]@4 [g3,c4]@4 [f3,c4]@4 [f3,c4]@4 [g3,c4]@4 [g3,c4]@4 [f3,c4]@4 [f3,c4]@4 ~]/8", // C5 F Db Eb F Db Eb F …
  T: "[~@39 [f3,c4]@4 ~@5, [f2,f3] ab3 [db2,db3] [eb2,eb3] [f2,f3] ab3 [db2,db3] [eb2,eb3] [f2,f3] ab3 ~@2, ~@3 [g3,c4]@4 [f3,c4]@4 [f3,c4]@4 [g3,c4]@4 [g3,c4]@4 [f3,c4]@4 [f3,c4]@4 [g3,c4]@4 [g3,c4]@4 ~@9]/6", // F5 F Db Eb F Db Eb F …
})).s("gm_piano").gain(0.1)

// chords · electric guitar clean · "E. Guitar"
const electric_guitar_clean = note("<~@11 A@2 ~@2 B@2 ~@17 B@2 ~@6 B@2 ~@78>".pickRestart({
  A: "[~@7 [c4,f4]@6 ~@3, ~@4 [bb3,eb4]@5 ~@7]/2", B: "[~@4 [g3,eb4] [ab3,f4]@8 ~@3]/2",
})).s("gm_electric_guitar_clean").gain(0.05)

// chords · acoustic guitar steel · "A. Guitar"
const acoustic_guitar_steel = note(`<
  ~@12 A@3 B A@3 C D@2 E@2 D@2 F@3 G@2 A@3 B A@3 H@4 B A@3 C D@2 E@2 D@2 I@3 B A@3 B J@3 ~@3 K@2 ~@3 L@3 ~ D@2 E@2 D@2
  M@4 E@2 D@2 N@3 O@7 P@16 Q@6
>`.pickRestart({
  A: "[[eb3,bb3] [f3,c4] [f3,c4]@2 [c4,f4] c4!2 ~ [db3,ab3]@2 [db3,ab3]@2 [ab3,c4,f4] ab3!2 ~ [ab2,eb3]@2 [ab2,eb3]@2 [ab2,eb3,ab3,c4,eb4]@2 [ab2,eb3,ab3] [ab2,eb3,ab3,c4], ~@2 f3!2 ~@2 db3!2 ~@4, ~@5 f4@2 [c4,f4]@2 ~@4 [c4,f4]@2 [ab3,c4,f4]@2 ~@7]/3", // Eb5 F5 Db5 Fm Ab5 Ab Ab5 Ab …
  B: "[bb2,eb3]@2 eb3 [eb3,bb3,eb4]@2 [eb3,bb3,eb4] [eb3,bb3,eb4]@2, ~ bb2 ~@2", // Eb5
  C: "[bb2,eb3]@2 eb3 ~ ab4 [eb3,bb3,eb4] ~ g4, ~ bb2 ~ [eb3,bb3,eb4], ~@3 [eb3,bb3,eb4]@2 g4@2 ~", // Eb5
  D: "[[ab2,eb3,ab3]@2 ~ [bb3,eb4] [eb3,bb3,eb4]@2 ~@2 [bb2,f3]@2 [bb2,f3]@2 ~@2 [bb2,f3]@2, [c4,eb4,ab4]@3 g4@4 [db4,f4]@4 ~ db4@4, ~ [ab2,eb3,ab3] ~ [eb3,bb3] ~@2 [bb2,f3] ~, ~@13 ab3@2 ~]/2", // Ab5 Eb5 Bb5 Ab Db Ab5 Eb5 Bb5
  E: "[[ab2,eb3,ab3]@2 ~ [bb3,eb4] [eb3,bb3,eb4]@2 ~@2 [db3,ab3]@2 [db3,ab3]@2 [db4,f4] ~ [db3,ab3]@2, [c4,eb4,ab4]@3 g4@4 [db4,f4]@4 ~@2 [db4,eb4]@3, ~ [ab2,eb3,ab3] ~ [eb3,bb3] ~@2 [db3,ab3] ~]/2", // Ab5 Eb5 Db5 Db Db5 Ab Db Dbsus2 …
  F: "[[ab2,eb3] ~ [g2,eb3] ~ [c4,f4]@6 ~@2, [ab3,c4]@2 [g3,bb3,eb4]@3 [c3,f3,ab3]@8 ~@3, ~@2 [ab2,eb3]@2 ~@3 f2@12 ~@5]/3", // Ab5 Cm F5 Ab Eb Fm Ab5
  G: "[~@15 c4, ~@5 g3@4 g3@4 g3@3, ~@3 ab3@2 ab3@2 ab3, ~@7 eb4@4 f4@4 ~]/2",
  H: "[[bb2,eb3]@2 eb3 ~@2 [eb3,bb3,eb4] ~@2 [eb3,bb3] [f3,c4] [f3,c4]@2 [c4,f4] c4!2 ~ [db3,ab3]@2 [db3,ab3]@2 [ab3,c4,f4] ab3!2 ~ [ab2,eb3]@2 [ab2,eb3]@2 [ab2,eb3,ab3,c4,eb4]@2 [ab2,eb3,ab3] [ab2,eb3,ab3,c4], ~ bb2 g4 [eb3,bb3,eb4,g4] ~@2 f3!2 ~@2 db3!2 ~@4, ~@3 [eb3,bb3,eb4]@2 ab4@3 ~@24, ~@7 f4@5 ~ f4@2 [c4,f4]@2 ~@4 [c4,f4]@2 [ab3,c4,f4]@2 ~@7]/4", // Eb5 F5 Db5 Fm Ab5 Ab Ab5 Ab …
  I: "[[ab2,eb3]@2 ~@2 [g2,eb3]@2 ~@10 [ab2,eb3]@2 [ab2,eb3]@2 [ab2,eb3,ab3,c4,eb4]@2 [ab2,eb3,ab3] [ab2,eb3,ab3,c4], [ab3,c4]@2 [g3,bb3,eb4]@3 [c3,f3,ab3]@8 ~@3, ~@2 [ab2,eb3]@2 ~@3 f2@12 ~@5, ~@2 c4@3 ~]/3", // Ab5 Cm Ab5 Ab Ab5 Ab Eb Fm …
  J: "[[eb3,bb3] [f3,c4] [f3,c4]@2 [c4,f4] c4!2 ~ [db3,ab3]@2 [db3,ab3]@2 [ab3,c4,f4] ab3!2 [ab3,c4,f4]@8 ~, ~@2 f3!2 ~@2 db3!2 ~@4, ~@5 f4@2 [c4,f4]@2 ~@4 [c4,f4]@2 ~@9]/3", // Eb5 F5 Db5 Fm F5
  K: "[~@2 [ab4,c5]@3 [ab4,c5]@3 [ab4,c5]@3 [ab4,c5]@3 [ab4,c5]@12 ~@6]/2", L: "[~@7 f4@8 eb4@8 ~]/3",
  M: "[[ab2,eb3]@2 ~@2 [g2,eb3]@2 ~@2 c4@8 [ab2,eb3,ab3]@2 ~ [bb3,eb4] [eb3,bb3,eb4]@2 ~@2 [bb2,f3]@2 [bb2,f3]@2 ~@2 [bb2,f3]@2, [ab3,c4]@6 [g3,bb3,eb4]@9 [c3,f3]@24 ~@5 [eb3,bb3]@4 ~@10 ab3@4 ~@2, ~@2 [ab2,eb3]@2 ~@3 f2@11 [ab2,eb3,ab3]@2 ~@8 [bb2,f3]@2 ~@2, ~@15 ab3@17 c4@8 ~@6 [db4,f4]@8 ~@2 db4@8, ~@16 [eb4,ab4]@3 g4@4 ~@9]/4", // Ab5 Cm Ab5 Eb5 Bb5 Ab Eb F5 …
  N: "[[ab2,eb3] ~ [g2,eb3] ~ c4@4 [ab2,eb3] ~ [g2,eb3] ~, [ab3,c4]@2 [g3,bb3,eb4]@3 [c3,f3]@8 ~@3, ~@2 [ab2,eb3]@2 ~@3 f2@12 [g3,bb3,eb4]@5, ~@15 ab3@17 [ab3,c4]@8 ~@8, ~@9 [ab2,eb3] ~@2]/3", // Ab5 Cm Ab5 Cm Ab Eb F5 Ab5 …
  O: "[~@27 ab3, ~ ab2@4 eb3@4 ~@9 db3@4 ab3@4 ~ ab3@4 ab3@4 f3@4 ~@3 f3@4 f3@4 ~ f3@4 ~, ~@2 db3@4 ab3@4 ~ ab3@4 ab3@4 ~ bb2@4 ~ c3@4 [c3,f4]@4 ab2@4 eb3@4 ~@9 db3@4 ~@2, ~@3 f3@4 ~@3 f3@4 f3@4 ~ f3@4 ~@3 f3@4 [f3,c4]@4 db3@4 ab3@4 ~ ab3@4 ab3@4 ~ bb2@4, ~@4 bb2@4 ~ c3@4 c3@4 ab2@4 eb3@4 ~@3 c4@2 ~@6 bb2@4 ~ c3@4 c3@4 ab2@4 eb3@3]/7", // F5
  P: "[~@31 ab3, ~ c3@4 c3@4 ab2@4 eb3@4 ~@9 db3@4 ab3@4 ~ ab3@4 ab3@4 ~ bb2@4 ~ c3@4 c3@4 ab2@4 eb3@3, ~@2 f3@4 f3@4 db3@4 ab3@4 ~ ab3@4 ab3@4 ~ bb2@4 ~ c3@4 c3@4 ab2@4 eb3@4 ~@9 db3@4 ~@2, ~@3 ab3@4 ab3@4 f3@4 ~@3 f3@4 f3@4 ~ f3@4 ~@3 f3@4 f3@4 ~ f3@4 ~@3 f3@4 f3@4 ~ f3@4 ~, ~@12 bb2@4 ~ c3@4 c3@4 ab2@4 eb3@4 ~@9 db3@4 ab3@4 ~ ab3@4 ab3@4 ~ bb2@4]/8",
  Q: "[~@39 ab3@4 ~@5, ~ c3@4 c3@4 ab2@4 eb3@4 ~@9 db3@4 ab3@4 ~ ab3@4 ~@9, ~@2 f3@4 f3@4 db3@4 ab3@4 ~ ab3@4 ab3@4 ~ bb2@4 ~ c3@4 c3@4 ~@7, ~@3 ab3@4 ab3@4 f3@4 ~@3 f3@4 f3@4 ~ f3@4 ~@3 f3@4 f3@4 ~@6, ~@12 bb2@4 ~ c3@4 c3@4 ab2@4 eb3@4 ~@15]/6",
})).s("gm_acoustic_guitar_steel").gain(0.02)

// bass · electric bass finger · "Bass"
const bass = note(`<
  ~@12 A B C D A B C D E F E G E F H I J K L A B C D A B C D A B C D A B C D E F E G E F H M C D A B C D A N@2 ~@9 O P Q
  E F E G E F H M E F E G E F H M H R@28 ~
>`.pickRestart({
  A: "f2 f2@3", B: "db2 db2@3", C: "ab1 ab1@3", D: "eb2 eb2@3", E: "ab1!2 eb2@2", F: "bb1!2", G: "db2!2",
  H: "ab1!2 g1@2", I: "[f1,f2]", J: "~ c3@2 f3", K: "f3", L: "~ c3", M: "f1",
  N: "[db2@2 ~@2 db3@8 eb3 f3@3, ~ db2@5 ~@2]/2", O: "~@8 ab3 bb3@7", P: "ab3@14 bb3 ab3", Q: "g3",
  R: "[db2@3 eb2@4 f2@9]/2",
})).s("gm_electric_bass_finger").gain(0.32)

// chords · ocarina · "Ahhs"
const ocarina = note("<~@47 A B A C D E ~@2 F G H@2 F G I@3 ~@12 A B A C D E ~@2 A B A C D E ~@32>".pickRestart({
  A: "[c4,eb4] [bb3,eb4]", B: "[ab3,db4]", C: "[ab3,db4,eb4]", D: "[c4,eb4,ab4] [bb3,eb4,g4]",
  E: "ab3, db4@7 ~, f4@3 ~", F: "~@2 [c4,eb4]!2", G: "c4@2 db4 c4 bb3@12, eb4",
  H: "[[c4,eb4,ab4]@2 [c4,eb4,ab4]@2 [c4,eb4,ab4]@2 [bb3,db4,g4] [bb3,db4,g4]@2 [ab3,db4,f4]@7]/2", // Ab Gdim Db
  I: "[[c4,eb4,ab4]@2 [c4,eb4,ab4]@2 [c4,eb4,ab4]@2 [bb3,db4,g4] [bb3,db4,g4]@2 [ab3,db4,f4]@15]/3", // Ab Gdim Db
})).s("gm_ocarina").gain(0.14)

// drums · snare
const snare = s("sd").struct("<~@31 A@15 B A@16 ~@12 B A@17 ~@4 A@7 C A@4 C A@11 ~>".pickRestart({
  A: "~ x", B: "~@6 x!3 ~@7", C: "x!2",
})).gain(0.22)

// drums · low tom
const low_tom = s("lt").struct("<~@104 [~@3 x ~@3 x] ~@4 [~@3 x ~@4] ~@12>").gain(0.35)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@12 A@15 B ~@3 A@15 C A@9 C A C A C A C ~@12 D A@17 ~@4 A@7 E A@4 F A@11 ~
>`.pickRestart({
  A: "x!2 ~@2", B: "x", C: "x ~ x ~@4 x", D: "~@7 x", E: "~@3 x ~@3 x", F: "~@3 x!2 ~@3",
})).gain(0.18)

// drums · high tom
const high_tom = s("ht").struct("<~@46 A ~@9 A ~ A ~ A ~ A ~@12 A ~@28 B ~@4 C ~@12>".pickRestart({
  A: "~@5 x!2 ~", B: "~ x!2 ~@2 x!2 ~", C: "~ x!2 ~@5",
})).gain(0.09)

// drums · ride
const ride = s("rd").struct("<~@47 A ~@6 A B@8 A ~@12 A ~@6 A@2 ~@6 A ~ A ~@3 A ~@7 A ~@3 C ~@12>".pickRestart({
  A: "x", B: "x!4", C: "~ x",
})).gain(0.35)

// drums · ride · soft notes
const ride_soft = s("rd").struct("<~@27 x ~@27 [x!4]!8 ~@59>").gain(0.18)

// drums · splash
const splash = s("cr").struct("<~@92 [~ x] ~@29>").gain(0.09)

// drums · congas
const congas = s("conga:13").struct("<~@96 [~@6 x!2] ~@25>").gain(1.12)

// drums · congas
const congas_2 = s("conga:18").struct(`<
  ~@12 A B A B A B A B A B A B A B A ~@4 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 ~@12 B A B A B
  A B A B A B A B A B A B C ~@4 A B A B A B A D A B A B E B A B A B A B A B A B ~
>`.pickRestart({
  A: "~@4 x ~@2 x", B: "~@4 x!2 ~ x", C: "~ x", D: "x!2 ~@2 x!2 ~@2", E: "x!2 ~@5 x",
})).gain(1.12)

// drums · congas
const congas_3 = s("conga:33").struct("<~@12 A@15 B C B D A@32 ~@12 E A@16 F ~@3 G A@7 H A@4 I A@11 ~>".pickRestart({
  A: "x!2 ~ x", B: "x ~@3 x ~@2 x", C: "~@3 x ~ x ~ x", D: "x ~@2 x ~ x!2 ~", E: "~@3 x", F: "x!2 ~@2", G: "~@6 x!2",
  H: "~ x ~ x", I: "~ x!3",
})).gain(1.12)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@31 A@24 ~@20 B A@16 C ~@4 A@24 ~>".pickRestart({
  A: "x!8", B: "~@3 x!5", C: "x!4 ~@4",
})).gain(0.89)

stack(
  piano, electric_guitar_clean, acoustic_guitar_steel, bass, ocarina, snare, low_tom, mid_tom, high_tom, ride,
  ride_soft, splash, congas, congas_2, congas_3, cabasa
)

More by Jewel