Strudelify

earth angel will you be mine

James Manche

KeyD♭ majorTempo100 bpm
0:00/0:00
// earth angel will you be mine — James Manche
// 100 bpm, 6/8, key C# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5201624; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 37 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(100/3)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// 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 B C D A B C E A B C E A B C E A B C E A B C E A B C E A B C E A B C E F>".pickRestart({
  A: "[gb4,a4,d5]!4 [d3,gb4,a4,d5] [db3,gb4,a4,d5], d3@5 ~@3", // D Dmaj7
  B: "[gb4,b4,d5]!4 [b2,gb4,b4,d5] [a2,gb4,b4,d5], b2@5 ~@3", C: "[g4,b4,d5]!4 [g2,g4,b4,d5]!2, g2@5 ~@3",
  D: "[e4,a4,db5]!2 a4 [a2,db5] [b2,a4] [db3,e4], a2@11 ~@13", // A B7 Dbm
  E: "[e4,a4,db5]!3 [a2,e4,a4,db5] [b2,e4,a4,db5] [db3,e4,a4,db5], a2@11 ~@13", F: "[d3,gb4,a4,d5]@23 ~",
})).s("gm_piano").gain(0.25)

// chords · electric guitar clean · "Electric Guitar"
const electric_guitar_clean = note(`<
  A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D E
>`.pickRestart({
  A: "[gb3,a3,d4]!2", B: "[gb3,b3,d4]@3 [a3,d4,gb4] [a3,db4,e4] [gb3,b3,d4]", C: "[g3,b3,d4]!2",
  D: "[e3,a3,db4]@3 [db3,e3,a3] [db3,g3,b3] [db3,a3,db4]", E: "[gb3,a3,d4]",
})).s("gm_electric_guitar_clean").gain(0.25)

// bass · electric bass pick · "Bass Guitar"
const bass = note("<A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D E>".pickRestart({
  A: "d2@4 d2 db2", B: "b1@4 b1 a1", C: "g1@4 g1!2", D: "a1@3 a1 b1 db2", E: "d2",
})).s("gm_electric_bass_pick").gain(0.3)

// drums · kick
const kick = s("bd").struct("<[x!6]!36 ~>").gain(0.25)

// drums · hihat
const hihat = s("hh").struct("<[x!2]!36 ~>").gain(0.25)

// drums · open hat
const open_hat = s("oh").struct("<~@36 x>").gain(0.25)

stack(piano, electric_guitar_clean, bass, kick, hihat, open_hat)