0:00/0:00
// Una rosa blu — Michele Zarrillo
// 58 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 5 alto sax (copy of ch 16 piano)
// note: Full arrangement: all 79 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(58/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 · electric bass finger
const bass = note(`<
~ A B C@2 D E F G H I J K L M N O P Q R S T U V W X Y F Z AA AB AC AD AE AF AG AH AI AJ AK AL@2 AM AN AO AP AQ AR AS
AT AU@4 AV AW AV AX AY AZ BA BB BC BD BA BE AV BF AY AZ AV AW AV AX AY AZ AY BG@2
>`.pickRestart({
A: "~@3 a1", B: "b0@7 d1 g1@7 a1", C: "[d2@6 ~ g2@2 a2@2 b2@14 b0@6 ~]/2", D: "b1@7 a1 a1@8", E: "g1@8 gb1 ~ gb1@6",
F: "b1@6 g1 b1 b0@7 ~", G: "e1@7 gb2 g2 d3 b2@6", H: "a1@4 ~ g1 gb1 e1@9", I: "g1@4 ~ d2 a2 g2@4 d2@3 g1@2",
J: "e1 a1", K: "d2@5 ~ a1@2", L: "b1@7 a1@5 d2@4", M: "g1 ~ g1@2 ~ g1 d2 g2@4 d2 g2@3 g1", N: "d2@4 b1@3 g1@5 a1@4",
O: "d1@6 g1 d2@4 ~ f1@4", P: "bb1@4 ~@3 bb1 ~ bb1 bb1@4 ~ f1", Q: "bb1@4 ~@3 bb1 ~ bb1 bb1@4 f1@2",
R: "bb1@4 ~@3 bb1 ~ bb1 bb1@5 ab1", S: "g1@7 bb1@2 f1@2 bb1@3 bb0@2", T: "eb1@7 ab1@3 g1 eb1@5", U: "d1@7 g1@4 b1@5",
V: "c2 bb1", W: "db2@4 g1@4 d2@4 a1@3 ~", X: "b1@7 b1 a1@7 ~", Y: "g1@5 ~@2 g1 gb1@6 a1 gb1",
Z: "e1@5 b0 d1 e1 ~ e1 g1@2 e1@4", AA: "a1@4 ~ a1 g1 gb1 e1!2 e1@5 e1",
AB: "g1@4 ~@3 g1 d3 b2 a2 g2 [g2,b2]@4, ~@8 g2@3 ~@5", AC: "e1@7 a1 a1@7 d2", AD: "d2@3 d2 ~ a1 g1 d1@4 f1 f1@4",
AE: "bb1@2 f1 bb1@2 ~@2 bb1 ~ bb1 bb1@4 ~ f1", AF: "bb1@2 f1 bb1@2 ~@2 bb1 ~ bb1 bb1@3 f2 g2 c3",
AG: "bb2@5 f2@2 bb1 ~ bb1 bb1@5 ab2", AH: "g2@6 bb2@3 f2 bb2 bb1 bb1@3 bb0",
AI: "eb1@2 bb0 eb1@2 g1 bb1 [eb2,ab3]@5 f3 eb3@3", AJ: "d2@7 g1@4 b1@4 c2", AK: "c2@7 g1 g1@7 bb1",
AL: "[bb1@4 ~@2 eb2@2 [ab1,ab2]@15 ~ c2@4 ~@3 c2]/2", AM: "bb1@7 ~ ab1@4 ~@3 ab1",
AN: "g1 ~ g1@3 ab1 bb1 eb2 ab1@6 ~ b1", AO: "c2@3 g1 c1@2 c1@2 f1@5 eb2 f2 ab2",
AP: "f2@2 ~ c2@3 f1 ~ bb1@4 ~@2 ab1 g1", AQ: "f1@8 ab1@7 eb2", AR: "ab2 eb2 db2@2 ab1@3 ~ f1@6 ~ f1",
AS: "bb1@8 eb2@6 ~ eb2", AT: "bb1@2 eb1 ~ bb1@3 bb1 c2@7 bb1",
AU: "[bb1@4 eb2@4 ab1 ~ ab1@2 ~ eb2 f2 ab2@5 ab1@3 bb1 eb2@4 c2@3 f1@26 ~@7]/4",
AV: "c1@2 c1@2 ~@3 eb1 ab1!2 ab1@5 bb1", AW: "eb1@2 eb1@2 ~@3 f1 bb1!3 f1@2 eb1 eb1@2",
AX: "eb1@2 eb1@2 ~ eb1 f1 bb1@6 f1 eb1 d1", AY: "c1@2 c1@2 ~@3 eb1 ab1 eb1 ab1@5 bb1",
AZ: "eb1@2 eb1@2 ~ eb1 f1 eb1 bb1 f1 bb1 f1 eb1 f1 eb1 d1", BA: "c1@2 c1@2 ~ eb1 f1 c2 ab1@2 ab1@5 bb1",
BB: "eb1@2 eb1@2 ~ eb2 c3 bb2@5 bb1@3 ~", BC: "c2@6 ~ eb1 ab1!2 ab1@5 bb1",
BD: "eb1@2 eb1@2 ~ bb0 f1 bb1@3 ~ bb1 f1!2 eb1 ~", BE: "eb1@2 eb1@2 ~ eb1 c2 bb1@2 ab1 g1 f1!2 eb1!2 d1",
BF: "eb1@2 eb1@2 ~ eb1 f1 bb1@2 f1@3 ~ eb1 d1!2", BG: "[eb1@2 eb1@2 ~ eb1 ~ bb1@2 f1@2 bb0@13 ~@8]/2",
})).s("gm_electric_bass_finger").gain(0.56)
// chords · string ensemble 1
const string_ensemble_1 = note("<~@2 A B@2 ~@7 C D E F G ~@2 H I J K L M ~@16 N@5 O@4 P@4 Q@22 R@3>".pickRestart({
A: "[gb3,b3,d4]", B: "[[gb3,a3,d4]@7 [a3,db4,e4]@13 ~@12]/2", C: "~@3 gb3",
D: "[gb3,b3,d4]@7 [g3,c4,d4]@5 [gb3,a3,d4]@4", E: "[g3,b3,d4]@7 [g3,bb3,d4]@9",
F: "[gb3,a3,d4]@4 [a3,d4]@3 [g3,a3,d4]@5 [a3,d4]@4", G: "[g3,a3,d4]@7 [gb3,d4]@5 [g3,eb4]@4", H: "[c4,eb4,ab4]",
I: "[d4,f4,bb4]@6 ~ [c4,eb4,ab4]@5 [d4,f4,bb4]@3 ~", J: "[eb4,g4,bb4]@15 ~", K: "[d4,f4,bb4]@7 [d4,f4]@5 [d4,g4]@3 ~",
L: "[c4,eb4] [d4,g4]", M: "[e4,a4] [a3,g4] [d4,gb4] [a3,e4]",
N: "[~ c4 bb3 c4 [d4,f4] eb4 [bb3,e4] ab3@2 [bb3,d4], ~ eb4@3 ~ c4@4 ~, ~ g3@2 ab3@3 ~ f4@3]/5", // Dm Bbdim Bb
O: "[ab3@2 ~@4 c5@2 d5@2 [d4,eb4,g4]@3 [g3,bb3,d4] [g3,c4,eb4]@2, [c4,eb4]@3 f4@2 ~@3, ~@2 ab4@6 bb4@5 ~@3]/4", // Ebmaj7 Gm Cm
P: "[[ab3,db4,eb4]@4 [g3,bb3,eb4]@4 [ab3,c4,eb4]@7 [ab3,b3,eb4]@9 [g3,bb3,eb4]@4 [bb3,eb4,g4]@3 [ab3,c4,eb4,f4]@25 ~@8]/4", // Absus4 Eb Ab Abm Eb Fm7
Q: "[c2 ab2 eb2 [bb2,f3,d4], [g3,eb4]@3 ~, c4 bb3]/2", // Bb Cm
R: "[c2@8 ab2@8 eb2@7 [bb2,f3]@16 ~@9, [g3,eb4]@23 ~@25, c4@16 bb3@23 ~@9]/3", // Bb5 Cm
})).s("gm_string_ensemble_1").gain(0.26)
// chords · pad warm
const pad_warm = note("<A@3 B@2 ~@20 C@2 ~@13 D@2 ~@10 E ~@26>".pickRestart({
A: "[[b3,gb5,b5]@7 [d4,a5,d6]@5 [e4,b5,e6]@6 ~@6]/3", B: "[~@11 e5@19 ~@2]/2", C: "[b4@7 db5@7 ~ d5@7 ~@10]/2",
D: "[~ [eb5,f5,bb5,bb6]@2 ~]/2", E: "~ [c5,g5]@7",
})).s("gm_pad_warm").gain(0.09)
// chords · pad warm · soft notes
const pad_warm_soft = note("<A@3 B@2 ~@74>".pickRestart({
A: "[gb7@7 a7@5 b7@6 ~@6]/3", B: "[~@11 e7@19 ~@2]/2",
})).s("gm_pad_warm").gain(0.06)
// other · synth brass 2
const synth_brass_2 = note("<~@60 A B C@2 D@3 E@2 F G@2 H I@5 ~>".pickRestart({
A: "f4@5 ~@3", B: "~ f4", C: "[~ bb4, g4@19 ~@13]/2",
D: "[gb4 ~@12 bb4@10 c5@6 bb4@2 g4@9 d5@8, g4@15 ~@25 db5 ~@7]/3", E: "[bb4@11 c4@2 c5@10 f5@7 ~ c5]/2",
F: "bb4 ~ bb4@11 c5@3", G: "[c4 g4@9 bb4@3 ab4@2 bb4@8 ab4 g4@2 ~ [g4,ab4] f4@4]/2",
H: "[d4,eb4] eb4@7 [d4,eb4] [f4,g4,ab4] [bb4,c5] ~@4 c5, ~ d4 ~@8 d5@4 ~@2", // Ebmaj7 Fm Bbsus2
I: "[bb4@7 f5@14 eb5 c5 ~ eb5@7 g4@8 ab4@2 bb4@2 ab4@2 f4 ab4 g4@7 c4 c5@7 bb4 bb3@8 ~@9, ~@24 d5 ~@55]/5",
})).s("gm_synth_brass_2").gain(0.56)
// other · orchestral harp · Fsus2 Ab5 Fm
const orchestral_harp = note("<~@52 [~@9 [f3,g3] [ab3,eb4] [f4,g4,ab4] eb5 f5 g5 ab5] [c5 ~@15] ~@25>")
.s("gm_orchestral_harp").gain(0.36)
// other · french horn
const french_horn = note("<~@40 A@2 B C D E@3 ~@31>".pickRestart({
A: "[~@8 eb4@15 ~@5 g3@4]/2", B: "d4@6 eb4@2 bb3@3 ab3@3 eb4@2", C: "f4@5 g4@6 ~@5", D: "~@7 c4",
E: "[f4@3 g4@3 [eb4,ab4]@2 ab4@16 bb4@16 ~@8, ~@8 d4@7 ~@33]/3", // Ab5
})).s("gm_french_horn").gain(0.49)
// other · piano
const piano = note("<~@20 A B C ~@4 D@2 ~@3 E F G@2 H B C ~@40>".pickRestart({
A: "~@9 d4!4 c4 bb3 eb4", B: "~@2 d4 eb4@2 d4 eb4 [bb3,d4] ~@2 d4 eb4 f4 eb4 c4 d4", C: "~ d4!5 eb4 ~@9",
D: "[~@2 b3 db4 d4@2 b3 a3@2 a3!2 b3 db4@2 a3 g3@2 ~@15]/2", E: "~@15 f4",
F: "~@2 eb4 f4@2 eb4 [eb4,f4] d4 ~ f4 eb4 f4 g4 f4 d4 eb4", // Ebsus2
G: "[~@2 d4 eb4@2 f4 [d4,eb4] c4 ~ eb4!5 d4 eb4@3 d4 eb4@2 d4 eb4 ~@2 eb4!4 d4 c4 bb3]/2", // Ebmaj7
H: "~ bb3!2 ab3 bb3!2 g3 ~@2 d4!4 c4 bb3 eb4",
})).s("gm_piano").gain(0.05)
// chords · epiano2
const epiano2 = note(`<
~@5 A B C D E F G@2 H I J K L M N O P Q R S A B C T U V W X Y Z AA AB P Q R AC ~@8 AD AE@4 ~@5 AF ~@5 AF ~@5 AF ~@5
AG@2
>`.pickRestart({
A: "[gb3,b3,d4]@7 ~ [a3,db4,gb4]@7 ~", B: "[g3,b3,d4]@7 ~ [gb3,a3,d4]@8", C: "[b3,d4,g4]@8 [b3,eb4,gb4]@7 ~",
D: "[b3,d4,g4]@3 [g3,b3,d4]", E: "[a3,db4,e4]@7 [b3,d4,g4]@9", F: "~@7 d5@9, [g3,b3,d4], ~@3 g4@5",
G: "[[e3,b3,d4,gb4]@7 ~@4 a4@4 ~ [gb4,a4]@8 ~@4 [gb3,a3,db4,d4]@4, ~@8 [a3,db4,e4]@7 d4@9 ~@8, ~@16 e4 ~@15]/2", // Bm Gbm Dmaj7 A
H: "[gb3,b3,d4]@7 [e3,g3,c4]@4 ~ [d3,gb3,c4]@4", I: "[d3,g3,b3]@7 [d3,g3,bb3]@8 ~",
J: "[a3,d4]@3 ~ [gb3,a3,d4]@3 [g3,a3,d4]@4 ~ [a3,db4]@4", K: "~@3 g3@4 gb3@5 [g3,bb3,eb4]@4, [a3,d4]@3 ~",
L: "~@9 bb4@7, [bb3,d4,f4]", M: "[bb3,c4,eb4,g4]@11 ~ [c4,eb4,g4]@3 ~", N: "[c4,eb4,ab4]@11 ab4@2 eb4@3, bb3",
O: "[d4,f4,bb4]@6 ~ [c4,eb4,ab4]@4 ~ [d4,f4,bb4]@3 ~", P: "[eb4,g4,bb4]@7 ~",
Q: "[d4,f4,bb4]@6 ~ [a3,f4]@5 [b3,g4]@4", R: "[c4,eb4,g4]@3 c4@2 g3@2 ~ [bb3,d4,g4]@3 bb3@2 g3@3",
S: "a4@4 g4@3 ~ [d4,gb4]@4 [db4,e4]@4, [db4,e4] a3", T: "[b3,d4,g4]@3 [b3,d4,g4]", U: "[db4,e4,a4] [b3,d4,g4]",
V: "~@7 g5@9, [b3,d4,g4], ~@3 d5@5", W: "[e3,b3,d4,gb4]@7 ~@4 a4@4 ~, ~@8 [a3,db4,e4]@7 ~",
X: "[d4,gb4,a4]@3 [g3,bb3,eb4]", Y: "[bb3,d4,f4]", Z: "[bb3,c4,eb4,g4]", AA: "[bb3,c4,eb4,ab4]",
AB: "[d4,f4,bb4]@6 [c4,eb4,ab4]@6 [d4,f4,bb4]@3 ~", AC: "[c4,eb4,ab4] ~", AD: "~ [g3,c4,eb4]",
AE: "[[f3,ab3,db4]@4 [eb3,g3,db4]@4 [eb3,ab3,c4]@7 [eb3,ab3,b3]@8 ~ [bb3,eb4]@3 ~ [g3,bb3,eb4]@3 [f3,bb3,eb4]@25 ~@8]/4", // Db Eb7 Ab Abm Eb5 Eb Ebsus2
AF: "~@7 [bb5,d6]@2 [bb5,eb6]@2 [bb5,f6]@5", AG: "[~@7 [bb5,d6]@2 bb5@2 [bb5,f6]@13 ~@8, ~@9 eb6@6 ~@17]/2",
})).s("gm_epiano2").gain(0.39).pan(0.3)
// other · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
A@5 B C D E F G H I J K L M N O N P Q R S T U@2 V W X Y Z@2 N O N AA AB R AC@2 AD AE AF AG@2 AE AF AH AI@5 AJ@23 AK@2
>`.pickRestart({
A: "[~@53 a4@2 [a2,db4]@2 [b2,d4]@2 [db3,e4]@13 ~@8, b2@8 g2@8 d3@7 db4@6 db4@4 gb3@6 db4@6 db4@4 a3@7 ~@24, ~ gb3@6 db4@6 db4@4 a3@7 a2@8 b2@8 g2@8 d3@8 ~@24, ~@2 db4@3 a4@5 ~ a4@4 a4@4 d4@6 d4@5 d4@3 ~ db4@3 a4@6 a4@4 a4@4 d4@4 ~@25, ~@3 d4@5 ~ d4@4 ~ d4@4 db4@3 a4@5 ~ e4@4 e4@2 ~@2 d4@6 d4@5 d4@4 db4@5 ~@25]/5", // A Bm Dbm
B: "b3 ~ b3 d4@2 b3@2 db4@8 ~", C: "g3 ~ g3 b3@2 g3@2 a3@2 d3@6 ~",
D: "~@3 g4@2 ~@6 gb4@2 ~@3, ~ g3@3 ~@5 a3@2 ~@5, ~ d4 ~@3 b3 ~@2",
E: "~@3 g4@2 d4@2 g3@2 d3@2 ~@5, ~ g3@3 ~@12, ~ d4 ~@6", F: "~ g3 b3 db4@2 a4@2 ~@2 d4@2 a4@2 ~@3",
G: "~ g3 b3 d4@2 g4@3 ~ b3@2 g4@3 ~@2", H: "b3 ~ b3 d4@2 b3@2 db4@2 a3@2 a4@5", I: "a4@8 ~@4 db4 d4 e4@2",
J: "d4@2 db4 d4@2 a4@2 c4@2 d4@2 g4@2 d4@2 ~", K: "g3@2 b3 d4@2 g4@2 bb3@2 d4@2 g4@2 d4@2 ~",
L: "[a3,d4]@3 ~ [a3,d4]@2 ~ [g3,d4]@4 ~ [a3,db4]@4", M: "[a3,d4]@3 g3@2 a3 g3 gb3@4 ~ eb4@3 ~",
N: "c4@2 bb3 f3@2 c4@2 bb3@2 f3@2 c4@2 bb3 f3@2", O: "c4@2 bb3 g3@2 c4@2 bb3@2 g3@2 c4@2 bb3 f3@2",
P: "d4@2 bb3 f3@2 d4 ~ eb4@5 f4@4", Q: "~@3 bb3@2 g3@2 ab3@2 bb3@2 g3@3 bb3@2, g4@7 ~@9",
R: "d4@2 c4 bb3@2 ~@2 a3@2 c4@2 b3@2 g4@3, f4@7 ~@9, c4 ~@5 f3@2 ~@8", S: "[eb4,g4]@7 ~ [d4,g4]@7 ~",
T: "a4@4 g4@3 ~ [d4,gb4]@3 ~ [db4,e4]@3 ~, [db4,e4]@7 ~@9", // D Dbm
U: "[d4@2 db4 d4@2 a4@2 db4@2 d4@2 a4@2 db4@2 d4@3 ~ a4@2 g4 ~ a3@2 d4@2 a4@2 d4@2 ~]/2",
V: "~ g3@2 d4@2 g4 ~@3 a3@2 b3@2 gb4@2 ~", W: "~@2 g3 b3@2 g4@2 d4@4 b3!2 d4@2 ~",
X: "~@2 b3 db4@2 a4@2 g4@2 d4@2 ~@2 d4 a3 b3, ~@11 a4@5", Y: "d4@2 b3 d4 ~ g4@2 a3@2 b3@2 g4@2 b3 d4 ~",
Z: "[e4@2 g3 d4@2 e4@2 db4 e4@2 a3 db4@2 e4@2 ~ gb4@3 g3@2 a3 g3 gb3@5 ~@4, ~@15 d4@4 ~@13]/2",
AA: "d4@2 bb3 f3@2 ~ eb4@6 f4@4", AB: "~@3 bb3@2 g3@2 ab3@2 bb3@2 g3@3 bb4@2, g4@7 ~@9",
AC: "[eb4@3 c4@2 eb4@3 d4@2 ~@3 g4@2 ~ [c4,eb4]@8 ~@8, g4@7 ~ g4@5 ~@19, ~@11 d4@4 ab3@9 ~@8]/2", // Cm
AD: "~@8 ab5@3 g5@3 f5@2", AE: "f5@2 ~ eb5@3 d5@2 d5@3 c5@3 bb4@2", AF: "bb4@2 [bb4,c5] ab4@3 g4@2 g4@3 f4@3 eb4 ~",
AG: "[f4@6 ~ [f4,g4] ab4@13 ~@3 ab5@3 g5@3 f5@2]/2", AH: "~ d4@5 ~ [eb4,f4] ~@2 g4 bb4 ~ g4 bb4@2, ~ d4",
AI: "[~@8 eb4@2 d4 eb4@2 bb4@2 db4@2 eb4@2 ab4@2 eb4@2 ~ ab3@2 c4 eb4@2 ab4@2 b3@2 eb4@2 ab4@2 eb4@2 ~ [bb3,eb4]@3 ~ [bb3,eb4]@2 ~ [ab3,eb4]@25 ~@8]/5", // Eb5 Ab5
AJ: "~ eb4 d4 eb4@2 bb4@2 d4@2 eb4@2 bb4@2 d4 eb4 bb4", AK: "[~ eb4 d4 eb4@2 bb4@2 d4@2 eb4@2 bb4@13 ~@8]/2",
})).s("gm_acoustic_guitar_nylon").gain(0.43).pan(0.3)
// other · acoustic guitar nylon
const acoustic_guitar_nylon_2 = note("<~ A B@3 ~@36 C D E F@2 D E G ~@4 H I@6 J@6 I@6 K@7>".pickRestart({
A: "~@12 a3 b3 d4 a3", B: "[b3@9 ~@4 a4 e4 gb4@8 ~@9 b5@3 ~@3 a5@10, ~@9 e5@4 ~@3]/3", C: "~@8 f5@3 eb5@3 d5 ~",
D: "d5@3 c5@3 bb4 ~ bb4@3 ab4@3 g4@2", E: "g4@2 [g4,ab4] f4@3 eb4@2 eb4@3 d4@3 c4@2",
F: "[e4@7 [d4,e4] f4@12 ~@4 f5@3 eb5@3 d5@2]/2", G: "~@7 [c4,d4] bb3@8", H: "~@12 bb3 c4 eb4 bb3",
I: "[c4@7 ~@6 bb4 f4 g4@6 ~@2 d4@2 eb4@2 [eb4,f4]@2 d4 bb3 c4@5 ~@2 eb4 c4@4 ~@2 bb4 f4 g4@6 ~@2 [d4,f4]@2 [eb4,g4] ~ [f4,g4,ab4] ~ [eb4,g4] [d4,f4]!2 ~@6 [f4,c5] [eb4,g4]@6 ~ bb4 c4@8 ~@5 bb3 c4 eb4 bb3, ~@39 bb3 ~@23 g4@5 ~@3 [d4,f4] ~@24]/6", // Ebsus2 Dm Eb Fm Eb Dm F5 Eb …
J: "[c4@7 ~@6 bb4 f4 g4@6 ~@2 d4@2 eb4@2 [eb4,f4] ~ d4 bb3 c4@5 ~@2 eb4 c4@4 ~@2 bb4 f4 g4@6 ~@2 [d4,f4]@2 [eb4,g4] ~ [f4,g4,ab4] ~ [eb4,g4] [d4,f4]!2 ~@6 [f4,c5] [eb4,g4]@6 ~ bb4 c4@8 ~@5 bb3 c4 eb4 bb3, ~@39 bb3 ~@23 g4@5 ~@3 [d4,f4] ~@24]/6", // Ebsus2 Dm Eb Fm Eb Dm F5 Eb …
K: "[c4@7 ~@6 bb4 f4 g4@6 ~@2 d4@2 eb4@2 [eb4,f4] ~ d4 bb3 c4@5 ~@2 eb4 c4@4 ~@2 bb4 f4 g4@6 ~@2 [d4,f4]@2 [eb4,g4] ~ [f4,g4,ab4] ~ [eb4,g4] [d4,f4]!2 ~@6 [f4,c5] [eb4,g4]@6 ~ bb4 c4@8 [bb3,d4]@2 [bb3,eb4]@2 [bb3,f4]@13 ~@8, ~@39 bb3 ~@23 g4@5 ~@3 [d4,f4] ~@40]/7", // Ebsus2 Dm Eb Fm Eb Dm F5 Eb …
})).s("gm_acoustic_guitar_nylon").gain(0.72).pan(0.6)
// other · acoustic guitar nylon · soft notes
const acoustic_guitar_nylon_3 = note("<~@3 A B ~@43 C ~@8 D@2 ~@4 D@2 ~@4 D@2 ~@4 D@2 ~@2>".pickRestart({
A: "~@11 gb5 ~@4", B: "b4@3 [gb5,gb6]@3 a4@10", C: "~ bb3@5 ~@10", D: "[~@11 eb4 ~@3 eb4@5 ~@12]/2",
})).s("gm_acoustic_guitar_nylon").gain(0.4).pan(0.6)
// chords · percussive organ
const percussive_organ = note("<~@17 A B C D E F G H ~@8 I J K L M N O P@2 ~@37>".pickRestart({
A: "[bb4,f5]@15 ~", B: "[c5,g5]@15 ~", C: "[c5,ab5]@15 ~", D: "[f5,bb5]@6 ~ eb5@5 f5@4", E: "g5", F: "f5@3 g5",
G: "eb5 d5", H: "a5@4 g5@4 gb5@4 e5@3 ~", I: "[bb4,d5,f5]@15 ~", J: "[c5,eb5,g5]@15 ~", K: "[c5,ab5,c6]@15 ~",
L: "[d5,f5,bb5]@3 [c5,eb5,ab5]@3 [d5,f5,bb5]@2", M: "eb5@7 eb6@9, [g5,bb5]", N: "bb5@7 bb5@5 [b5,g6]@4, d6, f6@3 ~",
O: "[g5,c6,eb6]@8 [g5,bb5,d6]@7 ~", P: "[[eb5,ab5,c6] [ab5,c6,eb6,f6]@2 ~]/2",
})).s("gm_percussive_organ").gain(0.15).pan(1)
// chords · electric guitar jazz
const electric_guitar_jazz = note("<~@25 A B ~ C D E ~@6 F G ~@40>".pickRestart({
A: "[b3,gb4,b4]@9 ~@7", B: "~@3 a4@2 g4@2 ~@9", C: "[e4,g4,b4]@13 ~@3", D: "[db4,a4]@7 ~ [b3,g4]@7 ~",
E: "[d4,b4]@6 ~ g5@9, ~@3 d5@5", F: "~@3 bb2@2 g3@2 ab3@3 [g3,bb3]@2 [f3,eb4]@2 bb4@2",
G: "f4@3 ~@9 g4@4, ~@11 b3@4 ~",
})).s("gm_electric_guitar_jazz").gain(0.49)
// drums · kick
const kick = s("bd").struct(`<
~@2 A B ~ A C A D E F A G D H I J E@5 K L@2 A C A M N F O P E@3 Q E K L@2 R S@3 O S T O@2 U V W D A@3 O A@3 O A O A O
A@5 X A@5 Y ~
>`.pickRestart({
A: "x ~@6 x!2 ~@7", B: "x ~ x ~@4 x ~ x ~ x ~@4", C: "x ~@3 x!2 ~@2", D: "x ~ x ~@4 x ~ x!2 ~@5",
E: "x ~@6 x ~ x!2 ~@5", F: "x ~@5 x!2 ~@8", G: "x ~ x ~@4 x ~@8", H: "x ~ x ~@4 x ~ x ~ x ~@3 x",
I: "x ~@3 x ~@2 x ~@4 x ~@3", J: "x ~ x ~@4 x ~@3 x ~@4", K: "x ~@6 x ~@3 x ~@4", L: "x!2", M: "x ~ x ~@5 x!2 ~@6",
N: "x ~@6 x!2 ~ x ~@5", O: "x ~@6 x!2 ~@6 x", P: "x ~ x ~@4 x!2 ~@7", Q: "x ~@2 x ~@2 x ~@4 x ~@4", R: "~@8 x ~@6 x",
S: "x ~@7 x ~@6 x", T: "x ~ x ~@5 x ~@6 x", U: "x ~@7 x ~ x ~@4 x", V: "~@7 x!2 ~@6 x", W: "~@2 x ~@4 x ~ x!2 ~@5",
X: "x!2 ~@3 x ~@2", Y: "x ~@6 x ~ x ~ x ~@4",
})).gain(0.56)
// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@28 A ~@14 B ~ B ~@8 C@5 D C@5 B C@3 D C ~ C D C@3 B ~>".pickRestart({
A: "~@5 x ~@2", B: "~ x ~@6", C: "~@2 x ~@6 x!2 ~@5", D: "~@2 x ~@6 x!3 ~@4",
})).gain(0.32)
// drums · rim
const rim = s("rim").struct("<~@17 [~ x ~ x]!8 ~@54>").gain(0.72)
// drums · snare
const snare = s("sd").struct("<~@2 A B C A@12 ~@8 A@15 B C A@29 D A@5 B ~>".pickRestart({
A: "~ x ~ x", B: "~ x ~@2", C: "~@3 x", D: "~@4 x ~@4 x ~@6",
})).gain(0.64)
// drums · low tom
const low_tom = s("lt").struct("<~@16 A ~@7 B ~@7 C ~@3 C ~@4 D ~@7 E ~@3 F ~@11 C ~@5 C ~@7>".pickRestart({
A: "~@13 x ~@2", B: "~@13 x!2 ~", C: "~@7 x", D: "x!8 ~@8", E: "~@3 x ~@4", F: "~@7 x ~@5 x!2 ~",
// … 109 more lines
More by Michele Zarrillo
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.