0:00/0:00
// Girls Just Wanna Have Fun — Cyndi Lauper
// 120 bpm, 4/4, key F# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: coarse tuning (RPN 2) transposes the affected channels
// note: Full arrangement: all 113 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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, A@4 for four bars: edit a riff to change every repeat.
// bass · acoustic bass
const bass = note(`<
~ A B C D A B C D E B C F G H I J I A B C D E B C K G L M H N O P Q R E S N T I A B C D U V C W U V C W A V X W G L I
H I O Y Z AA A S I AB I A B C D AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS AT AU AV AW AX AY AZ AS AT AU AV AW
AX AY AZ BA BB ~@5
>`.pickRestart({
A: "f#1@3 ~ f#2 ~ f#1 ~ f#1@3 ~ f#2@3 ~", B: "f#1@3 ~ f#2 ~ f#1 ~ a#1@3 ~ c#2@3 ~",
C: "d#2@3 ~ d#3 ~ d#2 ~ d#2@3 ~ d#3@3 ~", D: "d#2@3 ~ d#3 ~ d#2@2 b1@3 ~ c#2@3 ~",
E: "f#1@3 ~ f#2@2 f#1 ~ f#1@3 ~ f#2@3 ~", F: "d#2@3 ~ d#3 ~ d#2 ~ d#2@3 ~ c#2@3 ~", G: "b1@3 ~ b2@3 ~ b1@3 ~ b2@3 ~",
H: "b1@3 ~ b2 ~ b1 ~ b1@3 ~ c#2@3 ~", I: "d#2@3 ~ d#3 ~ d#2 ~ c#2@3 ~ c#3@3 ~", J: "b1@3 ~ b2 ~ b1@2 b1@3 ~ c#2@3 ~",
K: "d#2@3 ~ d#3@2 d#2 ~ d#2@3 ~ c#2@3 ~", L: "b1@3 ~ b2@2 b1 ~ b1@3 ~ c#2@3 ~",
M: "d#2@3 ~ d#3@2 d#2 ~ c#2@3 ~ c#3@3 ~", N: "d#2@3 ~ d#3 ~ d#2@2 c#2@3 ~ c#3@3 ~",
O: "[f#1,f#2]@3 ~ [c#2,f#2] ~ f#1@2 [f#1,f#2]@3 ~ [c#2,f#2]@3 ~, ~@6 d#2 ~@9", // F# F#5 F# F#5
P: "[f#1,f#2]@3 ~ [c#2,f#2] ~ [f#1,d#2] ~ [a#1,f#2]@3 ~ c#2@2 d2 ~", // F# F#5 D#m
Q: "d#2@3 ~ [a#1,d#3] ~ c#2@2 d#2@3 ~ [a#1,d#3]@3 ~, ~@6 d#2 ~@9", // D#5
R: "d#2@3 ~ [a#1,d#3] ~ d#2@2 d#2@3 ~ [a#1,c#2]@2 c#2 ~, ~@6 c#2 ~@9", // D#5 A#m
S: "f#1@3 ~ f#2 ~ f#1 ~ [f#1,a#1]@3 ~ [c#2,f#2]@3 ~", T: "b1@3 ~ b2 ~ b1 ~ [b1,g#2]@3 ~ [c#2,f#2]@3 ~",
U: "f#1@3 ~ f#2 ~ f#1@2 f#1@3 ~ f#2@3 ~", V: "f#1@3 ~ f#2@2 f#1 ~ a#1@3 ~ c#2@3 ~",
W: "d#2@3 ~ d#3@2 d#2@2 d#2@3 ~ c#2@3 ~", X: "d#2@3 ~ d#3@2 d#2 ~ d#2@3 ~ d#3@3 ~",
Y: "[f#1,f#2]@3 ~ [c#2,f#2] ~ f#1@2 [a#1,f#2]@3 ~@3 d2 ~, ~@6 d#2 ~@5 c#2@4", // F# F#5 D#m
Z: "d#2@3 ~ [a#1,d#3] ~ d#2@2 d#2@3 ~ [a#1,d#3]@3 ~, ~@6 c#2 ~@9", // D#5
AA: "d#2@3 ~ [a#1,d#3] ~ [c#2,d#2] ~ d#2@3 ~ c#2@2 c#2 ~, ~@12 a#1 ~@3", // D#5 C#sus2
AB: "b1@3 ~ b2@2 b1 ~ [b1,g#2]@3 ~ [c#2,f#2]@3 ~", // E F#5
AC: "f#1@2 c#4!2 f#2@2 [f#1,c#4] c#4 f#1@2 c#4!2 f#2@2 c#4!2, c#4 ~@3 c#4 ~@3 c#4 ~@3 c#4 ~@3", // F#5
AD: "d#2@2 a#3!2 [d#3,a#3] ~ a#3!2 b1@2 f#3!2 c#2@2 g#3!2, a#3 ~@5 d#2@2 f#3 ~@3 g#3 ~@3", // D#5
AE: "f#1@2 c#4!2 [f#2,c#4] ~ [f#1,c#4] c#4 f#1@2 c#4!2 f#2@2 c#4!2, c#4 ~@7 c#4 ~@3 c#4 ~@3", // F#5
AF: "d#2@2 a#3!2 [d#3,a#3] ~ [d#2,a#3] a#3 b1@2 f#3!2 c#2@2 g#3!2, a#3 ~@7 f#3 ~@3 g#3 ~@3", // D#5
AG: "f#1@2 c#4!2 f#2 ~ [f#1,c#4] c#4 f#1@2 c#4!2 f#2@2 c#4!2, c#4 ~@7 c#4 ~@3 c#4 ~@3", // F#5
AH: "d#2@2 a#3 ~ [d#3,a#3] ~ [d#2,a#3] ~ b1@2 f#3!2 c#2@3 g#3, a#3 ~@7 f#3 ~@3 g#3 ~@3", // D#5
AI: "f#1@2 c#4!2 [f#2,c#4] ~ f#1 ~ f#1@2 c#4!2 f#2@3 c#4, c#4 ~@7 c#4 ~@3 c#4 ~@3", // F#5
AJ: "d#2@2 a#3!2 [d#3,a#3] ~ [d#2,a#3] ~ b1@2 f#3 ~ c#2@2 g#3 ~, ~@12 g#3 ~@3", // D#5
AK: "f#1@3 c#4 f#2@2 [f#1,c#4] c#4 f#1@2 c#4!2 f#2@2 c#4!2, c#4 ~@11 c#4 ~@3", // F#5
AL: "d#2@2 a#3!2 [d#3,a#3] ~ d#2 a#3 b1@3 f#3 c#2@3 ~, a#3 ~@15", // D#5
AM: "f#1@2 c#4!2 f#2@2 [f#1,c#4] c#4 f#1@3 ~ f#2@3 c#4, c#4 ~@3 c#4 ~@11", // F#5
AN: "d#2@2 a#3!2 [d#3,a#3] ~ [d#2,a#3] a#3 b1@2 f#3 ~ c#2@3 ~, a#3 ~@15", // D#5
AO: "f#1@2 c#4 ~ c#4 ~ [f#1,c#4] ~ f#1@2 c#4 ~ f#2@3 ~, c#4 ~@7 c#4 ~@7", // F#5
AP: "d#2@2 a#3!2 d#3 ~ a#3 ~ b1@3 f#3 c#2@3 ~, ~@8 f#3 ~@7", AQ: "f#1@2 c#4 ~ [f#2,c#4] ~ f#1 ~ f#1@3 ~ f#2@2 c#4 ~",
AR: "a#3 ~ a#3 ~ a#3 ~ [d#2,a#3] a#3 b1@2 f#3!2 c#2@3 g#3, ~@12 g#3 ~@3", // D#5
AS: "f#1@2 c#4!2 f#2 ~ [f#1,c#4] ~ f#1@3 ~ f#2@3 ~, ~@12 c#4 ~@3", AT: "~@4 a#3 ~ d#2 ~ b1@3 ~ c#2@3 ~, ~@8 f#3 ~@7",
AU: "f#1@3 ~ f#2 ~ f#1 c#4 f#1@3 ~ f#2@2 c#4!2", AV: "d#2@3 ~@3 d#2 ~ b1@3 ~ c#2@3 ~, ~@12 g#3 ~@3",
AW: "f#1@3 ~@3 f#1 ~ f#1@3 ~ f#2@3 c#4, c#4 ~@11 c#4 ~@3", AX: "d#2@3 ~ a#3 ~@2 a#3 ~@4 g#3 ~@3",
AY: "f#1@3 ~ f#2 ~ f#1 ~ f#1@3 c#4 f#2@3 ~", AZ: "~@6 d#2 a#3 b1@3 ~@5",
BA: "f#1@2 c#4!2 f#2 ~ [f#1,c#4] c#4 f#1@2 c#4!2 f#2@2 c#4!2, ~@8 c#4 ~@3 c#4 ~@3", BB: "d#2@3 ~@13, a#3 ~@15",
})).s("gm_acoustic_bass").gain(0.4)
// bass · acoustic bass · soft notes
const bass_soft = note("<~@78 A B C D E F G H I J K L M N O P Q R S T M N O P Q R S T U V W X W Y Z>".pickRestart({
A: "~@4 c#4 ~@11", B: "~@3 a#3 ~@3 a#3 ~@6 g#3 ~", C: "~@6 c#4!2 ~@6 c#4 ~", D: "a#3 ~@6 a#3 f#3 ~@2 f#3 ~@3 g#3",
E: "~@2 c#4 ~ c#4 ~@3 c#4 ~@7", F: "~@6 a#3 ~ f#3 ~ f#3 ~ g#3 ~ g#3!2", G: "~@8 c#4 ~ c#4!3 ~ c#4 ~",
H: "~@8 f#3 ~@2 f#3 g#3 ~ g#3!2", I: "~@3 c#4 f#2@2 ~ c#4 ~@3 c#4!2 ~ c#4!2",
J: "a#3 ~@3 a#3 ~ d#2 a#3 ~@2 f#3 ~ g#3 ~ g#3!2", K: "c#4 ~@2 c#4 ~@2 c#4!3 ~ c#4!3 ~@2 c#4",
L: "d#2@3 a#3 d#3 ~@3 f#3 ~@5 g#3 ~", M: "c#4 ~@3 c#4 ~@2 c#4!2 ~ c#4!2 ~@2 c#4!2",
N: "d#2@2 a#3!2 d#3 ~ a#3!2 ~@2 f#3!2 g#3 ~ g#3!2, a#3 ~@15", O: "c#4 ~ c#4!3 ~ c#4 ~ c#4 ~ c#4!3 ~@3",
P: "a#3 ~ a#3!2 d#3@2 a#3!2 f#3 ~ f#3!2 ~@2 g#3!2, ~@4 a#3 ~@11", Q: "~@2 c#4!2 [f#2,c#4] ~ c#4!3 ~ c#4!2 ~@2 c#4 ~",
R: "a#3 ~ a#3!2 d#3 ~ [d#2,a#3] ~ b1@2 f#3!2 c#2@2 g#3!2, ~@8 f#3 ~@7", S: "c#4 ~ c#4!3 ~ c#4!3 ~ c#4 ~ c#4 ~ c#4!2",
T: "d#2@2 a#3!2 [d#3,a#3] ~ a#3 ~ f#3 ~ f#3!2 c#2@2 g#3!2, a#3 ~@11 g#3 ~@3", U: "c#4 ~@3 c#4 ~@11",
V: "~@2 a#3!2 [d#3,a#3] ~ [d#2,a#3] a#3 b1@2 f#3!2 c#2@2 g#3!2, ~@8 f#3 ~@3 g#3 ~@3", // D#5
W: "f#1@2 c#4!2 [f#2,c#4] ~ [f#1,c#4] c#4 f#1@2 c#4!2 f#2@2 c#4!2, c#4 ~@7 c#4 ~@3 c#4 ~@3", // F#5
X: "d#2@2 a#3!2 d#3@2 [d#2,a#3] a#3 b1@2 f#3!2 c#2@2 g#3!2, a#3 ~@3 a#3 ~@3 f#3 ~@3 g#3 ~@3", // D#5
Y: "d#2@2 a#3!2 [d#3,a#3] ~ [d#2,a#3] a#3 b1@2 f#3!2 c#2@2 g#3!2, a#3 ~@7 f#3 ~@3 g#3 ~@3", // D#5
Z: "f#1@2 c#4!2 [f#2,c#4] ~ [f#1,c#4] c#4 f#1@2 c#4!2 f#2@3 ~, c#4 ~@7 c#4 ~@3 c#4 ~@3", // F#5
})).s("gm_acoustic_bass").gain(0.16)
// other · synth strings 1
const synth_strings_1 = note(`<
~@9 A B C D E@2 F G H I ~@3 J K L M N O P Q R S T U V W X@2 Y Z AA AB AC AD ~@8 AE AF@2 AG AH AI P AJ R AK@2 AL AM
AN@2 AO AP AQ@2 AR AC AD AS AT AU AV AW AX AY AZ BA BB BC BD BE BF BG@2 BH@2 BI BJ BK BL BM BN BO@2 BP BQ BR BS BT BU
BV BU BW ~@4
>`.pickRestart({
A: "~@6 a#4!2 a#4@2 ~@4 a#4!2", B: "a#4@2 g#4@2 ~@2 f#4@3 ~ g#4@2 a#4@2 a#4@2",
C: "~@2 g#4@2 ~@2 g#4@3 ~ g#4@2 ~@2 a#4@2", D: "~@2 g#4@2 ~@2 f#4@5 ~@5",
E: "[~ c#5!4 a#4!2 a#4@2 b4 c#5 c#5@2 ~@2 a#4]/2", F: "a#4@2 ~ g#4!2 f#4 f4 f#4", G: "~ b3@3 ~@2 a#4 c#5",
H: "a#4@5 ~ g#4@2 g#4@2 f#4@2 f4@4", I: "f#4 ~@7", J: "~@6 a#4!2 a#4@4 ~@2 a#4!2",
K: "a#4@2 a#4@3 ~ d#5@3 ~ a#4@3 ~ a#4@2", L: "~@4 a#4@2 g#4@3 ~@7", M: "a#4 ~ a#4 g#4@2 f#4 ~@2",
N: "~@2 c#5@2 c#5@2 c#5@2 c#5@2 a#4@3 a#4@2 a#4", O: "a#4@3 b4@2 ~ c#5@2 ~@4 g#4@2 a#4@2",
P: "a#4@6 g#4@2 g#4@2 f#4@2 f4@3 ~", Q: "f#4 b3@4 ~ a#4 c#5", R: "a#4@5 ~ g#4@2 g#4@2 f#4@2 f4@2 ~@2",
S: "~@2 c#5@2 c#5@2 c#5@2 c#5@2 a#4@3 ~@3", T: "a#4@4 g#4@2 f#4@3 ~ g#4@2 a#4@2 ~@2",
U: "~@4 d#5@3 ~ c#5@2 ~@2 a#4@3 ~, ~@11 b4@2 ~@3", V: "a#4@3 ~ f#4@2 ~@2 a#4@4 ~@4",
W: "[a#4,d#5]@2 ~@2 [a#4,c#5]@2 [a#4,c#5]@3 ~ [g#4,b4]@2 ~@2 [g#4,b4]@2", // D#5 A#m G#m
X: "[~@2 [f#4,a#4]@3 ~ [f#4,a#4]@3 ~ f4@2 a#4@2 ~@2 a#4@6 g#4@2 g#4@2 f#4@3 ~@3, ~@14 f#4@5 ~@13]/2", Y: "f#4@2 b3 ~",
Z: "a#4@2 ~ a#4 g#4 f#4 ~ f4", AA: "[f#3,f#4]@3 ~@3 c#4@2 [f#3,f#4]@2 [f#3,f#4]@2 ~@4",
AB: "~@8 [f#3,f#4]@3 ~ [f3,f4]@3 ~", AC: "[d#3,d#4]@3 ~@5 [d#3,d#4]@3 ~@5", AD: "~@4 [d#3,d#4]!2 [f3,f4] ~",
AE: "~@2 a#4@2 a#4@2 a#4@2 a#4@5 ~@3", AF: "[a#4 ~@2 f#4@2 ~ a#4 ~ d#5 a#4 g#4 [f#4,a#4]@2 ~@2 f#4, ~@7 a#4@2 ~@7]/2",
AG: "~@2 a#4 a#4@2 ~ f#4 ~", AH: "~@2 c#5@2 c#5@2 c#5!2 c#5@3 ~@3 g#4@2", AI: "a#4@2 ~@2 a#4@2 ~ a#4@4 b4@2 ~ a#4@2",
AJ: "f#4@2 b3@5 ~@5 a#4@2 c#5@2",
AK: "[~@2 c#5@2 c#5@2 c#5@2 c#5@2 a#4@3 ~@2 c#5@2 ~ g#4@3 ~ f#4@4 g#4@2 a#4@2 ~@2, ~@7 a#4 ~@8]/2",
AL: "~@2 f#4@2 d#5@3 ~ c#5@3 ~ a#4@3 ~", AM: "a#4@3 ~ f#4@3 ~ a#4@3 ~@5, ~@3 g#4@2 ~@11",
AN: "[[a#4,d#5]@4 [a#4,c#5]@2 [a#4,c#5]@3 ~ [g#4,b4]@3 ~ [g#4,b4]@4 [f#4,a#4]@3 ~ [f#4,a#4]@4 ~@4 a#4@2, ~@13 f4@3]/2", // D#5 A#m G#m F#
AO: "f#4@5 ~ g#4@2 g#4@2 f#4@2 f4@3 ~, a#4 ~@7", AP: "f#4@2 b3@5 ~@7 a#4@2",
AQ: "[a#4@5 ~ g#4@2 g#4@2 f#4@2 ~@4 [f#3,f#4]@2 f#4@2 ~@2 c#4@2 [f#3,f#4]@2 [f#3,f#4]@2 ~@4, ~@6 f4@3 ~@7]/2", // F#
AR: "~@4 [f#3,f#4]!2 [f3,f4]@2", AS: "~@2 f#4@2 [c#4,c#5]@2 c#5!2 [c#4,c#5]@2 f#4@2 ~@4",
AT: "~ f#4@2 c#5 c#5@2 [f#4,c#5]@2 [f#4,c#5]@2 [f#4,g#4]@2 [a#3,f#4,a#4]@2 g#4@2, [c#4,c#5] ~@7", // F#5 F#sus2 D#m C#
AU: "a#4@2 f#4@2 [c#4,c#5]@2 c#5!2 [c#4,c#5]@2 f#4@2 ~@2 f#4@2, a#3@2 ~ f#4@2 ~@3", // C#
AV: "[a#3,c#4,a#4,c#5]@2 ~ c#4 [a#3,c#4,a#4,c#5]@2 ~@2 [g#3,f#4,g#4,c#5]@2 [f#4,g#4]@2 [a#3,f#4,a#4]@2 ~@2, ~ f#4 ~ [f#4,c#5] ~@4, ~@7 [a#3,a#4]@2 ~@7", // A#m C#sus4 F#sus2 D#m F#5 A#
AW: "[g#3,g#4,a#4,b4]@2 a#4@3 ~ a#4@4 ~@2 f#4@4, ~ f#4@4 ~@3", AX: "a#4@2 g#4@3 ~ f#4@2 f#4@2 g#4@2 f#4@2 ~@2",
AY: "~@2 f#4@2 [c#4,c#5]@2 ~ c#5 c#5@2 f#4@2 ~@2 f#4@2", // C#
AZ: "[c#4,c#5]@2 ~ [c#4,c#5] [c#4,c#5]@2 f#4@2 f#4@2 g#4@2 [a#3,a#4]@2 ~@2", // C# A#
BA: "~@2 f#4@2 [c#4,c#5]@2 ~ [c#4,c#5] c#5@2 f#4@2 ~@2 f#4@2", // C#
BB: "[c#4,c#5]@2 ~ c#5 [c#4,c#5]@2 f#4@2 f#4@2 g#4@2 [a#3,a#4]@3 ~", // C# A#
BC: "a#4@3 ~@5 b4@2 a#4@2 g#4@2 f#4@2, ~@2 f#4@3 f#4@2 ~", BD: "~@4 f#4@2 ~@2 f#4 ~ g#4@2 a#4@2 ~@2, ~@9 f#4@2 ~@5",
BE: "~ b4@2 ~ f#4@2 ~@2", BF: "[a#3,a#4]@3 ~ [f#4,a#4]@3 ~ [f#4,g#4]@2 ~@2 [f3,f4]@4, ~@6 f#4 ~",
BG: "[g#4@2 ~@2 b4@2 b4@4 a#4@3 ~ a#4@4 g#4@4 f#4@3 ~@5 a#4@2, c#5 ~@7, ~ f#4@5 ~@10]/2",
BH: "[c#5@3 ~ b4@2 b4@4 a#4@3 ~ a#4@5 ~@3 f#4@2 f#4@2 g#4@2 f#4@3 ~]/2", BI: "a#4 g#4@2 ~, f#4@3 ~@13",
BJ: "a#4@3 ~ a#4@2 a#4@2 g#4@2 ~@2 f4@4", BK: "f#4@2 c#5 ~ c#5 f#4 ~ f#4",
BL: "[c#4,c#5]@2 ~ c#4 c#5@2 [f#3,f#4]@2 f#4@2 g#4@2 a#4@2 ~@2", BM: "~@2 f#4@2 [c#4,c#5]@2 ~ c#5 c#5@2 f#4@2 ~@4",
BN: "c#5 ~ c#5 ~ f#4 ~ a#4 ~", BO: "[a#4@3 ~@3 a#4@4 ~@6 f#4@3 ~ f#4@2 f#4@2 g#4@2 f#4@2 f4@3 ~, ~@7 a#4@2 ~@7]/2",
BP: "[f#4,g#4,c#5]@3 ~ c#5@2 ~@2 c#5@2 f#4@3 ~@3", BQ: "c#5 ~ c#5 ~ f#4 ~ a#4 f#4",
BR: "f#4@2 f#4 ~ c#5@2 c#5 ~ c#5@2 f#4@2 ~@4", BS: "c#5@2 ~@6 f#4@2 ~@2 a#4@3 ~", BT: "~ b4@2 ~ a#4@2 ~@2",
BU: "b4@2 ~@4 f#4@3 ~@7", BV: "a#4@3 ~@3 a#4@4 ~@6", BW: "~ c#5 ~ c#5 ~@4",
})).s("gm_synth_strings_1").gain(0.48).pan(0.3)
// other · synth strings 1 · soft notes
const synth_strings_1_soft = note(`<
~@10 A ~@13 B C ~ D ~@3 E ~@2 F ~ G ~@3 H ~@11 I J@3 K L ~@4 M N O ~ P ~@3 H ~@3 Q R S T U ~ V W X Y Z@2 AA AB AC AD ~
AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS AT AU AV AW AX AY ~
>`.pickRestart({
A: "~@2 g#4 ~@5", B: "~ g#4 ~@3 g#4 f#4 g#4", C: "~ g#4 ~@6", D: "~@2 a#4 ~", E: "~@7 a#4",
F: "~@3 g#4@2 ~@2 g#4@2 ~@7", G: "~@5 g#4 ~@2", H: "~@3 c#3 ~@4", I: "~@14 a#4!2", J: "~ g#4 ~@3 g#4 ~@2",
K: "~@11 a#4@3 ~@2", L: "~@6 c#5 ~", M: "a#4 ~@7", N: "~@11 b4@2 ~@3", O: "~@7 g#4@2 ~@7", P: "~@5 g#4@2 ~",
Q: "~@2 f#3@2 ~@3 c#4 ~@2 f#3@2 ~@2 [f#3,f#4]@2", R: "~@3 c#4 c#4@2 f#3@2 f#3@2 g#3@2 ~@4",
S: "~@2 f#3@2 ~@3 c#4 ~@2 f#3@2 ~@2 f#3@2, ~@3 f#3@2 ~@3", T: "~@3 c#5 ~@2 f#3@2 f#3@2 f#3@2 ~@2 g#4@2, ~@10 g#3 ~@5",
U: "~ f#3@4 g#4 ~@2", V: "~@2 f#3@2 ~@3 c#4 c#4@2 f#3@2 f#3@2 f#3@2", W: "~@3 f#3!2 g#3 ~@2",
X: "~ f#3 ~@2 c#4 f#3 ~ f#3", Y: "~@3 c#4 ~@2 f#3@2 f#3@2 g#3@2 ~@4",
Z: "[a#3@2 [g#3,g#4]@2 f#3@6 f#3@9 ~@4 g#4@2 ~ g#3@2 a#3@4, ~@25 f#3@2 ~@5]/2", AA: "~@7 g#4@2 ~@7, ~@3 a#4 ~@4",
AB: "~@4 a#3@3 ~ g#3@2 g#4@2 ~@4", AC: "g#3@2 f#3@11 ~@3", AD: "~@5 f#4 g#4 ~", AE: "~ g#4@2 ~@5", AF: "~@6 f#4 ~",
AG: "~@5 f#4 ~@2", AH: "~@4 d#5@2 ~ c#5 ~@8", AI: "~@3 c#5 c#4@2 ~@4 f#3@2 g#3@2 [a#2,a#3]@2",
AJ: "~@2 f#3@2 ~@4 c#4@2 ~ f#3@2 ~ f#4@2", AK: "c#4@2 ~ c#4 c#4@2 f#4@2 f#3@2 [g#3,g#4]@2 a#3@2 g#4@2",
AL: "a#3@2 g#4@2 [f#3,f#4]@3 ~@3 g#4@2 f#4@2 a#3@2, f#4 ~@3", AM: "~@2 [g#3,g#4]@2 f#3@3 ~ g#3@2 f#3@2 f3@2 ~@2",
AN: "g#3@2 f#3@4 ~ c#5 ~@6 f#4@2, ~ f#4 ~@6", AO: "c#4@2 ~ [c#4,c#5] c#4@2 [f#3,f#4]@2 f#3@2 [g#3,g#4]@2 a#3@2 ~@2",
AP: "~@3 f#4 c#4@2 ~ [c#4,c#5] c#4@2 f#3@2 ~@2 f#4@2", // C#
AQ: "c#4@2 ~@2 [c#4,c#5]@2 f#4 [f#3,f#4] f#3@2 ~@2 a#3@3 ~, ~@5 g#4 ~@2, ~@11 g#3@2 ~@3", AR: "~@3 a#4 ~@2 g#4 a#4",
AS: "~@2 a#4@2 g#4@2 ~@3 g#4@2 f#4@3 ~@2", AT: "a#3@4 ~@2 g#4@3 ~@2 g#4@2 f#4@2 ~, ~@2 g#4 ~@5, ~@5 g#3@2 ~@9",
AU: "~@2 [g#3,g#4,a#4]@2 g#4@2 ~@2 g#4@2 f#4@5 ~", // G#sus2
AV: "f#4@2 ~@2 c#5!2 ~@2 [c#4,f#4,c#5]@2 f#4@2 f#4@2 c#5@2, ~@2 c#4 ~@5", // F#5
AW: "c#5!2 c#5@2 [c#4,f#4,c#5]@2 [f#3,f#4]@2 g#4@2 [g#4,a#4]@2 [a#3,a#4]@2 ~@2, c#4 ~@7", // F#5 F# G#sus2 A#
AX: "f#4@2 c#5@2 ~ c#5 c#5@2 ~ f#4@2 f#4@2 ~ c#5@2, ~@4 c#4@2 ~@7 f#4@2 ~",
AY: "~ c#5 c#5@2 f#4@2 ~@2 f#4@2 g#4@2 a#4@3 ~",
})).s("gm_synth_strings_1").gain(0.24).pan(0.3)
// chords · piano
const piano = note(`<
~ A B A C A B A C D@2 E@2 F@2 G F G A B A C D@2 E@2 F@2 G F G D@2 E@2 D@2 G F G A B A C D@2 E@2 D@2 E@2 D@2 E@2 F@2 G
F G D@2 E@2 D@2 G F G A B A C D H D H I J K L M N O P Q R S T U V W X Y Z AA ~ U V W X Y Z AA ~ AB ~@6
>`.pickRestart({
A: "[c#5,f#5] ~ [c#5,f#5] ~@3 [c#5,f#5] ~ [c#5,f#5]@6 ~@2", // F#5
B: "[c#5,f#5] ~ [c#5,f#5] ~@3 [c#5,f#5] ~ [c#5,f#5]@3 ~ [c#5,f#5]@3 ~", // F#5
C: "[c#5,f#5] ~ [c#5,f#5] ~@3 [c#5,f#5] ~ [b4,d#5]@3 ~ [c#5,f5]@3 ~", // F#5 B C#
D: "[f#4,a#4] ~ [f#4,a#4]!3 ~ [f#4,a#4]!3 ~ [f#4,a#4]!3 ~ [f#4,a#4]!2", // F#
E: "[d#4,f#4] ~ [d#4,f#4]!3 ~ [d#4,f#4]!3 ~ [d#4,f#4]!3 ~ [d#4,f#4]!2", // D#m
F: "[b3,d#4] ~ [b3,d#4]!3 ~ [b3,d#4]!3 ~ [b3,d#4]!3 ~ [b3,d#4]!2", // B
G: "[d#4,f#4] ~ [d#4,f#4]!3 ~ [d#4,f#4]!2 [c#4,f4] ~ [c#4,f4]!3 ~ [c#4,f4]!2", // D#m C#
H: "[d#4,f#4] ~ [d#4,f#4]!3 ~ [d#4,f#4]!2 [b3,d#4] ~ [b3,d#4]!2 [c#4,f4] ~ [c#4,f4]!2", // D#m B C#
I: "a#4 ~ a#4 f#4!2 ~ [f#4,a#4]!2 a#4 ~ [f#4,a#4]!3 ~ [f#4,a#4] ~", // F#
J: "[d#4,f#4] ~ [d#4,f#4] f#4 ~@4 [b3,d#4] ~ d#4 b3 f4 ~ [c#4,f4] f4", // D#m B C#
K: "[f#4,a#4] ~ f#4 [f#4,a#4]!2 ~ a#4 f#4 ~@2 f#4 a#4 ~@3 a#4", // F#
L: "f#4 ~ [d#4,f#4] d#4 [d#4,f#4] ~@2 [d#4,f#4] [b3,d#4] ~ [b3,d#4] ~ f4 ~ f4 [c#4,f4]", // D#m B C#
M: "f#4 ~ f#4!2 [f#4,a#4] ~ [f#4,a#4]!2 f#4 ~ f#4!2 a#4 ~ a#4!2", // F#
N: "f#4 ~ f#4!2 ~@2 [d#4,f#4] d#4 [b3,d#4] ~@2 d#4 [c#4,f4] ~@3", // D#m B C#
O: "[f#4,a#4] ~ [f#4,a#4]!2 f#4 ~@2 [f#4,a#4] a#4 ~ f#4 a#4 ~@2 f#4!2", // F#
P: "~@2 [d#4,f#4]!3 ~ d#4 ~@4 b3 ~@2 c#4 [c#4,f4]", Q: "~@2 [f#4,a#4]!2 ~@3 f#4 [f#4,a#4] ~ f#4 ~ [f#4,a#4] ~ f#4 ~",
R: "f#4 ~@2 f#4!2 ~ d#4 ~@3 d#4 ~ c#4 ~ c#4 ~", S: "a#4 ~ a#4 f#4 a#4 ~ f#4 ~ f#4 ~@2 f#4 ~@4",
T: "~@4 [d#4,f#4] ~ d#4 f#4 b3 ~@6 f4", U: "f#4 ~@3 a#4 ~@2 f#4 ~@2 [f#4,a#4] ~ a#4 ~ f#4 ~",
V: "~@4 f#4 ~ d#4 ~ b3 ~ b3!2 ~@2 [c#4,f4] f4", W: "~@2 a#4 f#4 ~@2 a#4 ~@3 f#4 a#4 ~@4", X: "~@6 d#4!2 ~@7 f4",
Y: "~@8 [f#4,a#4] ~ f#4 ~@4 a#4", Z: "f#4 ~@5 d#4 ~@4 b3 ~@4", AA: "~@4 a#4 ~ [f#4,a#4] ~@8 f#4", AB: "f#4 ~@15",
})).s("gm_piano").gain(0.48).pan(0.6)
// chords · piano · soft notes
const piano_soft = note("<~@78 A B C D E F G H I J K L M N O P Q R S T M N O P Q R S T U T V T V T W>".pickRestart({
A: "f#4 ~ f#4 a#4!2 ~@3 f#4 ~@6 [f#4,a#4]", B: "~@3 d#4 [d#4,f#4] ~ [d#4,f#4]!2 ~@2 b3 d#4 c#4 ~@2 c#4",
C: "~@2 a#4 ~@3 f#4 a#4 [f#4,a#4] ~ a#4 f#4 [f#4,a#4] ~ [f#4,a#4] f#4", // F#
D: "d#4 ~@2 f#4 ~@2 [d#4,f#4] ~@4 [b3,d#4] c#4 ~ c#4 ~", E: "a#4 ~ a#4!2 ~@4 a#4 ~ a#4!2 f#4 ~ f#4!2",
F: "d#4 ~ d#4!2 [d#4,f#4] ~@2 f#4 ~@2 [b3,d#4] b3 ~@2 [c#4,f4]!2", // D#m B C#
G: "~@4 a#4 ~ [f#4,a#4] ~ f#4 ~ a#4 f#4 [f#4,a#4] ~ a#4!2", // F#
H: "[d#4,f#4] ~@5 f#4 [d#4,f#4] [b3,d#4] ~ [b3,d#4] d#4 [c#4,f4] ~ f4 ~", // D#m B C#
I: "[f#4,a#4] ~@3 [f#4,a#4] ~ [f#4,a#4] a#4 ~@2 a#4 [f#4,a#4] ~@2 a#4 [f#4,a#4]", // F#
J: "d#4 ~ [d#4,f#4] d#4!2 ~ f#4 [d#4,f#4] [b3,d#4] ~ b3 [b3,d#4] f4 ~ f4 [c#4,f4]", // D#m B C#
K: "f#4 ~ f#4 a#4 f#4 ~ a#4 [f#4,a#4] a#4 ~ [f#4,a#4] a#4 [f#4,a#4] ~ [f#4,a#4]!2", // F#
L: "[d#4,f#4] ~ [d#4,f#4]!2 ~@2 f#4 d#4!2 ~ [b3,d#4]!2 [c#4,f4] ~ [c#4,f4] c#4", // D#m B C#
M: "a#4 ~ [f#4,a#4]!2 f#4 ~ [f#4,a#4] a#4 [f#4,a#4] ~@2 [f#4,a#4] f#4 ~ a#4 [f#4,a#4]", // F#
N: "[d#4,f#4] ~ [d#4,f#4]!2 d#4 ~ f#4 [d#4,f#4] d#4 ~ d#4!2 [c#4,f4] ~@2 c#4", // D#m C#
O: "[f#4,a#4] ~ f#4 a#4 [f#4,a#4] ~ f#4 [f#4,a#4]!2 ~ a#4 f#4 [f#4,a#4] ~ [f#4,a#4]!2", // F#
P: "[d#4,f#4] ~ [d#4,f#4]!3 ~ f#4!2 [b3,d#4] ~ [b3,d#4]!2 [c#4,f4] ~ [c#4,f4] c#4", // D#m B C#
Q: "[f#4,a#4] ~ [f#4,a#4]!3 ~ [f#4,a#4]!2 ~@2 a#4 [f#4,a#4]!2 ~ [f#4,a#4] f#4", // F#
R: "d#4 ~ [d#4,f#4]!3 ~ f#4 [d#4,f#4] [b3,d#4] ~ [b3,d#4] d#4 [c#4,f4] ~ [c#4,f4]!2", // D#m B C#
S: "[f#4,a#4] ~ [f#4,a#4]!2 f#4 ~@2 [f#4,a#4]!2 ~ [f#4,a#4]!3 ~ [f#4,a#4] a#4", // F#
T: "[d#4,f#4] ~ [d#4,f#4]!3 ~ [d#4,f#4]!2 [b3,d#4] ~ [b3,d#4]!2 [c#4,f4] ~ [c#4,f4]!2", // D#m B C#
U: "a#4 ~ [f#4,a#4]!3 ~ [f#4,a#4]!3 ~ [f#4,a#4]!3 ~ [f#4,a#4]!2", // F#
V: "[f#4,a#4] ~ [f#4,a#4]!3 ~ [f#4,a#4]!3 ~ [f#4,a#4]!3 ~ [f#4,a#4]!2", // F#
W: "[f#4,a#4] ~ [f#4,a#4]!3 ~ [f#4,a#4]!3 ~ [f#4,a#4]!3 ~@3", // F#
})).s("gm_piano").gain(0.16).pan(0.6)
// … 156 more lines
More by Cyndi Lauper
True Colors1986 · C major · 122 bpmShe Bop1984 · A minor · 140 bpmAll Through The Night1984 · A♭ major · 95 bpmI Drove All Night1989 · A♭ major · 140 bpmThe Goonies R Good Enough1985 · E major · 140.4 bpmTime After TimeC major · 120 bpmLand of Lola- Pep BandB♭ major · 120 bpmWhat's Going OnG major · 126 bpm
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.