0:00/0:00
// Have I Told You Lately — Van Morrison
// 70 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 77 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(70/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 · piano · "A.PIANO 1"
const piano = note(`<
A B@3 C D@4 E F G H I@2 J K L M@2 N@2 O P Q R@3 S@5 T U@3 V@2 W X Y Z AA AB AC@2 AD AE AF AG@2 AH AI@3 AJ AK AL@3 AM
AN AO AP AQ@3 AR AS@2 AT AU@5
>`.pickRestart({
A: "~@37 [e4,g#4]@11, f#2@20 c#4@4 [e4,g#4]@7 b4@17, ~ g#3@11, ~ a3@5, ~@3 e4 b3@8", // E
B: "[~@49 [e3,f#4]@23 ~@43 f#4@29, b2@18 c#4@3 d#4@3 e4@3 d#4@3 e4@3 f#4@3 g#4@3 a4@3 b4@3 c#5@5 ~@37 e5@10 a3@47, ~@9 g#3@39 [e2,b4]@25 ~@23 b4@13 g#4@35, ~@12 a3@38 ~@22 g#3@26 ~@10 f#4@7 ~@29, ~@15 b3@35 ~@43 d#5@5 ~@5 c#5@13 ~@28]/3", // Esus2 E5
C: "~@7 g#5 ~@3 c#6 g#5@3 e5, ~ e3@25 ~@22, ~@3 g#5@4 ~ [g#3,b5]@8, ~@12 c#6@13 ~@23", // G#m
D: "[~@16 c#5@8 c#5@12 ~@153 c#5@3, [a3,f#5]@24 b3@17 e5@4 f#5@4 e3@24 c#6@11 e6@5 d#6@4 c#6@4 d#6@68 g#5@3 c#5@16 e5@8, ~@6 g#5@19 ~@11 b4@12 g#5@9 g#5@11 ~ g#5@27 g#3@32 g#5@4 f#5@3 g#5@3 e5@3 c#5@3 b4@48, ~@38 c#5@13 ~@14 a5@33 ~@18 g#5@8 b5@36 f#5@32, ~@39 d#5@11 ~@11 b5@37 ~@5 b5@17 c#6@72]/4", // D
E: "~ b4@5 ~ b4@11 b4@5 b4 [b4,c#5]@3 ~ a4@2 g#4@3 ~@12 e5@3, ~@11 a4@5, ~@3 b4, ~@13 c#5@3, ~@7 d#5", // Bsus2
F: "[b3,d#4,g#4]@4 ~@3 b4, ~@3 [b3,d#4,f#4]", G: "~@20 b4@4 ~@15 d#5@9, [b3,c#4,e4]@13 ~@2 e5@9, ~@5 a4@3 [a4,c#5]@8",
H: "[b3,d#4,b4]@24 ~ b4@23, ~ [d#4,f#4]", // B D#m
I: "[[e4,b4]@6 b4@3 ~@14 e5, ~@18 b4@7 g#4@23, ~@39 c#5@8 e5@42 f#5@7, ~@22 d#5@4 ~@13 c#5@9, ~@7 g#5]/2", // E5
J: "[b4,d#5]@24 [b4,d#5]@15 ~ d#5@8, ~ g#5, ~@13 [b4,f#5]@3", // B B5
K: "a4@9 ~ b4@2 ~@9 d#5@3, [c#5,e5]@25 ~@11 e5@12, ~@3 a4 [a4,c#5]@4", // C#m A
L: "g#4@17 g#4@7 ~@20 f#5@4, e5@3 a4@2 e5, ~@7 b4@5, ~@2 c#5, ~@3 d#5",
M: "[[b4,d#5,g#5]@24 [b4,d#5,f#5,b5]@29 ~@4 e4@3 e4@12 ~@12 f#4@12, ~@54 c#4@17 ~ b3@24, ~@25 c#4@7, ~@13 d#4@3, ~@27 e4@5]/2", // G#m B
N: "[g#4@6 g#4@2 ~@12 e5@4 d#5@3 ~@3 a4@2, [f#4,b4]@24 [f#4,g#4,b4]@49 ~@10 c#5@13, ~@54 g#5@19 ~@9 d#5@14, ~@57 f#5@16 ~@8 e5@15, ~@29 b4@3]/2", // B5 G#m7
O: "~@23 e5@16 ~@4 f#5@5, g#4, ~@17 c#5@31, ~@5 e5", P: "b4@18 b4@21 ~ b4@8, d#5 ~",
Q: "~ a4@17 ~@6 a4@7 ~@11 d#5@6, ~ f#4@24 ~@6 a4@17, ~ d4 ~@16 a4@6 c#5@24, ~@7 b4@9, ~@3 e5",
R: "[[g#4,e5]@30 e4@3 f#4@3 ~@12 c#5@17 ~ c#6@18 c#6@9 ~@39 c#5@12, ~@36 g#4@5 ~ g#4@8 ~@43 d#6@51, ~@39 f#4@11 ~@46 [c#6,e6]@48, ~@45 b4@5 ~@16 c#5@63 b4@15, ~@7 a4]/3", // C#m
S: "[~@97 [a4,c#5]@34 ~@10 e5@3 ~@84 b4@12, [f#4,d#5]@84 g#4@4 a4@4 b4@52 e5@36 f#5@13 g#4@47, b4@42 g#4@24 g#5@32 ~@33 c#5@13 c#5@44 d#5@8 ~@9 d#5@35, ~@17 f#5@80 ~@34 a4@64 ~@4 b4@28 ~@13, ~@23 g#5@25 b4@24 b5@26 ~@38 d#5@48 e5@12 ~@44]/5", // A D#m
T: "~@17 f#5@7, a4@9 b4 c#5@6, f#5@7 f#4@9, c#5@3 c#4@5, ~@7 b3@17",
U: "[~@23 d#5@13 ~@32 g#3@4 ~@42 g#4@6 d#5@24, d#5@23 b5@25 [a4,b4]@25 ~@6 d#4@6 f#4@2 g#4@3 a4@6 b4@48, g#5@19 g#5@5 ~@12 [f#4,d#5]@14 ~@14 a3@10 ~@2 c#4@26 g#4@12 ~@30, ~@15 f#5@7 f#5@27 ~@23 b3@36 e5@14 ~@22, ~@42 e5@32 ~@8 e4@27 ~@35]/3", // Asus2 D#m
V: "[~ a4@22 b4@2 ~@18 f#5@4 g#5@18 ~@7 [e5,g#5]@24, [b4,e5]@23 e5@13 d#5@13 ~@19 f#5@28, ~@23 c#5@9 c#5@15 [c#5,e5]@25 ~@24, ~@7 b4@5 ~@12, ~@40 e5@7 ~@19 g#5@6 ~@24]/2", // E E5 C#m
W: "~ d#5@21 ~@2 b5@24, ~ b4@47, ~@11 d#5@13", X: "a4@3 ~@4 d#5, e5@25 ~@11 e5@12, ~@19 a4@5 [a4,c#5]@24, ~@7 b4@9",
Y: "~ [g#4,e5]@23 [a4,c#5,e5]@22 ~@2", Z: "~@4 g#5@4 a5@4 b5@5 g#5@4 a5@3 b5@5 g#5@4 a5@4 b5@7 g#5@2 a5@2",
AA: "b5@4 e6@4 b5@2 ~@2 b5@15 a5 g#5@2 f#5@3 ~ f#5@2 e5@2 ~@3 c#5@2 ~@2 e5 [c#5,d#5]@2, ~@33 g#5@2 ~@4 e5@2 ~@7, ~@20 d#5 ~@3", // C#sus2
AB: "b4@7 ~ b4@4 b5@3 a5@3 g#5@2 f#5@4 g#5@4 b5@4 g#5@4 b5@2 ~@2 g#6@3 ~ b6@3 ~",
AC: "[b6@9 a6 g#6@2 f#6@3 ~ f#6@2 e6@2 ~ e6@2 ~ c#6@2 ~@2 c#6@2 b5@2 ~@2 b5@2 a5@2 ~@2 b5 ~ g#5@3 ~@2 b5@2 g#5@15 b5@4 a5@4 f#6@5 e6@4 d#6@4 c#6@4 b5@3 a5@4, ~@15 g#6@2 ~@6 d#6@2 ~@2 d#6@2 ~@4 c#6@2 ~@6 a5@2 ~@3 a5@2 ~@48]/2",
AD: "g#5@12 ~@5 a#6@3 ~ b6@3 a#6@2 ~ d#6@2 b5@4 a#5@3 g#5@6 a#5@3 b5@3, ~@26 g#6@3 ~@19",
AE: "~ c#6@13 d#6@4 e6@3 d#6@3 ~@12 f#6@9 ~@2 b5, ~@6 c#6@5 ~, ~@25 a5@19 ~@4",
AF: "~ g#6@14 ~ b3@4 c#4@4 ~@12 b4@4 a4@4 b4@3 ~, [b5,d#6]@15 ~@9 f#4@8 f#4@9 ~@7, ~@7 e4@3 ~@2", // B
AG: "[a4@17 ~@7 c#5@12 ~@8 e5@4 ~ a4@2 ~@41 d#5@4, e5 ~@16 a4@19 [a4,c#5]@13 c#5@47, ~@40 d#5@40 ~ d#5@7 e5@8, ~@49 e5@23 e5@12 f#5@12, ~@53 g#4@43]/2", // A
AH: "[f#4,b4]@3 [d#4,f#4] ~@3 d#4, ~ [f#4,b4], ~@4 d#4@3 ~, ~@3 b3", // B5 D#m B5
AI: "[~@48 [a4,c#5]@18 [a4,c#5]@18 ~@9 e5@4 e5@47, [b3,d#4,f#4]@25 ~@47, ~@35 g#4@15 ~@38 d#5@56, ~@10 a4@2 ~@9 [a4,c#5]@15, ~@22 b4@11 b4@39]/3", // A B A
AJ: "[f#4,b4]@17 ~@18 f#4@12 ~, d#5, ~@17 [d#4,b4]@31", // B5 G#m
AK: "a3@9 ~@13 c#5@2, f#4@10 e4 f#4 g#4 a4 b4@2, c#4@23 c#4@25, ~@3 a3@5, ~@9 d#4@7",
AL: "[[g#4,b4]@25 ~@42 c#4@5 ~@24 g#4@18 ~@6 [d#4,f#4,b4]@24, ~@25 [g#4,b4]@27 ~@2 e4@19 ~@2 c#4@12 g#4@3 a4@3 b4@27 ~@24, ~@48 c#4@18 ~@6 b3@24 e4@25 ~@23, ~@78 d#4@19 ~@20 a4@5 ~@22, ~@81 e4@3 f#4@14 ~@16 g#4@8 ~@22]/3", // G#m B G#m
AM: "~@7 f4, [c#4,g#4] b3, ~ e4@25 ~@4 c#4@18, ~@18 a3@7 ~@14 e4@9, ~@21 a#3@5 ~@10 d#4@12", // C#5
AN: "g#4@6 ~@5 c#5, [c#4,e4], ~ e5, ~@6 c#5@5 ~, ~@5 [g#4,d#5]", AO: "b4@18 ~ d#4@5 ~ b4@23, d#5, ~@3 [f#4,b4] ~@4",
AP: "a4@11 ~@7 b4@6 ~@18 d#5@6, [a3,c#4,f#4]@25 ~@11 e5@11 ~, ~ a4 [a4,c#5]@2", // F#m A
AQ: "[[g#4,e5]@25 ~@24 a4@13 ~@29 e5@4 b4@18 ~ b4@5 b4@25, ~@25 b3@12 f#4@2 g#4@3 a4@3 b4@50 [f#4,d#5]@49, ~@7 c#4@5 c#5@12 ~@12, ~@31 d#4@19 ~@16 e5@21 d#5@8 ~@49, ~@34 e4@16 ~@16 a4@31 ~@47]/3", // C#m D#m
AR: "~ a4@16 ~@3 b4@4 ~@18 d#5@6, [a3,c#4]@2 ~ e5, ~@17 a4@7 [a4,c#5]@24", // A
AS: "[g#4@16 ~@4 a4@4 ~@19 g#5@4 ~@25 e5@24, [b4,e5]@25 ~@3 c#5@11 f#5@8 c#5@18 ~ [b4,c#5]@30, ~@2 g#4 b4@3 e5@3 ~@3, ~@32 d#5@17 ~@47, ~@35 e5@12 g#5@49]/2", // E5 Bsus2
AT: "~ [f#4,b4]@17 [d#4,f#4,b4]@6 [d#4,f#4,b4]@16 ~@8, ~ d#5@39 ~@8", // B5 B
AU: "[~ [a3,e4,f#4,a4]@33 ~@43 e6@27 f#3@5 ~@63 b6@44 ~@24, ~@34 a3@5 ~ c#4@13 b4@4 c#5@15 c#6@35 ~@17 g#4@11 f#5@5 g#5@5 b5@5 e6@6 f#6@6 g#6@54 ~@24, ~@37 b3@23 e5@4 a5@43 ~@9 e4@12 b4@42 b5@46 ~@24, ~@43 d#4@25 b5@39 ~@13 f#4@51 e6@45 ~@24, ~@47 e4@60 ~@5 b3@20 e5@40 e7@24 ~@44]/5", // F#m7
})).s("gm_piano").gain(0.56)
// chords · piano · "A.PIANO 1" · soft notes
const piano_soft = note(`<
~@4 A ~@7 B C@2 D ~ E ~@5 F ~ G ~@8 H I J K L M N O ~@10 P ~@3 Q R S T ~@2 U V ~ E W X Y ~ Z ~ AA ~@4
>`.pickRestart({
A: "~@3 c#6", B: "g#4@13 ~@11", C: "[c#4@24 [d#4,f#4]@25 c#5@28 ~@19]/2", D: "f#4", E: "b4@13 ~@11",
F: "f#4 [f#4,d#5]", G: "b4@11 ~@5", H: "b4 ~", I: "c#5@25 ~@23", J: "~ f#4", K: "~@2 c#5@21 ~@25", L: "~@7 c#5@9",
M: "~@23 f#5@25, ~ f#4@47", N: "c#5 ~", O: "b4@25 ~@23", P: "~@3 b4 ~@4", Q: "~@17 f#4@18 ~@13", R: "~ c4, ~@5 b3@7",
S: "~@25 f#4@23", T: "~@43 e4@5", U: "~@3 g#4@2 ~", V: "f#4@18 ~@7 f#4@23, ~ d#4", W: "~@7 a4@2 ~@15", X: "~@5 g#4@7",
Y: "f#4@25 ~@23", Z: "~@3 g#4@5", AA: "~ c#4@35 ~@12",
})).s("gm_piano").gain(0.32)
// bass · fretless bass · "FRETLESS"
const bass = note(`<
~@2 A B C D E F G H I J K L M N O P C Q A L R N S T U V W X Y Z AA AB I AC AD AE V AF AG AH I AI K AJ Z AK AL AM AN AO
AP AQ AR V AA ~@20
>`.pickRestart({
A: "e2@7 ~@2 e2@3 g#2@12", B: "a2 b2", C: "e2 g#2", D: "a2@16 ~@2 a2@5 ~ b2@15 ~@3 b2@6", E: "a2@22 ~@2 a2@23 ~",
F: "g#2@15 ~@3 g#2@2 ~@4 g#2@24", G: "f#2@15 ~@3 f#2@6 b2@10 ~@2 b2@12", H: "e2 b2", I: "e2@23 ~ g#2@24",
J: "a2@5 ~ a2@2 b2@7 f#2", K: "e2@5 ~ e2@2 g#2@8", L: "a2@8 ~ a2@3 b2@12", M: "a2@14 ~@4 a2@3 ~@3 a2@23 ~",
N: "g#2@14 ~@4 g#2@3 ~@3 g#2@24", O: "f#2@5 ~ f#2@2 b2@8", P: "e2@7 ~@2 e2@3 b2@5 ~ b2@6", Q: "a2@5 ~ a2@2 b2@8",
R: "a2@7 ~@2 a2@2 ~ a2@12", S: "f#2@7 ~@2 f#2@3 b2@12", T: "e2@5 ~ e2@2 f#2@4 g#2@4", U: "a2@7 ~@2 a2 ~@2 a2@11 ~",
V: "a2@7 ~@2 a2 ~@2 a2@12", W: "g#2@7 ~@2 g#2 ~@2 g#2@6 d#3@6", X: "g#2@14 ~@4 g#2@2 ~@4 g#2@18 f#2@3 g#2@3",
Y: "a2@15 ~@3 a2 ~@5 a2@22 ~@2", Z: "a2@14 ~@4 a2 ~@5 a2@24", AA: "g#2@14 ~@4 g#2 ~@5 g#2@17 ~ a2@6",
AB: "b2@14 ~@4 b2@2 ~@4 b2@2 ~@4 b2@9 ~@3 b2@6", AC: "a2@15 ~@3 a2@6 b2@10 ~@2 b2@3 c#3@3 e3@6",
AD: "e2@15 ~@3 e2@6 g#2@23 ~", AE: "a2@5 ~ a2@2 b2@4 f#2@2 g#2@2", AF: "g#2@13 ~@5 g#2 ~@5 g#2@23 ~",
AG: "f#2@14 ~@4 f#2@5 ~ b2@24", AH: "e2@14 ~@4 e2@6 b2@10 ~@2 b2@11 ~", AI: "a2@14 ~@4 a2@6 b2@9 ~@3 b2@3 c#3@3 e3@6",
AJ: "a2@7 ~@2 a2@3 b2@6 f#2@3 g#2@3", AK: "g#2@5 ~ g#2@6", AL: "f#2@15 ~@3 f#2@5 ~ b2@24",
AM: "e2@7 ~@2 e2@3 f#2@6 g#2@6", AN: "a2@13 ~@5 a2@2 ~@4 a2@17 ~ e2@6", AO: "a2@13 ~@5 a2 ~@5 a2@24",
AP: "g#2@13 ~@5 g#2@2 ~@4 g#2@17 ~ b2@3 d#3@3", AQ: "g#2@6 g#2@2 g#2@4 d#3 c#3 b2@2", AR: "a2@3 a2 a2@3 e2",
})).s("gm_fretless_bass").gain(0.48)
// other · tremolo strings · "FRETLESS"
const tremolo_strings = note("<~@57 A B C D E F G H I J K L M J N O@5>".pickRestart({
A: "b2@18 f#3@5 ~ b3@4 f#3@3 ~ b2@8 ~ b2@6 ~", B: "e2@3 e2 g#2@4", C: "a2@14 ~@4 a2@6 b2@9 ~@3 b2@3 c#3@3 e3@5 ~",
D: "e2@15 ~@3 e2@6 g#2@23 ~", E: "a2@15 ~@3 a2@5 ~ b2@12 f#2@6 g#2@6", F: "a2@14 ~@3 a2@2 ~@5 a2@15 ~@3 a2@6",
G: "g#2@14 ~@4 g#2 ~@5 g#2@23 ~", H: "f#2@5 ~ f#2@2 b2@8",
I: "e2@9 ~@3 e2@3 ~@3 e2@5 ~ f#2@4 ~@2 f#2@6 g#2@4 ~@2 g#2@6", J: "a2@7 ~@2 a2 ~@2 a2@12",
K: "g#2@14 ~@4 g#2 ~@5 g#2@24", L: "f#2@15 ~@3 f#2@5 ~ b2@24",
M: "e2@9 ~@3 e2@3 ~@3 e2@5 ~ f#2@4 ~@2 f#2@5 ~ g#2@4 ~@2 g#2@6", N: "g#2@13 ~@5 g#2@3 ~@3 g#2@17 ~ g#2@6",
O: "[f#2@36 b2@68 ~ e2@116 ~@19]/5",
})).s("gm_tremolo_strings").gain(0.55)
// other · cello
const cello = note(`<
~ A B@2 C@3 D@3 ~@8 E F G@6 H I@3 ~@2 J K ~@7 L M N O P Q R S@2 T U V@2 W F X@3 Y Z AA AB AC AD@2 AE AF@2 AG AH AI
AJ@3 ~@2
>`.pickRestart({
A: "b2", B: "[~ b3@82 e4@7 d#4@6]/2", C: "[c#4@6 ~@17 f#3@25 g#3@24 a3@23 c#4@36 b3@7 c#4@6, ~@7 b3@65 ~@72]/3",
D: "[d#4@47 c#4@25 f#4@23 e4@24 ~ b3@24]/3", E: "~ d#4", F: "c#4",
G: "[e4@23 f#4@24 e4@32 d#4@16 e4@50 d#4@34 b3@20 a3@12 b3@5 c#4@13 d#4@10 e4@24 ~ [f#2,a3]@12 [g#2,b3]@12]/6", // F#m G#m
H: "c#4@41 d#4@7, a2@7 ~@17", I: "[e4@47 ~@49 g#3@8 ~@28 a3@5 b3@3 c#4@4, ~@47 d#4@84 ~@13]/3", J: "d#4@17 b3@7",
K: "~ a3@42 ~@5", L: "b3@12 f#3@5 g#3@6 a3@13 g#3@6 f#3@4 ~@2", M: "f#3@17 ~ e3@6 d#3@24", N: "c#3@3 d#3 e3@4",
O: "f#3@17 e3@7 d#3@24", P: "c#3@17 d#3@6 ~ e3@10 ~ e3@7 f#3@6", Q: "g#3@35 a3@13", R: "~@23 g#3@24 ~, b3",
S: "[a3@24 ~@24 e3@22 ~@2 [f#2,a3]@11 [g#2,b3]@13, ~@12 b3@23 ~@13]/2", T: "c#4@7 d#4", U: "e4",
V: "[b3@83 g#3@5 a3@4 b3@4, g#3@31 ~@65]/2", W: "c#4@35 a3@5 b3@4 c#4@3 ~",
X: "[d#4@35 e4@12 f#4@46 ~@14 e4@13 d#4@24, ~@95 b3@49]/3", Y: "c#4@47 ~", Z: "b3 e4 d#4@2", AA: "c#4@23 f#4@25",
AB: "e4@7 c#4@17", AC: "~ [g#3,b3]@47",
AD: "[f#3@23 [c#4,f#4]@24 ~ e3@23 ~ [f#2,a3]@11 [g#2,b3]@13, a3@47 e4@25 ~@24]/2", AE: "[a3,c#4]",
AF: "[[g#3,b3]@47 ~ a3@22 ~@2 [a3,f#4]@24, ~@47 f#3@24 ~@25]/2", AG: "[e3,e4]@23 [f#2,a3]@12 [g#2,b3]@13",
AH: "a3@47 ~", AI: "b3", AJ: "[a3@11 g#3@2 ~@3]/3",
})).s("gm_cello").gain(0.35)
// other · cello · soft notes
const cello_soft = note("<~@4 A ~@13 B ~@11 C@2 ~ D ~@34 E ~ F@2 ~@2 G@3>".pickRestart({
A: "~@7 e3@17 ~@24", B: "~@13 e4@11 ~@24", C: "e4/2", D: "~@23 f#4@21 ~@4", E: "~@23 c#4@24 ~",
F: "[c#4@47 d#4@48 ~]/2", G: "[~@23 g#3@15 ~@2 g#3@78 ~@26]/3",
})).s("gm_cello").gain(0.21)
// chords · violin
const violin = note(`<
~@2 A B C@3 D@3 E@2 F@4 G@2 H I J K L@4 M@2 N@6 O@2 P@5 Q R S@4 T@2 U V@4 W@2 X Y Z AA AB AC AD AE@2 AF AG@2 AH AI@3
AJ ~ AK@3
>`.pickRestart({
A: "~ [g#3,f#4], b3@15 ~", B: "[a3,b3]@6 e4 d#4",
C: "[c#4@6 e3@18 f#3@24 g#3@24 a3@21 ~@2 a3@35 ~ g#3@7 a3@6, ~@6 b3@66 ~@23 c#4@49]/3",
D: "[[b3,d#4]@47 ~ a3@23 ~ [f#3,a3,c#4]@24 [e3,b3]@25 c#4@23, ~@47 e4@96 ~, ~@47 c#4@23 ~@26 g#3@21 ~@27]/3", // B F#m E5
E: "[b3@12 ~@7 d#4@29 c#4@30 b3@6 g#3@6 a3@6, ~@6 b3@31 ~@11]/2",
F: "[b3@18 e4@6 d#4@17 b3@6 ~@12 b3@12 ~ e4@12 d#4@11 ~ b3@45 ~@3 b3@46 ~@2, ~@47 c#4@96 [g#3,d#4]@49, ~@72 f#4@23 e4@49 ~@48]/4", // G#5
G: "[f#3@6 a3@5 ~@7 a3@6, c#4@47 e3@24 ~@25, a3@7 ~ e4@16 ~@8, ~ b3]/2", H: "~@7 g#4@5 f#4@12, ~@5 b3@43",
I: "c#4 b3, e4", J: "[e3,g#4]@23 [g#3,f#4]@25", K: "a3@12 b3@11 ~, e4@11 ~",
L: "[e4@24 e3@23 ~ [d#3,b3,d#4]@47 ~ c#3@24 a3@21 ~@2 b3@25 [f#2,a3]@12 [g#2,b3]@12, [b3,c#4]@47 g#3@48 c#4@48 ~@49, ~@95 f#3@21 ~@27 e3@20 ~@29, ~@96 a3@22 ~@2 e4@49 ~@23]/4", // G#m F#m G#m Bsus2
M: "[c#4@7 d#4 c#4@8, [a2,a3]]/2", // A
N: "[g#3@18 ~@6 g#3@12 d#3@11 ~ g#3@14 ~@3 g#3@2 ~@5 g#3@17 ~ g#3@2 ~@2 d#3@2 ~ c#4@33 ~ c#4@5 d#4@3 ~@5 c#4@49 [d#3,b3,d#4]@46 ~ f#3@48, b3@72 ~@21 e3@100 ~@95, ~@18 d#3@11 ~@63 f#3@2 ~@2 a3@97 ~@47 a3@43 ~@5, ~@139 e4@35 ~@65 [c#4,e4]@46 ~@3]/6", // G#m C#m
O: "[~@12 e4@11 d#4@25 c#4@27 ~@2 c#4@6 b3@6 g#3@3 ~ a3@3, b3@13 ~@3]/2",
P: "[b3@17 e4@7 d#4@17 b3@6 ~@24 f#4@22 ~@3 b3@45 ~@3 [g#3,b3,d#4]@47 [f#3,a3]@24 ~ e4@24, ~@47 c#4@46 ~@2 e4@50 ~@46 c#4@44 ~@5, ~@215 a3@23 ~@2]/5", // G#m F#m
Q: "~@23 [a3,c#4,e4]@22 ~@3", R: "[b3,e4]@23 [g#3,d#4,f#4]@25",
S: "[a3@22 ~@2 [a3,c#4]@22 ~@2 e3@23 [g#3,f#4]@24 ~ a3@23 ~@12 f#4@12 [a3,e4]@49, e4@70 ~@25 e4@37 ~@60, ~@47 b3@68 ~@4 c#4@71 ~@2, ~@119 b3@24 ~@49]/4", // A G#7 A5
T: "[[b3,d#4]@45 ~@27 a4@23 b3, ~@47 [a3,e4]@48 ~]/2", U: "~@24 [f#2,a3]@11 [g#2,b3]@13",
V: "[~@7 b3@13 ~@22 d#4@6 e4@47 ~ d#4@47 b3@35 ~@2 b3@3 ~ a2@4 ~ d#4@3, [a3,c#4]@95 f#3@20 ~@64 g#2@4 ~@5 b2@4, a2@89 ~@6 b3@45 ~@43 c#4@6 ~@3, ~@96 g#3@45 ~@2 g#3@30 ~@19]/4", // A
W: "[[a3,c#4]@39 a3@4 b3@4 ~ c#4@48, a2@20 ~@27 a3@49]/2", X: "~@23 f#4@25, [g#3,b3]",
Y: "a3@12 ~ f#4@34 ~, c#4@23 ~", Z: "~ e4 d#4@2", AA: "c#4", AB: "~@13 e4@11 d#4@24, b3",
AC: "~@23 f#4@24 ~, [a3,c#4]", AD: "[c#4,e4]", AE: "[[g#3,b3,d#4]@47 [f#3,a3]@23 ~@2 [b3,f#4]@24, ~@47 c#4@49]/2",
AF: "[b3,e4]@24 [f#2,a3]@11 [g#2,b3]@13, e3@5 ~@7", AG: "[~@24 e4@23 ~ [g#3,b3]@48, [a3,c#4]@47 d#4@49]/2",
AH: "~ a3@20 ~@21 d#4@5 ~, f#3@23 c#4@25, ~ a3",
AI: "[~@5 b3@18 [f#2,a3]@12 [g#2,b3]@12 ~ a3@47 ~ [g#3,b3]@47 c#4, [e3,e4]@24 ~@23 c#4@50 ~@47, ~@47 a2@43 ~@5 d#4@48 ~]/3", // F#m G#m E
AJ: "a3 ~@47", AK: "[~ e2@37 ~@10]/3",
})).s("gm_violin").gain(0.05)
// chords · violin · soft notes
const violin_soft = note("<~ A ~@15 B ~@6 C@2 ~@11 D@2 ~@2 E F G@2 H@4 ~@8 I J@2 ~@12 K@5>".pickRestart({
A: "[c#4,e4], b3@11 ~", B: "g#3@19 ~@29", C: "[~@47 g#3@19 ~@30]/2", D: "[~@47 c#4@47 ~@2]/2",
E: "~ [g#3,b3]@5 ~@6, e3 ~, ~ e4@18 ~@29", F: "g#4 ~", G: "[c#4@22 ~@2 f#4@23 g#4@24 ~@25]/2",
H: "[~ c#4@21 ~@25 g#4@116 c#4@28 g#4]/4", I: "e4@23 ~", J: "[~@5 b3@88 ~@3]/2",
K: "[f#3@26 a3@73 ~@36 e3@75 ~@30, ~@26 e4@185 ~@29, ~@33 [b2,g#3]@37 ~@10]/5", // E
})).s("gm_violin").gain(0.02)
// other · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
~@5 A@4 B C D@5 E@2 F@8 G H@2 I J@2 K L M@2 N@6 ~@7 O P Q@2 R S T U V W@4 X@7 Y Z@2 AA ~@4
>`.pickRestart({
A: "[~@37 b4@2 ~@3 e5@3 ~@2 g#5@17 f#5@4 g#5@4 ~@11 g#5@6 a5@6 b5@6 ~ g#5@5 d#5@10 c#5@3 b4@47 ~ a4@24]/4",
B: "~@25 a4@20 ~@3", C: "~@6 b4@35 c#5@7",
D: "[b4@29 c#5@6 b4@5 g#4@3 ~ a4@3 b4@48 a4@24 c#5@24 e5@18 g#5@6 b5@12 g#5@42 f#5@6 e5@6 ~ d#5@6]/5",
E: "[g#4@6 f#4@11 g#4@7 a4@11 g#4@6 f#4@6 e4@48 ~]/2",
F: "[~@17 e5@7 d#5@23 c#5@31 b4@5 c#5@6 d#5@6 e5@24 d#5@24 c#5@24 b4@18 f#4@6 g#4@24 b4@13 g#4@35 b4@12 g#4@20 f#4@11 g#4@6 a4@11 g#4@6 f#4@6 e4@25 f#4@11 g#4@6 ~ a4@3 b4@3]/8",
G: "c#5@40 ~ c#5@4 d#5@3",
H: "[e5@36 f#5@11 g#5@23 ~@2 g#4@2 a#5@4 [g#4,g#5]@3 [a#4,a#5]@3 [g#4,g#5]@3 [a#4,a#5]@3 [g#4,g#5]@2 ~ a#5@3, ~@71 g#5@3 ~@18 a#4@3 ~]/2", // G# A# G# A# G#
I: "[g#4,g#5]@2 [a#4,a#5]@3 ~ g#5@2 [a#4,a#5]@3 ~ g#4@2 [a#4,a#5]@3 ~ g#4@2 [a#4,a#5]@4 [g#4,g#5]@2 ~ a#5@2 ~ g#4@2 [a#4,a#5]@3 ~ g#4@4 [a4,a5]@3 ~ b5@4, ~@5 g#4@3 ~@3 g#5@3 ~@3 g#5@3 ~@6 a#4@3 g#5@3 ~@3 g#5@4 ~@4 b4@5", // G# A# G# A# A
J: "[[c#5,c#6]@36 [d#5,d#6]@11 [e5,e6]@30 ~ f#6@6 [g#5,g#6]@6 ~ a6@5, ~@77 f#5@7 ~@6 a5@6]/2", // C# D# E G#
K: "g#6 f#6 e6 d#6 b4@6 g#4@2 f#4@2 e4@2",
L: "f#4@2 g#4@2 f#4@2 g#4@2 f#4@2 g#4@2 ~@2 f#4@2 g#4@2 f#4@29 ~, ~@6 f#4 ~@17, ~@13 g#4@2 ~@33",
M: "[~@12 b4@65 c#5@6 b4@6 g#4@3 a4@3 ~]/2",
N: "[b4@47 c#5@44 ~@4 g#5@24 b5@12 e5@12 ~@24 b5@12 ~ f#5@15 ~@14 g#5@6 a5@11 g#5@7 f#5@6 e5@48 ~, ~@131 g#5@36 ~@12 g#5@19 ~@90, ~@143 f#5@35 ~@110]/6",
O: "~@11 f#5", P: "c#5@41 d#5@7",
Q: "[e5@28 d#5@4 e5@3 f#5@4 e5@4 d#5@4 g#5@24 ~ [g#4,g#5]@3 a#5@3 [g#4,g#5]@3 [a#4,a#5]@3 [g#4,g#5]@3 [a#4,a#5]@2 ~ g#4@2 [a#4,a#5]@4, ~@89 g#5@3 ~@4]/2", // G# A# G# A#
R: "[g#4,g#5]@2 ~ a#4@2 [g#4,g#5]@3 [a#4,a#5]@3 [g#4,g#5]@3 [a#4,a#5]@3 [g#4,g#5]@3 [a#4,a#5]@3 [g#4,g#5]@3 [a#4,a#5]@3 [g#4,g#5]@3 [a#4,a#5]@3 [g#4,g#5]@4 [a4,a5]@4 ~ [b4,b5]@4, ~@2 a#5@3 ~@43", // G# A# G# A# G# A# G# A# …
S: "c#6@34 ~ c#6@5 d#6@4 e6@3 ~", T: "e6@29 f#6@6 g#6@6 a6@6 ~", U: "g#6@3 f#6@3 e6@3 d#6@2 b4@18 ~ g#4@6 f#4@6 e4@6",
V: "c#4@2 d#4@4 c#4@35 ~@7", W: "[b4@84 e4@2 f#4@3 g#4@3 a4@3 b4@82 ~@8 b4@2 c#5 ~ e5@2 ~, ~@94 d#5 ~]/4",
X: "[f#5@2 ~@22 b5@12 g#5@36 b5@11 g#5@19 f#5@11 g#5@7 a5@11 g#5@6 f#5@6 e5@18 f#4@4 g#4@4 a4@4 g#4@4 a4@2 ~@2 b4@3 ~@2 c#5@2 d#5 e5@2 f#5@2 g#5@16 f#5@2 g#5@4 b5@12 g#5@36 b5@12 g#5@11 ~ g#5@7 f#5@11 g#5@6 a5@12 g#5@6 f#5@6 ~, ~@185 b4@2 ~@149]/7",
Y: "e5@27 g#5@4 a5@4 b5@13", Z: "[g#5@18 f#5@3 g#5@3 b5@11 g#5@37 f#5@11 d#5@12 ~]/2", AA: "g#4 ~@47",
})).s("gm_string_ensemble_1").gain(0.13)
// other · string ensemble 1 · "STRINGS" · soft notes
const string_ensemble_1_soft = note("<~@2 A@4 B ~ C@2 ~@17 D@2 ~@9 E ~ F ~@11 G ~ H ~@7 I J ~@8 K@2 L@3>".pickRestart({
A: "[b4@175 ~@8 c#5 ~ d#5 ~@3 f#5@2 ~]/4", B: "~@12 a5@5 ~@7", C: "[~@47 g#4@26 ~@23]/2",
D: "[~@47 g#4@22 ~@6 a#4@3 ~@18]/2", E: "~ e5@32 ~@15", F: "~ f#5@2 ~@5", G: "~@9 a#4 ~@6", H: "~ c#5@3 ~@44",
I: "~ g#5@34 ~@13", J: "f#5", K: "[~ g#4@9 ~ f#4@14 g#4@9 a4@61 ~]/2",
L: "[~@11 b4@43 ~@18, ~@14 [e3,b3]@35 ~@95, ~@17 e4@91 ~@36]/3", // E5
})).s("gm_string_ensemble_1").gain(0.08)
// chords · string ensemble 2 · "SLOWSTRING"
// … 81 more lines
More by Van Morrison
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.