0:00/0:00
// Zanzibar — Billy Joel
// 140 bpm, 4/4, key A# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 7/8 at bar 44, 4/4 at bar 45, 7/8 at bar 90, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: Full arrangement: all 152 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(140/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@2 C@4 D@5 E@5 C@4 F@5 G H I J K L M N O P@2 Q R@3 S@6 T U S@2 V W X T X S Y Z S@2 T U S@2 V W X T AA S Y AB AC
AD AE AF AG AH AI@2 AJ AK AL AM ~@16 AN@6 AO AP AN@2 AQ AR AS AO AT AN AU AV AW AX AY AZ BA BB BC@4 BD BE ~ BF BG@11
BH
>`.pickRestart({
A: "[~@4 [f3,ab3,b3,d4]@15 ~@5 [f3,ab3,c4,f4]@2 ~@2 [f3,ab3,c4,f4]@6 ~@2 [db3,f3,bb3,c4]@3 ~ [db3,f3,bb3,c4] ~ [db3,f3,bb3,c4] ~@3 [db3,f3,bb3,c4]@4 ~@2 [db3,f3,bb3,c4]@3 ~ [db3,f3,bb3,c4] ~ [db3,f3,bb3,c4] ~@3 [db3,f3,bb3,c4]@4 ~@2 [db3,f3,bb3,c4]@3 ~ [db3,f3,bb3,c4] ~ [db3,f3,bb3,c4] ~@3 [db3,f3,bb3,c4]@4 ~@2 [db3,f3,bb3,c4]@3 ~ [db3,f3,bb3,c4] ~ [db3,f3,bb3,c4] ~@3 [db3,f3,bb3,c4]@4 ~@2 [db3,f3,bb3,c4]@3 ~ [db3,f3,bb3,c4] ~ [db3,f3,bb3,c4] ~@3 [db3,f3,bb3,c4]@4 ~@2 [db3,f3,bb3,c4]@3 ~ [db3,f3,bb3,c4] ~ [db3,f3,bb3,c4] ~@3 [db3,f3,bb3,c4]@2, ~@4 ab2@19 ~@105]/8", // Fdim Fm Bbm
B: "[~@4 [db3,gb3,bb3]@3 ~ [db3,gb3,bb3] ~ [db3,gb3,bb3] ~@3 [db3,gb3,bb3]@5 ~ [db3,gb3,bb3]@3 ~ [db3,gb3,bb3] ~ [db3,gb3,bb3] ~ [db3,gb3,bb3]@3 ~]/2", // Gb
C: "[[db3,gb3,bb3]@3 ~ [db3,f3,bb3,c4]@3 ~ [db3,f3,bb3,c4] ~ [db3,f3,bb3,c4] ~@3 [db3,f3,bb3,c4]@4 ~@2 [db3,f3,bb3,c4]@3 ~ [db3,f3,bb3,c4] ~ [db3,f3,bb3,c4] ~@3 [db3,f3,bb3,c4]@4 ~@2 [eb3,gb3,b3,eb4]@3 ~ [eb3,gb3,b3,eb4] ~ [eb3,gb3,b3,eb4] ~ [eb3,gb3,b3,eb4] ~ [eb3,gb3,b3,eb4]@4 ~@2 [eb3,gb3,b3,eb4]@3 ~ [eb3,gb3,b3,eb4] ~ [eb3,gb3,b3,eb4] ~ [eb3,gb3,b3] ~@3, ~@30 eb4 ~]/4", // Gb Bbm B
D: "[[eb3,gb3,b3,eb4]@3 ~@5 [db3,f3,ab3,db4]@11 ~ [db3,gb3,bb3]@3 ~ [db3,gb3,bb3] ~ [db3,gb3,bb3] ~@3 [db3,gb3,bb3]@5 ~@5 [db3,f3,ab3,db4]@11 ~ [db3,f3,bb3,c4]@3 ~ [db3,f3,bb3,c4] ~ [db3,f3,bb3,c4] ~@3 [db3,f3,bb3,c4]@4 ~@2 [eb3,g3,bb3,c4] ~ [eb3,g3,bb3,c4] ~ [eb3,g3,bb3,c4] ~ [eb3,g3,bb3,c4] ~ [eb3,g3,bb3,c4] ~ [eb3,g3,bb3,c4] ~]/5", // B Db Gb Db Bbm Cm7
E: "[[eb3,g3,bb3,c4] ~ [eb3,g3,bb3,c4] ~ [c3,f3,ab3,c4] ~@3 [c3,f3,ab3,c4]@11 ~ [db3,f3,bb3,c4]@3 ~ [db3,f3,bb3,c4] ~ [db3,f3,bb3,c4] ~@3 [db3,f3,bb3,c4]@4 ~@2 [db3,f3,bb3,c4]@3 ~ [db3,f3,bb3,c4] ~ [db3,f3,bb3,c4] ~@3 [db3,f3,bb3,c4]@4 ~@2 [db3,gb3,bb3]@3 ~ [db3,gb3,bb3] ~ [db3,gb3,bb3] ~@3 [db3,gb3,bb3]@5 ~ [db3,gb3,bb3]@3 ~ [db3,gb3,bb3] ~ [db3,gb3,bb3] ~ [db3,gb3,bb3]@3 ~]/5", // Cm7 Fm Bbm Gb
F: "[[eb3,gb3,b3,eb4]@3 ~@5 [db3,f3,ab3,db4]@11 ~ [db3,gb3,bb3]@3 ~ [db3,gb3,bb3] ~ [db3,gb3,bb3] ~@3 [db3,gb3,bb3]@5 ~@5 [c3,f3,ab3,c4]@11 ~ [db3,f3,bb3,c4]@3 ~ [db3,f3,bb3,c4] ~ [db3,f3,bb3,c4] ~@3 [db3,f3,bb3,c4]@4 ~@2 [eb3,g3,bb3,c4] ~ [eb3,g3,bb3,c4] ~ [eb3,g3,bb3,c4] ~ [eb3,g3,bb3,c4] ~ [eb3,g3,bb3,c4] ~ [eb3,g3,bb3,c4] ~]/5", // B Db Gb Fm Bbm Cm7
G: "[eb3,g3,bb3,c4] ~ [eb3,g3,bb3,c4] ~ [eb3,ab3,c4] ~ [eb3,ab3,c4] ~ [eb3,ab3,c4] ~ [eb3,ab3,c4] ~ [eb3,ab3,c4] ~@3", // Cm7 Ab
H: "~@4 [f3,ab3,db4] ~ [f3,ab3,db4] ~ [f3,ab3,db4] ~ [f3,ab3,db4] ~ [f3,ab3,db4] ~ [f3,ab3,db4] ~", // Db
I: "[f3,ab3,db4] ~ [f3,ab3,db4] ~ [eb3,gb3,ab3,c4] ~ [eb3,gb3,ab3,c4] ~ [eb3,gb3,ab3,c4] ~ [eb3,gb3,ab3,c4] ~ [eb3,gb3,ab3,c4] ~ [eb3,gb3,ab3,c4] ~", // Db Ab7
J: "[eb3,gb3,ab3,c4] ~ [eb3,gb3,ab3,c4] ~ [f3,ab3,b3,db4] ~ [f3,ab3,b3,db4] ~ [f3,ab3,b3,db4] ~ [f3,ab3,b3,db4] ~ [f3,ab3,b3,db4] ~ [f3,ab3,b3,db4] ~", // Ab7 Db7
K: "[f3,ab3,b3,db4] ~ [f3,ab3,b3,db4] ~ [db3,gb3,a3] ~ [db3,gb3,a3] ~ [db3,gb3,a3] ~ [db3,gb3,a3] ~ [db3,gb3,a3] ~ [db3,gb3,a3] ~", // Db7 Gbm
L: "[db3,gb3,a3] ~ [db3,gb3,a3] ~ [eb3,gb3,a3,b3] ~ [eb3,gb3,a3,b3] ~ [eb3,gb3,a3,b3] ~ [eb3,gb3,a3,b3] ~ [eb3,gb3,a3,b3] ~ [eb3,gb3,a3,b3] ~", // Gbm B7
M: "[eb3,gb3,a3,b3] ~ [eb3,gb3,a3,b3] ~ [e3,ab3,b3] ~ [e3,ab3,b3] ~ [e3,ab3,b3] ~ [e3,ab3,b3] ~ [e3,ab3,b3] ~ [e3,ab3,b3] ~", // B7 E
N: "[e3,ab3,b3] ~ [e3,ab3,b3] ~ [db3,e3,a3]@2 ~@4 [e3,ab3,b3]@2 ~@4", O: "[db3,gb3,a3]",
P: "[[db3,gb3,a3] ~ [eb3,ab3,b3]@16 [db3,e3,a3]@14]/2", // Gbm Abm A
Q: "~@2 [db3,e3,a3] ~ [db3,e3,a3] ~ [db3,e3,a3] ~ [db3,e3,a3] ~ [db3,e3,a3] ~ [db3,e3,a3] ~ [db3,e3,a3] ~", // A
R: "[[db3,e3,a3] ~ [db3,e3,a3]@2 ~@2 [eb3,g3,bb3,db4]@12 [f3,ab3,b3,d4]@15 ~@5 [f3,ab3,c4,f4]@2 ~@2 [f3,ab3,c4,f4]@6, ~@18 ab2@19 ~@11]/3", // A Eb7 Fdim Fm
S: "~@2 [db3,f3,bb3,c4]@3 ~ [db3,f3,bb3,c4] ~ [db3,f3,bb3,c4] ~@3 [db3,f3,bb3,c4]@4", // Bbm
T: "~@2 [db3,gb3,bb3]@3 ~ [db3,gb3,bb3] ~ [db3,gb3,bb3] ~@3 [db3,gb3,bb3]@4", // Gb
U: "~@2 [db3,gb3,bb3]@3 ~ [db3,gb3,bb3] ~ [db3,gb3,bb3] ~ [db3,gb3,bb3]@3 ~ [db3,gb3,bb3]@2", // Gb
V: "~@2 [eb3,gb3,b3,eb4]@3 ~ [eb3,gb3,b3,eb4] ~ [eb3,gb3,b3,eb4] ~ [eb3,gb3,b3,eb4] ~ [eb3,gb3,b3,eb4]@4", // B
W: "~@2 [eb3,gb3,b3,eb4]@3 ~ [eb3,gb3,b3,eb4] ~ [eb3,gb3,b3,eb4] ~ [eb3,gb3,b3,eb4] ~@3 [eb3,gb3,b3,eb4]@2", // B
X: "~@3 [db3,f3,ab3,db4]@5", // Db
Y: "~@2 [eb3,g3,bb3,c4] ~ [eb3,g3,bb3,c4] ~ [eb3,g3,bb3,c4] ~ [eb3,g3,bb3,c4] ~ [eb3,g3,bb3,c4] ~ [eb3,g3,bb3,c4] ~ [eb3,g3,bb3,c4] ~", // Cm7
Z: "[eb3,g3,bb3,c4] ~ [c3,f3,ab3,c4] ~@3 [c3,f3,ab3,c4]@10", AA: "~@3 [c3,f3,ab3,c4]@5",
AB: "[eb3,g3,bb3,c4] ~ [eb3,ab3,c4] ~ [eb3,ab3,c4] ~ [eb3,ab3,c4] ~ [eb3,ab3,c4] ~ [eb3,ab3,c4] ~@5", // Cm7 Ab
AC: "~@2 [f3,ab3,db4] ~ [f3,ab3,db4] ~ [f3,ab3,db4] ~ [f3,ab3,db4] ~ [f3,ab3,db4] ~ [f3,ab3,db4] ~ [f3,ab3,db4] ~", // Db
AD: "[f3,ab3,db4] ~ [eb3,gb3,ab3,c4] ~ [eb3,gb3,ab3,c4] ~ [eb3,gb3,ab3,c4] ~ [eb3,gb3,ab3,c4] ~ [eb3,gb3,ab3,c4] ~ [eb3,gb3,ab3,c4] ~ [eb3,gb3,ab3,c4] ~", // Db Ab7
AE: "[eb3,gb3,ab3,c4] ~ [f3,ab3,b3,db4] ~ [f3,ab3,b3,db4] ~ [f3,ab3,b3,db4] ~ [f3,ab3,b3,db4] ~ [f3,ab3,b3,db4] ~ [f3,ab3,b3,db4] ~ [f3,ab3,b3,db4] ~", // Ab7 Db7
AF: "[f3,ab3,b3,db4] ~ [db3,gb3,a3] ~ [db3,gb3,a3] ~ [db3,gb3,a3] ~ [db3,gb3,a3] ~ [db3,gb3,a3] ~ [db3,gb3,a3] ~ [db3,gb3,a3] ~", // Db7 Gbm
AG: "[db3,gb3,a3] ~ [eb3,gb3,a3,b3] ~ [eb3,gb3,a3,b3] ~ [eb3,gb3,a3,b3] ~ [eb3,gb3,a3,b3] ~ [eb3,gb3,a3,b3] ~ [eb3,gb3,a3,b3] ~ [eb3,gb3,a3,b3] ~", // Gbm B7
AH: "[eb3,gb3,a3,b3] ~ [e3,ab3,b3] ~ [e3,ab3,b3] ~ [e3,ab3,b3] ~ [e3,ab3,b3] ~ [e3,ab3,b3] ~ [e3,ab3,b3] ~ [e3,ab3,b3] ~", // B7 E
AI: "[[e3,ab3,b3] ~ [db3,e3,a3]@2 ~@4 [e3,ab3,b3]@2 ~@4 [db3,gb3,a3]@16 [db3,gb3,a3] ~]/2", AJ: "[eb3,ab3,b3]",
AK: "[db3,e3,a3]@7 ~", // A
AL: "[db3,e3,a3] ~ [db3,e3,a3] ~ [db3,e3,a3] ~ [db3,e3,a3] ~ [db3,e3,a3] ~ [db3,e3,a3] ~ [db3,e3,a3] ~ [db3,e3,a3] ~", // A
AM: "[db3,e3,a3] ~ [eb3,g3,bb3,db4]@6", // A Eb7
AN: "[db3,f3,bb3,c4]@3 ~ [db3,f3,bb3,c4] ~ [db3,f3,bb3,c4] ~@3 [db3,f3,bb3,c4]@4 ~@2", // Bbm
AO: "[db3,gb3,bb3]@3 ~ [db3,gb3,bb3] ~ [db3,gb3,bb3] ~@3 [db3,gb3,bb3]@5 ~", // Gb
AP: "[db3,gb3,bb3]@3 ~ [db3,gb3,bb3] ~ [db3,gb3,bb3] ~ [db3,gb3,bb3]@3 ~ [db3,gb3,bb3]@3 ~", // Gb
AQ: "[eb3,gb3,b3,eb4]@3 ~ [eb3,gb3,b3,eb4] ~ [eb3,gb3,b3,eb4] ~ [eb3,gb3,b3,eb4] ~ [eb3,gb3,b3,eb4]@4 ~@2", // B
AR: "[eb3,gb3,b3,eb4]@3 ~ [eb3,gb3,b3,eb4] ~ [eb3,gb3,b3,eb4] ~ [eb3,gb3,b3] ~@3 [eb3,gb3,b3,eb4]@3 ~, ~@4 eb4 ~@3", // B
AS: "~@4 [db3,f3,ab3,db4]@11 ~", AT: "~@4 [c3,f3,ab3,c4]@11 ~",
AU: "[eb3,g3,bb3,c4] ~ [eb3,g3,bb3,c4] ~ [eb3,g3,bb3,c4] ~ [eb3,g3,bb3,c4] ~ [eb3,g3,bb3,c4] ~ [eb3,g3,bb3,c4] ~ [eb3,g3,bb3,c4] ~ [eb3,g3,bb3,c4] ~", // Cm7
AV: "[eb3,ab3,c4] ~ [eb3,ab3,c4] ~ [eb3,ab3,c4] ~ [eb3,ab3,c4] ~ [eb3,ab3,c4] ~@7", // Ab
AW: "[f3,ab3,db4] ~ [f3,ab3,db4] ~ [f3,ab3,db4] ~ [f3,ab3,db4] ~ [f3,ab3,db4] ~ [f3,ab3,db4] ~ [f3,ab3,db4] ~ [f3,ab3,db4] ~", // Db
AX: "[eb3,gb3,ab3,c4] ~ [eb3,gb3,ab3,c4] ~ [eb3,gb3,ab3,c4] ~ [eb3,gb3,ab3,c4] ~ [eb3,gb3,ab3,c4] ~ [eb3,gb3,ab3,c4] ~ [eb3,gb3,ab3,c4] ~ [eb3,gb3,ab3,c4] ~", // Ab7
AY: "[f3,ab3,b3,db4] ~ [f3,ab3,b3,db4] ~ [f3,ab3,b3,db4] ~ [f3,ab3,b3,db4] ~ [f3,ab3,b3,db4] ~ [f3,ab3,b3,db4] ~ [f3,ab3,b3,db4] ~ [f3,ab3,b3,db4] ~", // Db7
AZ: "[db3,gb3,a3] ~ [db3,gb3,a3] ~ [db3,gb3,a3] ~ [db3,gb3,a3] ~ [db3,gb3,a3] ~ [db3,gb3,a3] ~ [db3,gb3,a3] ~ [db3,gb3,a3] ~", // Gbm
BA: "[eb3,gb3,a3,b3] ~ [eb3,gb3,a3,b3] ~ [eb3,gb3,a3,b3] ~ [eb3,gb3,a3,b3] ~ [eb3,gb3,a3,b3] ~ [eb3,gb3,a3,b3] ~ [eb3,gb3,a3,b3] ~ [eb3,gb3,a3,b3] ~", // B7
BB: "[e3,ab3,b3] ~ [e3,ab3,b3] ~ [e3,ab3,b3] ~ [e3,ab3,b3] ~ [e3,ab3,b3] ~ [e3,ab3,b3] ~ [e3,ab3,b3] ~ [e3,ab3,b3] ~", // E
BC: "[[db3,e3,a3]@2 ~@4 [e3,ab3,b3]@2 ~@4 [db3,gb3,a3]@16 [db3,gb3,a3] ~ [eb3,ab3,b3]@16 [db3,e3,a3]@14 ~@2 [db3,e3,a3] ~]/4", // A E Gbm Abm A
BD: "[db3,e3,a3] ~ [db3,e3,a3] ~ [db3,e3,a3] ~ [db3,e3,a3] ~ [db3,e3,a3] ~ [db3,e3,a3] ~ [db3,e3,a3] ~ [db3,e3,a3]@2", // A
BE: "~ [eb3,g3,bb3,db4]@6 ~", BF: "~@7 [db3,f3,bb3,c4]",
BG: "~@2 [db3,f3,bb3,c4] ~ [db3,f3,bb3,c4] ~@3 [db3,f3,bb3,c4]@4 ~@2 [db3,f3,bb3,c4]@2", // Bbm
BH: "~@2 [db3,f3,bb3,c4] ~ [db3,f3,bb3,c4] ~@3 [db3,f3,bb3,c4]@4 ~@4", // Bbm
})).s("gm_piano").gain(0.14).pan(0.3)
// bass · electric bass finger
const bass = note(`<
~ A@2 B@5 C D E B F@2 G@2 H@2 I J K B C D E B F@2 G@2 L@2 I M N O N P Q R S T U V W X Y Z AA@6 AB AC AA@2 AD AE AF AC
AF AG AH AI AA@2 AB AC AA@2 AD AE AF AC AJ AG AH AK AL AM AL AN AO AP AQ@2 AR AS AT AU AV@2 AW AX AY AZ BA AW AZ BB BC
BD BE BF BG@2 BH@6 BI BJ BH@2 BK BL BM BJ BN BO BP BQ BR BS BR BT BU BV BW@4 AT BX@8 BY@7
>`.pickRestart({
A: "[~@8 c2@3 ~ f2@6 ~@2 bb1@7 ~ f1@2 ~@2]/2", B: "ab1@3 ~ bb1@7 ~ f1@2 ~@2", C: "ab1@3 ~ gb2@5 ~ gb2@2 db2@3 ~",
D: "db2@3 ~ gb2@5 ~ gb2@2 db2@3 ~", E: "eb2@3 ~ bb1@7 ~ f1@2 ~@2", F: "ab1@3 ~ b1@5 ~ b1@2 gb1@3 ~",
G: "[b1@3 ~@5 db2@11 ~ gb2@5 ~ gb2@2 db2@3 ~]/2", H: "[eb2@3 ~@5 db2@10 ~@2 bb1@7 ~ f1@2 ~@2]/2",
I: "bb1 ~ bb1 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~", J: "c2 ~ c2 ~ f2@2 ~@2 f2@8", K: "~@4 bb1@7 ~ f1@2 ~@2",
L: "[eb2@3 ~@5 f1@10 ~@2 bb1@7 ~ f1@2 ~@2]/2", M: "c2 ~ c2 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~@3",
N: "~@4 db2 ~@3 db2 ~@7", O: "~@8 ab1 ~@5 c2@2", P: "~@8 gb2 ~@5 a1 ~", Q: "~@4 b1 ~@3 b1 ~@7",
R: "~@8 e2@2 ~@4 ab2 ~", S: "~@4 a2 ~@5 ab2 ~@5", T: "gb2@11 ~@5", U: "gb2@2 ab2@13 ~", V: "~ a1@7",
W: "~@2 a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~", X: "a1 ~ a1 ~@3 eb2@10", Y: "~ ab1@7", Z: "~@6 c2@3 ~ f2@6",
AA: "~@2 bb1@7 ~ f1@2 ~@2 ab1@2", AB: "~@2 gb2@5 ~ gb2@2 db2@3 ~ db2@2", AC: "~@2 gb2@5 ~ gb2@2 db2@3 ~ eb2@2",
AD: "~@2 b1@5 ~ b1@2 gb1@3 ~ ab1@2", AE: "~@2 b1@5 ~ b1@2 gb1@3 ~ b1@2", AF: "~@3 db2@5",
AG: "~@2 bb1@7 ~ f1@2 ~@2 bb1 ~", AH: "bb1 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~", AI: "c2 ~ f2 ~@3 f2@8 ~@2",
AJ: "~@3 f1@5", AK: "c2 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~@5", AL: "~@2 db2 ~@3 db2 ~@9", AM: "~@6 ab1 ~@5 c2@2 ~@2",
AN: "~@6 gb2 ~@5 a1 ~@3", AO: "~@2 b1 ~@3 b1 ~@9", AP: "~@6 e2 ~@5 ab2 ~@3",
AQ: "[~@2 a2 ~@5 ab2 ~@5 gb2@11 ~@5 gb2@2]/2", AR: "ab2@13 ~@3", AS: "a1@7 ~",
AT: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~", AU: "a1 ~@3 eb2@11 ~", AV: "[ab1@29 ~@3]/2", AW: "d2", AX: "b1@15 ~",
AY: "ab1@15 ~", AZ: "f2@15 ~", BA: "ab2 f2", BB: "e2@15 ~", BC: "eb2@15 ~", BD: "d2@15 ~", BE: "db2", BF: "c2",
BG: "[f1@31 ~]/2", BH: "bb1@7 ~ f1@2 ~@2 ab1@3 ~", BI: "gb2@5 ~ gb2@2 db2@3 ~ db2@3 ~",
BJ: "gb2@5 ~ gb2@2 db2@3 ~ eb2@3 ~", BK: "b1@5 ~ b1@2 gb1@3 ~ ab1@3 ~", BL: "b1@5 ~ b1@2 gb1@3 ~ b1@3 ~",
BM: "~@4 db2@11 ~", BN: "~@2 f1@5 ~", BO: "bb1@7 ~ f1@2 ~@2 bb1 ~ bb1 ~",
BP: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~", BQ: "ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~@7", BR: "db2 ~@3 db2 ~@11",
BS: "~@4 ab1 ~@5 c2 ~@5", BT: "~@4 gb2 ~@5 a1 ~@5", BU: "b1 ~@3 b1 ~@11", BV: "~@4 e2@2 ~@4 ab2 ~@5",
BW: "[a2 ~@5 ab2 ~@5 gb2@11 ~@5 gb2@2 ab2@13 ~@3 a1@14 ~@2 a1 ~]/4",
BX: "[~@2 eb2@11 ~ ab1@29 ~@3 bb1@7 ~ f1@2 ~@2 ab1@3 ~ bb1@7 ~ f1@2 ~@2 ab1@3 ~ bb1@7 ~ f1@2 ~@2 ab1@3 ~ bb1@7 ~ f1@2 ~@2 ab1@3 ~ bb1@7 ~ f1@2 ~@2 ab1@3 ~ bb1@2]/8",
BY: "[~@6 f1@2 ~@2 ab1@3 ~ bb1@7 ~ f1@2 ~@2 ab1@3 ~ bb1@7 ~ f1@2 ~@2 ab1@3 ~ bb1@7 ~ f1@2 ~@2 ab1@3 ~ bb1@7 ~ f1@2 ~@2 ab1@3 ~ bb1@7 ~ f1@2 ~@2 ab1@3 ~ bb1@7 ~ f1@2 ~@2 ab1@3 ~@3]/7",
})).s("gm_electric_bass_finger").gain(0.3)
// chords · piano
const piano_2 = note(`<
A@2 ~@32 B C D E F G H I J K L M@3 ~@32 N O P Q R S T@2 U V W X Y Z AA AB AA AB AC AD AB AE AF AG AH AI AJ@2 AK ~@17
AL AM AN AO AP AQ AR@4 W AS@3 ~@12
>`.pickRestart({
A: "[~@4 ab4@2 ~ [ab4,b4]@2 [b4,d5]@3 [d5,f5]@2 ~ [f5,ab5]@2 [ab5,b5]@3 d6@6 ~@6, ~@4 f4@19 ~@9, ~@10 b5 ~@5]/2", // Abm Bm Dm Fm Abm
B: "~@4 [ab4,db5] ~ [ab4,db5] ~ [ab4,db5] ~ [ab4,db5] ~ [ab4,db5] ~ [ab4,db5] ~", // Db5
C: "[ab4,db5] ~ [ab4,db5] ~ [ab4,c5] ~ [ab4,c5] ~ [ab4,c5] ~ [ab4,c5] ~ [ab4,c5] ~ [ab4,c5] ~", // Db5 Ab
D: "[ab4,c5] ~ [ab4,c5] ~ [ab4,db5] ~ [ab4,db5] ~ [ab4,db5] ~ [ab4,db5] ~ [ab4,b4] ~ [ab4,b4] ~", // Ab Db5 Abm
E: "[ab4,b4] ~ [ab4,b4] ~ [gb4,a4] ~ [gb4,a4] ~ [gb4,a4] ~ [gb4,a4] ~ [gb4,a4] ~ [gb4,a4] ~", // Abm Gbm
F: "[gb4,a4] ~ [gb4,a4] ~ [gb4,b4] ~ [gb4,b4] ~ [gb4,b4] ~ [gb4,b4] ~ [gb4,b4] ~ [gb4,b4] ~", // Gbm B5
G: "[gb4,b4] ~ [gb4,b4] ~ [ab4,b4] ~ [ab4,b4] ~ [ab4,b4] ~ [ab4,b4] ~ [ab4,b4] ~ [ab4,b4] ~", // B5 Abm
H: "[ab4,b4] ~ [ab4,b4] ~ [db4,e4,a4]@2 ~@4 [e4,ab4,b4]@3 ~@3", I: "[db4,gb4,a4,db5]@3 ~",
J: "[db4,gb4,a4] ~ [ab4,b4,eb5]@13 ~", K: "~ [db4,e4,a4]@7",
L: "~@2 [db4,e4,a4] ~ [db4,e4,a4] ~ [db4,e4,a4] ~ [db4,e4,a4] ~ [db4,e4,a4] ~ [db4,e4,a4] ~ [db4,e4,a4] ~", // A
M: "[[db4,e4,a4] ~ [db4,e4,a4] ~@3 [eb4,g4,bb4]@12 ab4@2 ~ [ab4,b4]@2 [b4,d5]@3 [d5,f5]@2 ~ [f5,ab5]@2 [ab5,b5]@3 d6@6 ~@8, ~@18 f4@19 ~@11, ~@17 b5 ~@6]/3", // A Eb Abm Bm Dm Fm Abm
N: "~@2 [ab4,db5] ~ [ab4,db5] ~ [ab4,db5] ~ [ab4,db5] ~ [ab4,db5] ~ [ab4,db5] ~ [ab4,db5] ~", // Db5
O: "[ab4,db5] ~ [ab4,c5] ~ [ab4,c5] ~ [ab4,c5] ~ [ab4,c5] ~ [ab4,c5] ~ [ab4,c5] ~ [ab4,c5] ~", // Db5 Ab
P: "[ab4,c5] ~ [ab4,db5] ~ [ab4,db5] ~ [ab4,db5] ~ [ab4,db5] ~ [ab4,b4] ~ [ab4,b4] ~ [ab4,b4] ~", // Ab Db5 Abm
Q: "[ab4,b4] ~ [gb4,a4] ~ [gb4,a4] ~ [gb4,a4] ~ [gb4,a4] ~ [gb4,a4] ~ [gb4,a4] ~ [gb4,a4] ~", // Abm Gbm
R: "[gb4,a4] ~ [gb4,b4] ~ [gb4,b4] ~ [gb4,b4] ~ [gb4,b4] ~ [gb4,b4] ~ [gb4,b4] ~ [gb4,b4] ~", // Gbm B5
S: "[gb4,b4] ~ [ab4,b4] ~ [ab4,b4] ~ [ab4,b4] ~ [ab4,b4] ~ [ab4,b4] ~ [ab4,b4] ~ [ab4,b4] ~", // B5 Abm
T: "[[ab4,b4] ~ [db4,e4,a4]@2 ~@4 [e4,ab4,b4]@3 ~@3 [db4,gb4,a4,db5]@12 ~@4 [db4,gb4,a4] ~]/2", // Abm A E Gbm
U: "[ab4,b4,eb5]@13 ~@3", V: "[db4,e4,a4]@7 ~",
W: "[db4,e4,a4] ~ [db4,e4,a4] ~ [db4,e4,a4] ~ [db4,e4,a4] ~ [db4,e4,a4] ~ [db4,e4,a4] ~ [db4,e4,a4] ~ [db4,e4,a4] ~", // A
X: "[db4,e4,a4] ~@3 [eb4,g4,bb4]@12", Y: "[d4,f4]@2 f4 [ab4,b4] [f4,ab4]@2 [ab4,b4] [b4,d5], ~@4 ab4 ~@11",
Z: "[f4,ab4]@2 [ab4,b4] [b4,d5] [ab4,b4]@2 [b4,d5] [d5,f5]", AA: "~@4 f5 d5 ab4@2",
AB: "~@10 d5@5 ~, ~@6 bb5@9 ~, ~@8 f5@7 ~", AC: "ab4@3 ~ f4@3 ~ d4@3 ~ b3@4", AD: "d4@4 f4@3 ~ ab4@4 b4@3 ~",
AE: "~ bb4, g4 ~, ~ c5@2 ~", AF: "~@8 c5@2 d5 ~ d5@2 c5@2", AG: "~@4 d5@3 ~, bb4@7 ~, ~@2 f5@5 ~",
AH: "~@6 f5@2 bb5@3 ~ c6@2 db6@2", AI: "bb5@3 ~",
AJ: "[~@3 c4 ~@4 c5@2 ~@2 a5@2 c6 eb6, f3@6 ~@6 f4@8 eb5@9 ~@3, ~@4 a3@4 eb4@6 a4@7 ~ f5@6 ~@4]/2", AK: "db6@7 ~",
AL: "[ab4,db5] ~ [ab4,db5] ~ [ab4,db5] ~ [ab4,db5] ~ [ab4,db5] ~ [ab4,db5] ~ [ab4,db5] ~ [ab4,db5] ~", // Db5
AM: "[ab4,c5] ~ [ab4,c5] ~ [ab4,c5] ~ [ab4,c5] ~ [ab4,c5] ~ [ab4,c5] ~ [ab4,c5] ~ [ab4,c5] ~", // Ab
AN: "[ab4,db5] ~ [ab4,db5] ~ [ab4,db5] ~ [ab4,db5] ~ [ab4,b4] ~ [ab4,b4] ~ [ab4,b4] ~ [ab4,b4] ~", // Db5 Abm
AO: "[gb4,a4] ~ [gb4,a4] ~ [gb4,a4] ~ [gb4,a4] ~ [gb4,a4] ~ [gb4,a4] ~ [gb4,a4] ~ [gb4,a4] ~", // Gbm
AP: "[gb4,b4] ~ [gb4,b4] ~ [gb4,b4] ~ [gb4,b4] ~ [gb4,b4] ~ [gb4,b4] ~ [gb4,b4] ~ [gb4,b4] ~", // B5
AQ: "[ab4,b4] ~ [ab4,b4] ~ [ab4,b4] ~ [ab4,b4] ~ [ab4,b4] ~ [ab4,b4] ~ [ab4,b4] ~ [ab4,b4] ~", // Abm
AR: "[[db4,e4,a4]@2 ~@4 [e4,ab4,b4]@3 ~@3 [db4,gb4,a4,db5]@12 ~@4 [db4,gb4,a4] ~ [ab4,b4,eb5]@13 ~@3 [db4,e4,a4]@14 ~@2 [db4,e4,a4] ~]/4", // A E Gbm Abm A
AS: "[~ [eb4,g4,bb4]@6 [d4,f4]@2 f4 [ab4,b4] [f4,ab4]@2 [ab4,b4] [b4,d5] [f4,ab4]@2 [ab4,b4] [b4,d5] [ab4,b4]@2 [b4,d5] [d5,f5] ~, ~@18 ab4 ~@29]/3", // Eb Dm Abm Fm Abm Bm Fm Abm …
})).s("gm_piano").gain(0.26).pan(0.6)
// chords · epiano1
const epiano1 = note(`<
~ A@2 ~@3 B@2 ~ C@2 D E F G@4 H I@3 ~ C@2 D E F G@4 H J ~@7 K L M ~@3 N ~@4 O@2 ~ P Q R S T U V W ~ X Y O@2 ~ P Q R S
T U V W ~ X Z ~@6 AA@2 AB AC ~@4 AD AE AF AG AH AI AG AJ AK AL AM AN AO AP AQ ~@3 AR ~@2 AS AT@2 AU AV AW AX AY ~ AZ
BA ~@6 BB@4 ~@16
>`.pickRestart({
A: "[~@8 [c5,eb5] ~@3 [ab4,c5]@7 ~@13]/2", B: "[~@3 db5 ~ bb4@5 ~@6, ~@4 f5@15 ~@13, ~@2 c5@3 ~@3]/2",
C: "[~@2 eb5 db5@2 eb5 db5@3 ~ ab4@6, ~@2 bb4@7 ~@7]/2", D: "bb4 f4@6 ~", E: "~@5 eb5@3, ~ bb4@2 ~, ~@3 gb4@5",
F: "~@5 eb5@3, ~ bb4@3, ~@3 gb4@5",
G: "[~@4 [db4,f4]@2 ~@2 [f4,ab4,db5]@10 ~@8 gb4@6 bb4@3 ~ [db4,f4,ab4]@2 ~@2 [f4,ab4,db5]@10 ~@14, ~@10 db5@7 ~@15, ~@11 bb4@3 ~@18]/4", // Db
H: "~@4 [eb4,g4] ~ [eb4,g4] ~ [eb4,g4] ~ [eb4,g4] ~ [eb4,g4] ~ [eb4,g4] ~", // Eb
I: "[[eb4,g4] ~ [eb4,g4] ~ [f4,ab4] ~@3 [c4,f4,ab4]@11 ~@3 db5@2 ~@2 bb4@10 ~@12, ~@20 f5@15 ~@13, ~@2 c5 ~]/3", // Eb Fm
J: "[eb4,g4] ~ [eb4,g4] ~ [ab3,eb4] ~ [ab3,eb4] ~ [ab3,eb4] ~ [ab3,eb4] ~ [ab3,eb4] ~@3", // Eb Ab5
K: "gb5@5 ~ gb5@2 ~@2 gb5@2 ~@4, db5@11 ~@5, ~@2 a5 ~", L: "[db4,gb4]@2 ab4@7 ~@5 eb4@2, ~@2 eb4@11 ~@3, ~@5 ab4@3",
M: "~@2 a4 e4 ~ e4@3, ~ db5@7, ~ a4", N: "~@6 [c5,eb5] ~@3 [ab4,c5]@6",
O: "[~@2 db5 ~ bb4@5 ~@7, ~@2 f5@15 ~@15, ~@3 c5@6 ~@7]/2", P: "~ eb5 db5@2 eb5 db5@3, ~ bb4@7", Q: "~ ab4@6 bb4",
R: "f4@3 ~", S: "~@4 eb5@3 ~, ~ bb4@4 ~@3, ~@4 gb4@11 ~", T: "~@4 eb5@3 ~, ~@2 bb4@13 ~, ~@4 gb4@11 ~",
U: "~ [db4,f4] ~ [f4,ab4,db5]@5", V: "~@4 gb4@3 bb4, ~ db5@7, ~@2 bb4@3 ~@3", W: "~ [db4,f4,ab4] ~ [f4,ab4,db5]@5",
X: "~@2 [eb4,g4] ~ [eb4,g4] ~ [eb4,g4] ~ [eb4,g4] ~ [eb4,g4] ~ [eb4,g4] ~ [eb4,g4] ~", // Eb
Y: "[eb4,g4] ~ [f4,ab4] ~@3 [c4,f4,ab4]@10", // Eb Fm
Z: "[eb4,g4] ~ [ab3,eb4] ~ [ab3,eb4] ~ [ab3,eb4] ~ [ab3,eb4] ~ [ab3,eb4] ~@5", // Eb Ab5
AA: "[~@14 gb5@5 ~ gb5@2 ~@2 gb5@2 ~@4 [db4,gb4]@2, ~@14 db5@11 ~@7, ~@11 a5@2 ~@3]/2", // Gb5
AB: "ab4@7 ~@5 eb4@3 ~, eb4@11 ~@5, ~@8 ab4@7 ~", AC: "~@2 a4@2 e4@2 ~@2 e4@7 ~, db5@15 ~, ~@6 a4@9 ~",
AD: "~ ab4@6 ~, d4@7 ~@9", AE: "~ f4@6 ~, b3@15 ~", AF: "~ ab4@6 ~, f5@7 ~", AG: "~@2 ab4@13 ~, d5@15 ~",
AH: "ab4 b4 d5 f5", AI: "d5 b4 ab4 e4", AJ: "~ c5, e4@15 ~, ~@4 g4@11 ~", AK: "eb5@8 bb4@7 ~", AL: "ab4 bb4 d5 ab4",
AM: "~@4 ab5@2 ~@2 ab5@7 ~, ~@3 f5@4 ~", AN: "~@3 db5 c5 ~ c5 bb4", AO: "f6@2 eb6 c6 a5@2 c6 a5",
AP: "f5@2 a5 f5 c5@2 f5 c5", AQ: "bb4@13 ~@3", AR: "~ db5 ~ bb4@5, f5@15 ~, ~ c5@3",
AS: "eb5 db5@2 eb5 db5@3 ~, bb4@7 ~", AT: "[ab4@6 bb4 f4@6 ~@3]/2", AU: "~@3 eb5@3 ~@2, bb4 ~, ~@2 gb4@11 ~@3",
AV: "~@3 eb5@3 ~@2, bb4@13 ~@3, ~@2 gb4@11 ~@3", AW: "[db4,f4] ~ [f4,ab4,db5]@5 ~",
AX: "~@6 gb4@6 bb4@3 ~, db5@7 ~, ~ bb4@3 ~@4", AY: "[db4,f4,ab4] ~ [f4,ab4,db5]@5 ~",
AZ: "[eb4,g4] ~ [eb4,g4] ~ [eb4,g4] ~ [eb4,g4] ~ [eb4,g4] ~ [eb4,g4] ~ [eb4,g4] ~ [eb4,g4] ~", // Eb
BA: "[ab3,eb4] ~ [ab3,eb4] ~ [ab3,eb4] ~ [ab3,eb4] ~ [ab3,eb4] ~@7", // Ab5
BB: "[~@12 gb5@5 ~ gb5@2 ~@2 gb5@2 ~@4 [db4,gb4]@2 ab4@7 ~@5 eb4@3 ~@3 a4@2 e4@2 ~@2 e4@7 ~@3, ~@12 db5@11 ~@7 eb4@11 ~@11 a4@9 ~@3, ~@20 a5@4 ~@14 ab4@7 ~ db5@15 ~@3]/4", // Gb5
})).s("gm_epiano1").gain(0.23).pan(0.3)
// chords · electric guitar jazz
const electric_guitar_jazz = note(`<
~@2 A@5 ~@27 B C B D E F G H ~@6 I@5 ~@27 J K J L M N O@2 ~@4 P@2 Q R S T U@2 T V W X Y Z AA@2 AB@4 ~@14 AC AD AC AE
AF AG AH@2 ~@3 AI@8 AJ@2 ~@5
>`.pickRestart({
A: "[~ [f3,bb3,db4]@4 [f3,bb3,db4]@4 [f3,bb3,db4]@4 [f3,bb3,db4]@4 ~@3]/5", B: "~@4 db4 ~@3 db4 ~@7",
C: "~@8 ab3 ~@5 c4@2", D: "~@8 gb4 ~@5 a3 ~", E: "~@4 b3 ~@3 b3 ~@7", F: "~@8 e4@2 ~@4 ab4 ~",
G: "~@4 a4 ~@5 ab4 ~@5", H: "gb4@11 ~@5", I: "[~ [f3,bb3,db4]@8 [f3,bb3,db4]@8 [f3,bb3,db4]@8 [f3,bb3,db4]@8 ~@7]/5",
J: "~@2 db4 ~@3 db4 ~@9", K: "~@6 ab3 ~@5 c4@2 ~@2", L: "~@6 gb4 ~@5 a3 ~@3", M: "~@2 b3 ~@3 b3 ~@9",
N: "~@6 e4 ~@5 ab4 ~@3", O: "[~@2 a4 ~@5 ab4 ~@5 gb4@11 ~@7]/2", P: "[ab3,b3,d4,f4]/2", Q: "ab5", R: "f5@15 ~",
S: "d5", T: "b4@15 ~", U: "[~@3 ab4, f5, ~@8 d5@23 ~, ~ b4]/2", V: "[e4,g4,bb4]", W: "[bb3,eb4,g4]@15 ~",
X: "[d4,f4,ab4]@15 ~", Y: "[db4,f4,ab4]", Z: "[c4,e4,g4,bb4]", AA: "[[a3,c4,f4,a4]@31 ~]/2", AB: "[f3,bb3,db4]",
AC: "db4 ~@3 db4 ~@11", AD: "~@4 ab3 ~@5 c4 ~@5", AE: "~@4 gb4 ~@5 a3 ~@5", AF: "b3 ~@3 b3 ~@11",
AG: "~@4 e4@2 ~@4 ab4 ~@5", AH: "[a4 ~@5 ab4 ~@5 gb4@11 ~@9]/2",
AI: "[~@7 [ab3,b3,d4,f4]@16 [f3,bb3,db4]@8 [f3,bb3,db4]@8 [f3,bb3,db4]@8 [f3,bb3,db4]@8 [f3,bb3,db4]@8 [f3,bb3,db4]]/8", // Abdim Bbm
AJ: "[~@7 [f3,bb3,db4]@8 ~]/2", // Bbm
})).s("gm_electric_guitar_jazz").gain(0.11).pan(0.7)
// … 127 more lines
More by Billy Joel
Not in the database
That song isn't here.
Nothing in the database matches this link. It may have been renamed, or the address was mistyped. The closest songs to :
Real transcriptions · Editable patterns · Instrumental
Type a song.
Get Strudel code.
Chords, structure, melody, bass and drums compiled from open transcriptions into Strudel live-coding patterns. Play it here, scrub through the bars, then open it in strudel.cc and start hacking.
Smells Like Teen SpiritNirvana
The JokerSteve Miller Band · 1973
Love Me DoThe Beatles · 1964
I Don't MindJames Brown · 1961
- Real transcriptionsMcGill chord charts, Lakh MIDI and quality-filtered PDMX scores. The library includes alternate transcriptions of some songs.
- One bar, one cycleEvery layer follows the same bar timeline, keeping the code, playback and song structure aligned.
- Instrumental by designDetected vocal parts are removed. Guitar riffs, harmonica and other instrumental leads stay.