0:00/0:00
// Forever — Kenny Loggins
// 90 bpm, 4/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 89 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): Electric Guitar.
setcpm(90/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 · electric bass finger · "Bass"
const bass = note(`<
~ A B A C D@2 E F G H I J E F G H I J E K L M N O P M Q R S T S U V W X R S Y E F G H I Z E AA L M N O P M Q R S T S U
V W X R S U L AB AC AD AC AE AF AG AH Q AI S T S T S T AJ AK AL ~@4
>`.pickRestart({
A: "eb2@3 g2 c2@2 bb1@2", B: "ab1@3 ab1 bb1@2 bb1@2", C: "ab1@3 g1 ab1@3 g1", D: "[ab1@15 ~]/2",
E: "eb2@3 eb2 eb2@3 ~", F: "ab2@3 ab2 ab2@3 ~", G: "g2@3 g2 g2@3 ~", H: "c2@3 c2 c2@3 ~", I: "f2@3 f2 f2@3 ~",
J: "bb1@3 bb1 bb1@3 ~", K: "b2@5 ~ b2@2 b2@6 d3@2", L: "c3@3 c3!2 c3@2 g3", M: "g2@3 g2!2 g2@2 d3",
N: "bb2@3 bb2!2 bb2@2 f3", O: "f2@3 f2!2 f2@2 c3", P: "c2@3 c2!2 c2@2 g2", Q: "ab2@3 ab2!2 ab2@2 eb3",
R: "bb2@5 ~ bb2@2 bb2@6 f3@2", S: "eb2@2 g2!2 c3!2 bb2 f3", T: "ab2@3 ab2 bb2!3 f3", U: "ab2@3 ab2 b2 b2@2 d3",
V: "c3@3 c3 f2!3 c3", W: "g2@3 g2 c3 c3@2 g3", X: "f2@2 g2!2 ab2 ab2@2 eb3", Y: "ab2@2 g2!2 f2 f2@2 c3",
Z: "bb2@3 bb2 bb2@3 ~", AA: "b2@3 b2 b2@3 ~", AB: "f2@6 f2@2 f2@2 c3 d3 c3@2 c2@2", AC: "bb2@2 bb2!2 bb2@2 bb2 ~",
AD: "bb2@3 bb2 bb2@2 bb2 ~", AE: "bb2@3 bb2 bb2@2 b2 ~", AF: "c3@2 c2!4 g2 d3", AG: "f2@3 f2 g2 g2@2 d3",
AH: "ab2@4 g2 ~ g2@2 ab2@4 g2@2 bb2@2", AI: "ab2@5 ~ ab2@2 ab2@6 eb3@2", AJ: "eb2@2 c2!2 bb1!2 g1 d2",
AK: "f1@2 ~ g2 ab2@2 bb2@2", AL: "eb2",
})).s("gm_electric_bass_finger").gain(0.32)
// chords · acoustic guitar steel · "Guitar1"
const acoustic_guitar_steel = note(`<
~ A B A C D@2 E F G H I J K L M N O P Q R S T U V W X Y Z 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 AZ BA BB BC BD BE BF BG BH BI BJ BK BL BM BN BO BP BQ BR BS BT@2 BU BV BW BX BY BZ CA CB CC CD@3 ~
>`.pickRestart({
A: "[g3,bb3,eb4]@3 [bb3,d4,g4] [eb4,g4,c5]@2 [d4,f4,bb4]@2", // Eb Gm Cm Bb
B: "~ f4 [bb3,eb4] [c4,f4] [bb3,eb4] [bb3,d4] [ab3,c4] [f3,bb3], [bb3,eb4,g4] ~@3", // Eb5 F5 Eb5 Bb Ab Bb5 Eb
C: "~ f4 [bb3,eb4] [c4,f4] [c4,eb4] [bb3,d4] [ab3,c4] [g3,bb3], [bb3,eb4,g4] ~@3", // Eb5 F5 Cm Bb Ab Gm Eb
D: "[~@6 bb2 g2, [eb3,c4]@7 ~, ~ eb4@28 ~@3, ~ bb4@14 ~]/2", E: "f2@3 f2",
F: "~@4 g4 [eb4,f4] eb4 [ab3,f4], eb3@3 [c3,c4], ab3@3 ab3@4 ~, ~ eb4@4 ~@3, ~ c4@2 ~", // Ebsus2 Db C
G: "~@7 d4, f4, g4@5 bb3@3, d3@2 g2 f2, ~@3 g3@5",
H: "~ bb3 [f4,g4] ~ bb3!2 ~ f4, g2@2 e4 ~, f4 c4@2 [a2,bb3,c4,e4], ~@2 bb3 ab4@3 ~@2, ~@3 f4@4 ~", // Fsus2 Am
I: "eb4@3 ~@4 c4, [f3,ab3,bb3], c3@2 bb2 g2, ~@3 eb4@5, ~@5 f4@3", // Bb7
J: "eb4 ~@7 ab3@2 ~@4 eb4@2, f2, bb2@3 eb4@3 bb3@2, ab3 ab3@3 [bb2,d4]@4, ~ eb4@3 bb3@6 ab3@6", // Bb
K: "bb3@3 bb3 ~@3 eb4, f2@3 c3, [eb3,eb4,f4] [eb3,bb3], ~@9 eb4@5 ~@2, ~@5 g3@3", // Ebsus2 Eb5
L: "ab3 ~@6 eb4, bb3@15 ~, eb3@5 ab3@3, eb4 c4@2 [c3,c4], ~ ab3@2 eb4@4 ~", // C
M: "f4 ~@13 d4@2, d3@5 g3@3, g3@3 bb3@3 [d3,bb3]@2, bb3 f4@12 ~@3, ~ bb4@14 ~", // Gm
N: "bb3 ~@3 bb3 ~@2 f4, g2, c3@3 f4@3 c4@2, f4@2 c4@3 bb3@3, ~ bb3@3 [c3,e4]@4", // C
O: "eb4 ~@13 eb4@2, f3@3 c3, c3@3 ab3@5, ab3 eb4@9 c4@6, ~ bb3@15",
P: "~@3 [ab3,bb3] ~@3 ab3, [f2,bb2] [bb2,d4], ab3@3 ~ ab3@3 ~, eb4 eb4@2 [c3,eb4], ~ bb3@2 ~@2 bb3@3", // Absus2 Bb5 Bb Cm
Q: "f4@3 f4 bb2@2 ~ bb3, [eb3,b3] [eb3,eb4,g4], ~@4 bb3@3 ~, ~@3 f2", // Abm Eb
R: "g3 ~@5 g3@2 g3 b2@2 ~@2 b4 ~ g4, [g2,g4]@2 [f2,d4,f4] ~, d4@2 d4@6 ~@3 b3@2 ~ [b3,b4]@2, ~ b2@8 ~@3 [b2,d4,f4]@4, ~ g3@3 b3@4 ~ g3@7", // G Dm B Bdim
S: "~@3 [c4,eb4,f4] g4 ~@2 [eb3,c4,eb4], c3, [c4,eb4,c5]@3 ~ eb4@2 [f2,g3]@2, ~@2 eb3@6 ~@2 g3 f4@3 ~@2, ~@2 g3@2 ~ c4@2 ~", // F7 Cm Fsus2
T: "~@4 d4@2 [f4,g4]@2 ~@3 db4 [bb3,d4]@2 [bb3,d4]@2, g2@4 [bb2,c4] g4@3, [g3,d4]@3 eb4@3 d4@4 bb3@2 c4 ~@3, ~ bb3@3 bb4@3 ~, ~ g3@2 [g2,g3]", // Fsus2 Bb Bbsus2 G5 G
U: "db4@2 db4 ~@3 [eb4,bb4]@2 f4@2 ~@4 [bb3,db4]@2, bb2, bb3@5 bb4@3, ~@3 db4@3 db4@4 f4 eb4 [ab2,f4]@4, ~@2 f4@2 db5@3 ~", // Eb5 Bbm Db
V: "db4 ~ f4 [f4,bb4] f4 ~ a3 [a3,f4,g4], f2@2 [f2,c4] [a2,c4], [bb2,bb3,f4]@2 [ab2,bb3]@2 a4@3 ~, ~ db4@3 f3@4, ~@5 f4@2 ~", // Bb5 Dm F5 Am Bb5 Absus2
W: "~@3 [c4,eb4,ab4] g4 ~ g3 [eb3,g3,eb4], c3@3 c3, [g3,eb4]@3 eb4@3 ~@2 eb4@6 ~@2, ~@2 eb3@6 ~@3 f4@3 ~@2, ~@2 g3@2 ~ c4@3", // Ab Eb Cm
X: "g3 bb3 d4 [d4,g4] d4 ~ [bb3,d4] [bb3,d4,f4], g2@11 eb4@3 ~@2, d4 bb3@2 g2, ~ g3@4 [g3,g4]@3, ~@4 bb4@3 ~", // G5 Bb G
Y: "~@2 f4 [f4,bb4] ab4 ~@2 c4, [ab2,bb3,c4]@2 ab2 [c3,eb4], bb4@3 ~ c5@3 ~, [bb2,f4]@2 bb2@2 ~ ab4@3, ~ d4@3 [ab3,bb4]@4", // Bb5 Ab Cm Bb5 Absus2
Z: "f4 ~@9 eb4@2 ~@2 g3@2, bb1, bb2@2 eb3 [bb2,eb4], bb3 eb4 d3 f4@3 ~@2, eb4 f4@3 bb3@8 ~@4", // Eb5
AA: "eb3@2 eb3 [g1,bb2,bb3,d4,g4] [c2,eb3,g3,eb4,g4,c5]@2 [bb1,d3,d4,f4,bb4]@2, [eb2,eb4,g4,bb4]@3 ~@5", // Gm Cm Bb Eb
AB: "c4!2 ~@4 g4 [ab3,c5], [ab1,ab4] bb1, [c3,eb4]@2 [c3,c4]@3 eb4@3, ~ eb4 [f4,bb4,eb5] [c3,c4,d4,f4], ~@3 ab3@4 ~", // Ab Cm C Ebsus2 Dm7
AC: "bb2@2 eb3 [g1,bb2,bb3,d4,g4] [c2,eb3,c4,eb4,g4,c5]@2 [bb1,d3,d4,f4,bb4]@2, [eb2,g3,bb3,eb4,g4,bb4]@3 ~@5", // Gm Cm Bb Eb
AD: "eb4@2 eb4@2 ~@4 [g4,d5] ~@5 ab3@2, [ab1,ab4] b1, [c3,ab3,c4]@4 [c3,c4]@7 [g4,d5,g5] [c3,c4]@4, ~@2 eb4@2 ~ eb4@3, ~@3 ab3@4 ~", // G5 Ab Fm C G5 C
AE: "~@2 g2 [c2,bb2,bb3,eb4,g4] [ab2,ab3,c4,eb4,ab4]@2 [ab2,ab3,c4,eb4,g4]@2, [c2,bb3,g4,bb4]@3 ~ f1@4, eb3 ~@3, ~ eb5@5 ~@10", // Cm7 Ab Abmaj7 C7
AF: "f4@2 f4@2 bb3@2 bb3@2 ~@7 eb5, g1 [c2,eb3,bb3,g4,bb4,eb5], [bb2,bb3,d4] [bb2,d4] ~ eb4, ~@7 g3", // Cm7 Bb
AG: "eb3@2 eb3 [g1,bb2,bb3,eb4,f4] [ab1,ab2,ab3,c4,eb4,f4]@2 [ab1,ab2,ab3,c4,eb4,f4]@2, [f1,ab3,ab4,bb4,eb5]@3 ~@5", // Eb Fm7
AH: "~@7 bb3, bb1, bb2@2 f4@2 f2 eb4@3, bb3 f4 eb4@4 bb3@8 ~@2, eb4 bb4@11 [bb2,f4]@4", // Bb5
AI: "eb3@2 eb3 [g1,bb2,bb3,d4,g4] [c2,eb3,c4,eb4,g4,c5]@2 [bb1,d3,bb3,d4,f4,bb4]@2, [eb2,eb4,g4,bb4]@3 ~@5", // Gm Cm Bb Eb
AJ: "[ab1,c3,c4,eb4,ab4] ~ [c3,c4] eb4@2 ~@2 ab3, ~ ab3@2 ab3@4 ~, ~@3 [g1,bb3,eb4,f4]@3 [f1,ab2]@10, ~@3 c4@3 c4@2, ~@5 eb4@3", // Ab C Eb Fm
AK: "f4 ~@5 bb3@2 ~@6 f4@2, eb3 [eb3,bb3], bb3@3 ~ c3 eb4@3, ~ [f4,bb4]@7 ~ bb4@7, ~@9 f4@3 bb2@4", // Eb5 Bb5
AL: "~@7 bb3, ab2, bb3@3 bb3@4 ~, ab3 ab3@4 ab3@3, ~ eb4@3 eb4@8 eb4@4",
AM: "bb3@3 bb3 f4 ~@2 [d4,bb4], [d4,bb4]@7 ~, g2@3 d3, [g3,f4] [g3,bb3], ~@5 f4@3", // Gm G7 Gm
AN: "~@2 [a2,bb3,g4] [c3,bb3] c3@2 g4 e4, f4@4 e4@3 ~, [c3,g3]@3 ~@3 [c3,g3]@2, [bb3,g4] ~ bb3@2, ~ c4@2 ab4@3 ~@2", // Eb C7 C5 Eb
AO: "~@7 eb4, f3, f2@5 ab3@3, ab3@3 bb3@5, eb4 bb3 eb4@10 ab2@4",
AP: "~@4 [c3,ab3,f4] [bb2,ab3,eb4] [bb3,d4] [f3,d4], bb2@5 ~ [bb2,ab3]@2, eb4@3 bb3@2 ~@3, bb3 [d3,ab3] ~@2, ab3 f4@3 d4@2 ~@2", // Fm Ebsus4 Bb Dm Bb7 Ddim
AQ: "ab4@3 ab3 ~@3 eb4, [eb3,bb3,f4] [eb3,bb3], ~@9 g4@7, ~@9 eb4@5 ~@2, ~@3 bb2", // Ebsus2 Eb5
AR: "g3 ~@2 b3 g3@2 [c3,g3] [b2,eb4,g4], [b2,g4]@4 [b2,d4,f4]@3 ~, b3@3 ~@5, d4!2 ~@2, ~ g3@3 ~@4", // C5 Baug Em Bdim
AS: "~@3 [c4,eb4,f4] ~@2 [c3,g4] [c3,eb3,c4,eb4], c3@11 f4@3 ~@2, [g3,eb4]@3 eb4@3 ~@2 eb4@6 ~@2, ~ eb3@3 [g2,g4]@2 g3@2, ~@2 g3@2 ~ c4@2 ~", // F7 C5 Cm G
AT: "[bb3,d4]@2 ~@4 [f4,g4]@2 ~@3 db4 [g2,bb3,g4]@2 [g2,bb3]@2, g2@4 [bb2,c4] [d4,g4] d4@2, g3@3 eb4 d4@4 bb4@6 ~@2, ~@2 bb3@4 bb3@6 c4 ~@3, ~ d4 g3@4 ~@2", // Bb Fsus2 Gm Bbsus2 G5
AU: "db4@2 db4 ~@3 [eb4,bb4]@2 f4@2 ~@2 bb2@2 [bb2,bb3,db4]@2, bb3@3 f4, bb2@4 db3 bb4@3, ~@3 db4@3 db4@4 f4 eb4@3 ~@2, ~@2 f4@2 db5@3 ~", // Eb5 Bbm
AV: "[db4,f4]!2 ~ [bb3,bb4] f4!2 c4 [a3,c4,g4], f2@2 [f2,c4] [a2,f4], bb3@3 ~ f3@4, bb2@2 [bb2,db4,f4]@2 [a3,a4]@3 ~", // Db Bb Am7 F5 Dm Bbm A
AW: "eb4 ~ g3 [c4,ab4] [eb4,g4] ~ c3 [c3,eb3,eb4], c3@11 f4@3 ~@2, c4@3 g3@3 g3@2, ~ eb3@3 ~ eb4 ~@2, ~@3 eb4@3 ~@4 c4@6", // Fm Eb Cm
AX: "[bb3,d4] d4!2 [d4,g4] d4 ~ [g2,g3,d4] [g2,bb3,d4,f4], g2@5 g4@3, g3@2 g3@3 d4 ~@2, ~@2 bb3@4 bb3@5 eb4@3 ~@2, ~@4 bb4@3 ~", // Bb G5 Gm7
AY: "d4 ~ f4 [eb4,f4,bb4] ab4 ~@2 [ab3,c4], [ab2,bb3]@2 [ab2,eb4] [c3,eb4], bb4@3 ~ bb4@4, [bb2,f4]@2 g2@2 ~ ab4@3, ~ d4@3 [ab3,c4,c5]@3 ~", // Ebsus2 Ab Absus2 Ab5 Cm Bb5 Ab
AZ: "~ eb4 ~@8 eb4@2 [bb2,eb4,g4]@2 [bb2,bb3,bb4]@2, bb1, bb2@2 f2 ~, bb3 f4@2 ~, ~ f4 eb4@4 bb3@6 ~@4", // Eb Bb
BA: "eb3@2 f2 [g1,g2,bb3,d4,g4] [c2,c3,g3,eb4,g4,c5]@2 [bb1,bb2,d4,f4,bb4]@2, [eb2,eb4,g4,bb4]@3 ~@5", // Gm Cm Bb Eb
BB: "eb4@2 eb4@2 ab2@2 ~ bb4 [bb2,eb4,f4,bb4,eb5]@4 [bb2,bb3,f4,g4]@2 [bb2,bb3,f4]@2, [ab1,ab4] bb1, [ab2,ab3,c4] [c4,eb4] ~ d4, ~@3 [ab2,bb3] ~@4", // Bbsus4 Gm7 Bb5 Ab Cm Absus2
BC: "eb3@2 bb2 [g1,g2,bb3,d4,g4] [c2,c3,eb4,g4,c5]@2 [bb1,bb2,bb3,d4,f4,bb4]@2, [eb2,g3,bb3,eb4,g4,bb4]@3 ~@5", // Gm Cm Bb Eb
BD: "eb4@2 eb4@2 [ab2,eb4]@2 ~ bb4 [g4,d5] ~@5 g3@2, [ab1,ab4] [b1,d4], [ab2,c4]@4 c4@4 ~@3 [g4,d5]@3 ~@2, ~@6 [ab2,eb4]@2 b2@3 ~ [d3,b3]@4", // Ab5 G5 Ab Bm Ab G5 Ab5 G
BE: "c3@2 eb3 [c2,c3,bb3,eb4,g4] [f2,ab3,ab4]@2 [f2,ab3,g4]@2, [c2,d4,g4,bb4]@3 ~ [f1,c4,eb4]@4", // Cm7 Fm Gm F7
BF: "bb3 ~@2 f4 ~@3 bb3, g1 [c2,c3,g3,g4,bb4], f4@3 ~@3 d4@2, [g2,d4] [d3,d4] ~@2, ~ bb3@3 ~@4", // C7 G5 D
BG: "f2@2 bb2 [g1,g2,bb3,eb4,f4] [ab1,ab2,ab3]@2 [ab1,ab2,ab3]@2, [f1,ab3,bb3,eb4]@3 ~ [c4,eb4,f4]@4", // Eb Ab Fm7 F7
BH: "eb4@2 ~@2 [c3,f4]@2 ~ bb3 [bb1,bb2,f4]@2 [c2,c3,f4]@2 ~@2 f4@2, [bb1,bb3]@8 bb4 ~@7, [bb2,f4]@2 ~ [bb2,eb4] eb4@2 [d2,d3,eb4]@2, ~ eb4@2 ~ bb3@4", // F5 Bb5 F5 Bb Bb5 Eb5 Ebmaj7
BI: "eb3@2 bb2 [g1,g2,bb3,d4,g4] [c2,c3,c4,eb4,g4,c5]@2 [bb1,bb2,bb3,d4,f4,bb4]@2, [eb2,g3,eb4,g4,bb4]@3 ~@5", // Gm Cm Bb Eb
BJ: "[bb3,c4,eb4] [c4,eb4,f4] eb4 [ab3,f4] ~@3 c4, [ab1,ab2,ab4] [b1,d4,g4], ~@2 bb3@3 eb4@3, ~@3 c4@4 ~, ~@2 ab2 [bb2,bb3]", // Cm7 F7 Db Ab G Bb
BK: "[c3,eb3,g3,bb3]@2 eb3 [c3,f3,c4] [c3,eb3,bb3] [c3,f3,f4] [g2,eb3,g3] [g2,ab2,f3,d4], c2@3 ~, ~ g3@2 ~, ~ bb2!3", // Cm7 F5 Cm7 F5 Cm Ddim
BL: "g3 bb3 ~@12 g3@2, g2, [a2,eb3]@3 g3@4 ~, ~ g3@3 eb4@6 bb3@6, ~ bb3@3 c3@2 [bb2,eb4]@2", // Adim Eb5
BM: "g2@2 [g2,f4] [f2,f3,bb3,f4] [g2,g3,bb3,eb4]@2 [f2,f3,bb3,d4]@2, [g3,bb3]@3 ~@5, f3 ~@7", // G7 Bb5 Eb Bb Gm
BN: "c4!2 ~ eb4 [eb3,ab3,c4]@2 d4!2, ab3 ~, eb3 [eb3,c4] ~ [f2,f3,bb3]", // Ab Cm Bb5
BO: "g2@2 [g2,f4] [f2,f3,bb3,d4] [g2,g3,bb3,eb4]@2 [f2,f3,bb3,d4,f4]@2, [g3,bb3,eb4]@3 ~@5, f3 ~@7", // G7 Bb Eb Bb Eb
BP: "ab3!2 ~ ab3 [eb3,ab3,c4]@2 ~ f4, c4 ~, eb3 [eb3,eb4] ~ [f2,f3,g3,b3,d4]", // Ab Eb G7
BQ: "~ [bb2,eb3] [c3,g3,d4] [d3,f3,bb3,d4,bb4] c4!2 [bb3,bb4] bb3, [c4,eb4]@3 ~ [c3,eb3,g3,eb4,g4]@2 [bb2,f3,g3,d4,g4]@2, [g2,c3,g3] f4 ~@2", // Eb5 Csus2 Bb Cm Gm7 C5
BR: "ab3@2 ab3@2 ~@2 f4@2 d4 ~@3 bb3@2 [bb3,f4]@2, [ab2,eb3,f3] [bb2,f3,g3], f4@3 ~ bb4@2 d4@2, c4@2 [c3,ab3,c4]@2 ~ g4@3, ~@2 eb4@6 ~ [bb3,d4] f4@4 ~@2", // Bb5 Fm7 Gm7 Fm Bb
BS: "~@2 d3 [eb3,bb3,d4] ~@2 f2 [g2,g3,bb3,eb4,g4], [eb3,ab3,c4,d4]@3 ~ [eb3,ab3,c4,eb4]@3 ~", // Ebmaj7 Eb Ab
BT: "[~@3 ab4 ~@11 c4, ab2@6 ab2 c3, [ab3,c4] ab3@3 c5 ab4@2 c4@8 ~, ~ ab4@3 eb4@6 ab3@12 ab3@10, ~ eb4 c4@4 c4@6 eb4@14 eb4@6]/2", // Ab
BU: "~@2 [c3,g3] [bb2,d3,g3] [eb3,g3,c4]@2 bb3!2, [eb2,g2,bb2,eb3,eb4]@3 ~@5, ~ bb3@2 ~@3 [d3,f3,d4]@2", // C5 Gm Cm Eb Dm
BV: "[bb2,c3,eb3,ab3,c4] [f3,ab3] [bb2,eb3,ab3] [c3,f3,c4] [bb2,eb3,eb4] [c3,f3,g3] [bb2,d3,d4] [c3,f3,g3], ~ c3@2 ~ bb3@2 bb3@2", // Ab Fm Ebsus4 F5 Eb5 Csus4 Bb Csus4
BW: "~@2 [g2,g3] [bb2,d3,g3] [eb3,g3,c4,eb4]@2 ~ d4, [bb2,eb3,bb3]@3 ~@3 [d3,f3,bb3]@2, g2 ~@3, ~ eb4@2 ~@5", // G Gm Cm Eb5 Bb
BX: "[c3,eb3] [c3,f3,f4] [c3,g3,c4] ab3 ~ [f3,c4] [d3,d4] [f3,c4,f4], ab3@3 eb4@5, ~@3 c3@3 [c3,bb3]@2, ~@2 bb3 ~, ~@5 ab3@3", // Cm F5 C5 F5 D F5 C7
BY: "eb4 ~ [eb3,bb3] [bb2,d3,g3,d4] [eb3,g3,c4]@2 ~ f4, [bb2,g3]@3 ~@5, eb3 ~@2 [d3,f3,bb3,d4], ~ eb4@2 ~@5", // Eb5 Gm Cm Eb Bb
BZ: "[c3,eb3,c4] [c3,f3,c4] [c3,g3,ab3] ~@2 f3 eb3 [f3,e4], ab3@2 ~ ab3@5, ~@3 c3@3 [c3,bb3]@2, ~@2 bb3 ~, ~@5 c4@3", // Cm F5 Abmaj7 Fmaj7 C7
CA: "[eb2,eb3,bb3,eb4,g4]@2 [d3,bb3] f4 [a2,f4]@2 [c2,c3,g3,c4,eb4]@2 [bb1,bb2,f3,bb3,eb4]@2 [ab2,eb4] [ab2,bb3] [ab2,bb3]@2 [g1,g2,g3,bb3,d4]@2, ~@3 [d2,d3,bb3,d4]@3 ~@5 [ab1,ab3,eb4]@3 ~@2", // Eb Gm Dm Cm Bbsus4 Ab5 Absus2 Gm …
CB: "~@2 ab2 [g1,g2,eb3,bb3,d4,eb4] [ab1,ab2,eb3,ab3,c4,eb4]@2 [bb1,bb2,f3,g3,bb3,d4,eb4]@2, [f1,f2,eb3,ab3,c4,eb4]@3 ~@5", // Ebmaj7 Ab Ebmaj7 Fm7
CC: "~ g3 eb4@2 ~@10 bb3@2, [eb1,eb2,eb3,g4], bb3 g3@2 bb3@3 eb4@2, ~ bb2@15, ~ bb3 eb4@3 g3@3", // Eb
CD: "[~ [bb3,eb4,g4]@38 ~@9, eb2@11 ~, [eb3,g3]@13 ~@3]/3", // Eb
})).s("gm_acoustic_guitar_steel").gain(0.31)
// chords · string ensemble 2 · "Strings1"
const string_ensemble_2 = note(`<
~ A B C D E@2 ~@14 F G@2 H I J K L M N O P Q R S T U V W@2 ~@6 F X Y Z I J K AA M N O P Q R S AB AC AD AE AF AG AH AG
AI AJ AK AL AM@2 AN AO AP AQ AR AS AT AU AV AW ~@3
>`.pickRestart({
A: "[bb2,eb3,g3,bb3,eb4]@3 [d3,g3,bb3,d4,g4] [eb3,bb3,eb4,g4,c5]@2 [f3,bb3,d4,f4,bb4]@2", // Eb Gm Cm7 Bb
B: "~@3 f4 [eb4,bb4]@2 [d4,bb4]@2, [eb3,ab3,c4], ab4 ~", // Eb5 Gm Ab
C: "[bb2,eb3,g3,bb3,eb4]@3 [d3,g3,bb3,d4,g4] [c3,eb3,bb3,eb4,g4,c5]@2 [f3,bb3,d4,f4,bb4]@2", // Eb Gm Cm7 Bb
D: "[eb3,ab3,c4,ab4]@3 [d3,g3,bb3,d4,f4,g4] [eb3,ab3,c4,ab4]@3 [d3,bb3,d4,g4]", E: "[[eb3,c4,eb4,ab4], ab3@7 ~]/2",
F: "[eb4,c5]@3 [eb4,c5]@3 [f4,d5]@2 [g4,eb5]@3 [f4,d5]@3 [eb4,c5]@2, c3", // Cm Dm Cm Dm Cm
G: "[d4@3 eb4@3 f4@2 c4@3 db4 c4 ~@3 [db4,bb4]@3 [db4,bb4]@3 [eb4,c5]@2 [f4,db5]@3 [eb4,c5]@3 [db4,bb4]@2, [g2,bb4] bb2, ~@12 bb3@7 ~@13]/2", // Gb Cm Db Cm Gb Gm
H: "bb3@4 ~@2 a4 g4 [a3,c4,f4,a4]@6 g4@2, f2, [db4,f4,bb4]@3 ~@5, ~ c4 ~@2", // F Bbm
I: "[eb4,c5]@3 [eb4,c5]@3 [ab4,f5]@2 [g4,eb5]@3 [f4,d5]@3 [eb4,c5]@2, c3", // Cm Db Cm Dm Cm
J: "[d4,bb4]@6 [d4,bb4]@2 [d4,bb4]@3 [eb4,c5]@3 [f4,d5]@2, g2", K: "[f4,bb4,d5]@3 eb5 [ab4,bb4,eb5]@4, ab2",
L: "~@2 [bb4,eb5]@2 [a4,d5]@3 bb4 f5 g5@3 [g4,bb4]@2 bb4@2, [bb1,bb2,bb3,f4], eb4@3 eb4, ~@2 [gb4,c5] ~, ~@9 eb3@7", // Eb5 D5 Gm Bb5 Gbdim
M: "[eb2,eb4,g4,bb4,eb5]@3 [g1,bb3,d4,g4] [c2,eb4,g4,c5]@2 [bb1,d4,f4,bb4]@2", // Eb Gm Cm Bb
N: "[c4,eb4]@4 [c4,eb4]@3 bb4 f5 g5@3 g4@2 c5@2, [ab1,ab4] bb1, ~@2 [f4,bb4,eb5] [d4,f4]", // Cm Ab Ebsus2 Dm
O: "[eb2,bb3,eb4,g4,bb4]@3 [g1,bb3,d4,g4] [c2,eb4,g4,c5]@2 [bb1,d4,f4,bb4]@2", // Eb Gm Cm Bb
P: "[c4,eb4]@4 [c4,eb4]@3 bb4 ~ g5@2 g5@3 g5@2, [ab1,ab4] [b1,g4,d5]", // Cm Ab G
Q: "f5 eb5@5 [c2,bb3,eb4,g4]@2 [ab3,c4,eb4,ab4]@4 [ab3,c4,eb4,g4]@4, [c2,g4,bb4]@3 ~ f1@4", // Cm7 Ab Abmaj7 C7
R: "[bb3,d4]@4 [bb3,d4]@4 f5 g5@2 g5@4 eb5, [g1,f4] [c2,g4,bb4,eb5]", // Bb G7 Cm7
S: "[f1,ab4,bb4,eb5,f5]@3 [g1,bb3,eb4,f4] [ab1,ab3,c4,eb4,f4]@2 [ab1,ab3,c4,eb4,f4]@2", // Fm7 Eb Fm7
T: "~@7 bb4 ab5 g5@6 f5, [bb1,bb3,eb4,f4]", // Bbsus4
U: "g5 f5 ~@4 [g1,bb3,d4,g4]@2 [c2,eb4,g4,c5]@4 [bb1,d4,f4,bb4]@4, [eb2,g4,bb4]@3 ~@5, ~ eb5@3 ~@4", // Gm Cm Bb Eb
V: "[ab1,c4,eb4,ab4]@3 [g1,bb3,eb4,f4]@3 [f1,ab3,c4,eb4]@10", W: "[eb3,bb3,f4]/2", X: "[g2,bb4]",
Y: "[db4,bb4]@3 [db4,bb4]@3 [eb4,c5]@2 [f4,db5]@3 [eb4,c5]@3 [db4,bb4]@2, bb2", // Gb Cm Db Cm Gb
Z: "[db4,f4,bb4]@6 a4 g4 [c4,f4,a4]@6 g4@2, f2", AA: "~@7 bb4 f5 g5@3 g4@2 bb4@2, [bb1,bb2,bb3,eb4,f4], ~@9 eb3@7",
AB: "[bb3,eb4,f4]@4 [bb3,eb4,f4]@3 bb4 bb5 ~ c2@2 ab5@2 g5@2, bb1@2 [bb4,eb5,f5] ~, ~@4 bb1 ~ [d2,bb4,eb5,f5]@2, ~@9 eb3@7, ~@9 g5@3 ~@4", // Bbsus4 Bb
AC: "[eb2,g4,bb4,eb5,g5]@3 [g1,bb3,d4,g4] [c2,eb4,g4,c5]@2 [bb1,d4,f4,bb4]@2", // Eb Gm Cm Bb
AD: "[ab1,c4,ab4]@8 f5 g5@2 ab5@3 bb5@2, ~ [b1,g4,d5]", AE: "[g4,bb4,eb5,g5] ~@2 g1, c2@3 ~, ~ [bb3,g4]@3",
AF: "[a3,eb4,g4]@5 g5 eb5!2, f1", // Am7b5
AG: "[bb2,f4]@2 bb2!2 bb2@2 bb2!2 bb2@2 bb2!6, [g4,bb4,eb5]@3 [f4,bb4,d5] [g4,bb4,eb5]@2 [f4,bb4,d5]@2", // Bb5 Eb Bb Eb Bb
AH: "bb2@2 bb2!2 bb2@2 bb2!2 bb2@2 bb2!6, [eb4,ab4,c5]@2 [eb4,ab4,c5] [f4,bb4,d5]", // Ab Bb
AI: "bb2@2 bb2!2 bb2@2 bb2!2 bb2@2 bb2!2 [b2,f4,g4,d5]@4, [eb4,ab4,c5]@2 [eb4,ab4,c5] ~", // G7 Ab
AJ: "g3 bb3 c4 [d4,f4,bb4,d5] [eb4,g4,c5,eb5]@2 [g2,bb3,f4,bb4,d5]@2, c3@3 ~, [g4,c5,eb5]@3 ~@5", // Bb Cm Gm7 Cm
AK: "[eb4,ab4,c5]!2 [f4,bb4,d5,f5]!2, [f2,ab3] [g2,bb3]", // Ab Bb Fm Gm
AL: "~@6 [g1,g2,eb3,bb3,d4]@2 ~ c3@3 g2@2 [g1,g2,g3,bb3,eb4,g4]@2, [ab1,ab2,eb3,ab3,c4]@3 ~ [ab1,ab2,eb3,ab3,c4,eb4]@3 ~, ~ eb1 ~ eb1", // Ebmaj7 Eb Ab
AM: "[~@7 c5 g5 ~@16 c3@7, [ab2,ab3,c4,eb4,ab4], ab1 ab1, ~@9 g5@15 bb5@8]/2", // Ab
AN: "~@3 [g1,bb3,d4,g4] [c2,eb4,g4,c5]@2 [bb1,d4,f4,bb4]@2, [eb2,g3,bb3,eb4]@3 ~@5, ~ bb4 bb5@2", // Gm Cm Bb Eb
AO: "c6@3 c6@3 c6@2 [bb1,eb4,bb4,c6]@3 bb5 [bb1,d4,bb4,ab5]@3 ab5, [ab1,c4,ab4] ~", // Cm7 Bb7 Ab
AP: "ab5@3 g5@3 [g1,bb3,d4,g4,f5]@2 [c2,eb4,g4,c5,f5]@3 ~ [bb1,d4,f4,bb4]@3 d5, [eb2,g3,bb3,eb4]@6 ~@5 eb5@3 ~@2", // Gm7 Cm Bb Eb
AQ: "eb5@2 f5 d5 eb5@2 eb5!2 d5@2 c5@2 [bb1,d4,bb4]@4, [ab1,c4,ab4]@2 [bb1,eb4,bb4] ~", // Bb Ab Eb5
AR: "[eb2,g3,bb3,eb4]@3 [g1,bb3,d4,g4,bb4] eb5 g5 ab5 bb5, ~@2 [c2,eb4,g4,c5] [bb1,d4,f4,bb4]", // Eb Gm Cm Bb
AS: "c6@3 c6@3 c6@2 [bb1,eb4,bb4,c6]@3 ~@3 g5@2, [ab1,c4,ab4]@8 ~@3 bb5@3 ~@2, ~@3 [bb1,d4,bb4]", // Cm7 Ab Bb
AT: "[eb2,eb3,bb3,eb4,g4]@3 [d2,d3,bb3,d4,f4]@3 [c2,c3,g3,c4,eb4]@2 [bb1,bb2,f3,bb3,eb4]@3 [ab1,ab2,ab3,bb3,eb4]@3 [g1,g2,g3,bb3,d4]@2", // Eb Bb Cm Bbsus4 Absus2 Gm
AU: "[f1,f2,eb3,ab3,c4,eb4]@3 [g1,g2,eb3,g3,bb3,d4,eb4] [ab1,ab2,eb3,ab3,c4,eb4]@2 [bb1,bb2,f3,bb3,d4,eb4]@2", // Fm7 Ebmaj7 Ab Bb
AV: "[eb2,g2,eb3,g3,bb3,eb4,g4]", AW: "[eb2,g2,eb3,g3]",
})).s("gm_string_ensemble_2").gain(0.36)
// chords · overdriven guitar · "Electric Guitar"
const overdriven_guitar = note(`<
~ A B C D E@2 ~@13 F@2 ~ G H ~@3 I J K L M N O P Q R S T U@2 ~@4 V W X@2 Y Z AA AB@2 ~@7 AC@8 ~@3 AD AE@2 ~@13
>`.pickRestart({
A: "[bb2,eb3,g3]@3 [d3,g3,bb3] [eb3,bb3,eb4]@2 [f3,bb3]@2", B: "[eb3,ab3,c5]",
C: "[bb2,eb3,g3]@3 [d3,g3,bb3] [c3,eb3,bb3]@2 [f3,bb3,d4]@2", // Eb Gm Cm7 Bb
D: "[eb3,ab3,c4]@3 [d3,g3,bb3,f4] [eb3,ab3,c4]@3 [d3,bb3], c5", E: "[[ab3,c4,eb4,eb5]@7 ~]/2",
F: "[[d3,g3]@2 [eb3,bb3] [f3,c4] d4@10 ~@2]/2", G: "bb3 db4", H: "bb3 a3", I: "~@9 eb5@7, ab3@15 ~",
J: "eb4@3 bb3 eb4@2 d4@2", K: "c4@4 [c4,eb4]@3 bb4 [f4,bb4,eb5]@4 g4@2 c5@2, ~@8 f5 ~@3 [d4,f4]@4",
L: "[bb3,eb4,g4,bb4]@3 [bb3,d4,g4] [eb4,g4,c5]@2 [d4,f4,bb4]@2", M: "[c4,eb4]@4 [c4,eb4]@3 bb4 [g4,d5]@8, ab4@7 ~@9",
N: "g4@3 g4 ab4@2 g4@2", O: "f4 g4", P: "ab4@3 eb4 [eb4,f4]@2 [eb4,f4]@2", Q: "bb4@7 bb4@8 f5, g4",
R: "~ f5 ~@4 [d4,g4]@2 [eb4,g4]@4 [d4,f4]@4, [g4,bb4]@3 ~@5, ~ eb5@3 ~@4", S: "[c4,eb4]@3 [bb3,eb4]@3 [ab3,c4]@10",
T: "eb4", U: "[bb3@9 ~@7]/2", V: "[g3,c4]@2 [g3,c4] [a3,d4] d4@2 d4@2", W: "[g3,c4] ~", X: "[g3,bb3]@7 ~@9",
Y: "[g3,bb3] [f3,a3]", Z: "c5 ~", AA: "bb4 ~", AB: "[d5@6 eb5@3 eb5@13 ~@10]/2",
AC: "[[eb4,f4] ~@3 [eb4,f4] ~@2 bb4 ~ g5@3 ab5@2 g5@114, bb3@4 bb3@3 ~ [bb4,eb5,f5]@4 ~@116]/8", // Ebsus2 Bbsus4
AD: "[ab3,c4]@3 [bb3,d4] [ab3,c4,eb4]@3 [g3,bb3,eb4,g4]", AE: "[~@7 c5 g5@16 ~@8]/2",
})).s("gm_overdriven_guitar").gain(0.31)
// chords · distortion guitar · "Electric Guitar"
const distortion_guitar = note("<~@56 A ~@2 B C D@3 E F ~ G H I J K L@4 ~@3 M ~ N ~@7>".pickRestart({
A: "~@9 g5@3 ~@2 c5@2", B: "~@3 [c4,eb4]", C: "~@4 bb3@4 f5 g5@2 g5@4 eb5, ~@8 eb5@7 ~",
D: "[~ c4@3, ~@3 f4@8 ~, ~@3 eb4@7 ~@2]/3", E: "~@8 f5 g5@2 ab5@3 ~@2", F: "f5@3 ~",
G: "~@4 bb3 ~@5 bb3 ~@3 bb3 ~, ~ eb4@2 eb4@5", H: "bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~@3 bb3 ~",
I: "~@2 bb3 ~ bb3 ~@5 bb3 ~@3 bb3 ~", J: "bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~@5", K: "~@3 eb4", L: "[~ eb4@15]/4",
M: "~ bb4 ~ d5 eb4@2 g5 ab5, ~@4 eb5 ~@3", N: "bb5",
})).s("gm_distortion_guitar").gain(0.36)
// chords · piano · "PianoA"
const piano = note(`<
~@7 A B C D E F A G C H I J K L M N O P Q R S T ~@10 U V W X Y Z AA AB AC AD AE AF AG AH AI AJ@2 ~@18 AK AL ~@8 AM
AN@3 ~
>`.pickRestart({
A: "[g3,bb3,eb4]@2 [g3,bb3,eb4]@2 [g3,bb3,eb4]@2 bb3!2, eb3, ~@3 [g3,eb4]", // Eb Cm
B: "[ab3,c4,eb4]@2 [ab3,c4,eb4]@2 [ab3,c4,eb4]@2 c4!2, [ab2,eb3], ~@3 [ab3,eb4]", // Ab Ab5
C: "[bb3,d4,f4,g4]@2 [bb3,d4,f4,g4]@2 [bb3,d4,f4,g4]@2 d4!2, d3, ~@3 [bb3,f4,g4]", // Gm7
// … 132 more lines
More by Kenny Loggins
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.