0:00/0:00
// Someday — Mariah Carey
// 128 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 170 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(128/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(`<
~@2 A@2 B@2 C@2 D@2 E@2 B@2 C@2 D@2 F G H I J K L M N G H I J K L M N G H I J K L M O G P I J K L M F G P Q R K S M O
T P I J U V W X Y Z AA AB AC AD M AE AF AG AH AI AJ AK AL AE AF AG AH AI AJ AK AL AE AF AG AH AI AJ AK AL AE AF AG AH
AI AJ AK AL AE AF AG AH AI AJ AK AL AE AF AG AH AI AJ AK AL AE AF AG AH AI AJ AM AN AE AF AG AH AI AJ AK AL AE AF AG
AH AI AJ AK AL AE AF AG AH AI AJ AK AL AE AF AG AH AI AJ AK AL AE AF AG AH AI AJ AK ~
>`.pickRestart({
A: "e2/2", B: "[a1@7 a1]/2", C: "[d2@7 d2]/2", D: "[c2@7 ~]/2", E: "[e2@15 e2]/2",
F: "e1@3 ~ e1@2 ~@2 e1@2 d1@2 e1@2 g1@2", G: "e1 ~ e1@2 ~@4 e1@2 d1@2 e1@2 g1@2", H: "a1 ~ a1 ~ a1 g1 a1 c2",
I: "a1!2 ~@2 a1 g1 c2 a1", J: "d2 ~ d2 ~ d2 a1 c2 d2", K: "~ d2 ~ d2 ~ d2 ~ d2", L: "g2 ~ g2 ~ g2 g1 a1 c2",
M: "~ g1 a1 c2 ~ a1 c2 d2", N: "e1 ~ e1 ~ e1 d1 e1 g1", O: "~ e1@6 ~ e1@4 ~@4 e1@4 d1@4 e1@4 g1@4",
P: "~ a1@4 ~@3 a1@4 ~@4 a1@4 g1@4 a1@4 c2@4", Q: "a1@4 a1@4 ~@8 a1@4 ~ g1@3 c2@4 a1@4",
R: "~ d2@4 ~@3 d2@4 ~@4 d2@4 a1@4 c2@4 d2@4", S: "~ g2@4 ~@3 g2@4 ~@4 g2@4 g1@4 a1@4 c2@4",
T: "e1@2 ~@2 e1@4 ~@8 e1@4 ~ d1@3 e1@4 g1@4", U: "~@4 d2@4 ~@5 d2@4 ~@3 d2@4 ~@4 d2@4",
V: "~ g2@4 ~@3 g2@4 ~@4 g2@4 g1@4 ~ a1@3 c2@4", W: "~@4 g1@4 ~ a1@3 c2@4 ~@4 a1@4 c2@4 d2@4",
X: "~ e1@6 ~ e1@4 ~@4 e1@4 ~ d1@4 e1@4 g1@3", Y: "~ e1@2 ~ e1@4 ~@8 e1@4 ~ d1@4 e1@3 g1@4",
Z: "~ a1@4 ~@3 a1@4 ~@4 a1@4 g1@4 a1@4 ~ c2@3", AA: "~ a1@3 a1@4 ~@8 a1@4 ~ g1@3 c2@4 a1@4",
AB: "~ d2@4 ~@3 d2@4 ~@4 d2@4 a1@4 ~ c2@3 d2@4", AC: "~@5 d2@4 ~@4 d2@4 ~@3 d2@4 ~@4 d2@4",
AD: "~ g2@4 ~@3 g2@4 ~@4 g2@4 g1@4 ~ a1@4 c2@3", AE: "~ e1@6 ~@2 e1@4 ~@4 e1@4 d1@4 e1@4 g1@3",
AF: "~ e1@2 ~@2 e1@4 ~@8 e1@4 d1@4 e1@4 g1@3", AG: "~ a1@4 ~@4 a1@4 ~@4 a1@4 g1@4 a1@4 c2@3",
AH: "~ a1@4 a1@4 ~@8 a1@4 g1@4 c2@4 a1@3", AI: "~ d2@4 ~@4 d2@4 ~@4 d2@4 a1@4 c2@4 d2@3",
AJ: "~@5 d2@4 ~@4 d2@4 ~@4 d2@4 ~@4 d2@3", AK: "~ g2@4 ~@4 g2@4 ~@4 g2@4 g1@4 a1@4 c2@3",
AL: "~@5 g1@4 a1@4 c2@4 ~@4 a1@4 c2@4 d2@3", AM: "~ g1@4 ~@4 g1@4 ~@8 g1@4 a1@4 c2@3",
AN: "~@5 g1@4 a1@4 c2@4 g1@4 a1@4 c2@4 d2@3",
})).s("gm_electric_bass_finger").gain(0.35)
// chords · pad warm
const pad_warm = note("<~@2 A@2 B@4 C@4 B@4 C@4 B@4 C@4 B@4 C@4 D@4 E@4 F@4 G@8 H@8 G@96 I@8 J@2>".pickRestart({
A: "[b3,d4]/2", B: "[c4@31 ~ d4@32, a3@63 ~]/4", C: "[e4 d4, b3]/4", D: "[~ d4, c4@31 ~@33, ~ a3@126 ~]/4",
E: "[e4@64 ~ d4@63, b3]/4", F: "[~ c4@62 ~ d4@64, ~ a3@126 ~]/4",
G: "[~ e4@64 d4@64 c4@62 ~@2 d4@63, ~ b3@128 a3@126 ~]/8", H: "[~ e4@64 d4@64 c4@62 ~ d4@64, ~ b3@128 a3@126 ~]/8",
I: "[~@65 d4@64 c4@62 ~@2 d4@63, ~ [b3,e4]@80 ~@48 a3@126 ~]/8", J: "[~ [b3,e4]@58 ~@5]/2",
})).s("gm_pad_warm").gain(0.22)
// other · string ensemble 2
const string_ensemble_2 = note(`<
~@18 A@4 B@2 C@2 ~@32 D@4 B@2 C@2 ~@2 E@8 F@2 G@2 H I ~@8 J@2 F@2 G@2 K I L@6 M@8 J@2 D@4 N@4 D@4 O@4 D@4 N@4 D@4 P@24
Q@4
>`.pickRestart({
A: "[g5@127 ~]/4", B: "f#5/2", C: "e5/2", D: "[~ g5@127]/4", E: "[~ e4@64 a4@64 g4@64 b4@62 ~]/8", F: "[c5@3 e5]/2",
G: "d5/2", H: "e5", I: "g5", J: "[~ b4@62 ~]/2", K: "~ e5@31", L: "[~@9 b5@16 g5@15 ~ a5@14 e5@74 d5@63]/6",
M: "[~ b4@72 b5@16 g5@15 ~ a5@14 e5@74 d5@63]/8", N: "[~ f#5@63 e5@64]/4",
O: "[~ f#5@64 ~@32 g6@31, ~@65 [b3,e5]@63, ~@33 e6@31]/4", P: "[~ f#5@64 e5@64 g5@127]/8",
Q: "[~ f#5@64 e5@58 ~@5]/4",
})).s("gm_string_ensemble_2").gain(0.25)
// chords · percussive organ
const percussive_organ = note(`<
~@18 A@2 B@4 C@2 ~@32 D@2 E@4 F@2 ~@48 G@2 H@4 I@2 G@2 H@4 I@2 G@2 J@4 I@2 G@2 K@4 I@2 G@2 J@4 I@2 L@2 K@4 I@2 M@8
>`.pickRestart({
A: "[[b4,d5,g5]@63 ~]/2", B: "[c5 [d5,f#5], a4@127 ~]/4", C: "[[b4,e5,g5]@63 ~]/2", D: "[~ [b4,d5,g5]@63]/2",
E: "[~ c5@63 ~ [d5,f#5]@63, ~ a4@127]/4", F: "[~ [b4,e5,g5]@63]/2", G: "[~ [b4,d5]@63]/2",
H: "[~ c5@64 d5@63, ~ a4@127]/4", I: "[~ [b4,e5]@63]/2", J: "[~ c5@63 ~ d5@63, ~ a4@127]/4",
K: "[~@2 c5@63 d5@63, ~ a4@127]/4", L: "[~ b4@31, ~ d5@63]/2",
M: "[~@2 [b4,d5]@63 ~ c5@63 d5@64 [b4,e5]@57 ~@6, ~@33 a4@64 ~@31]/8", // Bm E5
})).s("gm_percussive_organ").gain(0.12)
// other · alto sax
const alto_sax = note(`<
~@18 A@2 B@2 C D E@2 ~@32 A@2 B@2 F G H I@2 ~@46 J@2 K L@2 M N O@2 P Q ~ R S ~@2 T@2 U@2 ~@3 V@2 ~ W@2 X ~ Y Z AA AB@2
AC@3 AD AE AF@3 AC@3 AD AG AH AB@2 AC@3 AD AG AI
>`.pickRestart({
A: "[~@4 a4@11 ~]/2", B: "[~@12 e4@2 ~@2 b4@6 c5 b4 a4@40]/2", C: "~@12 a4 ~@3 b4@12 d5@2 ~@2",
D: "a4@11 ~ b4@2 ~@2 d4@12 d4@3 ~", E: "[~ d4@2 e4 ~ e4@51 ~@8]/2", F: "~@12 a4 ~@4 b4@11 d5@2 ~@2",
G: "~ a4@11 b4@2 ~@2 d4@12 ~ d4@3", H: "~ d4@3 e4 ~ e4@26", I: "[g4@4 a4@9 c5@4 b4@7 ~ e4@2 ~@2 e4@12 ~@23]/2",
J: "[~@13 g4@2 ~@2 b4@8 g4@4 e4@19 ~ b3@4 d4@4 e4@3 ~ g4@3]/2", K: "~@5 f#4@8 e4@12 e4@2 d#4 ~ d4@3",
L: "[~@13 e4@4 g4@8 a4@4 c5@6 ~@2 b4@4 a4@4 g4@11 ~ d5@7]/2", M: "~ a4@12 g4@3 ~ a4@10 ~@2 b4@2 ~",
N: "~ f4@2 e4@2 d4@2 ~@2 e4@2 ~@2 d4@10 ~@2 e4@2 ~@5",
O: "[~@5 d4@4 e4@3 ~ g4@3 ~ a4@4 g4@2 ~@6 g5@24 e5 ~@3 b4@2 a4 b4 g4@3]/2", P: "~ e4@31", Q: "~@25 a4@3 ~ g4@2 ~",
R: "~@25 d5@7", S: "~ a4@10 a4 b4 g4@4 a4@4 a4@4 ~@7", T: "[~@13 a4@2 ~@2 b4@7 ~ a4@2 ~@2 g4@10 ~@25]/2",
U: "[~@25 g4 ~@3 g4@12 ~@23]/2", V: "[~ b4@4 d5@2 ~@2 e5@2 ~@2 g5@25 ~@3 a4@4 b4@2 g4@2 a4@4 g4@8 ~@3]/2",
W: "[~@13 e5@8 d5@2 b4@2 d5@2 b4@2 a4 ~ b4@2 ~ a4@8 ~@22]/2", X: "~ g4@12 e4@2 c4@2 a3@3 ~@12",
Y: "~ g4 ~ g4@2 ~@4 g4 ~@3 g4!2 ~@4 g4 ~ g4 ~@3 g4@4 a4@2 ~",
Z: "~ e4 g4@3 ~@2 g4 g4@3 ~@2 g4 g4@3 ~@2 g4 ~ g4@2 ~@2 e4@5 ~ g4",
AA: "b4 g4 ~ g4@2 b4 g4 b4@2 g4 b4@2 ~ b4@19, ~@3 b4 ~@28", AB: "[~@17 a4@44 ~@3]/2",
AC: "[~@13 e4@2 ~@2 b4@6 c5 b4 a4@40 ~@12 a4 ~@3 b4@12 d5@2 ~]/3", AD: "~ a4@11 ~ b4@2 ~@2 d4@12 d4@3",
AE: "~ d4@3 ~ e4 ~ e4@25", AF: "[~ g4@4 a4@8 c5@5 b4@7 e4@2 ~@2 e4@20 a4@44 ~@3]/3", AG: "~@2 d4@3 e4 ~ e4@25",
AH: "~ g4@30 ~", AI: "~ g4@26 ~@5",
})).s("gm_alto_sax").gain(0.35)
// chords · piano
const piano = note(`<
~@2 A@2 B@2 C@2 D E F@4 G@2 H@2 I@2 J K L@2 M@2 ~@16 N O P K Q R M@2 N S T@2 U@2 V@2 W@2 J X Y@2 Z@2 AA AB P AC Q AD
AE@2 AA AF AG@2 AH@2 V@2 AA AI AJ AK Q AL Z@2 AA AM AN@2 AH@2 V@2 AA AO AJ AK Q AL Z@2 AA AP AN@2 AH@2 V@2 AQ@4 AR@2
AS@2 AT AU AV@2 AR@2 AW@2 AA AM AX@2 AH@2 AY@2 AA AM AZ@2 AH@2 BA@2 AA AM BB@2 AH@2 BA@2 AA AM AZ@2 AH@2 BA@2 AA AM
AZ@2 BC@2 BD@2
>`.pickRestart({
A: "[[b3,d4,e4]@42 ~@2 [b3,d4]@7 ~ [b3,e4]@12]/2", B: "[[a3,c4,e4]@41 ~@11 g4@10 ~@2, ~@44 [a3,c4,e4]@19 ~]/2",
C: "[[d4,f#4]@51 ~ [d4,f#4]@12]/2", D: "[b3,e4,g4]@15 b4", E: "g4@2 [b3,e4]@13 ~ g4@8 [b3,e4]@8, ~@16 b3@5 ~@11",
F: "[[b3,d4,e4]@48 ~@4 [b3,g4]@12 [a3,c4]@41 ~@11 g4@10 ~@2, ~@52 e4@24 ~@32 [a3,c4,e4]@19 ~]/4", // E7 Em Am
G: "[[d4,f#4]@51 ~@2 [d4,f#4]@11]/2", H: "[~ [e4,g4,b4]@25 ~@10 g4@28, b3@25 ~@3 [b3,e4]@36]/2",
I: "[[e4,g4]@39 ~ d4 ~@3 [d4,e4,g4]@7 ~ g4@6 ~@2 g4@4, ~@13 [d4,e4]@3]/2", J: "~ e4@27 ~@4, c4@7 ~",
K: "~@12 [e4,g4]@7 ~ [e4,g4]@11 ~", L: "[~ f#4@42 ~ [d4,f#4,a4]@7 ~@2 d4@8 ~@3, d4@42 ~@10 [f#4,a4]@9 ~@3]/2",
M: "[~ [e4,g4,b4]@23 ~@5 b4@13 ~@2 [e4,g4]@7 ~ [e4,g4]@9 ~@3, ~@24 e4@19 ~@21, ~@28 g4@15 ~@21]/2", N: "[e4,g4]@3 ~",
O: "~@8 d4 ~@4 e4@6 ~ [d4,e4,g4,b4]@12, ~@12 [d4,g4,b4]@7 ~@13", P: "~ e4@28 ~@3, c4@7 ~, ~ a4@16 ~@15",
Q: "~ [d4,f#4]@31", R: "~@13 [f#4,a4]@7 ~ [d4,a4]@9 ~@2, ~@12 d4@7 ~ f#4@9 ~@3",
S: "~@8 d4 ~@4 e4@6 ~ [d4,e4,g4,b4]@12, ~@12 [d4,g4,b4]@7 ~@13, ~@13 a3@17 ~@2", // Em7 G
T: "[~ [a3,a4]@18 ~ a3@17 ~@8 g4@6 ~ [a3,e4,g4]@12, c4@7 ~@9, ~ e4@28 ~@15 e4@6 ~@14]/2", // A A7
U: "[~@45 [f#4,a4]@7 ~ [a3,f#4,a4]@11, ~ [d4,f#4]@33 ~@10 d4@7 ~@2 d4@8 ~@3, ~@20 a3@27 ~@17]/2", // F#m D
V: "[~ [e4,g4,b4]@23 ~@5 [g4,b4]@15 ~ [e4,g4]@7 ~ [e4,g4]@9 ~@2, ~@25 e4@18 ~@21]/2", // Em G Em
W: "[~ e4@38 ~@2 d4 ~@3 e4@6 ~ g4@6 ~@2 g4@4, g4@39 ~@5 [d4,g4]@7 ~ [d4,e4]@12]/2", // G5 Dsus2
X: "~@13 e4@6 ~ [e4,g4]@11 ~, ~@12 g4@7 ~@13", // Em
Y: "[~ [d4,f#4]@42 ~@2 [f#4,a4]@7 ~ [d4,f#4,a4]@9 ~@2, ~@44 d4@7 ~@13]/2", // D F#m D
Z: "[~ [e4,g4,b4]@23 ~@5 [g4,b4]@15 ~ [e4,g4]@7 ~ [e4,g4]@9 ~@2, ~@25 e4@19 ~@20]/2", AA: "~ [e4,g4]@24 ~@7",
AB: "~@9 d4 ~@3 [e4,b4]@6 ~@2 g4@10 ~, ~@12 [d4,g4]@7 ~ [d4,e4,b4]@12", AC: "~@13 [e4,g4]@7 [e4,g4]@11 ~",
AD: "~@13 [f#4,a4]@7 ~ [d4,f#4,a4]@9 ~@2, ~@12 d4@7 ~@13", // F#m D
AE: "[~ [e4,g4,b4]@23 ~@5 [g4,b4]@14 ~@2 [e4,g4]@7 ~ [e4,g4]@9 ~@2, ~@25 e4@18 ~@21]/2", // Em G Em
AF: "~@9 d4 ~@3 [d4,e4,g4,b4]@7 ~ [d4,e4,g4]@11, ~@13 a3@17 ~@2, ~@20 b4@11 ~", // Em7
AG: "[~ [a3,a4]@18 ~@2 a3@17 ~@7 [e4,g4]@6 ~@2 [e4,g4]@11, ~ [c4,e4]@28 ~@23 a3@12]/2", // A Em C
AH: "[~@45 [d4,f#4,a4]@7 ~ [a3,f#4,a4]@11, ~ [d4,f#4]@33 ~@19 d4@8 ~@3, ~@21 a3@27 ~@16]/2", // D
AI: "~@9 d4 ~@3 [d4,e4,g4,b4]@7 ~ [d4,e4,g4]@11, ~@20 b4@11 ~", AJ: "~ [c4,e4]@28 ~@3, ~ a4@16 ~@15",
AK: "~@13 [e4,g4]@7 ~ [e4,g4]@11", AL: "~@13 [d4,f#4,a4]@7 ~ [d4,f#4,a4]@9 ~@2",
AM: "~@9 d4 ~@3 [d4,e4,g4,b4]@7 ~ [d4,e4,g4,b4]@11, ~@13 a3@17 ~@2", // Em7
AN: "[~ [a3,a4]@18 ~@2 a3@17 ~@7 [e4,g4]@6 ~@2 [a3,e4,g4]@11, ~ [c4,e4]@28 ~@35]/2", // A Em A7 C
AO: "~@9 d4 ~@3 [d4,e4,g4,b4]@7 ~ [d4,e4,g4,b4]@11", AP: "~@13 [d4,e4,g4,b4]@7 ~ [d4,e4,g4,b4]@11, ~@13 a3@17 ~@2",
AQ: "[~ [e4,b4] ~@3 [e4,g4,b4]@4 ~@4 [e4,g4,b4]@11 ~ [e4,g4] ~@3 [e4,g4]@5 ~@3 [e4,g4]@5 ~@11 [e4,g4,b4]@6 ~@2 [e4,b4]@4 [e4,c5] ~@3 [e4,g4,c5]@5 ~@3 [e4,g4,c5]@11 ~ [e4,g4] ~@3 [e4,g4]@6 ~@6 c5@6 ~@2 [e4,g4,c5] ~@3 [e4,g4,c5]@8 ~@3, ~ g4@2 ~@58 g4@8 ~@32 [e4,g4]@11 ~@16]/4", // E5 Em E5 C Em C Em
AR: "[~ [d4,f#4,a4]@2 ~@2 [d4,f#4,a4]@5 ~@3 [d4,f#4,a4]@11 ~ [d4,f#4,g4]@2 ~@2 [d4,f#4,a4]@5 ~@3 [d4,f#4,a4]@11 ~ [d4,a4] ~@3 [d4,f#4,a4]@8 ~@3, ~@49 f#4@2 ~@13]/2", // D Gmaj7 D D5 D
AS: "[~ [b3,e4,g4]@3 ~ [b3,e4,g4]@5 ~@3 [e4,g4]@12 b3@3 ~ g4@12 ~@4 g4@3 ~@5 [b3,e4,g4]@7 ~@4, ~@13 b3@9 ~@7 e4@11 ~@24, ~@29 b3@8 ~@4 [b3,e4]@7 ~@16]/2", // Em E5
AT: "~ [e4,g4]@2 ~@2 [b3,e4,g4]@3 ~@5 [b3,g4] ~@3 [b3,d4]@3 ~@4 [b3,g4]@2 ~@3 [b3,e4,g4]@3, ~ b3 ~@11 e4@2 ~@2 g4 ~@5 e4@3 ~@6", // Em Bm Em
AU: "~@5 [b3,e4,g4]@3 ~ [b3,g4] ~@3 [b3,e4,g4]@7 ~ [b3,e4,g4]@7 ~@4, ~@9 e4@2 ~@21", // Em
AV: "[~ [e4,c5] ~@3 [e4,g4,c5]@5 ~@3 [e4,g4,c5]@11 ~ [e4,g4] ~@3 [e4,g4]@5 ~@7 c5@6 ~@2 [e4,g4,c5] ~@3 [e4,g4,c5]@8 ~@3, ~ g4@2 ~@34 [e4,g4]@11 ~@16]/2", // C Em C Em
AW: "[~ [b3,e4,g4]@48 ~@15]/2", // Em
AX: "[~@2 a4@16 ~@3 a3@17 ~@7 [e4,g4]@6 ~@2 [a3,e4,g4]@11, ~ [c4,e4]@28 ~@35, ~ a3@18 ~@45]/2", // Em A7 C
AY: "[~@2 [g4,b4]@23 ~@4 [g4,b4]@15 ~ [e4,g4]@7 ~ [e4,g4]@9 ~@2, ~ e4@23 ~ e4@18 ~@21]/2", // G Em
AZ: "[~@2 a4@16 ~@3 a3@17 ~@7 [e4,g4]@6 ~@2 [a3,e4,g4]@11, ~ c4@28 ~@35, ~ a3@18 ~@45, ~@2 e4@27 ~@35]/2", // Em A7
BA: "[~@2 [e4,g4,b4]@23 ~@4 [g4,b4]@15 ~ [e4,g4]@7 ~ [e4,g4]@9 ~@2, ~@25 e4@18 ~@21]/2", // Em G Em
BB: "[~@2 a4@16 ~@3 a3@17 ~@7 [e4,g4]@7 ~ [a3,e4,g4]@11, ~ c4@28 ~@35, ~ a3@18 ~@45, ~@2 e4@27 ~@35]/2", // Em A7
BC: "[~@45 [d4,f#4,a4]@7 ~ [a3,f#4,a4]@11, ~ d4@33 ~@19 d4@8 ~@3, ~@2 f#4@33 ~@29, ~@21 a3@27 ~@16]/2", // D
BD: "[~@2 [e4,g4,b4]@23 ~@5 b4@13 ~@21, ~@25 e4@19 ~@20, ~@29 g4@14 ~@21]/2", // Em
})).s("gm_piano").gain(0.3)
// drums · kick
const kick = s("bd").struct(`<
~@18 A@6 B A C@10 D C@5 B A B A B A B A B@11 A B E F@7 B F B F@8 G@32 F@14 ~ H F@10 I F@13 I F I F@3 I J I F I F@3 I ~
>`.pickRestart({
A: "x!2", B: "~ x ~@14 x ~@15", C: "x!4", D: "~ x ~@6 x ~@7 x ~@7 x ~@7", E: "x ~@16 x ~@14", F: "~ x ~@15 x ~@14",
G: "~ x ~@7 x ~@7 x ~@7 x ~@6", H: "~@17 x ~@14", I: "~@2 x ~@14 x ~@14", J: "~ x ~@15 x ~@3 x ~@3 x ~@6",
})).gain(0.35)
// drums · clap
const clap = s("cp").struct("<~@18 A@15 B A@8 C A D C A D C A C A E@29 F E@46 ~ E@17 G E@22 ~>".pickRestart({
A: "~ x ~ x", B: "~@2 x ~@2 x!2 ~", C: "~@8 x ~@16 x ~@6", D: "~@9 x ~@14 x ~@7", E: "~@9 x ~@15 x ~@6",
F: "~@9 x ~@11 x ~@3 x ~@6", G: "~@9 x ~@16 x ~@5",
})).gain(0.3)
// drums · snare
const snare = s("sd").struct(`<
~@17 A B@24 C B@7 C B@6 D B@2 C B@3 E F E C E C E B E@9 G E@15 H E@7 I E@7 H E@7 J E@6 ~ K E@7 J E@7 J E@7 K E@7 J E@7
~
>`.pickRestart({
A: "~@9 x ~ x!2 ~ x ~", B: "~ x ~ x", C: "~@8 x ~@16 x ~@6", D: "~@8 x ~@6 x!2 ~@3 x ~@3 x ~ x ~@5",
E: "~@9 x ~@15 x ~@6", F: "~@9 x ~@11 x ~@4 x ~@2 x ~@2", G: "~@9 x ~@13 x ~ x ~@3 x ~@2",
H: "~@9 x ~@6 x ~@6 x ~ x ~ x ~ x ~@2", I: "~@9 x ~@15 x ~ x ~@4", J: "~@9 x ~@17 x ~ x ~@2",
K: "~@9 x ~@11 x ~@5 x ~ x ~@2",
})).gain(0.35)
// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
~@17 A ~@23 B ~@15 C ~@7 D ~@15 E ~@15 F ~@7 G ~@7 F ~@7 H ~@7 I ~@7 H ~@7 H ~@7 H ~@7 J ~@8
>`.pickRestart({
A: "~@4 x!5 ~ x ~@5", B: "~@10 x!2 ~@4", C: "~@12 x!3 ~@13 x ~@3", D: "~@6 x ~@10 x!2 ~@6 x ~@6", E: "~@21 x ~@10",
F: "~@13 x!3 ~@5 x ~@10", G: "~@23 x ~@8", H: "~@25 x ~@6", I: "~@7 x ~@9 x ~ x ~@5 x ~@6", J: "~@25 x ~@5 x",
})).gain(0.15)
// drums · hihat
const hihat = s("hh").struct(`<
A@2 ~@8 B C B C B C B D B C B C B C E C B C B C B C B D B C E C B C B F G H E C E H E D G H E I E J E K L M N H E O P
Q R Q R S R Q R T R Q R Q R Q R U R Q R Q R Q R U R Q R Q R Q R U R Q R Q R Q R U R Q R Q R Q R V R Q R Q R Q R Q R Q
R Q R Q R Q R Q R Q R Q R Q R Q W Q R Q R Q R Q W Q R Q W V W Q W Q R Q W Q W Q W Q R Q W ~
>`.pickRestart({
A: "x!4", B: "x ~ x!3 ~ x ~", C: "x!5 ~ x!2", D: "x ~ x ~ x ~ x!4 ~@2 x ~@3", E: "~ x ~@6 x ~@3 x ~@3 x ~@7 x ~@7",
F: "x ~ x ~ x ~ x!4 ~@2 x!4", G: "~ x ~@6 x ~@3 x ~@3 x ~@8 x ~@6", H: "~ x ~@2 x ~@3 x ~@3 x ~@3 x ~@7 x ~@3 x ~@3",
I: "~ x ~@2 x ~@3 x ~@3 x ~@3 x ~@8 x ~@3 x ~@2", J: "~ x ~@2 x ~@4 x ~@3 x ~@2 x ~@7 x ~@3 x ~@3",
K: "~ x ~@2 x ~@3 x ~@3 x ~ x ~@2 x!2 ~@5 x ~@7", L: "~ x ~@6 x ~@3 x ~@4 x ~@6 x ~@7",
M: "~ x ~@2 x ~@3 x ~@3 x ~@3 x ~@8 x ~@2 x ~@3", N: "~ x ~@6 x ~@3 x ~@4 x ~@7 x ~@6",
O: "x ~@3 x ~@4 x ~@3 x ~@3 x ~@7 x ~@3 x ~@2", P: "~ x ~@7 x ~@2 x ~@4 x ~@7 x ~@6",
Q: "~ x ~@3 x ~@3 x ~@3 x ~@3 x ~@7 x ~@3 x ~@2", R: "~ x ~@7 x ~@3 x ~@3 x ~@7 x ~@6",
S: "~ x ~@3 x ~@3 x ~@2 x ~@4 x ~@7 x ~@3 x ~@2", T: "~ x ~@3 x ~@3 x ~@3 x!2 ~@2 x!2 ~@6 x ~@6",
U: "~ x ~@3 x ~@3 x ~@3 x ~ x ~ x ~ x ~@5 x ~@6", V: "~ x ~@3 x ~@3 x ~@7 x ~ x ~@5 x ~@6",
W: "~@2 x ~@6 x ~@3 x ~@3 x ~@7 x ~@6",
})).gain(0.2)
// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
~@10 A B A B A B A ~ A B A B A B A B A B A B A B A ~ A B A B A B A ~ A B A B A B A ~ A B C D A B A ~ A D A B E D F D C
D C D C D C ~ F D F D F D F ~ F D F D F D F ~ F D F D F D F ~ F D F D F D F ~ F D F D F D G ~ F D F D F D F D F D F D
F D F D F D F D F D F D F D F D F D F D F D F D F D G ~ F D F D F D F D F D F D F D F ~
>`.pickRestart({
A: "~ x ~@3 x ~ x", B: "~@5 x ~@2", C: "~@4 x ~@16 x ~@7 x ~@2", D: "~@21 x ~@10", E: "~@4 x ~@15 x ~@8 x ~@2",
F: "~@5 x ~@15 x ~@7 x ~@2", G: "~@5 x ~@15 x ~@10",
// … 72 more lines
More by Mariah Carey
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.