0:00/0:00
// Summer of '69 — Bryan Adams
// 136 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 118 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(136/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 · electric bass finger · "FINGERDBA"
const bass = note(`<
~@18 A B C D E B C D E B F G H I J K L M N K L M N B C D E B C D E B F G H I J G H I J O P Q R O P S T U@2 V@2 U@2 V@2
K L M N K L M N B C D E B C D E B F G H I J G H I J G H I J G H I J G H I J G H I J W
>`.pickRestart({
A: "~@6 g2@2 ~@2 a1@4 a2 ~, ~@8 a2@5 ~@3", B: "~@2 b2@3 b1 b2 b1, b1@9 ~@7", C: "a1@10 a2@2 ~@2 a2 ~, ~@3 a1",
D: "d2@3 d1@3 d2 d1", E: "~@3 g2@2 g1 g2 a1, g1 ~", F: "a1@13 ~@3", G: "~@4 d2 ~ d2@4 d1@2 d2@2 d1 ~, d1@3 ~@5",
H: "~@4 d2 ~ d2@4 d1 ~ d2@2 d1@2, d1@7 ~@9", I: "a1@3 ~ a1 ~ a1@2 a1 ~ a1 ~ a1 ~ a1@2",
J: "a1 ~ a1@2 a1@2 a1@2 a1 ~ a1@2 a1 ~ a1 ~", K: "d1@4 ~@2 d1 ~ d1@6 ~@2", L: "d1@4 ~@2 d1 ~ d1@3 ~ g1@2 g#1@2",
M: "a1@4 ~@2 a1 ~ a1@7 ~", N: "a1@4 ~@2 a1 ~ a1@3 ~ a1@2 f1 ~", O: "f1 ~ f1@2 f1 ~ f1@2 f1 ~ f1 ~ f1 ~ f1@2",
P: "a#1 ~ a#1 ~ a#1 ~ a#1@2 a#1 ~ a#1 ~ a#1 ~ a#1@2", Q: "c2@5 ~ c2@3 ~ c2 ~ c2@2 c2@2",
R: "c2 ~@5 d2@3 ~ a#1 ~ a#1 ~ a#1 ~", S: "c2 ~ c2@2 c2 ~ c2@2 c2@2 c2@2 c2 ~ c2@2",
T: "c3 ~ c3 ~ c3@2 c2@2 c3@2 ~@2 c3@3 ~, ~@10 c2@5 ~", U: "[~ d1@15, d2]/2", V: "[a1@31 ~]/2", W: "d1 ~@3",
})).s("gm_electric_bass_finger").gain(0.37)
// chords · distortion guitar · "DISTORTIO"
const distortion_guitar = note(`<
~ A B C B D E C B D E C B D E C B D E F G H I F G H I F J K@2 L@2 M N O P M N O P F G H I F G H I F J K@2 L@2 K@2 L@2
Q R S T Q R S@2 K@2 L@2 K@2 L@2 M N O P M N O P F G H I F G H I F J K@2 L@2 K@2 L@2 K@2 L@2 K@2 L@2 K@2 L@2 K@2 L@2 U
>`.pickRestart({
A: "[d3,a3,d4]@2 d4 ~ [a3,d4] ~ [d3,a3,d4]@2 d4 ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~", // D5
B: "[d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~", // D5
C: "[d3,a3,d4]@2 d4 ~ [d3,a3,d4] ~ [d3,a3,d4]@2 d4 ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~", // D5
D: "[a2,e3,a3]@2 a3 ~ [a2,e3,a3] ~ [a2,e3,a3]@2 a3 ~ [a2,e3] ~ [a2,e3] ~ [a2,e3] ~", // A5
E: "[a2,e3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3,a3]@2 ~@2", // A5
F: "~@3 [b3,d4,f#4]@5, [b2,f#3]@7 ~", G: "~@3 [a3,c#4,e4]@5, [a2,e3]@15 ~", H: "a3@6 [a3,d4,f#4]@9 ~, d3@15 ~",
I: "[d3,g3]@3 [d3,g3,b3,d4]@4 ~, g2@7 ~", J: "[a2,e3]@13 ~@3",
K: "[a3@6 ~@4 d3@12 ~@4 d3@2 a3 ~ d3 ~, d3@9 ~@23, ~@3 a3@10 ~@3]/2",
L: "[a2@15 ~ a2@4 e3@2 [a2,e3]@9 ~, e3@19 ~@13]/2", // A5
M: "[d3,a3] ~ d3 ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ d3 ~ [d3,a3] ~ [d3,a3] ~", // D5
N: "[d3,a3] ~ [d3,a3] ~ d3 ~ [d3,a3] ~ [d3,a3] ~ d3 ~ [d3,a3] ~ [d3,a3] ~", // D5
O: "[a2,e3] ~ e3 ~ [a2,e3] ~ [a2,e3]@2 [a2,e3] ~ [a2,e3] ~ [a2,e3] ~ e3 ~", // A5
P: "[a2,e3] ~ e3 ~ [a2,e3]@2 e3 ~ [a2,e3]@2 e3 ~ [a2,e3] ~ e3 ~", Q: "[f2,f3,c4]@15 ~", R: "[a#2,f3,a#3]@7 ~",
S: "[c3,g3,c4]", T: "[a#2,f3]@15 ~", U: "[d3,a3,d4]@3 ~@13",
})).s("gm_distortion_guitar").gain(0.27).pan(0.4)
// chords · distortion guitar · "DISTORTIO"
const distortion_guitar_2 = note(`<
~@29 A@2 B@2 C@2 D@2 C@2 D@2 ~@10 A@2 B@2 A@2 B@2 ~@8 A@2 B@2 A@2 B@2 C@2 D@2 C@2 E@2 ~@10 A@2 B@2 A@2 B@2 F@2 G@2 H@3
I J@2 K@2 L@4 M
>`.pickRestart({
A: "[~@22 d4@2 ~@2 a3@2 f#4@2 a3 ~, e4@4 d4@4 a3@4 g4@4 d4@4 a3@5 ~@7, ~ a3@2 f#4@2 d4@2 a3@2 f#4@3 e4@2 ~@2]/2",
B: "[~@11 a3 ~@2 c#4 ~, b3@2 a3@2 e3@2 d4@2 a3@2 e3@2 ~ e3@2 ~, ~@2 e3@4 c#4@4 a3@4 e3@4 c#4@5 ~ b3@4 ~@4]/2",
C: "[e4@5 ~ f#4@22 ~@4]/2", D: "[b3@6 c#4@18 ~@2 a2 ~ [a3,d4,g4]@2 ~@2]/2", E: "[b3@6 c#4@18 ~@2 a2 ~@5]/2",
F: "[d4@13 e4@3]/2", G: "[e4@26 f#4@5 ~]/2", H: "[f#4@19 ~ a4@22 ~@6]/3", I: "~@8 a4@2 c5 ~ c5 ~ c5 ~",
J: "[d5@13 e5@3]/2", K: "[e5@26 f#5@5 ~]/2", L: "[f#5@19 ~@5 f#5@2 g5@2 f#5 ~ f#5@4 e5@20 ~@2 a4@2 c5 ~ c5 ~ c5 ~]/4",
M: "c5@3 ~@13",
})).s("gm_distortion_guitar").gain(0.38).pan(0.3)
// other · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
~ A B C D E F C D E F G@2 H@2 G@2 H@2 ~@14 G@2 H@2 G@2 H@2 ~@18 I J K L I J K@2 ~@8 G@2 H@2 G@2 H@2 ~@35
>`.pickRestart({
A: "[d3,a3]@2 d2 ~ d2 ~ [d3,a3]@2 [d2,d3] ~ [d2,d3] ~ [d2,d3] ~ [d2,d3] ~", // D5 D
B: "[d2,d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~", // D5
C: "[d2,d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d2,d3,a3] ~ [d3,f#3,a3] ~ [d3,f#3,a3] ~ [d3,f#3,a3] ~ [d3,f#3,a3] ~", // D5 D
D: "[d3,f#3,a3] ~ [d3,f#3,a3] ~ [d3,f#3,a3] ~ [d3,f#3,a3] ~ [d3,f#3,a3] ~ [d3,f#3,a3] ~ [d3,f#3,a3] ~ [d3,f#3,a3] ~", // D
E: "[a2,a3]@2 a3 ~ [a2,e3,a3] ~ [a2,e3,a3]@2 ~@2 [a2,e3] ~ [a2,e3] ~ [a2,e3] ~", // A A5
F: "[a2,e3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3] ~ e3 ~ [a2,e3,a3] ~ [a2,e3] ~", // A5
G: "d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~", H: "a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~",
I: "f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2@2", J: "a#2 ~ a#2 ~ a#2 ~ a#2@2 a#2 ~ a#2 ~ a#2 ~ a#2@2",
K: "c3@2 c3 ~ c3 ~ c3@2 c3 ~ c3 ~ c3 ~ c3@2", L: "c3 ~ c3 ~ c3 ~ d3@3 ~ a#2@5 ~",
})).s("gm_electric_guitar_muted").gain(0.27)
// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
~@10 A@8 ~ B C D E B C D E B F G@2 H@2 I@2 J@2 I@2 J@2 B C D E B C D E B F G@2 H@2 G@2 H@2 K L M N K L M@2 G@2 H@2 G@2
H@2 I@2 J@2 I@2 J@2 B C D E B C D E B F G@2 H@2 G@2 H@2 G@2 H@2 G@2 H@2 G@2 H@2 G@2 H@2 O
>`.pickRestart({
A: "[~@17 f#4@21 ~@10 [a3,c#4,e4]@17 ~@15 [d4,f#4]@18 ~@14 [a3,c#4,e4]@15 ~, ~@15 d3@22 ~@10 a2@18 ~@14 [d3,a3]@19 ~@13 a2@16 ~, ~@8 [a3,d4]@11 ~@45]/8", // A D A D5
B: "~@3 b3, b2@9 ~ b2@6, ~@4 b3@7 ~@5, ~@3 [d4,f#4]@5", // D
C: "~@14 c#4 ~, a2@9 ~ a2@6, ~@4 a3@7 ~ a3@4, ~@3 e4@5, ~@3 c#4@3 ~@2",
D: "~@7 d4, d3@9 ~ d3@6, ~@2 a3@3 ~ a3@2, ~@6 f#4@9 ~, ~@3 d4@3 ~@2",
E: "~@6 g3@4 ~@2 g3@3 ~, g2@9 ~ g2@5 ~, ~@6 [b3,d4]@9 ~", F: "[a3,c#4,e4]@15 ~",
G: "[[a3,e4] ~ a3 f#4 d4 ~ g4 ~@2 f#4 d4 a3 [e4,e5] a3 [f#4,f#5] ~, d3@31 ~, e5@5 ~ f#5@5 ~ g5@6 f#5@5 ~@9, ~@2 d4@5 ~@3 a3@4 d4@5 ~@13, ~@4 a3 ~@3]/2", // A5 E F#
H: "[~@11 a3 ~@2 [c#4,c#5] ~, [b3,b4]@4 a3@4 e3@5 ~ e3@5 ~ e3@4 ~@2 e3@4 ~@2, ~ e3@2 [c#4,c#5]@3 [d4,d5]@3 [c#4,c#5]@3 [b3,b4]@2 ~@2, ~@10 a3@5 ~ a3@5 ~@11]/2", // C# B C# D C# B
I: "[[a3,d4,e4]@5 ~ [a3,d4,f#4]@21 ~@5]/2", J: "[[e3,a3,b3]@5 ~ [e3,a3,c#4]@20 ~@6]/2", K: "a3@6 a3 ~, [c4,f4]@7 ~",
L: "[f3,a#3,d4]@7 ~", M: "[g3,c4,e4]@7 ~", N: "[f3,a#3,d4]@13 ~@3", O: "[d3,a3,d4,f#4] ~@7",
})).s("gm_electric_guitar_clean").gain(0.29).pan(0.6)
// chords · rock organ · "ORGAN 3"
const rock_organ = note("<~@59 A B C D E B F G ~@51>".pickRestart({
A: "[a5,f6]", B: "[d6,f6]", C: "[c6,e6]", D: "[f5,a#5,d6]", E: "[c6,f6]", F: "[g5,c6]", G: "[g6,c7]",
})).s("gm_rock_organ").gain(0.19)
// other · lead 2 sawtooth · "SAW WAVE"
const lead_2_sawtooth = note(`<
~@67 A B C D A B C D A B C D A B C D ~@10 A B C D A B C D A B C D A B C D A B C D A B C D ~
>`.pickRestart({
A: "e5 ~ d5 ~ a4@2 f#5@2 d5@2 a4@2 g5 ~ d5@2", B: "a4 f#5 d5 a4 e5 a4 f#5 ~",
C: "b4@2 a4@2 e4@2 c#5@2 a4@2 e4@2 d5 ~ a4@2", D: "e4@2 c#5@2 a4@2 e4@2 b4@2 e4@2 c#5@2 e4 ~",
})).s("gm_lead_2_sawtooth").gain(0.25).pan(0.6)
// chords · melodic tom · "MELO TOM"
const melodic_tom = note("<~@18 A ~@39 B ~@3 C ~@3 D ~@3 E ~@2 F ~@26 G ~@7 H ~@3 I ~@3 B ~>".pickRestart({
A: "~@10 a2 ~@3 g2 ~", B: "~@8 a2 [f2,g2] ~@2 a2 ~ f2 ~", C: "~@10 a2 f2 a2 ~@3", D: "~@12 [f2,a2] ~@3",
E: "~@10 [f2,a2] ~ [f2,a2] ~@3", F: "~@6 [f2,a2] ~@3 [g2,b2] ~@3 [a2,c3] ~",
G: "~@2 g2 ~@7 [f2,g2,a2] ~ [f2,g2,a2] f2 g2 ~", H: "~@14 g2 f2", I: "~@8 g2 ~@3 [f2,g2] ~@3",
})).s("gm_melodic_tom").gain(0.55)
// drums · kick
const kick = s("bd").struct(`<
~@11 A B A B A B A B C D C D C D C D C A E F E G E F E F E F E F E F E F E F E F C A E F E G E F E H E F@2 I E F@3 A ~
A ~ A ~ A J E F E F E F E F E F E F E F E F C A E F E G E F@2 K E F E G E F E ~ E F E@3 F E H A
>`.pickRestart({
A: "x", B: "~@7 x", C: "x ~@6 x", D: "x ~@3 x ~@2 x", E: "x!2", F: "x ~@3 x!2 ~ x", G: "~ x!7",
H: "x ~@5 x ~@3 x!2 ~@4", I: "x ~@2 x ~ x ~@2", J: "~@3 x ~ x!2 ~", K: "x ~@2 x!4 ~",
})).gain(0.45)
// drums · snare
const snare = s("sd").struct(`<
A ~@10 B@7 C B@9 ~ B@3 D B@7 E B@9 ~ B@3 D B@2 E F B@3 G B@4 ~@7 H B@7 I B@9 ~ B@3 D B@3 J B@3 D B@3 K B@3 E B@2 E F ~
>`.pickRestart({
A: "~@3 x", B: "~ x ~ x", C: "~ x!3", D: "~ x!7", E: "~@2 x ~@2 x!2 ~", F: "~@2 x!3 ~@11", G: "~ x ~@2 x ~ x ~",
H: "~ x ~@2 x ~@3", I: "~@4 x ~@5 x!6", J: "~@3 x!2 ~@9 x!2", K: "x ~ x!2 ~ x!2 ~ x ~ x!4 ~@2",
})).gain(0.4)
// drums · hihat
const hihat = s("hh").struct("<~@11 A B A B A B A B A B C B A B C B A ~@21 A ~@41 A ~@26>".pickRestart({
A: "~ x!3", B: "x!2 ~ x", C: "x!4",
})).gain(0.34)
// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@12 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@91>".pickRestart({
A: "~ x ~@2 x ~@3",
})).gain(0.17)
// drums · open hat
const open_hat = s("oh").struct(`<
~@29 A B C B A B C B A B C B A B C B C B C B ~@2 A B C B A B C D A B@2 E A B@3 ~@8 A B C B A B C B A B C B C B C B ~@2
A B C B A B@2 D A B C B A B F G A B C@2 A B C D ~
>`.pickRestart({
A: "~@2 x!6", B: "x!8", C: "x ~ x!6", D: "x", E: "x!4", F: "~@2 x!2 ~ x!3", G: "x!2 ~@6",
})).gain(0.23)
// drums · crash
const crash = s("cr").struct(`<
~@11 A ~ A ~ A ~ A ~ A ~@3 A ~@3 B A@2 ~@3 A ~@3 A ~@3 A ~@7 B A@2 ~@3 A ~@3 A ~@3 A ~@3 A ~ A ~ A ~ A ~ A ~@3 A ~@3 A
~@7 B A@2 ~@3 A ~@3 A ~@3 A ~ C ~ A ~@3 A ~@3 A
>`.pickRestart({
A: "x", B: "x ~@6 x", C: "x!2",
})).gain(0.28)
stack(
bass, distortion_guitar, distortion_guitar_2, electric_guitar_muted, electric_guitar_clean, rock_organ,
lead_2_sawtooth, melodic_tom, kick, snare, hihat, hihat_soft, open_hat, crash
)
More by Bryan Adams
Have Ever You Really Loved a Woman?G major · 73 bpm(Everything I Do) I Do It For YouD♭ major · 67 bpmHeavenC major · 69 bpmRun To YouF♯ minor · 128 bpmAll for LoveD major · 120 bpmCan't Stop This Thing We StartedA major · 119 bpmPlease Forgive MeA major · 66 bpmThought I'd Died and Gone to HeavenE major · 88 bpm
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.