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: edit a riff to change every repeat.
// bass · acoustic bass
const bass = note(`<
~ A B C D A E F D G E C H I J K L K A M F N G E C O I P Q J R S T U V G W R X K A E C N Y B C Z Y B C Z A B AA Z I P K
J K AB AC AD AE A W K AF K G E C AG AH AI AJ AK AL AM AN AO AP AQ AR AS AT AU AV AW AX AY AZ BA BB BC BD BE AX AY AZ
BA BB BC BD BE BF BG ~@5
>`.pickRestart({
A: "f#1@3 ~ f#2 ~ f#1 ~ f#1@3 ~ f#2@3 ~", B: "f#1@3 ~ f#2@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 ~ f#1 ~ a#1@3 ~ c#2@3 ~", F: "d#2@3 ~ d#3 ~ d#2@2 d#2@3 ~ d#3@3 ~",
G: "f#1@3 ~ f#2@2 f#1 ~ f#1@3 ~ f#2@3 ~", H: "d#2@3 ~ d#3 ~ d#2 ~ d#2@3 ~ c#2@3 ~", I: "b1@3 ~ b2@3 ~ b1@3 ~ b2@3 ~",
J: "b1@3 ~ b2 ~ b1 ~ b1@3 ~ c#2@3 ~", K: "d#2@3 ~ d#3 ~ d#2 ~ c#2@3 ~ c#3@3 ~", L: "b1@3 ~ b2 ~ b1@2 b1@3 ~ c#2@3 ~",
M: "f#1@3 ~ f#2 ~ f#1@2 a#1@3 ~ c#2@3 ~", N: "d#2@3 ~ d#3@2 d#2 ~ b1@3 ~ c#2@3 ~",
O: "d#2@3 ~ d#3@2 d#2 ~ d#2@3 ~ c#2@3 ~", P: "b1@3 ~ b2@2 b1 ~ b1@3 ~ c#2@3 ~",
Q: "d#2@3 ~ d#3@2 d#2 ~ c#2@3 ~ c#3@3 ~", R: "d#2@3 ~ d#3 ~ d#2@2 c#2@3 ~ c#3@3 ~",
S: "[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
T: "[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
U: "d#2@3 ~ [a#1,d#3] ~ c#2@2 d#2@3 ~ [a#1,d#3]@3 ~, ~@6 d#2 ~@9", // D#5
V: "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
W: "f#1@3 ~ f#2 ~ f#1 ~ [f#1,a#1]@3 ~ [c#2,f#2]@3 ~", X: "b1@3 ~ b2 ~ b1 ~ [b1,g#2]@3 ~ [c#2,f#2]@3 ~",
Y: "f#1@3 ~ f#2 ~ f#1@2 f#1@3 ~ f#2@3 ~", Z: "d#2@3 ~ d#3@2 d#2@2 d#2@3 ~ c#2@3 ~",
AA: "d#2@3 ~ d#3@2 d#2 ~ d#2@3 ~ d#3@3 ~", AB: "[f#1,f#2]@3 ~ [c#2,f#2]@2 [f#1,d#2] ~ [f#1,f#2]@3 ~ [c#2,f#2]@3 ~",
AC: "[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
AD: "d#2@3 ~ [a#1,d#3] ~ d#2@2 d#2@3 ~ [a#1,d#3]@3 ~, ~@6 c#2 ~@9", // D#5
AE: "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
AF: "b1@3 ~ b2@2 b1 ~ [b1,g#2]@3 ~ [c#2,f#2]@3 ~", AG: "d#2@3 ~ d#3 ~ d#2 ~ b1@3 ~ c#2@3 ~",
AH: "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
AI: "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
AJ: "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
AK: "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
AL: "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
AM: "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
AN: "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
AO: "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
AP: "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
AQ: "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
AR: "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
AS: "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
AT: "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
AU: "d#2@2 a#3!2 d#3 ~ a#3 ~ b1@3 f#3 c#2@3 ~, ~@8 f#3 ~@7", AV: "f#1@2 c#4 ~ [f#2,c#4] ~ f#1 ~ f#1@3 ~ f#2@2 c#4 ~",
AW: "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
AX: "f#1@2 c#4!2 f#2 ~ [f#1,c#4] ~ f#1@3 ~ f#2@3 ~, ~@12 c#4 ~@3", AY: "~@4 a#3 ~ d#2 ~ b1@3 ~ c#2@3 ~, ~@8 f#3 ~@7",
AZ: "f#1@3 ~ f#2 ~ f#1 c#4 f#1@3 ~ f#2@2 c#4!2", BA: "d#2@3 ~@3 d#2 ~ b1@3 ~ c#2@3 ~, ~@12 g#3 ~@3",
BB: "f#1@3 ~@3 f#1 ~ f#1@3 ~ f#2@3 c#4, c#4 ~@11 c#4 ~@3", BC: "d#2@3 ~ a#3 ~@2 a#3 ~@4 g#3 ~@3",
BD: "f#1@3 ~ f#2 ~ f#1 ~ f#1@3 c#4 f#2@3 ~", BE: "~@6 d#2 a#3 b1@3 ~@5",
BF: "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", BG: "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 AK AL@2 AM AN
AO@2 AP AQ AR@2 AS AT AU AV AW AX AY AZ BA BB BC BD BE BF BG BH BI BJ@2 BK@2 BL BM BN BO BP BQ BR@2 BS BT BU BV BW BX
BY BZ CA ~@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: "a#4@3 g#4!2 f#4 f4 ~",
AL: "[~@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",
AM: "~@2 f#4@2 d#5@3 ~ c#5@3 ~ a#4@3 ~", AN: "a#4@3 ~ f#4@3 ~ a#4@3 ~@5, ~@3 g#4@2 ~@11",
AO: "[[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#
AP: "f#4@5 ~ g#4@2 g#4@2 f#4@2 f4@3 ~, a#4 ~@7", AQ: "f#4@2 b3@5 ~@7 a#4@2",
AR: "[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#
AS: "~@4 [f#3,f#4]!2 [f3,f4]@2", AT: "[d#3,d#4]@4 ~@4 [d#3,d#4]@3 ~@5", AU: "~@8 [d#3,d#4]@2 [d#3,d#4]@2 [f3,f4]@3 ~",
AV: "~@2 f#4@2 [c#4,c#5]@2 c#5!2 [c#4,c#5]@2 f#4@2 ~@4", // C#
AW: "~ 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#
AX: "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#
AY: "[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#
AZ: "[g#3,g#4,a#4,b4]@2 a#4@3 ~ a#4@4 ~@2 f#4@4, ~ f#4@4 ~@3", BA: "a#4@2 g#4@3 ~ f#4@2 f#4@2 g#4@2 f#4@2 ~@2",
BB: "~@2 f#4@2 [c#4,c#5]@2 ~ c#5 c#5@2 f#4@2 ~@2 f#4@2", // C#
BC: "[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#
BD: "~@2 f#4@2 [c#4,c#5]@2 ~ [c#4,c#5] c#5@2 f#4@2 ~@2 f#4@2", // C#
BE: "[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#
BF: "a#4@3 ~@5 b4@2 a#4@2 g#4@2 f#4@2, ~@2 f#4@3 f#4@2 ~", BG: "~@4 f#4@2 ~@2 f#4 ~ g#4@2 a#4@2 ~@2, ~@9 f#4@2 ~@5",
BH: "~ b4@2 ~ f#4@2 ~@2", BI: "[a#3,a#4]@3 ~ [f#4,a#4]@3 ~ [f#4,g#4]@2 ~@2 [f3,f4]@4, ~@6 f#4 ~",
BJ: "[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",
BK: "[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", BL: "a#4 g#4@2 ~, f#4@3 ~@13",
BM: "a#4@3 ~ a#4@2 a#4@2 g#4@2 ~@2 f4@4", BN: "f#4@2 c#5 ~ c#5 f#4 ~ f#4",
BO: "[c#4,c#5]@2 ~ c#4 c#5@2 ~@2 f#4@2 g#4@2 a#4@2 ~@2, ~@3 f#4 ~@4, ~@7 f#3@3 ~@6", // C#
BP: "~@2 f#4@2 [c#4,c#5]@2 ~ c#5 c#5@2 f#4@2 ~@4", BQ: "c#5 ~ c#5 ~ f#4 ~ a#4 ~",
BR: "[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 ~, ~@15 a#4@4 ~@13]/2",
BS: "[f#4,g#4,c#5]@3 ~ c#5@2 ~@2 c#5@2 f#4@3 ~@3", BT: "c#5 ~ c#5 ~ f#4 ~ a#4 f#4",
BU: "f#4@2 f#4 ~ c#5@2 c#5 ~ c#5@2 f#4@2 ~@4", BV: "c#5@2 ~@6 f#4@2 ~@2 a#4@3 ~", BW: "~ b4@2 ~ a#4@2 ~@2",
BX: "b4@2 ~@4 f#4@3 ~@7", BY: "a#4@3 ~@3 a#4@4 ~@6", BZ: "b4 ~@2 f#4 ~@4", CA: "~ 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 K@2 L M ~@4 N O P ~ Q ~@3 H ~@3 R S T U V ~ W X Y Z AA@2 AB AC AD
AE ~ AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS AT AU AV AW AX AY AZ ~
>`.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: "~@2 g#4@3 ~@5 g#4@2 ~@4",
K: "~ g#4 ~@3 g#4 ~@2", L: "~@11 a#4@3 ~@2", M: "~@6 c#5 ~", N: "a#4 ~@7", O: "~@11 b4@2 ~@3", P: "~@7 g#4@2 ~@7",
Q: "~@5 g#4@2 ~", R: "~@2 f#3@2 ~@3 c#4 ~@2 f#3@2 ~@2 [f#3,f#4]@2", S: "~@3 c#4 c#4@2 f#3@2 f#3@2 g#3@2 ~@4",
T: "~@2 f#3@2 ~@3 c#4 ~@2 f#3@2 ~@2 f#3@2, ~@3 f#3@2 ~@3", U: "~@3 c#5 ~@2 f#3@2 f#3@2 f#3@2 ~@2 g#4@2, ~@10 g#3 ~@5",
V: "~ f#3@4 g#4 ~@2", W: "~@2 f#3@2 ~@4 c#4@2 f#3@2 ~ f#3 f#3@2", X: "~@3 f#3!2 g#3 ~@2",
Y: "~@2 f#3@2 ~@4 c#4@2 ~ f#3@2 ~ f#3@2", Z: "~@3 c#4 ~@2 f#3@2 f#3@2 g#3@2 ~@4",
AA: "[a#3@2 [g#3,g#4]@2 f#3@6 ~ f#3@9 ~@3 g#4@2 ~ g#3@2 a#3@4, ~@25 f#3@2 ~@5]/2", AB: "~@7 g#4@2 ~@7, ~@3 a#4 ~@4",
AC: "~@4 a#3@3 ~ g#3@2 g#4@2 ~@4", AD: "g#3@2 f#3@11 ~@3", AE: "~@5 f#4 g#4 ~", AF: "~ g#4@2 ~@5", AG: "~@6 f#4 ~",
AH: "~@5 f#4 ~@2", AI: "~@4 d#5@2 ~ c#5 ~@8", AJ: "~@3 c#5 c#4@2 ~@4 f#3@2 g#3@2 [a#2,a#3]@2",
AK: "~@2 f#3@2 ~@4 c#4@2 ~ f#3@2 ~ f#4@2", AL: "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",
AM: "a#3@2 g#4@2 [f#3,f#4]@3 ~@3 g#4@2 f#4@2 a#3@2, f#4 ~@3", AN: "~@2 [g#3,g#4]@2 f#3@3 ~ g#3@2 f#3@2 f3@2 ~@2",
AO: "g#3@2 f#3@4 ~ c#5 ~@6 f#4@2, ~ f#4 ~@6", AP: "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",
AQ: "~@3 f#4 c#4@2 ~ [c#4,c#5] c#4@2 ~ f#3@2 ~ f#4@2", // C#
AR: "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", AS: "~@3 a#4 ~@2 g#4 a#4",
AT: "~@2 a#4@2 g#4@2 ~@3 g#4@2 f#4@3 ~@2", AU: "a#3@4 ~@2 g#4@3 ~@2 g#4@2 f#4@2 ~, ~@2 g#4 ~@5, ~@5 g#3@2 ~@9",
AV: "~@4 g#4@2 ~@2 g#4@2 f#4@5 ~, ~ [g#4,a#4] ~@6, ~@3 g#3@3 ~@10", // G#sus2
AW: "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
AX: "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#
AY: "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 ~",
AZ: "~ 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#
// … 165 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.