0:00/0:00
// Paradise City — Guns N' Roses
// 98 bpm, 4/4, key G major. 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 (4/4 at bar 1, 2/4 at bar 41, 4/4 at bar 42, 2/4 at bar 51, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: ch 4 "SynString" named as a string part, played on synth strings 1 (its brass section patch is not one)
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 158 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(98/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.
// other · distortion guitar · "Dst Gtr"
const distortion_guitar = note(`<
~@15 A B C D B@2 C D B@2 C D B@2 C D B E F E G E F E H@2 I J K L@2 J K M N O B C D B@2 C D B E F E G E F E H@2 P@3 Q@4
R@2 J K S@2 T U V W X Y X Z X Y X AA E F E H@2 P@3 Q@12 AB@3 AC@3 AD@3 AE@2 AF@6 AG@6 AH@3 AI@8 AJ AK@2 ~@8
>`.pickRestart({
A: "~@28 d3 ~ d3 ~", B: "[g2,d3,g3]@27 ~ [d3,g3] ~ [d3,g3] ~", C: "[c3,g3]@27 ~ [c3,g3] ~ [c3,g3] ~",
D: "[f2,c3,f3]@11 ~ [c3,f3] ~ [c3,f3] ~ [c3,g3]@11 ~ [c3,g3] ~ [c3,g3] ~", // F5 C5
E: "[g1,g2]@2 [f1,f2] [f#1,f#2] [g1,g2]@2 [f1,f2] [f#1,f#2] [g1,g2] [f1,f2] [g1,g2] [f1,f2] [g1,g2] [a#1,a#2]@3", // G F F# G F F# G F …
F: "[g1,g2]@2 [f1,f2] [f#1,f#2] [g1,g2]@2 [f1,f2] [f#1,f#2] [g1,g2] [f1,f2] [g1,g2] [f1,f2] [c2,c3] [a#1,a#2]@3", // G F F# G F F# G F …
G: "[g1,g2]@2 [f1,f2] [f#1,f#2] [g1,g2]@2 [f1,f2] [g1,g2]@2 [f1,f2] [g1,g2] [f1,f2] [g1,g2] [a#1,a#2]@3", // G F F# G F G F G …
H: "[[g1,g2]@4 [f1,f2]@2 [f#1,f#2]@2 [g1,g2]@4 [f1,f2]@2 [g1,g2]@2 [c2,c3]@30 ~@2 [c2,c3]@3 ~ [c2,c3]@2 [a#1,a#2] ~ [c2,c3] ~ [a#1,a#2]@2 [f1,f2]@2 [g1,g2]@2]/2", // G F F# G F G C A# …
I: "~@8 [g1,g2]@2 [f1,f2] [f#1,f#2] [g1,g2]@2 [f1,f2] [f#1,f#2]", // G F F# G F F#
J: "[g1,g2] [f1,f2] [g1,g2] [f1,f2] [g1,g2] [a#1,a#2]@3 [g1,g2]@2 [f1,f2] [f#1,f#2] [g1,g2]@2 [f1,f2] [f#1,f#2]", // G F G F G A# G F …
K: "[g1,g2] [f1,f2] [g1,g2] [f1,f2] [c2,c3] [a#1,a#2]@3 [g1,g2]@2 [f1,f2] [f#1,f#2] [g1,g2]@2 [f1,f2] [f#1,f#2]", // G F G F C A# G F …
L: "[[g1,g2] [f1,f2] [g1,g2] [f1,f2] [g1,g2] [a#1,a#2]@3 [g1,g2]@2 [f1,f2] [f#1,f#2] [g1,g2]@2 [f1,f2] [g1,g2]@2 [f1,f2] [g1,g2] [f1,f2] [g1,g2] [a#1,a#2]@3 [g1,g2]@2 [f1,f2] [f#1,f#2] [g1,g2]@2 [f1,f2] [f#1,f#2]]/2", // G F G F G A# G F …
M: "[g1,g2] [f1,f2] [g1,g2] [f1,f2] [g1,g2] [a#1,a#2]@3 [g1,g2]@2 [f1,f2] [f#1,f#2] [g1,g2]@2 [f1,f2] [g1,g2]", // G F G F G A# G F …
N: "[c2,c3]@15 ~", O: "[c2,c3]@3 ~ [c2,c3]@2 [a#1,a#2] ~ [c2,c3] ~ [a#1,a#2]@2 [f1,f2]@2 [g1,g2]@2 ~@16",
P: "[~@16 [g2,d3,g3]@27 ~ [d3,g3] ~ [d3,g3] ~ [c3,g3]@27 ~ [c3,g3] ~ [c3,g3] ~ [f2,c3,f3]@11 ~ [c3,f3] ~ [c3,f3] ~]/3", // G5 C5 F5
Q: "[[c3,g3]@11 ~ [c3,g3] ~ [c3,g3] ~ [g2,d3,g3]@27 ~ [d3,g3] ~ [d3,g3] ~ [g2,d3,g3]@27 ~ [d3,g3] ~ [d3,g3] ~ [c3,g3]@27 ~ [c3,g3] ~ [c3,g3] ~ [f2,c3,f3]@11 ~ [c3,f3] ~ [c3,f3] ~]/4", // C5 G5 C5 F5
R: "[[c3,g3]@11 ~ [c3,g3] ~ [c3,g3] ~ [f3,c4,f4]@27 ~ [d3,g3] ~ [d3,g3] ~ [g1,g2]@4 [f1,f2]@2 [f#1,f#2]@2 [g1,g2]@4 [f1,f2]@2 [f#1,f#2]@2]/2", // C5 F5 G5 G F F# G F …
S: "[[g1,g2] [f1,f2] [g1,g2] [f1,f2] [g1,g2] [a#1,a#2]@3 [g1,g2]@2 [f1,f2] [f#1,f#2] [g1,g2]@2 [f1,f2] [g1,g2]@2 [f1,f2] [g1,g2] [f1,f2] [g1,g2] [a#1,a#2]@3 [a1,a2]@2 [g1,g2] [g#1,g#2] [a1,a2]@2 [g1,g2] [g#1,g#2]]/2", // G F G F G A# G F …
T: "[a1,a2] [g1,g2] [a1,a2] [g1,g2] [a1,a2] [c2,c3]@3 [a1,a2]@2 [g1,g2] [g#1,g#2] [a1,a2]@2 [g1,g2] [g#1,g#2]", // A G A G A C A G …
U: "[a1,a2] [g1,g2] [a1,a2] [g1,g2] [d2,d3] [c2,c3]@3 [g1,g2]@2 [f1,f2] [f#1,f#2] [g1,g2]@2 [f1,f2] [f#1,f#2]", // A G A G D C G F …
V: "[g1,g2]@2 [f1,f2]@2 [g1,g2]@2 [f1,f2]@2 [g1,g2]@2 [a#1,a#2]@6 [g1,g2]@4 [f1,f2] ~ [f#1,f#2] ~ [g1,g2]@4 [f1,f2]@4", // G F G F G A# G F …
W: "[c2,c3]@31 ~", X: "[d2,d3]!4 [d2,d3]@3 [d2,d3]!5 [d2,d3]@2 [g1,g2]@2",
Y: "[c2,c3]!4 [c2,c3]@3 [c2,c3]!5 [c2,c3]@2 [g1,g2]@2", Z: "[c2,c3]!4 [c2,c3]@3 [c2,c3]!5 [c2,c3]@2 [a1,a2]@2",
AA: "[c2,c3]!4 [c2,c3]@3 [c2,c3] [a#1,a#2]!4 [a#1,a#2]@2 [f1,f2]@2", // C A# F
AB: "[[c3,g3]@11 ~ [c3,g3] ~ [c3,g3] ~ [g1,g2]@63 ~@17]/3", AC: "[~@16 [g1,g2]@63 ~@17]/3",
AD: "[~@16 [g1,g2]@4 [f1,f2]@2 [f#1,f#2]@2 [g1,g2]@3 [f1,f2]@2 [f#1,f#2]@2 [g1,g2]@2 [f1,f2]@2 [g1,g2]@2 [f1,f2]@2 ~ [a#1,a#2]@6 [c2,c3]@4 [a#1,a#2]@2 [b1,b2]@2 [c2,c3]@3 [a#1,a#2]@2 [b1,b2]@2 [c2,c3]@2 [a#1,a#2]@2 [c2,c3]@2 [a#1,a#2]@2 ~ [a#1,a#2]@6 [f1,f2]@4 [d#1,d#2]@2 ~ [f1,f2]@4 [d#1,d#2]@2 [e1,e2]@2 [c2,c3]@2 ~ [c2,c3]@2, ~@39 [g1,g2]@2 ~@28 [c2,c3]@2 ~@11 [e1,e2]@2 ~@9 [a#1,a#2]@2 ~]/3", // G F F# G F F# G F …
AE: "[[a#1,a#2]@2 [c2,c3]@2 [a#1,a#2]@6 [g1,g2]@3 [f1,f2]@2 [f#1,f#2]@2 [g1,g2]@3 [f1,f2]@2 [g1,g2]@4 ~ [g1,g2]@2 [f1,f2]@2 [g1,g2]@2 [a#1,a#2]@5 [g2,d3]@26, ~@13 [f1,f2] ~@18]/2", // A# C A# G F F# G F …
AF: "[~ [c2,g2]@27 ~ [f2,c3]@13 ~ [c2,g2]@13 [g2,d3]@27 ~ [g2,d3]@27 ~ [c2,g2]@27 [f2,c3]@13 ~ [c2,g2]@14 [g2,d3]@25]/6", // C5 F5 C5 G5 C5 F5 C5 G5
AG: "[~@2 [g2,d3]@27 ~ [c2,g2]@27 [f2,c3]@13 ~ [c2,g2]@14 [g2,d3]@27 [g2,d3]@27 ~ [c2,g2]@27 [f2,c3]@13 ~ [c2,g2]@11]/6", // G5 C5 F5 C5 G5 C5 F5 C5
AH: "[~@3 [g2,d3]@27 [g2,d3]@27 ~ [c2,g2]@27 [f2,c3]@11]/3", // G5 C5 F5
AI: "[~@3 [c2,g2]@14 [g2,d3]@27 [g2,d3]@27 ~ [c2,g2]@27 [f2,c3]@13 ~ [c2,g2]@14 [g2,d3]@27 [g2,d3]@27 ~ [c2,g2]@27 [f2,c3]@13 ~ [c2,g2]@14 [g2,d3]@15 [g2,d3]@3 [g2,d3]]/8", // C5 G5 C5 F5 C5 G5 C5 F5 …
AJ: "~@2 [g2,d3]@2 [g2,d3]@2 ~ [g2,d3]@2 [g2,d3]@2 [g2,d3]@2 [g2,d3]@2 [g2,d3]@3 [g2,d3]@3 [g2,d3]@3 [g2,d3]@4 [g2,d3]@4", // G5
AK: "[[g2,d3]@5 [g2,d3]@33 [g2,d3]@2 ~@24]/2", // G5
})).s("gm_distortion_guitar").gain(0.36)
// bass · electric bass finger · "El Bass"
const bass = note(`<
~@16 A B C A@2 B C A@2 B C A@2 B C A D E F G D E F H@2 I J K L@2 J K M N O P Q R S P Q R T D E F G D E F H@2 U V W X Y
V W Z@2 J K AA@2 AB AC AD AE AF AG AF AH AF AG AF AI D E F H@2 U V W X Y V W X Y V W X Y V W AJ@3 AK@3 AL AM@2 AN AO
AP AQ@2 AR AS AT AU AV AW@2 AX AY@3 AZ BA BB BC BD@2 BE BF@3 BG@2 ~@8
>`.pickRestart({
A: "g1@31 ~", B: "c2", C: "f2 c2", D: "g1@4 f1 ~ f#1 ~ g1@4 f1 ~ f#1 ~ g1@2 f1 ~ g1 ~ f1@2 g1 ~ a#1@6",
E: "g1@3 ~ f1@2 f#1@2 g1@4 f1@2 f#1@2 g1@2 f1@2 g1@2 f1@2 c2@2 a#1@6",
F: "g1@2 f1 f#1 g1@2 f1 f#1 g1 f1 g1 f1 g1 a#1@3", G: "g1@2 f1 f#1 g1@2 f1 g1@2 f1 g1 f1 g1 a#1@3",
H: "[g1@4 f1@2 f#1@2 g1@4 f1@2 g1@2 c2@30 ~@2 c2@3 ~ c2@2 a#1 ~ c2 ~ a#1@2 f1@2 g1@2]/2",
I: "~@16 g1@4 f1 ~ f#1 ~ g1@4 f1 ~ f#1 ~", J: "g1@2 f1 ~ g1 ~ f1@2 g1 ~ a#1@6 g1@3 ~ f1@2 f#1@2 g1@4 f1@2 f#1@2",
K: "g1 f1 g1 f1 c2 a#1@3 g1@2 f1 f#1 g1@2 f1 f#1",
L: "[g1@2 f1@2 g1@2 f1@2 g1@2 a#1@6 g1@4 f1@2 f#1@2 g1@4 f1@2 g1@4 f1@2 g1@2 f1@2 g1@2 a#1@6 g1@4 f1 ~ f#1 ~ g1@4 f1 ~ f#1 ~]/2",
M: "g1 f1 g1 f1 g1 a#1@3 g1@2 f1 f#1 g1@2 f1 g1", N: "c2@15 ~", O: "c2@3 ~ c2@2 a#1 ~ c2 ~ a#1@2 f1@2 g1@2 ~@16",
P: "g1@11 ~ g1 ~ g1@3 ~ g1 ~ g1@7 ~ a#1@2 g1 ~", Q: "c2@11 ~ g1 ~ c2@3 ~ g1 ~ c2@7 ~ d2 ~ c2 ~",
R: "f2@11 ~ f2 ~ f2 ~ c2@3 ~ c2@7 ~ c2 ~ d2 ~", S: "g1@7 ~ g1@3 ~ f1 ~ g1@3 ~ f1 ~ g1@3 ~ g1@3 ~ f1 ~ f1 ~",
T: "g1@15 ~", U: "~@16 g1@11 ~ g1 ~ g1@2", V: "~@2 g1 ~ g1@7 ~ a#1@2 g1 ~ c2@11 ~ g1 ~ c2@2",
W: "~@2 g1 ~ c2@7 ~ d2 ~ c2 ~ f2@11 ~ f2 ~ f2 ~", X: "c2@3 ~ c2@7 ~ c2 ~ d2 ~ g1@7 ~ g1@3 ~ f1 ~ g1@2",
Y: "~@2 f1 ~ g1@3 ~ g1@3 ~ f1 ~ f1 ~ g1@11 ~ g1 ~ g1@2",
Z: "[c2@3 ~ c2@7 ~ c2 ~ d2 ~ g2 ~ f2@29 ~ g1@4 f1 ~ f#1 ~ g1@4 f1 ~ f#1 ~]/2",
AA: "[g1@2 f1@2 g1@2 f1@2 g1@2 a#1@6 g1@4 f1@2 f#1@2 g1@4 f1@2 g1@4 f1@2 g1@2 f1@2 g1@2 a#1@6 a1@4 g1 ~ g#1 ~ a1@4 g1 ~ g#1 ~]/2",
AB: "a1@2 g1 ~ a1 ~ g1@2 a1 ~ c2@6 a1@3 ~ g1@2 g#1@2 a1@4 g1@2 g#1@2",
AC: "a1 g1 a1 g1 d2 c2@3 g1@2 f1 f#1 g1@2 f1 f#1", AD: "g1@2 f1@2 g1@2 f1@2 g1@2 a#1@6 g1@4 f1 ~ f#1 ~ g1@4 f1@4",
AE: "c2@31 ~", AF: "d2 ~ d2 ~ d2 ~ d2 ~ d2@5 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2@3 ~ g1@3 ~",
AG: "c2 ~ c2 ~ c2 ~ c2 ~ c2@5 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2@3 ~ g1@3 ~",
AH: "c2 ~ c2 ~ c2 ~ c2 ~ c2@5 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2@3 ~ a1@3 ~", AI: "c2@15 ~ a#1@15 ~",
AJ: "[c2@3 ~ c2@7 ~ c2 ~ d2 ~ g1@61 ~@19]/3", AK: "[~@16 g1@61 ~@19]/3",
AL: "~@10 e1@2 f1@2 f#1@2 g1@4 f1 ~ f#1 ~ g1@3 f1 ~ g1@3",
AM: "[~ f1 ~ g1@2 f1 ~@2 f1 ~ a#1@3 ~ c2@3 ~ a#1@3 ~ c2@3 a#1 ~ c2@3 ~ c2@2 a#1@3 ~ c2@3 a#1@3 ~ f2@3 ~ e2 ~@2 f2@3 ~ e2 ~ c2@4 c2 a1@2, ~@7 g1@3 ~@54]/2",
AN: "~@2 c2@3 ~ a1@3 ~ g1@3 f1@3 ~ g1@3 f1@2 g1@3 ~ g1 e1 ~ e1@2 f1",
AO: "~ f1 f#1 ~ f#1 ~ g1@3 f1 ~ f#1 ~ g1@3 f1 ~ g1@3 f1 ~ g1@2 f1 ~@2 f1 ~ a#1@2, ~@27 g1@3 ~@2",
AP: "~ c2@3 ~ a#1@3 c2@3 ~ a#1 ~ c2@3 c2 ~ a#1@3 c2@3 ~ a#1@3 f2@3",
AQ: "[e2 ~@3 f2@3 e2 ~ c2@3 c2 ~ a1@3 ~ c2@3 a1@3 g1@2 g2@2 b2@2 ~ c3@2 c3@2 c#3@2 ~ d3@2 d3@2 e2 e2@2 f2@2 f2@2 f#2 f#2@2 g1@3 f1 ~ f#1 ~ g1@3 f1 ~, ~@30 b2@2 ~@5 c#3@2 ~@25]/2",
AR: "g1@3 f1 ~ g1@2 f1 ~@2 f1 ~ a#1@3 ~ c2@3 a#1@3 c2@3 ~ a#1 ~ c2@3 c2, ~@9 g1@3 ~@20",
AS: "~ a#1@3 c2@3 ~ a#1@3 f2@3 e2 ~@3 f2@3 e2 ~ c2@3 c2 ~ a1@3 ~",
AT: "c2@3 a1@3 ~ g1@3 f1@2 ~ g1@3 ~ f1@2 g1@3 g1 ~ e1 e1@2 f1 ~ f1 ~ f#1",
AU: "f#1 ~ g1@3 f1 ~ f#1 ~ g1@3 f1 ~ g1@3 f1 ~ g1@2 f1 ~@2 f1 ~ a#1@3 ~ c2@2, ~@23 g1@3 ~@6",
AV: "~ a#1@3 c2@3 ~ a#1 ~ c2@3 c2 ~ a#1@3 c2@3 ~ a#1@3 f2@3 e2 ~@3",
AW: "[f2@3 e2 ~ c2@3 ~ c2 a1@3 ~ c2@3 a1@3 ~@2 g2@2 g2@2 g2 g2@2 g2@2 g2@2 ~ g3@2 g3@2 g3 g3@2 g3@2 g3@2 g3!2 ~ g1@3 f1 ~ f#1 ~ g1@3 f1 ~ g1@3 ~, ~@21 g1@2 ~@10 g2@2 ~@29]/2",
AX: "f1 g1@2 f1 ~@2 f1 ~ a#1@3 ~ c2@3 a#1@3 c2@3 ~ a#1 ~ c2@3 c2 ~ a#1@3, ~@5 g1@3 ~@24",
AY: "[c2@3 ~ a#1@3 f2@3 ~ e2 ~@2 f2@3 e2 ~ c2@3 ~ c2 a1@3 ~ c2@3 a1@3 ~ g1@3 f1@2 ~ g1@3 ~ f1@2 g1@3 g1 ~ e1 e1@2 f1 ~ f1 ~ f#1!2 ~ g1@4 f1 f#1 ~ g1@3 f1 ~ g1@3 ~ f1 g1@2 f1 ~@2 f1 ~ a#1@3 ~ c2@3 a#1@3, ~@83 g1@3 ~@10]/3",
AZ: "c2@3 ~ a#1 ~ c2@3 c2 ~ a#1@3 c2@3 ~ a#1@3 f2@3 ~ e2 ~@2 f2@3 e2",
BA: "~ c2@3 ~ c2 a1@3 ~ c2@3 a1@3 ~@2 g2@2 g2@2 g2 g2@2 g2@2 g2@2 ~ g3@2, ~@17 g1@2 ~@10 g2@2 ~",
BB: "g3@2 g3@2 g3 g3@2 g3@2 g3!2 ~ g1@4 f1 f#1 ~ g1@3 f1 ~ g1@3 ~ f1 g1@2 f1",
BC: "~@2 f1 ~ a#1@3 ~ c2@3 a#1@3 ~ c2@3 a#1 ~ c2@3 c2 ~ a#1@3 c2@3 ~, ~ g1@3 ~@28",
BD: "[a#1@3 f2@3 ~ e2 ~@2 f2@3 e2 ~ c2@3 ~ c2 a1@3 ~ c2@3 a1@3 ~ g1@3 f1@2 ~@2 g1@3 f1@2 g1@3 g1 ~ e1 ~@2 f1 ~ f1 ~ f#1!2 ~ g1@4 f1 f#1, ~@25 e1 ~@6]/2",
BE: "~ g1@3 f1 ~ g1@3 ~ f1 g1@2 f1 ~ g1@2 f1 a#1@3 ~ c2@3 a#1@3 ~ c2@3",
BF: "[a#1 ~ c2@3 c2 ~ a#1@3 c2@3 ~ a#1@3 f2@12 ~@2 c2@12 ~@2 g1@15 g1@3 g1@3 g1@2 g1@2 ~ g1@2 g1@2 g1@2 g1@2 g1@3 g1@3 g1@3 g1@4 g1@4]/3",
BG: "[g1@5 g1@31 ~@2 g1@2 ~@24]/2",
})).s("gm_electric_bass_finger").gain(0.5)
// other · overdriven guitar · "DstGtr2"
const overdriven_guitar = note(`<
~@84 A B C B C B C B ~ D E F G ~@16 H@6 I@3 J@2 K L@2 M N O@2 P Q R S T@2 U V W X Y Z@2 AA AB AC AD@2 ~@9
>`.pickRestart({
A: "~@15 f4", B: "f#4@2 d5@2 g4@2 f4@2 f#4@2 d5@2 ~@4 f#4 ~ d5@2 g4 ~ f4@2 f#4@2 d5@2 ~@4",
C: "e4@2 c5@2 f4@2 d#4@2 e4@2 c5@2 ~@4 e4 ~ c5@2 f4 ~ d#4@2 e4@2 c5@2 ~@4",
D: "b3@4 a3 ~ a#3 ~ b3@4 a3 ~ a#3 ~ b3@2 a3 ~ b3 ~ a3@2 b3 ~ d4@6",
E: "b3@3 ~ a3@2 a#3@2 b3@4 a3@2 a#3@2 b3@2 a3@2 b3@2 a3@2 e4@2 d4@6",
F: "b3@2 a3 a#3 b3@2 a3 a#3 b3 a3 b3 a3 b3 d4@3", G: "b3@2 a3 a#3 b3@2 a3 b3 ~@8", H: "[~@8 b4@31 ~@9]/3",
I: "[~@16 g3@3 ~ f3 ~ f#3 ~ g3@3 f3 ~ f#3@2 g3@2 f3 ~ g3@2 f3 ~ g3 a#3@5 ~ c4@3 ~ a#3 ~ [b3,c4] ~ c4@3 a#3 ~ b3 ~ c4@2 a#3@2 c4@2 a#3 ~ d4@3 a#3@7 ~ g3@2 ~ g3@3 ~@3 g3@5 g3@2]/3", // Cmaj7
J: "[~@2 a#3@3 ~ a#3@3 ~ g3@3 g3@2 ~@2 g3@3 f3 ~ g3@3 ~ f3 g3 ~ f3 ~ c4@3 a#3@3 ~ g3@3 f3 ~ f#3 ~ g3@3 f3 ~ f#3 ~@2 f3 ~ g3@2 f3 ~ g3 a#3@4, ~@26 g3 ~@5]/2",
K: "~ c4@3 ~ a#3 ~ [b3,c4] c4@3 ~ a#3 ~ b3 c4@2 a#3 ~@2 a#3 ~ d4@3 ~ a#3@6, ~@19 c4@2 ~@11", // Cmaj7
L: "[g3@2 ~@2 g3@3 ~@2 g3@4 ~ g3@3 ~ a#3@2 ~ a#3@3 g3@3 ~ g3@2 ~ g3@3 ~ f3 ~ g3@3 f3 ~ g3 f3 ~ c4@3 ~ a#3@3 g3@3 f3 ~ f#3 ~ g3@3 f3 ~]/2",
M: "f#3 ~@2 f3 ~ g3@2 f3 ~ g3 a#3@4 ~@2 c4@3 a#3 ~ [b3,c4] c4@3 ~ a#3 ~ b3 c4@2 a#3, ~ g3 ~@14", // Cmaj7
N: "~@2 a#3 ~ d4@3 ~ a#3@6 g3@2 ~@2 g3@3 ~@2 g3@4 ~ g3@3 ~, ~ c4@2 ~@29",
O: "[a#3@2 ~ a#3@3 ~ g3@3 g3@2 ~ g3@3 ~ f3 ~ g3@3 f3 ~ g3 f3 ~ c4@3 ~ a#3@3 g3@3 f3 ~ f#3 ~ g3@3 f3 ~ f#3 ~@2 f3 ~ g3@2 f3 ~ g3 a#3@4 ~@2 c4@2, ~@24 g3 ~@7]/2",
P: "~ a#3 ~ [b3,c4] c4@3 ~ a#3 ~ b3 c4@2 a#3 ~@2 a#3 ~ d4@3 ~ a#3@6 g3@2 ~@2, ~@15 c4@2 ~@15", // Cmaj7
Q: "g3@3 ~@2 g3@4 ~ g3@3 ~ a#3@2 ~ a#3@3 ~ g3@3 g3@2 ~ g3@3 ~ f3",
R: "~ g3@3 f3 ~ g3 f3 ~ c4@3 ~ a#3@3 g3@3 f3 ~ f#3 ~ g3@3 f3 ~ f#3 ~ g3@2",
S: "f3 g3@2 f3 ~ g3 a#3@4 ~@2 c4@3 a#3 ~ [b3,c4] c4@3 ~ a#3 ~ b3 c4@2 a#3 ~@2 a#3 ~, ~@29 c4@2 ~", // Cmaj7
T: "[d4@3 ~ a#3@7 g3@2 ~ g3@3 ~@2 g3@4 ~ g3@3 ~ a#3@2 ~ a#3@3 ~ g3@3 g3@2 ~ g3@3 ~ f3 ~ g3@3 f3 ~ g3 f3 ~ c4@3 ~ a#3@3 g3@2]/2",
U: "~@2 f3 f#3 ~ g3@3 f3 ~ f#3 ~ g3@2 f3 g3@2 f3 ~ g3 a#3@4 ~@2 c4@3 a#3 ~ [b3,c4]", // Cmaj7
V: "c4@3 ~ a#3 ~ b3 c4@2 a#3 ~ c4@2 a#3 d4@3 ~ a#3@7 g3@2 ~ g3@3 ~",
W: "~ g3@4 ~ g3@3 ~ a#3@2 ~ a#3@3 ~ g3@3 g3@2 ~ g3@3 ~ f3 ~ g3@3",
X: "f3 ~ g3 ~ f3 c4@3 ~ a#3@3 g3@3 ~ f3 f#3 ~ g3@3 f3 ~ f#3 ~ g3@2 f3 g3@2 f3",
Y: "~ g3 a#3@4 ~@2 c4@3 a#3 ~ [b3,c4] ~ c4@3 a#3 ~ b3 c4@2 a#3 ~ c4@2 a#3 d4@3 ~", // Cmaj7
Z: "[a#3@7 g3@2 ~ g3@3 ~@2 g3@4 ~ g3@3 ~ a#3@2 ~ a#3@3 ~ g3@3 g3@2 ~@2 g3@3 f3 ~ g3@3 f3 ~ g3 ~ f3 c4@3 ~ a#3@3 g3@3 ~ f3 f#3]/2",
AA: "~ g3@3 f3 ~ f#3 ~ g3@2 f3 g3@2 f3 ~ g3 ~ a#3@4 ~ c4@3 a#3 ~ [b3,c4] ~ c4@3", // Cmaj7
AB: "a#3 ~ b3 c4@2 a#3 ~ c4@2 a#3 d4@3 ~ a#3@7 g3@2 ~ g3@3 ~@2 g3@3",
AC: "~@2 g3@3 ~ a#3@2 ~ a#3@3 ~ g3@11 ~ c4@5 a#3@2",
AD: "[g3 ~ c4@5 a#3 g3 ~@2 c4@3 a#3@2 g3 ~ a#3 ~ c4 ~ c4@3 ~@2 a#3@23 ~@14]/2",
})).s("gm_overdriven_guitar").gain(0.23)
// other · synth strings 1 · "SynString"
const synth_strings_1 = note(`<
~@16 A B C A@2 B D E A B C A@2 B D E ~@36 F G H I J G K L@2 ~@29 M@3 N@4 O@7 ~@38
>`.pickRestart({
A: "g5@31 ~", B: "c5@31 ~", C: "f5 a5", D: "f5 e5", E: "d5@31 ~", F: "~@16 g4@3 ~ g4 ~ g4@3 ~@3 g4 ~ f4 ~",
G: "g4 ~@3 g4@2 ~@2 a#4 ~ g4@4 ~@2 g4@3 ~ g4 ~ g4@3 ~ f4 ~ g4@2 f4 ~",
H: "g4@3 ~ g4@3 ~ a#4 ~ g4@4 ~@2 d5@7 ~ c5@2 ~@2 a#4 ~@3", I: "c5@7 ~ d5@3 ~ a#4@3 ~ e4 ~@3 g4@12",
J: "~@4 g4@9 ~@3 g4@3 ~ g4 ~ g4@3 ~@3 g4 ~ f4 ~", K: "g4@3 ~ g4@3 ~ a#4 ~ g4@4 ~@6 d5@3 ~ c5@3 ~ a#4@2 ~@2",
L: "[c5@7 ~ c5@6 ~@2 c5@22 ~@2 d5@2 ~@2 a#4@3 ~ e4@3 ~ g4@8 ~@4]/2", M: "[~@16 g5@31 ~ c5@31 ~ f5@16]/3",
N: "[a5@16 g5@31 ~ g5@31 ~ c5@31 ~ f5@16]/4", O: "[e5@16 [g4,d5,g5]@96 [g4,d5,g5]@95 ~@17]/7",
})).s("gm_synth_strings_1").gain(0.36)
// other · synth strings 1 · "SynString" · soft notes
const synth_strings_1_soft = note("<~@68 A B ~@2 A B ~@2 C ~@81>".pickRestart({
A: "~@26 f4 ~@5", B: "~@2 f4 ~@29", C: "~@12 b4 ~@19",
})).s("gm_synth_strings_1").gain(0.24)
// chords · electric guitar clean · "CleanGtr"
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 ~@19 A B C D A B C D ~@9 E@6 F@4 ~@20 E@6 G@8 H@4 I@3
~@14 J K@4 L@7 M@5 ~@8
>`.pickRestart({
A: "~@28 g3@3 ~, g2, [b2,g3]@16 b2 d3 g3@8 d4@6, d3@2 g4@3 [b2,d3]@3, ~ d4@11 d3@2 d4@10 g4@8", // Em Bm
B: "~@7 g3, [c3,g3]@7 g3@3 e3@6, e3@6 e3@3 d4@3 g4@4, ~ d4@15 c3@16, ~@4 g4@7 g3@2 d4@3", // C5
C: "~@7 g3, f3@9 g3 e3 g3 g4 d4@3, a3@3 a3@5, ~ c4@11 g4@2 c4@18, ~ d4 c3@2",
D: "~@12 g4@2 d4 g3, g2@15 ~, d3@4 g4@7 g3@4 ~, ~ g3@11 d3@2 g3@6 [b2,d3]@10 ~@2, ~ d4@7 d3 d4@5 ~@2", // Bm
E: "[~@44 g3@3 ~@29 g3@4 ~@28 g3@4 ~@24 g4@4 d4@2 g3@2 ~@28 g3@3 ~@15 g3@2, ~@8 g2@16 e3@6 e3@3 d4@3 g4@4 f3@9 g3 e3 g3 g4 d4@3 g2@15 ~ g2@16 e3@6 e3@2, ~@16 [b2,g3]@16 b2 d3 g3@8 d4@6 ~ d4@15 c3@16 a3@12 a3@20 d3@8 g4@14 g3@8 ~@2 d3@8 g4@12 [b2,d3]@12 [c3,g3]@16, ~@16 d3@8 g4@12 [b2,d3]@12 [c3,g3]@14 g3@6 e3@13 ~@7 d4@8 c3@17 ~ d4@14 d3@2 d4@10 ~@5 d4@11 d3@2 d4@10 g4@8 ~@8 g4@8, ~@17 d4@11 d3@2 d4@10 g4@8 ~@8 g4@14 g3@4 d4@7 c4@11 g4@2 c4@19 g3@11 d3@2 g3@6 [b2,d3]@10 ~@2 [b2,g3]@16 b2 d3 g3@8 d4@6 ~ d4@15]/6", // Em Bm C5 Bm C5 Bm Em
F: "[~@6 g3@2 ~@23 f3@32 ~, c3@8 f3@11 g3 g4@5 f2@32 ~@7, ~ d4@3 g4@4 a3@6 a3@7 d4@7 c3@32 ~@4, ~@4 e3@13 ~@7 d4@8 c3@2 g3@2 e3@12 g2@64 ~@16, ~@6 g3@4 d4@7 c4@11 g4@2 c4@14 g3@64 ~@20]/4",
G: "[~@12 g3@4 ~@28 g3@4 ~@24 g4@4 d4@2 g3@2 ~@28 g3@3 ~@29 g3@4 ~@28 g3@4 ~@24 g4@4 d4@2 g3@2 ~@28 g3@3 ~@15 g3@2, c3@8 f3@9 g3 e3 g3 g4 d4@3 g2@15 ~ g2@16 e3@6 e3@3 d4@3 g4@4 f3@9 g3 e3 g3 g4 d4@3 g2@15 ~ g2@16 e3@6 e3@2, ~ d4@3 g4@4 a3@6 a3@10 d3@4 g4@7 g3@4 ~ d3@4 g4@6 [b2,d3]@6 [c3,g3]@7 g3@3 e3@6 a3@6 a3@10 d3@4 g4@7 g3@4 ~ d3@4 g4@6 [b2,d3]@6 [c3,g3]@8, ~@4 e3@13 ~@7 d4@8 c3@17 ~ d4@14 d3@2 d4@10 ~@5 d4@11 d3@2 d4@10 g4@8 ~@8 g4@14 g3@4 d4@7 c4@11 g4@2 c4@19 g3@11 d3@2 g3@6 [b2,d3]@10 ~@2 [b2,g3]@16 b2 d3 g3@8 d4@6 ~ d4@15, ~@6 g3@4 d4@7 c4@11 g4@2 c4@19 g3@11 d3@2 g3@6 [b2,d3]@10 ~@2 [b2,g3]@16 b2 d3 g3@8 d4@6 ~ d4@15 c3@17 ~@7 d4@8 c3@17 ~ d4@14 d3@2 d4@10 ~@5 d4@11 d3@2 d4@10 g4@8 ~@8 g4@8]/8", // Bm C5 Bm C5 Bm Em Bm Em
H: "[~@3 g3 ~@7 g3 [d3,g3,d4]@16 ~@4, c3@8 f3@9 g3 e3@32 ~@14, ~ d4@3 g4@4 a3@6 a3@5 g3 g4@32 ~@12, ~@4 e3@13 ~@7 d4@8 c3@64 ~@32, ~@6 g3@4 d4@7 c4@11 g4@2 c4@12 d4@6 ~@80]/4", // G5
I: "[~ [d3,g3,d4]@4 ~]/3", J: "~@16 g4@3 g4@2 g4@4 ~ g4@2 f4@2 g4@2, ~@25 f4@3 ~@4",
K: "[~ g4@4 ~ g4@5 ~ g4@3 g4@2 ~@3 f4@2 g4@2 ~ g4@3 ~@42 g4@14 g4@10 g4@3 ~ g4 g4@4 ~ g4@2 f4@2 g4@2 ~ g4@4 ~ g4@5 ~ g4@3 g4@2 g4, f4@20 ~@4 f4@43 e4@61, ~@5 a#4@27 a#4@14 c5@3 a#4@11 d5@64 ~@4, ~@17 g4@5 ~@7 g4@5 g4@29 a#4@40 f4@3 ~@4 f4@18, ~@39 d5@14 c5@62 a#4@13]/4",
L: "[~@2 f4@2 g4@2 ~ g4@3 ~@25 c5@7 c5@7 ~@27 g4@3 ~ g4 g4@4 ~ g4@2 f4@2 g4@2 ~ g4@4 ~ g4@5 ~ g4@3 g4@2 ~@3 f4@2 g4@2 ~ g4@3 ~@42 g4@14 g4@10 g4@3 ~ g4 g4@4 ~ g4@2 f4@2 g4@2 ~ g4@4 ~@2 g4@5 g4@3 g4@2 ~@3 f4@2, ~@6 f4@63 d5@57 g4@29 a#4@40 f4@3 ~@4 f4@20 ~@2, ~@11 g4@5 g4@57 a#4@12 f4@3 ~@4 f4@5 a#4@24 g4@3 a#4@14 c5@3 a#4@11 d5@64 ~@3 g4@5, ~@14 a#4@14 c5@3 a#4@41 ~ b4@58 d5@14 c5@62 a#4@17, ~@25 d5@24 c5@60 g4@5 ~@2 f4@43 e4@64 ~]/7",
M: "[g4@2 ~ g4@3 ~@25 c5@7 c5@7 ~@24 [a#4,b4]@64 ~@27, ~@2 f4@63 d5@64 ~@31, ~@7 g4@5 g4@64 ~@84, ~@10 a#4@14 c5@3 a#4@41 ~@92, ~@21 d5@24 c5@64 ~@51]/5", // Bmaj7
})).s("gm_electric_guitar_clean").gain(0.16)
// drums · kick
const kick = s("bd").struct(`<
~@4 A@11 B A@2 C A@3 C D A@2 C A@3 C E F@7 G H I J@7 A K L@2 M N L@2 M O F@7 G H I P@2 Q R P@2 S T J@7 U V W V@3 W V B
F@3 G H I P@2 Q R P@2 Q R P@2 Q R P@2 G X Y Z X AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS AT AU AV AW
AX AY AZ BA BB BC BD BE BF ~@8
>`.pickRestart({
A: "x ~@4 x ~@2", B: "x!2", C: "x ~@3 x!2 ~@2", D: "x ~@6 x ~ x ~ x ~@2 x ~", E: "x ~@6 x ~ x ~ x ~@4",
F: "x ~ x ~@4 x!2 ~ x ~@2 x ~@2", G: "x ~ x ~@4 x!2 ~@7", H: "~ x ~@6", I: "~@3 x ~@4 x ~ x ~@4 x",
J: "x ~ x ~@2 x ~@2 x ~ x ~@4 x", K: "~@11 x ~@4", L: "x ~ x ~@4 x!2 ~ x ~@2 x ~ x", M: "x ~ x ~@4 x!2 ~ x ~@4 x",
N: "x ~ x ~@10 x ~ x", O: "x ~@10 x ~ x ~@2", P: "x ~ x ~@2 x ~ x!2 ~ x ~@4 x", Q: "x ~ x ~@4 x!2 ~ x ~@5",
R: "~@5 x ~ x!2 ~ x ~@4 x", S: "x ~ x ~@4 x!3 ~@6", T: "~@5 x ~@2 x ~ x ~@4 x", U: "x ~@6 x!2 ~ x ~@2 x ~ x",
V: "x ~ x ~@5 x ~ x ~@4 x", W: "x!2 ~@2 x!2 ~@2", X: "~@5 x!2 ~", Y: "x!2 ~ x!2 ~@2 x", Z: "~ x ~ x ~ x ~ x!2 ~@7",
AA: "x ~ x ~@3 x ~@2 x ~ x ~ x ~ x", AB: "~@2 x ~@13 x ~@7 x!2 ~@5 x", AC: "~ x ~@5 x!2 ~@5 x ~@7 x!2 ~@5 x ~ x",
AD: "~@5 x!2 ~@5 x ~@6 x ~@7 x ~ x ~@2", AE: "~@2 x ~ x ~@5 x ~@6 x ~@6 x ~@6 x",
AF: "~ x ~@4 x ~@4 x ~ x ~ x ~@2 x ~ x!2 ~@3 x ~ x!2 ~@3",
AG: "x!2 ~@5 x!2 ~ x ~@3 x!2 ~ x ~@2 x ~ x ~ x ~@2 x ~ x ~@2",
AH: "~@2 x ~ x ~@4 x ~ x!2 ~@3 x ~ x!2 ~@3 x!2 ~@5 x!2", AI: "~@5 x!2 ~@4 x ~ x ~ x ~@2 x ~ x ~@6 x ~ x ~@2",
AJ: "~@2 x!2 ~@5 x!2 ~@5 x ~@5 x ~ x ~@4 x ~ x", AK: "~@4 x ~ x ~@4 x ~@6 x ~@6 x!2 ~@5",
AL: "x!2 ~@5 x ~@5 x ~@6 x ~@6 x ~ x ~@2", AM: "~@2 x ~@4 x ~ x ~ x ~@2 x ~ x!2 ~@3 x ~ x!2 ~@3 x ~ x ~",
AN: "~@3 x!2 ~ x ~@3 x!2 ~ x ~@2 x ~ x ~ x ~@2 x ~ x ~@4 x ~",
AO: "x ~@4 x ~ x ~ x ~@2 x ~ x!2 ~@3 x ~ x!2 ~@4 x ~@4", AP: "~ x ~@4 x ~@7 x ~ x ~@6 x ~ x ~@4 x ~",
AQ: "x ~@4 x!2 ~@5 x ~@5 x ~ x ~@4 x ~ x ~@4", AR: "x ~ x ~@4 x ~@6 x ~@6 x ~ x ~@4 x!2 ~@2",
AS: "~@3 x ~@5 x ~@6 x ~@6 x ~ x ~@4 x ~", AT: "~@3 x ~ x ~ x ~@2 x ~ x ~ x ~@2 x ~ x!2 ~@3 x ~ x ~@4 x",
AU: "x ~ x ~@3 x!2 ~ x ~@3 x!2 ~ x ~@2 x ~ x ~@4 x ~ x ~@3",
AV: "~ x ~ x ~ x ~@2 x ~ x!2 ~@3 x ~ x!2 ~@4 x ~@5 x ~@2", AW: "~@2 x ~@7 x ~ x ~@6 x ~ x ~@4 x ~ x ~@3",
AX: "~ x!2 ~ x ~@3 x!2 ~@5 x!2 ~@4 x ~ x ~@4 x ~ x ~", AY: "~@3 x ~@6 x ~ x ~@4 x ~ x!2 ~@3 x!2 ~@5 x",
AZ: "x ~@5 x!2 ~@4 x ~ x ~ x ~@2 x ~@6 x ~@5", BA: "~ x ~ x ~@4 x ~ x ~@4 x ~ x ~@4 x ~@6 x!2 ~",
BB: "~@3 x ~ x ~@4 x ~@6 x ~@8 x ~@4 x", BC: "~@8 x ~@4 x ~@14 x ~@2 x",
// … 119 more lines
More by Guns N' Roses
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.