0:00/0:00
// Wonderwall — Oasis
// 88 bpm, 4/4, key F# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 84 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): NYLON.
setcpm(88/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(`<
~@18 A B C D E F G H I J K L M N O P Q P Q P Q P R ~ S T@2 U V W X Y Z AA AB AC AD AE AF AG AH AI@22 AJ@2 AK
>`.pickRestart({
A: "e1@2 ~ c#1 e1@2 ~ a1@2 b1!2 a1 b1@2 a1@2", B: "f#1 ~ f#1 ~ f#1@2 ~ f#1 a1@2 a1 ~ a1@2 ~@2",
C: "e2!4 e2@2 ~ a1 b1 a1 b1 a1 b1@2 a1@2", D: "f#1@2 f#1 ~ f#1@2 ~@2 a1!5 ~ a1@2",
E: "e2@2 e2@2 e2@2 ~ a1 b1 a1 b1 a1 b1@2 a1@2", F: "f#1@2 f#1 ~ f#1@2 ~ f#1 a1@2 a1 ~ a1@2 ~ a1",
G: "e2!4 e2@2 ~ a1 b1 a1 b1 a1 b1@2 a1 ~", H: "d2@2 ~@2 d2@2 ~ d2 e2!3 ~ e2@2 ~ e2",
I: "f#2!3 e2 f#2 ~@2 e2 f#2!2 ~ e2 f#2 ~ f#2@2", J: "~ d2!2 ~ d2@2 ~ d2 e2!3 ~ e2@2 ~@2",
K: "f#2!3 e2 f#2 ~@2 f#2 ~ f#2 ~ e2 f#2 ~ f#2 ~", L: "d2@2 ~@2 d2@2 ~ d2 e2!3 ~ e2@2 ~@2",
M: "a2@3 ~ g#2@3 ~ f#2@3 ~ a2@3 ~", N: "b2!3 a2 b2@2 ~ b2 ~ b2@2 a2 b2@2 b2 ~",
O: "a2 b2 ~ a2 b2 ~ a2 b2 ~ b2 ~ a2 b2 ~ b2 ~", P: "d2 ~ d2@2 d2@2 ~ d2 f#2!5 ~ f#2 ~",
Q: "a2!4 a2@2 ~ e2@2 f#2!3 f#2@2 f#2 ~", R: "a2!4 a2@2 ~ e2 f#2@2 ~@6", S: "e1 f#1 ~ f#1 ~ f#1 a1 ~ f#1@3 ~ f#1@3 ~",
T: "[a1!5 ~ a1 ~ e1@2 ~ c#1 e1@2 ~ a1@2 b1!2 a1 b1@2 a1@2 f#1 ~ f#1@2 f#1@2 ~ f#1]/2",
U: "a1@2 a1 ~ a1@2 ~@2 e2!4 e2@2 ~ a1", V: "b1 a1 b1 a1 b1@2 a1@2 f#1@2 f#1 ~ f#1@2 ~@2",
W: "a1!5 ~ a1@2 e2@2 e2@2 e2@2 ~ a1", X: "b1 a1 b1 a1 b1@2 a1@2 f#1@2 f#1 ~ f#1@2 ~ f#1",
Y: "a1@2 a1 ~ a1@2 ~ a1 e2!4 e2@2 ~ a1", Z: "b1 a1 b1 a1 b1@2 a1 ~ d2@2 ~@2 d2@2 ~ d2",
AA: "e2!3 ~ e2@2 ~ e2 f#2!3 e2 f#2 ~@2 e2", AB: "f#2!2 ~ e2 f#2 ~ f#2@2 ~ d2!2 ~ d2@2 ~ d2",
AC: "e2!3 ~ e2@2 ~@2 f#2!3 e2 f#2 ~@2 f#2", AD: "~ f#2 ~ e2 f#2 ~ f#2 ~ d2@2 ~@2 d2@2 ~ d2",
AE: "e2!3 ~ e2@2 ~@2 a2@3 ~ g#2@3 ~", AF: "f#2@3 ~ a2@3 ~ b2!3 a2 b2@2 ~ b2",
AG: "~ b2@2 a2 b2@2 b2 ~ a2 b2 ~ a2 b2 ~ a2 b2", AH: "~ b2 ~ a2 b2 ~ b2 ~ d2 ~ d2@2 d2@2 ~ d2",
AI: "[f#2!5 ~ f#2 ~ a2!4 a2@2 ~ e2@2 f#2!3 f#2@2 f#2 ~ d2 ~ d2@2 d2@2 ~ d2]/2",
AJ: "[f#2!5 ~ f#2 ~ a2!4 a2@2 f#1@18]/2", AK: "f#1 ~@15",
})).s("gm_fretless_bass").gain(0.48)
// chords · acoustic guitar steel · "RHYTHM"
const acoustic_guitar_steel = note(`<
~ A B C D E F G H A B C D E F I J A B C D E F G H K@2 L M N O P Q R S T U V@2 W X@2 Y@4 Z@5 AA@4 AB AC@5 AD@16 AE@7
>`.pickRestart({
A: "[a3,c#4]@2 a3 [f#3,c#4,f#4] a3 ~ [c#4,f#4] a3 ~ [e3,c#4,e4,a4] [e3,a3,c#4,e4,a4]@2 [a3,c#4]@2 ~ [e3,c#4], [f#3,f#4,a4]@4 [f#3,c#4,f#4,a4]@3 [f#3,c#4,f#4,a4]@3 ~@2 [e3,e4,a4]@4, ~@5 a3@2 ~ a3@2 ~@4 [a3,c#4]@2", // A F#5 A C#m F#m A5 A
B: "[e3,b3,e4,a4]@2 [b3,e4] [e3,b3,e4] b3 ~ e4 b3@2 [b2,b3,d#4,f#4] [b2,b3,d#4,f#4]@2 [b2,b3,d#4,f#4]@2 [b3,d#4,f#4] [b2,b3], ~@4 [e3,e4,a4]@3 [e3,e4,a4]@5 ~@4, ~@5 b3@2 ~@9", // Esus4 E5 B A5
C: "[f#3,a3,c#4,f#4,a4]@2 a3 [a3,c#4,f#4,a4] a3!2 [a3,c#4,f#4,a4] [f#3,a3,c#4,f#4,a4]@2 [e3,a3,c#4,e4,a4] [e3,a3,c#4,e4,a4]@2 a3!2 ~ [e3,e4], ~@4 [f#3,c#4,f#4,a4]@3 ~@5 [e3,c#4,e4,a4]@2 [a3,c#4,e4,a4]@2", // F#m A E F#m A
D: "[e3,b3,e4,a4]@2 [b3,e4,a4] [e3,b3,e4,a4] [b3,a4] ~ [b3,e4] [e3,b3,e4,a4]@2 [b2,b3,d#4,f#4]@2 ~ [b3,d#4] [b2,b3,d#4,f#4] ~ b3, ~@4 [e3,e4]@3 ~@4 [b2,b3,d#4,f#4]@2 ~ [b2,b3,d#4,f#4]@2, ~@5 b3@2 ~@9", // Esus4 B7 E5 Esus4 B E B
E: "[f#3,a3,c#4,f#4,a4]@2 [a3,a4] [f#3,a3,c#4,f#4,a4] a3 ~ [c#4,f#4,a4] a3!2 [e3,a3,c#4,e4,a4] [e3,a3,c#4,e4,a4]@2 a3@2 ~ [e3,c#4], ~@4 [f#3,c#4,f#4,a4]@3 [f#3,c#4,f#4,a4]@3 ~@2 [e3,c#4,e4,f#4,a4]@4, ~@5 a3@2 ~@7 a3@2", // F#m A F#m A C#m F#m F#m7
F: "[e3,b3,e4,a4]@2 [b3,e4,a4] [e3,b3,e4,a4] b3 ~ e4 [e3,e4,a4]@2 [b2,b3,d#4,f#4] [b2,b3,d#4,f#4]@2 [b2,b3,d#4,f#4]@2 ~ b3, [c#3,f#4] ~@3 [e3,e4,a4]@3 ~@7 [b2,b3,d#4,f#4]@2, ~@5 b3@2 [b3,f#4] ~@8", // Esus4 A5 B F#5 A5 B B5
G: "a3@2 ~ [f#3,c#4] [f#3,a3,c#4,f#4,a4]@2 [a3,c#4,a4] a3!2 [e3,a3,c#4,e4,a4] [e3,a3,c#4,e4,a4]@2 [e3,a3,c#4,e4,a4]@2 ~ [e3,e4], [f#3,b3,c#4,f#4,a4]@4 ~@3 [f#3,c#4,f#4,a4]@3 ~@6, ~ a3 ~@5 [a3,c#4,a4]", // F#5 F#m A E F#m A
H: "[b3,e4]@2 [b3,e4] [e3,b3,e4] b3 ~ e4 ~ b3 ~ b3 [b2,b3,f#4]@2 [b2,e4,f#4] [b2,b3,e4,f#4]@2, [e3,a4]@4 [e3,e4,a4]@3 [e3,b3,e4,f#4,a4]@2 [b2,b3,d#4,f#4]@2 ~@2 a3@3, ~@5 b3@2 ~@4 d#4@5", // E5 B5 Bsus4 A5 Esus4 B
I: "[d3,a3,d4,f#4]@2 ~ a3!3 [d3,d4] [e3,b3,e4,a4]@2 [e3,b3,e4,a4]@2 [e3,b3,e4,a4] [e3,b3,e4,a4]@2 [e3,a3,e4,a4] ~, a4 ~@3, ~@2 [d3,a3,d4]@2 [d3,d4,f#4,a4]@3 ~@9", // D Esus4 A5 D5 D
J: "[f#3,a3,c#4,f#4]@2 ~ a3!2 ~ [f#3,c#4] [f#3,a3,c#4,f#4,a4]@2 [f#3,a3,c#4,f#4,a4]@2 [f#3,a3,c#4,f#4,a4] [f#3,a3,c#4,f#4,a4]@2 [f#3,a3,c#4,f#4,a4] ~, a4@4 ~ a3@2 ~@9, ~@2 [f#3,a3,c#4]@2 [f#3,c#4,f#4,a4]@3 ~@9", // F#m F#5 F#m
K: "[a3!2 ~ d3 a3!2 ~ [d3,b3] [e3,b3,e4,g#4]@2 [b3,e4,g#4] [e3,b3,e4] [b3,e4,g#4] b3 [b3,e4] [e3,a3] ~ a3 ~ [f#3,a3] a3!2 [a3,c#4] ~@6 [a3,c#4] ~ a3, [d3,d4,f#4,a4]@2 [a3,d4,f#4,a4]@2 [d3,d4,f#4,a4]@2 [a3,d4,a4]@2 ~@4 e3@3 [c#4,f#4]@3 [a3,c#4,f#4]@2 ~@4 f#3@2 f#3@2 f#3@2 [f#3,a3,c#4,f#4]@2, ~@16 f#3@3 ~ [f#3,c#4,f#4]@3 [f#3,a3,c#4,f#4,a4]@2 a4@7, ~@25 [a3,c#4,f#4]@2 [a3,c#4,f#4]@2 ~@3]/2", // G E E5 E E5 A5 F#m A …
L: "[d3,a3,d4,f#4]@2 [d3,a3,d4,f#4] [a3,d4] ~ a3 [d3,a3,d4] [e3,b3,e4,g#4]@2 [e3,b3,e4,g#4]@2 [e3,b3,e4,g#4]@2 b3 ~ c#4, ~@4 [d3,a3,d4,f#4]@2 ~@7 [e4,g#4]@3, ~@7 [e3,b3]", // D D5 E D E E5
M: "[f#3,a3,c#4,f#4]@2 ~ a3 [a3,c#4] a3 [a3,c#4,f#4] [f#3,a3,c#4,f#4]@2 [f#3,a3,c#4,f#4]@2 ~@4 a3, ~@2 [f#3,a3,c#4,f#4]@2 [f#3,f#4]@3 ~@4 [a3,c#4,f#4]@2 [a3,c#4,f#4]@3, ~@6 f#3!2", // F#m A F#m F# F#m
N: "[d3,a3,d4,f#4]@2 ~ d3 [d3,a3,d4,f#4]@2 ~ [d3,b3] [e3,b3,e4,g#4]@2 [b3,e4,g#4] [e3,b3,e4,g#4]!2 ~ e3@2, ~@2 [a3,d4,f#4]@2 ~@2 [a3,d4,f#4]@2 ~@5 [b3,e4,g#4]@3", // D G E D E
O: "[a3,c#4,e4,a4]@2 ~ a3 c#4@2 ~ [g#3,a3] [a3,c#4]@2 [a3,c#4] [f#3,a3] [a3,c#4,e4,a4]@2 ~ b3, ~ [c#4,e4,a4] [g#3,g#4]@2 [f#3,f#4]@2 a2@2, ~@3 c#4 ~@3 [a3,c#4,e4,a4]", // A Amaj7 A F#m A G# F# A
P: "[b3,e4,f#4,b4]@2 b3 [b3,e4] [b3,e4,f#4,b4]@2 [b3,e4,f#4,b4] [b3,e4,f#4,b4]@2 [b3,e4,f#4,b4]@2 [b3,e4,f#4,b4]@2 [b3,e4] [b3,e4,f#4,b4]@2", // Bsus4 E5 Bsus4 E5 Bsus4
Q: "[b3,e4,f#4,b4]@2 [b3,e4,f#4,b4] [b3,e4] [b3,e4,f#4,b4]@2 [b3,e4] [b3,e4,f#4,b4]@2 [b3,e4,f#4,b4]@2 [b3,e4,f#4,b4]@2 [b3,e4,f#4,b4]!2 ~", // Bsus4 E5 Bsus4 E5 Bsus4
R: "[f#3,a3,e4]@2 [f#3,a3,c#4]@2 [f#3,a3,c#4]@2 f#3 [f#3,a3,e4]@2 f#3 [f#3,a3,c#4]@2 f#3@2 ~ a3, ~@3 [a3,c#4], ~@7 f#3", // F#m7 F#m F#m7 F#m A
S: "[f#3,a3,e4]@2 [f#3,a3,c#4]@2 [f#3,a3,c#4]@2 ~ [a3,e4]@2 [f#3,a3,c#4] [f#3,a3,c#4]@2 [f#3,a3,c#4]@2 f#3 [a3,c#4], ~@6 f#3@3 ~@7", // F#m7 F#m A5 F#m A
T: "[f#3,a3,e4]@2 [f#3,a3]@2 [f#3,a3]@2 f#3 [a3,e4]@2 ~ [a3,c#4]@2 [f#3,a3,c#4]@2 f#3 [a3,c#4], ~@9 f#3@3 ~@4", // F#m7 F#m A5 A F#m A
U: "[f#3,a3,e4]@2 [f#3,a3,c#4]@2 [f#3,a3,c#4]@2 ~ [a3,e4]@2 f#3 [f#3,a3]@2 [f#3,a3]@2 ~ f#3, ~@6 f#3@3 ~@5 [f#3,a3,c#4]@2", // F#m7 F#m A5 F#m
V: "[[f#3,a3,e4]@2 [f#3,a3]@2 [f#3,a3,c#4]@2 f#3 [f#3,a3,e4]@2 ~ [a3,c#4]@2 [f#3,a3,c#4]@2 ~@2 [a3,e4]@2 [f#3,a3,c#4]@2 [f#3,a3,c#4]@2 f#3 [a3,e4]@2 ~ a3@2 [f#3,a3,c#4]@2 [f#3,a3,c#4]@2, ~@9 f#3@3 ~@2 [f#3,a3,c#4]@2 ~@9 f#3@3 ~@4, ~@15 f#3@3 ~@14]/2", // F#m7 F#m F#m7 A F#m A5 F#m A5 …
W: "[a3,e4]@2 [f#3,a3,c#4]@2 [f#3,a3,c#4]@2 f#3 [f#3,a3,e4]@2 f#3 [f#3,a3,c#4]@2 [f#3,a3]@2 [f#3,a3]@2", // A5 F#m F#m7 F#m
X: "[[f#3,a3]@2 [f#3,a3,c#4]@2 [f#3,a3,c#4]@2 f#3 [c#3,f#3,a3]@17 ~@8, e4 ~@7, d#4 ~@31]/2", // F#m
Y: "[[f#3,a3,c#4] [f#3,a3,c#4,f#4]@2 [f#3,a3,c#4,f#4]@2 [f#3,a3,c#4,f#4] [f#3,a3,c#4,a4] ~ [a3,c#4]@2 a3 [f#3,c#4,f#4] a3 ~ [c#4,f#4] a3 ~ [e3,c#4,e4,a4] [e3,a3,c#4,e4,a4]@2 [a3,c#4]@2 ~ [e3,c#4] [e3,b3,e4,a4]@2 [b3,e4] [e3,b3,e4] b3 ~ e4 b3@2 [b2,b3,d#4,f#4] [b2,b3,d#4,f#4]@2 [b2,b3,d#4,f#4]@2 [b3,d#4,f#4] [b2,b3] [f#3,a3,c#4,f#4,a4]@2 a3 [a3,c#4,f#4,a4] a3!2 [a3,c#4,f#4,a4] [f#3,a3,c#4,f#4,a4]@2 [e3,a3,c#4,e4,a4] [e3,a3,c#4,e4,a4]@2 a3!2 ~ [e3,e4] [e3,b3,e4,a4]@2 [b3,e4,a4] [e3,b3,e4,a4] [b3,a4] ~ [b3,e4] [e3,b3,e4,a4], e4@3 ~@5 [f#3,f#4,a4]@4 [f#3,c#4,f#4,a4]@3 [f#3,c#4,f#4,a4]@3 ~@2 [e3,e4,a4]@4 ~@4 [e3,e4,a4]@3 [e3,e4,a4]@5 ~@8 [f#3,c#4,f#4,a4]@3 ~@5 [e3,c#4,e4,a4]@3 ~@5 [e3,e4]@3 ~, ~@13 a3@2 ~ a3@2 ~@4 [a3,c#4]@2 ~@5 b3@2 ~@23 [a3,c#4,e4,a4]@2 ~@5 b3@2 ~]/4", // F#m A F#5 A C#m Esus4 E5 B …
Z: "[~ [b2,b3,d#4,f#4]@2 ~ [b3,d#4] [b2,b3,d#4,f#4] ~ b3 [f#3,a3,c#4,f#4,a4]@2 [a3,a4] [f#3,a3,c#4,f#4,a4] a3 ~ [c#4,f#4,a4] a3 a3 [e3,a3,c#4,e4,a4] [e3,a3,c#4,e4,a4]@2 a3@2 ~ [e3,c#4] [e3,b3,e4,a4]@2 [b3,e4,a4] [e3,b3,e4,a4] b3 ~ e4 [e3,e4,a4]@2 [b2,b3,d#4,f#4] [b2,b3,d#4,f#4]@2 [b2,b3,d#4,f#4]@2 ~ b3 a3@2 ~ [f#3,c#4] [f#3,a3,c#4,f#4,a4]@2 [a3,c#4,a4] a3 a3 [e3,a3,c#4,e4,a4] [e3,a3,c#4,e4,a4]@2 [e3,a3,c#4,e4,a4]@2 ~ [e3,e4] [b3,e4]@2 [b3,e4] [e3,b3,e4] b3 ~ e4 ~ b3 ~ b3 [b2,b3,f#4]@2 [b2,e4,f#4] [b2,b3,e4,f#4]@2 a3!2 ~ d3 a3!2 ~ [d3,b3], ~@3 [b2,b3,d#4,f#4]@2 ~ [b2,b3,d#4,f#4]@2 ~@4 [f#3,c#4,f#4,a4]@3 [f#3,c#4,f#4,a4]@3 ~@2 [e3,c#4,e4,f#4,a4]@4 [c#3,f#4] ~@3 [e3,e4,a4]@3 ~@7 [b2,b3,d#4,f#4]@2 ~@2 a3@2 ~@10 [a3,c#4,a4]@2 ~@5 b3@2 ~@4 d#4@5 ~@2 [a3,d4,f#4,a4]@2 ~@2 [a3,d4,a4]@2, ~@13 a3@2 ~@7 a3@2 ~@5 b3@2 [b3,f#4] ~@8 [f#3,b3,c#4,f#4,a4]@4 ~@3 [f#3,c#4,f#4,a4]@3 ~@6 [e3,a4]@4 [e3,e4,a4]@3 [e3,b3,e4,f#4,a4]@2 [b2,b3,d#4,f#4]@2 ~@2 a3@3 [d3,d4,f#4,a4]@3 ~ [d3,d4,f#4,a4]@3 ~]/5", // B F#m A F#m A C#m Esus4 A5 …
AA: "[[e3,b3,e4,g#4]@2 [b3,e4,g#4] [e3,b3,e4] [b3,e4,g#4] b3 [b3,e4] [e3,a3] ~ a3 ~ [f#3,a3] a3!2 [a3,c#4] ~@6 [a3,c#4] ~ a3 [d3,a3,d4,f#4]@2 [d3,a3,d4,f#4] [a3,d4] ~ a3 [d3,a3,d4] [e3,b3,e4,g#4]@2 [e3,b3,e4,g#4]@2 [e3,b3,e4,g#4]@2 b3 ~ c#4 [f#3,a3,c#4,f#4]@2 ~ a3 [a3,c#4] a3 [a3,c#4,f#4] [f#3,a3,c#4,f#4]@2 [f#3,a3,c#4,f#4]@2 ~@4 a3 [d3,a3,d4,f#4]@2 ~ d3 [d3,a3,d4,f#4]@2 ~ [d3,b3], ~@4 e3@3 [c#4,f#4]@3 [a3,c#4,f#4]@2 ~@4 f#3@2 f#3@2 f#3@2 [f#3,a3,c#4,f#4]@2 ~@4 [d3,a3,d4,f#4]@2 ~@8 [e3,b3]@2 ~@2 [f#3,a3,c#4,f#4]@2 [f#3,f#4]@3 ~@5 f#3@2 f#3@2 ~@8, ~@8 f#3@3 ~ [f#3,c#4,f#4]@3 [f#3,a3,c#4,f#4,a4]@2 a4@7 ~@13 [e4,g#4]@3 ~@24, ~@17 [a3,c#4,f#4]@2 [a3,c#4,f#4]@2 ~@30 [a3,c#4,f#4]@2 [a3,c#4,f#4]@3 ~@2 [a3,d4,f#4]@2 ~@2 [a3,d4,f#4]@2]/4", // E E5 E E5 A5 F#m A D …
AB: "[e3,b3,e4,g#4]@2 [b3,e4,g#4] [e3,b3,e4,g#4]!2 ~ e3@2 [a3,c#4,e4,a4]@2 ~ a3 c#4@2 ~ [g#3,a3], ~@5 [b3,e4,g#4]@3 ~@2 [c#4,e4,a4]@2 [g#3,g#4]@4, ~@7 c#4", // E A Amaj7 E A G#
AC: "[[a3,c#4]@2 [a3,c#4] [f#3,a3] [a3,c#4,e4,a4]@2 ~ b3 [b3,e4,f#4,b4]@2 b3 [b3,e4] [b3,e4,f#4,b4]@2 [b3,e4,f#4,b4] [b3,e4,f#4,b4]@2 [b3,e4,f#4,b4]@2 [b3,e4,f#4,b4]@2 [b3,e4] [b3,e4,f#4,b4]@2 [b3,e4,f#4,b4]@2 [b3,e4,f#4,b4] [b3,e4] [b3,e4,f#4,b4]@2 [b3,e4] [b3,e4,f#4,b4]@2 [b3,e4,f#4,b4]@2 [b3,e4,f#4,b4]@2 [b3,e4,f#4,b4]!2 ~ [f#3,a3,e4]@2 [f#3,a3,c#4]@2 [f#3,a3,c#4]@2 f#3 [f#3,a3,e4]@2 f#3 [f#3,a3,c#4]@2 f#3@2 ~ a3 [f#3,a3,e4]@2 [f#3,a3,c#4]@2 [f#3,a3,c#4]@2 ~ [a3,e4]@2 [f#3,a3,c#4] [f#3,a3,c#4]@2 [f#3,a3,c#4]@2 f#3 [a3,c#4] [f#3,a3,e4]@2 [f#3,a3]@2 [f#3,a3]@2 f#3 [a3,e4], [f#3,f#4]@4 a2@4 ~@46 f#3@2 ~@6 f#3@3 ~@15, ~@3 [a3,c#4,e4,a4] ~@22 [a3,c#4]@2 ~@12]/5", // A F#m A Bsus4 E5 Bsus4 E5 Bsus4 …
AD: "[~@2 [a3,c#4]@2 [f#3,a3,c#4]@2 f#3 [a3,c#4] [f#3,a3,e4]@2 [f#3,a3,c#4]@2 [f#3,a3,c#4]@2 ~ [a3,e4]@2 f#3 [f#3,a3]@2 [f#3,a3]@2 ~ f#3 [f#3,a3,e4]@2 [f#3,a3,c#4]@2 [f#3,a3,c#4]@2 f#3 [f#3,a3,e4]@2 f#3 [f#3,a3,c#4]@2 f#3@2 ~ a3 [f#3,a3,e4]@2 [f#3,a3,c#4]@2 [f#3,a3,c#4]@2 ~ [a3,e4]@2 [f#3,a3,c#4] [f#3,a3,c#4]@2 [f#3,a3,c#4]@2 f#3 [a3,c#4] [f#3,a3,e4]@2 [f#3,a3]@2 [f#3,a3]@2 f#3 [a3,e4]@2 ~ [a3,c#4]@2 [f#3,a3,c#4]@2 f#3 [a3,c#4] [f#3,a3,e4]@2 [f#3,a3,c#4]@2 [f#3,a3,c#4]@2 ~ [a3,e4]@2 f#3 [f#3,a3]@2 [f#3,a3]@2 ~ f#3 [f#3,a3,e4]@2 [f#3,a3,c#4]@2 [f#3,a3,c#4]@2 f#3 [f#3,a3,e4]@2 f#3 [f#3,a3,c#4]@2 f#3@2 ~ a3 [f#3,a3,e4]@2 [f#3,a3,c#4]@2 [f#3,a3,c#4]@2 ~ [a3,e4]@2 [f#3,a3,c#4] [f#3,a3,c#4]@2 [f#3,a3,c#4]@2 f#3 [a3,c#4] [f#3,a3,e4]@2 [f#3,a3]@2 [f#3,a3]@2 f#3 [a3,e4], ~ f#3@3 ~@10 f#3@3 ~@5 [f#3,a3,c#4]@2 ~@12 [a3,c#4]@4 ~@60 [a3,c#4]@4 ~@24, ~@38 f#3@2 ~@6 f#3@3 ~@16 f#3@3 ~@10 f#3@3 ~@5 [f#3,a3,c#4]@2 ~@14 f#3@2 ~@6 f#3@3 ~@15]/8", // A F#m A F#m7 F#m A5 F#m F#m7 …
AE: "[~@2 [a3,c#4]@2 [f#3,a3,c#4]@2 f#3 [a3,c#4] [f#3,a3,e4]@2 [f#3,a3,c#4]@2 [f#3,a3,c#4]@2 ~ [a3,e4]@2 f#3 [f#3,a3]@2 [f#3,a3]@2 ~ f#3 [f#3,a3,e4]@2 [f#3,a3]@2 [f#3,a3,c#4]@2 f#3 [f#3,a3,e4]@2 ~ [a3,c#4]@2 [f#3,a3,c#4]@2 ~@2 [a3,e4]@2 [f#3,a3,c#4]@2 [f#3,a3,c#4]@2 f#3 [a3,e4]@2 ~ a3@2 [f#3,a3,c#4]@2 [f#3,a3,c#4]@2 [a3,e4]@2 [f#3,a3,c#4]@2 [f#3,a3,c#4]@2 f#3 [f#3,a3,e4]@2 f#3 [f#3,a3,c#4]@2 [f#3,a3]@2 [f#3,a3]@2 [f#3,a3]@2 [f#3,a3,c#4]@2 f#3@2 f#3@32 ~@2, ~ f#3@3 ~@10 f#3@3 ~@5 [f#3,a3,c#4]@2 ~@9 f#3@3 ~@2 [f#3,a3,c#4]@2 ~@9 f#3@3 ~@20 e4@4 ~@36, ~@39 f#3@3 ~@30 d#4 ~@3 [a3,c#4]@32 ~@4]/7", // A F#m A F#m7 F#m A5 F#m F#m7 …
})).s("gm_acoustic_guitar_steel").gain(0.25).pan(0.6)
// chords · acoustic guitar steel · "RHYTHM" · soft notes
const acoustic_guitar_steel_2 = note(`<
~ A B C D E F G ~ A B C D E F H I A B C D E F G ~ J K L M N O P Q ~ R S T U V W ~@2 X Y Z AA AB AC AD ~ AE AF AG AH AI
AJ AK AL ~@2 AM@2 AN ~ AM@2 AN ~ AM@2 AN ~ AM@2 AN ~ AM@2 AO AP@2 AQ ~@2
>`.pickRestart({
A: "~@2 c#4 a3 ~@12", B: "~@2 a4!2 ~@11 f#4", C: "~@3 f#3 ~@11 a3", D: "~@5 a4@2 ~@9", E: "~@2 [c#4,f#4] ~@6 f#4 ~@6",
F: "~@8 b3 ~@7", G: "~@6 f#4 ~@9", H: "~@2 f#4@2 ~@2 a3 ~@9", I: "~ f#4 ~@6",
J: "~@3 a3 ~@2 f#4@2 ~@5 [e4,g#4] g#4 ~", K: "~@6 f#4 ~@6 f#4 ~ f#4", L: "~@3 f#4 ~@2 f#4 ~@9",
M: "~@3 c#4 ~ c#4 ~@10", N: "~@3 a3 ~@11 c#4", O: "~@3 c#4 ~@7 c#4 ~@4", P: "~@3 [f#4,b4] ~@11 b3",
Q: "~@3 f#4 ~@2 [f#4,b4] ~@9", R: "~@15 f#3", S: "~@2 c#4@2 c#4@3 f#3@3 ~@5 f#3", T: "~@5 c#4!2 ~", U: "~ c#4 ~@6",
V: "~@7 f#3@2 ~ c#4@2 ~@4", W: "f#3@2 ~@4 a3 ~@5 c#4@3 f#3", X: "~@10 c#4 a3 ~@4", Y: "~@10 a4!2 ~@4",
Z: "~@7 f#4 ~@3 f#3 ~@4", AA: "~@7 a3 ~@5 a4@2 ~", AB: "~@10 [c#4,f#4] ~@5", AC: "~ f#4 ~@14", AD: "b3 ~@13 f#4 ~",
AE: "~@11 a3 ~@2 f#4@2", AF: "~@5 [e4,g#4] g#4 ~@7 f#4 ~", AG: "~@5 f#4 ~ f#4 ~@3 f#4 ~@2 f#4 ~",
AH: "~@11 c#4 ~ c#4 ~@2", AI: "~@11 a3 ~@4", AJ: "~@7 c#4 ~@3 c#4 ~@4", AK: "~@3 c#4 ~@7 [f#4,b4] ~@4",
AL: "~@7 b3 ~@3 f#4 ~@2 [f#4,b4] ~", AM: "[~@7 f#3 ~@2 c#4@2 c#4@3 f#3@3 ~@5 f#3 ~@8]/2", AN: "~ c#4!2 ~@5",
AO: "~ c#4!2 ~@2 c#4 ~@2", AP: "[~@15 f#3@2 ~ c#4@2 ~@4 f#3@2 ~@4 a3 ~]/2", AQ: "~@4 c#4@3 f#3 ~@8",
})).s("gm_acoustic_guitar_steel").gain(0.16).pan(0.6)
// other · string ensemble 2 · "SLOSTR"
const string_ensemble_2 = note(`<
~ A B C D E F E G A B C D E F H I A B C D E F E G ~@8 J K J K J K J L ~ M@2 N@2 O@2 P@2 Q ~@7 R S T S T S T S T S T S
T S T S T S T S T S T U@2 ~
>`.pickRestart({
A: "f#3 ~@3 f#3 ~@2 f#3@3 e3 ~ e3 ~@3", B: "b3@8 ~ a3 ~ a3@2 f#3 a3@2", C: "f#3 ~@3 f#3 ~@2 f#3@2 ~ e3 ~ e3 ~@3",
D: "b3@8 ~ a3 ~ a3@2 f#3 a3 ~", E: "f#3@2 ~@2 f#3 ~@2 f#3@2 e3!2 ~ e3@2 ~@2", F: "b3@7 b3 ~ a3 ~ b3@2 a3 f#3 ~",
G: "b3@7 a3 ~ f#3 ~ a3@2 f#3 a3 ~", H: "d3 e3", I: "f#3@8 f#2@7 ~", J: "a3 c#4", K: "e4 c#4", L: "e4 ~",
M: "[~@8 f#3 ~@3 f#3 ~@2 f#3@3 e3 ~ e3 ~@3 b3@8]/2",
N: "[~ a3 ~ a3@2 f#3 a3@2 f#3 ~@3 f#3 ~@2 f#3@2 ~ e3 ~ e3 ~@3 b3@8]/2",
O: "[~ a3 ~ a3@2 f#3 a3 ~ f#3@2 ~@2 f#3 ~@2 f#3@2 e3!2 ~ e3@2 ~@2 b3@7 b3]/2",
P: "[~ a3 ~ b3@2 a3 f#3 ~ f#3@2 ~@2 f#3 ~@2 f#3@2 e3!2 ~ e3@2 ~@2 b3@7 a3]/2", Q: "~ f#3 ~ a3@2 f#3 a3 ~@9",
R: "~ a3", S: "c#4 e4", T: "c#4 a3", U: "[c#4@4 ~@3 c#4@4 ~@5, ~ e4 ~@2]/2",
})).s("gm_string_ensemble_2").gain(0.37)
// other · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
~@17 A B A B A B A B C D E D C F G@2 H I H I H I H J ~ K L M L M L M L N O@2 P@2 Q R@3 A S A S A S A S A S A S A S A S
A S A S A S A ~@2
>`.pickRestart({
A: "f#2 a2", B: "e3 b2", C: "d2 e2", D: "f#2", E: "d2@8 e2@7 ~", F: "a2 g#2 f#2 a2", G: "b2/2", H: "d2 f#2",
I: "a2 f#2", J: "a2 ~", K: "~ f#2", L: "a2 e3", M: "b2 f#2", N: "b2 d2", O: "[e2 f#2@2 d2]/2",
P: "[e2@7 ~ f#2@16 d2@8]/2", Q: "e2@2 a2 g#2", R: "[f#2 a2 b2@8 d2@2]/3", S: "f#2 d2",
})).s("gm_string_ensemble_1").gain(0.3)
// other · violin
const violin = note(`<
~@17 A B C B A B A D E F E F E G H@2 ~@9 I J K L K J K M N O@4 P Q@3 ~@15 I J R J R J R S@2 ~
>`.pickRestart({
A: "f#3 a3", B: "e4 b3", C: "f#3@8 a3@7 ~", D: "e4@7 ~ b3@8", E: "d3 e3", F: "f#3", G: "a3 g#3 f#3 a3", H: "b3/2",
I: "~ f#3", J: "a3 e4", K: "b3 f#3", L: "a3@7 ~ e4@8", M: "a3@8 e4@7 ~", N: "b3 d3", O: "[e3 f#3@2 d3]/2",
P: "e3@2 a3 g#3", Q: "[f#3 a3 b3@8 ~@2]/3", R: "c#4 f#3", S: "[a3@8 e4@6 c#4@11 ~@7]/2",
})).s("gm_violin").gain(0.23).pan(0.8)
// other · acoustic guitar steel · "STEELGTR"
const acoustic_guitar_steel_3 = note("<~@25 A B C B A D E F ~@11 G ~ G ~ G ~ H I J I K L@4 ~@25>".pickRestart({
A: "~@4 e4@3 ~ g#4 a4 ~@3 b3@2 ~, d4@4 ~@7 e4@4 ~, ~@2 a4@5 ~@3 g#4@3 ~@3",
B: "~@2 b2 c#3 e3@4 b2 c#3 e3 f#3 a3@3 b3",
C: "~@4 e4@3 ~ g#4 a4 ~@3 b3@2 ~, [f#3,d4]@4 ~@7 e4@4 ~, ~@2 a4@5 ~@3 g#4@3 ~@3", // D
D: "b3 e4@2 b3 e4@2 b3 e4@2 b3 e4@2 b3 e4@3", E: "b3 e4 f#4@2 b3 e4@2 b3@2 f#4@2 b3 e4 f#4 b3@2",
F: "~ e4 f#4 ~ e4 f#4@2 b3@2 f#4 b3 e4 f#4 b3 e4@2, ~@3 b3@2 ~@11", G: "~ f#2 a2 b2 e3@2 c#3 e3 f#3@4 ~@4",
H: "~ f#2 a2 b2 e3@2 c#3 e3 ~@4 e4@3 ~, ~@2 d4 ~, ~@10 a4@5 ~",
I: "g#4 a4 ~@3 b3@2 ~@3 b2 c#3 e3@4, ~@2 g#4@3 ~@11, ~@3 e4@4 ~@9",
J: "b2 c#3 e3 f#3 a3@3 b3 ~@4 e4@3 ~, ~@2 [f#3,d4] ~, ~@10 a4@5 ~", // D
K: "b2 c#3 e3 f#3 a3@3 b3 ~@4 e4@3 ~, ~@2 d4 ~, ~@10 a4@5 ~",
L: "[g#4 a4 ~@3 b3@2 ~ b3 e4@2 b3 e4@2 b3 e4@2 b3 e4@2 b3 e4@3 b3 e4 f#4@2 b3 e4@2 b3@2 f#4@2 b3 e4 f#4 b3@3 e4 f#4 ~ e4 f#4@2 b3@2 f#4 b3 e4 f#4 b3 e4@2 ~@8, ~@2 g#4@3 ~@59, ~@3 e4@4 ~@36 b3@2 ~@19]/4",
})).s("gm_acoustic_guitar_steel").gain(0.31)
// chords · electric guitar clean · "CLEANGTR"
const electric_guitar_clean = note("<~@25 A B A B ~@21 C D E D F ~@3 G@4 H@8 I@5 ~@9>".pickRestart({
A: "~@4 e4@5 ~@2 e4@2 b3@3", B: "~@5 a3@3 ~@3 a3@4 ~", C: "~@3 e4", D: "~@3 e4@2 b3@3 ~@5 a3@3",
E: "~@3 a3@4 ~@5 e4@4", F: "~@3 a3@4 ~@9",
G: "[~@8 [a3,c#4]@4 [a3,c#4]@2 ~ [a3,c#4]@3 [a3,c#4]@2 [a3,c#4]@3 ~ [a3,c#4]@3 ~ [a3,c#4]@3 [a3,c#4]@2 ~ [a3,c#4]@3 [a3,c#4]@2 ~ [a3,c#4]@4 [a3,c#4]@2 ~ [a3,c#4]@3 [a3,c#4]@2 ~ [a3,c#4]@2 ~ [a3,c#4]@4 [a3,c#4]@3 [a3,c#4]]/4", // A
H: "[~@2 [a3,c#4]@3 [a3,c#4]@2 ~ [a3,c#4]@4 [a3,c#4]@2 ~ [a3,c#4]@3 [a3,c#4]@2 ~ [a3,c#4]@2 ~ [a3,c#4]@3 ~ [a3,c#4]@2 ~ [a3,c#4]@3 [a3,c#4]@2 ~ [a3,c#4]@2 ~ [a3,c#4]@4 [a3,c#4]@2 ~ [a3,c#4]@3 [a3,c#4]@3 [a3,c#4]@3 [a3,c#4]@4 [a3,c#4]@3 [a3,c#4]@3 [a3,c#4]@3 [a3,c#4]@2 ~ [a3,c#4]@4 [a3,c#4]@2 ~ [a3,c#4]@2 ~ [a3,c#4]@2 [a3,c#4]@3 ~ [a3,c#4]@3 ~ [a3,c#4]@3 [a3,c#4]@2 ~ [a3,c#4]@3 [a3,c#4]@2 ~ [a3,c#4]@4 [a3,c#4]@2 ~ [a3,c#4]@3 [a3,c#4]@2 ~ [a3,c#4]@2 ~ [a3,c#4]@4 [a3,c#4]@3 [a3,c#4]]/8", // A
I: "[~@2 [a3,c#4]@3 [a3,c#4]@2 ~ [a3,c#4]@4 [a3,c#4]@2 ~ [a3,c#4]@3 [a3,c#4]@2 ~ [a3,c#4]@2 ~ [a3,c#4]@3 ~ [a3,c#4]@2 ~ [a3,c#4]@3 [a3,c#4]@2 ~ [a3,c#4]@2 ~ [a3,c#4]@4 [a3,c#4]@2 ~ [a3,c#4]@3 [a3,c#4]@3 [a3,c#4]@3 [a3,c#4]@4 [a3,c#4]@3 [a3,c#4]@3 [a3,c#4]@3 [a3,c#4]@2 ~@9]/5", // A
})).s("gm_electric_guitar_clean").gain(0.23).pan(0.8)
// other · timpani
const timpani = note("<~@42 [e2 f#2 ~ f#2 ~ f#2 a2 ~ a2 ~@7] ~@41>").s("gm_timpani").gain(0.24).pan(0.6)
// drums · kick
const kick = s("bd").struct("<~@18 A@6 B C@5 D E F A@7 G ~ H A@7 I J@4 K L M J A@22 N ~@2>".pickRestart({
A: "x!2 ~@2 x!2 ~@2", B: "x!2 ~@2 x!2 ~ x", C: "x!2 ~@3 x ~@2", D: "x!3 ~", E: "x ~ x ~@7 x ~@2 x ~@2",
F: "~ x ~ x ~ x ~@2", G: "x!2 ~@2 x ~@3", H: "~@4 x!2 ~@2", I: "x!2 ~ x!3 ~@2", J: "~ x ~@2 x!2 ~@2",
K: "~ x ~@2 x ~ x ~", L: "x ~@3 x!2 ~@2", M: "~@2 x ~@2 x ~@4 x ~@3 x ~", N: "x!2 ~@2 x ~@2 x",
})).gain(0.46)
// drums · snare
const snare = s("sd").struct(`<
~@17 A B@5 C D E F G H I J K L B@6 C M N O P@6 Q R S Q T U V W X Y P@22 Z ~@2
>`.pickRestart({
A: "~@10 x ~ x ~ x!2", B: "~@4 x ~@2 x ~ x ~@2 x!3 ~", C: "~@4 x ~@2 x ~ x ~@2 x ~ x!2", D: "~@4 x ~@2 x ~ x!5 ~@2",
E: "~@4 x ~@2 x ~ x ~@2 x!4", F: "~@4 x ~ x!2 ~ x ~@2 x ~ x!2", G: "~@4 x ~@2 x ~ x ~@2 x ~@3",
H: "~@4 x ~ x!2 ~ x!2 ~ x!4", I: "~@4 x ~@2 x ~ x ~@2 x ~@2 x", J: "~@3 x ~@3 x ~@2 x!3 ~ x!2",
K: "~ x!2 ~ x ~@2 x ~ x!2 ~ x ~ x ~", L: "~ x ~@2 x ~@2 x ~ x!6 ~", M: "~@4 x ~@2 x ~@8", N: "~@10 x ~ x!2 ~ x",
O: "x ~ x ~ x!4 ~@4 x ~@2 x", P: "~ x ~@2 x!3 ~@5 x ~@2 x", Q: "~ x ~@2 x ~ x!2 ~@4 x ~@2 x", R: "~ x!5 ~@6 x ~@2 x",
S: "~ x ~@2 x!4 ~@4 x ~ x!2", T: "~ x ~@2 x ~@7 x ~ x!2", U: "~ x!2 ~ x!4 ~@4 x ~@2 x",
V: "~ x ~@2 x ~@2 x ~@3 x ~@3 x", W: "~@2 x!3 ~ x!2 ~ x!2 ~ x ~@2 x", X: "~ x!2 ~ x ~ x ~@2 x ~@2 x ~@2 x",
Y: "~ x!6 ~@5 x ~@2 x", Z: "~ x ~@2 x ~ x!2 ~@2 x!4 ~@2",
})).gain(0.59)
// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
~@18 A@2 B A B ~@10 A@3 B A B ~@4 C@2 D C D C ~@10 C@2 D C@3 D C@3 D C@3 D C@3 D C D C ~@3
>`.pickRestart({
A: "~@15 x", B: "~@3 x ~@11 x", C: "~@7 x ~@8", D: "~@7 x ~@3 x ~@4",
})).gain(0.33)
// drums · low tom
const low_tom = s("lt").struct("<~@41 [~@10 x ~@2 x ~@2] [x ~@4 x!2 ~@9] ~@41>").gain(0.52)
// drums · hihat
const hihat = s("hh").struct("<A B@17 ~@7 B@8 ~@9 C B@7 D B@7 E ~@25>".pickRestart({
A: "x!4", B: "x!16", C: "~@8 x!8", D: "x!7 ~ x!8", E: "x!8 ~@8",
})).gain(0.52)
// drums · crash
const crash = s("cr").struct(`<
~@18 A ~@6 A ~@4 B ~@2 A ~ A ~ A ~ A C ~ C ~@7 C ~@4 D E ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C F ~@2
>`.pickRestart({
A: "x", B: "x!4", C: "~ x", D: "~@2 x!2", E: "x!2 ~@2", F: "~@7 x",
})).gain(0.39)
// drums · ride
const ride = s("rd").struct(`<
~@18 A B C D E F G ~@8 A@2 B C D E F H ~ I J K L C F D M N ~@7 I J K L O J K L O J K L O J K L O J K L C F D P ~@2
>`.pickRestart({
A: "~@2 x ~ x!3 ~", B: "x ~ x!2 ~ x!3", C: "x!8", D: "x!7 ~", E: "x!3 ~ x!4", F: "x!3 ~ x!3 ~", G: "x ~ x ~ x!4",
H: "x!2 ~@2", I: "~@3 x", J: "x!3 ~@3 x ~", K: "x!3 ~ x ~ x!2", L: "~ x!7", M: "x!3 ~ x ~ x ~", N: "x!4 ~@4",
// … 21 more lines
More by Oasis
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.