0:00/0:00
// It's Alright — Pet Shop Boys
// 120 bpm, 4/4, key F minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 5 "CHOIR AAHS" choir aahs (copy of ch 1 "STEEL GTR" acoustic guitar steel)
// note: Full arrangement: all 120 bars on a 16-step grid, each part at one level. 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.
// other · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
~@8 A B C@2 D E F@2 ~@12 A B G@2 A E H@2 ~@16 A B I@2 D E J@3 K@2 L@3 M@3 N O P Q R ~@6 A B S@2 A E T@2 A B C@2 A E
T@2 A E C@2 A E T@2 A B G@2 A E U@2 ~@8
>`.pickRestart({
A: "f4@3 bb4", B: "g4@3 ab4", C: "[f4@29 ~@3]/2", D: "f4 ~@11 bb4@4", E: "g4@3 eb4", F: "[c5@7 ~]/2", G: "[f4@7 ~]/2",
H: "[c5@15 ~]/2", I: "[f4@13 ~@3]/2", J: "[c5@35 ~@13]/3", K: "[~@7 eb5@7 f5@2]/2", L: "c5/3",
M: "[bb4@32 db5 ~@15]/3", N: "eb5@13 ~@3", O: "f5", P: "g5@2 ab5 bb5", Q: "eb5", R: "c5", S: "[f4@15 ~]/2",
T: "[c5@29 ~@3]/2", U: "[c5@31 ~]/2",
})).s("gm_acoustic_guitar_steel").gain(0.32).pan(0.3)
// other · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
~@2 A@2 B ~ B C D E F@2 D G H@2 ~@11 I D J K@2 D G L@2 B ~ B ~@12 I D J M I D G N@2 O@6 P@2 Q R S T R U V ~@4 I D J
W@2 D G X@2 D J Y@2 Z G AA@2 D J F@2 D G AB@2 D AC AD@2 D G AE AF AG ~@7
>`.pickRestart({
A: "[[bb1,f2,eb3,ab3]@15 ~]/2", B: "[ab2,ab3] [bb2,bb3] ~ [ab2,ab3] [bb2,bb3] ~ [ab2,ab3] [bb2,bb3] ~@8",
C: "~@11 db4 ~ bb3 ab3 eb3, ~@10 c4@3 ~@3", D: "f3@3 bb3", E: "g3@11 ab3@4 ~", F: "[f3@25 ~ c4 db4 c4 bb3 ab3 eb3]/2",
G: "g3@3 eb3", H: "[c4@7 ~]/2", I: "~@10 c4 db4 c4 bb3 ab3 eb3", J: "g3@3 ab3",
K: "[f3@23 ~@3 c4 db4 c4 bb3 ab3 eb3]/2", L: "[c4@11 ~@5]/2", M: "f3@11 ~@5", N: "c4/2", O: "c3/6", P: "eb3/2",
Q: "db5", R: "eb5", S: "f5", T: "g5@2 ab5 bb5", U: "c5", V: "bb4 ~@15",
W: "[f3@24 ~@2 c4 db4 ~ bb3 ab3 eb3, ~@14 c4 ~]/2", X: "[c4@24 ~@2 c4 db4 c4 bb3 ab3 eb3]/2",
Y: "[f3@24 ~@2 c4 db4 c4 bb3 ab3 eb3]/2", Z: "f3@12 bb3@3 ~", AA: "[c4@22 ~@4 c4 db4 c4 bb3 ab3 eb3]/2",
AB: "[c4@23 ~@3 c4 db4 c4 bb3 ab3 eb3]/2", AC: "g3@12 eb3 eb3@2 ~",
AD: "[f3@21 ~@5 c4 db4 ~ bb3 ab3 eb3, ~@14 c4 ~]/2", AE: "c4@12 ab3 bb3 c4 eb4", AF: "f4@12 ab4 bb4 c5 eb5",
AG: "f5 ~@7",
})).s("gm_string_ensemble_1").gain(0.24).pan(0.4)
// chords · pizzicato strings · "PIZZICATO"
const pizzicato_strings = note(`<
~@2 A B ~@8 C D E F G H I J K L M N O@2 P@2 K Q I R S Q T U K V W X K Y Z AA K Q AB AC AD P AE P AF AG AH AI AJ AG AK
AL AM AN AO AP AQ AR AS AT AU AV AW AX AY AZ BA BB P@4 BC BD BE BF BG BH BI BJ K Q BK BL BM Q BN BO BP BQ BR BS K Q BT
BU K Q BV BW K Q BX BY BZ ~@7
>`.pickRestart({
A: "eb4 f4 ab4 bb4 f4 ab4 bb4 db5 ab4 bb4 db5 f5 bb4 db5 f5 ab5",
B: "db5 eb5 f5 ab5 eb5 f5 ab5 bb5 f5 ab5 bb5 db6 ab5 bb5 db6 eb6",
C: "~@2 [ab4,db5] ~ [ab4,db5]!2 ~ [ab4,db5] ~ [ab4,db5]!2 ~@3 [ab4,db5]!2", // Db5
D: "~@2 [bb4,eb5] ~ [bb4,eb5]!2 ~ [bb4,eb5] ~ [bb4,eb5]!2 ~@3 [bb4,eb5]!2", // Eb5
E: "~@2 [c5,f5] ~@2 [c5,eb5] ~@2 [c5,f5] ~@2 [c5,f5] ~@2 [c5,eb5]!2", // F5 Cm F5 Cm
F: "~@2 [c5,f5] ~@2 [c5,eb5] ~ [c5,f5] ~ [c5,f5] [c5,eb5] ~ [c5,f5] ~ [c5,eb5] [c5,f5]", // F5 Cm F5 Cm F5 Cm F5
G: "~@4 [ab4,db5] ~@2 [ab4,db5] ~ [ab4,db5] ~@4 [ab4,db5]!2", // Db5
H: "~@2 bb4 ~ eb5 [bb4,eb5] ~@2 [bb4,eb5] ~@2 [bb4,eb5] ~@2 [bb4,eb5]!2", // Eb5
I: "~@2 [c5,f5] ~@2 [c5,f5] ~@2 [c5,eb5] ~@2 [c5,f5] ~@4", // F5 Cm F5
J: "~@2 [c5,f5] ~@2 [c5,eb5] ~@2 [c5,f5] ~@2 [c5,eb5] ~ [c5,eb5] [c5,f5] ~", // F5 Cm F5 Cm F5
K: "~@2 [ab4,db5] ~@2 [ab4,db5] ~@2 [ab4,db5] ~@2 [ab4,db5] ~@2 [ab4,db5]!2", // Db5
L: "~@2 [bb4,eb5] ~@2 [bb4,eb5] ~@2 [bb4,eb5]!2 ~@3 [bb4,eb5] ~@2", // Eb5
M: "~@2 [c5,f5] ~@2 [c5,f5] ~@2 c5 ~@2 [c5,f5] ~@2 [c5,eb5] ~", // F5 Cm
N: "~@2 [c5,eb5] ~@2 [c5,f5] ~@2 [c5,eb5] ~@2 [c5,f5] ~@4", O: "~@9 [db5,f5,ab5] ~@2 [db5,f5,ab5] ~ [db5,f5,ab5]!2",
P: "~@9 [db5,f5,ab5] ~@2 [db5,f5,ab5] ~@3", // Db
Q: "~@2 [bb4,eb5] ~@2 [bb4,eb5] ~@2 [bb4,eb5] ~@2 [bb4,eb5] ~@2 [bb4,eb5]!2", // Eb5
R: "~@2 [c5,eb5] ~ [c5,eb5] [c5,f5] ~ [c5,f5] ~ [c5,f5] [c5,eb5] ~ [c5,f5] ~ [c5,eb5] ~", // Cm F5 Cm F5 Cm
S: "~@2 [ab4,db5]!4 ~@2 [ab4,db5] ~@2 [ab4,db5] ~@2 [ab4,db5]!2", // Db5
T: "~@2 [c5,f5] ~@2 [c5,f5] ~@2 [c5,f5] ~@3 [c5,eb5] ~ [c5,eb5] ~", // F5 Cm
U: "~@2 [c5,f5] ~@2 [c5,eb5] ~ [c5,f5] ~ [c5,f5] [c5,eb5] ~ [c5,f5] ~ [c5,eb5] ~", // F5 Cm F5 Cm F5 Cm
V: "~@2 [bb4,eb5] ~ [bb4,eb5]!2 ~ [bb4,eb5] ~ eb5 ~@2 [bb4,eb5] ~ [bb4,eb5]!2", // Eb5
W: "~@2 [c5,f5] ~ [c5,f5] [c5,eb5] ~ [c5,f5] ~ [c5,f5] [c5,g5] ~@3 [c5,eb5] ~", // F5 Cm F5 C5 Cm
X: "~@2 [c5,f5] ~@2 [c5,eb5] ~ c5 ~@2 [c5,eb5] ~ [c5,f5] ~ [c5,eb5] ~", // F5 Cm F5 Cm
Y: "~@2 [bb4,eb5] ~@2 [bb4,eb5] ~@2 [bb4,eb5]!2 ~ [bb4,eb5] ~@2 [bb4,eb5]!2", // Eb5
Z: "~@2 [c5,f5] ~ [c5,f5]!2 ~ [c5,eb5] ~ [c5,eb5] [c5,f5] ~@3 [c5,f5] ~", // F5 Cm F5
AA: "~@2 [c5,f5] ~ [c5,f5] ~ eb5 ~ eb5 [c5,f5] ~ [c5,g5] ~@2 db5 ~", // F5 C5
AB: "~@2 [c5,f5] ~ [c5,f5] ~@2 [c5,eb5] ~ eb5 [c5,f5] ~@3 c5 ~", // F5 Cm F5
AC: "~@2 [c5,eb5] ~ eb5 [c5,f5] ~ [c5,f5] ~ [c5,f5] eb5 ~ [c5,f5] ~@3", // Cm F5
AD: "~@9 [db5,f5,ab5] ~@2 [db5,f5,ab5] ~ [db5,f5,ab5] ~", AE: "~@9 [db5,f5,ab5] ~@2 [db5,f5] ~@3",
AF: "~@4 [ab4,db5] ~@2 [ab4,db5] ~@4 [ab4,db5] ~ [ab4,db5]!2", // Db5
AG: "~@2 [bb4,eb5] ~@2 [bb4,eb5] ~@2 [bb4,eb5] ~@5 [bb4,eb5]!2", // Eb5
AH: "~@2 [c5,f5] ~@2 [c5,f5] ~@2 [c5,f5] ~@5 [c5,f5]!2", AI: "~@2 [c5,f5] ~@2 [c5,f5] ~@2 [c5,f5] ~@5 [c5,f5] ~",
AJ: "~@2 [ab4,db5] ~@2 [ab4,db5] ~@2 [ab4,db5] ~@5 [ab4,db5]!2", // Db5
AK: "~@2 [c5,f5] ~@2 [c5,f5] ~@2 [c5,f5] ~@5 [c5,eb5] ~", // F5 Cm
AL: "[c5,eb5] [c5,f5] ~ [c5,f5] ~ [c5,f5] [c5,eb5] ~ [c5,g5] ~ [c5,eb5] ~ [c5,f5] ~@3", // Cm F5 Cm C5 Cm F5
AM: "~@2 [c5,eb5] ~@2 [bb4,eb5] ~@2 c5 ~@2 [bb4,eb5] ~ [bb4,eb5] c5 ~", // Cm Eb5
AN: "~@2 [c5,f5] ~@2 [c5,eb5] ~@2 [c5,f5] ~@2 [eb5,ab5] ~ [eb5,ab5] [c5,f5] ~", // F5 Cm F5 Ab5 F5
AO: "bb4 ~ [bb4,eb5] ~@2 [bb4,c5] ~ [bb4,eb5] ~ [bb4,eb5] c5 ~@3 [bb4,eb5] ~", // Eb5 Bbsus2 Eb5
AP: "~@2 [c5,f5] ~@2 [bb4,eb5] ~ [c5,f5] ~ [c5,f5] eb5 ~ [c5,f5] ~ eb5 [c5,f5]", // F5 Eb5 F5
AQ: "~@2 [c5,eb5] ~@2 [bb4,eb5] ~ eb5 ~ c5 [bb4,eb5] ~ c5 ~ [bb4,eb5] ~", // Cm Eb5
AR: "~@2 [c5,f5] ~@2 [c5,eb5] ~ [c5,f5] ~ [c5,f5] eb5 ~ [c5,f5] ~ eb5 ~", // F5 Cm F5
AS: "~@2 [bb4,eb5] ~@2 c5 ~ [bb4,eb5] ~ [bb4,eb5] c5 ~ [bb4,eb5] ~ c5 bb4", // Eb5
AT: "~@2 [bb4,eb5] ~ [bb4,eb5] c5 ~ [bb4,eb5] ~ [bb4,eb5] c5 ~ [bb4,eb5] ~ c5 bb4", // Eb5
AU: "~@7 [ab4,db5] ~ db5 ~@2 [ab4,db5] ~@3", // Db5
AV: "~@2 [bb4,eb5] ~@2 [bb4,eb5] ~ [bb4,eb5] ~ [bb4,eb5]!2 ~@3 eb5 [bb4,eb5]", // Eb5
AW: "~@2 [c5,f5] ~ [c5,f5]!2 ~ [c5,f5] ~ [c5,f5] ~@2 [c5,f5] ~ f5 ~", AX: "~@2 [eb5,g5] ~ [eb5,g5] ~@5 eb5 ~@5",
AY: "~@2 [ab4,db5] ~@13", AZ: "~@2 eb5 ~@4 f5 ~ f5 eb5 ~ f5 ~ eb5 ~",
BA: "~@2 eb5 ~@2 [bb4,eb5] ~ [bb4,eb5] ~ [bb4,eb5] ~@2 [bb4,eb5] ~ c5 [bb4,eb5]", // Eb5
BB: "~@2 [bb4,c5] ~@2 [bb4,eb5] ~ [bb4,c5] ~ c5 [bb4,eb5] ~ [bb4,c5] ~ [bb4,eb5] ~", // Bbsus2 Eb5 Bbsus2 Eb5 Bbsus2 Eb5
BC: "~@9 [ab4,db5] ~@2 [ab4,db5] ~ [ab4,db5]!2", // Db5
BD: "~@2 [bb4,eb5] ~@2 [bb4,eb5] ~ [bb4,eb5] ~ eb5 [bb4,eb5] ~@3 [bb4,eb5]!2", // Eb5
BE: "~@2 [c5,f5] ~ [c5,f5]!2 ~ [c5,f5] ~ f5 [c5,eb5] eb5 [c5,g5] ~ eb5 ~", // F5 Cm C5
BF: "f5 ~ [c5,f5] ~@2 [c5,f5] ~ [c5,f5] ~ f5 eb5 ~ [c5,ab5] ~ [c5,f5] ~", // F5 Fm F5
BG: "~@2 [ab4,db5] ~@2 [ab4,db5] ~ [ab4,db5] ~ [ab4,db5] ~@2 [ab4,db5] ~ [ab4,db5]!2", // Db5
BH: "~@2 [bb4,eb5] ~@2 [bb4,eb5] ~ [bb4,eb5] ~ eb5 ~@2 eb5 [bb4,eb5]!2 eb5", // Eb5
BI: "~@5 [c5,f5] ~ [c5,f5] ~ f5 eb5 ~@3 eb5 ~", BJ: "~ [c5,f5] ~@7 f5 [c5,eb5] ~ [c5,f5] ~ [c5,eb5] ~",
BK: "~@2 [c5,f5] ~@2 [c5,eb5] ~ [c5,f5] ~@4 [c5,eb5] ~ [c5,f5] ~", // F5 Cm F5 Cm F5
BL: "~@2 [c5,ab5] ~@2 [c5,f5] ~ [c5,eb5] ~ eb5 [c5,f5] ~ [c5,eb5] ~ [c5,f5] ~", // Fm F5 Cm F5 Cm F5
BM: "~@2 [ab4,db5] ~@2 [ab4,db5] ~ [ab4,db5] ~@2 [ab4,db5] ~@3 [ab4,db5]!2", // Db5
BN: "~@2 [c5,f5] ~@2 eb5 ~ [c5,f5] ~@2 eb5 ~ eb5 ~ [c5,f5] ~", // F5
BO: "~@2 [c5,f5] ~@2 eb5 ~ [c5,f5] ~ f5 eb5 f5 eb5 c5 eb5 ~", // F5
BP: "~@2 [ab4,db5] ~@2 [ab4,db5] ~ [ab4,db5] ~ db5 ~@2 [ab4,db5] ~ [ab4,db5]!2", // Db5
BQ: "~@2 [bb4,eb5] ~@2 [bb4,eb5] ~ [bb4,eb5] ~ eb5 ~@2 [bb4,eb5] ~ [bb4,eb5]!2", // Eb5
BR: "~@2 [c5,f5] ~@2 [c5,f5] ~ f5 ~@2 eb5 ~ eb5 ~ [c5,f5] ~", // F5
BS: "~@2 [c5,f5] ~@2 eb5 ~ f5 ~ f5 [c5,eb5] ~ [c5,f5] ~ [c5,eb5] ~", // F5 Cm F5 Cm
BT: "~@2 [c5,f5] ~@2 [c5,eb5] ~ [c5,f5] ~@4 [c5,f5] ~ [c5,eb5] ~", // F5 Cm F5 Cm
BU: "~@2 [c5,f5] ~@2 [c5,f5] ~ [c5,f5] ~ f5 ~@2 [c5,f5] ~ eb5 ~", // F5
BV: "~@2 [c5,f5] ~ f5!2 ~ [c5,f5] ~ [c5,f5] ~@2 [c5,f5] ~ [c5,eb5] ~", // F5 Cm
BW: "~@2 [c5,f5] ~@2 [c5,f5] ~ [c5,f5] ~ [c5,f5]!2 ~ [c5,f5] ~ [c5,f5] ~", // F5
BX: "~@2 [c5,f5] ~@2 [c5,f5] ~@2 [c5,f5] ~@2 [c5,eb5] ~@2 [c5,f5] ~", // F5 Cm F5
BY: "~@2 [c5,f5] ~@2 [c5,eb5] ~ [c5,f5] ~ [c5,f5] eb5 ~ f5 ~ eb5 ~", BZ: "f5 ~@15",
})).s("gm_pizzicato_strings").gain(0.2).pan(0.6)
// chords · piano · "A.PIANO"
const piano = note(`<
A ~@15 B ~@3 C@2 ~@2 D@4 ~@12 E ~@3 B ~@3 D F D@2 ~@24 D G D@2 B H I@2 J K L ~ M N L ~ J N L ~ M N O@2 B H L ~ E P I@2
J N Q@2 R ~@7
>`.pickRestart({
A: "db-1", B: "db1", C: "[db1@21 ~@11]/2", D: "~@4 [c3,eb3,g3]@3 [db3,f3,ab3] ~@8", E: "db1@15 ~",
F: "~@4 [c3,eb3,g3]@3 [db3,f3,g3,ab3] ~@8", G: "~@4 [c3,eb3,g3]@3 [db3,f3,ab3] ~@8, ~@4 f3 ~@11", H: "eb1",
I: "[f1@21 ~@11]/2", J: "db1@7 ~", K: "eb1@3 ~", L: "f1", M: "db1@13 ~@3", N: "eb1@7 ~", O: "[f1@9 ~@7]/2",
P: "eb1@13 ~@3", Q: "[f1@7 ~]/2", R: "f1 ~@7",
})).s("gm_piano").gain(0.36).pan(0.2)
// chords · piano · "A.PIANO"
const piano_2 = note(`<
~@2 A@2 B C D@2 E C D@2 B F G@3 H I@2 J K D@2 ~@4 B C D@2 B C I@2 J C D@2 B H I@2 B H L@2 ~@4 J H I@2 B M D@2 N@6 O@2
J C P Q R@2 S@2 ~@4 J M D@2 B T D@2 B M I@2 B T D@2 B T I@2 B F D@2 B M D@2 J M D@2 ~@8
>`.pickRestart({
A: "[eb4,bb4,db5,f5,ab5]/2", B: "[ab4,db5,f5]@15 ~", C: "[bb4,eb5,g5]", D: "[[ab4,c5,f5]@15 ~]/2",
E: "[db5,f5], ab4@7 ~", F: "[bb4,eb5,g5]@15 ~", G: "[[ab4,c5,f5]@30 ~ [ab4,db5,f5]@16 ~]/3", H: "[g4,bb4,eb5]",
I: "[[ab4,c5,f5]@31 ~]/2", J: "[ab4,db5,f5]", K: "[g4,bb4]@7 ~, eb5", L: "[[ab4,c5,f5]@29 ~@3]/2",
M: "[g4,bb4,eb5]@15 ~", // Eb
N: "[[g4,bb4]@16 [ab4,c5]@16 bb4@16 [ab4,c5]@16 [g4,bb4]@16 [ab4,c5]@13 ~@3, eb5@31 ~, ~@32 g4@15 ~@49]/6", // Gm Ab Gm Ab
O: "[[bb4,eb5,g5]@31 ~]/2", P: "[ab4,c5]@7 ~, f5", Q: "[bb4,eb5,g5]@11 ~@5", R: "[db5@7 ~ c5@23 ~, [ab4,f5]@31 ~]/2",
S: "[g4,bb4,eb5]/2", T: "[g4,bb4,eb5]@7 ~",
})).s("gm_piano").gain(0.28).pan(0.8)
// bass · electric bass finger · "ACOU BASS"
const bass = note(`<
~@4 A B C D E F G H I B J K L M N O L P J Q R S T U L P J V W X J Y L P C Z AA AB AC AD AE AF AG AH AI@2 AJ AK AL AM
AN AO AP AM G AQ AR AS AR AS AR AS AT AU AV AM AW AX AY G AZ BA T AJ AI BB L AM G BC I B G BD AP AM J BE BF BG J BH I
P BI BJ AP AM J BK BL AM BM BN BO BP BM BQ BR ~@7
>`.pickRestart({
A: "db1 ~ db1 ~ db1 ~ db1!2 ~ db1 ab1@2 g1@2 f1@2", B: "eb1 ~ eb1 ~ eb1 ~ eb1 ab1 ~ ab1 g1@2 f1 ~ eb1@2",
C: "f1 ~ f1 ~ f1 ~ f1 ab1 ~ ab1 g1@2 f1 ~ eb1@2", D: "f1 ~ f1 ~ f1 ~ f1 ab1 ~ ab1 g1@2 f1 db1@2 c1, ~@13 eb1 ~@2",
E: "db1 ~ db1 ~ db1 ~ db1 ab1 ~ ab1 g1@2 f1 ~ eb1 ~", F: "~@2 eb1 ~ eb1 ~ eb1 ab1 ~ ab1 g1@2 f1 ~ eb1@2",
G: "f1 ~ f1 ~ f1 ~ f1 ab1 ~ ab1 g1@2 f1@2 eb1@2", H: "f1 ~ f1 ~ f1 ~ f1 ab1 ~ ab1 g1 f1 eb1 db1 c1@2",
I: "db1 ~ db1 ~ db1 ~ db1 ab1 ~ ab1 g1 ~ f1 ~ db1@2", J: "f1 ~ f1 ~ f1 ~ f1 ab1 ~ ab1 g1 ~ f1 ~ eb1@2",
K: "f1 ~ f1 ~ f1 ~ f1 ab1 ~ ab1 g1 ~ f1 eb1 c1@2", L: "db1 ~ db1 ~ db1 ~ db1!2 ~ db1!2 ~ db1 ~ db1!2",
M: "eb1 ~ eb1 ~ eb1 ~ eb1!2 ~ eb1!2 ~ eb1 ~ eb1!2", N: "f1 ~ f1 ~ f1 ~ f1 ab1 ~ ab1 f1 ~ eb1 ~ f1@2",
O: "g1 ~ g1 ~ g1 ~ g1 ab1 ~ ab1 g1 f1 eb1 db1 c1@2", P: "eb1 ~ eb1 ~ eb1 ~ eb1 ab1 ~ ab1 g1 ~ f1 ~ eb1@2",
Q: "g1 ~ g1 ~ g1 ~ g1 ab1 ~ ab1 g1 f1 eb1@2 c1@2", R: "c1@2 c1 ~ c1 ~ c1 ab1 ~ ab1 g1@2 f1@2 eb1@2",
S: "c1 ~ c1 ~ c1 ~ c1 ab1 ~@2 g1@2 f1 eb1 f1 g1, ~@9 ab1@2 ~@5", T: "c1 ~ c1 ~ c1 ~ c1 ab1 ~ ab1 g1 ~ f1@2 eb1@2",
U: "c1 ~ c1 ~ c1 ~ c1 ab1 ~ ab1 g1@2 f1 eb1 f1 g1", V: "f1 ~ f1 ~ f1 ~ f1 ab1 ~ ab1 bb1 ab1 f1 ~ eb1@2",
W: "db1 ~ db1 ~ db1 ~ db1 ab1 ~ ab1 g1 ~ f1 ~ eb1@2", X: "f1 ~ eb1 ~ eb1 ~ eb1 ab1 ~ ab1 g1 ~ f1 ~ eb1@2",
Y: "f1 ~ f1 ~ f1 ~ f1 bb1 ~ bb1 ab1 g1 f1 eb1 db1 ~", Z: "f1 ~ f1 ~ f1 ~ f1 ab1 ~ ab1 g1@2 ~ ab1 g1 eb1, ~@6 bb1 ~",
AA: "db1@2 ~@2 db1 ~@2 db1 ~ db1!2 ~ db1 ~ db1@2", AB: "eb1@2 ~@2 eb1@2 ~ eb1 ~ eb1 ab1@2 g1@2 eb1@2",
AC: "f1@2 ~@2 f1@2 ~ f1 ~ f1!2 ~ f1 ~ f1@2", AD: "g1 ~ g1@2 g1@2 ~ ab1 ~ ab1 g1 ~@2 ab1 g1 f1, ~@6 bb1 ~",
AE: "db1@2 ~@2 db1@2 ~ db1 ~ db1!2 ~ db1 ~ db1@2", AF: "eb1 ~ eb1 ~ eb1@2 ~ ab1 ~ ab1 g1@2 f1@2 eb1@2",
AG: "f1@2 ~@2 f1 ~@2 f1 ~ f1 eb1@2 f1@2 eb1@2", AH: "g1 ~ g1 ~ g1 ~@2 ab1 ~ ab1 g1@2 bb1 ab1 f1 eb1",
AI: "c1 ~ c1 ~ c1 ~ c1 ab1 ~ ab1 g1@2 f1@2 eb1@2", AJ: "c1 ~ c1 ~ c1 ~ c1 ab1 ~ ab1 g1@2 f1 eb1 db1@2",
AK: "c1 ~ c1 ~ c1 ~ c1 ab1 ~ ab1 g1 ~ f1 ~ eb1 ~", AL: "db1 ~ db1 ~ db1 ~ db1 ab1 ~ ab1 g1@2 f1@2 eb1 ~",
AM: "eb1 ~ eb1 ~ eb1 ~ eb1 ab1 ~ ab1 g1@2 f1@2 eb1@2", AN: "f1 ~ f1 ~ f1 ~ f1 ab1 ~ ab1 g1 ~ eb1@2 f1 ~",
AO: "f1 ~ f1 ~ ab1 ~ f1 bb1 ~ bb1 ab1@2 f1@2 eb1@2", AP: "db1 ~ db1 ~ db1 ~ db1 ab1 ~ ab1 g1@2 f1@2 db1@2",
AQ: "f1 ~ f1 ~ f1 ~ f1 bb1 ~ bb1 ab1@2 f1@2 eb1 ~", AR: "c1@2 ~@2 c1@2 ~ eb1 ~ eb1 c1@2 eb1@2 ab1@2",
AS: "f1@2 ~@2 f1@2 ~ ab1 ~ ab1 f1@2 eb1@2 f1@2", AT: "eb1@2 ~@2 eb1@2 ~ ab1 ~ ab1 g1@2 f1@2 eb1 ~",
AU: "eb1@2 ~@2 eb1 ~ eb1 ab1 ~ ab1 g1 ~ f1@2 eb1@2", AV: "db1 ~ db1 ~ db1 ~ db1!2 ~ db1 db1@2 db1 ~ db1!2",
AW: "f1 ~ f1 ~ f1 ~ f1 ab1@2 ab1 g1@2 f1@2 eb1@2", AX: "g1 ~ g1 ~ g1 ~ g1 ab1 ~ ab1!2 ~ ab1 ~ ab1@2",
AY: "f1 ~ f1 ~ f1 ~ f1!2 ~ f1!2 ~ f1@2 eb1@2", AZ: "eb1@2 eb1 ~ eb1 ~ eb1 ab1 ~ ab1 g1@2 f1@2 eb1@2",
BA: "c1 ~ c1 ~ c1 ~ c1 ab1 ~ ab1 g1@2 f1@2 eb1@2, ~@10 ab1 ~@5", BB: "c1 ~ c1 ~ c1 ~ c1 ab1 ~ ab1 g1 ~ f1 eb1 db1 c1",
BC: "f1 ~ f1 ~ f1 ~ f1 ab1 ~ ab1 g1 ~ bb1 ab1 f1 eb1", BD: "f1 ~ f1 ~ f1 ~ f1 g1 ~ g1 ab1@2 bb1 ab1 f1 eb1",
BE: "f1 ~ f1 ~ f1 ~ f1 g1 ~ g1 ab1@2 ~ ab1 f1 eb1, ~@6 bb1 ~", BF: "db1 ~ db1 ~ db1 ~ db1 ab1 ~ ab1 g1 ~ f1@2 eb1@2",
BG: "f1 ~ eb1 ~ eb1 ~ eb1 bb1 ~ bb1 ab1 ~ g1@2 eb1@2", BH: "f1 ~ f1 ~ f1 ~ f1 ab1 ~ ab1 f1@2 g1 bb1 ab1 eb1",
BI: "f1!3 ~ f1 ~ f1 ab1 ~ ab1 g1 ~ f1 ~ eb1@2", BJ: "f1 ~ g1 ~ g1 ~ ab1 ab1@2 bb1 ab1 f1 eb1@2 c1 ~",
BK: "f1@2 g1 ~ f1@2 eb1 f1 ~ g1 ab1@2 bb1 ab1 f1 eb1", BL: "db1 ~ db1 ~ db1 ~ db1 [c1,ab1] ~ ab1 g1@2 f1@2 db1@2",
BM: "f1 ~ f1 ~ f1 ~ f1 ab1 ~ ab1 g1 ~ f1@2 eb1@2", BN: "f1!3 ~ f1 ~ f1 g1 ~ g1 ab1 ~ bb1 ab1 f1 eb1",
BO: "db1 ~ db1 ~ db1 ~ db1 ab1 ~ ab1 f1 ~ eb1 ~ db1@2", BP: "eb1 ~@3 eb1 ~ eb1 ab1 ~ ab1 eb1@2 eb1 ~ eb1@2",
BQ: "f1 ~ f1 ~ g1 ~ g1 ab1 ~ ab1 bb1 ab1 f1 eb1 db1@2", BR: "f1 ~@7",
})).s("gm_electric_bass_finger").gain(0.45)
// drums · kick
const kick = s("bd").struct("<~@4 [x!4]!76 ~@8 [x!4]!24 x ~@7>").gain(0.5).pan(0.4)
// drums · snare
const snare = s("sd").struct(`<
~@4 A@3 B A C@2 D A@3 B ~@11 E A F A F A C@2 B ~@3 G A@3 B A@2 F H A@3 H A@2 F B A@2 C D ~@7 I A F A@4 F H A H A@2 ~@7
J A C@2 D A@2 C B A C A K A@2 C K A@2 C L F A C K ~@8
>`.pickRestart({
A: "~ x ~ x", B: "~@4 x ~@2 x ~@4 x ~ x!2", C: "~@4 x ~@2 x ~@4 x ~@3", D: "~@4 x ~@2 x ~@2 x ~ x ~ x!2", E: "~@3 x",
F: "~@4 x ~@7 x ~@2 x", G: "~@12 x ~ x!2", H: "~@4 x ~@7 x ~ x!2", I: "~@12 x!3 ~", J: "~@12 x!4",
K: "~@4 x ~@2 x ~@2 x ~ x!3 ~", L: "~@4 x ~@2 x ~@4 x!3 ~",
})).gain(0.5).pan(0.4)
// drums · clap
// … 37 more lines
More by Pet Shop Boys
Go WestG major · 120 bpmIt's a SinC minor · 128 bpmWest End GirlsE minor · 115 bpmWhat Have I Done To Deserve This?1988 · C major · 114 bpmWhere The Streets Have No Name1991 · B♭ major · 127 bpmAlways On My Mind1988 · G major · 124 bpmAlways on My Mind In My HouseG major · 120 bpmLove Comes Quickly1986 · B minor · 107 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.