0:00/0:00
// Frida oum papa — Annie Cordy
// 130 bpm, 2/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 2) are rendered on a constant 2/4 grid of one bar per cycle
// note: Full arrangement: all 240 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(130/2)
// 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(`<
A B C D E F G H I J K L M N O P Q R S T U L@2 V W X Y Z AA AB AA AC AD AE AF AG U AH K AI AJ X Y AK AL AM AN AC AD AE
AF AG L AH J AO AP AQ AR AS AT@2 AU AV AW AX AY AZ BA BB BC BD BE BF BG BH BI BJ BK AX G BL BM BN BO B C BP T BQ BR BS
BJ BT AU AV AW BU BC AZ BA BV BC BD BE BF BW BX BR BY@2 AV G BL BM@2 BZ B C BP T F BR H I CA J L M N O CB Q CC S T CD
L@2 CE AJ X Y AK S AB AN AC AD AE AF CF U AH AL CG W CH X CI J CJ AA AC AD AE AF AG U AH J CK AP AQ AR AS AW AT CL AV
AW CM AY AZ BA BB BQ BD CN BF BG BX BI AT BY AV G BL BM BN CO B CP BP E F G BS CQ AU CL AV AW BU AY CR BA BB BD@2 BE
BF BG BH BR@2 BK AV G BL BN CO CS B CT BP T BQ BR CU
>`.pickRestart({
A: "bb2@3 ~ [bb3,d4,f4]@2 ~@2 f2@4 [bb3,d4,f4]@3 ~", B: "[c2,c3]@2 [g3,bb3,c4,e4] ~ g2@2 [g3,bb3,c4,e4] ~",
C: "[f2,f3]@4 [a3,c4,f4]@2 ~@2 c2@3 ~ [a3,c4,f4]@3 ~", D: "[d2,d3]@3 ~ [c4,d4,gb4,a4]@2 ~@2 a2@3 ~ [c4,d4,gb4,a4]@4",
E: "[g2,g3]@3 ~ [b3,d4,f4,g4]@3 ~ d3@3 ~ [b3,d4,f4,g4]@3 ~", // G G7
F: "[c2,c3]@3 ~ [bb3,c4,e4,g4]@2 ~@2 g2@3 ~ [bb3,c4,e4,g4]@3 ~", // C C7
G: "[f2,f3]@4 [a3,c4,f4]@2 ~@2 c3@3 ~ [a3,c4,f4]@2 ~@2", H: "[f2,f3]@2 [a3,c4,f4] ~ c3@2 [a3,c4,f4] ~",
I: "[c2,c3]@3 ~ [g3,c4,e4]@3 ~ g2@3 ~ [g3,c4,e4]@3 ~", J: "[c2,c3]@4 [g3,c4,e4]@2 ~@2 g2@3 ~ [g3,c4,e4]@2 ~@2",
K: "[c2,c3]@2 [g3,c4,e4] ~ g2@2 [g3,c4,e4] ~", L: "[g2,g3]@3 ~ [b3,d4,f4,g4]@2 ~@2 d3@3 ~ [b3,d4,f4,g4]@2 ~@2",
M: "[g2,g3]@2 [b3,d4,f4,g4] ~ d3@2 [b3,d4,f4,g4] ~", N: "[g2,g3]@3 ~ [b3,d4,f4,g4]@3 ~ d3@4 [b3,d4,f4,g4]@3 ~",
O: "[g2,g3]@3 ~ [b3,d4,f4,g4]@2 ~@2 d3@4 [b3,d4,f4,g4]@3 ~", P: "[c2,c3]@4 [g3,c4,e4]@3 ~ g1@3 ~ [g3,c4,e4]@2 ~@2",
Q: "[c2,c3]@3 ~ [g3,c4,e4]@3 ~ g2@4 [g3,c4,e4]@3 ~", R: "[c2,c3]@4 [g3,c4,e4]@3 ~ e2@3 ~ [g3,c4,e4]@2 ~@2",
S: "[c2,c3]@3 ~ [g3,c4,e4]@2 ~@2 g2@3 ~ [g3,c4,e4]@3 ~", // C
T: "[g2,g3]@3 ~ [b3,d4,f4,g4]@3 ~ d3@3 ~ [b3,d4,f4,g4]@2 ~@2", // G G7
U: "[g2,g3]@3 ~ [b3,d4,f4,g4]@2 ~@2 d3@3 ~ [b3,d4,f4,g4]@3 ~", // G G7
V: "[c2,c3]@4 [g3,c4,e4]@2 ~@2 [c2,c3,g3,c4,e4,g4]@3 ~@5", W: "[g1,g2]@4 [b3,d4,f4]@2 ~@2 d2@4 [b3,d4,f4]@3 ~",
X: "[g1,g2]@3 ~ [b3,d4,f4]@2 ~@2 d2@3 ~ [b3,d4,f4]@2 ~@2", Y: "[g1,g2]@3 ~ [b3,d4,f4]@3 ~ d2@3 ~ [b3,d4,f4]@2 ~@2",
Z: "[g1,g2]@3 ~ [b3,d4,f4]@2 ~ b1@4 ~ [d2,b3,d4,f4]@3 ~", AA: "[c2,c3]@3 ~ [g3,c4,e4]@2 ~@2 g2@3 ~ [g3,c4,e4]@2 ~@2",
AB: "[c2,c3]@3 ~ [g3,c4,e4]@3 ~ e2@3 ~ [g3,c4,e4]@3 ~", // C
AC: "[c2,c3]@3 ~ [g3,c4,e4]@2 ~@2 eb2@3 ~ [eb3,gb3,c4,eb4]@2 ~@2", // C Cdim
AD: "[g1,g2]@2 [b3,d4,f4,g4] ~ d2@2 [b3,d4,f4,g4] ~", AE: "[g1,g2]@3 ~ [b3,d4,f4,g4]@2 ~@2 d2@4 [b3,d4,f4,g4]@3 ~",
AF: "[g1,g2]@3 ~ [b3,d4,f4,g4]@2 ~@2 b1@3 ~ [b3,d4,f4,g4]@2 ~@2", // G G7
AG: "[d2,d3]@3 ~ [a3,d4,f4,a4]@3 ~ f2@4 [a3,d4,f4,a4]@3 ~", // D Dm
AH: "[g2,g3]@3 ~ [b3,d4,f4,a4]@3 ~ b2@3 ~ [b3,d4,f4,a4]@3 ~", AI: "[c2,c3]@4 [g3,c4,e4]@2 ~@2 ab2@4 [eb3,gb3,c4]@3 ~",
AJ: "[g1,g2]@4 [b3,d4,f4]@2 ~@2 d2@3 ~ [b3,d4,f4]@3 ~", AK: "[g1,g2]@3 ~ [b3,d4,f4]@3 b1@3 ~@2 [d2,b3,d4,f4]@3 ~",
AL: "[c2,c3]@4 [g3,c4,e4]@2 ~@2 g2@3 ~ [g3,c4,e4]@3 ~", AM: "[c2,c3]@3 ~ [g3,c4,e4]@2 ~@2 e2@3 ~ [g3,c4,e4]@3 ~",
AN: "[c2,c3]@3 ~ [g3,c4,e4]@2 ~@2 g2@4 [g3,c4,e4]@2 ~@2", AO: "[c2,c3,c4] ~@3, [g3,e4] ~@7",
AP: "[f2,f3]@3 ~ [a3,c4,f4]@3 ~ d3@3 ~ [a3,c4,f4]@3 ~", AQ: "c3@4 [a3,c4,f4]@2 ~@2 a2@3 ~ [a3,c4,f4]@2 ~@2",
AR: "[f1,f2]@3 ~ [a3,c4,f4]@3 ~ d2@3 ~ [a3,c4,f4]@3 ~", AS: "c2@4 [a3,c4,f4]@2 ~@2 a1@3 ~ [a3,c4,f4]@2 ~@2",
AT: "[f2,f3]@3 ~ [a3,c4,f4]@2 ~@2 c3@3 ~ [a3,c4,f4]@3 ~", AU: "[f2,f3]@3 ~ [a3,c4,f4]@2 ~@2 c3@3 ~ [a3,c4,f4]@2 ~@2",
AV: "[f2,f3]@3 ~ [a3,c4,f4]@2 ~@2 a2@3 ~ [a3,c4,f4]@2 ~@2", AW: "[f2,f3]@3 ~ [a3,c4,f4]@3 ~ c3@4 [a3,c4,f4]@3 ~",
AX: "[f2,f3]@3 ~ [a3,c4,f4]@2 ~@2 a2@3 ~ [a3,c4,f4]@3 ~", // F
AY: "[c2,c3]@3 ~ [bb3,c4,e4,g4]@3 ~ g2@4 [bb3,c4,e4,g4]@2 ~@2", // C C7
AZ: "[c2,c3]@4 [bb3,c4,e4,g4]@3 ~ g2@3 ~ [bb3,c4,e4]@3 ~", // C C7
BA: "[c2,c3]@3 ~ [bb3,c4,e4,g4]@2 ~@2 g2@3 ~ [bb3,c4,e4,g4]@2 ~@2", // C C7
BB: "[c2,c3]@4 [bb3,c4,e4,g4]@2 ~@2 e2@3 ~ [bb3,c4,e4,g4]@3 ~", // C C7
BC: "[c2,c3]@3 ~ [bb3,c4,e4,g4]@3 ~ g2@4 [bb3,c4,e4,g4]@3 ~", // C C7
BD: "[c2,c3]@3 ~ [bb3,c4,e4,g4]@2 ~@2 g2@4 [bb3,c4,e4,g4]@2 ~@2", // C C7
BE: "[c2,c3]@4 [bb3,c4,e4,g4]@2 ~@2 g2@3 ~ [bb3,c4,e4,g4]@2 ~@2", // C C7
BF: "[c2,c3]@3 ~ [bb3,c4,e4,g4]@3 ~ e2@3 ~ [bb3,c4,e4,g4]@2 ~@2", // C C7
BG: "[f2,f3]@4 [a3,c4,f4]@2 ~@2 d3@3 ~ [a3,c4,f4]@2 ~@2", BH: "c3@3 ~ [a3,c4,f4]@2 ~@3 a2@3 [a3,c4,f4]@2 ~@2",
BI: "[f2,f3]@4 [a3,c4,f4]@2 ~@2 c3@4 [a3,c4,f4]@3 ~", BJ: "[f2,f3]@3 ~ [a3,c4,f4]@3 ~ c3@3 ~ [a3,c4,f4]@3 ~",
BK: "[f2,f3]@4 [a3,c4,f4]@3 ~ c3@4 [a3,c4,f4]@2 ~@2", // F
BL: "[f2,f3]@3 ~ [c4,eb4,f4,a4]@2 ~@2 c3@3 ~ [c4,eb4,f4,a4]@2 ~@2", // F F7
BM: "[bb1,bb2]@3 ~ [bb3,d4,f4]@3 ~ f2@3 ~ [bb3,d4,f4]@3 ~", // Bb
BN: "[bb1,bb2]@3 ~ [bb3,d4,f4]@3 ~ f2@3 ~ [bb3,d4,f4]@2 ~@2", // Bb
BO: "[bb1,bb2]@3 ~ [bb3,d4,f4]@2 ~@2 f2@4 [bb3,d4,f4]@3 ~", // Bb
BP: "[d2,d3]@3 ~ [c4,d4,gb4,a4]@2 ~@2 a2@3 ~ [c4,d4,gb4,a4]@3 ~", // D D7
BQ: "[c2,c3]@3 ~ [bb3,c4,e4,g4]@3 ~ g2@3 ~ [bb3,c4,e4,g4]@3 ~", // C C7
BR: "[f2,f3]@4 [a3,c4,f4]@2 ~@2 c3@3 ~ [a3,c4,f4]@3 ~", BS: "[f2,f3]@2 [a3,c4,f4] ~ [c2,c3]@2 [g3,c4,e4] ~",
BT: "[f2,f3]@3 ~ [a3,c4,f4]@2 ~@2 c3@4 [a3,c4,f4]@3 ~", BU: "[f2,f3]@3 ~ [a3,c4,f4]@2 ~@2 a2@4 [a3,c4,f4]@3 ~",
BV: "[c2,c3]@4 [bb3,c4,e4,g4]@2 ~@2 e2@3 ~ [bb3,c4,e4,g4]@2 ~@2", // C C7
BW: "[f2,f3]@4 [a3,c4,f4]@3 ~ d3@3 ~ [a3,c4,f4]@2 ~@2", BX: "c3@3 ~ [a3,c4,f4]@2 ~@2 a2@4 [a3,c4,f4]@2 ~@2",
BY: "[f2,f3]@4 [a3,c4,f4]@3 ~ c3@3 ~ [a3,c4,f4]@2 ~@2", BZ: "[bb1,bb2]@3 ~ [bb3,d4,f4]@2 ~@2 f2@4 [bb3,d4,f4]@2 ~@2",
CA: "[c2,c3]@4 [g3,c4,e4]@3 ~ g2@3 ~ [g3,c4,e4]@2 ~@2", CB: "[c2,c3]@2 [g3,c4,e4] ~ g1 ~ [g3,c4,e4] ~",
CC: "[c2,c3]@4 [g3,c4,e4]@2 ~@2 e2@3 ~ [g3,c4,e4]@2 ~@2", // C
CD: "[g2,g3]@4 [b3,d4,f4,g4]@2 ~@2 d3@3 ~ [b3,d4,f4,g4]@3 ~", CE: "[c2,c3]@2 [g3,c4,e4] ~ [c2,c3,g3,c4,e4,g4]@2 ~@2",
CF: "[d2,d3]@3 ~ [a3,d4,f4,a4]@3 ~ f2@3 ~ [a3,d4,f4,a4]@3 ~", CG: "[c2,c3]@4 [g3,c4,e4]@3 ~ ab2@4 [eb3,gb3,c4]@3 ~",
CH: "[g1,g2]@4 [b3,d4,f4]@2 ~@2 d2@3 ~ [b3,d4,f4]@2 ~@2", CI: "[g1,g2]@3 ~ [b3,d4,f4]@3 b1@3 ~@2 [d2,b3,d4,f4]@2 ~@2",
CJ: "[c2,c3]@3 ~ [g3,c4,e4]@2 ~@2 e2@3 ~ [g3,c4,e4]@2 ~@2", CK: "[c2,c3,g3,c4,e4] ~@3",
CL: "[f2,f3]@3 ~ [a3,c4,f4]@2 ~@2 c3@4 [a3,c4,f4]@2 ~@2", CM: "[f2,f3]@3 ~ [a3,c4,f4]@2 ~@2 a2@4 [a3,c4,f4]@2 ~@2",
CN: "[c2,c3]@2 [bb3,c4,e4,g4] ~ g2@2 [bb3,c4,e4,g4] ~", CO: "[bb1,bb2]@3 ~ [bb3,d4,f4]@2 ~@2 f2@3 ~ [bb3,d4,f4]@3 ~",
CP: "[f2,f3]@4 [a3,c4,f4]@2 ~@2 c2@3 ~ [a3,c4,f4]@2 ~@2", CQ: "[f2,f3]@3 ~ [a3,c4,f4]@3 ~ c3@4 [a3,c4,f4]@2 ~@2",
CR: "[c2,c3]@4 [bb3,c4,e4,g4]@2 ~@2 g2@3 ~ [bb3,c4,e4]@3 ~", // C C7
CS: "[bb1,bb2]@3 ~ [bb3,d4,f4]@2 ~@2 f2@3 ~ [bb3,d4,f4]@2 ~@2", CT: "[f2,f3]@2 [a3,c4,f4] ~ c2@2 [a3,c4,f4] ~",
CU: "[f2,f3,a3,c4,f4] ~@7", // F
})).s("gm_piano").gain(0.17)
// bass · electric bass finger
const bass = note(`<
A B C D E F G H F@3 I@2 J I F@2 K F I@2 L M N O I P Q R S T U V E W E V X Y@2 O I P Q R S T U V E W E V X Z@2 AA AB AC
AB AD AE AF AG AD AH B AI AJ@3 AI B AK AL AM AG AN AG@2 AD AE AO AP AQ B C D E F G H AD AE AF AG AD AH B AI AJ@3 AI B
AK AL AM AG AN AG@2 AD AE AO AP AQ B C D E F G H F@3 I@2 J I F@2 K F I@2 L M N O I P Q R S T U V E W E V X Y@2 O I P Q
R S T U V E W E V X Z@2 AA AB AC AB AD AE AF AG AD AH B AI AJ@3 AI B AK AL AM AG AN AG@2 AD AE AO AP AQ B C D E F G H
AD AE AF AG AD AH B AI AJ@3 AI B AK AL AM AG AN AG@2 AD AE AO AP AQ B C D E F G AR
>`.pickRestart({
A: "g1@7 ~ bb1@7 ~", B: "c2@7 ~ g1@7 ~", C: "f2@7 ~ c2@7 ~", D: "d2@7 ~ a1@6 ~@2", E: "g1@8 d2@7 ~",
F: "c2@3 ~ g1@3 ~", G: "f2@8 c2@7 ~", H: "f1@5 ~@11", I: "g2@3 ~ d2@3 ~", J: "g2@3 ~ b1@3 ~",
K: "c2@6 ~@2 e2@3 ~ g2@3 ~", L: "g2@3 ~ g1@3 ~", M: "d2@3 ~ g1@3 ~", N: "c2@3 ~@5", O: "g2@7 ~ d2@6 ~@2",
P: "g2@6 ~@2 d2@7 ~", Q: "g2@7 ~ d2@4 b1@4", R: "c2@7 ~ g1@8", S: "c2@2 g1 b1", T: "c2 g1", U: "c2@2 eb2 ~",
V: "g2@7 ~ d2@8", W: "g2@7 ~ d2@7 ~", X: "b1@7 ~ d2@7 ~", Y: "[c2@7 g1@8 c2@5 ~@4 ab1@6 ~@2]/2",
Z: "[c2@7 g1@8 c2@5 ~@12]/2", AA: "f2@6 ~@3 d2@5 ~@2", AB: "c2@7 ~ a1@5 ~@3", AC: "f2@5 ~@3 d2@6 ~@2",
AD: "f2@6 ~@2 c2@7 ~", AE: "f2@7 ~ c2@6 ~@2", AF: "f2@5 ~@3 c2@6 ~@2", AG: "f2@3 ~ c2@3 ~", AH: "f2@6 ~@2 a1@7 ~",
AI: "c2@7 ~ g1@6 ~@2", AJ: "c2@6 ~@2 g1@7 ~", AK: "c2@6 ~@2 e2@7 ~", AL: "f2@8 d2@7 ~", AM: "c2@8 a1@7 ~",
AN: "f1@6 ~@2 c2@7 ~", AO: "bb1@7 ~ f1@8", AP: "bb1@8 f1@7 ~", AQ: "bb1@7 ~ f1@7 ~", AR: "f1 ~@7",
})).s("gm_electric_bass_finger").gain(0.21)
// other · trumpet
const trumpet = note(`<
A@2 B C D@2 E ~@49 F G H G I@2 J@2 K L M@3 N@4 O P@2 Q R@3 S T U@2 A@2 B C D@2 E ~ I@2 J@2 K L M@3 N@4 O P@2 Q R@3 S T
U@2 A@2 B C D@2 E ~@49 F G H G I@2 J@2 K L M@3 N@4 O P@2 Q R@3 S T U@2 A@2 B C D@2 E ~ I@2 J@2 K L M@3 N@4 O P@2 Q R@3
S T U@2 A@2 B C D@2 E V
>`.pickRestart({
A: "[g4@3 a4@4 ~ bb4@3 c5@4 e5@10 ~@2 d5@4 ~]/2", B: "d5 c5@3", C: "~@4 c5@3 b4@4 ~ c5@4", D: "[d5@15 e5@17]/2",
E: "f5", F: "~@4 [a4,f5]@2 ~@6 [f4,c5] ~@3", G: "~@4 [f4,c5] ~@7 [f4,c5] ~@3", H: "~@4 [a4,f5] ~@7 [f4,c5] ~@3",
I: "[c5@14 ~ c5@11 ~@2 b4@3 ~]/2", J: "[c5@4 d5@21 ~@7]/2", K: "c5@4 d5@5 ~@3 c5@2 ~@2", L: "d5@2 c5@3 ~ b4@2",
M: "[bb4@22 ~@9 d5@15 ~@2]/3", N: "[d5@12 db5@3 d5@4 ~ e5@20 ~@7 d5@4 e5@5 ~@3 d5@3 ~@2]/4", O: "e5@3 ~ d5@7 db5@4 ~",
P: "[c5@3 ~]/2", Q: "c5@7 ~", R: "[c5@12 b4@3 c5@4 ~ d5@24 ~@4]/3", S: "c5@4 d5@7 ~ c5@3 ~", T: "d5@4 c5@7 ~ a4@4",
U: "[d5@11 ~@5]/2", V: "f5 ~@7",
})).s("gm_trumpet").gain(0.22).pan(0.4)
// other · tenor sax
const tenor_sax = note(`<
A B C D E F G ~@49 H I J I K L@4 M N@2 O@4 P@2 G ~ K Q@3 R S T ~ A B C D E F G ~ K L@4 M N@2 O@4 P@2 G ~ K Q@3 R S T ~
A B C D E F G ~@49 H I J I K L@4 M N@2 O@4 P@2 G ~ K Q@3 R S T ~ A B C D E F G ~ K L@4 M N@2 O@4 P@2 G ~ K Q@3 R S T ~
A B C D E F G U
>`.pickRestart({
A: "e3@4 f3@4 g3@3 ~ a3@4", B: "c4@11 bb3@3 ~@2", C: "bb3 a3@3", D: "~@5 a3@3 ab3@4 a3@3 ~", E: "b3@15 ~",
F: "bb3@15 ~", G: "a3", H: "~@4 c5@2 ~@6 a4 ~@3", I: "~@4 a4 ~@7 a4 ~@3", J: "~@4 c5 ~@7 a4 ~@3", K: "a3@7 ~",
L: "[a3@10 ~ ab3@4 a3@5 bb3@21 ~@6 a3@4 ~ bb3@7 ~ a3@4]/4", M: "bb3@4 a3@7 ab3@4 ~", N: "[g3@11 ~@5]/2",
O: "[bb3@13 ~@2 bb3@12 a3@4 bb3@3 ~ c4@20 ~@9]/4", P: "[bb3@3 ~ c4@7 bb3@3 ~ c4@4 ~ bb3@8 bb3@3 ~]/2",
Q: "[a3@11 ab3@4 a3@4 ~ bb3@22 ~@6]/3", R: "a3@4 bb3@7 ~ a3@4", S: "bb3@2 a3@3 ~ f3@2", T: "bb3", U: "a3 ~@7",
})).s("gm_tenor_sax").gain(0.3).pan(0.6)
// other · trombone
const trombone = note(`<
A B@3 C D@2 ~@48 E F G H I J K@7 L M@3 N@2 O@2 P@5 Q R@2 A B@3 C S@2 ~ T@8 L M@3 N@2 O@2 P@5 Q R@2 A B@3 C S@2 ~@48 U
F G H I T@8 L M@3 N@2 O@2 P@5 Q R@2 A B@3 C S@2 ~ T@8 L M@3 N@2 O@2 P@5 Q R@2 A B@3 C D@2 V
>`.pickRestart({
A: "g3 a3 bb3 c4", B: "[~ e4@10 d4@3 ~ d4@4 c4@16 ~@2 c4@3 b3@4 c4@4]/3", C: "g3", D: "[g3@15 c4@16 ~]/2",
E: "~@8 c4 ~ d4 ~ e4 ~@3", F: "f4 ~ d4 ~", G: "c4 ~ a3 ~", H: "f3 ~ d3 ~", I: "c3@5 ~@3 a2@4 ~@4", J: "c4@7 ~",
K: "[c4@11 b3@4 c4@4 d4@25 ~@3 c4@5 d4@7 c4@4 d4@4 ~ c4@7 b3@4 bb3@19 ~@14]/7", L: "d4@9 ~@7",
M: "[d4@11 db4@4 d4@4 e4@19 ~@10]/3", N: "[d4@4 e4@8 d4@3 e4@5 d4@7 db4@4 ~]/2", O: "[c4@23 ~@9]/2",
P: "[c4@14 ~ c4@11 ~ b3@3 c4@5 d4@21 ~@7 c4@4 d4@8 ~ c4@3 ~]/5", Q: "d4@4 c4@7 ~ a3@4", R: "[d4@3 ~]/2",
S: "[g3@15 c4@17]/2", T: "[c4@14 ~ c4@11 ~ b3@4 c4@4 d4@25 ~@3 c4@5 d4@7 c4@4 d4@4 ~ c4@7 b3@4 bb3@19 ~@14]/8",
U: "~@4 c4 d4 e4 ~", V: "c4 ~@7",
})).s("gm_trombone").gain(0.17).pan(0.6)
// drums · kick
const kick = s("bd").struct(`<
A@15 B A@8 C D A@2 C D A B A@8 C E A@2 C D A@29 B A@31 B A@7 B A@7 F A@16 C D A@2 C D A B G A@7 C D A@2 C D A B A@7 F
A@19 B A@15 F A@15 B A@7 B A@7 F
>`.pickRestart({
A: "x!2", B: "x ~ x!2", C: "x ~@2 x", D: "~@3 x", E: "~@2 x!2", F: "x", G: "x!3 ~",
})).gain(0.26)
// drums · snare
const snare = s("sd").struct(`<
A@2 B A C D E F A@7 G A@6 H I J H K B A@3 H A@2 B A B A L M J N J O J I J P A@6 Q R S T U V A@2 G A@4 W A@5 X A H A@7
Y A@6 B Z A@2 G A@4 W A@5 X A H A@7 Y A@6 B Z A@7 G A@6 H I J H K B A@3 H A@2 B A B A L M J N J O J I J AA A@6 Q R S T
U V A@2 G A@4 AB A@5 X A H A@7 Y A@6 B Z A@2 G A@4 W A@5 X A H A@7 Y A@6 B AC
>`.pickRestart({
A: "~ x ~ x", B: "~@2 x!3 ~ x ~", C: "x!7 ~ x!8", D: "x!2 ~ x!3 ~ x!2 ~@2 x ~ x!3", E: "x ~ x!6", F: "x!2",
G: "~@2 x!2 ~@2 x ~", H: "~ x!3", I: "x ~@7 x!7 ~", J: "x!2 ~ x", K: "~ x ~@2", L: "~@4 x!2 ~ x ~@4 x ~@3",
M: "x ~@3 x ~@3 x!8", N: "x ~@7 x!3 ~ x ~ x ~", O: "~@4 x ~@3 x!7 ~", P: "~@4 x ~@3 x ~ x ~@2 x ~ x",
Q: "~@4 x ~ x ~ x ~ x ~ x!2 ~@2", R: "x ~@7 x!8", S: "x!11 ~ x!2 ~@2", T: "x ~ x ~ x!8 ~ x ~ x",
U: "x ~@2 x ~ x ~@2 x ~@3 x!2 ~ x", V: "x!2 ~ x ~@3 x!9", W: "~@6 x ~ x ~@2 x!2 ~ x ~", X: "~@4 x ~@8 x ~@2",
Y: "x!4", Z: "x ~@7 x!3 ~ x!4", AA: "~@4 x ~@3 x ~ x ~ x!2 ~ x", AB: "~@5 x!2 ~ x ~@2 x!2 ~ x ~", AC: "x",
})).gain(0.19)
// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
~@5 A ~@9 B ~@10 C ~@14 D ~@5 C ~@8 E F G H I ~@6 J ~@23 K ~@7 J ~@23 K ~@7 B ~@10 C ~@14 D ~@14 E F G H I ~@30 K ~@7
J ~@24
>`.pickRestart({
A: "~@2 x ~@3 x ~@2 x!2 ~ x ~@3", B: "~ x", C: "~@3 x", D: "~@11 x ~ x ~ x", E: "~@11 x ~@2 x!2", F: "~ x ~ x ~@12",
G: "~@2 x ~ x ~ x!2 ~ x!3 ~@2 x ~", H: "~@2 x ~ x!3 ~@9", I: "x", J: "~@5 x ~@10", K: "~@11 x ~@4",
})).gain(0.11)
// drums · hihat
const hihat = s("hh").struct(`<
A B A@5 C A@15 ~@3 A@2 D ~ A@10 ~@2 A@2 ~@2 A E A@7 ~ A@67 F A@15 ~ A@4 ~@2 A@25 ~@3 G@2 A@63 H
>`.pickRestart({
A: "~ x ~ x", B: "~@4 x ~@6 x ~@4", C: "~ x", D: "~ x ~@2", E: "~@3 x ~@7 x ~@4", F: "~ x!2 ~", G: "x!2", H: "x",
})).gain(0.26)
// drums · crash
const crash = s("cr").struct(`<
~@7 A ~@16 B ~@3 B ~@11 B ~@3 B ~@11 C ~@34 D ~@28 D@4 ~@16 B ~@3 B ~@11 B ~@3 B ~@43 D@3 ~@25 D ~@3 D@3 ~
>`.pickRestart({
A: "~ x", B: "x ~@2 x", C: "~ x ~@14", D: "x",
})).gain(0.26)
// drums · ride
const ride = s("rd").struct(`<
A@2 B A ~@4 C A@14 D ~@2 A@2 ~@2 A@9 D ~@2 A D ~@2 A D A@6 D ~@5 A@7 D E A@6 D F A@6 ~ A@6 D ~ A@7 D E A@6 D F A@6 ~
A@6 D ~ C A@14 D ~@2 A@2 ~@2 A@9 D ~@2 A D ~@2 A D A@6 D ~@5 A@7 D E A@6 D F A@6 ~ A@6 D ~ A@7 D E A@6 D F A@6 ~ A@6 D
~
>`.pickRestart({
A: "x!2", B: "x ~@8 x ~@6", C: "~ x ~@6 x ~@7", D: "x", E: "~ x", F: "~ x ~@2 x ~@3",
})).gain(0.23)
stack(piano, bass, trumpet, tenor_sax, trombone, kick, snare, snare_soft, hihat, crash, ride)
More by Annie Cordy
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.