0:00/0:00
// Carouselambra — Led Zeppelin
// 118 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Full arrangement: all 230 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(118/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 · distortion guitar
const distortion_guitar = note(`<
~@2 A B@8 C D E F B@2 G H I J@2 K L M N O P@2 Q R S T@2 U B@4 C D E F B@2 G H I J@2 K L M N O P@2 Q R S T@2 U V@4 W X
W X Y Z AA AB B@2 G H AC AD AE AF B@3 AG AH@2 AI AJ S T@2 U V@4 W X W X AK AL AM AN W X W X AK AL AM AN AO AP AO AP AQ
AR AS AT AU@2 ~@4 AV ~ AW AX@2 AY@2 AX@2 AZ@2 BA@2 AY@2 AX@2 AY@2 BA@2 BB@2 AU@2 ~@4 AV ~ AW AX@2 AY@2 AX@2 AZ@2 BA@2
AY@2 AX@2 AY@2 BA@2 BB@2 ~@4 BC BD BE BF@2 BG@2 BH@2 AX@2 AZ@2 BI@2 AY@2 AX@2 BJ@2 ~@24
>`.pickRestart({
A: "~@14 [a3,e4]!2", B: "~@10 [e5,a5]@2 [e5,a5]@2 [a3,e4]!2, [a3,e4,a4]@7 ~", C: "c4@8 g4!2 g4@2 g4@4",
D: "[c4,e4]@2 g4!2", E: "[c4,e4]@4 [c4,d4]@2 e4 d4", F: "[c4,e4]@8 [c4,e4] [c4,e4]@3 b3@2 c4@2",
G: "a4@10 [a4,e5,a5]@2 [a4,e5,a5]@2 a3!2, [a3,e4,c#5]@7 ~", H: "~@5 [e5,a5]!2 b3, [a3,e4,a4]@7 ~",
I: "[c4,e4]@8 [d4,g4]@4 e4 d4@3, ~@3 g4", J: "[c4,e4]@2 d4 b3", K: "[c4,e4]@4 [b3,d4]@2 b3 c4",
L: "a3@10 [a4,e5,a5]!2 [a4,e5,a5]@2 e4!2", M: "a3@10 [a4,e5,a5]@2 [a4,e5,a5]!2 a3!2",
N: "[a3,e4,a4]@3 [a3,e4,a4]@7 [a4,e5]@2 [a4,e5]@2 e4!2", O: "a3@10 [a4,e5,a5]@2 [a4,e5,a5]!2 a3@2",
P: "[[d4,a4,d5,f#5]@2 [d4,a4,d5,f#5]@2 [d4,a4,d5,f#5]@6 [d4,a4,d5,f#5] [d4,a4,d5,f#5]@2 [d4,a4,d5,f#5] [a4,d5]@2]/2", // D D5
Q: "d4 [d4,a4,d5,f#5]!2 d4", R: "[d4,a4]!4 ~@2 [d4,a4]!4 ~@6", S: "[f3,c4]@6 [f3,c4] [e3,b3]",
T: "[f3,c4]@3 [e3,b3,e4]", U: "[f3,c4,f4]@3 [e3,b3,e4]", V: "[[a3,e4,a4]@6 [f3,c4,f4] [g3,d4,g4]]/2",
W: "a4 a4@2 a4@3 e4@2 a4 a4@2 a4@3 e4@2", X: "a4 a4@2 a4@3 e4@2 [f3,c4,f4]@4 [g3,d4,g4]@4",
Y: "[c4,e4,g4]@8 e4 d4 c4@2 c4@2 g4@2", Z: "[c4,e4]@8 d4!2 d4@2 [e4,g4]@2 g4@2",
AA: "[c4,e4]@8 [d4,g4]!2 [d4,g4]@2 [d4,g4]@2 [d4,g4]@2", AB: "[c4,e4]@4 [d4,g4]@2 b3 c4", AC: "c4@2 [g4,b4] [e4,g4]",
AD: "[c4,e4]@2 [d4,g4] [g4,b4]", AE: "c4@2 [d4,g4] [e4,g4]", AF: "[c4,e4]@4 [c4,e4]@2 b3 c4",
AG: "~@5 [e5,a5]!2 d4, [a3,e4,a4]@7 ~", // A5
AH: "[[d4,a4,d5]@20 [d4,a4,d5,g5]!4 [d4,a4,d5,f#5]@3 [d4,a4,d5,f#5] [d4,a4,d5]@3 [d4,a4,d5]]/2", // D5 Dsus4 D D5
AI: "[d4,a4]@4 [d4,a4,d5,g5]!4 [d4,a4,d5,f#5]@8", AJ: "[d4,a4,d5]!4 ~@2 [d4,a4,d5]!4 ~@6",
AK: "[f3,c4,f4,a4]@2 [g3,d4,g4,b4] [e3,b3,e4,g4]", // F G Em
AL: "~@6 b4 c5 d5@2 c5@2 b4@2 c5@2, [f3,c4,f4,a4]@2 [g3,d4,g4,b4] [e3,b3,e4,g4]", // F G Em
AM: "[b4,c5] b4 a4@6 [g3,d4,g4,b4]@4 [e3,b3,e4,g4]@4, [f3,c4,f4] ~, a4 ~@7", // Cmaj7 G Em F5
AN: "~@6 b4 c5 d5@2 c5@2 b4 [b4,c5] g4@2, [f3,c4,f4,a4]@2 [f3,c4,f4] [g3,d4], ~@6 g4 ~", // Cmaj7 F F5 G5
AO: "a4 a4@2 ~@3 e4@2 a4 a4@2 ~@3 e4@2, ~@3 a4@5 ~@3 a4@5",
AP: "a4 a4@2 ~@3 e4@2 [f3,c4,f4]@4 [g3,d4,g4]@4, ~@3 a4@13", // F5 G5
AQ: "[f3,c4,f4,a4,c5]@2 [g3,d4,g4,a4,b4] [e3,b3,e4,g4,e5]", // F G Em
AR: "g5 ~ [g3,d4,g4,b4] [e3,b3,e4,g4,e5], [f3,c4,f4,a4] ~, ~ f5@2 ~", // G Em F
AS: "[a4,e5] a4 [g3,d4,g4,a4,b4] [e3,b3,e4,g4,b4], [f3,c4,f4] ~", // A5 G Em F5
AT: "[a4,c5] a4 [f3,c4,f4,a4] [g3,d4,g4], [f3,c4,f4] ~", AU: "[d4, a4 ~]/2", AV: "~@3 a4, ~@12 e4 ~@3",
AW: "~@10 a3@2 f#4 a3 f#4@2", AX: "[[c4,e4,g4,b4]@24 ~@2 a3@2 f#4 [a3,e4] f#4@2]/2",
AY: "[[a3,e4,a4,c5]@24 ~@2 a3@2 f#4 [a3,e4] f#4@2]/2", // Am A5
AZ: "[[e4,a4,c#5]@7 g4 [f#4,b4]@2 [e4,a4]@2 a4@4 [e5,a5]@2 [f#5,b5]@2 [e5,a5]@6 a3@2 f#4 a3 [f#4,b4]@2, a3@3 ~, ~@7 e4@3 ~@2 e4@12 ~@8]/2", // A B5 A5 B5 A5 B5
BA: "[~@16 [d5,g5]@2 [e5,a5]@2 [d5,g5]@6 a3@2 f#4 [a3,e4] f#4@2, [c4,e4,g4,b4]@3 ~]/2", BB: "[[a3,e4,a4,c5]@3 ~]/2",
BC: "~ g5 e5 ~@2 f#5 d5@2, b5@3 a5@5", BD: "~ f#5 ~@3 e5 c#5@2, a5@3 a5@5, ~@2 d5@3 ~@3",
BE: "~ d5 ~@2 c5 ~@2 c5, g5@3 e5@3 e5@2, ~@2 b4@2 ~ a4@2 ~", BF: "[[a3,e4,a4]@24 ~@2 a3@2 f#4 [a3,e4] f#4@2]/2",
BG: "[[c4,e4,g4,b4]@24 ~@2 a3@2 ~ e4 f#4@2, ~@14 f#4 ~]/2", BH: "[[a3,e4,a4,c#5]@24 ~@2 a3@2 f#4 [a3,e4] f#4@2]/2",
BI: "[~@16 [g5,c6]@2 [g#5,c#6]@2 [g5,c6]@4 ~@2 a3@2 f#4 [a3,e4] f#4@2, [c4,e4,g4,b4]@3 ~]/2", BJ: "[a3,e4,a4]/2",
})).s("gm_distortion_guitar").gain(0.41)
// chords · electric guitar clean
const electric_guitar_clean = note(`<
~@123 A B C D A B E F@2 ~@20 A B C D A B E F@2 ~@20 G H I J A B C K@2 ~@40
>`.pickRestart({
A: "~ g5 [e5,e6] ~@2 f#5 [d5,d6]@2, b5@3 a5@5", B: "~ f#5 ~@3 e5 [c#5,c#6]@2, a5@3 a5@5, ~@2 [d5,d6]@3 ~@3",
C: "~ d5 ~@2 c5 ~@2 c5, g5@3 e5@3 e5@2, ~@2 [b4,b5]@2 ~ [a4,a5]@2 ~", D: "[d4,d5]",
E: "~@2 d5@2 ~@4 c5@2 [a4,a5] [g4,g5] [a4,a5]@2 [a4,a5]@2, g5@3 e5@3 ~@2, ~ [b4,b5] ~@2", F: "[a4,a5]/2",
G: "~ g5 [d5,e5,e6] ~@2 [d5,e5] [d4,a4,d5,a5,d6]@2, b5@3 [d4,a5]@3 ~@2, ~@3 d5@2 ~@3, ~@2 f#5 ~", // Dsus2 D5
H: "f#5!2 ~@3 [c#5,e5,c#6] [c#5,c#6]@2, a5@3 a5@5, ~@2 [d5,d6]@3 ~@3", // C#m C# D
I: "~ d5 ~@2 c5 [a4,a5] [b4,b5] [g4,g5], g5@3 e5@3 ~@2, ~ [b4,b5] ~@2", J: "[d4,g4,d5,g5]",
K: "[[e4,a4,e5,a5]@3 ~]/2", // A5
})).s("gm_electric_guitar_clean").gain(0.41)
// chords · synth brass 2
const synth_brass_2 = note(`<
~@55 A B@2 C D@3 E F G H G H I H J K@3 L M@3 N K@3 L M@3 N A B@2 C D@3 E H O H P H Q H R ~@4 H Q H S ~@4 H Q H S ~@111
>`.pickRestart({
A: "[g4,b4,d5]@2 [b4,d5,g5] [b4,d5,g5]@2 [b4,d5,g5] [b4,d5,g5]@3 [a4,d5,f#5] [g4,d5,f#5]@2 [g4,d5,f#5]@2 e5 d5", // G D Gmaj7
B: "[b4,d5,g5]@2 [b4,d5,g5] [b4,d5,g5]@2 [b4,d5,g5] [b4,d5,g5]@3 [a4,d5,f#5] [g4,d5,f#5]@2 [g4,d5,f#5]@2 e5 d5", // G D Gmaj7
C: "[b4,d5,g5] f#5 e5 [b4,d5,g5] ~@2 [b4,d5,g5] f#5 e5 [b4,d5,g5] ~@6", // G
D: "[d5,f5,a#5]@2 [d5,f5,a#5] [d5,f5,a#5]@2 [d5,f5,a#5] [d5,f5,a#5]@3 [c5,f5,a5] [c5,f5,a5]@2 [c5,f5,a5]@2 g5 f5", // A# F
E: "[d5,f5,a#5]@2 [d5,f5,a#5] [d5,f5,a#5]@2 [d5,f5,a#5] [d5,f5,a#5]@3 [c5,f5,a5] [c5,f5,a5]@2 [c5,f5,a5]@4", // A# F
F: "a5@2 g5 a5 g5 f#5 g5 [e5,f#5] e5 [f#5,g5] a5 [f#5,g5] a5 [e5,f#5] e5@2", // Esus2 Gmaj7 Esus2
G: "a5@2 g5 a5!2 [e5,f#5] e5@2 a5@6 g5@2", H: "a5@2 g5 a5!2 [e5,f#5] e5@2 e5 [f#5,g5] a5 [f#5,g5] a5 [e5,f#5] e5@2",
I: "a5@2 g5 a5!2 [e5,f#5] e5@2 a5@6 g5 e5", J: "a5@2 g5 a5!2 [e5,f#5] e5@2 a5@6 [a4,c5,f5]@2",
K: "[a4,c5,f5]@2 [a4,c5,f5] [a4,c5,f5]@2 [a4,c5,f5] [a4,c5,f5]@3 [g4,c5,e5] [g4,c5,e5]@2 [g4,c5,e5]@2 d5 c5", // F C
L: "[a4,c5,f5]@2 [a4,c5,f5] [a4,c5,f5]@2 [a4,c5,f5] [a4,c5,f5]@3 [g4,c5,e5] [g4,c5,e5]@2 [g4,c5,e5]@2 [g4,d5]@2", // F C G5
M: "[f4,a4,d5]@2 [f4,a4,d5] [f4,a4,d5]@2 [f4,a4,d5] [f4,a4,d5]@3 [e4,a4,c#5] [e4,a4,c#5]@2 [e4,a4,c#5]@2 b4 a4", // Dm A
N: "[f4,a4,d5]@2 [f4,a4,d5] [f4,a4,d5]@2 [f4,a4,d5] [f4,a4,d5]@3 [e4,a4,c#5] [e4,a4,c#5]@2 [e4,a4,c#5]@2 [g4,b4]@2", // Dm A G
O: "a5@2 g5 a5!2 [e5,f#5] e5@2 a5@8", P: "a5@2 g5 a5!2 [e5,f#5] e5@2 a5@2 g5 [e5,f#5] a5@3 g5",
Q: "a5@2 g5 a5!2 [e5,f#5] e5@2 a5@2 g5 [e5,f#5] a5@4", R: "a5@2 g5 a5!2 [e5,f#5] e5@2 a5@4 ~@4",
S: "a5@2 g5 a5!2 [e5,f#5] e5@2 a5@2 g5 [e5,f#5] a5@2 g5 [e5,f#5]", // Esus2
})).s("gm_synth_brass_2").gain(0.41)
// other · synth brass 1
const synth_brass_1 = note(`<
A B@2 C@4 D@4 E@4 C@4 F@3 G C@4 H@3 I ~@4 D@4 E@4 C@4 F@3 G C@4 H@3 I ~@4 J@8 E@4 K@4 E@4 K@4 H@3 I ~@4 J@6 L@2 M@4
J@2 L@2 M@4 J@2 L@2 N ~@110
>`.pickRestart({
A: "~@7 [g2,g3]", B: "a3@3 a3@2 ~ [g2,g3]@2 a3@3 a3@2 ~ [g2,g3]@2, a2@5 ~@3 a2@5 ~@3", C: "[a2,a3]/4", D: "[a2,a3]",
E: "[[c3,c4]@15 [b2,b3]]/4", F: "[c3,c4]", G: "[c3,c4]@3 [b2,b3]", H: "[d3,d4]/3",
I: "[d3,d4]@3 [d3,d4] ~@2 [d3,d4]@3 [d3,d4] ~@6", J: "[[a2,a3]@6 [f2,f3] [g2,g3]]/2", K: "[[a2,a3]@15 [b2,b3]]/4",
L: "[[a2,a3]@12 [f2,f3]@2 [g2,g3] ~]/2", M: "[[f2,f3]@15 [g2,g3]]/4", N: "[f2,f3]@2 [g2,g3] [f2,f3]",
})).s("gm_synth_brass_1").gain(0.41)
// chords · brass section
const brass_section = note(`<
~@3 A@7 B C@3 D A@3 B C@3 E A@3 F G H@2 I J@3 K A@3 B C@3 E A@3 B C@3 E A@3 F G H@2 I J@3 K L M N M N O N P C@3 E A@3
B C@3 E A@3 B G H@2 I J@3 K N Q N R N S N T U@3 V N S N W U@3 V N S N W X@4 Y@3 Z AA@2 AB AC@2 AD@2 AC@2 AD@2 AC@2
AD@2 AC@2 AD@2 AC@2 AD@2 AC@2 Y@3 Z AA@2 AB AC@2 AD@2 AC@2 AD@2 AC@2 AD@2 AC@2 AD@2 AC@2 AD@2 AC@2 AE@2 AF Z AG@2 AH
AC@2 AD@2 AC@2 AD@2 AC@2 AD@2 AC@2 AD@2 AC@2 ~@24
>`.pickRestart({
A: "[f4,a4,d5]@2 [f4,a4,d5] [f4,a4,d5]@2 [f4,a4,d5] [f4,a4,d5]@3 [e4,a4,c#5] [e4,a4,c#5]@2 [e4,a4,c#5]@2 b4 a4", // Dm A
B: "[f4,a4,d5]@2 [f4,a4,d5] [f4,a4,d5]@2 [f4,a4,d5] [f4,a4,d5]@3 [e4,a4,c#5] [e4,a4,c#5]@2 [e4,a4,c#5]@2 [g4,b4]@2", // Dm A G
C: "[a4,c5,f5]@2 [a4,c5,f5] [a4,c5,f5]@2 [a4,c5,f5] [a4,c5,f5]@3 [g4,c5,e5] [g4,c5,e5]@2 [g4,c5,e5]@2 d5 c5", // F C
D: "[a4,c5,f5]@2 [a4,c5,f5] [a4,c5,f5]@2 [a4,c5,f5] [a4,c5,f5]@2 [g4,c5,e5] [g4,c5,e5]@2 [g4,c5,e5]@2 ~ [g4,d5]@2", // F C G5
E: "[a4,c5,f5]@2 [a4,c5,f5] [a4,c5,f5]@2 [a4,c5,f5] [a4,c5,f5]@3 [g4,c5,e5] [g4,c5,e5]@2 [g4,c5,e5]@2 [g4,d5]@2", // F C G5
F: "[f4,a4,d5]@2 [f4,a4,d5] [f4,a4,d5]@2 [f4,a4,d5] [f4,a4,d5]@3 [e4,a4,c#5] [e4,a4,c#5]@2 [e4,a4,c#5]@4", // Dm A
G: "[g4,b4,d5]@2 [b4,d5,g5] [b4,d5,g5]@2 [b4,d5,g5] [b4,d5,g5]@3 [a4,d5,f#5] [g4,d5,f#5]@2 [g4,d5,f#5]@2 e5 d5", // G D Gmaj7
H: "[b4,d5,g5]@2 [b4,d5,g5] [b4,d5,g5]@2 [b4,d5,g5] [b4,d5,g5]@3 [a4,d5,f#5] [g4,d5,f#5]@2 [g4,d5,f#5]@2 e5 d5", // G D Gmaj7
I: "[b4,d5,g5] f#5 e5 [b4,d5,g5] ~@2 [b4,d5,g5] f#5 e5 [b4,d5,g5] ~@6", // G
J: "[d5,f5,a#5]@2 [d5,f5,a#5] [d5,f5,a#5]@2 [d5,f5,a#5] [d5,f5,a#5]@3 [c5,f5,a5] [c5,f5,a5]@2 [c5,f5,a5]@2 g5 f5", // A# F
K: "[d5,f5,a#5]@2 [d5,f5,a#5] [d5,f5,a#5]@2 [d5,f5,a#5] [d5,f5,a#5]@3 [c5,f5,a5] [c5,f5,a5]@2 [c5,f5,a5]@4", // A# F
L: "a5@2 g5 a5 g5 f#5 g5 [e5,f#5] e5 [f#5,g5] a5 [f#5,g5] a5 [e5,f#5] e5@2", // Esus2 Gmaj7 Esus2
M: "a5@2 g5 a5!2 [e5,f#5] e5@2 a5@6 g5@2", N: "a5@2 g5 a5!2 [e5,f#5] e5@2 e5 [f#5,g5] a5 [f#5,g5] a5 [e5,f#5] e5@2",
O: "a5@2 g5 a5!2 [e5,f#5] e5@2 a5@6 g5 e5", P: "a5@2 g5 a5!2 [e5,f#5] e5@2 a5@6 [a4,c5,f5]@2",
Q: "a5@2 g5 a5!2 [e5,f#5] e5@2 a5@8", R: "a5@2 g5 a5!2 [e5,f#5] e5@2 a5@2 g5 [e5,f5] a5@3 g5",
S: "a5@2 g5 a5!2 [e5,f#5] e5@2 a5@2 g5 [e5,f#5] a5@4", T: "a5@2 g5 a5!2 [e5,f#5] e5@2 a5@4 ~@4",
U: "[a3,c4,f4]@2 [b3,d4,g4] [g3,b3,e4]", V: "[a3,c4,f4]@3 ~",
W: "a5@2 g5 a5!2 [e5,f#5] e5@2 a5@2 g5 [e5,f#5] a5@2 g5 [e5,f#5]", X: "[[f3,c4,f4]@15 ~]/4",
Y: "[[b3,d4,g4]@3 [a3,d4,f#4]@8 ~@5 [b3,d4,g4]@8, ~@11 [a3,c#4,e4]@5 ~@8, ~@7 a4@5]/3", Z: "[a3,d4,f#4]",
AA: "[[b3,d4,g4]@3 [a3,d4,f#4]@8 [c#4,e4,a4]@5]/2", AB: "[b3,d4,g4]@3 [g3,c4,e4]@5", AC: "[e3,a3,e4]/2",
AD: "[e3,b3,e4]/2", AE: "[[d4,g4,b4]@3 [d4,f#4,a4]@8 [c#4,e4,a4]@5]/2", AF: "[b3,d4,g4] [c4,e4,g4]",
AG: "[[g3,b3,d4,g4]@3 [a3,d4,f#4,a4]@8 [a3,c#4,e4,a4]@5]/2", AH: "[g3,b3,d4,g4] [g3,c4,e4,g4]",
})).s("gm_brass_section").gain(0.41)
// other · cello
const cello = note("<~@103 A@3 B ~@4 A@3 B ~@4 C D E F G ~@28 G ~@77>".pickRestart({
A: "f4@2 g4 e4", B: "f4@3 ~", C: "f4@4 ~ a3 [c4,e4] e4, ~@2 g4 ~", D: "[f4,g4] ~ g4 e4, ~ f4@2 ~",
E: "e4 ~ g4 e4, f4 ~, ~ a3@2 ~", F: "c4 f3!2 g3, f4 ~", G: "a3",
})).s("gm_cello").gain(0.41)
// bass · synth bass 2
const bass = note("<~@209 A B C D C E F ~@14>".pickRestart({
A: "~ [g2,g3]", B: "[a2,e3]@7 d3", C: "d3 c#3 a2@6 a3@6 e3@2", D: "a2@7 d3", E: "g2@7 c3", F: "b2 g2@3 g3@2 c3@2",
})).s("gm_synth_bass_2").gain(0.51)
// chords · synth bass 1
const synth_bass_1 = note("<~@204 A B C@3 D E F E G C@3 D E F E G C@3 D H I H J>".pickRestart({
A: "~@11 e3!5", B: "e3!12 ~ [e4,g4,c5]!3, ~@6 e3 ~",
C: "[d4,g4,b4]!2 [d4,g4]@2 ~@2 d4@2 [d4,f4] [d4,g4]@2 [g3,d4,g4] g3 [g3,e4,g4,c5]!3", // G G5 Dm G5 C
D: "[d4,g4,b4]!2 [d4,g4]@2 ~@2 d4@2 [d4,f4] [d4,g4]@2 [g3,d4,g4] g3 [a3,e4,a4,d5]!3", // G G5 Dm G5 Asus4
E: "a3!8 [a3,e4,g4] a3!2 [a3,e4,g4] a3 [a3,e4,a4,d5]!3, [e4,a4,c#5]@2 [e4,a4]@2 ~@2 e4@2 ~ [e4,a4]@2 ~@5", // A7 Asus4 A A5
F: "[a3,e4,a4,c#5]!2 a3!6 [a3,e4,g4] a3!2 [a3,e4,g4] a3 [a3,e4,a4,d5]!3, ~@2 [e4,a4]@2 ~@2 e4@2 ~ [e4,a4]@2 ~@5", // A A7 Asus4 A5
G: "a3!8 [a3,e4,g4] a3!2 [a3,e4,g4] a3 [g3,e4,g4,c5]!3, [e4,a4,c#5]@2 [e4,a4]@2 ~@2 e4@2 ~ [e4,a4]@2 ~@5", // A7 C A A5
H: "[e4,a4,c#5]@2 [e4,a4]@2 ~@2 e4@2 [e4,g4] [e4,a4]@2 [e4,g4] ~ [e4,a4,d5]!3", // A A5 Em A5 Em Dsus2
I: "[e4,a4,c#5]!2 [e4,a4]@2 ~@2 e4@2 [e4,g4] [e4,a4]@2 [e4,g4] ~ [e4,a4,d5]!3", // A A5 Em A5 Em Dsus2
J: "[e4,a4,c#5]@2 [e4,a4]@2 ~@2 e4@2 [e4,g4] [e4,a4]@2 [e4,g4] ~ [e4,g4,c5]!3", // A A5 Em A5 Em C
})).s("gm_synth_bass_1").gain(0.41)
// chords · synth bass 1 · soft notes
const synth_bass_1_soft = note("<~@200 A B@3 C ~ D@4 ~@4 D@4 ~@4 D@4 ~@4>".pickRestart({
A: "~@2 e3!14", B: "e3!16", C: "e3!11 ~@5", D: "g3!11 ~@5",
})).s("gm_synth_bass_1").gain(0.2)
// other · pad poly
const pad_poly = note("<~@209 A B C D E F G ~@14>".pickRestart({
A: "~@13 a3!3", B: "a3@2 a3@2 ~ a3 ~@9 d3", C: "d3 c#3 a2!2 ~@4 g3 a3 ~@3 e3!3", D: "a2@2 ~@11 e3!3",
E: "a2@2 a3!2 ~@2 a2@2 a3 a3@2 a3 ~ g3!3", F: "g3@2 ~@11 g3!3", G: "g3@2 g3!2 ~ g3 ~@2 g3!2 g3@2 ~@2 g3!2",
})).s("gm_pad_poly").gain(0.51)
// bass · fretless bass
const bass_2 = note(`<
~@2 A B C D E F G D H I J K L M N M O P Q P R M S M T U V W X Y Z AA AB F G D H I J K L M N M O P Q P R M S M T U V W
X Y Z AC AD AE AF AE AG AH AI AJ AK AL AM K AN AO AP AQ AR I AS AT AU AV AP AW AX AY AZ BA BB BC Z AC AD BD BE BF BG
BH BI BF BJ BK BL BK BM BH BN BF BO BP BQ@2 BR BH BN BF BO BS@3 BT BU BV BW BX BY BZ CA CB@2 CC CD CE CF CG@2 CH CI
CJ@2 CK CL CM@2 CN@2 CC CO CP CQ BU BV BW BX BY BZ CA CB@2 CC CD CE CF CG@2 CH CI CJ@2 CK CL CM@2 CN@2 CC CO CR CS CT
CU CV CW CT CU CV CX@2 CC CY CZ DA DB DC DD@2 DE DF DG DH DI DJ DK@2 DL DM DN DO DP@3 DQ DR DS ~@14
>`.pickRestart({
A: "~@14 g2 g#2", B: "a2@2 a1 a1@2 a2 a1@2 a1!2 a1@2 a1@2 g2 g#2", C: "a2 a2@2 a1@3 a1@3 a2 a1@2 a1@2 g2 g#2",
D: "a2@2 a1 a1@2 a2 a1@3 a2 a1@2 a2@2 g2 g#2", E: "a2 a2@2 a1@2 a2 a1@3 a2 a1@2 f#2@2 g2 g#2",
F: "a2@2 a1@3 a2@4 a1 a1@2 a2@2 g2 g#2", G: "a2@3 a1@2 a2 a1@3 a2 a1@2 a2@2 g2 g#2",
H: "a2@2 a1 a1@2 a2 a1@2 a2!2 a1@2 a2@2 g2!2", I: "c2@2 c2!2 ~@2 c2@2 d2 e2 g2@2 g2 a2 c3@2",
J: "c2@2 ~ c3 ~ g2 a#2@2 a2!2 g2@2 a2 d#2 e2@2", K: "c2@2 c2!2 ~ c2 c2@2 d2 e2 g2@2 g2 a2 c3@2",
L: "c2@2 ~ c3 ~ a#2 a#2@2 a2!2 g2@2 e2 g1 g#1@2", M: "a1@2 a1 a1@2 a1 a1@2 b1 c#2 e2@2 d2@2 c2@2",
N: "a1@2 a1 a1@2 a1 a1@2 a1 ~ g2 g#2 a2@2 a2@2", O: "a1@2 a1 a1@3 g2 g#2 a2@2 d3 d#3 e3@2 a1 b1",
P: "c2@2 c2 c2@2 c2 c2@2 d2 e2 g2@2 g2 a2 c3@2", Q: "c2@2 g2 c3 ~ a#2 a#2@2 a2@2 g2@2 a2 g2 e2@2",
R: "c2@2 ~ c2 ~@2 d3 d#3 e3@2 g2 g#2 a2@2 c3@2", S: "a1@3 d2@3 g2 a2 g2 a2@2 g2 a2@2 a2@2",
T: "a1@3 a2 ~@2 a2@2 a2@2 g2@2 a2 g2 c2 c#2", U: "d2@2 d2!2 ~@2 d2@2 e2 f#2 a2@2 a2 b2 d3@2",
V: "d2@2 ~ d2 f#2@2 f3 e3@3 d3!2 d3@2 a2 b2", W: "~@2 d2!2 ~ d2 d2@2 e2 f#2 a2@2 a2 b2 d3@2", X: "d2!4 ~@2 d2!4 ~@6",
Y: "f1@3 d#2 f2@2 d#2@3 d2!3 c2@2 a1@2", Z: "f1@2 f1 f2@2 d#2 d#2@2 a1!2 a1@2 c2@2 a1@2",
AA: "f1@2 f2 f2@2 d#2 d#2@3 d2 d2@2 c2@2 a1@2", AB: "f1@2 f2 f2@2 d#2 d#2@2 g1 a1 c2@2 a1@2 f1@2",
AC: "f1 f1@2 f2 f2@2 d#2@3 d2!3 c2@2 a1@2", AD: "f1 f1@2 f2 f2@2 d#2@2 f2!2 f2@2 g2@2 g2@2",
AE: "a1 a1@2 a2 ~ a2 g2 ~ a1!3 a2 ~ a2 g2 ~", AF: "a1!3 a2 ~ g2 a2 g2 f2@2 d2 f2 g2@2 e2 g2",
AG: "a1@3 a2 ~ a2 a1@2 f2 f2@3 g2 g2@3", AH: "a1 a1@2 a2 ~ a2 g2 ~ a1 a1@2 a2 ~ a2 a1@2",
AI: "a1!2 a2 b2 a2 g2 a2@2 f2 f2@3 c2 d2 g2@2", AJ: "a1@3 a2 ~@2 g2@2 a1@3 a2 ~ a2 g2@2",
AK: "a1@3 a2 ~ a2 g2@2 a2!7 g2", AL: "c2!4 ~ c2 c2@2 d2 e2 g2@2 g2 a2 c3@2",
AM: "c2@2 c2 c3 ~ g2 a#2@2 a2@2 g2@2 a2 g2 e2@2", AN: "c2@2 g2 c3 ~ g2 a#2@2 ~ a2@2 g2 d2@2 e2@2",
AO: "a1@2 a1 a2 ~@2 a1@2 b1 c#2 e2@2 g2!2 a2@2", AP: "a1@2 a1 a1@2 a1 a1@2 b1 c#2 e2!2 d2@2 c2@2",
AQ: "a1@2 a1 a1@2 a1 a1@2 b1 c#2 e2@2 g2 a2 a2@2", AR: "a1@2 a1 e2 ~ d2 d2@2 c2@2 a1@2 a1@2 g1@2",
AS: "c2@2 g2 c3 ~ g2 d3 d#3 e3@2 g2 a2 c3@2 a2 g2", AT: "c2@2 c2 c2@2 c2 c2@2 d2 e2 g2@2 f2@2 e2@2",
AU: "a1@2 g2 c3 ~ g2 a#2@2 g2 a2@2 g2 g2@2 e2!2", AV: "a1@2 a1 a1@2 a1 a1@2 b1 c#2 e2@2 g2@2 a2@2",
AW: "a1@2 a1 a1@3 a1!2 b1 c#2 e2@2 g2 a2!3", AX: "a1@2 a1 e2 ~ d2 d2@2 c2!2 a1@2 a1@2 a1@2",
AY: "d2@2 d2 d2@2 d2 d2@2 e2 f#2 a2@2 a2@2 b2@2", AZ: "d2@2 d2 d2@2 d2 d2@2 e2 f#2 a2@2 a1@2 b1@2",
BA: "d2@2 d2!2 ~@2 d2@2 e2 f#2 a2@2 a2@2 e3 f3", BB: "f#3@2 ~ a2 ~@2 d3@2 ~@8",
BC: "f1@2 f2 f2@2 ~ d#2 d#2@2 d2!3 c2@2 a1@2", BD: "a2 a2@2 a2@3 g2 g#2 a2 a2@2 a1@3 g2 g#2",
BE: "a2@3 a1@2 a2!2 g2 f2@4 g2@4", BF: "a1 a1@2 a2@2 a2 g2@2 a1 a1@2 a2@2 a2 g2@2", BG: "a1@3 a2@2 a2!2 g2 f2@4 g2@4",
// … 105 more lines
More by Led Zeppelin
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.