0:00/0:00
// Ca va pas changer le monde — Joe Dassin
// 95 bpm, 4/4, key E 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: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 76 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(95/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
const piano = note("<~@25 A ~@4 B C D E ~@7 F ~@34>".pickRestart({
A: "~@4 [e4,g#4]@3 ~ [f#4,a4]@3 ~ [g#4,b4]@4", B: "[c#5,e5]@8 [b4,d#5]@3 ~ [a4,c#5]@3 ~",
C: "[g#4,b4]@7 ~ [f#4,a4]@3 ~ [e4,g#4]@4", D: "[f#4,a4] [d#4,f#4]", E: "[e4,g#4]@5 ~@3",
F: "~@4 [f4,a4]@4 [g4,a#4]@3 ~ [a4,c5]@4", // F Gm Am
})).s("gm_piano").gain(0.28).pan(0.7)
// other · string ensemble 1
const string_ensemble_1 = note(`<
~@16 A@3 ~@14 B C@2 D E F@3 G H@2 I J K L M N O@2 P Q R@3 S T@2 U V W X Y Z O@2 P Q R@3 AA ~@2
>`.pickRestart({
A: "[[b3,e4,g#4]@17 ~@7]/3", B: "~@3 b4 c5 e5 g5 d6", C: "[c6@6 a5 d6]/2", D: "c6", E: "d6@2 a#5 g5",
F: "[d5@10 f5@2 e5@2 g5@6 c6@3 a#5]/3", G: "a5@3 g5 f5 e5 d5 c5", H: "a4/2", I: "c5@2 f5 a5", J: "a#5",
K: "a#5@2 a5 g5", L: "a5@2 g5 f5", M: "g5 e5", N: "f5@3 c5 c#5 f5 g#5 d#6", O: "[c#6@6 a#5 d#6]/2", P: "c#6",
Q: "d#6@2 b5 g#5", R: "[d#5@10 f#5@2 f5@2 g#5@6 c#6@3 b5]/3", S: "a#5@3 g#5 f#5 f5 d#5 c#5", T: "a#4/2",
U: "c#5@2 f#5 a#5", V: "b5", W: "b5@2 a#5 g#5", X: "a#5@2 g#5 f#5", Y: "g#5 f5", Z: "f#5@4 f5 f#5 g#5 d#6",
AA: "a#5@3 ~@5",
})).s("gm_string_ensemble_1").gain(0.27).pan(0.4)
// chords · electric guitar jazz
const electric_guitar_jazz = note(`<
~@18 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS AT
AU AV AG AH AI AJ AK AL AM AW@2 ~
>`.pickRestart({
A: "~@3 g#4 ~@3 g#4, g#4@3 ~ g#4@3 ~, ~ b3@3 ~ b3@3, ~ e4 ~ d#4",
B: "g#4 ~@2 b3 ~@3 g#4, ~@2 b3@3 e4@3 d#4@4 d#4@4, ~@3 g#4@5 ~@2 b3@6",
C: "~@3 d#4!2 ~@2 b3 ~@6 g#4@2, g#4@5 e4@3 g#4@6 ~@2, ~@2 b3@3 ~ d#4@2 ~@2 b3@6, ~@3 e4",
D: "~@6 a3@2 g#4@2 d#4 ~@3 b3@2, a4@9 ~@2 g#4@5, ~@2 c#4@3 c#4@4 ~@4 d#4@3, ~@3 f#4@6 ~@7",
E: "~@6 a3@2 ~@3 f#4 ~@3 f#4, f#4@4 f#4@4 e4@5 a3@3, ~ a3@2 ~@2 a3 f#4 e4",
F: "~@6 c#4@2 ~@7 b3, g#4@3 f#4@2 f#4@3 d#4@4 d#4@4, ~ a3@3 ~ a3@2 a3, ~@4 g#4@4 ~@3 c#4@2 c#4@3",
G: "~@3 a3 d#4 ~@2 a3, a3@3 ~@2 a3@2 ~, ~@2 c#4@3 c#4@3 ~@3 d#4@2 d#4@3, ~@3 f#4@5 ~@4 f#4@4",
H: "g#4 ~@2 b3 ~@3 b3, ~@2 b3@3 e4@3 e4@2 b3@4 ~@2, ~@3 g#4@5 ~ d#4@4 d#4@3, ~@11 e4@5",
I: "g#4@2 ~@4 b3 ~ g#4@2 ~ g#4 ~@2 b3@2, ~@2 b3@3 e4@2 ~@3 b3@3 d#4@3, ~@3 g#4@4 ~@5 g#4@4",
J: "~@6 b3@2 ~@4 d#4@2 b3 ~, g#4@3 e4@2 e4@3 d#4@4 ~@4, ~ b3@2 ~@2 b3@2 ~, ~ g#4 ~@2",
K: "~@3 b3 ~@3 b3, d4@4 ~ b3@2 ~, ~@2 b3@3 e4@3 ~@4 d4@4, ~@3 g#4@5 g#4@8",
L: "~@2 e4 e4@3 ~@3 e4 ~@4 e4 a4, c#4@6 ~ c#5@8 ~, ~@5 e4@2 ~, ~@11 f#4@2 f#4@3, ~@12 a4@3 ~",
M: "c#5 d4@7 ~@4 c#4@3 ~, ~@8 a4@7 ~, ~@10 e4@5 ~",
N: "~@11 b3 ~@2 b3@2, ~@2 b3@4 b3@4 e4@2 ~ e4@3, ~ g#4@2 g#4, ~@2 f#4 ~",
O: "~@3 c#4 ~@3 b3, f#4@2 a4!2, ~@2 c#4@4 ~@3 f#4@2 f#4@2 f#4@3, ~@2 a3@2 ~ d#4@3",
P: "g#4@2 ~ g#4 ~@2 b3@2 ~@2 c4@2 e4 ~ g4@2, ~@2 b3@3 e4@3 ~@8, ~ g#4 g4 ~",
Q: "~@3 a4 ~@3 a4, a4@3 ~ a4@3 ~, ~ c4@3 ~ c4@3, ~ f4 ~ e4",
R: "a4 ~@2 c4 ~@3 a4, ~@2 c4@3 f4@3 e4@4 e4@4, ~@3 a4@5 ~@2 c4@6",
S: "~@3 e4!2 ~@2 c4 ~@6 a4@2, a4@5 f4@3 a4@6 ~@2, ~@2 c4@3 ~ e4@2 ~@2 c4@6, ~@3 f4",
T: "~@6 a#3@2 a4@2 e4 ~@3 c4@2, a#4@9 ~@2 a4@5, ~@2 d4@3 d4@4 ~@4 e4@3, ~@3 g4@6 ~@7",
U: "~@6 a#3@2 ~@3 g4 ~@3 g4, g4@4 g4@4 f4@5 a#3@3, ~ a#3@2 ~@2 a#3 g4 f4",
V: "~@6 d4@2 ~@7 c4, a4@3 g4@2 g4@3 e4@4 e4@4, ~ a#3@3 ~ a#3@2 a#3, ~@4 a4@4 ~@3 d4@2 d4@3",
W: "~@3 a#3 e4 ~@2 a#3, a#3@3 ~@2 a#3@2 ~, ~@2 d4@3 d4@3 ~@3 e4@2 e4@3, ~@3 g4@5 ~@4 g4@4",
X: "a4 ~@2 c4 ~@3 c4, ~@2 c4@3 f4@3 f4@2 c4@4 ~@2, ~@3 a4@5 ~ e4@4 e4@3, ~@11 f4@5",
Y: "a4@2 ~@4 c4 ~ a4@2 ~ a4 ~@2 c4@2, ~@2 c4@3 f4@2 ~@3 c4@3 e4@3, ~@3 a4@4 ~@5 a4@4",
Z: "~@6 c4@2 ~@4 e4@2 c4 ~, a4@3 f4@2 f4@3 e4@4 ~@4, ~ c4@2 ~@2 c4@2 ~, ~ a4 ~@2",
AA: "~@3 c4 ~@3 c4, d#4@4 ~ c4@2 ~, ~@2 c4@3 f4@3 ~@4 d#4@4, ~@3 a4@5 a4@8",
AB: "~@2 f4 f4@3 ~@3 f4 ~@4 f4 a#4, d4@6 ~ d5@8 ~, ~@5 f4@2 ~, ~@11 g4@2 g4@3, ~@12 a#4@3 ~",
AC: "d5 d#4@7 ~@4 d4@3 ~, ~@8 a#4@7 ~, ~@10 f4@5 ~",
AD: "~@11 c4 ~@2 c4@2, ~@2 c4@4 c4@4 f4@2 ~ f4@3, ~ a4@2 a4, ~@2 g4 ~",
AE: "~@3 d4 ~@3 c4, g4@2 a#4!2, ~@2 d4@4 ~@3 g4@2 g4@2 g4@3, ~@2 a#3@2 ~ e4@3",
AF: "a4@2 ~ a4 ~@2 c4@2 ~@2 c#4@2 f4 ~ g#4@2, ~@2 c4@3 f4@3 ~@8, ~ a4 g#4 ~",
AG: "~@3 a#4 ~@3 a#4, a#4@3 ~ a#4@3 ~, ~ c#4@3 ~ c#4@3, ~ f#4 ~ f4",
AH: "a#4 ~@2 c#4 ~@3 a#4, ~@2 c#4@3 f#4@3 f4@4 f4@4, ~@3 a#4@5 ~@2 c#4@6",
AI: "~@3 f4!2 ~@2 c#4 ~@6 a#4@2, a#4@5 f#4@3 a#4@6 ~@2, ~@2 c#4@3 ~ f4@2 ~@2 c#4@6, ~@3 f#4",
AJ: "~@6 b3@2 a#4@2 f4 ~@3 c#4@2, b4@9 ~@2 a#4@5, ~@2 d#4@3 d#4@4 ~@4 f4@3, ~@3 g#4@6 ~@7",
AK: "~@6 b3@2 ~@3 g#4 ~@3 g#4, g#4@4 g#4@4 f#4@5 b3@3, ~ b3@2 ~@2 b3 g#4 f#4",
AL: "~@6 d#4@2 ~@7 c#4, a#4@3 g#4@2 g#4@3 f4@4 f4@4, ~ b3@3 ~ b3@2 b3, ~@4 a#4@4 ~@3 d#4@2 d#4@3",
AM: "~@3 b3 f4 ~@2 b3, b3@3 ~@2 b3@2 ~, ~@2 d#4@3 d#4@3 ~@3 f4@2 f4@3, ~@3 g#4@5 ~@4 g#4@4",
AN: "a#4 ~@2 c#4 ~@3 c#4, ~@2 c#4@3 f#4@3 f#4@2 c#4@4 ~@2, ~@3 a#4@5 ~ f4@4 f4@3, ~@11 f#4@5",
AO: "a#4@2 ~@4 c#4 ~ a#4@2 ~ a#4 ~@2 c#4@2, ~@2 c#4@3 f#4@2 ~@3 c#4@3 f4@3, ~@3 a#4@4 ~@5 a#4@4",
AP: "~@6 c#4@2 ~@4 f4@2 c#4 ~, a#4@3 f#4@2 f#4@3 f4@4 ~@4, ~ c#4@2 ~@2 c#4@2 ~, ~ a#4 ~@2",
AQ: "~@3 c#4 ~@3 c#4, e4@4 ~ c#4@2 ~, ~@2 c#4@3 f#4@3 ~@4 e4@4, ~@3 a#4@5 a#4@8",
AR: "~@2 f#4 f#4@3 ~@3 f#4 ~@4 f#4 b4, d#4@6 ~ d#5@8 ~, ~@5 f#4@2 ~, ~@11 g#4@2 g#4@3, ~@12 b4@3 ~",
AS: "d#5 e4@7 ~@4 d#4@3 ~, ~@8 b4@7 ~, ~@10 f#4@5 ~",
AT: "~@11 c#4 ~@2 c#4@2, ~@2 c#4@4 c#4@4 f#4@2 ~ f#4@3, ~ a#4@2 a#4, ~@2 g#4 ~",
AU: "~@3 d#4 ~@3 c#4, g#4@2 b4!2, ~@2 d#4@4 ~@3 g#4@2 g#4@2 g#4@3, ~@2 b3@2 ~ f4@3",
AV: "a#4@2 ~ a#4 ~@2 c#4@2 c#4@2 d4@2 d#4@4, ~@2 c#4@3 f#4@3 ~@8, ~ a#4 ~@2", AW: "a#4/2",
})).s("gm_electric_guitar_jazz").gain(0.17).pan(0.3)
// other · whistle
const whistle = note(`<
~@36 A B C D E B F G H I J K L M ~@2 N O P Q R S T U V W X Y Z AA ~@2 N O P Q R ~@3
>`.pickRestart({
A: "c5@2 d5@2 e5@2 f5@2 c5@3 ~ c5@4", B: "d5@13 ~@3", C: "d6@2 d6 ~ d6 ~ d6@2 c6@4 a#5@4", D: "a5@4 g5@3 ~",
E: "g5@2 g5 ~ g5 ~ g5@2 f5@4 e5@4", F: "c5@2 d5@2 e5@2 f5@2 e5@3 ~ d5@4", G: "d5@7 ~ c5@6 ~@2",
H: "a5 g5 a#5 a5!2 g5!2 f5", I: "f5@3 ~", J: "~@2 f5@2 f5 ~ d6@2 d6@7 ~", K: "~@2 f5@2 f5@2 c6@2 c6@7 ~",
L: "~@2 a#5 ~ a#5 ~ c6@2 d6@4 a#5@4", M: "a5 ~", N: "c#5@2 d#5@2 f5@2 f#5@2 c#5@3 ~ c#5@4", O: "d#5@13 ~@3",
P: "d#6@2 d#6 ~ d#6 ~ d#6@2 c#6@4 b5@4", Q: "a#5@4 g#5@3 ~", R: "g#5@2 g#5 ~ g#5 ~ g#5@2 f#5@4 f5@4", S: "d#5 ~",
T: "c#5 d#5 f5 f#5 f5@2 d#5@2", U: "d#5@7 ~ c#5@6 ~@2", V: "a#5 g#5 b5 a#5!2 g#5!2 f#5", W: "f#5@3 ~",
X: "~@2 f#5@2 f#5 ~ d#6@2 d#6@7 ~", Y: "~@2 f#5@2 f#5@2 c#6@2 c#6@7 ~", Z: "~@2 b5 ~ b5 ~ c#6@2 d#6@4 b5@4",
AA: "a#5 ~",
})).s("gm_whistle").gain(0.12).pan(0.8)
// chords · acoustic guitar steel
const acoustic_guitar_steel = note("<~@2 A@2 B@7 C@5 ~@60>".pickRestart({
A: "[~@15 [g#3,b3,e4]@16 ~, ~@14 e3@17 ~]/2", // E
B: "[~@2 [b3,d#4]@17 ~@2 e4@15 ~@13 [d#4,f#4]@8 ~ [c#4,e4]@9 ~ f#4@8 ~ [g#3,b3,e4]@9 ~ e4@8 ~@10 [d#4,f#4]@7, ~ [e3,g#3]@18 ~ [g#3,b3]@15 ~@4 [a3,c#4]@14 ~@4 a3@10 [b3,d#4]@10 ~@9 [g#3,c#4]@10 ~@8 b3@8, ~@40 e4@13 ~@43 [c#4,e4]@10 ~@6, ~@48 [f#3,b3]@9 ~@19 e3@11 ~@8 a3@10 ~@7]/7", // B D#m C#m E D#m E G#m A …
C: "[~@3 e4@17 ~ [c#4,e4]@18 ~ e4@21 ~@2 e4@8 ~ f#4@8, ~@2 [g#3,c#4]@18 a3@19 [e3,g#3,b3]@22 a3@10 [b3,d#4]@9, ~@31 c#4@5 ~@4]/5", // C#m C#5 E B
})).s("gm_acoustic_guitar_steel").gain(0.2).pan(0.6)
// other · whistle
const whistle_2 = note("<~@9 A B@4 C@2 D ~@28 E@2 ~@3 F G H I ~ J K L M N O P Q R S T U V W I ~ X Y ~@3>".pickRestart({
A: "~@11 b4@2 e5@2 ~", B: "[a5@14 d#5@5 g#5@18 a5@9 ~ c#6@3 b5@3 ~ a5@2 g#5@8]/4",
C: "[~@2 b5@4 a5@5 g#5@3 ~ f#5@9 a5@3 g#5@3 f#5@2]/2", D: "e5", E: "[f6@9 d6 a#5 f5 d6 a#5 f5 d5@9 ~@8]/2",
F: "~@4 g#5 f5 d#5 g#5", G: "f#5 a#4 c#5 f#5 f5 f4 f#4 d#5", H: "c#5 f4 f#4!2 a#4 f4 f#4 c#5",
I: "d#5 c#5 b4 c#5 d#5 f5 g5 g#5", J: "a#4 b4 d#5 f#5 g#5 g#4 b4 c#5", K: "f#5 a#4 b4 f#5 a#4 b4 f#5 f5",
L: "d#5@3 f#5 d#5 f#5 f5 d#6", M: "c#6@5 ~ a#5@2 g#5@2 a#4@2 c#5@2 g#5@2", N: "f#5 a#4 c#5 f#5 f5 c#5 a#4 f5",
O: "e5@2 d#5 c#5", P: "b4 d#5 f#5 d#5 b5 b4 d#5 b4", Q: "b5@8 a#5@4 g#5@3 ~", R: "a#5@2 g#5 f#5", S: "g#5@2 f#5 f5",
T: "f#5@2 a#4@2 c#5@2 f#5@2 d#5@2 f#5@2 f5@2 d#6 ~", U: "~@4 g#5 a#4 c#5 g#5", V: "f#5 c#5 a#4 f#5 f5 f4 f#4 d#5",
W: "c#5 f4 f#4 c#5!2 d#4 f#4 c#5", X: "a#4@2 b4@2 d#5@2 f#5@2 f5@2 c#5@2 f5 ~ a#5@2", Y: "g#5@5 ~@11",
})).s("gm_whistle").gain(0.17).pan(0.6)
// chords · piano
const piano_2 = note("<A@5 B@5 C@2 D@3 E@8 ~@53>".pickRestart({
A: "[~@10 b3@2 ~@33 b3@2 ~@17 b3@2 ~@12 b3@2, ~@10 [e4,g#4]@4 [e4,g#4]@5 [e4,g#4]@5 [e4,g#4]@4 [e4,g#4]@5 [e4,g#4]@5 [e4,g#4]@5 [e4,g#4]@4 [e4,g#4]@5 [e4,g#4]@5 [e4,g#4]@4 [e4,g#4]@5 [d#4,g#4]@5 [d#4,g#4]@4 [d#4,g#4]@5, ~@12 b3@5 b3@4 b3@5 b3@5 b3@4 b3@5 b3@5 ~@5 b3@4 b3@5 b3@5 ~@4 b3@5 b3@5 ~@2]/5", // E G#5
B: "[~@2 b3@2 ~@17 b3@2 ~@8 a3@2 ~@7 b3@2 ~@7 a3@2 ~@8 b3@2 ~@7 b3@2 ~@3 g#3@2 c#4@2 c#4@2 ~, [d#4,g#4]@5 [e4,g#4]@4 [e4,g#4]@5 [e4,g#4]@5 [e4,g#4]@5 ~@2 a3@5 ~@4 b3@5 ~@2 [c#4,e4]@5 [c#4,e4]@5 [d#4,f#4]@4 [d#4,f#4]@5 [e4,g#4]@5 [e4,g#4]@5 ~@9, ~@7 b3@5 b3@4 b3@5 ~@3 [c#4,e4]@4 [c#4,e4]@5 [d#4,f#4]@5 [d#4,f#4]@5 ~@2 a3@4 ~@5 b3@5 ~@4 b3@5 ~@2 [c#4,e4]@5 [g#3,e4]@5]/5", // G#5 E C#m D#m E C#m D#m C#m
C: "[a3@2 ~@5 a3@2 ~@7 b3@2 ~ c#4@2 c#4@2 g#3@2 ~@5 g#3@2, [c#4,e4]@5 [c#4,e4]@5 ~@2 b3@4 ~@7 [c#4,e4]@5 [c#4,e4]@4, ~@2 a3@5 ~@2 [d#4,f#4]@5 [d#4,f#4]@5 e4@4 ~@3 g#3@4 ~@2]/2", // C#m D#m
D: "[~@3 g#3@2 ~@17 a3@2 ~@19 b3@3 [c#4,e4]@2, ~ [c#4,e4]@4 [c#4,e4]@5 [c#4,e4]@5 [c#4,e4]@4 [c#4,e4]@5 [e4,g#4]@5 [e4,g#4]@5 [e4,g#4]@6 [e4,g#4]@7 ~, ~@8 a3@4 a3@5 a3@5 ~@4 b3@5 b3@5 ~ b3@6 ~@5]/3", // C#m E
E: "[~@3 [c#4,e4]@3 ~@2 b3@2 b3@2 b3@2 b3@2 [g#3,b3] ~ [g#3,b3] ~ [g#3,b3] ~ [g#3,b3] ~ [g#3,b3] ~ [g#3,b3] ~ [g#3,b3] ~ [g#3,b3] ~ [g#3,b3] ~ [g#3,b3] ~ [g#3,b3] ~ [g#3,b3] ~ [g#3,b3] ~ [g#3,b3] ~ [g#3,b3] ~ [g#3,b3] ~@81, ~ a3@5 a3@122, ~ [d#4,f#4] ~@14]/8", // C#m G#m D#m
})).s("gm_piano").gain(0.22).pan(0.3)
// bass · electric bass finger
const bass = note(`<
~@2 A@2 B@6 C@2 D@4 E@2 F G H I J K L M N O P Q R S T U V W X Y Z AA@2 AB AC AD AE AF AG AD AH AI AJ AK AL AM AN AO AP
AQ AR AS AT AU AV AW AX AY AS@2 AZ AM BA BB AX BC ~@2
>`.pickRestart({
A: "[~@13 b1@2 e2@16 ~]/2", B: "[e2@2 e2@16 e2@2 ~ e2@14 e2@4 ~ b1@13 ~ b1@4 f#2@9 ~ b1@9 e2@7 d#2@2 c#2@9 ~]/6",
C: "[f#2@9 b1@9 ~ c#2@13]/2", D: "[~ c#2@2 b1@2 a1@14 a1@4 ~ e2@18 ~ e2@3 ~ f#2@9 b1@8]/4", E: "e1@7 b1",
F: "e2@7 ~ b1 ~ b1@2 ~@2 b1@2", G: "e2@6 ~@2 b1 ~ b1@2 ~@2 b1@2", H: "e2@7 ~ b1 ~ b1@3 ~ e2@2",
I: "f#2@6 ~@2 c#2 ~ c#2@3 ~ c#2@2", J: "f#2@7 ~ c#2 ~ c#2@3 ~ c#2@2", K: "f#2@4 ~@2 f#2 ~ b1 ~ b1@3 ~ b1@2",
L: "f#2@5 ~ f#2 ~ b1 ~ b1@2 ~@2 b1@2", M: "e2@6 ~@2 b1 ~ b1@3 ~ b1@2", N: "e2@5 ~ e2@2 b1@4 ~@2 b1@2",
O: "e2@4 ~@2 e2 ~ b1@4 ~@2 b1 ~", P: "e2@4 ~@2 e2@2 b1 ~ b1@3 ~ b1@2", Q: "a1@5 ~ a1@2 e1 ~ e1@3 ~ e1@2",
R: "a1@6 ~@2 a1 ~ a1@3 ~ a1@2", S: "e1@7 ~ b1 ~ b1@4 e2@2", T: "f#2@5 ~ c#2@2 b1 ~ b1@3 ~ b1@2",
U: "e2@4 ~@2 e2 ~ c2 ~ c2 ~ d2 ~ e2 ~", V: "f2@5 ~@3 c2 ~ c2@3 ~ c2@2", W: "f2@4 ~@2 f2 ~ c2 ~ c2@3 ~ c2@2",
X: "f2@4 ~@2 f2 ~ c2 ~ c2@3 ~ f2 ~", Y: "g2@4 ~@2 g2 ~ d2 ~ d2@3 ~ d2@2", Z: "g2@4 ~@2 g2 ~ d2 ~ d2@2 ~@2 d2@2",
AA: "g2@4 ~@2 g2 ~ c2 ~ c2@2 ~@2 c2@2", AB: "f2@4 ~@2 f2@2 g2 ~ g2@2 c2 ~ c2@2", AC: "f2@2 ~ f2 c2@2 ~ c2",
AD: "f2@4 ~@2 f2@2 c2 ~ c2@3 ~ c2@2", AE: "f2@4 ~@2 c2@2 f2@3 ~ f2@2 c2 ~", AF: "a#1@4 ~@2 a#1 ~ f2 ~ f2@3 ~ f2 ~",
AG: "a#1@5 ~ a#1@2 f2 ~ f2@3 ~ e2@2", AH: "g2@4 ~@2 d2 ~ c2 ~ c2@3 ~ c2@2",
AI: "f2@4 ~@2 f2@2 c#2@2 c#2 ~ d#2 ~ f2@2", AJ: "f#2@2 ~ f#2 c#2@2 ~ c#2", AK: "f#2@5 ~ f#2@2 c#2 ~ c#2@3 ~ c#2@2",
AL: "f#2@5 ~ f#2@2 c#2 ~ c#2@3 ~ f#2@2", AM: "g#2@4 ~@2 g#2 ~ d#2 ~ d#2@3 ~ d#2@2",
AN: "g#2@5 ~ g#2@2 d#2@4 ~@2 d#2 ~", AO: "g#2@5 ~ d#2@2 c#2 ~ c#2@2 ~@2 c#2@2",
AP: "g#2@4 ~@2 g#2@2 c#2 ~ c#2@3 ~ c#2@2", AQ: "f#2@4 ~@2 f#2 ~ f#2@4 c#2@3 ~", AR: "f#2@4 ~@2 f#2 ~ c#2@4 ~@2 c#2 ~",
AS: "f#2@4 ~@2 f#2 ~ c#2 ~ c#2@3 ~ c#2 ~", AT: "f#2@5 ~ c#2 ~ f#2 ~ f#2 ~ g#2 ~ a#2@2",
AU: "b2@4 ~@2 f#2 ~ b2 ~ b2@3 ~ f#2 ~", AV: "b2@6 ~@2 b2 ~ b2@3 ~ b2@2", AW: "f#2@4 ~@2 f#2 ~ c#2 ~ c#2@3 ~ f#2 ~",
AX: "g#2@5 ~ g#2@2 c#2 ~ c#2@3 ~ c#2@2", AY: "f#2@5 ~ f#2@2 c#2 ~ c#2 ~ d#2@2 f2 ~",
AZ: "f#2@5 ~ f#2 ~ c#2 ~ c#2@3 ~ f#2@2", BA: "g#2@5 ~ g#2@2 d#2 ~ d#2@3 ~ d#2@2",
BB: "g#2@5 ~ d#2@2 c#2 ~ c#2@3 ~ c#2@2", BC: "f#2 ~@15",
})).s("gm_electric_bass_finger").gain(0.26).pan(0.4)
// chords · piano
const piano_3 = note("<A B C@8 D@6 E@2 ~@58>".pickRestart({
A: "~@10 [e5,g#5] ~ b4 ~ [e5,g#5] ~", B: "~ b4 ~ [e5,g#5] ~ b4 ~@2 [e5,g#5] ~ b4 ~@2 [e5,g#5] ~ b4",
C: "[~ [e5,g#5] ~ b4 ~@2 [e5,g#5] ~ b4 ~@2 [e5,g#5] ~ b4@2 ~@17 b4@2 ~@16 b4@2 ~@17 b4@2 ~@5 [c#5,e5]@3 a4@2 ~@7 b4@2 ~@7 a4@2 ~@5 [d#5,f#5]@3 b4@2 ~@7 b4@2 ~@7 g#4@2 ~, ~@15 [e5,g#5]@5 [e5,g#5]@5 [e5,g#5]@4 [e5,g#5]@5 [d#5,g#5]@5 [d#5,g#5]@4 [d#5,g#5]@5 [d#5,g#5]@5 [e5,g#5]@4 [e5,g#5]@5 [e5,g#5]@5 [e5,g#5]@5 ~@2 a4@5 ~@4 b4@5 ~@2 [c#5,e5]@5 [c#5,e5]@4 ~ [d#5,f#5]@4 ~@5 [e5,g#5]@5 [e5,g#5]@5 ~@2 g#4@4 ~@3, ~@18 b4@4 b4@5 b4@5 ~@4 b4@5 b4@5 b4@4 ~@5 b4@5 b4@4 b4@5 ~@3 [c#5,e5]@4 ~@5 [d#5,f#5]@5 [d#5,f#5]@5 ~@2 a4@4 ~@5 b4@5 ~@4 b4@5 ~@2 [c#5,e5]@5 [c#5,e5]@5]/8", // E C#m D#m E G#5 E C#m D#m …
D: "[~@7 a4@2 ~@7 b4@2 ~@17 g#4@2 ~@14 [c#5,e5]@3 a4@2 ~@19 b4@3 ~@5 [c#5,e5]@3 a4@2 ~@6 b4@2, [c#5,e5]@5 [c#5,e5]@5 ~@2 b4@4 ~@3 [c#5,e5]@4 [c#5,e5]@5 [c#5,e5]@5 [c#5,e5]@4 [c#5,e5]@5 [c#5,e5]@5 [c#5,e5]@4 ~@5 [e5,g#5]@5 [e5,g#5]@5 [e5,g#5]@6 [e5,g#5]@6 ~@3 a4@5 ~@4 b4@4 ~@2, ~@2 a4@5 ~@2 [d#5,f#5]@5 [d#5,f#5]@5 ~@2 g#4@5 g#4@4 g#4@5 ~@5 a4@4 a4@5 a4@5 ~@4 b4@5 b4@5 ~ b4@6 ~@4 [c#5,e5]@4 ~@5 [d#5,f#5]@4 [d#5,f#5]@4]/6", // C#m E D#m C#m D#m
E: "[e4,g#4,b4] ~ [e4,g#4,b4] ~ [e4,g#4,b4] ~ [e4,g#4,b4] ~ [e4,g#4,b4] ~ [e4,g#4,b4] ~ [e4,g#4,b4] ~ [e4,g#4,b4] ~", // E
})).s("gm_piano").gain(0.18)
// chords · epiano1
const epiano1 = note(`<
A@2 B@5 C@3 D@6 E F G H G I J K L M G H N O P Q R S T U T V W X Y Z T U AA AB AC AD AE AF AG AH AG AI AJ AK AL AM AG
AH AN AO AP AQ AR AS AG AH AG AI AJ AK AL AT ~@2
>`.pickRestart({
A: "[~@10 [e4,g#4,b4]@4 [e4,g#4,b4]@5 [e4,g#4,b4]@5 [e4,g#4,b4]@4 ~ e4@3, ~@7 [g#4,b4]]/2", // E G#m
B: "[~ [e4,g#4,b4]@5 [e4,g#4,b4]@5 [e4,g#4,b4]@4 [e4,g#4]@5 [e4,g#4,b4]@5 [e4,g#4,b4]@4 [e4,g#4,b4]@5 [d#4,g#4]@5 [d#4,g#4,b4]@4 [d#4,g#4,b4]@5 [d#4,g#4,b4]@5 [e4,g#4]@4 [e4,g#4,b4]@5 [e4,g#4,b4]@5 [e4,g#4,b4]@5 [c#4,e4,a4]@4 [c#4,e4,a4]@4, ~@15 e3@18 ~ d#3@18 ~ c#3@18 ~ c#3@8]/5", // E G#5 G#m E A
C: "[~ [d#4,f#4,b4]@5 [d#4,f#4,b4]@4 [c#4,e4,a4]@5 [c#4,e4,a4]@5 [d#4,f#4,b4]@4 [d#4,f#4,b4]@5 [e4,g#4,b4]@5 [e4,g#4,b4]@4 [c#4,e4,g#4]@5 [c#4,e4,g#4]@5, ~ d#3@9 c#3@9 ~ d#3@9 e3@19]/3", // B A B E C#m
D: "[[c#4,e4,a4]@5 [c#4,e4,a4]@4 [d#4,f#4,b4]@5 [d#4,f#4,b4]@5 [c#4,e4,g#4]@4 [c#4,e4,g#4]@5 [c#4,e4,g#4]@5 [c#4,e4,g#4]@4 [c#4,e4,a4]@5 [c#4,e4,a4]@5 [c#4,e4,a4]@4 [c#4,e4,a4]@5 [e4,g#4,b4]@5 [e4,g#4,b4]@5 [e4,g#4]@6 [e4,g#4]@6 [c#4,e4,a4]@5 [c#4,e4,a4]@4 ~ [d#4,f#4,b4]@4 [d#4,f#4,b4]@4, c#3@9 d#3@9 ~ c#3@15 ~@3 c#3@19 b2@22 c#3@9 ~ d#3@8]/6", // A B C#m A E A B
E: "[b3,e4]!8, e3@9 ~@7", F: "[b3,e4]!8, e6@15 ~", G: "[e4,g#4] b3 [e4,g#4] b3 [d#4,g#4] b3 [d#4,g#4] b3",
H: "[c#4,g#4] b3 [c#4,g#4] b3 [d#4,g#4] b3 [d#4,g#4] b3", I: "[f#4,a4] c#4 [f#4,a4] c#4 [f#4,a4] c#4 [f#4,a4] c#4",
J: "[a4,c#5] c#4 [a4,c#5] c#4 [g#4,b4] c#4 [f#4,a4] c#4", K: "[e4,g#4] a3 [e4,g#4] a3 [d#4,f#4] a3 [d#4,f#4] a3",
L: "[f#4,a4] a3 [f#4,a4] a3 [d#4,f#4] b3 [d#4,f#4] b3", M: "[e4,g#4] b3 [e4,g#4] b3 [f#4,a4] b3 [g#4,b4] b3",
N: "[e4,g#4] b3 [e4,g#4] b3 [e4,g#4] b3 [e4,g#4] b3", O: "[a4,c#5] e4 [a4,c#5] e4 [a4,c#5] e4 [a4,c#5] e4",
P: "[c#5,e5] e4 [c#5,e5] e4 [b4,d#5] e4 [a4,c#5] e4", Q: "[g#4,b4] b3 [g#4,b4] b3 [f#4,a4] b3 [e4,g#4] b3",
R: "[f#4,a4] c#4 [f#4,a4] c#4 [d#4,f#4] b3 [d#4,f#4] b3", S: "[e4,g#4] b3 [e4,g#4] b3 [e4,g4] c4 [e4,g4] c4",
T: "[f4,a4] c4 [f4,a4] c4 [e4,a4] c4 [e4,a4] c4", U: "[d4,a4] c4 [d4,a4] c4 [e4,a4] c4 [e4,a4] c4",
V: "[g4,a#4] d4 [g4,a#4] d4 [g4,a#4] d4 [g4,a#4] d4", W: "[a#4,d5] d4 [a#4,d5] d4 [a4,c5] d4 [g4,a#4] d4",
X: "[f4,a4] a#3 [f4,a4] a#3 [e4,g4] a#3 [e4,g4] a#3", Y: "[g4,a#4] a#3 [g4,a#4] a#3 [e4,g4] c4 [e4,g4] c4",
Z: "[f4,a4] c4 [f4,a4] c4 [g4,a#4] c4 [a4,c5] c4", AA: "[f4,a4] c4 [f4,a4] c4 [f4,a4] c4 [f4,a4] c4",
AB: "[a#4,d5] f4 [a#4,d5] f4 [a#4,d5] f4 [a#4,d5] f4", AC: "[d5,f5] f4 [d5,f5] f4 [c5,e5] f4 [a#4,d5] f4",
AD: "[a4,c5] c4 [a4,c5] c4 [g4,a#4] c4 [f4,a4] c4", AE: "[g4,a#4] d4 [g4,a#4] d4 [e4,g4] c4 [e4,g4] c4",
AF: "[f4,a4] c4 [f4,a4] c4 [f4,g#4] c#4 [f4,g#4] c#4", AG: "[f#4,a#4] c#4 [f#4,a#4] c#4 [f4,a#4] c#4 [f4,a#4] c#4",
AH: "[d#4,a#4] c#4 [d#4,a#4] c#4 [f4,a#4] c#4 [f4,a#4] c#4", // D#5 A#5
AI: "[g#4,b4] d#4 [g#4,b4] d#4 [g#4,b4] d#4 [g#4,b4] d#4", AJ: "[b4,d#5] d#4 [b4,d#5] d#4 [a#4,c#5] d#4 [g#4,b4] d#4",
AK: "[f#4,a#4] b3 [f#4,a#4] b3 [f4,g#4] b3 [f4,g#4] b3", AL: "[g#4,b4] b3 [g#4,b4] b3 [f4,g#4] c#4 [f4,g#4] c#4",
AM: "[f#4,a#4] c#4 [f#4,a#4] c#4 [g#4,b4] c#4 [a#4,c#5] c#4", // F# G#m A#m
AN: "[f#4,a#4] c#4 [f#4,a#4] c#4 [f#4,a#4] c#4 [f#4,a#4] c#4", // F#
AO: "[b4,d#5] f#4 [b4,d#5] f#4 [b4,d#5] f#4 [b4,d#5] f#4", // B
AP: "[d#5,f#5] f#4 [d#5,f#5] f#4 [c#5,f5] f#4 [b4,d#5] f#4", // D#m C# B
AQ: "[a#4,c#5] c#4 [a#4,c#5] c#4 [g#4,b4] c#4 [f#4,a#4] c#4", // A#m G#m F#
AR: "[g#4,b4]@2 d#4@2 [g#4,b4]@2 d#4@2 [f4,g#4]@2 c#4@2 [f4,g#4]@2 c#4 ~", // G#m Fm
AS: "[f#4,a#4] c#4 [f#4,a#4] c#4!2 d4 d#4 f4", AT: "[f#4,a#4] c#4 ~@6",
})).s("gm_epiano1").gain(0.19).pan(0.6)
// drums · kick
// … 47 more lines
More by Joe Dassin
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.