0:00/0:00
// Have Ever You Really Loved a Woman? — Bryan Adams
// 73 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: pitch bends are ignored
// note: Full arrangement: all 87 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): Steel Guitar.
setcpm(73/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.
// bass · fretless bass · "Bass"
const bass = note(`<
~@3 A@2 B@3 C@3 D@3 E F@2 G H@2 I J@2 K L@2 M@2 N O@3 P@3 Q R@2 G S@2 T U@2 V W@2 X Y@2 Z AA@2 AB@3 AC AD AE AF@3 AG@3
AH AI AJ AK@2 AL AM@2 AN AO@2 AP AQ@2 AP AR@2 AS@4 ~
>`.pickRestart({
A: "[~@2 d#1@3 c2@3]/2", B: "[d1@9 ~ d1 ~ d1@12 a#1@12 a1@6 g1@6]/3", C: "[f1@10 f1 ~ f1@12 c2@18 a#1@3 a1@3]/3",
D: "[d1@22 ~@2 g1@5 ~ d1@5 ~ g1@4 ~ g1 d1@6]/3", E: "g1@4 ~ g1 d1@4 ~ d1 g1@4",
F: "[~ f#1 g1@2 b1@2 g1@2 d1@6 a1@6 d1@5 a1 d1@2 f#1@2 a1@2]/2", G: "d1@3 a1@3 d1@2",
H: "[~ d1 a1@2 d1@2 f#1@2 g1@6 d1@6 g1@5 d1 g1@2 b1@2 d2@2]/2", I: "g1@3 f#1@3 e1@2",
J: "[~ d1 b1@2 e1@2 g1@2 a1@5 a1 d1@4 f#1@2 a1@5 a1 d1@4 f#1 g1]/2", K: "a1@3 d1@3 a1@2",
L: "[~ a1 d1@3 d1 f#1@2 g1@5 ~ d1@5 d1 g1@6 d1@6]/2", M: "[g1@3 c2@3 d1@2]/2", N: "~@2 d1 ~ d1@12",
O: "[a#1@12 a1@6 g1@6 f1@10 f1 ~ f1@12]/3", P: "[c2@18 a#1@3 a1@3 d1@22 ~@2]/3", Q: "g1@5 ~ d1@5 ~ g1@4",
R: "[~ g1 d1@6 g1@4 ~ g1 d1@4 ~ d1 g1@5 f#1 g1@2 b1@2 g1@2]/2",
S: "[~ a1 d1@2 f#1@2 a1@2 d1@6 a1@6 d1@5 d1 a1@2 d1@2 f#1@2]/2", T: "g1@3 d1@3 g1@2",
U: "[~ d1 g1@2 b1@2 d2@2 g1@6 f#1@6 e1@5 d1 b1@2 e1@2 g1@2]/2", V: "a1@5 a1 d1@4 f#1@2 a1@4",
W: "[~ a1 d1@4 f#1 g1 a1@6 d1@6 a1@5 a1 d1@3 d1 f#1@2]/2", X: "g1@5 ~ d1@5 d1 g1@4",
Y: "[~ d1 g1@2 a1@2 a#1@2 d#2@5 a#1 d#2@6 d#2@5 a#1 d#2@2 a#1@2 d#2@2]/2", Z: "g2@5 g2 d2@6 g2@4",
AA: "[~ g2 c2@2 b1@2 g1@2 d2@5 d2 a1@5 a1 d2@4 ~ d2 d2@3 d2 a1@2]/2",
AB: "[g1@6 d1@2 ~ d1 e1@2 g1@8 ~@4 d#2@4 ~ d#2 a#1@6 c2@4 ~ c2 g1@2 c2@2 g1@2]/3", AC: "d2@5 d2 a1@6 d2@4",
AD: "~ d2 a#1@3 a1@3 a#1@2 a#1@3 a#1 a#1@2", AE: "c2 a#1 a1 a1@2 g1 a1 g1",
AF: "[f1@5 c2 c2@6 f1@6 f1@4 a#1@2 c2@18 a#1@3 a1@3]/3", AG: "[d1@22 ~@2 g1@5 ~ d1@5 ~ g1@5 g1 d1@6]/3",
AH: "g1@4 ~ g1 d1@6 g1@4", AI: "~ g1 d1@4 ~ d1 g1@5 f#1 g1@2", AJ: "b1 g1 d1@3 a1@3",
AK: "[d1@5 a1 d1@2 f#1@2 a1@2 d1@6 a1@6 d1@5 d1 a1@2]/2", AL: "d1 f#1 g1@3 d1@3",
AM: "[g1@5 d1 g1@2 b1@2 d2@2 g1@6 f#1@6 e1@5 d1 b1@2]/2", AN: "e1@2 g1@2 a1@5 a1 d1@4 f#1@2",
AO: "[a1@5 a1 d1@4 f#1 g1 a1@6 d1@6 a1@5 a1 d1@2]/2", AP: "~ d1 f#1@2 g1@5 ~ d1@5 d1",
AQ: "[g1@6 d1@6 a1@6 d1@6 a1@5 a1 d1@2]/2", AR: "[g1@6 g1@6 a1@6 ~ d1@6 a1@7]/2", AS: "[d1@15 g1@43 ~@6]/4",
})).s("gm_fretless_bass").gain(0.41)
// chords · distortion guitar
const distortion_guitar = note("<~@48 A@2 B@3 C@2 ~@32>".pickRestart({
A: "[~@7 [d#2,a#2,d#3]@18 ~ [f2,c3,f3]@6]/2", // D#5 F5
B: "[[g2,d3,g3]@3 [g2,d3,g3] f#4 e4 f#4 [a2,d3,f#3,e4], ~@4 [a2,d3,f#3]@3 ~]/3", C: "[[g2,d3,g3]@3 ~]/2",
})).s("gm_distortion_guitar").gain(0.32).pan(0.3)
// chords · piano
const piano = note("<~@6 A@2 ~@21 B@2 ~@18 C ~ D E F G H I@2 J K@2 ~@26>".pickRestart({
A: "[~@6 c4@7 ~@3, ~@4 a#2@3 ~@9, ~@5 f3@3 ~@8]/2", B: "[~@2 c4@7 ~@7, a#2@3 ~@13, ~ f3@3 ~@12]/2",
C: "~@4 [d#5,g5,a#5]@11 ~", D: "~@2 [c5,c6]@2 [b4,b5]@2 [g4,g5]@3 ~@7", E: "~@4 f#4@2 e4 d4@2 ~ [c5,c6]@5 ~",
F: "[b4,b5]@7 ~@9", G: "~@8 [a#3,d#4,g4]@3 [a#3,d#4,g4]@2 d#4 [a#3,d#4,a4]@2",
H: "~ [a#3,d#4,g4]@3 [c4,d#4,g4]@3 [c4,d#4,a4]@2 [c4,d#4,g4]@2 [c4,d#4,a4]@2 [d#4,g4]@2 ~", // D# Cm Adim Cm Adim D#
I: "[[a3,d4,f#4]@3 [a3,d4,f#4]@3 [a3,d4,g4]@5 [a3,d4,g4] [a3,d4,f#4]@3 [a3,d4,f#4]@3 [f3,a#3,d4]@3 [f3,a3,c4]@3 [f3,a#3,d4]@3 [f3,a#3,d4]@3 [f3,a#3,d#4]@2]/2", // D Dsus4 D A# F A# D#sus2
J: "~ [f3,a#3,d4]@3 [f3,a3,c4]@3 [f3,a3,c4]@3 [f3,a3,c4,f4]@3 [f3,a3,c4,e4]@3", // A# F Fmaj7
K: "[[a3,c4,f4]@3 [a3,c4,f4]@3 [a3,c4,f4]@3 [a3,c4,f4]@3 [c4,d#4,g4]@10 ~@10]/2", // F Cm
})).s("gm_piano").gain(0.32).pan(0.7)
// chords · string ensemble 2 · "Strings"
const string_ensemble_2 = note("<~@6 A@2 B@3 C@2 ~@16 D@3 E@3 ~@25 F@2 G@4 ~@21>".pickRestart({
A: "[~@4 [a#3,d4]@6 a3@3 [a#3,d4]@3, ~ f3@3, ~@4 c4@9 ~@3]/2", // A#
B: "[[f3,a3,c4]@8 d#4@4 d4 c4 a#3 a3, ~ g3, ~@3 a#3@2 ~]/3", C: "[g3@3 f#3@3 g3@3 a3@3 ~@4, d3@3 ~]/2",
D: "[[a#3,d4]@2 a3 [a#3,d4] [f3,a3,c4]@4, f3 ~, c4@3 ~@5]/3", // A# F
E: "[d#4@4 d4 c4 a#3 a3 g3@2 f#3@2 g3@2 a3@2, g3 d3, a#3 ~@2]/3",
F: "[~@8 d#4@12 d4@3 c4@3 a#3@3 a3@3, ~ g3@3, ~ a#3@2 ~]/2",
G: "[g3@3 f#3@3 g3@3 a3@3 c4@12 b3@6 ~@2, d3@6 [d3,g3]@9 ~]/4", // G5
})).s("gm_string_ensemble_2").gain(0.1).pan(0.6)
// chords · pad warm · "Warm pad"
const pad_warm = note("<~@3 A@2 B@2 ~@19 C@3 ~@58>".pickRestart({
A: "[~@2 a#3@3 c4@3, ~ [g3,d#4]@3]/2", B: "[[f#3,a3,d4]@3 ~]/2", C: "[[a#3,d4] [c4,d#4] [f#3,a3,d4]@2, g3 ~]/3",
})).s("gm_pad_warm").gain(0.14)
// chords · acoustic guitar nylon · "Nylon Guitar"
const acoustic_guitar_nylon = note(`<
A B C ~@4 D E ~@5 F G ~ H I J K L ~ M N@2 O P Q R@3 ~@5 S T@2 U@4 ~ V W X ~ Y Z ~@3 AA@2 AB AC@2 AD AE ~@5 AF AG AH AI
AJ AK AL AM AN AO AP AN AO AQ AR@7
>`.pickRestart({
A: "~@2 g3@3 a3@2 a#3 a3@8, ~@8 a#3 ~@7", B: "g3 ~ a3 a#3 a3@5 ~@5 c4 a#3, ~@4 a#3 ~@8 g3@2 ~", C: "a3@3 ~",
D: "~@4 c4@6 a#3@5 c4", E: "c4@11 ~@5, d4 ~@15", F: "~@5 [e4,g4] [d4,f#4] [c4,e4]",
G: "[b3,d4]@2 [a3,c4]@2 [g3,b3]@2 [d3,g3]@2 g3 f#3@5 ~@2, ~@4 d3@3 ~", H: "f#3 g3 a3!2 b3 c4!2 d4",
I: "e4 ~ e4@2 g4@2 ~@2 e4@2 d4@4 ~@2, ~@7 f#4@2 ~@7", J: "~ c4@2 g4@4 f#4@2 e4 f#4 f#4@5",
K: "b3@2 d4@2 g4@2 f#4@3 b3@3 d4@2 b3@2", L: "a3 g3 a3 b3 ~@4", M: "[c4,e4]!6 [c4,e4]@2 [b3,d4]@2 ~@2 [a3,c4]!4",
N: "[[a3,c4]!3 e4 d4@4 g3@12 ~@9 g3 a3 a#3]/2", O: "~@6 [d4,g4]@5 ~@5, [a3,d4]@5 ~@11, ~@3 g3@5 ~@8",
P: "~@3 g3 ~ g3@3 [d3,f#3,a3]@7 ~, ~@4 [d#4,g4]@3 ~ [d4,f#4]@5 ~@3", // D D# D
Q: "~ d3 f#3 ~ f#3@3 ~ e3@2 [a2,d3,a3]@6, ~@7 g3@2 ~@7", R: "[~@12 c4@6 a#3@5 c4 c4@11 ~@13, ~@24 d4 ~@23]/3",
S: "~ [e4,g4] [d4,f#4] [c4,e4] [b3,d4] [a3,c4] [g3,b3] [d3,g3]", // Em D C Bm Am G G5
T: "[g3 f#3@5 ~@2 e4 f#4 e4@3 e3@2 e3@2 f#3@3 e3 d3@2 ~ f#3@2 g3@2 a3@2 a3@2, d3@6 ~ [c4,f#4]@2 c4@4 ~@19]/2", // Cdim
U: "[b3@2 c4@2 c4@2 d4@2 e4 ~ e4@2 g4@2 ~@2 e4@2 d4@4 ~@3 c4@2 g4@4 f#4@2 e4 f#4 f#4@5 b3@2 d4@2 g4@2 f#4@3 b3@3 d4@2 b3@2 a3@2 g3@2 a3@2 b3@2, ~@15 f#4@2 ~@47]/4",
V: "~@8 [c4,e4]!6 [c4,e4]@2", W: "[b3,d4]@2 ~@2 [a3,c4]!7 e4 d4@3 f#3",
X: "~ b3 [b3,c4] a3 g3 f#3 e3 f#3 g3@5 ~@3, g3@3 ~@13", Y: "~ [d#4,g4] [d#4,g4]@6 ~@8", Z: "~@9 [g4,b4] [g4,b4]@6",
AA: "[~@6 d4 [d#4,a#4] d#4@10 d4 [d#4,a#4] [d#4,a4]@2 d4 d#4@6 d#4 a4 g4, ~@8 a4 ~@23]/2", // D#5 D#dim
AB: "f#4@2 [f#4,g4] d#4@2 d4@2 ~@2 d4 d#4 f#4 g4 f#4 ~ f#4", // Gmaj7
AC: "[d#4 d4 ~@5 c4 d4 a#4 f5 ~@4 d#4@2 f4 g4 a4 a#4 a4 g4 f4@2 ~ f4 e4@2 ~ e4@2]/2",
AD: "f4 c4 [d#4,g4] [d#4,f4] [c4,d#4] [d#4,g4] f4@3 ~@2 [g4,a4] [a#4,c5] a#4 a4 a#4", AE: "a4 g4 a4 g4 f4@3 ~@9",
AF: "~@3 [e4,g4] [d4,f#4] [c4,e4] [b3,d4] [a3,c4]", // Em D C Bm Am
AG: "[g3,b3]@2 [d3,g3]@2 g3 f#3@5 ~@2 a3 [a3,b3] [f#3,g3] e3, ~@2 d3@3 ~@3", AH: "f#3 g3 a3@8 ~@2 f#3@2 g3@2",
AI: "a3@2 a3@2 b3@2 c4@2 c4@2 d4@2 e4 ~ e4@2", AJ: "g4@2 ~@2 e4@2 d4@4 ~ a3 [f#3,g3] a3 [f#3,g3] g3, ~@3 f#4@2 ~@11",
AK: "a3 b3 c4 b3 a3 g3@5 ~@2 b3@2 d4@2", AL: "g4@2 f#4@3 b3@3 d4@2 b3@2 a3@2 g3@2", AM: "a3 b3 ~@6",
AN: "~@12 [c4,e4]!4", AO: "[c4,e4]!2 [c4,e4]@2 [b3,d4]@2 ~@2 [a3,c4]!7 e4", AP: "d4 g3@3",
AQ: "d4@4 ~ b3 [b3,c4] a3 g3 f#3 e3 f#3 g3@4, ~@2 g3 ~@5", // Cmaj7
AR: "[b3@2 c4@2 d4@2 d4@2 e4@2 f#4@2 ~ g4@5 ~ [a3,d4,f#4]@5 ~@2 g4@5 ~@2 a4@14 g3@5 ~ b3@3 c4@2 d4@2 f#4@3 e4@3 d4@2 d4@3 c4@3 b3@2 ~ b3@2 a3@3 ~ g3@2 g3@2 f#3@2 ~ b3@2 a3@3 a3@2 [a3,b3] g3@8 ~@6, ~@12 [c4,e4]@6 [d3,f#3]@6 e3@6 ~ d3@14 ~@67, ~@25 [a3,c4,e4]@6 ~ [a3,d4,f#4]@14 ~@43 c4@2 ~@21]/7", // D Asus2 C D Am D
})).s("gm_acoustic_guitar_nylon").gain(0.32).pan(0.3)
// other · acoustic guitar steel · "Steel Guitar"
const acoustic_guitar_steel = note(`<
~@15 A B C D@2 E F G ~ H@2 I@2 ~@11 J K@2 ~ L M N ~@5 O@3 ~@14 P Q R ~ S T ~@6 U@2 V@5
>`.pickRestart({
A: "~@15 a3", B: "b3 c4 d4 e4 d4@3 g4 f#4 e4 e4@6", C: "d3 e3 f#3!2 g3 a3!2 b3",
D: "[c4 ~ c4@2 e4@3 ~ e4@2 f#4@2 e4@3 f#4@2 e4@4 ~@11, ~@7 f#4@2 ~@23]/2", E: "~@6 b3 c4",
F: "d4 ~ d4@2 c4@2 b3@2 ~@3 e4@5, ~@8 a3@5 ~@3, ~@9 b3@2 ~@5, ~@10 c4@3 ~@3",
G: "a4 ~ d5 ~ c5@2 b4 a4@2 g4 f#4@2 e4 d4@3",
H: "[~@10 f#4@2 e4@3 f#4@2 e4@4 ~ f#4@2 e4@3 ~@5, ~@10 d4@5 d4@5 ~ g3@2 ~@9, ~@22 d4@5 ~@5]/2",
I: "[~@11 g3 ~@6 d#4@2 g3@4 ~@8, ~@6 d#4 g3 c4 ~@7, ~@13 c4@2 d#4@2 g3@2 ~@13]/2", J: "~@4 d3 e3 f#3!2",
K: "[g3@2 a3@2 a3@2 b3@2 c4 ~ c4@2 e4@3 ~ e4@2 f#4@2 e4@3 f#4@2 e4@4 ~@3, ~@15 f#4@2 ~@15]/2",
L: "~@4 b3@2 c4@2 d4 ~ d4@2 c4@2 b3@2", M: "~@2 [d4,f#4]@2 [c4,e4]@2 ~ [d4,f#4]@2 e4@3 ~@2 [d4,f#4]@2, ~@9 c4 ~@6",
N: "[c4,e4]@2 ~ [d4,f#4]@2 [c4,e4]@2 ~@9", // C D C
O: "[~@12 a3 ~@2 a3@2 ~@7, ~@8 f#4@4 a3@4 d4@4 f#4@6 e4@5 ~@17, ~@5 d4@2 e4@2 a3@2 d4@2 ~ d4@2 ~@8]/3",
P: "~@6 d3 e3", Q: "f#3@2 f#3@2 g3@2 a3@2 a3@2 b3@2 c4 ~ c4@2",
R: "e4@3 ~ e4@2 f#4@2 e4@3 f#4@2 e4@3, ~@3 f#4@2 ~@11", S: "~@8 b3@2 c4@2 d4 ~ d4@2",
T: "c4@2 b3@2 ~@3 e4@5 ~@4, ~@4 a3@5 ~@7, ~@5 b3@2 ~@9, ~@6 c4@3 ~@7",
U: "[g3@2 a3@2 b3@2 b3@2 c4@2 d4@2 ~ e4@7 ~@12, ~@12 [a3,c4]@7 ~@13]/2", // Am
V: "[~@15 g2@6 d3@2 ~ e3@2 f#3@2 a3@3 g3@3 f#3@2 f#3@3 e3@3 d3@2 ~ d3@2 c3@3 ~ b2@2 b2 ~ a2@5 ~@4 [d3,g3]@12 ~@4, ~@60 [a2,d3,f#3]@3 g2@12 ~@5, ~@61 a3@4 ~@15]/5", // G5 D
})).s("gm_acoustic_guitar_steel").gain(0.26).pan(0.8)
// chords · acoustic guitar nylon · "Nylon Guitar"
const acoustic_guitar_nylon_2 = note(`<
A@2 B C@2 D@3 E@3 F@2 G H@2 I J@2 K L@2 M N@2 K O@3 P Q@2 R@3 S@2 K T@2 I U@2 K V@2 M W@2 X Y@2 Z AA@2 AB AC@2 AD AE@3
AF@3 AG@2 AH T@2 AI U@2 AJ V@2 AI AK@2 AI AL ~@6
>`.pickRestart({
A: "[~@4 [g3,a#3,d#4]@6 ~@5 c3, ~@7 [d#2,a#2]@13 c3@10 ~@2, ~@6 d#3!2, ~@26 g3@5 ~]/2", // D# D#5
B: "~@5 a3@3, d3@7 ~, ~@2 d4@2 d4@3 ~, ~@3 f#4@4 ~",
C: "[~@7 g4@3 ~@3 d#4@3, ~@2 d#3@3 c3@3, ~@5 a#3@5 ~ g3@5, ~@3 d#4@2 ~ c4@2]/2",
D: "[~@4 d4@2 ~@4 a3@2 ~@4 d4@2 ~@2 d4@2 a3@2 ~@6 d4@5 ~@13, d3@11 ~ d3@12 a#2@11 ~@13, ~@2 a3@6 d4@5 ~ a3@5 ~@7 f3@9 ~@13, ~@6 f#4@9 ~@3 f#4@5 ~@5 a#3@6 ~@14]/3",
E: "[~@10 f3@2 ~@4 a3@2 ~@2 c4@2 [f3,d4]@2 [d#3,a#3,d#4]@12 [f3,d4]@3 [d#3,c4]@3 [d3,a#3]@3 [c3,a3]@3, f2@11 ~ f2@7 [f2,c3]@5 ~@24, ~ c3@2 c4@5 ~ c4 a3@2 ~@12, ~@4 f3@4 a3@6 f3@5 f3@2 ~@3 c3 ~@23]/3", // Dm D#5 Dm Cm Gm F F5
F: "[g3@6 f#3@6 g3@6 a3@6 [d3,g3,c4]@3 g4!2 g3 [d3,g3]@2, ~@27 [d3,g3,c4]@2 [c4,g4]@3]/2", // Csus2 G5 Csus2 C5
G: "d3 [d3,g3,c4,g4]@2 [d3,g3,c4,g4] b3 ~ d3 ~ g4 [d3,g3] ~ d3 [d3,g3] ~ g4 [d3,g3,b3,g4], ~@4 [d3,g3]@3 [d3,g3,b3,g4]@2 ~ [d3,g3]@2 ~ [d3,g3,b3,g4]@2 ~, ~@5 b3@2 ~@2 [b3,g4]@4 ~@3", // Csus2 G5 G G5 G G5 G Em
H: "[b3 ~ d3 ~ g4 [d3,g3] ~ d3 [d3,g3] ~ g4 [d3,g3,b3,g4] b3 ~ d3 ~ g4 [d3,g3] ~ d3 [d3,g3] ~ g4 [d3,g3,b3,g4] d4 ~ d3 ~ f#4 [d3,a3] ~ d3, [d3,g3]@3 [d3,g3,b3,g4]@2 ~ [d3,g3]@2 ~ [d3,g3,b3,g4]@2 ~ [d3,g3]@3 [d3,g3,b3,g4]@2 ~ [d3,g3]@2 ~ [d3,g3,b3,g4]@2 ~ [d3,a3]@3 [d3,a3,d4,f#4]@2 ~ [d3,a3]@2, ~ b3@2 ~@2 [b3,g4]@4 ~@4 b3@2 ~@2 [b3,g4]@4 ~@4 d4@2 ~@2 [d4,f#4]@3]/2", // G5 G G5 G D5 G5 G G5 …
I: "[d3,a3] ~ f#4 [d3,a3,d4,f#4] d4 ~ d3 ~ f#4 [d3,a3] ~ d3 [d3,a3] ~ f#4 [d3,a3,d4,f#4], ~ [d3,a3,d4,f#4]@2 ~ [d3,a3]@3 [d3,a3,d4,f#4]@2 ~ [d3,a3]@2 ~ [d3,a3,d4,f#4]@2 ~, ~@5 d4@2 ~@2 [d4,f#4]@4 ~@3", // D5 D D5 D D5 D D5 D
J: "[d4 ~ d3 ~ f#4 [d3,a3] ~ d3 [d3,a3] ~ f#4 [d3,a3,d4,f#4] d4 ~ d3 ~ f#4 [d3,a3] ~ d3 [d3,a3] ~ f#4 [d3,a3,d4,f#4] b3 ~ d3 ~ g4 [d3,g3] ~ d3, [d3,a3]@3 [d3,a3,d4,f#4]@2 ~ [d3,a3]@2 ~ [d3,a3,d4,f#4]@2 ~ [d3,a3]@3 [d3,a3,d4,f#4]@2 ~ [d3,a3]@2 ~ [d3,a3,d4,f#4]@2 ~ [d3,g3]@3 [d3,g3,b3,g4]@2 ~ [d3,g3]@2, ~ d4@2 ~@2 [d4,f#4]@4 ~@4 d4@2 ~@2 [d4,f#4]@4 ~@4 b3@2 ~@2 [b3,g4]@3]/2", // D5 D D5 D G5 D5 D D5 …
K: "[d3,g3] ~ g4 [d3,g3,b3,g4] b3 ~ d3 ~ g4 [d3,g3] ~ d3 [d3,g3] ~ g4 [d3,g3,b3,g4], ~ [d3,g3,b3,g4]@2 ~ [d3,g3]@3 [d3,g3,b3,g4]@2 ~ [d3,g3]@2 ~ [d3,g3,b3,g4]@2 ~, ~@5 b3@2 ~@2 [b3,g4]@4 ~@3", // G5 G G5 G G5 G G5 G …
L: "[b3 ~ d3 ~ g4 [d3,g3] ~ d3 [d3,g3] ~ g4 [d3,g3,b3,g4] b3 ~ d3 ~ g4 [d3,g3] ~ d3 [d3,g3] ~ g4 [d3,g3,b3,g4] c4 ~ e3 ~ e4 [e3,a3] ~ d3, [d3,g3]@3 [d3,g3,b3,g4]@2 ~ [d3,g3]@2 ~ [d3,g3,b3,g4]@2 ~ [d3,g3]@3 [d3,g3,b3,g4]@2 ~ [d3,g3]@2 ~ [d3,g3,b3,g4]@2 ~ [e3,a3]@3 [e3,a3,c4,e4]@2 ~ [d3,a3]@2, ~ b3@2 ~@2 [b3,g4]@4 ~@4 b3@2 ~@2 [b3,g4]@4 ~@4 c4@2 ~@2 [c4,e4]@3]/2", // G5 G G5 G A5 G5 G G5 …
M: "[d3,a3] ~ f#4 [d3,a3,d4,f#4] c4 ~ e3 ~ e4 [e3,a3] ~ d3 [d3,a3] ~ f#4 [d3,a3,d4,f#4], ~ [d3,a3,d4,f#4]@2 ~ [e3,a3]@3 [e3,a3,c4,e4]@2 ~ [d3,a3]@2 ~ [d3,a3,d4,f#4]@2 ~, ~@5 c4@2 ~@2 [c4,e4]@4 ~@3", // D5 D A5 D5 D A5 Am D5 …
N: "[c4 ~ e3 ~ e4 [e3,a3] ~ d3 [d3,a3] ~ f#4 [d3,a3,d4,f#4] c4 ~ e3 ~ e4 [e3,a3] ~ d3 [d3,a3] ~ f#4 [d3,a3,d4,f#4] b3 ~ d3 ~ g4 [d3,g3] ~ d3, [e3,a3]@3 [e3,a3,c4,e4]@2 ~ [d3,a3]@2 ~ [d3,a3,d4,f#4]@2 ~ [e3,a3]@3 [e3,a3,c4,e4]@2 ~ [d3,a3]@2 ~ [d3,a3,d4,f#4]@2 ~ [d3,g3]@3 [d3,g3,b3,g4]@2 ~ [d3,g3]@2, ~ c4@2 ~@2 [c4,e4]@4 ~@4 c4@2 ~@2 [c4,e4]@4 ~@4 b3@2 ~@2 [b3,g4]@3]/2", // A5 D5 D A5 D5 D G5 A5 …
O: "[~@3 g4@3 ~@3 d#4@3 ~@2 d4 ~@2 a3 ~@2 d4 ~ d4 a3, d3@12 c3@12 d3@11 ~ d3@12, ~@2 a#3@10 ~@2 g3@10 ~@2 a3@6 d4@5 ~ a3@5 ~@5, ~@4 d4@8 ~@4 c4@8 ~@6 f#4@9 ~@3 f#4@5 ~]/3",
P: "~@6 d4@5 ~@5, a#2@11 ~@5, ~@2 f3@9 ~@5, ~@2 a#3@3 ~@3",
Q: "[~@9 f3 ~@2 a3 ~ c4 [f3,d4], ~@8 f2@11 ~ f2@7 [f2,c3]@5, ~@5 c3@2 c4@5 ~ c4 a3@2, ~@12 f3@4 a3@6 f3@5 f3@2 ~@3]/2", // Dm F5
R: "[[d#3,a#3,d#4]@12 [f3,d4]@3 [d#3,c4]@3 [d3,a#3]@3 [c3,a3]@3 g3@5 a3 f#3@6 g3@6 a3@6, c3 ~@29 g3 ~@17]/3", // D#5 Dm Cm Gm F
S: "[[d3,g3,c4]@3 g4!2 g3 [d3,g3]@2 d3 [d3,g3,c4,g4]@2 [d3,g3,c4,g4] b3 ~ d3 ~ g4 [d3,g3] ~ d3 [d3,g3] ~ g4 [d3,g3,b3,g4] b3 ~ d3 ~ g4 [d3,g3] ~ d3, ~@3 [d3,g3,c4]@2 [c4,g4]@4 ~@3 [d3,g3]@3 [d3,g3,b3,g4]@2 ~ [d3,g3]@2 ~ [d3,g3,b3,g4]@2 ~ [d3,g3]@3 [d3,g3,b3,g4]@2 ~ [d3,g3]@2, ~@13 b3@2 ~@2 [b3,g4]@4 ~@4 b3@2 ~@2 [b3,g4]@3]/2", // Csus2 G5 Csus2 G5 G G5 Csus2 C5 …
T: "[d4 ~ d3 ~ f#4 [d3,a3] ~ d3 [d3,a3] ~ f#4 [d3,a3,d4,f#4] d4 ~ d3 ~ f#4 [d3,a3] ~ d3 [d3,a3] ~ f#4 [d3,a3,d4,f#4] d4 ~ d3 ~ f#4 [d3,a3] ~ d3, [d3,a3]@3 [d3,a3,d4,f#4]@2 ~ [d3,a3]@2 ~ [d3,a3,d4,f#4]@2 ~ [d3,a3]@3 [d3,a3,d4,f#4]@2 ~ [d3,a3]@2 ~ [d3,a3,d4,f#4]@2 ~ [d3,a3]@3 [d3,a3,d4,f#4]@2 ~ [d3,a3]@2, ~ d4@2 ~@2 [d4,f#4]@4 ~@4 d4@2 ~@2 [d4,f#4]@4 ~@4 d4@2 ~@2 [d4,f#4]@3]/2", // D5 D D5 D D5 D D5 D …
U: "[b3 ~ d3 ~ g4 [d3,g3] ~ d3 [d3,g3] ~ g4 [d3,g3,b3,g4] b3 ~ d3 ~ g4 [d3,g3] ~ d3 [d3,g3] ~ g4 [d3,g3,b3,g4] b3 ~ d3 ~ g4 [d3,g3] ~ d3, [d3,g3]@3 [d3,g3,b3,g4]@2 ~ [d3,g3]@2 ~ [d3,g3,b3,g4]@2 ~ [d3,g3]@3 [d3,g3,b3,g4]@2 ~ [d3,g3]@2 ~ [d3,g3,b3,g4]@2 ~ [d3,g3]@3 [d3,g3,b3,g4]@2 ~ [d3,g3]@2, ~ b3@2 ~@2 [b3,g4]@4 ~@4 b3@2 ~@2 [b3,g4]@4 ~@4 b3@2 ~@2 [b3,g4]@3]/2", // G5 G G5 G G5 G G5 G …
V: "[c4 ~ e3 ~ e4 [e3,a3] ~ d3 [d3,a3] ~ f#4 [d3,a3,d4,f#4] c4 ~ e3 ~ e4 [e3,a3] ~ d3 [d3,a3] ~ f#4 [d3,a3,d4,f#4] c4 ~ e3 ~ e4 [e3,a3] ~ d3, [e3,a3]@3 [e3,a3,c4,e4]@2 ~ [d3,a3]@2 ~ [d3,a3,d4,f#4]@2 ~ [e3,a3]@3 [e3,a3,c4,e4]@2 ~ [d3,a3]@2 ~ [d3,a3,d4,f#4]@2 ~ [e3,a3]@3 [e3,a3,c4,e4]@2 ~ [d3,a3]@2, ~ c4@2 ~@2 [c4,e4]@4 ~@4 c4@2 ~@2 [c4,e4]@4 ~@4 c4@2 ~@2 [c4,e4]@3]/2", // A5 D5 D A5 D5 D A5 Am …
W: "[b3 ~ d3 ~ g4 [d3,g3] ~ d3 [d3,g3] ~ g4 [d3,g3,b3,g4] b3 ~ d3 ~ g4 [d3,g3] ~ d3 [d3,g3] ~ g4 [d3,g3,b3,g4] a#3 a#3@2 ~ d#4 g3 g3@2, [d3,g3]@3 [d3,g3,b3,g4]@2 ~ [d3,g3]@2 ~ [d3,g3,b3,g4]@2 ~ [d3,g3]@3 [d3,g3,b3,g4]@2 ~ [d3,g3]@2 ~ [d3,g3,b3,g4]@2 ~@9, ~ b3@2 ~@2 [b3,g4]@4 ~@4 b3@2 ~@2 [b3,g4]@4 ~@3 g3@3 [g3,a#3,d#4]@2 [a#3,d#4]@3]/2", // G5 G G5 G G5 G G5 G …
X: "g3 [g3,a#3]@2 [g3,a#3] a#3 a#3@2 ~ d#4 g3 f3@2 f3 [f3,a3]@2 [f3,a3], ~@4 g3@3 [g3,a#3,d#4]@2 [a#3,d#4]@4 ~@3", // Gm F D# D#5
Y: "[b3 b3@2 ~ d4 g3 g3@2 g3 [g3,b3]@2 [g3,b3] b3 b3@2 ~ d4 g3 g3@2 g3 [g3,b3]@2 [g3,b3] a3 a3@2 ~ d4 f#3 f#3@2, g3@3 [g3,b3,d4]@2 [b3,d4]@4 ~@3 g3@3 [g3,b3,d4]@2 [b3,d4]@4 ~@3 f#3@3 [f#3,a3,d4]@2 [a3,d4]@3]/2", // G Bm G Bm D D5
Z: "f#3 [f#3,a3]@2 [f#3,a3] a3 a3@2 ~ d4 f#3 f#3@2 f#3 [f#3,a3]@2 [f#3,a3], ~@4 f#3@3 [f#3,a3,d4]@2 [a3,d4]@4 ~@3", // F#m D D5
AA: "[b3 b3@2 ~ d4 g3 g3@2 g3 [g3,b3]@2 [g3,b3] b3 b3@2 ~ d4 g3 g3@6 [a#3,d#4,g4]@3 [a#3,d#4,g4]@2 d#4 [a#3,d#4,a4]@2, g3@3 [g3,b3,d4]@2 [b3,d4]@4 ~@3 g3@3 [g3,b3,d4]@2 [b3,d4]@7 ~@8]/2", // G D# G Bm G Bm
AB: "~ [a#3,d#4,g4]@3 [c4,d#4,g4]@3 [c4,d#4,a4]@2 [c4,d#4,g4]@2 [c4,d#4,a4]@2 [d#4,g4]@2 ~", // D# Cm Adim Cm Adim D#
AC: "[[a3,d4,f#4]@3 [a3,d4,f#4]@3 [a3,d4,g4]@5 [a3,d4,g4] [a3,d4,f#4]@3 [a3,d4,f#4]@3 [f3,a#3,d4]@3 [f3,a3,c4]@3 [f3,a#3,d4]@3 [f3,a#3,d4]@3 [f3,a#3,d#4]@2]/2", // D Dsus4 D A# F A# D#sus2
AD: "~ [f3,a#3,d4]@3 [f3,a3,c4]@3 [f3,a3,c4]@3 [f3,a3,c4,f4] ~@3 [c4,e4]@2, ~@11 [f3,a3]@2 [f3,a3]@3, ~@6 [c4,e4] ~", // A# F C F C
AE: "[[a3,c4,f4]@3 [a3,c4,f4]@3 [a3,c4,f4]@3 [a3,c4,f4]@3 [c4,d#4,g4]@10 ~@2 [g3,a#3,d#4]@6 ~@3 g3@2 ~ [f3,d4]@3 [d#3,c4]@3 [d3,a#3]@3 [c3,a3]@3, ~@15 [a#3,d#4] [a#3,d#4] ~@7, ~@31 g3@2 ~@15]/3", // F Cm D# Dm Cm Gm F D#5
AF: "[g3@5 a3 f#3@6 g3@6 a3@6 ~@2 [d3,g3,c4] ~ [d3,g3,c4] ~@2 d3 g3 [d3,g3,c4] ~ [d3,g3,c4] ~@2 [d3,g3,c4] ~ [d3,g3,c4]@2 ~ g3 ~ [d3,g3] ~ [d3,g3], ~@6 g3 ~@17 g2@4 ~@2 g2@6 g2@10 a2@2]/3", // Csus2 G5
AG: "[~@4 [d3,g3] ~@2 [d3,g3] ~ [d3,g3,b3] ~ [d3,g3,b3] b3 ~ d3 ~ g4 [d3,g3] ~ d3 [d3,g3] ~ g4 [d3,g3,b3,g4] b3 ~ d3 ~ g4 [d3,g3] ~ d3, g2@12 [d3,g3]@3 [d3,g3,b3,g4]@2 ~ [d3,g3]@2 ~ [d3,g3,b3,g4]@2 ~ [d3,g3]@3 [d3,g3,b3,g4]@2 ~ [d3,g3]@2, ~@13 b3@2 ~@2 [b3,g4]@4 ~@4 b3@2 ~@2 [b3,g4]@3]/2", // G5 G G5 G G5 G G5 G …
AH: "[d3,g3] ~ g4 [d3,g3,b3,g4] d4 ~ d3 ~ f#4 [d3,a3] ~ d3 [d3,a3] ~ f#4 [d3,a3,d4,f#4], ~ [d3,g3,b3,g4]@2 ~ [d3,a3]@3 [d3,a3,d4,f#4]@2 ~ [d3,a3]@2 ~ [d3,a3,d4,f#4]@2 ~, ~@5 d4@2 ~@2 [d4,f#4]@4 ~@3", // G5 G D5 D G D5 D D5 …
AI: "[d3,a3] ~ f#4 [d3,a3,d4,f#4] b3 ~ d3 ~ g4 [d3,g3] ~ d3 [d3,g3] ~ g4 [d3,g3,b3,g4], ~ [d3,a3,d4,f#4]@2 ~ [d3,g3]@3 [d3,g3,b3,g4]@2 ~ [d3,g3]@2 ~ [d3,g3,b3,g4]@2 ~, ~@5 b3@2 ~@2 [b3,g4]@4 ~@3", // D5 D G5 G D G5 G G5 …
AJ: "[d3,g3] ~ g4 [d3,g3,b3,g4] c4 ~ e3 ~ e4 [e3,a3] ~ d3 [d3,a3] ~ f#4 [d3,a3,d4,f#4], ~ [d3,g3,b3,g4]@2 ~ [e3,a3]@3 [e3,a3,c4,e4]@2 ~ [d3,a3]@2 ~ [d3,a3,d4,f#4]@2 ~, ~@5 c4@2 ~@2 [c4,e4]@4 ~@3", // G5 G A5 D5 D G A5 Am …
AK: "[b3 ~ d3 ~ g4 [d3,g3] ~ d3 [d3,g3] ~ g4 [d3,g3,b3,g4] c4 ~ e3 ~ e4 [e3,a3] ~ d3 [d3,a3] ~ f#4 [d3,a3,d4,f#4] c4 ~ e3 ~ e4 [e3,a3] ~ d3, [d3,g3]@3 [d3,g3,b3,g4]@2 ~ [d3,g3]@2 ~ [d3,g3,b3,g4]@2 ~ [e3,a3]@3 [e3,a3,c4,e4]@2 ~ [d3,a3]@2 ~ [d3,a3,d4,f#4]@2 ~ [e3,a3]@3 [e3,a3,c4,e4]@2 ~ [d3,a3]@2, ~ b3@2 ~@2 [b3,g4]@4 ~@4 c4@2 ~@2 [c4,e4]@4 ~@4 c4@2 ~@2 [c4,e4]@3]/2", // G5 G A5 D5 D A5 G5 G …
AL: "b3 ~ d3 ~ g4 [d3,g3] ~ d3 [d3,g3] ~ g4 [d3,g3,b3,g4] ~@4, [d3,g3]@3 [d3,g3,b3,g4]@2 ~ [d3,g3]@2 ~ [d3,g3,b3,g4]@2 ~@5, ~ b3@2 ~@2 [b3,g4]@4 ~@7", // G5 G G5 G G5 G Em
})).s("gm_acoustic_guitar_nylon").gain(0.12).pan(0.3)
// chords · acoustic guitar steel · "Steel Guitar"
const acoustic_guitar_steel_2 = note(`<
~@7 A B ~ C ~ D E F G ~@2 H E F I J K H E ~ L M N@2 O P ~@2 Q R E ~@3 F R E K S J F T U V W X V Y ~@5 Z@2 ~@3 AA R ~@3
E F R J K S E AB S E AC ~@6
>`.pickRestart({
A: "~@9 g3@2 a#3@2 d4 c4@2", B: "~@5 f4 ~@3 a#4 a4 a#4 c5 a#4 a4@2", C: "~@4 c4 g4 c4 g4@2 c4@3 ~@4",
D: "~@9 d3 [d3,g3] ~@2 d3 ~ d3, ~@7 c4", E: "~@5 d3 ~@4 b3@3 ~@3", F: "~ d3 ~@4 b3@3 ~@4 d3 ~@2", G: "~@2 b3@3 ~@11",
H: "~@9 d3 ~@4 b3@2", I: "~@2 b3@3 ~@4 e3 ~@6", J: "~@5 e3 ~@10", K: "~ e3 ~@11 e3 ~@2",
L: "~@8 a3@3 [a3,d4]@2 [a3,d4] [a3,d4]@2, ~@11 f#4@5", // D5
M: "a3 [a3,d4,f#4]@2 [a3,d4] a3@3 [a3,d4,f#4]@2 [a3,d4] [a3,d4]@6", // D D5 D D5
N: "[d4 d4@2 d4!2 [a#3,d4] a#3@2 a#3 [a#3,d4,f4]@2 [a#3,d4] c4 c4@2 c4 c4 [a3,c4] [g3,a#3]@2 g3 [g3,a#3,f4]@2 [g3,a#3] c4 c4@2 c4!2 [a3,c4] a3@2, ~@3 f4@6 ~@6 f4@6 ~@6 f4@5, ~@3 a#3@2 ~@7 a3@3 a3@2 ~@7 a3@3 a3@2 ~@3]/2", // A# Am Gm Gm7 Gm Am
O: "~ [a3,c4,f4]@2 [a3,c4] c4 c4@2 c4!2 [a3,c4] a3@6, ~@4 a3@3 f4@6 ~@3, ~@7 a3@2 ~@7", P: "g3@11 ~@5",
Q: "~ d3 [d3,g3] ~@2 d3 ~ d3 ~@5 d3 ~@2, ~@6 c4@3 ~@7", R: "~@2 b3@3 ~@4 d3 ~@4 b3@2", S: "~@9 e3 ~@6",
T: "~@2 b3@3 ~@3 d#3!3 ~@3 d#3!2, ~@7 a#3", U: "d#3 d#3@2 d#3!4 ~@3 c3!3 [c3,c4]@2 [c3,c4], ~@10 c4@3 ~@3",
V: "d3!3 ~@3 d3!3 d3@2 d3!4 ~, ~@6 b3@3 ~@7", W: "~@2 d3!3 d3@2 d3!4 ~@3 d3!2, ~@2 b3@3 ~@3 d4@3 ~@3 [a3,d4]@2",
X: "[d3,a3] [d3,d4]@2 [d3,d4] d3!3 ~@3 d3!2 [d3,a3] [d3,d4]@2 [d3,d4], ~@4 d4@3 ~@3 [a3,d4]@3 ~@3", // D5 D D5 D D5
Y: "~ [d3,b3]@3 ~@4", Z: "[~@8 c4@11 ~@13]/2",
AA: "[d3,d4] [d3,g3] [d3,g3,d4,g4] [d3,g3] ~ [d3,g3] [d3,g3,d4,g4] ~ [d3,g3,d4,g4] ~ [d3,g3,d4,g4] ~@2 d3 ~@2", // D G5
AB: "~ d3 ~@4 b3@3 ~@4 e3 ~@2", AC: "~ d3 ~@4 b3@3 ~@7",
})).s("gm_acoustic_guitar_steel").gain(0.1).pan(0.8)
// drums · kick
const kick = s("bd").struct(`<
~@3 A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C D B C A B C
D B C A B C A B C A B C A B C A B C A B C ~@6
>`.pickRestart({
A: "~ x", B: "~ x ~@2", C: "x ~@2 x", D: "~ x ~@6 x ~@7",
})).gain(0.55)
// drums · rim
const rim = s("rim").struct(`<
// … 103 more lines
More by Bryan Adams
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.