0:00/0:00
// The Arms of Orion — Prince
// 65 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (4/4 at bar 1, 2/4 at bar 13, 4/4 at bar 14, 2/4 at bar 29, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: Full arrangement: all 64 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(65/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 · piano
const piano = note(`<
~@2 A B@2 C@4 D E@2 F G H@3 I@2 J K L M N O P Q R S T U V W X Y@3 Z AA@2 AB AC AD AE AF AG ~ AH@2 AI AJ AK AL AM AN AO
AP AQ AR AS AT AU@2 ~
>`.pickRestart({
A: "~@24 [d3,f#4,a4,d5]@8 ~ [b2,c#4,f#4,b4]@8 ~ [c#3,e4,g4,c#5]@6", // D Bsus2 C#dim
B: "[~@3 [a2,b3,e4,a4]@8 ~ [g2,e4,g4,c#5]@8 ~ [e2,c#4,f#4,b4]@8 ~ [c#2,e4,g4,c#5]@8 ~ [b3,e4,a4]@20 ~@16 f#4@3 a4@3 d5@5 ~ a4@3 d5@3 f#4@3, ~@39 a2@26 ~@7 d4@23 ~]/2", // Asus2 C#dim Esus2 C#dim Esus4
C: "[~@3 f#4@3 a4@3 c#5@14 ~ [g4,b4]@5 ~ c#5@3 [d4,g4,a4]@5 ~ a4@3 g4@3 g4@3 g4@9 ~@3 a4@4 ~@4 f#4@3 ~ [b3,d4,f#4]@5 ~ [g3,b3,d4]@2 ~ [g3,b3]@14 ~ [f#3,a3]@23 ~ b3@5 ~ c#4@2 ~ d4@5 ~ e4@3 f#4@3 ~@3 a2 a3 [a2,a3] a2 a3 [a2,a3] a2 a3 [a2,a3] a2 a3 [a2,a3]!2 a3 [a2,a3] a2 a3 [a2,a3] a2 a3 [a2,a3] a2 a3 [a2,a3] ~@12 [a3,d4]@3 ~ [a3,e4]@3 ~ [d4,f#4]@3 ~, c#4@23 ~ b3@23 ~ a3@23 ~@10 d4@38 ~@10 a3@16 ~@17 [b3,d4]@5 ~@25, ~@33 d5@26 ~@5 g4@4 ~@73 e4@13 ~@2 c#4@5 ~@31, ~@66 f#3@5 ~@58 f#3@23 ~@16 [f#2,f#3]@23 ~]/4", // G Dsus4 Bm G F#m A D5 A5 …
D: "[a3,c#4,f#4]@7 ~@2 c#4@3 f#4@5 ~ [a3,c#4]@5 ~ [g3,b3,d4]@8 ~ a3@3 g3@3 e4@5 ~ e4@2 ~", // F#m A G
E: "[[f#3,a3,d4]@10 ~@2 [a3,d4]@4 g3@4 [f#3,a3]@4 [g3,b3]@8 ~ d3@20 ~ d3@3 f#3@5 ~ f#3@3 ~@3 b2@3 [e2,e3,b3,b4]@6 [a3,f#4,a4]@3 [e2,g4]@6 [a3,f#4,a4]@6 [d2,b3,g4,b4]@3, ~@16 d4 ~@55 g4@3 ~@6 [g3,e4]@5 ~@10]/2", // D D5 F#m G E5 D Em D …
F: "~@6 [g3,a3]@5 ~ g4@11 ~ [b3,d4,f#4]@17 ~ d4@3 e4@3, [c2,g2,c3]@3 ~", // Gsus2 Bm C5
G: "~@21 e2@3 a1@5 ~ a1@5 ~ g2@5 ~ g2@5 ~, [a3,e4]@47 ~", // A5
H: "[[a3,d4,f#4]@8 ~ [a3,d4,f#4]@11 ~ [a3,c#4,e4]@2 ~@4 [a3,c#4,e4]@5 ~ [d4,f#4,a4]@8 ~ [b3,d4,g4]@29 ~ [g2,b3,e4,g4]@3 [f#2,a3,d4,f#4]@3 [e2,c#4,e4]@2 ~ [e2,g3,c#4,e4]@5 ~ [f#2,a3,c#4,f#4]@3 [g2,b3,d4,g4]@3 [a3,d4,f#4]@7 ~@2 [a3,d4,f#4]@5 ~ f#4@2 ~ f#4@2 ~ [a3,d4,f#4]@6 [a3,c#4,e4]@5 ~ [a3,c#4,e4]@5 ~@7 f#2@5 ~, ~@78 g3 ~@14 a2@3 ~@12 a3@5 ~@31, ~@108 d4 ~@2 d4 ~@20 [d4,f#4,a4]@11 ~]/3", // D A D G Em D C#m C#dim …
I: "[g2@22 ~@2 [g2,b3,e4,g4]@3 [f#2,a3,d4,f#4]@3 [e2,c#4,e4]@2 ~ [e2,g3,c#4,e4]@5 ~ [f#2,a3,c#4,f#4]@3 [g2,b3,d4,g4]@3 b4@12 ~@2 c5@2 d5@11 [b2,d4,f#4,a4]@23 ~, ~@30 g3 ~@14 [c3,c4,e4]@26 ~@25, ~@59 b4 ~@36]/2", // Em D C#m C#dim F#m G Bm7 C
J: "[a3,e4]@35 ~ c#4@11 ~, [a2,e3]@23 ~", // A5
K: "d4@3 f#4@3 a4@3 d5@3 f#4@3 a4@3 d5@5 ~ c#5@3 f#4@3 a4@3 c#5@8 ~ [f#3,f#4,a4,c#5]@5 ~, d3@11 ~ d3@11 ~ f#3@17 ~@7", // F#m
L: "[d4,g4,b4]@5 ~ [f#4,a4,c#5]@3 [g4,b4,d5]@5 ~ e5@3 ~@6 d3@8 ~ a2@3 [d3,a4,d5]@4 [d3,g4,d5]@4 [d3,f#4,d5]@4, g3@23 ~@25, ~@9 d5@7 ~@8", // G F#m G D5 G5 D
M: "[e2,e3,g3,b3,d4,e4]@23 ~ [f#2,f#3,a3,c#4]@11 ~ [b2,f#3,b3,d4]@11 ~", // Em7 F#m Bm
N: "[g3,b3,d4,e4]@6 b3@3 [g3,b3,d4]@5 ~ [f#3,b3,d4]@5 ~@4 f#3@11 ~ [c#3,d4]@5 ~ e4@3 f#4@3, e3@21 [a3,c#4,f#4]@14 ~ [g3,b3]@11 ~, ~@42 [d3,a3,c#4]@5 ~", // Em7 G Bm Dmaj7 F#m G Dmaj7
O: "[d3,d4]@17 ~ [d3,d4]@3 [e3,e4]@3 [a3,c#4,f#4]@5 ~ a3@3 [a3,c#4,f#4]@3 a3@11 ~, ~@24 c#3@23 ~", // D E F#m
P: "[g3,b3]@8 ~ [b3,d4,f#4]@9 a4@2 ~ f#4 a4 f#4 [f#3,a3,d4]@11 ~ [g3,b3]@4 [f#3,a3,c#4,e4]@4 [e3,b3,d4,f#4]@4", // G Bm D G F#m7 Bm
Q: "[g2,d3,g3,b3,d4]@23 ~ [d2,a2,d3,f#3,a3]@23 ~", // G D
R: "[g2,d3,b3,g4]@6 [f#2,c#3,a3,c#4,f#4]@3 [e2,b2,g3,b3,e4]@6 [f#2,a2,a3,f#4]@3 [g2,b3]@3 [c3,c4,e4,g4]@15 d5@3 ~ b4@3 ~ g4@3 ~, d4 ~@15", // G F#m Em F#m G C
S: "f#4@7 ~@2 e4@13 ~@14 [c#4,e4]@4 [d4,f#4]@4 [e4,a4]@4", // C#m D A5
T: "[c#4,f#4]@4 [b3,e4]@4 [a3,c#4]@4 [g3,b3]@4 [f#3,a3]@4 [e3,g3]@4 [a3,d4,f#4]@8 ~ [a3,d4,f#4]@11 ~ [a3,c#4,e4]@2 ~", // F#5 E5 A G F#m Em D A
U: "~@3 [a3,c#4,e4]@5 ~ [f#3,a3,d4]@8 ~ [g3,b3,d4]@29 ~", // A D G
V: "[g2,b3,e4,g4]@3 [f#2,a3,d4,f#4]@3 [e2,g3,c#4,e4]@2 ~ [e2,g3,c#4,e4]@5 ~ [f#2,a3,c#4,f#4]@3 [g2,b3,d4,g4]@3 [a2,a3,d4,a4]@2 ~ [a3,d4,f#4]@5 ~ [a3,d4,f#4]@5 ~ f#4@2 ~ f#4@2 ~ [a3,d4,f#4]@6, ~@36 a3@5 ~@7, ~@36 d4 ~@2 d4 ~@8", // Em D C#dim F#m G D5 D
W: "[a3,c#4,e4]@5 ~ [a3,c#4,e4]@5 ~@7 f#2@5 ~ g2@22 ~@2, ~@12 [d4,f#4,a4]@11 ~@25", // A D
X: "[g2,b3,e4,g4]@3 [f#2,a3,d4,f#4]@3 [e2,c#4,e4]@2 ~ [e2,g3,c#4,e4]@5 ~ [f#2,a3,c#4,f#4]@3 [g2,b3,d4,g4]@3 ~@12 a5 b5 c#6 d6@11 ~, ~@6 g3 ~@14 [c3,c4,e4,b4]@25 ~@2", // Em D C#m C#dim F#m G Cmaj7
Y: "[f#5@8 ~ e5@10 ~@2 f#4 e4 d4 [a3,e4]@11 ~ [a3,c#4]@11 ~ [b3,d4]@11 ~ [a3,c#4,e4]@11 ~ [b3,d4,f#4]@29 ~@5 d6 ~ d6 a5 ~ b5 d6 ~ [g3,b3]@5 ~ [f#3,a3]@8 ~@2 d6 ~ d6 a5 ~ b5 d6 ~ [f#3,a3,d4]@6, [b2,a3,d4,f#4]@23 ~ [a2,e3]@47 ~@34 [c#4,e4]@3 [b3,d4]@5 ~@16 [f#3,a3,d4]@8 ~@7]/3", // A5 A Bm A Bm G F#m D …
Z: "d6!2 [d6,e6] b5 a5 ~ d6 b5 ~ a5 g5 ~ e5 f#5 ~ g5 a5 ~ g5 f#5 ~ e5 d5 ~@10 [c4,e4,g4]@7 ~@2 [a3,d4,f#4]@5 ~, [f#3,a3,d4]@8 ~ [f#3,a3,d4]@8 ~ [f#3,a3,d4]@5 ~ c3@22 ~@2", // Dsus2 C D
AA: "[[d4,f#4,b4]@7 ~@2 [d4,f#4,a4]@8 ~ [d4,f#4,b4]@6 [b3,d4,f#4]@12 [f#3,a3,d4]@18 ~@6 g4@2 ~@34, ~@59 [a3,c#4]@2 ~@35, ~@60 e4 ~@35]/2", // Bm D Bm D A
AB: "~@9 [a4,d5,f#5]@8 ~ [a4,d5,f#5]@2 ~@13 [a4,c#5,e5]@8 ~ [a4,c#5,e5]@2 ~@4", // D A
AC: "[d4,g4,b4]@8 ~ [g4,b4,d5]@14 ~@13 a4@4 g4@4 f#4@3 ~", AD: "~@15 a3@5 ~ b3@14 ~@13, f#4@35 ~@13, ~@9 d4@26 ~@13",
AE: "~@9 d4@5 ~ e4@5 ~ f#4@3 g4@23 ~, ~@9 [a3,b3]@13 ~@26", AF: "~@13 f#3 a3 d4",
AG: "~@9 g3@3 e3@3 f#3@3 g3@3 d4@2 ~ g3@3 f#3@2 ~ e3@2 ~ e3@5 ~ f#3@3 g3@3 a3@2 ~",
AH: "[~@24 g3@3 f#3@3 e3 ~@2 e3@5 ~ f#3@3 g3@3 b3@10 ~@2 g3 f#3 ~ e3@5 ~ g3@4 ~@5 g3@5 ~ f#3@5 ~ b3@3 c#4@3 d4@3]/2",
AI: "a3@8 ~ f#3@5 ~ f#3@3 g3@2 ~ a3@5 ~ b3@5 ~ c#4@5 ~ d4@5 ~ e4@2 ~",
AJ: "[d4,f#4]@16 ~@2 [d4,f#4]@5 ~ [c#4,e4]@18 ~@6", // D C#m
AK: "~@24 [g3,b3]@3 [f#3,a3]@3 [e3,g3]@2 ~ [d3,f#3]@5 ~ [f#3,a3]@3 [a3,d4]@3 [b3,d4]@3", // G F#m Em D F#m D5 Bm
AL: "~@6 f#3@29 ~@7 e4@5 ~, [a3,d4,f#4]@37 ~@11", // D
AM: "d4@11 ~@4 g3@3 f#3@3 e3@3 [g2,g3,b3]@3 [f#2,f#3,a3]@3 [e2,e3,g3]@2 ~ [e2,e3,g3]@5 ~ [f#2,f#3,a3]@3 [g2,g3,b3]@3 [f#2,f#3,a3]@3", // G F#m Em F#m G F#m
AN: "~@9 g3@5 ~ g3@3 g3@3 e3@3 [g3,b3,e4]@8 ~ [g3,b3,e4]@5 ~ [b3,e4,g4]@3 [c#4,f#4,a4]@3 [b3,e4,g4]@3, [c2,c3]@5 ~@7", // Em F#m Em C
AO: "[e4,g4,b4]@7 ~@2 [f#4,a4,c#5]@10 ~@2 [e4,g4,b4]!2 ~ [e4,g4,b4]@5 ~ a4@3 [a4,d5,f#5]@7 ~@2 [a4,d5,f#5]@3 c#4@3", // Em F#m Em D
AP: "[d4,f#4,a4]@11 ~@37", // D
AQ: "~@24 [e4,a4,c#5] ~@2 d3@3 b2@3 c#3@3 b2@3 a2@3 g2@3 f#2@3, ~@24 e3@3 ~@6 [c#4,e4,a4]@14 ~", // A
AR: "~@33 d4@8 ~ e4@3 f#4@3",
AS: "c#4@8 ~ b3@5 ~ a3@2 ~ a3@5 ~ [d3,g3]@2 ~ [c#3,f#3]@3 [b2,e3]@3 [a2,d3]@5 ~ [g2,b2]@3 [f#2,a2]@5 ~", // G5 F#5 E5 D5 G F#m
AT: "~@15 d4@3 e4@3 f#4@3 a3@11 ~@13, d2@7 ~@9", AU: "[[a3,c#4,e4]@2 ~@7 [d2,f#3,a3,d4]@50 ~@37, e2 ~@95]/2",
})).s("gm_piano").gain(0.4).pan(0.3)
// other · string ensemble 1
const string_ensemble_1 = note(`<
~@2 A B@2 ~@3 C D E F G H I J@2 K@2 L ~@2 M N O P Q R S T U V W X Y Z AA@2 AB@2 AC ~ AD AE AF AG AF AH@2 AE AI AJ I AK
AL AM AN AO I AP I AQ@3
>`.pickRestart({
A: "~@24 d3@8 ~ b2@8 ~ c#3@6", B: "[~@3 a2@8 ~ g2@8 ~ e2@8 ~ c#2@8 ~ a2@23 ~@34]/2", C: "a2@24 f#2@23 ~",
D: "a2@11 ~ d2@11 ~ g2@21 ~ f#2 e2", E: "d2 ~@7", F: "~@24 e2@23 ~", G: "c2@17 ~ e2@6 b2@23 ~",
H: "~@36 g3@11 ~, a2@23 ~", I: "d2@23 ~ a2@11 ~ f#2@11 ~", J: "[g2@23 ~@22 d3@26 ~ a2@11 ~ f#2@11 ~]/2",
K: "[g2@22 ~@2 g2@3 f#2@3 e2@2 ~ e2@6 f#2@3 g2@3 c2@26 ~ b2@23 ~]/2", L: "a2@23 ~",
M: "~@12 d2@11 ~ f#2@11 ~ b2@11 ~", N: "e3@24 f#3@12 c#3@11 ~", O: "d3@18 e3@3 f#3@2 ~@19 e3@3 f#3@2 ~",
P: "~@27 g3@3 f#3@3 e3@3 d3@4 e3@4 f#3@4", Q: "g2@23 ~ d2@20 ~@4", R: "g2@6 f#2@3 e2@6 f#2@3 g2@2 ~ g2@25 ~@2",
S: "b2@23 ~ a2@15 ~ g2@4 f#2@4", T: "e2@4 d2@4 c#2@4 b1@3 a1@2 ~ g1@2 ~ e1@3 d2@23 ~", U: "a2@12 f#2@11 ~ g2@22 ~@2",
V: "g2@3 f#2@3 e2@2 ~ e2@6 f#2@3 g2@3 a2@3 d2@23 ~", W: "a2@11 ~ f#2@12 g2@21 ~@3",
X: "g2@3 f#2@3 e2@2 ~ e2@6 f#2@3 g2@3 c3@3 c2@17 ~ e2@6", Y: "b2@23 ~ a2@24", Z: "~@36 [g2,g3]@11 ~",
AA: "[[c2,c3]@11 ~ [d2,d3]@12 [f#2,f#3]@33 ~@15 [c3,c4]@8 ~ [c2,c3]@3 [e2,e3]@6 [g2,g3]@5 ~]/2", // C D F# C E G
AB: "[[b2,b3]@24 a2@47 ~ a2@5 ~ f#2@6 g2@6 e2@6]/2", AC: "f#2@4 d2@9 ~@3",
AD: "~@12 [f#1,f#2]@11 ~ [b1,b2]@11 ~ [e2,e3]@11 ~", AE: "[a2,a3]@23 ~",
AF: "[d2,d3]@23 ~ [a2,a3]@11 ~ [f#2,f#3]@11 ~", // D A F#
AG: "[g2,g3]@20 ~@4 [g2,g3]@3 [f#2,f#3]@3 [e2,e3]@2 ~ [e2,e3]@6 [f#2,f#3]@3 [g2,g3]@3 [a2,a3]@3", // G F# E F# G A
AH: "[[g2,g3]@23 ~ [g2,g3]@3 [f#2,f#3]@3 [e2,e3]@3 [e2,e3]@6 [f#2,f#3]@3 [g2,g3]@3 b2@25 ~@2 b3@23 ~]/2", // G F# E F# G
AI: "d3@23 ~ a2@11 ~ f#2@11 ~", AJ: "g2@23 ~", AK: "g2@20 ~@4 g2@3 f#2@3 e2@3 e2@6 f#2@3 g2@3 f#2@3",
AL: "c2@17 ~ g2@6 b2@23 ~", AM: "a2@17 ~ f#2@3 a2@3", AN: "d3@23 ~ g3@23 ~",
AO: "a3@17 ~@5 f#3@2 e3@3 d3@3 b2@3 c#3@3 b2@3 a2@3 g2@3 f#2@3, ~@21 g3@2 ~@25", AP: "g2@17 ~@7", AQ: "[d2@11 ~@5]/3",
})).s("gm_string_ensemble_1").gain(0.4)
// chords · epiano2
const epiano2 = note("<A B@2 C@2 D E F ~@2 G H I J ~ K@2 L ~ M N O ~@2 P Q R ~@13 S T U V ~@20>".pickRestart({
A: "~@24 d5@8 ~ b4@8 ~ c#5@6", B: "[~@3 a4@8 ~ d5@8 ~ b4@8 ~ c#5@8 ~ a4@20 ~@13 d5@8 ~ b4@8 ~ c#5@6]/2",
C: "[~@3 a4@8 ~ c#5@8 ~ b4@8 ~ c#5@8 ~ a4@17 ~@40]/2", D: "~@18 [a4,c#5]@5 ~ b4@21 g4@3, ~@6 g4@5 ~",
E: "d4@23 ~ f#4@3 e4@3 d4@3 d4@14 ~", F: "[f#4,a4,d5]@8 ~@4 [f#4,a4]@5 ~ [a3,d4]@5 ~ b3@8 ~ a3@14 ~, ~@11 d4@5 ~@32",
G: "~@24 [d4,f#4,a4]@11 ~ a4@5 ~ d5@5 ~", // D
H: "[f#4,a4,d5]@17 ~ [f#4,a4]@5 ~ [g4,b4]@6 [f#4,a4]@3 [e4,g4]@6 [f#4,a4]@6 [g4,b4]@3", I: "~@24 [f#4,a4]@23 ~",
J: "~@36 g5@11 ~", K: "[g4@8 ~ f#4@3 e4@5 ~ a3@5 ~ b3@3 c#4@3 c#4@2 ~ c#4@5 ~ c#4@3 b3@3 d4@17 ~@34]/2",
L: "~@6 c#4@3 d4@3 b3@11 ~@25", M: "~@36 c#4@11 ~", N: "d4@23 ~ c#4@17 ~ [f#4,a4,c#5]@5 ~",
O: "[d4,g4,b4]@5 ~ [f#4,a4,c#5]@3 [g4,b4,d5]@5 ~@4 e5@3 d5@3 a4@11 ~ a4@4 g4@4 f#4@4", // G F#m G
P: "d4@14 ~ e4@3 d4@3 f#4@23 ~@4", Q: "~@9 f#4@17 ~@10 g4@4 f#4@4 e4@4, d4@13 ~@11", R: "d4@23 ~ a3@23 ~",
S: "d4@23 ~ c#4@23 ~", T: "~@18 e5@3 ~@6 a4@8 ~ d4@4 e4@4 f#4@4, b3@7 d5@2 ~@7, ~@24 a3@23 ~",
U: "[f#4,b4]@13 ~@29 e5@6", V: "c#5@11 ~@37",
})).s("gm_epiano2").gain(0.4).pan(0.7)
// other · drawbar organ
const drawbar_organ = note("<~@6 [~@42 a4@5 ~] [d4@23 ~@25] ~@56>").s("gm_drawbar_organ").gain(0.25)
// other · timpani
const timpani = note(`<
~@2 A B C ~@3 D ~@4 E F G H I J K ~@6 L M ~@2 N ~ N ~ O P ~@3 Q R ~@5 S T ~ U S T S T J V W ~ S T S X ~@2
>`.pickRestart({
A: "~@9 a1!39", B: "a1!48", C: "a1!13 ~@35", D: "a2!24 f#2@14 ~@10", E: "~@12 a2!36", F: "d2@2 a2 f#2", G: "g2 ~",
H: "~@24 a2!12 f#2@12", I: "g2@5 ~@8 e3 b2 ~", J: "~@24 b2!24", K: "~@6 a2 ~ e2@4 ~@4", L: "~@12 a2 ~ a2 ~",
M: "g2 ~ f#2 e2 ~ f#2 g2 c2 ~@8", N: "a2!12 f#2!12 g2!24", O: "~@36 c#3 ~@2 a2 ~@2 a2@2 ~@4",
P: "~@6 a2 ~@2 a2 ~@2 a2 ~@2 a2 ~@2 a2 ~@2 a2 ~@26", Q: "~@8 a2@2 f#2!2 g2@2 e2!2", R: "f#2@5 ~ d2@6 ~@12",
S: "~@24 a2!12 f#2!12", T: "g2!24 ~@24", U: "~@24 a2!24", V: "a2@2 ~@4 f#2 a2", W: "d3@3 ~@5", X: "d2!27 ~@21",
})).s("gm_timpani").gain(0.25)
// chords · string ensemble 1
const string_ensemble_1_2 = note(`<
~@14 A B@2 C@2 D ~@2 E F G H I J K L@2 M@2 N O P Q@2 R S@2 ~ T U V@2 W X@2 Y Z AA@2 AB AC AD AE AF AG AH AI AJ@3
>`.pickRestart({
A: "d3@23 ~ a3@12 f#3@11 ~",
B: "[g3@23 ~ g3@3 f#3@3 e3@3 e3@5 ~ f#3@3 g3@3 [f#3,a3,d4,f#4]@26 ~ e4@11 ~ d4@11 ~, ~@72 a3@23 ~]/2", // D
C: "[~@3 d4@3 c#4@3 d4@3 b3@3 c#4@3 ~@6 g3@3 f#3@3 e3@3 e3@5 ~ f#3@3 g3@3 [g3,b3,d4]@26 ~ [f#3,a3,d4]@23 ~, [d3,g3]@23 ~@73, ~@9 d4@13 ~@26]/2", // G D G5
D: "[e3,a3]@47 ~", E: "~@12 d2@11 ~ f#2@11 ~ b2@11 ~", F: "e3@24 f#3@12 c#3@11 ~",
G: "d3@18 e3@3 f#3 ~@20 e3@3 f#3 ~@2", H: "~@27 g3@2 ~ f#3@3 e3@3 d3@4 e3@3 ~ f#3@4",
I: "[d3,g3,b3]@22 ~@14 a2 ~@5 a2 ~@5, ~@12 [d3,f#3,a3]@11 ~", J: "g3@5 ~ f#3 ~@2 e3@5 ~ f#3 ~@2 g3 ~@2 g3@26 ~",
K: "[b2,f#3,a3]@23 ~ [a3,c#4]@15 ~ d4@3 ~ e4@3 ~", // B7 A
L: "[[c#4,e4]@3 ~ [d4,f#4]@3 ~ [e4,g4]@3 ~ [c#4,e4,g4]@3 ~ [d4,f#4,a4]@3 ~ [e4,g4,b4]@3 ~ [d4,f#4]@23 ~ [c#4,e4]@11 ~ [d4,f#4]@11 ~ [b3,d4,g4]@20 ~@4, ~@24 a4@47 ~@25]/2", // C#m D Em C#dim D Em D C#m …
M: "[g4@3 f#4@3 e4@3 e4@5 ~ f#4@3 g4@3 [a3,d4,f#4]@38 ~ d4@35 ~]/2", N: "~@7 e3", O: "[f#3,b3]@23 ~ [e3,a3]@23 ~",
P: "~@24 [d4,d5,d6]@11 ~ [a4,a5,a6]@11 ~", // D A
Q: "[[g4,g5,g6]@11 ~ [f#4,f#5,f#6]@11 ~ [e4,e5,e6]@29 ~ a5@2 ~@25 [g3,g4]@3 [g3,g4]@5 ~ [f#3,f#4]@5 ~]/2", // G F# E G F#
R: "[d3,d4]@23 ~ [f#3,f#4]@24, f#6@47 ~", S: "[[g4,g5,g6]@23 ~ [a4,a5,a6]@36 ~@36]/2", T: "~@36 [e4,e5]@11 ~",
U: "[f#4,f#5]@20 ~@4 [e4,g4]@5 ~ [g4,b4]@3 [e4,g4]@3 [e4,g4]@5 ~ [f#4,a4,a5]@3 [g4,b4,b5]@3, a3@47 ~, ~@24 g5@17 ~@7", // F# Em G Em F#m G
V: "[d4@23 ~ e4@11 ~ c#4@11 ~ g4@6 g4@2 ~ f#4@3 g4@11 ~@7 [e3,e4]@11 ~ [g3,g4]@5 ~, a4@53 ~@43, ~@24 a3@23 ~ d4@23 ~@25]/2", // E G
W: "[f#3,a3,c#4,f#4]@23 ~ [e3,a3,c#4,e4]@11 ~ [d3,f#3,a3,d4]@11 ~", X: "[b3,d4,f#4]@47 ~",
Y: "e4@26 ~ [e4,g4]@6 [f#4,a4]@3 [g4,b4]@3 [a4,c#5]@3 [b4,d5]@3 [c#5,e5]@3, [a3,c#4]@47 ~", Z: "[a4,d5,f#5]@47 ~",
AA: "[b4@3 c#5@3 d5@3 a4@3 b4@3 c#5@3 d5@3 e5@3 [d4,g4,b4]@23 ~@31 g5@5 ~@7 e4@5 ~, g4@23 ~ a5@71 ~, ~@24 f#5@53 ~@7 f#5@11 ~, ~@48 [c#4,f#4,a4]@41 ~@7]/2", // G F#m
AB: "[d4,a4,e5,g5]@23 ~ [g4,b4,d5,g5]@3 [f#4,a4,c#5,f#5]@3 [e4,g4,b4,e5]@2 ~ [e4,g4,b4,e5]@5 ~ [f#4,a4,c#5,f#5]@3 [g4,b4,d5,g5]@3 [f#4,a4,c#5,f#5]@3", // Dsus4 G F#m Em F#m G F#m
AC: "a5@23 ~ b5@23 ~, [b4,d5,f#5]@47 ~", AD: "d6@11 ~ c#6@3 b5@21 ~@3 c#6@8 ~, [d4,g4,b4]@35 ~ e4@11 ~",
AE: "[a3,d5,d6]@47 ~", AF: "[d5,f#5]@23 ~ [c#5,e5]@8 ~@4 [b4,d5]@8 ~@4, a4@11 ~",
AG: "[f#4,a4,d5]@23 ~ [e4,g4,b4]@11 ~ [d4,f#4,a4]@11 ~", AH: "[b3,e4,g4]@17 ~ d4@5 ~ [a3,d4,f#4]@23 ~",
AI: "[f#3,a3,d4]@47 ~", AJ: "[[a3,c#4,e4]@3 ~@6 [f#3,a3,d4]@91 ~@44]/3",
})).s("gm_string_ensemble_1").gain(0.35)
// other · clarinet
const clarinet = note(`<
~@2 A B@2 ~@3 C D E F G H I J K L ~@4 M N O P Q R S T U V W X Y Z AA@2 AB AC AD ~ AE AF AG AH AI ~@13 AJ ~@3
>`.pickRestart({
A: "~@24 d3@8 ~ b2@8 ~ c#3@6", B: "[~@3 a2@8 ~ g2@8 ~ e2@8 ~ c#2@8 ~ a2@23 ~@34]/2", C: "a2@24 f#2@23 ~",
D: "a2@10 ~@2 d2@11 ~ g2@21 ~ f#2 e2", E: "d2 ~@15", F: "~@24 e2@23 ~", G: "c2@17 ~ e2@5 ~ b2@23 ~",
H: "~@36 g3@11 ~, a2@47 ~", I: "d2@23 ~ a2@11 ~ f#2@11 ~", J: "g2@23 ~@25", K: "d3@23 ~ a2@10 ~@2 f#2@11 ~",
L: "g2@20 ~@4 g2@3 f#2@3 e2@2 ~ e2@5 ~ f#2@3 g2@3 ~@3", M: "~@12 d2@11 ~ f#2@11 ~ b2@11 ~",
N: "e3@24 f#3@12 c#3@11 ~", O: "d3@17 ~ e3@3 f#3@2 ~@19 e3@3 f#3 ~@2", P: "~@27 g3@2 ~ f#3@3 e3@3 d3@4 e3@3 ~ f#3@4",
Q: "g2@11 ~ d2@10 ~@2", R: "g2@5 ~ f#2@3 e2@6 f#2@2 ~ g2@2 ~ g2@26 ~", S: "b2@23 ~ a3@15 ~ g3@3 ~ f#3@3 ~",
T: "e3@3 ~ d3@3 ~ c#3@3 ~ b2@3 a2@2 ~ g2@2 ~ e2@3 d2@23 ~", U: "a2@12 f#2@11 ~ g2@22 ~@2",
V: "g2@2 ~ f#2@3 e2@2 ~ e2@5 ~ f#2@3 g2@2 ~ a2@3 d2@23 ~", W: "a2@11 ~ f#2@12 g2@21 ~@3",
X: "g2@3 f#2@3 e2@2 ~ e2@5 ~ f#2@2 ~ g2@2 ~ c3@2 ~ c2@17 ~@7", Y: "~ a2", Z: "~@36 g2@11 ~",
AA: "[c2@11 ~ d2@12 f#2@34 ~@14 c3@8 ~ c2@3 e2@5 ~ g2@5 ~]/2", AB: "b2 ~", AC: "~@24 a2@5 ~ f#2@5 ~ g2@5 ~ e2@5 ~",
AD: "f#2@11 ~ d2@27 ~@9", AE: "~@12 [f#1,f#2]@11 ~ [b1,b2]@11 ~ [e2,e3]@11 ~", AF: "[a2,a3]@47 ~",
AG: "[d2,d3]@23 ~ [a2,a3]@11 ~ [f#2,f#3]@11 ~", // D A F#
AH: "[g2,g3]@20 ~@4 [g2,g3]@3 [f#2,f#3]@3 [e2,e3]@2 ~ [e2,e3]@5 ~ [f#2,f#3]@3 [g2,g3]@3 [a2,a3]@3", // G F# E F# G A
AI: "d2@22 ~@2 a2@11 ~ f#2@11 ~", AJ: "~@18 e4@2 ~ f#4 ~@26",
})).s("gm_clarinet").gain(0.45).pan(0.3)
// other · vibraphone
const vibraphone = note("<~@60 A B@3>".pickRestart({
A: "~@36 a4@2 ~ b4@2 ~ c#5@2 ~ d5@2 ~", B: "[c#5@2 ~ a4@2 ~ b4@2 ~ g4@2 ~ a4@3 ~ f#4@3 e4@3 ~ f#4@3 d4@72 ~@46]/3",
})).s("gm_vibraphone").gain(0.3)
// other · french horn
const french_horn = note("<~@46 A B ~@2 C D ~@4 E ~ F G ~@4>".pickRestart({
A: "~@12 d5@11 ~ c#5@11 ~ a4@11 ~", B: "b4@23 ~@25", C: "f#4@20 ~ a4@14 ~ f#4@11 ~", D: "d4@11 ~",
E: "[f#4,a4,d5]@4 ~@2 [f#4,a4]@2 ~ [f#4,a4,d5]@14 ~ [c#4,e4,g4]@17 ~ d4@5 ~, ~@6 d5 ~@41", // D F#m D C#dim
F: "e4@11 ~ f#4@11 ~ e4@11 ~ f#4@11 ~", G: "e4@17 ~ d4@5 ~ d4@23 ~",
})).s("gm_french_horn").gain(0.35)
// chords · brass section · D5
const brass_section = note("<~@38 [~@6 f#5@5 ~] [g5@7 ~ a5@6 ~@2] ~@4 [[a3,d4,a4] ~] ~@19>")
.s("gm_brass_section").gain(0.4).pan(0.7)
// other · alto sax
const alto_sax = note(`<
~@4 A B@3 C D ~@4 E@2 F@4 G H I@3 ~@4 J K L M N O P Q@4 R S T U E@2 V@3 U W@2 X Y Z AA AB AC AD AE AF AG@2 ~
>`.pickRestart({
A: "~@21 d4@3 d4@5 ~ d4@3 d4@8 ~ d4@3 d4@3",
B: "[c#4@5 ~ c#4@3 c#4@5 ~@7 a3@3 b3@5 ~ c#4@3 d4@8 ~ e4@3 d4@5 ~ a3@5 ~@4 a3@3 ~ g3@3 ~ f#3@3 ~ f#3@5 ~ d3@3 d3@26 ~@10 a2@3 b2@5 ~ c#3@3 d3@5 ~ f#3@8 ~]/3",
C: "e3@47 ~", D: "d3@23 ~@25",
E: "[a3@3 a3@3 a3@3 a3@8 ~ a3@3 a3@3 ~@3 a3@3 a3@3 a3@3 ~@6 d3@3 e3@20 ~@7 g3@3 f#3@3 e3@3 e3@5 ~ f#3@3 g3@3 a3@3]/2",
F: "[~@3 a3@3 a3@3 a3@3 a3@3 a3@3 a3@3 a3@3 a3@3 a3@3 a3@5 ~ d4@5 ~ e3@3 d3@20 ~@7 g3@3 f#3@3 e3@3 e3@5 ~ f#3@3 g3@3 b3@23 ~ d4@3 ~@3 b3@3 g3@3 a3@35 ~@28]/4",
G: "d4@3 d4@3 d4@3 d4@8 ~ d4@3 c#4@8 ~ c#4@3 c#4@3 ~@3 c#4@8 ~",
H: "b3@5 ~ c#4@3 d4@5 ~@4 e4@3 d4@5 ~ a3@5 ~@4 a3@3 ~ g3@3 ~ f#3@3 ~",
I: "[f#3@5 ~ d3@3 f#3@3 d3@20 ~@4 a3@3 g3@3 f#3@3 f#3@11 ~ d3@3 ~@3 f#3@5 ~ e3@14 ~ c#3@5 ~ d3@29 ~@25]/3",
J: "~@24 a3@3 a3@3 a3@3 a3@8 ~ a3@3 a3@3", K: "~@3 a3@3 a3@3 a3@3 ~@6 d3@3 e3@20 ~@7",
L: "g3@3 f#3@3 e3@3 e3@5 ~ f#3@3 g3@3 a3@3 ~@3 a3@3 a3@3 a3@3 a3@3 a3@3 a3@3 a3@3",
M: "a3@3 a3@3 a3@5 ~ d4@5 ~ e3@3 d3@20 ~@7", N: "g3@3 f#3@3 e3@3 e3@5 ~ f#3@3 g3@3 b3@23 ~ d4@3",
O: "~@3 b3@3 g3@3 a3@35 ~@4", P: "~@21 g3@3 b3@5 ~ b3@3 b3@8 ~ b3@3 b3@3",
Q: "[a3@5 ~ a3@3 a3@5 ~@7 g3@3 a3@5 ~ b3@3 d4@5 ~ e3@3 f#3@3 e3@14 ~@10 a3@3 b3@5 ~ b3@3 b3@8 ~ b3@3 a3@8 ~ a3@3 f#3@3 d3@5 ~@7 a3@6 a3@3 a3@9 b3@2 ~ a3@6 ~@3 g3@11 ~@4 e3@3 f#3@14 ~@7 d4@3]/4",
R: "d4@5 ~ d4@3 d4@8 ~ d4@3 d4@3 c#4@5 ~ c#4@3 c#4@5 ~@7 a3@3", S: "b3@5 ~ c#4@3 d4@8 ~ e4@3 d4@5 ~ a3@8 ~@13",
T: "d3@3 ~ e3@3 ~ f#3@4 g3@3 f#3@3 d3@3 c#3@17 ~@10", U: "~@15 g3",
// … 87 more lines
More by Prince
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.