0:00/0:00
// Hasta Ayer — Marc Anthony
// 100 bpm, 4/4, key C minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 5 tuba (copy of ch 4 trombone)
// note: Full arrangement: all 117 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(100/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 · acoustic bass
const bass = note(`<
~@11 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@2
AU AV AW AX AY AZ BA BB BC BD BC BD BC BD BC BD BC BD BC BD BC BD BC BD BC BD BC BD BC BD BC BD BC BD BC BD BC BD BC
BD BC BD BC BD BC BD BC BD BC BD BC BD BC BD BE ~@4
>`.pickRestart({
A: "c2@3 ~ g2 ~ g2 ~", B: "c2@7 ~ g2@2 ~@2 g2@2 ~@2", C: "c2@7 ~ g2@3 ~ bb2@3 ~", D: "f2@7 ~ c2@3 ~ d2@3 ~",
E: "f2@7 ~ c3@7 ~", F: "f2@4 c3@3 ~", G: "ab1@8 ab1@7 ~", H: "~ g1@7 d2@4 g1@3 ~", I: "ab1@7 ~ ab1@6 ~@2",
J: "g1@8 d2@7 ~", K: "~@4 f1 ~ ab1@2", L: "g1@2 ~@2 g1@2 g1 ~", M: "c2@4 g2@2 c2 ~",
N: "f2@2 f2@3 ~@3 bb1@2 bb1@2 f2@3 ~", O: "eb2@5 ~@3 bb2@3 ~ eb2@2 ~@2", P: "eb2@7 ~ ab1@4 c2@3 ~",
Q: "g1@10 ~@2 c2@3 ~", R: "f2@5 ~ f2 ~ bb1@4 ~@2 bb1@2", S: "c2@6 ~@2 g2@3 ~ c2@2 a1 ~",
T: "g1@5 ~ d2 ~ g2@3 ~@3 g1 ~, ~@12 g2@3 ~, ~@13 d2@3", U: "c2@3 ~ c2@2 c2 ~ bb1@2 bb1 ~ ab1@2 ab1 ~",
V: "g1@6 ~@2 d2@3 ~ g1@2 a1 ~", W: "c2@5 ~ c2@2 c2@3 ~ g2@3 ~", X: "f2@4 ~@2 f2 ~ bb1@4 ~@2 bb1@2",
Y: "eb2@5 ~ eb2@2 eb2@3 ~ eb2@2 ~@2", Z: "g1@4 ~@2 d2 ~ g2@3 ~ f2@2 d2 ~", AA: "c2@3 ~ c2@2 c2 ~ bb1@3 ~ ab1@2 ~@2",
AB: "g1@5 ~@3 d2@3 ~ g1@2 ~@2", AC: "c2", AD: "f2@3 ~ g2@2 ~@2 c2 ~@7", AE: "~@4 c3 a2 gb2 ~ c2@7 ~",
AF: "g2@3 ~ g1@2 a1@2 c2@7 ~", AG: "g2@4 c2@3 ~ f2@5 ~@3", AH: "f2@3 ~ c2@2 d2 ~ f2@5 ~ bb1 ~",
AI: "f2@4 d2@2 b1 ~ f2@7 ~", AJ: "c3@4 f2 ~ f1 g1 ab1@7 ~", AK: "eb2@4 ab1@3 ~ g1@8",
AL: "db2@4 d2 ~@3 ab1@7 ~, ~ g2 ~@2, ~@5 d2@10 ~", AM: "ab1@3 ~ g1@4", AN: "d2@7 ~@9", AO: "f1 ~ ab1@2 g1@2 ~@2",
AP: "g1@2 g1 ~ c2@4", AQ: "g2@4 c2@2 ~@2 f2@2 f2@3 ~@3", AR: "bb1@2 bb1@2 f2@3 ~ eb2@5 ~@3",
AS: "bb2@3 ~ eb2@2 ~@2 eb2@7 ~", AT: "[ab1@4 c2@3 ~ g1@10 ~@2 c2@3 ~ f2@5 ~ f2 ~]/2", AU: "bb1@2 ~ bb1 eb2@3 ~",
AV: "g2@3 ~ c2@2 a1 ~ g1@5 ~ d2 ~", AW: "g2@3 ~@3 g1 ~ c2@3 ~ c2@2 c2 ~, ~@4 g2@3 ~@9, ~@5 d2@3 ~@8",
AX: "bb1@2 bb1 ~ ab1@2 ab1 ~ g1@6 ~@2", AY: "d2@3 ~ g1@2 a1 ~ c2@5 ~ c2@2", AZ: "c2@3 ~ g2@3 ~ f2@4 ~@2 f2 ~",
BA: "bb1@4 ~@2 bb1@2 eb2@5 ~ eb2@2", BB: "eb2@3 ~ eb2@2 ~@2 g1@4 ~@2 d2 ~", BC: "g2@3 ~ f2@2 d2 ~ c2@3 ~ c2@2 c2 ~",
BD: "bb1@3 ~ ab1@2 ~@2 g1@5 ~@3", BE: "g2@3 ~ f2@2 d2 ~@9",
})).s("gm_acoustic_bass").gain(0.4)
// chords · trumpet
const trumpet = note("<~@40 A B@2 C D E F G H ~@18 I J@6 K@2 ~@36 L ~@4>".pickRestart({
A: "~@7 g4", B: "[c5 ~ d5@2 eb5@2 f5@2 g5@17 ~ gb5@3 g5@2 ~]/2", C: "g5@5 g5@2 g5@6 ~ f5@2, ~@14 d5 ~",
D: "f5@10 ~@3 c5 d5 ~", E: "eb5@5 g5 ~ f5 g5@8", F: "f5@9 ~@5 g5 f5", G: "~@9 f5 ~ g5 f5 [d5,eb5] c5 d5, ~ d5@12 ~@3",
H: "d5@7 ~@9", I: "~@8 c5 [c5,d5] d5 db5 [eb5,g5] ~ c5 d5",
J: "[c5 d5 eb5 ~ c5 d5 eb5 [c5,f5] [eb4,d5] ~@15 c5 [c5,d5] d5 db5 [eb5,g5] ~ c5 d5, ~@8 bb3@21 ~@3, ~@4 g5 ~@11]/2", // F5 Ebmaj7 Csus2 Eb
K: "[c5 d5 eb5 ~ c5 d5 eb5 [c5,f5] [eb4,d5] ~@23, ~@8 bb3@21 ~@3, ~@4 g5 ~@11]/2", L: "~@4 c5@2 ~ g4 ~@8, ~@3 c5 ~@4",
})).s("gm_trumpet").gain(0.8)
// chords · trumpet · soft notes
const trumpet_soft = note("<~@68 A ~ A ~ A ~ A ~@42>".pickRestart({
A: "~ e5 ~@14",
})).s("gm_trumpet").gain(0.32)
// chords · trombone
const trombone = note(`<
~@66 A B C D E F G F H I ~@5 J K F K F K F K F K F K F K F K F K F K F K F K F K F K F K F L ~@4
>`.pickRestart({
A: "~@3 [c4,g4]", B: "[bb3,f4]@3 ~ [ab3,eb4]@4 g3@2 g4 ~ c4 ~ d4@2, ~@4 d4@3 ~", C: "f4!2 c4!2 ~@2 g4@2, ~@5 c4@2 ~",
D: "[bb3,f4]@4 [ab3,eb4]@4 g3@2 g4@2 c4 ~ d4@2, ~@4 d4@3 ~", E: "f4@3 ~ c4@2 c4@2 ~@4 [c4,g4]@4",
F: "[bb3,f4]@2 [ab3,eb4]@2 g3 g4 c4 d4, ~@4 d4@3 ~", G: "f4@2 f4 ~ c4@2 c4@2 ~@4 g4@3 ~, ~@10 c4@5 ~",
H: "f4@3 ~ c4@2 c4@3 ~@3 [c4,g4]@4", I: "f4 ~@3", J: "~@5 g4 c4 d4", K: "f4@3 ~ c4@2 c4@2 ~@4 g4@3 ~, ~@10 c4@5 ~",
L: "f4@3 ~ c4@2 c4@2 ~@8",
})).s("gm_trombone").gain(0.8)
// chords · brass section
const brass_section = note("<~@81 A B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C D ~@4>".pickRestart({
A: "~@5 g4 c4 d4", B: "f4@3 ~ c4@2 c4@2 ~@4 g4@3 ~, ~@10 c4@5 ~", C: "[bb3,f4]@2 [ab3,eb4]@2 g3 g4 c4 d4, ~@4 d4@3 ~",
D: "f4@3 ~ c4@2 c4@2 ~@8",
})).s("gm_brass_section").gain(0.32)
// chords · electric guitar jazz
const electric_guitar_jazz = note(`<
A@3 B C D E D F@2 G H@3 I E I J@2 K L M N@2 O P Q R S T U V W X Y Z AA AB AC AD AE@3 AF AG AH AI AJ AK AL AM AN AO@2
AP AQ AR AS AT@2 AU AV AW@2 AX@3 AY@2 AZ@2 BA@8 BB@2 BA@2 AY@6 BC@2 AY@2 BD@2 AY@12 BE@2 AY@2 BF@2 ~@4
>`.pickRestart({
A: "[eb3,g3,c4]!2 ~@2 [eb3,g3,c4]!2 ~@2", B: "[eb3,g3,c4]@2 [eb3,g3,c4]@2 ~@4 [eb3,g3] ~ [eb3,g3,c4]@2 ~@4",
C: "[e3,g3,c4]@2 [g3,c4]@2 ~@4 [g3,c4]@5 ~@3, ~@7 e3@6 ~@3", D: "[f3,ab3,c4]!2 ~@2 [f3,ab3,c4]!2 ~ f2",
E: "[f3,ab3,c4]!2 ~@2 [f3,ab3,c4]!2 ~@2, ~@3 f2@2 ~@3", // Fm
F: "[[f2,ab2,c3,eb3,ab3,c4]@2 c3@2 f2 ~@3 [f2,ab2,c3,f3,ab3,c4]@2 [ab2,ab3]@4 f1@2 [f3,g3,d4]@6 ~@2 [eb3,ab3,c4]@2 [ab2,eb3,ab3,c4]@4 ~@2, ~ [ab2,eb3,ab3,c4]@3 ~ c4@5 ~@6, ~@2 f2 ~@7 [f2,c3]@2 ~@20]/2", // Fm7 Fm Ab G7 Ab F5
G: "[f3,g3,d4] [g3,d4]@5 ~@2, ~@2 f3 ~@13", // G7 G5
H: "[[eb3,g3,c4]@2 [eb3,g3,c4]@2 ~@4 [eb3,g3,c4]@2 [eb3,g3,c4]@2 ~@4 [eb3,g3,c4]@2 [eb3,g3,c4]@2 ~@4 [eb3,g3] ~ [eb3,g3,c4]@2 ~@4 [e3,g3,c4]@2 [g3,c4]@2 ~@4 [g3,c4]@5 ~@3, ~@6 c2@6 ~@2 c2@6 ~@10 c2@4 ~@5 e3@6 ~@3]/3", // Cm Eb Cm C C5
I: "[f3,ab3,c4]@2 [f3,ab3,c4]@2 [e3,f3,g3] ~@3 [f3,ab3,c4]@2 [f3,ab3,c4]@2 ~@2 f2@2", // Fm Em Fm
J: "[[f2,ab2,c3,eb3,ab3,c4]@2 [ab2,ab3,c4]@6 [f2,ab2,c3,ab3,c4]@2 [ab2,ab3]@5 ~@2 g2 [f3,g3]@4 ~@2 [f3,g3,d4]@2 [g2,f3,g3,d4]@2 ~@4, ~ eb3@4 c4@5 ~@6, ~ c3 ~@6 [f3,g3,d4] ~@7, ~@2 f2 ~@7 [f2,c3]@2 ~@6 [g2,d4]@2 ~@12]/2", // Fm7 Ab Fm Ab Fsus2 G7 F5 G5
K: "[ab2,eb3,ab3,c4]@2 [ab2,eb3,ab3,c4]@2 ~@5 ab2 [c3,eb3,ab3,c4]@2 ~@4, ~@4 [eb3,ab3,c4] ~@3", // Ab
L: "[g2,f3,g3,d4]!2 ~@2 [f3,g3,d4] [g2,f3,g3,d4] ~@2", M: "[ab2,eb3,ab3,c4]!2 ~@2 [ab2,eb3,ab3,c4]!2 ~@2",
N: "[[g2,g3,d4] ~ [f3,g3,d4]@2 ~@4 [g2,f3,g3,d4]@2 [g2,f3,g3,d4]@2 ~@4 [g3,c4]@12 ~@4, ~@15 c2@14 ~@3, ~@15 e3@12 ~@5]/2", // G5 G7 C5
O: "[f2,f3,ab3,c4] [f3,ab3,c4] ~@2 [bb2,f3,ab3,d4] [f3,ab3,d4] ~@2, ~@5 bb2@2 ~", // Fm Bb7 Ddim
P: "[g3,bb3,eb4] [eb2,g3,bb3,eb4] ~ eb2 [g3,bb3,eb4] [eb2,g3,bb3,eb4] ~@2", // Eb
Q: "[ab2,eb3,ab3,c4]!2 ~@2 [ab2,eb3,ab3,c4] [eb3,ab3,c4] ~@2", R: "[g2,f3,g3,d4]@3 ~@2 [e3,g3,c4]@2 ~",
S: "f3@2 f3 ~@2 [ab3,c4] ~@2, [f2,ab3,c4]@3 ~ bb2@2 ~@2", // Ab Fm
T: "~@8 [eb3,g3,c4] ~ [c2,eb3,g3,c4]@2 ~@4, eb2@3 c3@3 ~@2, ~ [eb3,g3,bb3,eb4]@3 ~@4", // Cm Eb
U: "[g2,f3,g3,d4]!2 ~ d2 [d2,f3,g3,d4] [f3,g3,d4]@2 ~, ~@5 [d2,g2] ~@2", // G7 G5
V: "[eb3,g3,c4]@2 [eb3,g3,c4] ~ [eb4,g4]@2 [bb3,eb4,g4] ~ [bb3,d4,f4]@2 [bb2,bb3,d4,f4] ~ [ab3,c4,eb4]@2 [ab3,c4,eb4] ~, c2 ~@3", // Cm Eb Bb Ab
W: "[g2,g3,b3,d4]@4 d3@2 ~@5 g3 ~@2 [d2,f3,g3,d4]@2, ~@5 [f3,d4,eb4] ~@2", // G G7 Dm
X: "~@5 [g3,c4]@2 ~, c2@3 [g2,c3]@4 ~, ~@2 [eb3,g3,c4]@3 ~@3", // C5 Cm
Y: "~@4 c4@2 f2 ~ bb2@2 [ab3,c4]@2 [c2,f2] ~ [f2,bb2]@2, [f2,eb3,ab3]@6 ~@4 [c3,eb3] ~@5", // Ab F5 Bb5 Fm7 Cm
Z: "g2 ~@9 [eb3,g3]@2 [eb3,g3]@2 bb2 ~, eb2@6 g2@7 ~@3, ~@4 [eb3,g3,bb3]@6 c4@5 ~, ~@4 c2@3 ~", // Eb
AA: "[g2,g3,d4]@2 [f3,g3,d4]@2 ~@4 [f3,g3,d4]@2 [d2,b2,f3,g3,d4]@2 ~@2 [d2,f3,g3,d4] ~, ~@3 d2@2 ~@3", // G5 G7
AB: "[c2,g3,c4]@2 [eb3,g3,c4] ~ [eb4,g4]@2 [c3,bb3,eb4,g4] ~ [bb2,bb3,d4,f4]@2 [bb3,d4] ~ [ab2,ab3,c4]@2 [ab3,c4] ~", // C5 Cm Eb Cm7 Bb Ab
AC: "~@4 d3@2 f2 ~ g2@2 ~@4 d2 ~, [g2,g3,b3]@3 b3@2 [f3,g3,d4]@2 ~, ~@3 b2", // G G7
AD: "~@8 g3@2 [g3,c4]@3 ~@3, c2, ~@6 eb3@7 ~@3", // C5
AE: "[[f2,f3,a3]@2 ~@2 [g2,f3,g3,d4]@2 ~@2 [c2,eb3,g3,c4]@17 ~@11 bb3@4 ~@4 eb4@2 ~@2, ~@8 g2 ~@18 bb3@9 ~@4 c3@7 ~, ~@28 eb4@5 ~ eb4@5 ~@9, ~@15 g4@4 ~@5]/3", // F G7 Cm
AF: "[bb3,eb4,g4] ~ [c3,bb3,eb4,g4]@2 ~@2 [bb3,eb4,g4] ~ [g3,c4]@4 ~@4", // Eb Cm7 Eb C5
AG: "[ab3,c4,f4]@2 [f2,ab3,c4,f4] ~@3 f2@2 [ab3,c4,f4] ~ [ab3,c4,f4] ~@5", // Fm
AH: "[c3,ab3,c4,f4]!2 ~@2 [c3,ab3,c4,f4]!2 ~@2", // Fm
AI: "[ab3,c4,f4] [f2,ab3,c4,f4] ~@2 [ab2,eb3,ab3,c4] [eb3,ab3,c4] ~@2", // Fm Ab
AJ: "[ab2,eb3,ab3,c4] [eb3,ab3,c4]@2 ~ [g2,f3,g3,d4] [g2,f3,gb3,g3,d4] ~ g2, ~ ab2 ~@6", // Ab G7
AK: "[g2,f3,g3,d4]!2 ~@2 [ab3,c4] [ab2,eb3,ab3,c4] ~@2", // G7 Ab
AL: "~ ab2 [c3,eb3,ab3,c4]@2 ~@4 [g2,f3,g3,d4]@2 [g2,f3,g3,d4]@2 ~@4, [eb3,ab3,c4] ~@7", // Ab G7 Ab
AM: "[f3,g3,d4] [g2,f3,g3,d4] ~@2 [ab2,eb3,ab3,c4]!2 ~@2", AN: "[ab2,eb3,ab3,c4]!2 ~@2 [g2,f3,g3,d4] [f3,g3,d4] ~@2",
AO: "[[g2,f3,g3,d4]!2 ~@2 [g3,c4]@6 ~@2 [f2,f3,ab3,c4] [f3,ab3,c4] ~@2, ~@7 c2@14 ~@11, ~@7 e3@12 ~@13]/2", // G7 C5 Fm
AP: "[bb2,f3,ab3,d4] [f3,ab3,d4] ~@2 [g3,bb3,eb4] [eb2,g3,bb3,eb4] ~ eb2, ~ bb2@2 ~@5", // Bb7 Ddim Eb
AQ: "[g3,bb3,eb4] [eb2,g3,bb3,eb4] ~@2 [ab2,eb3,ab3,c4]!2 ~@2", // Eb Ab
AR: "[ab2,eb3,ab3,c4] [eb3,ab3,c4] ~@2 [g2,f3,g3,d4]@3 ~", AS: "~ [e3,g3,c4]@2 ~ f3@2 f3 ~, ~@4 [f2,ab3,c4]@3 ~",
AT: "[~@2 [d3,f3,ab3,c4]@2 ~@12 [eb3,g3,c4] ~ [c2,eb3,g3,c4]@2 ~@4 [g2,f3,g3,d4]@2 [g2,f3,g3,d4]@2 ~@2 d2@2, bb2@2 ~@2 eb2@3 c3@3 ~@6, ~@5 [g3,bb3,eb4]@3 ~@8]/2", // Dm7b5 Cm G7 Eb
AU: "[d2,f3,g3,d4]@2 [f3,g3,d4]@4 ~@2 [eb3,g3,c4]@2 [eb3,g3,c4] ~ [eb4,g4]@2 [bb3,eb4,g4] ~, ~ [d2,g2] ~@2 c2@2 ~@2", // G7 Cm Eb G5
AV: "[bb3,d4,f4]@2 [bb2,bb3,d4,f4] ~ [ab3,c4,eb4]@2 [ab3,c4,eb4] ~ [g2,g3,b3,d4]@4 d3@2 ~@2", // Bb Ab G
AW: "[~@3 g3 ~@2 [d2,f3,g3,d4]@2 ~@10 [g3,c4]@4 ~@6 c4@2 f2 ~, ~ [f3,d4,eb4] ~@2 c2@3 [g2,c3]@4 ~ [f2,eb3,ab3]@3 ~, ~@6 [eb3,g3,c4]@3 ~@7]/2", // G7 C5 Dm C5 Fm7 Cm
AX: "[bb2@2 [ab3,c4]@2 [c2,f2] ~ [f2,bb2]@2 f2 ~@9 [eb3,g3]@2 [eb3,g3]@2 bb2 ~ [g2,g3,d4]@2 [f3,g3,d4]@2 ~@4 [f3,g3,d4]@2 [d2,b2,f3,g3,d4]@2 ~@2 [d2,f3,g3,d4] ~ [c2,g3,c4]@2 [eb3,g3,c4] ~ [eb4,g4]@2 [c3,bb3,eb4,g4] ~, ~@2 [c3,eb3] ~@5 eb2@6 g2@7 ~@27, ~@12 [eb3,g3,eb4]@6 c4@5 ~@25, ~@8 c2@3 ~@4 d2@2 ~@7]/3", // Ab F5 Bb5 Eb G5 G7 C5 Cm …
AY: "[[bb2,bb3,d4,f4]@2 [bb3,d4] ~ [ab2,ab3,c4]@2 [ab3,c4] ~@5 d3@2 f2 ~ [g2,f3]@2 [d2,b2,f3,g3,d4]@2 ~@2 [d2,f3,g3,d4] ~ [c2,g3,c4]@2 [eb3,g3,c4] ~ [eb4,g4]@2 [c3,bb3,eb4,g4] ~, ~@4 [g2,g3,b3]@3 bb3@2 ~@7]/2", // Bb Ab G7 C5 Cm Eb Cm7 G
AZ: "[[bb2,bb3,d4,f4]@2 [bb3,d4] ~ [ab2,ab3,c4]@2 [ab3,c4] ~@5 d3@2 f2 ~ [g2,f3]@2 [d2,b2,f3,g3,d4]@2 ~@2 [d2,f3,g3,d4] ~ [c2,g2,g3,c4]@2 [eb3,g3,c4] ~ [eb4,g4]@2 [c3,bb3,eb4,g4] ~, ~@4 [g2,g3,b3]@3 bb3@2 ~@7]/2", // Bb Ab G7 C5 Cm Eb Cm7 G
BA: "[[bb2,bb3,d4,f4]@2 [bb3,d4] ~ [ab2,ab3,c4]@2 [ab3,c4] ~@5 d3@2 f2 ~@3 [d2,b2,f3,g3,d4]@2 ~@2 [d2,f3,g3,d4] ~ [c2,g3,c4]@2 [eb3,g3,c4] ~ [eb4,g4]@2 [c3,bb3,eb4,g4] ~, ~@8 [g2,g3,b3]@6 bb3@3 g2@3 ~@12, ~@8 [g2,f3] ~@7]/2", // Bb Ab G7 C5 Cm Eb Cm7 G …
BB: "[[bb2,bb3,d4,f4]@2 [bb3,d4] ~ [ab2,ab3,c4]@2 [ab3,c4] ~ d3@4 d3@2 f2 ~@3 [d2,b2,f3,g3,d4]@2 ~@2 [d2,f3,g3,d4] ~ [c2,g3,c4]@2 [eb3,g3,c4] ~ [eb4,g4]@2 [c3,bb3,eb4,g4] ~, ~@8 [g2,g3,b3]@6 bb3@3 g2@3 ~@12, ~@8 [g2,f3] ~@7]/2", // Bb Ab G7 C5 Cm Eb Cm7 G …
BC: "[[bb2,bb3,d4,f4]@2 [bb3,d4] ~ [ab2,ab3,c4]@2 [ab3,c4] ~@5 d3@2 f2 ~ [g2,f3]@2 [d2,b2,f3,g3,d4]@2 ~@2 [d2,f3,g3,d4] ~ [c2,g3,c4]@2 [eb3,g3,c4] ~ [eb4,g4]@2 [c3,bb3,eb4,g4] gb4, ~@4 [g2,g3,b3]@3 bb3@2 ~@7]/2", // Bb Ab G7 C5 Cm Eb Cm7 G
BD: "[[bb2,bb3,d4,f4]@2 [bb3,d4] ~ [ab2,ab3,c4]@2 [ab3,c4] ~@5 d3@2 f2 ~ [g2,f3]@2 [d2,b2,f3,g3,d4]@2 ~@2 [d2,f3,g3,d4] ~ [c2,g3,c4]@2 [eb3,g3,c4] ~ [eb4,g4]@2 [c3,bb3,d4,eb4,g4] ~, ~@4 [g2,g3,b3]@3 bb3@2 ~@7]/2", // Bb Ab G7 C5 Cm Eb Cm7 G
BE: "[[bb2,bb3,d4,f4]@2 [bb3,d4] ~ [ab2,ab3,c4]@2 [ab3,c4] b3 ~@4 d3@2 f2 ~ [g2,f3]@2 [d2,b2,f3,g3,d4]@2 ~@2 [d2,f3,g3,d4] ~ [c2,g3,c4]@2 [eb3,g3,c4] ~ [eb4,g4]@2 [c3,bb3,eb4,g4] ~, ~@4 [g2,g3,b3]@3 bb3@2 ~@7]/2", // Bb Ab G7 C5 Cm Eb Cm7 G
BF: "[[bb2,bb3,d4,f4]@2 [bb3,d4] ~ [ab2,ab3,c4]@2 [ab3,c4] ~@5 d3@2 f2 ~ g2@3 ~ [eb4,g4,c5] ~ [eb4,g4,c5]@2 ~@8, ~@4 [g2,g3,b3]@3 bb3@2 ~@7]/2", // Bb Ab Cm G
})).s("gm_electric_guitar_jazz").gain(0.46)
// chords · electric guitar jazz · soft notes
const electric_guitar_jazz_2 = note(`<
A ~@2 B C D ~ D E@2 F ~ G C H ~ H I@2 J K L M ~ N O P ~ Q R S T U ~ V W ~ X ~@2 Y ~ Z AA AB AC AD ~@2 AE AF AG AH AI
AJ AK AL AM ~ AN AO AP AQ ~ AR@2 AS AT AU AT AV AT AS AT AS AT AS AT AS AW AS AT AS AT AU AT AU AT AU AT AU AT AU AT
AU AT AX AT AU AT AU AT AU AT AU AT AU AT AU AT AU AT ~@5
>`.pickRestart({
A: "c2 ~@7", B: "~@8 c4 ~@7", C: "~ e3 ~@6", D: "f2!2 ~ f2@2 f2 ~@2",
E: "[f1@2 f1@2 ~@3 eb3@3 f1@2 ~@4 b2 ~@7 [g2,ab2]@2 ~@6, ~@3 f1@2 eb3@5 ~@6]/2", F: "g2 ~@7",
G: "~@8 c4 ~@7, ~@3 c2@2 ~@3", H: "f2@2 f2@2 ab3 ~ f2@4 f2@2 ~@4",
I: "[f1@2 f1@2 ~@2 f1@4 eb3@10 ~@7 b2@2 ~@3, ~@5 f1 ~@10]/2", J: "~@5 ab2 ~@2", K: "b2 ~@3", L: "c3!2 ~@2 c3!2 ~@2",
M: "~ g2 ~@3 b2 ~@2", N: "~ f2 ~@6", O: "[eb2,bb2] ~@4 bb2 ~@2", P: "~ c3@3 ~@6 [ab2,c3]@2 ~@4, c3 ~@7, ~ db3 ~@14",
Q: "~@3 f2 ~@4", R: "~@8 c2 ~ g2@2 ~@4", S: "~ b2 ~@2 g2 ~@3", T: "~@6 c3 ~ bb2@2 ~@2 ab2@2 ab2 ~",
U: "~@6 f2 ~ g2@4 g3 ~@3", V: "~@11 d3@2 ~@3", W: "~@6 c3@7 ~@3", X: "g2@2 c2 ~ c3@2 ~@4 bb2 ~@3 ab2 ~", Y: "c3 ~@7",
Z: "~@6 c3@2 ~@2 bb3@5 ~", AA: "~@2 eb3 ~", AB: "f2@2 c3 ~@5 c3 ~ f2 ~@5", AC: "~ eb3 ~@6",
AD: "~@2 c3@2 ~@6 [ab2,c3]@2 ~@2 f2 ~", AE: "~ ab2 ~@2 b2@2 ~@2", AF: "~@4 c3!2 ~@2", AG: "c3!2 ~@3 g2 ~@2",
AH: "~ b2 ~@6", AI: "~@5 f2 ~@2", AJ: "~@4 [eb2,bb2] ~@3", AK: "~@2 bb2@2 ~@5 c3@3 ~@4, ~@4 c3 ~@3, ~@9 db3 ~@6",
AL: "~ [ab2,c3] ~@6", AM: "~@7 f2", AN: "c2 ~ g2@2 ~@12", AO: "g2@2 ~@12 c3 ~", AP: "bb2@2 ~@2 ab2@2 ab2 ~@7 f2 ~",
AQ: "g2@4 g3 ~@11", AR: "[~@3 d3@2 ~@9 c3@7 ~@11]/2", AS: "~@8 g2@2 c2 ~ c3@2 ~@2", AT: "~@2 bb2 ~@3 ab2 ~ d3@4 ~@4",
AU: "~ g2@3 ~@4 g2@2 c2 ~ c3@2 ~@2", AV: "~ g2@3 ~@6 c2 ~ c3@2 ~@2", AW: "~@2 bb2 ~@3 ab2 ~@9",
AX: "~ g2@3 ~@3 c4 g2@2 c2 ~ c3@2 ~@2",
})).s("gm_electric_guitar_jazz").gain(0.2)
// chords · piano
const piano = note(`<
~ A@3 B C D E@2 ~@2 F ~ G H I E@2 ~@2 J K L M ~ N ~ O@3 ~ P Q R S T U V W@3 X@8 Y@4 Z AA@2 AB@4 AC AD@2 ~ AE@2 AF AG
AF AG AF AG AF AG AF AG AF AG AF AG AF AG AF AG AF AG AF AG AF AG AF AG AF AG AF AG AF AG AF AG AF AG AF AG AF AG AF
AG AF AG AF AG ~@5
>`.pickRestart({
A: "[~@8 c3@5 ~@11, ~@7 c2@14 ~@3, ~@15 [eb3,c4]@23 ~@10, ~@5 g3 ~@10]/3", // Cm
B: "~ c4, a1@7 ~, ~ g2@6 ~, ~@4 c3@11 ~, ~@3 g3@4 ~", C: "~@3 g3, ~@10 f3@5 ~", D: "ab3 ab3@13 ~@2, f3@7 ~",
E: "[~@10 g3@2 ~@2 f2 g2 ab2@15 ~, ~@8 f3@13 ~@11, ~@12 ab3@9 ~@11]/2", F: "c3@5 ~@3",
G: "~@10 g4@5 ~, ~@6 g3@9 ~, ~ c4", H: "~@12 g3@3 ab3, ~@10 f3@5 ~", I: "~ ab3@13 ~@2, f3@7 ~",
J: "~@10 ab3 ~ f3@3 ~, ~@2 f3@9 ~@5, ~@4 b3@5 ~ b3@6, ~@3 d4@4 ~", K: "c4@13 ~@3",
L: "~@6 d4@7 ~@3, ~ f3@5 ~@2, ~@4 b3@9 ~@3", M: "~@9 bb3@5 ~@2, ~@4 e3@3 ~",
N: "~@8 g3@5 ~@3, ~@2 eb4@11 ~@3, ~@6 bb3@7 ~@3", O: "[~@3 f3 g3@19 ~, ~@2 d4@13 ~@33, ~ g3 ~@10]/3",
P: "~@5 [c4,eb4,g4]@3 ~ bb3@3 [ab3,c4,eb4]@4, ~@2 [d4,f4] ~", // Cm Ab Dm
Q: "~@4 d5@3 d5, [g3,b3,d4]@3 d3@3 ~@2, ~@2 f2@11 ~@3, ~ g5 eb5@2 ~@4, ~@2 g2@5 ~", R: "[g2,c3]@7 ~@9, eb5@9 ~@7",
S: "~@10 d4@3 ~@3", T: "~@3 eb4@3 ~@2, ~ g3@5 ~@2, ~@4 bb3@7 ~@5", U: "[g3,d4]@3 ~@5", V: "~ c4 bb3 ab3",
W: "[g3@9 ~ c4@2 d4@2 eb4@4 [c3,eb3,g3]@12 ~@18, ~@3 c5@3 ~@2]/3", // Cm
X: "[~@22 eb3@2 ~@6 bb3 ~@7 g3@2 ~@12 eb3@2 c3@2 ~@10 c4@2 ~@10 f4@2 g4@4 f4@3 ~@9 c4@4 ~@2 ab2 ~@3 g3 ~@3 d4@4 f3@2 ~@2 f3@2 ~@8, ~@4 c2@8 c2@19 c4 c3@2 ~@12 eb3@4 eb3@3 ~@11, ~@12 g3@7 ~ g3@4 ~@2 eb3@8 ~@2 e3@4 f2@16 f2@15 ~ f2@15 ~ ab2@13 ~@3 g2@15 ~@9, ~@14 c4@9 ~@5 g3@10 ~@6 eb3@6 c4@4 ~@6 ab3@8 ~@6 ab3@12 ~@8 ab3@8 ~@14 g3@12, ~@30 c4@9 ~@7 ab3@8 ~@4 eb3@10 ~@8 c4@10 ~@30 d4@4 ~@8]/8",
Y: "[~@18 ab3 ~ f3@3 ~ c4@13 ~@9 d4@7 ~@11, ~@10 f3@9 ~@23 f3@10 ~@12, ~@12 b3@5 ~ b3@6 ~@20 b3@9 ~@11, ~@7 d4@4 ~@21]/4",
Z: "~ bb3@5 ~@10, e3@3 ~@5", AA: "[~@16 g3@5 ~@11, ~@10 eb4@11 ~@11, ~@14 bb3@7 ~@11]/2",
AB: "[~@7 f3 g3@19 ~@5, ~@10 d4@13 ~@41, ~@3 g3 ~@12]/4", AC: "~@13 [c4,eb4,g4]@3",
AD: "[~ bb3@3 [ab3,c4,eb4]@4 ~@8 d5@6 d5@2 [g2,c3,eb5]@8, [d4,f4]@2 ~@2 [g3,b3,d4]@3 d3@3 ~@6, ~@10 f2@11 ~@11, ~@5 g5 eb5@2 ~@8, ~@6 g2@5 ~@5]/2", // Ab Cm Dm G
AE: "[~@2 d4@3 ~@9 eb4@6 ~@4 [g3,d4]@6 ~@2, ~@5 g3@5 ~@6, ~@12 bb3@7 ~@13]/2", AF: "~@3 c4", AG: "bb3 ab3 g3@2",
})).s("gm_piano").gain(0.68)
// chords · piano · soft notes
const piano_soft = note(`<
~@7 A ~@5 B ~@2 A ~@6 C ~@9 D E ~ F ~@2 G ~ H@3 ~ I J K@2 ~@4 L ~@8 M ~ N O ~@51
>`.pickRestart({
A: "~@15 c2", B: "~@15 gb4", C: "~@4 c2@3 ~", D: "eb2@7 ~@9", E: "~@10 [f3,ab3]@3 ~@3", F: "f3@5 ~@11",
G: "~@2 g2@11 ~@3", H: "[~@10 eb3@11 ~ c3@17 ~@9]/3", I: "~@5 b3 ~@10", J: "~@3 c4 ~@4, ~@6 ab3 ~@9",
K: "[~@7 g3@3 ~ b2 ~@4, ~@5 f3@3 ~@8]/2", L: "c2@3 ~@5", M: "~@8 eb2@7 ~", N: "~@2 [f3,ab3]@3 ~@11",
O: "~@8 f3@5 ~@3",
})).s("gm_piano").gain(0.34)
// drums · crash
const crash = s("cr").struct("<~@67 [~ x] ~@35 [~ x] ~@13>").gain(0.8)
// drums · cowbell
const cowbell = s("cb").struct("<~@67 A B@11 C ~@3 D B@11 C B@16 ~@5>".pickRestart({
A: "~@3 x ~@2 x!2", B: "~@2 x!2 ~@2 x!2", C: "~@2 x!2 ~@4", D: "~@6 x!2",
})).gain(0.8)
// drums · bongos
const bongos = s("bongo:4").struct(`<
~@11 A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B C A C A C A C A C A C A C A C A C A C
A@2 B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A D ~@4
>`.pickRestart({
A: "x!2", B: "x!2 ~@6 x ~@7", C: "x ~@7 x!2 ~@6", D: "x!2 ~@14",
})).gain(1.47)
// … 76 more lines
More by Marc Anthony
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.