0:00/0:00
// A Swinging Safari — Kaempfert
// 153 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 117 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(153/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 · alto sax
const alto_sax = note(`<
~@16 A B C D E B F G@2 ~@7 A B C H I B J K@2 ~@31 A B L D M B N G@2 ~@7 A B C O P Q C R@2 ~@7 A B C D S Q N T@2 U@2
V@2
>`.pickRestart({
A: "~@15 bb3", B: "[g3,eb4]@4 [bb3,g4] ~@2 bb3 [g3,eb4]@4 [bb3,g4] ~@2 c4",
C: "[ab3,eb4]@4 [c4,ab4] ~@2 c4 [ab3,eb4]@4 [c4,ab4] ~@2 bb3", // Ab5 Fm Ab5 Fm
D: "[g3,eb4]@4 [bb3,g4] ~@2 bb3 [g3,eb4]@4 [bb3,g4] ~@2 bb3", E: "d4@3 ~ d4@2 ~ [d3,bb3]@5 ~@3 bb3, ~@3 f4@2 ~@11",
F: "[ab3,eb4]@4 c4@2 ~ c4 [ab3,eb4]@4 [c4,ab4] ~@2 bb3, ~@4 ab4 ~@11", // Ab5 Fm
G: "[[g3,eb4]@4 [bb3,g4] ~@2 bb3 ab4@3 f4 d4@2 ~ [g3,eb4]@5 ~@12, ~@4 f3@3 ~@9]/2", // Cm Eb Cm
H: "[g3,eb4]@4 [bb3,g4] ~@2 bb3 [g3,eb4]@4 [bb3,gb4,g4] ~@2 bb3", // Cm Eb Cm Eb
I: "d4@3 ~ d4@2 ~ [d3,bb3]@6 ~@2 bb3, f3@5 ~@11, ~@3 f4@2 ~@11", // Gm
J: "[ab3,eb4]@4 [c4,ab4]@2 ~ c4 [ab3,eb4]@4 [c4,ab4] ~@2 bb3", // Ab5 Fm Ab5 Fm
K: "[[g3,eb4]@4 [bb3,g4] ~@2 bb3 ab4@3 f4 d4@2 ~ [g3,eb4]@4 ~@13, ~@4 f3@3 ~@9]/2", // Cm Eb Cm
L: "[ab3,eb4]@4 [c4,ab4] ~@2 [b3,c4] [ab3,eb4]@4 [c4,ab4] ~@2 bb3", // Ab5 Fm Cmaj7 Ab5 Fm
M: "[f3,d4]@3 ~ d4@2 ~ [d3,bb3]@6 ~@2 bb3, ~@3 f4@2 ~@11", // Dm Gm
N: "[ab3,eb4]@4 ab4@2 ~ c4 [ab3,eb4]@4 [c4,ab4] ~@2 bb3, ~@4 c4 ~@11", // Ab5 Fm
O: "[g3,eb4]@4 [bb3,g4] ~@2 bb3 [g3,eb4]@4 [bb3,g4] ~@2 bb3, ~@8 f3 ~@7", // Cm Eb Cm Eb
P: "d4@3 f4 d4@2 ~ [d3,bb3]@6 ~@2 bb3, f3@3 ~@5", Q: "[g3,eb4]@4 g4@2 ~ bb3 [g3,eb4]@4 [bb3,g4] ~@2 c4, ~@4 bb3 ~@11",
R: "[[g3,eb4]@4 [bb3,g4] ~@2 d4 f3@3 f4 d4@2 ~ [g3,eb4]@8 ~@9, ~@4 ab4 ~@11]/2", // Cm Eb Cm
S: "d4@3 ~ d4@2 ~ [d3,bb3]@5 ~@3 bb3, f3@3 ~@5, ~@3 f4@2 ~@11", // Gm
T: "[[g3,eb4]@4 [bb3,g4] ~@2 bb3 ab4@3 f4 d4@2 ~ [g3,eb4]@7 ~@9 bb3, ~@8 f3@5 ~@19]/2", // Cm Eb Cm
U: "[[g3,eb4]@4 [bb3,g4] ~@3 [f3,ab4]@3 f4 d4@2 ~ [g3,eb4]@6 ~@10 bb3]/2", // Cm Eb Fm Cm
V: "[[g3,eb4]@4 [bb3,g4] ~@3 [f3,ab4]@3 f4 d4 ~@2 [g3,eb4]@2 ~@6 [eb2,eb3]@5 ~@4]/2", // Cm Eb Fm Cm Eb
})).s("gm_alto_sax").gain(0.48)
// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
~@9 A B C D E B F G E B H I J K L@2 J B M D J B N@2 E B O P J B Q@2 R ~@6 S T U V W X@2 Y Z AA AB AC AB AD AE AF W
AG@2 AH AI AJ AK AL AM AN AO AP AQ AR B AS@2 AT AU O AV AD AW AX@2 E AY AZ BA BB BC BD@2 BE ~@6 BF BG BH BI BJ BG BK
BL@2 BM@2 BN@2
>`.pickRestart({
A: "eb2@5 ~@3 g1@6 ~@2", B: "ab1@5 ~@2 ab1@4 g1 f1@3 ~", C: "bb1@3 ~ bb1@4 g1@4 eb2@4",
D: "bb1@4 ~@3 bb1@4 ~ d2@3 ~, ~@11 c2@2 ~@3", E: "eb2@4 ~@3 eb2 g1@5 ~@2 g1", F: "eb2@2 ~@2 eb2@3 ~ bb1@3 c2 d2@3 ~",
G: "eb2@4 d2@4 c2@3 ~ bb1@4", H: "bb1@2 ~@5 bb1 g1@3 ~ eb2@3 ~", I: "bb1@4 ~@3 bb1@2 ~@2 bb1 c2@3 d2",
J: "eb2@5 ~@2 eb2 g1@5 ~@2 g1", K: "ab1@4 ~@3 ab1@4 ~ f1@3 ~, ~@11 g1@2 ~@3",
L: "[eb2@2 ~@2 eb2@2 ~@2 bb1@3 c2 d2@2 ~ eb2@2 ~@2 eb2 d2@3 ~ c2@3 ~ bb1@4]/2", M: "bb1@5 ~@2 bb1 g1@4 eb2@3 ~",
N: "[eb2@2 ~@2 eb2@3 ~ bb1@3 c2 d2@2 ~ eb2@2 ~@2 eb2 d2@3 ~ c2@3 ~ bb1@4]/2", O: "bb1@2 ~@2 bb1@4 g1@4 eb2@3 ~",
P: "bb1@4 ~@3 bb1@4 c2 d2@3 ~", Q: "[eb2@3 ~ eb2@3 ~ bb1@3 c2 d2@2 ~ eb2@2 ~@2 eb2 d2@2 ~@2 c2@2 ~@2 bb1@2 ~@2]/2",
R: "eb2@5 ~@11", S: "~@4 ab1@4 g1@4 f1@3 ~, ~@3 bb1@2 ~@11", T: "eb2 ~ eb2@2 g1 ~ g1@2", U: "ab1 ~ ab1@2 a1 ~ a1@2",
V: "bb1@2 ~@2 bb1@3 ~ g1@4 f1@3 ~", W: "eb2@3 ~ db2@4 c2@4 bb1@4",
X: "[ab1 ~@3 eb1@2 ~@2 ab1 ~ ab1@2 a1 ~ a1@2, ~@7 ab1@2 ~@6 eb1@2 ~@15]/2", Y: "bb1 ~ bb1@2 c2 ~ c2@2",
Z: "eb2@2 ~@2 eb2@4 e2@2 ~@2 e2@3 ~", AA: "f1@4 g1@4 ab1@3 ~ a1@3 ~", AB: "bb1 ab1 g1 f1", AC: "eb2 db2 c2 b1",
AD: "eb2 ~@3 eb2@4 g1@2 ~@2 g1@3 ~", AE: "ab1@2 ~@2 ab1@4 a1@2 ~@2 a1@3 ~", AF: "bb1@3 ~ bb1@4 g1@4 f1@3 ~",
AG: "[ab1@4 ~@4 eb1@5 ~@3 ab1@5 ~@3 a1@2 ~@2 a1@3 ~, ~@7 ab1@2 ~@6 eb1@2 ~@6 ab1@2 ~@7]/2",
AH: "bb1@2 ~@2 bb1@3 ~ c2@2 ~@2 c2@3 ~", AI: "eb2 ~ eb2@2 e2 ~ e2@2", AJ: "f1 g1 ab1 a1",
AK: "bb1@4 ab1@3 ~ g1@4 f1@3 ~", AL: "eb2@5 ~@2 eb2 ab1@4 ~@3 ab1", AM: "eb2@3 ~ d2@3 ~ c2@3 ~ bb1@4",
AN: "eb2@5 ~@2 eb2 g1@4 ~@3 g1", AO: "ab1@5 ~@2 ab1@3 ~ g1 f1@3 ~", AP: "bb1@3 ~ bb1@3 ~ g1@4 eb2@4",
AQ: "bb1 ~@3 bb1@2 ~@2 bb1@3 c2 d2@4", AR: "eb2@2 ~@6 g1@5 ~@2 g1, ~@7 eb2@2 ~@7",
AS: "[eb2@3 ~ eb2@3 ~ bb1@2 ~ c2 d2@2 ~ eb2@2 ~@2 eb2 d2@2 ~@2 c2@2 ~@2 bb1@4]/2",
AT: "eb2 ~@3 eb2@2 ~@2 g1@2 ~@2 g1@3 ~", AU: "ab1@2 ~@2 ab1@3 ~ g1@3 ~ f1@3 ~", AV: "bb1 ~@3 bb1@4 c2@4 d2@4",
AW: "ab1@2 ~@2 ab1@3 ~ g1@4 f1@3 ~",
AX: "[eb2@2 ~@2 eb2@3 ~ bb1@2 ~@2 d2@2 ~ eb2@2 ~@2 eb2 d2@2 ~@2 c2@2 ~@2 bb1@4]/2", AY: "ab1@5 ~@2 ab1@4 g1 f1@4",
AZ: "eb2 ~ eb2 ~ g1 ~ g1 ~", BA: "bb1@2 ~@2 bb1@2 ~ bb1@4 c2 d2@4", BB: "eb2@2 ~@2 eb2@3 ~ g1@2 ~@2 g1@3 ~",
BC: "ab1@2 ~@3 ab1 ~ ab1@4 g1 f1@2 ~@2",
BD: "[eb2@2 ~@2 eb2@2 ~@2 bb1@4 d2@2 ~ eb2@2 ~@2 eb2 d2@2 ~@2 c2@2 ~@2 bb1@3 ~]/2", BE: "eb2@3 ~@5",
BF: "~ ab1 g1 f1, ~@3 bb1@2 ~@11", BG: "eb2@2 ~@2 eb2@4 g1@2 ~@2 g1@3 ~", BH: "ab1@2 ~@2 ab1@3 ~ g1@4 f1@4",
BI: "bb1 ~ bb1@2 g1@2 eb2@2", BJ: "bb1@2 ~@2 bb1 ~@3 bb1@2 ~ bb1 c2@3 d2", BK: "ab1@2 ~@2 ab1@3 ~ g1@4 f1@2 ~@2",
BL: "[eb2@2 ~@2 eb2@2 ~@2 bb1@2 ~@2 d2@2 ~ eb2@2 ~@2 eb2 d2@2 ~@2 c2@2 ~@2 bb1@3 ~]/2",
BM: "[eb2 ~@3 eb2@2 ~@2 bb1@2 ~@2 d2@2 ~ eb2@2 ~@2 eb2 d2@2 ~@2 c2@2 ~@2 bb1@2 ~@2]/2",
BN: "[eb2@2 ~@2 eb2@2 ~@2 bb1@3 ~ d2@2 ~ eb2@2 ~@6 eb1@2 ~@7]/2",
})).s("gm_electric_bass_finger").gain(0.64)
// chords · piano · "A.PIANO"
const piano = note(`<
~@5 A B C@2 A B A D A B C@2 A B A D A B C@2 A B A D A B C@2 A B A D A B C@2 E F E G H I J G A K A L B M N O P@2 A D A
Q R L B M N S P@2 T U A B A D A B C@2 A B A D A B C@2 A B A D A B C@2 H F H V H I H G A W A D A B C@5 U
>`.pickRestart({
A: "[g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~@3", // Eb
B: "[ab3,c4,eb4] ~@3 [ab3,c4,eb4] ~@3 [ab3,c4,eb4] ~@3 [ab3,c4,eb4] ~@3", // Ab
C: "[g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~@3 [f3,bb3,d4] ~@3 [f3,bb3,d4] ~@3", // Eb Bb
D: "[f3,bb3,d4] ~@3 [f3,bb3,d4] ~@3 [f3,bb3,d4] ~@3 [f3,bb3,d4] ~@3", E: "[g3,bb3,eb4]@13 ~@3",
F: "[ab3,c4,eb4]@13 ~@3", G: "[f3,bb3,d4]@13 ~@3", H: "[g3,bb3,eb4]@7 ~", I: "[ab3,c4,eb4]@7 ~",
J: "[g3,bb3,eb4]@3 ~", K: "[ab3,c4,eb4] ~@3 [ab3,c4,eb4] ~@3 [gb3,a3,c4,eb4] ~@3 [gb3,a3,c4,eb4] ~@3",
L: "[g3,bb3,db4,eb4] ~@3 [g3,bb3,db4,eb4] ~@3 [g3,bb3,db4,eb4] ~@3 [g3,bb3,db4,eb4] ~@3", // Eb7
M: "[ab3,c4,eb4,f4] ~@3 [ab3,c4,eb4,f4] ~@3 [a3,c4,eb4,gb4] ~@3 [a3,c4,eb4,gb4] ~@3", // Fm7 Adim
N: "[bb3,c4,eb4,g4] ~@3 [bb3,c4,eb4,g4] ~@3 [bb3,c4,eb4,g4] ~@3 [bb3,c4,eb4,g4] ~@3", // Cm7
O: "[bb3,c4,eb4,g4] ~@3 [bb3,c4,eb4,g4] ~@3 [bb3,db4,e4,g4] ~@3 [db4,e4,g4] ~@3, ~@6 bb3 ~", // Cm7 Bbdim Dbdim
P: "[ab3,c4,eb4,f4] ~@3 [ab3,c4,eb4,f4] ~@3 [ab3,c4,eb4,f4] ~@3 [ab3,c4,eb4,f4] ~@3", // Fm7
Q: "[ab3,c4,eb4] ~@3 [ab3,c4,eb4] ~@3 [gb3,a3,c4,eb4] ~@3 [gb3,a3,c4] ~@3, ~@6 eb4 ~", // Ab Gbdim
R: "[bb3,eb4]@2 ~@2 [g3,bb3] ~@3 [g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~@3, g3 ~@3 eb4@2 ~@10", // Eb5 Gm Eb
S: "[bb3,c4,eb4,g4] ~@3 [bb3,c4,eb4,g4] ~@3 [bb3,db4,e4,g4] ~@3 [bb3,db4,e4,g4] ~@3", // Cm7 Bbdim
T: "[g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~@3 [ab3,c4,eb4] ~@3 [ab3,c4,eb4] ~@3", U: "[g3,bb3,eb4] ~@15",
V: "[f3,bb3,d4]@7 ~", W: "[ab3,c4] ~@3 [ab3,c4,eb4] ~@3 [ab3,c4,eb4] ~@3 [ab3,c4,eb4] ~@3, eb4 ~@7",
})).s("gm_piano").gain(0.48).pan(0.4)
// chords · banjo
const banjo = note(`<
~@5 A B C@2 A B A D A B C@2 A B E D A B C@2 A B A F A B C G A B H@2 A B C I ~@8 J K L M@7 N O J K P Q R S T U V W X@8
C Y A Z A D A B C AA A B AB D A B C AC AD ~@6 AE AF B A AG AF B C Y C AC C AH
>`.pickRestart({
A: "[g3,bb3,eb4] ~@2 [g3,bb3,eb4] ~@3 [g3,bb3,eb4]!2 ~@2 [g3,bb3,eb4] ~@3 [g3,bb3,eb4]", // Eb
B: "[ab3,c4,eb4] ~@2 [ab3,c4,eb4] ~@3 [ab3,c4,eb4]!2 ~@2 [ab3,c4,eb4] ~@3 [ab3,c4,eb4]", // Ab
C: "[g3,bb3,eb4] ~@2 [g3,bb3,eb4] ~@3 [g3,bb3,eb4] [f3,bb3,d4] ~@2 [f3,bb3,d4] ~@3 [f3,bb3,d4]", // Eb Bb
D: "[f3,bb3,d4] ~@2 [f3,bb3,d4] ~@3 [f3,bb3,d4]!2 ~@2 [f3,bb3,d4] ~@3 [f3,bb3,d4]", // Bb
E: "[g3,bb3,eb4] ~@2 [g3,bb3,eb4] ~@3 [g3,bb3,eb4]!2 ~@2 [g3,bb3,eb4]!2 ~@2 [g3,bb3,eb4]", // Eb
F: "[f3,bb3,d4] ~@2 [f3,bb3,d4]!2 ~@2 [f3,bb3,d4] ~@3 [f3,bb3,d4]!2 ~@2 [f3,bb3,d4]", // Bb
G: "[g3,bb3,eb4] ~@2 [g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~@3 [f3,bb3,d4]!2 ~@2 [f3,bb3,d4]", // Eb Bb
H: "[[g3,bb3,eb4] ~@2 [g3,bb3,eb4] ~@3 [g3,bb3,eb4]!2 ~@2 [g3,bb3,eb4] ~@3 [g3,bb3] [f3,bb3,d4] ~@2 [f3,bb3,d4] ~@3 [f3,bb3,d4]!2 ~@2 [f3,bb3,d4] ~@3 [f3,bb3,d4], ~@15 eb4@17]/2", // Eb Gm Bb
I: "[g3,bb3,eb4] ~@2 [g3,bb3,eb4] ~@4 [f3,bb3,d4] ~@3 [f3,bb3,d4] ~@3", // Eb Bb
J: "[g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~@3", // Eb
K: "[ab3,c4,eb4] ~@3 [ab3,c4,eb4] ~@3 [a3,c4,eb4] ~@3 [a3,c4,eb4] ~@3", // Ab Adim
L: "[g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~@2 [g3,bb3,eb4]!2 ~@3 [g3,bb3,eb4] ~@2 [g3,bb3,eb4]", // Eb
M: "[[g3,bb3,eb4] ~@2 [g3,bb3,db4,eb4]!2 ~@2 [g3,bb3,db4,eb4]!2 ~@2 [g3,bb3,db4,eb4]!2 ~@2 [bb3,db4,eb4] [ab3,c4,eb4] ~@3 [ab3,c4,eb4] ~@3 [ab3,c4,eb4] ~@3 [ab3,c4,eb4] ~@2 ab3 [ab3,c4,eb4,f4] ~@3 [ab3,c4,eb4,f4] ~@3 [a3,c4,eb4,gb4] ~@3 [a3,c4,eb4,gb4] ~@3 [bb3,eb4,g4] ~@3 [bb3,c4,eb4,g4] ~@3 [bb3,c4,eb4,g4] ~@3 [bb3,c4,eb4,g4] ~@2 [bb3,c4,eb4,g4] [bb3,c4,eb4,g4] ~@3 [bb3,c4,eb4,g4] ~@3 [bb3,db4,e4,g4] ~@3 [bb3,db4,e4,g4] ~@3 [ab3,c4,eb4,f4] ~@3 [ab3,c4,eb4,f4] ~@3 [ab3,c4,eb4,f4] ~@3 [ab3,c4,eb4,f4] ~@2 [ab3,c4,eb4,f4] [ab3,c4,eb4,f4] ~@3 [ab3,c4,eb4,f4] ~@3 [ab3,c4,eb4,f4] ~@2 [ab3,c4,eb4,f4]!2 ~@2 [ab3,c4,eb4,f4], ~@15 g3@97]/7", // Eb Eb7 Ab Fm7 Adim Eb Cm7 Bbdim …
N: "[g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~@2 [g3,bb3,eb4]!2 ~@2 [g3,bb3,eb4] ~@3 [g3,bb3,eb4]", // Eb
O: "~@3 [f3,bb3]!2 ~@2 [f3,bb3] ~@3 [f3,bb3]!2 ~@2 [f3,bb3]", // Bb5
P: "[g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~@2 [g3,bb3,eb4]!2 ~@2 [g3,bb3,db4,eb4]", // Eb Eb7
Q: "~@3 [g3,bb3,db4,eb4]!2 ~@2 [g3,bb3,db4,eb4] ~ [g3,bb3,db4,eb4] ~ [g3,bb3,db4,eb4]!2 ~@2 [g3,bb3,db4,eb4]", // Eb7
R: "~@3 [ab3,c4,eb4]!2 ~@2 [ab3,c4,eb4] ~@3 [ab3,c4,eb4]!2 ~@2 [ab3,c4,eb4]", // Ab
S: "[ab3,c4,eb4,f4] ~@3 [ab3,c4,eb4,f4] ~@6 [a3,c4,eb4,gb4]!2 ~@2 [a3,c4,eb4,gb4]", // Fm7 Adim
T: "~@3 [bb3,c4,eb4,g4]!2 ~@2 [bb3,c4,eb4,g4] ~@3 [bb3,c4,eb4,g4] ~@3 [bb3,c4,eb4,g4]", // Cm7
U: "~@4 [bb3,c4,eb4,g4] ~@3 [bb3,db4,e4,g4] ~@3 [bb3,db4,e4,g4] ~@3", // Cm7 Bbdim
V: "~@3 [ab3,c4,eb4,f4]!2 ~@2 [ab3,c4,eb4,f4] ~@3 [ab3,c4,eb4,f4]!2 ~@2 [ab3,c4,eb4,f4]", // Fm7
W: "~@4 [ab3,c4,eb4,f4] ~@3 [ab3,c4,eb4,f4] ~@3 [ab3,c4,eb4,f4] ~@3", // Fm7
X: "[[g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~@3 [gb3,ab3,eb4] ~@3 [gb3,ab3,eb4] ~@3 [g3,bb3,eb4] ~@3 bb3 ~@2 bb3 ~@3 bb3!2 ~@2 bb3 ~@3 [g3,bb3,eb4] ~@3 [g3,bb3,eb4]!2 ~@2 [g3,bb3,eb4] ~@3 [g3,bb3,eb4] [ab3,c4,eb4] ~@2 [ab3,c4,eb4] ~@3 [ab3,c4,eb4]!2 ~@2 [ab3,c4,eb4] ~@3 [ab3,c4,eb4] [g3,bb3,eb4] ~@2 [g3,bb3,eb4] ~@3 [g3,bb3,eb4]!2 ~@2 [g3,bb3,eb4] ~@3 [g3,bb3,eb4] [f3,bb3,d4] ~@2 [f3,bb3,d4] ~@3 [f3,bb3,d4] ~@3 [f3,bb3,d4] ~@3 [f3,bb3,d4] [g3,bb3,eb4] ~@2 [g3,bb3,eb4] ~@3 [g3,bb3,eb4]!2 ~@2 [g3,bb3,eb4] ~@3 [g3,bb3,eb4] [ab3,c4,eb4] ~@2 [ab3,c4,eb4] ~@3 [ab3,c4,eb4]!2 ~@2 [ab3,c4,eb4] ~@3 [ab3,c4,eb4], ~ db4@31]/8", // Eb Ab7 Eb Ab Eb Bb Eb Ab
Y: "[g3,bb3,eb4] ~@2 [g3,bb3,eb4] ~@3 [g3,bb3,eb4] bb3 ~@2 bb3!2 ~@2 bb3", // Eb
Z: "[ab3,c4,eb4] ~@2 [ab3,c4,eb4] ~@3 [ab3,c4,eb4] ~@3 [ab3,c4,eb4]!2 ~@2 [ab3,c4,eb4]", // Ab
AA: "[g3,bb3,eb4] ~@2 [g3,bb3,eb4] ~@3 [g3,bb3,eb4] bb3 ~@2 bb3!3 ~ bb3", // Eb
AB: "[g3,bb3,eb4] ~@2 [g3,bb3,eb4] ~@3 [g3,bb3,eb4]!2 ~@2 [g3,bb3,eb4] ~@3 f3", // Eb
AC: "[g3,bb3,eb4] ~@2 [g3,bb3,eb4] ~@3 bb3!2 ~@2 bb3!2 ~@2 bb3", AD: "[g3,bb3,eb4] ~@15",
AE: "~@3 bb3 ab3@2 ~@2 g3 ~@3 f3 ~@3", AF: "~@3 [g3,bb3,eb4] ~@3 [g3,bb3,eb4]!2 ~@2 [g3,bb3,eb4] ~@3 [g3,bb3,eb4]",
AG: "~@3 [f3,bb3,d4]!2 ~@2 [f3,bb3,d4] ~@3 [f3,bb3,d4]!2 ~@2 [f3,bb3,d4]", AH: "~@7 [g3,eb4] ~@8",
})).s("gm_banjo").gain(0.22).pan(0.6)
// other · piccolo
const piccolo = note(`<
A B C D E B C F@2 B C D G B C H@2 B C D G B C I@2 ~@7 A B C D J B C K@2 ~@31 A D C D L B C M@2 ~@7 A B C D N B C O@2
~@7 A B C D G B C P@2 Q@2 I@2
>`.pickRestart({
A: "~@15 bb5", B: "eb6@4 g6 ~@2 bb5 eb6@4 g6 ~@2 c6", C: "eb6@4 ab6 ~@2 c6 eb6@4 ab6 ~@2 bb5",
D: "eb6@4 g6 ~@2 bb5 eb6@4 g6 ~@2 bb5", E: "d6@3 f6 d6@2 ~ bb5@6 ~@2 bb5",
F: "[eb6@4 g6 ~@2 bb5 ab6@3 f6 d6@2 ~ eb6@4 ~@12 bb5]/2", G: "d6@3 f6 d6@2 ~ bb5@5 ~@3 bb5",
H: "[eb6@4 g6 ~@2 bb5 ab6@2 ~ f6 d6@2 ~ eb6@5 ~@11 bb5]/2", I: "[eb6@4 g6 ~@2 bb5 ab6@2 ~ f6 d6@2 ~ eb6@5 ~@12]/2",
J: "d6@3 f6 d6@2 ~ bb5@3 ~@5 bb5", K: "[eb6@4 g6 ~@2 bb5 ab6@2 ~ f6 d6@2 ~ eb6@3 ~@14]/2",
L: "d6@3 f6 d6@3 bb5@5 ~@3 bb5", M: "[eb6@4 g6 ~@2 bb5 ab6@3 f6 d6@2 ~ eb6@5 ~@12]/2",
N: "d6@3 f6 d6@2 ~ bb5@4 ~@4 bb5", O: "[eb6@4 g6 ~@2 bb5 ab6@3 f6 d6@2 ~ eb6@3 ~@14]/2",
P: "[eb6@4 g6 ~@2 bb5 ab6@3 f6 d6@2 ~ eb6@6 ~@10 bb5]/2", Q: "[eb6@4 g6 ~@2 bb5 ab6@3 f6 d6@2 ~ eb6@7 ~@9 bb5]/2",
})).s("gm_piccolo").gain(0.32).pan(0.3)
// chords · trombone
const trombone = note("<~@16 A@3 B@8 C@8 D@6 ~@31 E@7 F@8 G@8 H@2 ~@7 I@8 J@5>".pickRestart({
A: "[~@15 [g4,bb4,eb5]@3 ~@5 [g4,bb4,eb5]@3 ~@5 [ab4,c5,eb5]@3 ~@5 [ab4,c5,eb5]@3 ~@5 [g4,bb4,eb5]]/3", // Eb Ab Eb
B: "[~@7 [g4,bb4,eb5]@3 ~@5 [f4,bb4,d5]@3 ~@5 [f4,bb4,d5]@6 ~@2 [g4,bb4,eb5]@4 ~@4 [g4,bb4,eb5]@3 ~@5 [ab4,c5,eb5]@3 ~@5 [ab4,c5,eb5]@3 ~@5 [g4,bb4,eb5]@3 ~@5 [f4,bb4,d5]@2 ~@6 [g4,bb4,eb5]@3 ~@13 [g4,bb4,eb5]@2 ~@6 [g4,bb4,eb5]@2 ~@6 [ab4,c5,eb5]@2 ~@6 [ab4,c5,eb5]@2 ~@6 [g4,bb4,eb5]]/8", // Eb Bb Eb Ab Eb Bb Eb Ab …
C: "[~@7 [g4,bb4,eb5]@2 ~@6 [f4,bb4,d5]@3 ~@5 [f4,bb4,d5]@2 ~@6 [g4,bb4,eb5]@2 ~@6 [g4,bb4,eb5]@2 ~@6 [ab4,c5,eb5]@2 ~@6 [ab4,c5,eb5] ~@7 [g4,bb4,eb5]@2 ~@6 [f4,bb4,d5]@2 ~@6 [g4,bb4,eb5]@2 ~@14 [g4,bb4,eb5]@2 ~@6 [g4,bb4,eb5]@2 ~@6 [ab4,c5,eb5]@2 ~@6 [ab4,c5,eb5]@2 ~@6 [g4,bb4,eb5]]/8", // Eb Bb Eb Ab Eb Bb Eb Ab …
D: "[~@7 [g4,bb4,eb5]@2 ~@6 [f4,bb4,d5]@2 ~@6 [f4,bb4,d5]@6 ~@2 [g4,bb4,eb5]@2 ~@6 [g4,bb4,eb5]@2 ~@6 [ab4,c5,eb5]@2 ~@6 [ab4,c5,eb5]@2 ~@6 [g4,bb4,eb5]@2 ~@6 [f4,bb4,d5]@2 ~@6 [g4,bb4,eb5]@3 ~@14]/6", // Eb Bb Eb Ab Eb Bb Eb
E: "[~@15 [g4,bb4,eb5]@2 ~@6 [g4,bb4,eb5]@3 ~@5 [ab4,c5,eb5]@2 ~@6 [ab4,c5,eb5]@2 ~@6 [g4,bb4,eb5]@2 ~@6 [g4,bb4,eb5]@2 ~@6 [f4,bb4,d5]@2 ~@6 [f4,bb4,d5]@5 ~@3 [g4,bb4,eb5]@2 ~@6 [g4,bb4,eb5]@3 ~@5 [ab4,c5,eb5]@2 ~@6 [ab4,c5,eb5]@2 ~@6 [g4,bb4,eb5]]/7", // Eb Ab Eb Bb Eb Ab Eb
F: "[~@7 [f4,bb4,d5]@2 ~@6 [g4,bb4,eb5]@3 ~@13 [g4,bb4,eb5]@2 ~@6 [g4,bb4,eb5]@2 ~@6 [ab4,c5,eb5]@2 ~@6 [ab4,c5,eb5]@2 ~@6 [g4,bb4,eb5]@2 ~@6 [g4,bb4,eb5]@2 ~@6 [f4,bb4,d5]@2 ~@6 [f4,bb4,d5]@2 ~@6 [g4,bb4,eb5]@3 ~@5 [g4,bb4,eb5]@2 ~@6 [ab4,c5,eb5]@2 ~@6 [ab4,c5,eb5]@2 ~@6 [g4,bb4,eb5]]/8", // Bb Eb Ab Eb Bb Eb Ab Eb
G: "[~@7 [f4,bb4,d5]@2 ~@6 [g4,bb4,eb5]@2 ~@14 [g4,bb4,eb5]@2 ~@6 [g4,bb4,eb5]@3 ~@5 [ab4,c5,eb5]@2 ~@6 [ab4,c5,eb5]@2 ~@6 [g4,bb4,eb5]@2 ~@6 [g4,bb4,eb5]@2 ~@6 [f4,bb4,d5]@2 ~@6 [f4,bb4,d5]@2 ~@6 [g4,bb4,eb5]@2 ~@6 [g4,bb4,eb5]@2 ~@6 [ab4,c5,eb5]@2 ~@6 [ab4,c5,eb5]@2 ~@6 [g4,bb4,eb5]]/8", // Bb Eb Ab Eb Bb Eb Ab Eb
H: "[~@7 [f4,d5]@2 ~@6 [g4,bb4,eb5]@2 ~@15, ~@7 bb4 ~@24]/2", // Dm Eb
I: "[~@15 [g4,bb4,eb5]@2 ~@6 [g4,bb4,eb5]@2 ~@6 [ab4,c5,eb5]@2 ~@6 [ab4,c5,eb5]@2 ~@6 [g4,bb4,eb5]@2 ~@6 [g4,bb4,eb5]@2 ~@6 [f4,bb4,d5]@2 ~@6 [f4,bb4,d5]@5 ~@3 [g4,bb4,eb5]@2 ~@6 [g4,bb4,eb5]@2 ~@6 [ab4,c5,eb5]@2 ~@6 [ab4,c5,eb5]@2 ~@6 [g4,bb4,eb5]@2 ~@6 [f4,bb4,d5]@2 ~@6 [g4,bb4,eb5]]/8", // Eb Ab Eb Bb Eb Ab Eb Bb …
J: "[~@7 [f4,bb4,d5]@2 ~@6 [g4,bb4,eb5]@2 ~@6 [f4,bb4,d5]@2 ~@6 [g4,bb4,eb5]@2 ~@6 [f4,bb4,d5]@2 ~@6 [g4,bb4,eb5]@2 ~@6 [f4,bb4,d5]@2 ~@6 [g4,bb4,eb5]@2 ~@6 [eb2,eb3]@4 ~@5]/5", // Bb Eb Bb Eb Bb Eb Bb Eb
})).s("gm_trombone").gain(0.4).pan(0.3)
// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note("<~@26 A ~ B ~ A ~@10 C@4 D@2 E F ~@33 A ~ G ~ H ~@10 I@4 J K L M ~@12>".pickRestart({
A: "~@2 eb5@2 c5@2 ab4 ~ eb4@2 ~@6", B: "~@2 d5 ~ bb4 ~ f4 ~ d4@3 ~@5",
C: "[[bb3,g4]@15 ~ [c4,ab4]@14 ~@2 g4@16 [d3,f4]@16, eb3@47 ~@17, ~@16 bb3@15 ~]/4", // Eb Fm Dm
D: "[[bb3,g4]@15 ~ [ab3,gb4]@15 ~, eb3@31 ~]/2", E: "[eb3,bb3,g4]@15 ~", F: "[bb3,f4] ~@7",
G: "~@2 d5 ~ bb4 ~ f4 ~ d4@2 ~@6", H: "~@2 eb5@2 c5 ~ ab4 ~ eb4@2 ~@6",
I: "[[bb3,g4]@15 ~ [c4,ab4]@15 ~@17 [d3,f4]@16, eb3@47 ~@17, ~@31 g4@16 ~@17, ~@16 bb3@15 ~]/4", // Eb Fm Dm
J: "[eb3,g4], bb3@7 ~", K: "ab2, gb4@7 ~, c4@3 ~", L: "[eb3,g3,eb4]", M: "[bb2,bb3] ~@7",
})).s("gm_string_ensemble_1").gain(0.35)
// drums · kick
const kick = s("bd").struct(`<
~@4 A ~@3 B C@3 D C@7 D C@3 D C@7 D C@3 D C@3 D E ~@6 B C@22 D E C@3 D C@3 D C@3 D C D C F C@3 D C@3 D E ~@6 B C@7 D C
D@2 G
>`.pickRestart({
A: "~@7 x!2 ~@7", B: "~@15 x", C: "x!2", D: "x ~@7 x ~@6 x", E: "x", F: "x ~@6 x!2 ~@6 x", G: "~@7 x ~@8",
})).gain(0.8)
// drums · snare
const snare = s("sd").struct(`<
~@4 A ~@3 B C@3 D C@3 E C@3 D C@3 F C@7 G C@3 D C@3 H ~@7 I C@3 D C@7 J K C@2 E C@3 D C@3 L C@7 E C@7 M C@3 D C@3 D
~@7 N C@3 O C@3 P C E Q R
>`.pickRestart({
A: "~@3 x!2 ~@6 x!3 ~ x", B: "~@11 x!2 ~@2 x", C: "~ x ~ x", D: "~@4 x ~@6 x!2 ~@2 x", E: "~@4 x ~@6 x!3 ~ x",
F: "~ x!3", G: "~@3 x!2 ~@2 x!2 ~@2 x!3 ~ x", H: "~@3 x!2 ~@3 x ~@3 x ~@3", I: "~@3 x!2 ~@3 x!2 ~ x!2 ~@2 x",
J: "~@3 x ~@7 x ~@3 x", K: "~ x ~@2 x ~@7 x ~@3", L: "x ~@10 x!2 ~@3", M: "~@4 x ~@2 x!2 ~@2 x!3 ~ x",
N: "~ x ~ x!2 ~@4 x ~ x!3 ~ x", O: "~@4 x ~@6 x!2 ~@3", P: "~@3 x!2 ~@6 x!2 ~@2 x", Q: "~@4 x ~@7 x ~@2 x",
R: "~@3 x!2 ~@11",
})).gain(0.8)
// drums · hihat
const hihat = s("hh").struct(`<
~ A@3 B A@3 C A@3 C A@3 C A@3 C A@3 C A@3 C A@3 C A@3 C A@2 C@2 A@3 C A@2 C D A@3 C A@11 C A@7 E A C A C A C A F A C A
C A@3 G A C A C A C A H A@3 C A C A I A@3 C A@3 C A C@2 ~
>`.pickRestart({
A: "x ~@3 x ~@2 x!2 ~@3 x ~@2 x", B: "x ~@3 x ~@2 x!2 ~@3 x ~@3", C: "x ~@3 x ~@2 x!2 ~@2 x!2 ~@2 x",
D: "x ~@2 x!2 ~@2 x!3 ~ x!3 ~ x", E: "x ~@3 x ~@3 x ~@3 x ~@2 x", F: "x ~@3 x ~@2 x!3 ~ x!2 ~@2 x",
// … 16 more lines
More by Kaempfert
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.