0:00/0:00
// Doesn't Really Matter — Janet Jackson
// 100 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 124 bars on a 32-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.
// chords · string ensemble 2
const string_ensemble_2 = note(`<
~@20 A B C D E F G H ~@26 A B C D E F G H ~@10 I@2 ~@9 J@2 K@8 L@16 M@7 ~@8
>`.pickRestart({
A: "[c4,eb4]@4 ~@2 eb4@4 g4@2 bb4 ~@3 c4@4 ~@9 ab4@2 ~, g4@10 ~@6 ab3@2 ~@2 ab3@11 ~, ~@4 c4@9 ~@3 [eb4,ab4]@10 eb4@5 ~, ~@22 c4@9 ~", // Cm Ab5
B: "[bb3,c4]@4 ~@9 ab4@3 ~ c4@3 ~@7 g4@5, [eb4,f4]@8 g4@5 ~@3, ~@2 bb3@3 bb3@3 ~@2 c4@6, ~@6 c4@10 ~ eb4@5 eb4@10", // Bbsus2 Ebsus2
C: "~ g3@2 ~@8 eb4@5 [g3,c4]@4 ~@7 g4@5, ~ c4@15 ~@7 c4@9, ~ eb4@10 ~@5 eb4@16, ~ bb3@6 bb3@9 ~@16, ~@4 g3@11 ~@5 g3@12", // C5
D: "g3@12 ~@17 c4@3, [b3,d4]@20 g4@3 f4@9, ~@12 g3@13 eb4@7, ~@17 bb4@15, ~@18 ab4@13 ~", // Bm
E: "~@7 g4@3 ~ [eb4,g4]@4 c4@2 c4@4 ~@6 bb4@5, ~ [eb4,g4]@4 eb4@6 ~@6 [eb4,g4]@15, ~@3 c4@7 c4@4 ~@3 ab3@3 ~ ab3@11, ~@17 b3 ~@5 c4@9", // Eb
F: "~ bb3@3 ~@12 c4@4 ~@7 g4@5, f4@11 g4@16 ~@5, ~ eb4@15 eb4@16, ~ c4@5 c4@10 ~@6 c4@10, ~@2 bb3@6 g3 ~ g3@6",
G: "bb3@4 ~@7 eb4@6 ~@10 bb4@5, c4@16 ~@5 c4@11, eb4@10 ~@7 eb4@15, ~@4 g3@13 ~@15, ~@6 bb3@11 ~@6 a4@9",
H: "g3@4 ~@24 f4@3 ~, [b3,d4]@31 ~, ~@9 g4@23, ~@12 f4@12 eb4@7 ~, ~@16 eb4@4 c4@11 ~", I: "g5/2",
J: "[~@8 [db4,e4]@4 ~@2 e4@4 ab4@2 b4 ~@3 db4@4 ~@9 a4@2 ~ [b3,db4]@4 ~@9 a4@3 ~ db4@3 ~@2 e4@2, ~@8 ab4@10 ~@6 a3@2 ~@2 a3@11 ~@5 b3@6 b3@6 ~@4 db4@4, ~@12 db4@9 ~@3 [e4,a4]@10 e4@5 ~ [e4,gb4]@16 ab4@8, ~@30 db4@9 ~@7 db4@10 ~ e4@5 ~@2]/2", // Dbm Bsus2 A5 Esus2
K: "[~@3 ab4@6 ab3@2 ~@8 e4@5 [ab3,db4]@4 ~@7 ab4@5 ab3@12 ~@17 db4@3 ~@7 ab4@3 ~ [e4,ab4]@4 db4@2 db4@4 ~@6 b4@5 ~ b3@3 ~@12 db4@4 ~@7 ab4@5 b3@4 ~@7 e4@6 ~@10 b4@5 ab3@4 ~@24 gb4@3 ~ [d4,f4]@4 ~@2 f4@4 a4@2 ~@4 [bb3,d4]@4 ~@9 bb4@2 ~ [c4,d4,f4,g4]@4 c4@2 d4@4 c4@3 bb4@3 ~ d4@3 ~@2 f4@2, ~@9 db4@15 ~@7 db4@10 ~@17 a4@2 ab4@3 gb4@9 ~@3 db4@7 db4@4 ~@3 c4 ~@5 db4@9 ~ db4@5 db4@5 ab4@16 ~@11 b3@11 ~@6 bb4@9 ~@9 ab4@22 ~ a4@10 ~@2 c5@19 ~@17 a4@8, ~@9 e4@10 ~@5 e4@17 ~@16 b4@15 ~@5 e4@6 ~@6 [e4,ab4]@15 gb4@16 ~@6 db4@10 db4@16 ~@5 db4@12 ~@15 e4@4 db4@11 ~@5 d4@9 ~@9 d4@9 ~@21 d4@4, ~@9 b3@6 b3@9 ~@16 [c4,eb4]@25 e4@7 ~ [e4,ab4]@6 ~@26 e4@15 e4@16 e4@10 ~@7 e4@16 ~@11 gb4@12 e4@7 ~@17 [f4,bb4]@10 f4@5 ~@18 f4@5 ~@2, ~@12 ab3@11 ~@5 ab3@12 ~@12 ab3@19 ~@18 a3@3 ~ a3@11 ~@4 b3@12 ab3@2 ~@2 ab3@12 ~@4 ab3@13 ~@15 [c4,eb4]@31 ~@21 bb3@11 ~@25]/8", // Db5 E Dm Bb Csus4 E Cm E …
L: "[~@3 a4@6 a3@2 ~@8 f4@5 [a3,d4]@4 ~@7 a4@5 a3@12 ~@17 d4@3 ~@7 a4@3 ~ [f4,a4]@4 d4@2 d4@4 ~@6 c5@5 ~ c4@3 ~@12 d4@4 ~@7 a4@5 c4@4 ~@7 f4@6 ~@10 c5@5 a3@4 ~@24 g4@3 ~ [d4,f4]@4 ~@2 f4@4 a4@2 ~@4 [bb3,d4]@4 ~@9 bb4@2 ~ [c4,d4,f4,g4]@4 c4@2 d4@4 c4@3 bb4@3 ~ d4@3 ~@2 f4@2, ~@9 d4@15 ~@7 d4@10 ~@17 bb4@2 a4@3 g4@9 ~@3 d4@7 d4@4 ~@3 db4 ~@5 d4@9 ~ d4@5 d4@5 a4@16 ~@11 c4@11 ~@6 b4@9 ~@9 a4@22 ~ a4@10 ~@2 c5@19 ~@17 a4@8, ~@9 f4@10 ~@5 f4@17 ~@16 c5@15 ~@5 f4@6 ~@6 [f4,a4]@15 g4@16 ~@6 d4@10 d4@16 ~@5 d4@12 ~@15 f4@4 d4@11 ~@5 d4@9 ~@9 d4@9 ~@21 d4@4, ~@9 c4@6 c4@9 ~@16 [db4,e4]@25 f4@7 ~ [f4,a4]@6 ~@26 f4@15 f4@16 f4@10 ~@7 f4@16 ~@11 g4@12 f4@7 ~@17 [f4,bb4]@10 f4@5 ~@18 f4@5 ~@2, ~@12 a3@11 ~@5 a3@12 ~@12 a3@19 ~@18 bb3@3 ~ bb3@11 ~@4 c4@12 a3@2 ~@2 a3@12 ~@4 a3@13 ~@15 [db4,e4]@31 ~@21 bb3@11 ~@25]/8", // D5 F Dm Bb Csus4 F Dbm F …
M: "[~@3 a4@6 a3@2 ~@8 f4@5 [a3,d4]@4 ~@7 a4@5 a3@12 ~@17 d4@3 ~@7 a4@3 ~ [f4,a4]@4 d4@2 d4@4 ~@6 c5@5 ~ c4@3 ~@12 d4@4 ~@7 a4@5 c4@4 ~@7 f4@6 ~@10 c5@5 a3@4 ~@24 g4@3 ~@25, ~@9 d4@15 ~@7 d4@10 ~@17 bb4@2 a4@3 g4@9 ~@3 d4@7 d4@4 ~@3 db4 ~@5 d4@9 ~ d4@5 d4@5 a4@16 ~@11 c4@11 ~@6 b4@9 ~@9 a4@23 ~@24, ~@9 f4@10 ~@5 f4@17 ~@16 c5@15 ~@5 f4@6 ~@6 [f4,a4]@15 g4@16 ~@6 d4@10 d4@16 ~@5 d4@12 ~@15 f4@4 d4@11 ~@25, ~@9 c4@6 c4@9 ~@16 [db4,e4]@25 f4@7 ~ [f4,a4]@6 ~@26 f4@15 f4@16 f4@10 ~@7 f4@16 ~@11 g4@12 f4@7 ~@25, ~@12 a3@11 ~@5 a3@12 ~@12 a3@19 ~@18 bb3@3 ~ bb3@11 ~@4 c4@12 a3@2 ~@2 a3@12 ~@4 a3@13 ~@15 [db4,e4]@31 ~@25]/7", // D5 F Dbm F Dbm
})).s("gm_string_ensemble_2").gain(0.46)
// chords · string ensemble 2 · soft notes
const string_ensemble_2_soft = note(`<
A@4 B@3 ~@17 C ~ D E ~@30 C ~ D E ~@6 F@4 G@4 ~@11 H ~ I@3 ~@3 J ~ K@3 ~@3 J ~ K@3 ~@3 J ~ K@3 ~@8
>`.pickRestart({
A: "[~@32 bb5@31 d5@24 d5@41, [eb5,g5]@63 f5@64 ~]/4", // Eb
B: "[~@56 bb5@7 ~@17 bb5@16, [eb5,g5]@2 ~, ~@3 bb5@4 ~@5, ~@47 ab5@16 [d5,f5,g5]@33]/3", C: "~ c4@2 ~@29",
D: "g3@2 ~@15 c4@4 ~@2 g4@9", E: "~@4 g3@27 ~", F: "[[eb5,g5]@63 [d5,f5]@65]/4",
G: "[~@31 eb4@32 d4@14 ~@2 d4@48 ~, eb5@63 [d5,f5]@63 ~@2, ~@79 c4@3 ~@46, ~@79 db4 ~@48]/4", H: "~@9 db4@2 ~@21",
I: "[~@8 ab3@2 ~@15 db4@4 ~@2 ab4@9 ~@4 ab3@27 ~@25]/3", J: "~@9 d4@2 ~@21",
K: "[~@8 a3@2 ~@15 d4@4 ~@2 a4@9 ~@4 a3@27 ~@25]/3",
})).s("gm_string_ensemble_2").gain(0.26)
// chords · orchestral harp
const orchestral_harp = note("<~ A@2 B ~ C@4 D@7 ~@19 D@7 ~@26 E F@4 G@5 ~@21 H I@7 J@8 K@3 ~@6>".pickRestart({
A: "[g5@31 bb4@2 ~@31]/2", B: "g5",
C: "[~@56 bb4@5 ~@2 bb3@64 ~, ~@15 bb4@13 ~@36, ~@31 g4@30 ~@67, ~@51 d5@15 ~@62]/4",
D: "[~@6 c4@6 ~@20 d4@6 ~@26 d4@6 ~@26 c4@6 c4@6 c4@20 c4@6 c4@6 ~@19 d4@6 ~@27 d4@6 ~@26, ~@6 c4@31 bb3@32 ~ c4@32 ~@10, ~@11 eb4@8 eb4@16 ~@8 eb4@8 ~@5]/7",
E: "~@14 eb4!2",
F: "[d4@4 ~@2 c4@4 ~@21 g4@13 ~@21 d5@3 ~@8 g4@8 ~@4 eb4@4 ~@4 c4@12 ~@4 g4@12 ~ g4@3, ~@4 d4@20 d4@21 f4@16 d5 eb5@23 g4 f4@6 eb4@16 c4 eb4 f4@14 f4@4, ~@10 c4@13 c4@23 eb4@22 d5@60, ~@12 bb3@35 d4@27 bb4@10 bb4@44, ~@26 eb4 f4@17 g4@5 c4@21 [b4,c5]@58]/4", // Cmaj7
G: "[ab4@4 ~@2 g4@4 f4@2 f4@9 ~@4 c4@3 c4@4 c4@6 ~@26 eb4@4 ~@2 d4@4 ~@22 c4@64, ~@4 ab4@28 d4@6 c4@6 bb3@32 c4@15 g3@64 ~@5, ~@10 g4@11 g4@39 c4@2 d4@6 eb4@24 bb3@64 ~@4, ~@11 f4@26 d4@32 ~@11, ~@23 eb4 d4 db4@63 bb3 g3 f3@64 ~@6]/5",
H: "~@4 a4!5 ~ c5@2 ~@2 bb4!2, ~@9 a4@7, ~@3 c5",
I: "[~@8 g4@4 g4@2 ~@6 bb4@4 ~@15 f4@2 f4@3 f4@2 ~@6 a4@4 ~@12 f4@4 ~@2 e4@2 e4@2 ~@6 g4@4 ~@4 f4@2 f4@6 ~@4 a4@2 a4@2 a4@2 a4@2 a4@2 ~@2 c5@4 ~@14 g4@2 g4@4 g4@2 ~@6 bb4@4 ~@14 f4@2 f4@4 f4@2 ~@6 a4@4 ~@12 f4@4 ~@2 e4@2 e4@2 ~@10 a4@2 a4@2 a4@2 a4@2, ~@2 a4@12 c5@25 e4@24 bb4@3 a4@10 bb4@24 f4@12, ~@7 g4@11 g4@10 a4@22 f4@28 c5@28 g4@6, ~@12 bb4@24 f4@8 g4@18 d5@30 a4@11 e4@9, ~@15 a4@8 f4@7 g4 d4@26 a4@3 c5@11 g4@8 a4@3 g4@5 f4@6 g4@2 d4@17]/7",
J: "[~@8 a4@2 a4@2 a4@2 a4@2 a4@2 ~@2 c5@4 ~@4 bb4@2 ~@10 g4@4 g4@2 ~@6 bb4@4 ~@15 f4@2 f4@3 f4@2 ~@6 a4@4 ~@12 f4@4 ~@2 e4@2 e4@2 ~@6 g4@4 ~@4 f4@2 f4@6 ~@4 a4@2 a4@2 a4@2 a4@2 a4@2 ~@2 c5@4 ~@14 g4@2 g4@4 g4@2 ~@6 bb4@4 ~@14 f4@2 f4@4 f4@2 ~@6 a4@4 ~@12 f4@4 ~@2 e4@2 e4@2 ~@10 a4@2 a4@2 a4@2 a4@2, g4@2 g4@16 a4@12 c5@25 e4@24 bb4@3 a4@10 bb4@24 f4@12, ~ a4@2 f4@31 g4@10 a4@22 f4@28 c5@28 g4@6, ~@9 a4@6 bb4@8 g4@8 a4@8 f4@7 g4 d4@26 a4@3 c5@11 g4@8 a4@3 g4@5 f4@6 g4@2 d4@17, ~@12 c5@16 bb4@24 f4@8 g4@18 d5@30 a4@11 e4@9]/8",
K: "[~@3 f4@32 ~@13, g4 g4@16 ~@7, ~ a4@32 ~@15]/3",
})).s("gm_orchestral_harp").gain(0.41)
// chords · orchestral harp · soft notes
const orchestral_harp_soft = note("<A@2 B@6 C D E F@3 G@4 ~@16 C D E F@3 G@4 ~@59 H@3 ~@5 H@3 ~@10>".pickRestart({
A: "[~@28 eb4@3 d5, eb4@7 ~, ~@12 d5@19 ~]/2",
B: "[~@56 eb4@3 ~@4 eb4@11 ~@28 bb4@23 ~@33 g4@4 ~@30, g4@2 ~@32 c5@4 c5@5 c5@11 f4@5 eb4@2 c4@4 ~@9 c4@55 f4@21 c5@7 bb4@5 ~@30, ~ f4@46 bb4@3 f4@2 g4@13 ~@10 d4@64 ~ c4@22 ~@30, ~@36 eb5@29 ~@36 d5@24 d5@20 g5@17 ~@30, ~@40 d5@25 ~@11 eb4@64 ~@3 eb4@19 ~@30]/6",
C: "c4@3 c4@3 c4@10", D: "c4@3 ~@13", E: "~@3 d4@13", F: "[~@3 d4@32 ~@13]/3",
G: "[~ c4, ~@3 d4@13 ~@3 d4@32 ~@13, ~@5 bb3@16 bb3@32 ~@11, ~@11 eb4@16 ~@5]/4", H: "[~@3 ab4@16 ~@5]/3",
})).s("gm_orchestral_harp").gain(0.2)
// bass · fretless bass
const bass = note(`<
A@2 B C D ~@14 E F G H I J K L M N O@4 ~ P Q R S T@2 U S V W X@2 ~@16 N Y Z AA@3 AB AC AD AE AF AG AH AI AJ AK AL AM
AN AO@2 AP@4 AQ@4 AR@4 AS@4 AT@4 AS@4 AT@4 AS@4 AT@4 ~@5
>`.pickRestart({
A: "f2@10 ~@2 f2@19 ~", B: "~@12 eb2@19 ~", C: "~@3 eb2@3 ~ c2", D: "~@6 f2@9 ~", E: "f2@8 g2@8 ab2@8 bb2@4 c3@3 ~",
F: "c2@5 ~ c2@4 ~@2 c2@4 f2@5 ~ f2@10, c3 ~@31", G: "bb1@5 ~ bb1@10 eb2@5 ~ eb2@10",
H: "ab1@5 ~ ab1@9 ~ d2@4 ~@2 d2@10", I: "g1@5 ~ g1@10 c2@7 ~ c2@6 ~@2", J: "c2@5 ~ c2@5 ~ c2@4 f2@5 ~ f2@5 ~ f2@4",
K: "bb1@5 ~ bb1@10 eb2@4 ~@2 eb2@10", L: "ab1@5 ~ ab1@10 d2@4 ~@2 d2@9 ~",
M: "g1@5 ~ g1@10 c2@3 ~ c2@3 ~ c2@3 ~ c2@3 ~", N: "c1@6 ab1@6 ~@12 d2 ~ eb2 ~@5",
O: "[~@16 ab1@15 c1@7 ab1@5 c2@20 bb1@6 ~ eb2@6 ab1@52]/4", P: "f1@4 ~ f1@4 ~@2 f1@4 ~@17",
Q: "f1@4 ~@2 f1@3 ~@3 f1@3 ~@17", R: "eb1@5 ~ eb1@5 ~ eb1@3 ~@17", S: "eb1@4 ~@2 eb1@4 ~@2 eb1@3 ~@17",
T: "f1@4 ~@2 f1@4 ~@2 f1@3 ~@17", U: "~ eb1@4 ~ eb1@4 ~@2 eb1@4 ~@16",
V: "~@2 c1@4 ~@7 c2@3 b1@5 ~ b1 ~@5 b1@4, ~@2 db1 ~@29", W: "bb1@5 ~ bb1@2 ~@4 bb1@4 a1@5 ~ a1@3 ~@3 a1@4",
X: "[ab1@31 f1@9 g1@8 ab1@8 bb1@6 ~@2]/2", Y: "~@16 ab1@15 ~", Z: "c1@3 ab1@3 c2@10",
AA: "[bb1@6 eb2@6 ~ ab1@52 ~@31]/3", AB: "~@29 bb2@2 ~", AC: "bb2@11 ~ ab2@4 g2@6 f2@6 eb2@3 ~",
AD: "c2@3 ~@3 g2@8 d3 eb3", AE: "d3@2 ~@2 d3@2 c3@3 ~ c3@2 bb2@8 g2@6 f2@3 ~@3", AF: "~@3 c2@3 g2@2 f2@6 bb2 c3",
AG: "bb2@12 ab2@4 g2@4 f2@3 ~ eb2@4 f2@3 ~", AH: "~ g1@5 ~@6 g2@16 d3@2 eb3 ~", AI: "~@3 f2",
AJ: "c2@5 ~ c2@2 ~@4 c2@4 b1@5 ~ [a1,b1] ~@4 b1@4 ~", AK: "bb1@5 bb1 ~@5 bb1@4 ~ a1@5 ~ a1@2 ~@3 a1@4 ~",
AL: "ab1@31 ~", AM: "f1@8 g1@7 ~ ab1@7 ~ bb1@4 c2@3 ~", AN: "f1@8 g1@7 ~ ab1@8 bb1@4 c2@4",
AO: "[gb1@8 ab1@7 a1@5 ~@4 b1@4 db2@21 ~@15]/2",
AP: "[~@8 db2@5 ~ db2@4 ~ db2@4 ~ gb2@5 ~ gb2@10 b1@5 ~ b1@10 e2@5 ~ e2@10 a1@5 ~ a1@9 ~ eb2@4 ~@2 eb2@10 ab1@5 ~ ab1@10 db2@7 ~]/4",
AQ: "[db2@6 ~@2 db2@5 ~ db2@5 ~ db2@4 gb2@5 ~ gb2@5 ~ gb2@4 b1@5 ~ b1@10 e2@4 ~@2 e2@10 a1@5 ~ a1@10 eb2@4 ~@2 eb2@9 ~ ab1@5 ~ ab1@10 db2@3 ~ db2@3 ~]/4",
AR: "[db2@3 ~ db2@3 ~ d2@5 ~ d2@4 ~ d2@4 ~ g2@5 ~ g2@10 c2@5 ~ c2@10 f2@5 ~ f2@10 bb1@5 ~ bb1@9 ~ e2@4 ~@2 e2@10 a1@5 ~ a1@10 d2@7 ~]/4",
AS: "[d2@6 ~@2 d2@5 ~ d2@5 ~ d2@4 g2@5 ~ g2@5 ~ g2@4 c2@5 ~ c2@10 f2@4 ~@2 f2@10 bb1@5 ~ bb1@10 e2@4 ~@2 e2@9 ~ a1@5 ~ a1@10 d2@3 ~ d2@3 ~]/4",
AT: "[d2@3 ~ d2@3 ~ d2@5 ~ d2@4 ~ d2@4 ~ g2@5 ~ g2@10 c2@5 ~ c2@10 f2@5 ~ f2@10 bb1@5 ~ bb1@9 ~ e2@4 ~@2 e2@10 a1@5 ~ a1@10 d2@7 ~]/4",
})).s("gm_fretless_bass").gain(0.64)
// bass · fretless bass · soft notes
const bass_soft = note("<~@2 A B C D E F ~@20 G H ~@32 I H ~@4 J@2 K ~ L ~ M N ~@48>".pickRestart({
A: "eb2@11 ~@21", B: "eb2@11 ~@13 bb1@5 ~@3", C: "f2@11 ~@21", D: "f2@5 ~ f2@10", E: "eb2@11 eb2@19 ~@2",
F: "eb2 ~@7", G: "~@11 c2@12 ~@5 d2@2 c2@2", H: "bb1 ~", I: "~@6 c2@6 ~@2 d2 c2",
J: "[f1@6 c2@4 ~@2 g2@4 f2@13 ~@2 c3@2 ~@31]/2", K: "~@6 eb2@7 ~@19", L: "f1@3 ~@13", M: "~@3 c2@3 ~@10",
N: "d3 c3 bb2@2 g2@2 ~@2",
})).s("gm_fretless_bass").gain(0.32)
// other · shamisen
const shamisen = note("<~@3 A B@2 C D ~@116>".pickRestart({
A: "~@2 bb4 c5 bb4 g4 f4 eb4", B: "[f4@41 ~@15 f4@7 ~]/2", C: "eb4@7 ~@5 eb4@10 ~@10", D: "eb4 ~@31",
})).s("gm_shamisen").gain(0.2)
// other · epiano1
const epiano1 = note("<~@8 A B C D E F G H I J K L ~@14 M B C D E N G H I J O L ~@78>".pickRestart({
A: "c4@5 ~ c4@4 ~@2 c4@3 ~@17", B: "c3@5 ~ c3@5 ~ c3@3 ~@17", C: "d3@2 ~ d3@2 ~ eb3@10", D: "d3@5 ~ d3@6 ~@20",
E: "~@6 f3@4 ~@2 f3@3 ~@17", F: "c4@4 ~@2 c4@4 ~ c4@3 ~@18", G: "d4@5 ~ d4@4 bb3@2 eb4@17 ~@3",
H: "d4@5 ~ d4@4 ~@2 eb4@18 ~@2", I: "[eb4,g4]@5 ~ [eb4,g4]@9 ~ [d4,f4]@5 ~ [d4,f4]@5 ~ [d4,f4]@4",
J: "[d4,f4]@5 ~ [d4,f4]@5 ~ [d4,f4]@4 [c4,eb4]@5 ~ [c4,eb4]@8 ~@2", // Dm Cm
K: "~@2 eb4@2 c4@2 ~@2 eb4@2 c4 ~@3 eb4@2 c4@2 ~@4 c4 ~@4 eb4@2 c4@2 ~, ~@21 eb4@2 ~@9",
L: "~@9 eb4@2 ~@5 f4 ~@7 g4 ~@7", M: "c4@5 ~@2 c4@4 ~ c4@3 ~@17", N: "c4@4 ~@2 c4@4 ~@2 c4@3 ~@17",
O: "~@2 eb4@2 c4@2 ~@2 eb4@2 c4 ~@3 eb4@2 c4@2 ~@2 eb4@2 c4 ~@3 eb4@2 c4@2 ~@2",
})).s("gm_epiano1").gain(0.26)
// other · epiano1 · soft notes
const epiano1_soft = note("<~@10 A B C ~@2 D ~@3 E ~@16 A B C ~@2 D ~@3 F ~@78>".pickRestart({
A: "~@5 bb2 ~@10", B: "~@12 eb3@17 ~@3", C: "f3 ~@7", D: "~@5 bb3 ~@10", E: "~ c4@4 ~@11", F: "~ c4@8 ~@23",
})).s("gm_epiano1").gain(0.15)
// bass · acoustic guitar steel
const bass_2 = note("<~@15 A B C D E ~@21 F G H I@2 ~@30 J K@2 L@3 ~@42>".pickRestart({
A: "~@14 eb2 d2", B: "c2@15 ~ b1@5 ~ b1@10", C: "bb1@5 ~ bb1@10 a1@5 ~ a1@10", D: "ab1", E: "f1@8 g1@8 ab1@8 bb1@7 ~",
F: "~@15 b1, ~@29 bb1@2 ~", G: "c2@5 ~ c2@2 ~@4 c2@4 b1@6 b1@2 ~@8", H: "bb1@5 ~ bb1@5 ~ bb1@3 ~ a1@5 ~ a1@10",
I: "[ab1@31 f1@8 g1@8 ~ ab1@8 bb1@4 c2@3 ~]/2", J: "c2@5 ~ c2 ~@4 c2@4 ~ b1@5 b1@2 ~@5 b1@4",
K: "[bb1@5 ~ bb1@2 ~@3 bb1@4 ~ a1@5 a1@2 ~@4 a1@4 ab1@27 ~@2 ab1@4]/2",
L: "[f1@7 ~ g1@7 ab1@8 bb1@4 ~ c2@3 ~ g1@2 ~@5 g1@8 ab1@8 bb1@4 c2@4 gb1@8 ab1@8 a1@8 b1@4 db2@4 ~, ~@31 f1@7 ~@41 bb1@2 ~@15]/3",
})).s("gm_acoustic_guitar_steel").gain(0.51)
// chords · epiano2
const epiano2 = note("<~@20 A B C D E F G H ~@30 I J K L M N O P ~@17 Q@2 R@8 S@24 T@4 ~@3>".pickRestart({
A: "c4@3 ~@3 eb4@4 g4@2 bb4 ~@3 c4@4 ~@8 ab4@2 ~@2, g4@10 ~@12 c4@9 ~, eb4@6 ~@10 [eb4,ab4]@10 eb4@5 ~, ~@3 c4@9 ~@4 ab3@2 ~@2 ab3@11 ~", // Ab5
B: "[bb3,c4]@2 ~@4 ab4@2 [c4,eb4]@2 ~@3 g4@3, [eb4,f4]@8 g4@5 ~@3, ~@2 bb3@3 bb3@3 ~@3 eb4@5, ~@3 c4@5 ~@2 c4@6", // Bbsus2 Cm Ebsus2
C: "bb3@4 ~@6 eb4@5 ~ [g3,c4]@4 ~@6 g4@6, c4@15 ~@7 c4@10, eb4@5 ~@3 eb4@8, g3@2 ~@2 g3@11 ~@5 g3@12, ~@6 bb3@9 ~@17", // C5
D: "g3@12 ~@16 c4@3 ~, [b3,d4]@20 g4@2 f4@2 eb4@7 ~, ~@12 g3@19 ~, ~@16 bb4@15 ~, ~@18 ab4@13 ~", // Bm
E: "c4@2 ~@4 g4@4 [c4,eb4,g4]@4 c4@2 ~ ab3@3 ~@6 bb4@5 ~, [eb4,g4]@4 eb4@6 ~@6 [eb4,g4]@15 ~, ~@2 c4@8 ~@6 c4@6 c4@9 ~, ~@17 b3 ~@2 ab3@11 ~", // Cm Eb
F: "[bb3,c4]@4 ~@12 c4@4 ~@6 g4@5 ~, [eb4,f4] eb4, ~@2 bb3@6 g3 ~ g3@6, ~@3 c4@5 ~@3 c4@5, ~@5 g4@8 ~@3", // Bbsus2 Ebsus2
G: "bb3@2 ~@3 eb4@3 c4@2 ~@3 bb4@3, c4@4 ~ c4@3, eb4@5 ~@3 eb4@8, g3@2 ~@2 g3@13 ~@15, ~@6 bb3@11 ~@6 [g4,a4]@9", // Gsus2
H: "g3@4 ~@24 f4@3 ~, [b3,d4]@24 eb4@7 ~, ~@4 g3@27 ~, ~@8 g4@23 ~, ~@12 f4@4 eb4@4 c4@11 ~", // Bm
I: "[c4,eb4]@4 ~@2 eb4@4 g4@2 bb4 ~@3 c4@4 ~@9 ab4@2 ~, g4@10 ~@6 ab3@2 ~@2 ab3@11 ~, ~@4 c4@9 ~@3 [eb4,ab4]@10 eb4@5 ~, ~@22 c4@9 ~", // Cm Ab5
J: "[bb3,c4]@4 ~@9 ab4@3 ~ c4@3 ~@7 g4@5, [eb4,f4]@8 g4@5 ~@3, ~@2 bb3@3 bb3@3 ~@2 c4@6, ~@6 c4@10 ~ eb4@5 eb4@10", // Bbsus2 Ebsus2
K: "~ g3@2 ~@8 eb4@5 [g3,c4]@4 ~@7 g4@5, ~ c4@15 ~@7 c4@9, ~ eb4@10 ~@5 eb4@16, ~ bb3@6 bb3@9 ~@16, ~@4 g3@11 ~@5 g3@12", // C5
L: "g3@12 ~@17 c4@3, [b3,d4]@20 g4@3 f4@9, ~@12 g3@13 eb4@7, ~@17 bb4@15, ~@18 ab4@13 ~", // Bm
M: "~ c4@2 ~@4 g4@3 ~ [eb4,g4]@4 c4@2 c4@4 ~@6 bb4@5, ~ [eb4,g4]@4 eb4@6 ~@6 [eb4,g4]@15, ~@3 c4@7 c4@4 ~@3 ab3@3 ~ ab3@11, ~@17 b3 ~@5 c4@9", // Eb
N: "~ bb3@3 ~@12 c4@4 ~@7 g4@5, f4@11 g4@16 ~@5, ~ eb4@15 eb4@16, ~ c4@5 c4@10 ~@6 c4@10, ~@2 bb3@6 g3 ~ g3@6",
O: "bb3@4 ~@7 eb4@6 c4@4 ~@6 bb4@5, c4@16 ~@5 c4@11, eb4@10 ~@7 eb4@15, g3@2 ~@2 g3@13 ~@15, ~@6 bb3@11 ~@6 [g4,a4]@9", // Gsus2
P: "g3@4 ~@24 f4@3 ~, [b3,d4]@24 eb4@7 ~, ~@4 g3@27 ~, ~@9 g4@23, ~@12 f4@4 eb4@4 c4@11 ~", // Bm
Q: "[~@8 [db4,e4]@4 ~@2 e4@4 ab4@2 b4 ~@3 db4@4 ~@9 a4@2 ~ [b3,db4]@4 ~@9 a4@3 ~ db4@3 ~@2 e4@2, ~@8 ab4@10 ~@6 a3@2 ~@2 a3@11 ~@5 b3@6 b3@6 ~@4 db4@4, ~@12 db4@9 ~@3 [e4,a4]@10 e4@5 ~ [e4,gb4]@16 ab4@8, ~@30 db4@9 ~@7 db4@10 ~ e4@5 ~@2]/2", // Dbm Bsus2 A5 Esus2
R: "[~@3 ab4@6 ab3@2 ~@8 e4@5 [ab3,db4]@4 ~@7 ab4@5 ab3@12 ~@17 db4@3 ~ db4@2 ~@4 ab4@3 ~ [e4,ab4]@4 db4@2 db4@4 ~@6 b4@5 ~ b3@3 ~@12 db4@4 ~@7 ab4@5 b3@4 ~@7 e4@6 db4@4 ~@6 b4@5 ab3@4 ~@24 gb4@3 ~ [d4,f4]@4 ~@2 f4@4 a4@2 ~@4 [bb3,d4]@4 ~@9 bb4@2 ~ [c4,d4,f4,g4]@4 c4@2 d4@4 c4@3 bb4@3 ~ d4@3 ~@2 f4@2, ~@9 db4@15 ~@7 db4@10 ~@17 a4@2 ab4@3 gb4@9 ~@3 db4@7 db4@4 ~@3 c4 ~@5 db4@9 ~ db4@5 db4@5 ab4@16 ~@11 b3@11 ~@6 [ab4,bb4]@9 ~@9 ab4@15 e4@7 ~ a4@10 ~@2 c5@19 ~@17 a4@8, ~@9 e4@10 ~@5 e4@17 ~@16 b4@15 ~@5 e4@6 ~@6 [e4,ab4]@15 gb4@16 ~@6 db4@10 db4@16 ~@5 db4@12 ~@3 ab3@27 ~@21 bb3@11 ~@25, ~@9 b3@6 b3@9 ~@16 [c4,eb4]@25 e4@7 ~ [e4,ab4]@6 ~@26 e4@15 e4@16 e4@10 ~@7 e4@16 ~@11 gb4@4 e4@4 db4@11 ~@5 d4@9 ~@3 [f4,bb4]@10 f4@5 ~@18 f4@5 ~@2, ~@12 ab3@11 ~@5 ab3@12 ~@12 ab3@19 ~@18 a3@3 ~ a3@11 ~@4 b3@12 ab3@2 ~@2 ab3@12 ab3@2 ~@2 ab3@13 ~@15 [c4,eb4]@31 ~@23 d4@9 ~@21 d4@4]/8", // Db5 E Dm Bb Csus4 Absus2 E Cm …
S: "[~@3 a4@6 a3@2 ~@8 f4@5 [a3,d4]@4 ~@7 a4@5 a3@12 ~@17 d4@3 ~ d4@2 ~@4 a4@3 ~ [f4,a4]@4 d4@2 d4@4 ~@6 c5@5 ~ c4@3 ~@12 d4@4 ~@7 a4@5 c4@4 ~@7 f4@6 d4@4 ~@6 c5@5 a3@4 ~@24 g4@3 ~ [d4,f4]@4 ~@2 f4@4 a4@2 ~@4 [bb3,d4]@4 ~@9 bb4@2 ~ [c4,d4,f4,g4]@4 c4@2 d4@4 c4@3 bb4@3 ~ d4@3 ~@2 f4@2, ~@9 d4@15 ~@7 d4@10 ~@17 bb4@2 a4@3 g4@9 ~@3 d4@7 d4@4 ~@3 db4 ~@5 d4@9 ~ d4@5 d4@5 a4@16 ~@11 c4@11 ~@6 [a4,b4]@9 ~@9 a4@15 f4@7 ~ a4@10 ~@2 c5@19 ~@17 a4@8, ~@9 f4@10 ~@5 f4@17 ~@16 c5@15 ~@5 f4@6 ~@6 [f4,a4]@15 g4@16 ~@6 d4@10 d4@16 ~@5 d4@12 ~@3 a3@27 ~@21 bb3@11 ~@25, ~@9 c4@6 c4@9 ~@16 [db4,e4]@25 f4@7 ~ [f4,a4]@6 ~@26 f4@15 f4@16 f4@10 ~@7 f4@16 ~@11 g4@4 f4@4 d4@11 ~@5 d4@9 ~@3 [f4,bb4]@10 f4@5 ~@18 f4@5 ~@2, ~@12 a3@11 ~@5 a3@12 ~@12 a3@19 ~@18 bb3@3 ~ bb3@11 ~@4 c4@12 a3@2 ~@2 a3@12 a3@2 ~@2 a3@13 ~@15 [db4,e4]@31 ~@23 d4@9 ~@21 d4@4]/8", // D5 F Dm Bb Csus4 Asus2 F Dbm …
T: "[~@3 a4@6 a3@2 ~@8 f4@5 [a3,d4]@4 ~@7 a4@5 a3@12 ~@11 g4@64 ~, ~@9 d4@15 ~@7 d4@10 ~@17 bb4@64 ~@6, ~@9 f4@10 ~@5 f4@17 ~@16 c5@64 ~@7, ~@9 c4@6 c4@9 ~@16 [db4,e4]@20 a4@64 ~@4, ~@12 a3@11 ~@5 a3@12 ~@12 a3@64 ~@12]/4", // D5 Dbm
})).s("gm_epiano2").gain(0.46)
// drums · kick
const kick = s("bd").struct(`<
~@8 A@8 B@2 C D E F E F E F E F E F E F ~@2 A G A@6 B@2 C D E H E F E F E F ~@3 I E F E F E F E F ~@2 J@8 B@2 C D@3 ~
K L M L M L M L M L M L N M L M L M L M L M L N M L M L M L M L M L N O ~@5
>`.pickRestart({
A: "x ~@2 x ~@2 x ~@9", B: "x ~@2 x ~@4 x ~@2 x ~@4", C: "x ~@4 x ~@10 x ~@5 x ~@9", D: "x!3 ~",
E: "x ~ x ~@2 x ~@2 x ~ x ~@5", F: "x ~ x ~@2 x ~@2 x!8", G: "x ~@6 x ~@4 x ~@19", H: "x ~ x ~@2 x ~@2 x ~@7",
I: "~@8 x!6 ~@2", J: "x ~@2 x ~@4", K: "~@4 x ~ x ~@2 x ~@2 x ~ x ~", L: "~@4 x ~ x ~@2 x ~@2 x!4",
M: "x!5 ~ x ~@2 x ~@2 x ~ x ~", N: "x!5 ~ x ~@2 x ~@2 x!4", O: "x!4 ~@12",
})).gain(0.53)
// drums · rim
const rim = s("rim").struct("<~@16 A@4 B@12 ~@10 A@4 ~@2 B@6 ~@4 B@8 ~ C D@8 A@6 ~ E F@34 G ~@5>".pickRestart({
A: "x!16", B: "~@2 x ~@2 x ~ x ~@2 x ~@3 x ~", C: "~@24 x!2 ~@6", D: "~ x", E: "~@6 x ~@2 x ~ x ~@2 x ~",
F: "~@2 x ~@3 x ~@2 x ~ x ~@2 x ~", G: "~ x ~@6",
})).gain(0.53)
// drums · snare
const snare = s("sd").struct(`<
~@8 A B@7 C@3 D E@12 ~@2 A B F B@5 C@3 D E@8 ~@4 E@8 ~@10 C@3 D@3 ~ G@35 ~@6
>`.pickRestart({
A: "x ~@2 x", B: "~@3 x", C: "~@3 x ~@3 x", D: "~@2 x ~@3 x ~@3 x ~ x!4", E: "~@4 x ~@6 x ~@4", F: "~@25 x ~@6",
G: "~@8 x ~@6 x",
})).gain(0.53)
// drums · clap
const clap = s("cp").struct("<~@20 A@12 ~@16 A@2 ~ A@3 ~@3 A@9 ~@18 B@35 ~@5>".pickRestart({
A: "~@7 x", B: "~ x ~@6",
})).gain(0.53)
// drums · hihat
const hihat = s("hh").struct("<~@8 A@2 B A C D A@2 E@4 ~@14 A@2 F A@5 E@4 ~@22 G H G H G H G H E@6 ~@42>".pickRestart({
A: "x!2 ~ x ~@2 x ~@2 x!3 ~@4", B: "x!2 ~ x ~@2 x ~@2 x ~ x ~@4", C: "x ~ x ~@3 x ~@5 x ~@5 x ~ x ~ x ~@8 x",
D: "~ x ~ x ~@2 x ~@2 x!3 ~@4", E: "~@3 x ~@3 x", F: "x ~ x ~@3 x ~@6 x ~@4 x ~@3 x ~@9",
G: "x ~ x ~ x ~ x ~ x ~@3 x ~ x!2", H: "x ~@2 x ~@2 x ~ x ~ x!2 ~@2 x ~",
})).gain(0.53)
// drums · splash
const splash = s("cr").struct(`<
~@20 A ~ A ~ A ~ A ~ A ~ A ~@27 A ~@24 B ~ B ~ B ~ B ~ B ~ B ~@2 B ~ B ~ B ~ B ~ B ~@19
>`.pickRestart({
A: "x", B: "~ x ~@2",
})).gain(0.67)
// drums · shaker
const shaker = s("sh").struct(`<
~@16
[~@2 x!2 ~@6 x!2 ~@4]!4
// … 19 more lines
More by Janet Jackson
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.