Strudelify

heart of stone

Iko

KeyD♭ majorTempo66 bpm
0:00/0:00
// heart of stone — Iko
// 66 bpm, 4/4, key Db major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Transcription provider: pdmx. https://musescore.com/score/5873024; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 64 bars on a 48-step grid, each part at one level. Source detail keeps the original performance.
setcpm(66/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 C A@2 D@2 E@2 F G A@2 D@2 H@2 F I F G J@4 K@5 L@8 M@8 N@8 O@8 ~>".pickRestart({
  A: "[db4 [c4,ab4] [gb2,db3,bb3,f4]@2, [bb2,f3] ~, ~ db4@3]/2", B: "db4 [c4,db4,ab4], [bb2,f3]", C: "[gb2,db3,bb3]",
  D: "[db4 [c4,ab4] ~ [f2,c3,ab3,eb4], [bb2,f3] [gb2,db3,bb3,f4], ~ db4@3]/2", // Fm Fm7 Bb5 Gbmaj7
  E: "[db4@4 [c4,ab4]@4 ~@7 c4, [bb2,f3] [gb2,db3,bb3,f4], ~@2 db4@5 db4]/2", F: "db3 [f2,db3,f3,ab3], [gb2,gb3,bb3]",
  G: "[ab2,eb3,ab3]", H: "[db4@4 [c4,ab4]@4 ~@7 c4, [bb2,f3] [gb2,db3,bb3,f4], ~@2 db4@5 [f2,ab3,db4]]/2",
  I: "ab3@6 ~ [ab2,c4], eb3, ab2@7 ~, ~@3 [f2,ab3,db4]", // Ab Db
  J: "[~@44 db3@3 ~@43 db3@3 ~@44 f3@3 ~@43 f3@3 ~@3 db3@3, [gb2,bb4]@47 [gb2,bb4]@47 ~@5 db4@15 f3@2 [bb3,db4]@3 f3@3 bb3@17 ~@4 f3@6 f3@2 [c4,eb4]@3 f3@3 [c4,eb4]@12 db4@3 f3@3 [c4,eb4]@12 ~@5, ~@3 db3@6 db3@3 [ab3,c4]@3 db3@2 [ab3,c4]@12 bb3@3 db3@3 [ab3,c4]@12 ~@5 bb3@15 db3@3 [gb3,bb3]@3 db3@3 gb3@17 [bb2,c5]@47 [bb2,c5]@47 ~@5, ~@6 db4@32 db3@3 [bb3,db4]@6 ~@5 db4@27 db3@3 [ab3,c4]@12 ~@2 f3@6 f3@3 [c4,eb4]@3 f3@3 [c4,eb4]@11 db4@3 f3@3 [c4,eb4]@12 ~@6 db4@14 f3@3 [bb3,db4]@3 f3@3 bb3@17 [gb2,bb4]@6, ~@6 bb3@14 db3@3 [gb3,bb3]@3 db3@3 gb3@17 ~@4 db3@5 db3@3 [ab3,c4]@3 db3@3 [ab3,c4]@12 bb3@8 db3@3 [bb3,db4]@6 ~@6 f4@32 f3@3 [db4,f4]@6 ~@6 f4@32 f3@3 [db4,f4]@6 ~@5]/4", // Gb Bbm Cm Ab Gb Bbsus2 Bbm Ab …
  K: "[~@38 db3@3 ~@44 db3@3 ~@43 f3@3 ~@23 db4@12 ~@6 [ab2,c4]@6 db3@24 [f2,db3,f3,ab3]@24 [ab2,eb3,ab3]@11, db4@32 db3@6 ~@3 [gb2,bb4]@47 [bb2,c5]@46 [bb2,c5]@23 bb3@12 [f2,ab3,db4]@12 [gb2,gb3,bb3]@48 ~@11, bb3@17 ~ [gb3,bb3]@5 gb3@17 ~@4 db3@6 db3@3 [ab3,c4]@3 db3@2 [ab3,c4]@12 bb3@3 db3@3 [ab3,c4]@12 ~@5 db4@15 f3@3 [bb3,db4]@3 f3@3 bb3@17 ~@3 f3@6 f3@3 [c4,eb4]@3 f3@3 eb4@29 ~@59, ~@3 db3@6 db3@6 db3@6 db3@2 bb3@12 [bb3,db4]@6 ~@6 db4@32 db3@3 [bb3,db4]@6 ~@5 f4@27 f3@2 [c4,eb4]@12 ~@6 db4@12 c4@3 f3@26 ~@59, ~@6 [ab3,c4]@6 [ab3,c4]@14 db3@3 [ab3,c4]@12 ~@6 bb3@14 db3@3 [gb3,bb3]@3 db3@3 gb3@17 ~@3 f3@6 f3@3 [c4,eb4]@3 f3@3 [c4,eb4]@12 db4@8 f3@3 [db4,f4]@6 ~@6 f4@41 ~@59]/5", // Ab Db Ab5 Gb Bbsus2 Db Gb Ab …
  L: "[~@31 [ab2,c4]@6 db3@24 [f2,db3,f3,ab3]@24 [ab2,eb3,ab3]@96 db4@24 [c4,ab4]@24 [gb2,db3,bb3,f4]@48 db4@24 [c4,ab4]@24 ~@24 [f2,c3,ab3,eb4]@24 [bb2,f3,db4]@11, ~@25 [f2,ab3,db4]@12 [gb2,gb3,bb3]@48 ~@96 [bb2,f3]@48 ~@48 [bb2,f3]@48 [gb2,db3,bb3,f4]@48 ~@11, ~@205 db4@72 ~@24 db4@72 ~@11]/8", // Ab Db Ab5 Fm Gbmaj7 Fm Fm7 Bbm …
  M: "[~@13 [c4,ab4]@24 ~@42 c4@6 db3@24 [f2,db3,f3,ab3]@24 [ab2,eb3,ab3]@48 ~@43 db3@3 ~@44 db3@3 ~@44 f3@2 ~@44 f3@3 ~@15 db3@2, ~@13 db4@60 [ab3,db4]@12 ~@99 db3@5 db3@3 [ab3,c4]@3 db3@3 [ab3,c4]@12 bb3@3 db3@3 [ab3,c4]@12 ~@5 bb3@15 db3@3 [gb3,bb3]@2 db3@3 gb3@17 ~@4 f3@6 f3@2 [c4,eb4]@3 f3@3 [c4,eb4]@12 db4@3 f3@3 [c4,eb4]@12 ~@5 db4@15 f3@3 [bb3,db4]@3 f3@3 bb3@17 ~@3 db3@6 db3@6 ~@2, ~@37 [gb2,db3,bb3,f4]@48 [gb2,gb3,bb3]@48 ~@48 [gb2,bb4]@46 [gb2,bb4]@47 [bb2,c5]@46 [bb2,c5]@47 [gb2,bb4]@17, ~@186 db4@33 db3@2 [bb3,db4]@6 ~@6 db4@26 db3@3 [ab3,c4]@12 ~@6 db4@14 f3@3 [bb3,db4]@3 f3@3 bb3@17 ~@3 f3@6 f3@3 [c4,eb4]@3 f3@3 [c4,eb4]@12 db4@2 f3@3 [c4,eb4]@12 ~@6 [bb3,db4]@11, ~@186 bb3@15 db3@3 [gb3,bb3]@3 db3@3 gb3@17 ~@3 db3@6 db3@3 [ab3,c4]@3 db3@3 [ab3,c4]@11 bb3@9 db3@3 [bb3,db4]@6 ~@6 f4@32 f3@3 [db4,f4]@6 ~@5 f4@32 f3@3 [db4,f4]@6 ~@12 [ab3,c4]@5]/8", // Fm Db Ab5 Db5 Ab Gb Cm Bbm …
  N: "[~@27 db3@3 ~@43 db3@3 ~@44 f3@3 ~@43 f3@3 ~@43 db3@3 ~@42 db3@3 ~@42 f3@3 ~@43 f3@2 ~@32 db3@2, [ab3,c4]@17 ~ [ab3,c4]@12 ~@5 bb3@15 db3@3 [gb3,bb3]@3 db3@3 gb3@17 [bb2,c5]@47 [bb2,c5]@47 ~@2 db3@6 db3@3 [ab3,c4]@3 db3@2 [ab3,c4]@12 bb3@2 db3@3 [ab3,c4]@11 ~@6 bb3@14 db3@3 [gb3,bb3]@3 db3@3 gb3@17 ~@3 f3@5 f3@3 [c4,eb4]@3 f3@3 [c4,eb4]@11 db4@3 f3@3 [c4,eb4]@11 ~@6 db4@14 f3@3 [bb3,db4]@3 f3@2 bb3@17 ~@3 db3@6 db3@3 [ab3,c4]@3 db3@2 [ab3,c4]@17, ~@3 db3@6 db3@6 db3@6 db3@6 ~@3 [gb2,bb4]@47 ~@5 db4@15 f3@2 [bb3,db4]@3 f3@3 bb3@17 ~@4 f3@6 f3@2 [c4,eb4]@3 f3@3 [c4,eb4]@12 db4@3 f3@3 [c4,eb4]@12 ~@5 bb3@14 db3@3 [gb3,bb3]@3 db3@3 gb3@17 ~@2 db3@6 db3@3 [ab3,c4]@3 db3@3 [ab3,c4]@11 bb3@3 db3@3 [ab3,c4]@11 ~@6 db4@14 f3@3 [bb3,db4]@2 f3@3 bb3@17 ~@3 f3@6 f3@2 [c4,eb4]@3 f3@3 [c4,eb4]@11 db4@3 f3@3 [c4,eb4]@11 ~@6 bb3@14 db3@3 [gb3,bb3]@3 db3@3 [gb3,bb3]@5, ~@6 [gb3,bb3]@6 gb3@17 ~@4 db3@5 db3@3 [ab3,c4]@3 db3@3 [ab3,c4]@12 bb3@3 db3@3 [ab3,c4]@12 ~@2 f3@6 f3@3 [c4,eb4]@3 f3@3 [c4,eb4]@11 db4@3 f3@3 [c4,eb4]@12 ~@6 db4@14 f3@3 [bb3,db4]@3 f3@3 bb3@17 [gb2,bb4,bb5]@45 ~ [gb2,bb4,bb5]@45 [bb2,c5,c6]@45 [bb2,c5,c6]@45 [gb2,bb4,bb5]@34, ~@12 bb3@12 [bb3,db4]@6 ~@5 db4@32 db3@3 [bb3,db4]@6 ~@6 f4@32 f3@3 [db4,f4]@6 ~@6 f4@32 f3@3 [db4,f4]@6 ~@5 db4@31 db3@3 [bb3,db4]@6 ~@5 db4@31 db3@3 [bb3,db4]@6 ~@6 f4@31 f3@2 [db4,f4]@6 ~@6 f4@31 f3@3 [db4,f4]@6 ~@5 db4@28]/8", // Ab Gb Bbsus2 Ab Gb Cm Bbm Ab …
  O: "[~@9 db3@3 ~@42 db3@3 ~@42 f3@3 ~@23 db4@11 ~@6 [ab2,c4]@6 db3@24 [f2,db3,f3,ab3]@24 ab3@36 ~@6 [ab2,c4]@6 db3@24 [f2,db3,f3,ab3]@24 [ab2,eb3,ab3]@92, [ab3,c4]@11 ~@3 db3@6 db3@3 [ab3,c4]@3 db3@3 [ab3,c4]@11 bb3@3 db3@3 [ab3,c4]@11 ~@6 db4@14 f3@3 [bb3,db4]@2 f3@3 bb3@17 ~@3 f3@6 f3@2 [c4,eb4]@3 f3@3 eb4@6 bb3@11 [f2,ab3,db4]@12 [gb2,gb3,bb3]@48 ab2@42 ~@146, ~@3 db3@6 ~@3 [gb2,bb4,bb5]@45 [bb2,c5,c6]@45 [bb2,c5,c6]@46 ~@84 [f2,ab3,db4]@12 [gb2,gb3,bb3]@48 ~@92, ~@6 [bb3,db4]@6 ~@5 db4@31 db3@3 [bb3,db4]@6 ~@6 f4@31 f3@3 [db4,f4]@6 ~@5 f4@40 ~@236, ~@17 bb3@14 db3@3 [gb3,bb3]@3 db3@3 gb3@17 ~@3 f3@5 f3@3 [c4,eb4]@3 f3@3 [c4,eb4]@11 db4@3 f3@3 [c4,eb4]@11 ~@6 db4@11 c4@3 f3@26 ~@48 eb3@48 ~@140]/8", // Ab Db Ab Db Ab5 Ab Bbm Cm …
})).s("gm_piano").gain(0.25)

// chords · string ensemble 1 · "Strings"
const string_ensemble_1 = note("<~@22 A@8 ~@12 B@8 C@8 ~@6>".pickRestart({
  A: "[[gb1,gb2,bb3]@93 [bb1,bb2,c4]@93 [gb1,gb2,bb3]@93 ~ [gb1,gb2,c4]@70 ~@34]/8", // Gb Bbsus2 Gb Gbdim
  B: "[~@37 [gb1,gb2,bb3]@93 [bb1,bb2,c4]@93 [gb1,gb2,bb3]@93 [bb1,bb2,c4]@68]/8", // Gb Bbsus2 Gb Bbsus2
  C: "[~@25 [gb1,gb2,bb3]@90 ~ [bb1,bb2,c4]@90 [gb1,gb2,bb3]@90 ~ [bb1,bb2,c4]@68 ~@19]/8", // Gb Bbsus2 Gb Bbsus2
})).s("gm_string_ensemble_1").gain(0.15)

stack(piano, string_ensemble_1)