0:00/0:00
// The Wall — Kansas
// 86 bpm, 8/8, key G# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (8/8 at bar 1, 4/8 at bar 98, 8/8 at bar 99) are rendered on a constant 8/8 grid of one bar per cycle
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 104 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(86/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 · church organ · "ChurchOrg"
const church_organ = note(`<
A B C D E F A G H I J K L@2 ~@9 M N O@2 P Q R S T U V W@2 X Y Z@2 AA AB AC@2 AD AE AF AG AH AI AJ AK AL A B C D J K AM
T U V W@2 X Y Z@2 AA AB AC@2 AD AE AF AG AN AO@2 AP AQ AR AS AT@2 AU AV AW AX AY AZ BA BB BC BD BC BE BF@6
>`.pickRestart({
A: "[c#3,g#4,c#5,e5]", B: "[g#2,g#3,g#4,d#5], b4@29 ~@3", C: "[c#3,g#4,e5,g#5], c#5@29 ~@3",
D: "[g#3,g#4,b4,d#5]@31 ~", E: "[a4,c#5,e5]@10 ~@2 [f#4,b4,d#5,f#5]@17 ~@3, a2",
F: "[a2,c#5,g#5]@3 [a3,d#5,f#5]@5, a4@15 ~, e5@9 ~@3 b4@17 ~@3, a3 ~@7", G: "[g#2,g#3,g#4,b4,d#5]",
H: "[c#3,c#5,e5,g#5], c#4@3 ~", I: "[g#2,g#3,b4,d#5]", J: "[e3,e4,g#4,b4,e5]", K: "[d3,a4,d5,f#5], d4@29 ~@3",
L: "[[c#3,g#4,f5]@24 [f#3,a4,f#5]@8 [c#3,g#4,f5]@24 [d#2,d#3,a#4,d#5]@7 ~, c#5@57 ~@7, c#4 ~@3]/2", // C# F#m C# D#5
M: "[d#4,g4,a#4] [f4,g#4,c5], d#5@31 ~", N: "[g4,a#4,d#5] [f#4,a#4,d#5]",
O: "[[e4,g#4,d#5]@2 [f#4,b4,d#5]@3 [f4,g#4,c#5] [g4,a#4,d#5]@2]/2", P: "[f4,g#4,d#5]@15 ~ [g4,a#4,d#5]@15 ~",
Q: "[f#4,a#4,d#5] [e4,g#4,d#5]", R: "[f#4,b4,d#5]@3 [f4,g#4,c#5]", S: "[g4,a#4,d#5]@29 ~@3",
T: "[g#2,g#4,b4,d#5,g#5]", U: "[f#3,f#4,a#4,d#5,f#5]", V: "[c#3,c#4,a#4,c#5,f#5]",
W: "[[d#5,f#5,a#5] [d#5,f5,g#5] [b4,d#5,f#5,a#5] [b4,d#5,f5,g#5], b2, [b3,b4]@31 ~@33]/2", // D#m Fm7 Bmaj7 Fm7b5 B
X: "[a#4,d#5,f5,g#5]@15 ~ [a#4,d#5,g5]@16, a#2", Y: "[a#4,d#5,f5,g#5]@16 [f4,a#4,d5]@15 ~, a#2",
Z: "[[b3,b4,d#5,f#5,a#5]@2 [b4,d#5,f5,g#5]@2 [d#5,f#5,a#5]@2 ~ [c#3,b4,c#5], b2@49 f5@15, ~@4 b4@3 ~, ~@3 g#5, ~@6 d#5 ~]/2", // Bmaj7 Fm7b5 D#m C#7
AA: "[d#3,a#4,d#5,g5] [f3,d#5,f5,g#5]", AB: "[g3,d#5] [f#3,d#5,f#5], [a#4,a#5]",
AC: "[[e3,b4,d#5,g#5]@16 ~ d#5@23 [c#3,b4,c#5,f5]@8 [d#3,g4,a#4,d#5]@16, ~@2 [b2,b4,f#5]@3 ~@3]/2", // Emaj7 C#7 D# B5
AD: "[f3,f4,g#4,c5,d#5] [g3,g4,a#4,d#5]", AE: "[f#3,a#4,d#5,f#5] [e3,e4,b4,e5,g#5]",
AF: "[b2,b3,f#5]@3 [c#3,g#3,f5], d#5@31 ~", AG: "[d#3,d#4,g4,a#4,d#5]", AH: "[b4,d#5,f#5,a#5]",
AI: "[a#4,c#5,f#5,a#5]", AJ: "[c5,d#5,f#5,a5]", AK: "~ g#4@31, [c#5,f5,g#5]@31 ~",
AL: "[g#4,c#5,d#5]@16 ~ c5@15, g#5@31 ~, ~@16 [g#4,d#5]@15 ~", AM: "[c#3,c#4,g#4,c#5,f5]@3 [d#3,a#4,d#5,g5]",
AN: "[c5,f5,g5]@15 ~ [g4,c5,e5]@16, c4@31 ~, ~@15 g5@15 ~@2", // Csus4 C
AO: "[~@6 e5 f5 d5@4 e5@2 [d5,f5]@2, f4@31 ~, [a4,c5]@32 [g4,b4]@31 ~]/2", AP: "[g4,c5,e5,g5]",
AQ: "a5@12 ~ a5@3 g5@8 a5@6 ~@2, [a4,c5,d5,f#5]", AR: "[b4,d5,g5,b5]", AS: "[b4,d5,e5,g5]@31 ~",
AT: "[[a4,f#5]@32 [b4,e5,g5]@31 ~, d5@63 ~, a5@35 ~@29]/2", AU: "[a4,c#5,e5,a5]", AV: "[a4,d5,f#5,a5]@31 ~",
AW: "[g#4,b4,e5,g#5]@31 ~", AX: "[a4,c#5,e5]@15 ~ [b4,d5,e5]@15 ~, a5@15 ~",
AY: "[a4,c#5,e5]@15 [g4,b4,e5]@17, a5@3 ~, g5 ~@31", // A Em
AZ: "c#5 ~@5 [f#4,c#5,f#5]@2 ~ b4 ~@2 f#4@20, ~@6 b4 ~@4 [b4,c#5,f#5]@20 ~", // F#5 Bsus2
BA: "~@5 [f#4,b4,d#5,f#5]@3 ~@4 [f#4,b4,d#5,f#5]@19 ~", BB: "[e4,g#4,b4,e5]@15 ~", BC: "[a4,c5,e5,f#5]@31 ~",
BD: "[g#4,c#5,e5,g#5]@31 ~", BE: "[b4,e5,g#5] [b4,d#5,f#5]",
BF: "[[g#4,c#5,e5]@16 [g4,c5,e5]@31 ~ a2@17 [f#2,f#5]@25 ~ [e3,b4]@91 ~@10, ~@24 [a4,c5,e5,a5]@21 [e2,e5,g#5,b5]@46 ~@5]/6", // C#m C F# E5 Am E
})).s("gm_church_organ").gain(0.29)
// chords · rock organ · "RockOrgan"
const rock_organ = note(`<
A B C D E F A G H I J K L M ~@39 A B C D J K N O P Q R@2 S T U@2 V W X@2 Y Z AA AB AC AD@2 AE AF AG AH AI@2 AJ AK AL
AM AN AO AP AQ AR AS AR AT AU@6
>`.pickRestart({
A: "[g#4,c#5,e5]", B: "[g#4,d#5], b4@29 ~@3", C: "[e5,g#5], c#5@29 ~@3", D: "[b4,d#5,g#5]@15 ~",
E: "[a4,c#5,e5]@10 ~@2 [a4,d#5,f#5]@17 ~@3", F: "[c#5,e5,g#5]@5 ~ [a3,d#5,f#5]@10, a4@15 ~, ~@12 b4@17 ~@3",
G: "[g#4,b4,d#5]", H: "[c#5,e5,g#5]", I: "[b4,d#5,g#5]", J: "[e4,g#4,b4,e5]", K: "[a4,d5,f#5], d4@29 ~@3",
L: "[g#4,f5]@3 [a4,f#5], [c#4,c#5]", M: "[c#4,g#4,c#5,f5]@24 ~ d#4@6 ~, ~@12 [a#4,d#5]@3 ~",
N: "[c#4,g#4,c#5,f5]@12 [d#4,a#4,d#5,g5]@3 ~", O: "[g#2,g#4,b4,d#5,g#5]", P: "[f#3,f#4,a#4,d#5,f#5]",
Q: "[c#3,c#4,a#4,c#5,f#5]", R: "[[d#5,f#5,a#5] [d#5,f5,g#5] [b4,d#5,f#5,a#5] [b4,d#5,f5,g#5], b2, [b3,b4]@31 ~@33]/2",
S: "[a#4,d#5,f5,g#5]@15 ~ [a#4,d#5,g5]@16, a#2", T: "[a#4,d#5,f5,g#5]@16 [f4,a#4,d5]@15 ~, a#2",
U: "[[b3,b4,d#5,f#5,a#5]@2 [b4,d#5,f5,g#5]@2 [d#5,f#5,a#5]@2 ~ [c#3,b4,c#5], b2@49 f5@15, ~@4 b4@3 ~, ~@3 g#5, ~@6 d#5 ~]/2", // Bmaj7 Fm7b5 D#m C#7
V: "[d#3,a#4,d#5,g5] [f3,d#5,f5,g#5]", W: "[g3,d#5] [f#3,d#5,f#5], [a#4,a#5]",
X: "[[e3,b4,d#5,g#5]@16 ~ d#5@23 [c#3,b4,c#5,f5]@8 [d#3,g4,a#4,d#5]@16, ~@2 [b2,b4,f#5]@3 ~@3]/2", // Emaj7 C#7 D# B5
Y: "[f3,f4,g#4,c5,d#5] [g3,g4,a#4,d#5]", Z: "[f#3,a#4,d#5,f#5] [e3,e4,b4,e5,g#5]",
AA: "[b2,b3,f#5]@3 [c#3,g#3,f5], d#5@31 ~", AB: "[d#3,d#4,g4,a#4,d#5]",
AC: "[c5,f5,g5]@15 ~ [g4,c5,e5]@16, c4@31 ~, ~@15 g5@15 ~@2", // Csus4 C
AD: "[~@6 e5 f5 d5@4 e5@2 [d5,f5]@2, f4@31 ~, [a4,c5]@32 [g4,b4]@31 ~]/2", AE: "[g4,c5,e5,g5]",
AF: "a5@12 ~ a5@3 g5@8 a5@6 ~@2, [a4,c5,d5,f#5]", AG: "[b4,d5,g5,b5]", AH: "[b4,d5,e5,g5]@31 ~",
AI: "[[a4,f#5]@32 [b4,e5,g5]@31 ~, d5@63 ~, a5@35 ~@29]/2", AJ: "[a4,c#5,e5,a5]", AK: "[a4,d5,f#5,a5]@31 ~",
AL: "[g#4,b4,e5,g#5]@31 ~", AM: "[a4,c#5,e5]@15 ~ [b4,d5,e5]@15 ~, a5@15 ~",
AN: "[a4,c#5,e5]@15 [g4,b4,e5]@17, a5@3 ~, g5 ~@31", // A Em
AO: "c#5 ~@5 [f#4,c#5,f#5]@2 ~ b4 ~@2 f#4@20, ~@6 b4 ~@4 [b4,c#5,f#5]@20 ~", // F#5 Bsus2
AP: "~@5 [f#4,b4,d#5,f#5]@3 ~@4 [f#4,b4,d#5,f#5]@19 ~", AQ: "[e4,g#4,b4,e5]@15 ~", AR: "[a4,c5,e5,f#5]@31 ~",
AS: "[g#4,c#5,e5,g#5]@31 ~", AT: "[b4,e5,g#5] [b4,d#5,f#5]",
AU: "[[g#4,c#5,e5]@16 [g4,c5,e5]@31 ~ a2@17 [f#2,f#5]@25 ~ [e3,b4]@91 ~@10, ~@24 [a4,c5,e5,a5]@21 [e2,e5,g#5,b5]@46 ~@5]/6", // C#m C F# E5 Am E
})).s("gm_rock_organ").gain(0.3)
// other · violin
const violin = note(`<
A B C D E F G H I J K L M N ~@17 O P Q R S T U V W X Y Z@2 AA AB AC AD ~@5 A B C D K L AE O P Q R S T AF V W X Y Z@2
AA AB AC AD ~ AG AH AI AJ AK AL@2 AM AN AO AP AQ AR AS AT AU AV AW AV AX AY@2 AZ@4
>`.pickRestart({
A: "c#4@4 c#5@8 ~@2 d#5 e5", B: "d#5@7 ~ b4@22 ~@2", C: "c#4@7 ~ c#5@20 d#5@2 e5@2", D: "f#5@7 ~ d#5@24",
E: "c#5@11 ~ d#5@16 e5@2 f#5@2", F: "g#5@8 f#5@2 e5@2 f#5@15 ~ c#5@2 b4@2", G: "c#5@27 ~ d#5@2 e5@2",
H: "d#5@8 b4@23 ~", I: "c#5@14 d#5 e5", J: "f#5@2 d#5 e5 d#5@12", K: "g#4@8 b4@19 ~ a4@2 g#4@2",
L: "f#4@4 a4@10 g#4 f#4", M: "g#4@21 ~ f4 ~ f#4@2 a4@2 c#5@2 f#5@2", N: "f5@11 ~ [d#4,d#5]@4",
O: "g#4@27 ~@2 b4@3, ~@14 a#4 ~", P: "a#4@8 f#4@19 ~ f#4@2 g#4 ~", Q: "a#4@27 ~ f#4@2 g#4@2",
R: "a#4@6 g#4 f#4 g#4@6 f#4 f4", S: "f#4@6 f4 d#4 f4@4 f#4@2 g#4@2", T: "a#4@15 ~ d#5@16",
U: "d#5@11 ~ d5@2 d#5@2 f5@16", V: "f#5@12 f5@2 d#5 ~ f5@11 ~ d#5@2 c#5@2", W: "d#5@11 ~ c#5@2 b4@2 c#5@8 b4@7 ~",
X: "a#4@4 a#4@2 g#4 c5", Y: "a#4@15 ~ a#4@12 f#4@3 ~", Z: "[g#4@12 f#4@4 d#4@24 f4@4 g#4@4 a#4@15 ~]/2",
AA: "a#4@8 g#4@4 c5@4 a#4@15 ~", AB: "a#4@3 f#4 g#4@3 f#4", AC: "d#4@3 f4", AD: "d#4", AE: "g#4@21 ~@11",
AF: "d#5@6 ~@3 [c5,d5] a#4 g#4 [f4,g4] d#4 [c4,d4] a#3 c4 [d4,d#4] f4 [g4,g#4] [a#4,c5] [d5,d#5] [f5,g5] a#5@7 g#5 ~, ~@23 g#5 ~@8", // Csus2 Fsus2 Csus2 D#maj7 G#maj7 A#sus2 D#maj7 Fsus2
AG: "c4@6 e4 f4", AH: "~ d4@15 e4@8 f4@8", AI: "g4@23 ~ b4@4 c5@4", AJ: "a4@2 b4 c5", AK: "d5@23 ~ g4@3 b4@2 ~ d5@2",
AL: "[d5@8 c5@8 b4@8 a4@5 ~@3 a4@27 ~ d5@2 f#5@2, ~@31 g4@2 ~@31]/2", AM: "a5@4 g5@4 f#5@4 e5@3 d5",
AN: "e5@2 f#5 g5", AO: "a5@6 g#5 a5", AP: "b5 a5 g#5 f#5", AQ: "e5@6 d5 f#5", AR: "e5@23 f#5@5 g5@4",
AS: "f#5 g5 f#5 g5 f#5 g5 [f#5,g5] f#5@16 e5@4 g5@4 ~", AT: "f#5 [f#5,g5] g5 f#5 g5 f#5 f#5@17 ~ b4@8, ~@6 g5 ~@25",
AU: "e5", AV: "f#5 g#5 f#5 g#5 a5@8 g#5@2 f#5@2", AW: "~ f#5@2 g#5@20 ~ e5@4 g#5@4, e5 ~@15",
AX: "g#5@3 e5@4 b4@17 f#5@4 e5@2 f#5 ~", AY: "[e5 c#5 e5 f#5 e5@6 f#5@2 g5@2 a5@2]/2",
AZ: "[~ b5@10 c6@15 d6@92 ~@10]/4",
})).s("gm_violin").gain(0.45)
// bass · slap bass 1 · "Bass"
const bass = note(`<
A B C D E F G H I J K L M N ~@17 O P Q R S T U V W X Y Z@2 AA AB AC AD AE AF AG AH ~ A B C D K L AI AJ AK Q AL@2 AM AN
AO AP X AQ AR@2 AS AT AU AV AW AX AY AZ BA BB BC BD BE BF BG BH BI BJ BK BL BM BN BO BP BQ BR BS BT@4
>`.pickRestart({
A: "c#2@11 ~ c#2@3 ~ c#2@11 ~ c#2@4", B: "g#1@11 ~@5 g#2@8 g#1@4 ~@4", C: "c#2@10 ~@2 c#2@4 c#2@8 ~@4 c#2@3 ~",
D: "g#1@11 ~@4 d#2 ~ g#2@7 ~@4 g#1@2 ~@2, ~@24 g#2@7 ~", E: "a1@8 ~@4 a2@9 ~@3 a2@3 ~@5",
F: "a1@11 ~ a2@8 ~@2 a2@2 a2@2 a2@2 a2@2 ~@2", G: "c#2@12 c#2 ~@11 e2@2 ~@2 f#2 ~@3, ~@4 c#2@3 ~",
H: "g#2@16 g#1@8 ~@4 g#1@2 b1 ~", I: "c#2@10 ~@2 c#2@4 c#3@7 ~ e2@4 f#2@2 ~@2",
J: "g#1@11 ~ g#1@2 g#1@2 g#2@3 ~ g#1@3 ~ b1@2 ~@2 b1@2 ~@2", K: "e2@31 ~", L: "d2@27 ~ d2@3 ~", M: "c#2@23 ~ f#1@7 ~",
N: "c#2@11 ~ d#2@3 ~", O: "g#1@23 ~ g#1@3 ~ d#2@2 ~@2", P: "f#2", Q: "c#2", R: "~@2 b1 ~ b1@12", S: "~@2 b2 ~ b2@12",
T: "~@20 a#1 ~ a#1 ~ a#1@2 ~@2 a#1@2 a#1@2",
U: "a#1 ~@3 a#1@2 ~@2 a#1 ~@3 a#1 ~ a#1 ~ a#1@2 ~@2 a#1 ~ a#1 ~ a#1@2 ~@2 a#1@2 ~@2", V: "b1@15 ~", W: "b1@3 c#2",
X: "d#2 f1", Y: "g1@11 ~ g1@4 f#1@11 ~ f#1@4", Z: "[e1@8 ~ e1@3 g#1@2 ~@2 b1@23 ~ c#2@8 d#2@16]/2",
AA: "f1@11 ~ f1@4 g1@11 ~ g1@4", AB: "f#1@11 ~ f#1@4 e1@11 ~ g#1@3 ~", AC: "b1@23 ~ c#2@8", AD: "d#2@7 ~",
AE: "~@16 b1@2 c#2@2 d#2@2 f#2@9 ~", AF: "~@20 c#2@2 g#2 ~ f#2@8, ~@19 a#1@2 ~@11", AG: "~@9 a1 c2 d#2 f#2@4",
AH: "~@18 g#1 ~ d#2 ~ f2 ~ c#2@6 ~@2", AI: "c#2@11 ~ d#2@2 ~@2 f2@3 ~ c#2@2 ~@2 d#2@2 c#2@2 b1@2 a#1@2",
AJ: "g#1@12 g#2 ~ d#2 ~", AK: "f#1@23 ~ f#1@3 ~ g#1@3 ~", AL: "[~@4 b1@2 ~@3 b1@26 ~ b1@2 ~@2 b1@24]/2",
AM: "~@4 a#1 ~ a#1 ~ a#1 ~@3 a#1 ~ a#1 ~ a#1@2 ~@2 a#1 ~ a#1 ~ a#1@2 ~@2 a#1 ~ a#1 ~",
AN: "a#1 ~@3 a#1 ~ a#1 ~ a#1@2 ~@2 a#1 ~ a#1 ~ a#1@2 ~@2 a#1 ~ a#1 ~ a#1@2 ~@2 a#1@3 ~",
AO: "~@28 f1 ~ f#1@2, b1@31 ~", AP: "b1@27 ~ c#2@3 ~", AQ: "g1@11 ~ g1@4 f#1@16",
AR: "[e1@11 ~ g#1 ~@3 b1@24 c#2@8 d#2@16]/2", AS: "f1@11 ~ f1@4 g1@16", AT: "f#1@11 ~ f#1@4 e1@11 ~ e1@4",
AU: "b1@23 c#2@8 ~", AV: "d#2@15 ~", AW: "c2", AX: "f1@9 ~@3 f1 ~@3 f1@8 ~@4 f1 ~@3",
AY: "f1@9 ~@3 f1@2 ~@2 f1@8 ~@4 f1@2 ~@2", AZ: "g1@4 ~@2 g1 ~ g1@4 ~@2 g1 ~",
BA: "f#1@9 ~@3 f#1@2 ~@2 f#1@8 ~@4 f#1@3 ~", BB: "g1@9 ~@3 g1@2 ~@2 g1@8 ~@4 g1@3 ~",
BC: "e1@9 ~@3 e1@2 ~@2 e1@8 ~@4 e1@2 ~@2", BD: "f#1@9 ~@3 f#1@2 ~@2 f#1@8 ~@4 f#1@2 ~@2",
BE: "e1@4 ~@2 e1 ~ e1@4 ~@2 e1 ~", BF: "a1@11 ~ a1@4 g1@9 ~@3 g1@3 ~", BG: "d2@8 ~@4 d2@15 ~ d2 ~@3",
BH: "d2@8 d2 ~@3 d2@13 ~@7", BI: "c#2@15 ~ b1@15 ~", BJ: "a1@15 ~ g1@15 ~", BK: "~@6 f#1 ~@4 f#1@20 ~",
BL: "~@5 b1@2 ~@4 b1@18 ~@3", BM: "e1@7 ~ e1 ~@3 e2@20", BN: "e1@2 ~ e2@5", BO: "e1@5 ~ e1@3 ~@3 e2@18 ~@2",
BP: "e1@5 ~ e1@2 ~@4 e2@19 ~", BQ: "e1@12 e2@4 d#2@11 d#2@4 ~", BR: "c#2@12 c#2@3 ~ c2@12 g2@4",
BS: "c3@8 b2@8 a2@9 a1@7", BT: "[~ f#1@10 f#2@15 ~ e1@91 ~@10]/4",
})).s("gm_slap_bass_1").gain(0.41)
// bass · slap bass 1 · "Bass" · soft notes
const bass_soft = note("<~ A ~ B C D ~@2 E ~@27 F ~ G ~@15 A ~ B ~@3 H ~@27 I ~@3 J ~ K ~@9>".pickRestart({
A: "~@12 g#1@4 ~@12 g#2 ~@3", B: "~@3 g#1 ~@4", C: "~@8 a1@3 e2 ~@16 a2@3 e2", D: "~@10 e2 ~@9 a2@2 ~@8 b1 ~",
E: "~@22 c#2 ~@9", F: "~@4 a#1 ~ a#1 ~ a#1 ~@3 a#1 ~ a#1 ~ a#1@2 ~@14", G: "~@31 f#1", H: "~@21 g#2 ~@10",
I: "~@28 d2 ~@3", J: "~@4 f#1 ~@27", K: "~@8 e1 ~@23",
})).s("gm_slap_bass_1").gain(0.26)
// other · overdriven guitar · "OvrdrvGuitar"
const overdriven_guitar = note("<A B C@2 D E F G H I J K L M ~@39 N@3 O J K P ~@44>".pickRestart({
A: "~@12 e5@4 d#5 e5 d#5 b4 c#5@8 b4@4", B: "b4", C: "[~@16 f#4@4 ~@2 e4@2 d#4@2 ~@2 d#4@2 b4 c#4@23 ~@10]/2",
D: "a4@11 ~ b4@16 c#5@2 d#5@2", E: "d#5@4 d#5 c#5 d#5@8 e5 f#5", F: "g#5 f#5@3", G: "~@8 b5@7 ~ b5@8 b5@7 ~",
H: "b5@15 ~", I: "b4@4 d#4@4 b3@2 f#3@4 b3@2 c#4@2 e4@2 d#4@3 ~ e4@2 f#4@2 g#4@2 a4@2", J: "b4@4 e5@10 d5 c#5",
K: "a4@7 ~ d5@20 c#5@2 b4 ~", L: "b4@8 ~@3 g#4@2 c#5 f#5 g#5", M: "g#5@23 ~ d#5@6 ~@2",
N: "[~@16 f#4@6 d4@2 b3@4 b3@8 b4@34 ~@10 d5@2 c#5@2 b4@4 c#5 ~@3 d#5@2 e5@2]/3", O: "f#5 ~@3 d#5@2 e5@2 d#5@18 ~@6",
P: "c#5@3 ~",
})).s("gm_overdriven_guitar").gain(0.36)
// chords · clavinet
const clavinet = note("<~@14 A B C D E F G H@2 I J K L M N O P ~@73>".pickRestart({
A: "~@3 g#4 ~ d#5 ~@5 b3 ~@3 g#4, g#3@23 ~ g#3@8, ~ b3@3 b4@3 d#5@2 g#4@6 ~, ~@4 d#4@5 ~@3 g#5@8 ~@8 d#4@4, ~@8 b4@2 d#4@2 ~ b3@3",
B: "~@3 f#4 ~ d#5 ~@2 a#4 ~@2 a#3 f#3 ~ d#4 f#4, f#3@12 ~ a#3@3, ~ a#3@3 ~@3 d#5@2 f#4@4 ~@3, ~@2 d#4@2 a#4@2 f#5@3 ~ d#4@3 ~@3",
C: "~@12 f#5@2 c#5@2 ~@12 c#5@2 f#4 ~, c#3@4 a#4 c#5@2 ~@4 c#4 f#4 a#4@2 ~, ~@2 a#3@13 ~ c#3@15 ~, ~@4 c#4@11 ~@3 f#3@12 ~@2, ~@6 f#4@9 ~@5 a#3@10 ~@2",
D: "d#4@4 ~@2 d#4@2 f#4@2 a#4@2 ~@2 f#4@2 d#4@4 ~@6 g#4@2 ~@2 f4 ~, b2@7 f#4, [f#4,a#4]@9 ~@3 g#4@4 [f4,g#4]@8 f4@5 ~@3, ~@2 b3@3 ~@5 b3@6, ~@22 d#4@7 ~@3", // F# Fm
E: "~@4 f#4 a#4 ~ f#4 d#4@2 ~@3 g#4 ~ d#4, b2@29 ~@3, [f#4,a#4]@10 ~@2 g#4@4 ~@6 d#4@7 ~@3, ~@4 b3@9 ~@7 b3@9 ~@3, ~@6 d#4@5 ~@5 [f4,g#4]@8 f4@4 f4@4", // F# Fm
F: "d#4@2 ~@3 g#4 g4 f4 [a#3,d#4]@2 ~@2 f4 ~@2 d#4, a#2, [f4,g#4]@8 f4@5 ~@3 g4@6 d#4@4 g4@6, ~@4 a#3@9 ~@3 a#1@16, ~@6 d#4@7 ~@7 a#3@7 ~ f4@4", // D#5 Fm
G: "d#4@4 ~@8 f4@2 d#4 ~ [a#1,f3,d4]@13 ~@3, a#2@29 ~@3, g#4@4 f4 g#4@2 ~@9, ~@4 a#3@9 ~@19, ~@6 d#4@7 ~@19", // A#
H: "[b3@4 ~@10 f#4 ~ c#4@4 ~@8 c#4@2 ~@2 d#4@4 ~@8 g#4@2 ~@2 c#4@4 ~@4 g#4@2 f4@2 c#4@2 g#3 ~, b1@30 b3@6 b3@6 a#4@4 ~@2 [f4,g#4]@4 b3@9 ~@3, b2@12 g#4@4 f4@6 c#4@2 g#4@2 f4@5 ~ [f#4,a#4]@8 f#4@6 f#4@10 c#2@8, a#4@6 d#4@2 f#4@2 a#4@4 ~@2 g#4 ~@3 g#3@11 ~ b2@24 c#3@5 ~@3, ~@4 b3@9 ~@3 b2@15 ~ b1@32]/2", // Fm F#
I: "~@12 a#3@2 d#4 ~@11 f3@2 g#3@2 d#4 ~, d#2@16 f2@13 ~@3, [a#3,d#4]@3 a#3@2 g3@2 ~ [g#3,d#4]@3 g#3@3 ~@2, ~@4 g3@4 d#4@5 ~@7 f3@4 d#4@5 ~@3", // D#5 G#5
J: "~@12 a#3@2 d#4 ~@15 d#4 ~, g2@13 ~@3 f#2@16, [a#3,d#4]@6 a#3@4 g3@5 ~ [a#3,d#4]@6 a#3@4 f#3@5 ~, ~@4 g3@4 d#4@5 ~@7 f#3@4 d#4@4 a#3@4", // D#5
K: "[e3,d#4]@7 ~@6 g#3@2 d#4 ~ b3@5 ~@6 c#4@4, e2 ~, g#3@6 ~ g#3@4 e3@4 ~ f#3@4 ~@12, ~@4 d#4@3 ~@5 b3@4", // Emaj7
L: "~@4 [b2,b3]@4 ~@4 g#3@4 ~@10 g3@4 d#4 ~, d#4@8 [c#2,b3,f4]@7 ~ a#3@12 ~@4, ~@16 d#4@6 g3@2 d#4@5 ~@3, ~@17 d#2@14 ~, ~@17 g3@3 d#3@10 ~@2", // B C#7
M: "~@12 g#3@2 d#4 ~@13 a#3@2 d#4 ~, f2@13 ~@3 g2@13 ~@3, [g#3,d#4]@3 g#3@2 f3@2 ~ [a#3,d#4]@3 a#3@2 g3@2 ~, ~@4 f3@4 d#4@5 ~@7 g3@4 d#4@5 ~@3", // G#5 D#5
N: "~@12 a#3@2 d#4@2 ~@12 g#3@2 d#4 ~, f#2 e2, [a#3,d#4]@3 a#3@2 f#3@3 [g#3,d#4]@3 g#3@2 e3@2 ~, ~@4 f#3@4 d#4@5 ~@7 e3@4 d#4@6 ~@2", // D#5 G#5
O: "~@8 b3@3 ~@5 d#4@5 ~@3 b3 ~@3 c#3@2 ~@2, b1@21 ~@4 c#2@6 ~, [f#3,b3]@8 ~@4 c#4@9 ~@3 [g#3,c#4,f4]@7 ~, ~ b2@2 ~@5", // B5 C#
P: "[d#3,g3] ~@3 d#5@4, d#2@5 d#4 g4 a#4@7 ~@2, [a#3,d#4]@2 a#3@5 ~, ~ d#3@6 ~, ~@3 g3@11 ~@2", // D# D#5
})).s("gm_clavinet").gain(0.4)
// chords · clavinet · soft notes
const clavinet_soft = note("<~@20 A B C ~@2 D@2 E ~ F ~@74>".pickRestart({
A: "a#3@4 ~@12 a#3@13 ~@3", B: "[d#4,f#4]@4 ~@3 b3 ~@8", C: "~@6 d#4@8 ~@8 c#4@3 ~@7",
D: "[~@11 b3 ~ f#3@3 ~@2 f#3@2 ~@2 c#3@2 ~@6 a#3 ~, ~@2 d#4@2 ~ c#4 ~@2, ~@17 b1@23 ~@24, ~@10 f#3@3 ~@19]/2",
E: "~@4 g3 ~@3", F: "~@6 f#3@4 f#3@2 ~@2 f#3@6 f#3 ~@11, d#4@3 ~@5",
})).s("gm_clavinet").gain(0.24)
// chords · piano
const piano = note(`<
~@31 A B C D@2 E F G@2 H I J@2 K L M N O P@4 ~@7 Q R S T@2 U@2 V@2 W X Y@2 Z AA@2 AB@2 ~@9 AC AD AE AF AG AH AI@2 AJ@2
AK AL@5 ~
>`.pickRestart({
A: "~@8 d#6@5 ~@3, ~@2 g#3@11 g#5@13 ~@6, ~@2 b3@5 b5@6 ~@3, ~@8 g#4@17 ~@7, ~@10 d#5@15 ~@7",
B: "~@2 d#6 ~, ~ f#3@4 d#5 f#5 a#5@5 ~@4, ~ a#3@5 ~@2, ~@3 d#4@9 ~@4, ~ f#4@2 ~",
C: "~@8 g#4 ~@7 c#6@11 ~@5, ~@4 f#3@25 ~@3, ~@6 c#4@23 ~@3, ~@5 c#5@2 a#5@7 ~@2, ~@3 f#5@4 ~",
D: "[~ a#5@11 ~@2 f#4@2 ~ [d#5,f5,g#5]@11 ~@4 [b4,d#5,f#5,a#5]@13 ~@4 [b4,d#5,f5,g#5]@14 ~, [b4,d#5,f#5]@12 b3@15 ~ b3@15 ~@2 b3@13 ~@6, ~@16 b4@11 ~@3 f#4@4 ~@12 f#4@11 ~@7]/2", // Fm7 Bmaj7 Fm7b5 B
E: "~ [a#3,a#4,d#5,f5,g#5]@13 ~@2 [a#3,g4]@12 ~@2 g4 ~, ~@16 [a#4,d#5,g5]@15 ~, ~@7 a#3", // A#sus4 D#
F: "a#3@11 ~@3 f4 ~ [f4,a#4,d5,f5]@15 ~, [f4,a#4,d#5,f5]@15 ~@17, ~@12 a#3@19 ~", // A# D#sus2
G: "[[f#4,b4,d#5]@13 ~@4 f4@9 ~@4 g#4@2 ~@16 [f4,g#4,c#5]@12 ~@4, [b2,b3]@26 b2@17 ~ b2@15 ~@5, ~@17 [g#4,c#5]@11 b3@16 ~@2 b3@14 ~@4, ~@29 f4@3 ~ [a#4,d#5]@15 ~@16]/2", // B C# B C#5 D#5
H: "[d#3,g4,a#4,d#5]@9 ~@3 d#3@2 ~@2 [g#3,d#4]@8 ~@2 g#3@2 c4@2 d#4 ~, [a#3,d#4]@3 ~@5 f2@7 ~, ~@16 f3@6 ~@2 f3@7 ~", // D# G#5 D#5
I: "[g3,a#3,d#4]@10 ~@2 a#3@2 d#4 ~@13 d#4@3 ~, g2@7 ~ f#2@8, ~@10 g3@5 ~ [a#3,d#4]@10 a#3@4 ~@2, ~@12 f#3@3 ~", // D# D#5
J: "[[e2,e3,g#3]@8 ~@2 g#3@3 ~ d#4 ~ [f#3,b3,d#4]@12 ~@8 f#3@3 ~ [g#3,f4]@8 ~@12 d#4@2 d#2 ~, [b3,d#4]@12 ~ b3@3 ~@14 f#3@4 d#4@5 ~@13 a#2@10 ~@2, ~@8 [e2,e3]@8 b2@9 ~@3 b2@12 [c#3,c#4]@4 ~@4 d#2@10 a#3@4 ~@2, ~@32 [c#4,f#4]@6 ~@10 [g3,a#3,d#4]@8 g3@7 ~, ~@54 d#3@9 ~]/2", // E B C# B E C# F#5 D#
K: "[f2,f3]@4 ~@6 d#4@2 f2@3 ~ [a#3,d#4]@10 ~@2 a#3@2 d#4 ~, [g#3,d#4]@3 f3@5 ~@8, ~@4 f2@7 ~@5 g2@14 ~@2, ~@8 g#3@7 ~ g3@4 ~@6 g3@6", // F D#5 G#5
L: "~@3 f#3@2 ~ f#3 ~ g#3@4 ~ g#3 b3 d#4, f#2@15 ~ e2@16, [a#3,d#4]@9 ~ d#4@5 ~ [b3,d#4]@11 ~@5, ~@3 e3", // D#5 B
M: "[b2,f#3,b3]@8 ~@4 b3@4 ~@4 f#3@3 ~ c#3@4 g#3@3 ~, ~@8 b2@16 f#4 ~@7, ~@9 f#3@7 [c#4,f#4]@6 ~@2 [c#4,f4]@8, ~@9 d#4@4 ~@3", // B5 F#5 C#
N: "~@12 d#4@13 ~@7, d#2@25 ~@7, [a#3,d#4]@8 g3@2 a#3@15 ~@7, g3@6 d#3@19 ~@7, ~@4 a#2@21 ~@7", // D#5
O: "~@15 f#5, [b2,b3], b4@2 [f#5,a#5]@5 f#5@7 g#5@6 f#5@6 a#5@6, ~ d#5@4 d#5@5 b4@5 ~ b4@6 b4@4 ~@2 g#5@4, ~@3 b4@6 a#5@3 d#5@6 d#5@6 d#5@8", // B F#
P: "[~@32 a4@2 ~@30 g#4 ~@17 c#5@2 ~@26 d#5@2 g#4@2 ~@10 c5@2 g#4 ~, a#3@28 f#5@3 a2@27 f#5@2 f5@3 g#2@29 d#5@3 g#2@11 d#5@2 c#5@4 c5@4 c5@6 d#5@5 ~, c#5@4 c#5@6 a#4@4 f#5@10 c#5@6 f5@2 f#5@4 c5@4 f#5@8 a4@2 c5@2 d#5@4 c5@6 d#5@2 f5@4 c#5@4 f5@12 d#5@2 f5@2 c#5@2 f5@4 c#5@2 [c#5,d#5]@4 c#5@2 d#5@2 g#5@8 ~@6 d#5@2 g#5@7 ~, a#4 a#4@3 g#5@7 a#4@5 a3@16 c#5 g#4@2 d#5@2 g#4 c#5 d#5 g#4@8 ~ g#4@7 ~ g#4@6 ~, ~ g#5@5 f#5@6 c#5@4 a#4@2 c#5@2 f5@6 g#5@6 c5@2 a4@4 d#5@4 a4@2 c5@2 f5@8 a4@10 g#3@32 g#3@16 [g#2,g#3]@16]/4", // C#sus2 G#
Q: "~@8 d#6@5 ~@3, ~ g#3@4 d#5 g#5 b5@6 ~@3, ~@2 b3@11 ~@3, ~@3 d#4@10 ~@3, ~@4 g#4@9 ~@3",
// … 143 more lines
More by Kansas
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.