Strudelify

Seven Bridges Road

Eagles

KeyF majorTempo204 bpm
0:00/0:00
// Seven Bridges Road — Eagles
// 204 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 143 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(204/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 · electric guitar jazz
const electric_guitar_jazz = note(`<
  ~@31 A B@2 C D E F G H I H@2 I C J@2 K L A I B A@2 M N O P@2 I@2 B H@2 M O Q K L B A B C R@2 S P I C T U Q V P K L W Q
  X J X K@2 P Y Z AA O AB P L AC AD H@2 AE AF AG ~@35
>`.pickRestart({
  A: "[g3,c4,e4] [g3,b3,d4]", B: "[g3,c4,e4]@4 ~ [g3,b3,d4]@3", C: "[g3,c4,e4]@2 [g3,c4,e4]!2",
  D: "~ [bb3,d4,f4]@3 [a3,d4,f4]@4", E: "[a3,c4,f4] [a3,d4,f4]", F: "[a3,c4,e4]@9 ~ [a3,c4,e4] ~@5",
  G: "~ [g3,c4,e4]@3 ~ [a3,d4,f4]@3", H: "~ [g3,c4,e4]@3 [g3,b3,d4]@4", I: "~ [g3,c4,e4]@3 ~ [g3,b3,d4]@3",
  J: "[bb3,d4,f4]@4 ~ [bb3,d4,f4]@3", K: "~ [a3,c4,f4]@3 ~ [a3,c4,f4]@3", L: "[a3,c4,f4]!2",
  M: "~ [g3,c4,e4]@3 [g3,c4,e4]@2 [g3,c4,e4]@2", N: "~ [bb3,d4,f4]@3 ~ [bb3,d4,f4]@3",
  O: "~ [f3,bb3,d4]@3 [bb3,d4,f4]@4", P: "[a3,c4,f4]@4 ~ [a3,c4,f4]@3", Q: "~ [bb3,d4,f4]@3 [bb3,d4,f4]@4",
  R: "[bb3,d4,f4]!2", S: "~ [a3,c4,f4]@3 [a3,c4,f4]@4", T: "~ [f3,bb3,d4]@3 ~ [bb3,d4,f4]@3", U: "[bb3,d4,f4]@15 ~",
  V: "[f3,bb3,d4]@9 ~ [f3,bb3,d4] ~@5", W: "[a3,c4,f4]@2 [a3,c4,f4]!2",
  X: "~@2 d3 ~@5, [d4,f4]@7 ~, bb3@5 ~@11, ~ f3@6 ~", Y: "~ [a3,c4,f4]@3 [a3,c4,f4]@2 [a3,c4,f4]@2",
  Z: "[bb3,d4,f4] [f3,bb3,d4]", AA: "~@6 [bb3,d4]@9 ~, ~ f3@7", AB: "c4 d4 c4 bb3@5, [bb2,f4]",
  AC: "[a3,c4,f4]@4 ~ [a3,db4,e4]@3", AD: "~ [bb3,d4,f4]@3 [g3,c4,e4]@4", AE: "[bb3,d4,f4] [a3,c4,f4]",
  AF: "[bb3,d4,f4]@4 ~ [a3,c4,f4]@3", AG: "[g3,c4,e4]@15 ~",
})).s("gm_electric_guitar_jazz").gain(0.2).pan(0)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  ~@31 A B C D E F G H I@2 A J K L M N O P Q R S T A U V W X Y S C K Z C D AA AB AC AD AE Q AF L AG AH AI AJ J L AK AL
  AM AN AI AO AP AQ AR AN AM AL AS P AI AT AU AN AV AW AX AY AZ BA R J BB BC BD ~@35
>`.pickRestart({
  A: "[c3,e3]@6 c3 ~ [d3,g3]@6 g3 ~", B: "c3@4 [c3,e3]@2 c3 ~ g3@2 g3@4 g3@2, ~@5 d3@3",
  C: "c3@2 c3@4 c3@2 g3@4 [d3,g3]@2 g3 ~, ~ e3@3 d3 ~@3", D: "[c3,e3]@6 c3 ~ [c3,e3]@2 ~@2 [c3,e3]@2 ~@2, ~@2 g3 a2",
  E: "bb2@2 bb2@4 bb2@2 d3@4 [d3,f3]@2 d3 ~, ~ d3@3 f3 ~@3", F: "f3@2 f3@4 f3@2 d3@4 [d3,f3]@2 d3 ~, ~ c3@3 ~@4",
  G: "a2@4 [a2,c3,e3]@2 a2 ~ a2@5 ~ a2 ~, c3 ~@7, e3 ~@15", H: "[c3,e3]@6 c3 ~ [d3,f3]@6 d3 ~",
  I: "c3 c3@2 c3 g3 g3@2 g3, ~ e3@3 ~ d3@3", J: "c3@4 [c3,e3]@2 c3 ~ g3@2 g3@4 g3@2, e3 ~@4 d3@3",
  K: "c3@4 [c3,e3]@2 c3 ~ g3@4 [d3,g3]@2 g3 ~, e3 ~@7", L: "c3 c3@2 c3 [c3,e3] ~ [c3,e3] ~, ~ e3@3 g3@2 a2@2",
  M: "bb2@2 bb2@4 bb2@2 d3@4 [bb2,d3]@2 d3 ~, ~ d3@3 ~@4", N: "~@6 f3 ~ [bb2,d3]@6 d3 ~, f3@5 ~@11, ~ [bb2,d3]@3 ~@4",
  O: "f3@4 [c3,f3]@2 f3 ~ [c3,f3]@6 a2 ~, c3@2 ~@6 a2@5 ~@3", // F5
  P: "c3@4 [c3,f3]@2 c3 ~ [c3,f3]@2 ~@2 [c3,f3]@2 a2 ~, f3 ~@3 a2@2 ~@2", // F5
  Q: "[c3,e3]@6 c3 ~ g3@4 [d3,g3]@2 g3 ~, ~@4 d3 ~@3", R: "c3@4 [c3,e3]@2 c3 ~ g3@4 [d3,g3]@2 g3 ~, ~@4 d3 ~@3",
  S: "c3@4 [c3,e3]@2 c3 ~ [d3,g3]@6 g3 ~, e3 ~@7", T: "c3@2 c3@4 c3@2 [d3,g3]@6 g3 ~, ~ e3@3 ~@4",
  U: "c3@4 [c3,e3]@2 c3 ~ [c3,e3]@2 ~@2 [c3,e3]@2 ~@2, ~@2 g3 a2", V: "bb2@4 [bb2,d3]@2 bb2 ~ [bb2,d3]@6 d3 ~",
  W: "~@6 f3 ~ d3@2 d3@4 d3@2, f3@5 ~@11, ~ [bb2,d3]@3 ~ bb2@3", X: "f3@2 f3@4 f3@2 [c3,f3]@6 a2 ~, ~@2 c3@6 a2@5 ~@3",
  Y: "c3@4 [c3,f3]@2 c3 ~@7 a2 ~, ~@8 a2@5 ~@3, ~@5 [c3,f3]@3", Z: "c3@4 [c3,e3]@2 c3 ~ g3@4 [d3,g3]@2 g3 ~",
  AA: "bb2@4 [bb2,d3]@2 bb2 ~ d3@2 d3@4 d3@2, d3 ~@4 bb2@3", // Bb
  AB: "[bb2,d3]@2 ~@2 [bb2,d3]@2 f3 ~ d3@4 [bb2,d3]@2 d3 ~, f3@2 ~@2 bb2 ~@3", // Bb
  AC: "f3@4 [c3,f3]@2 f3 ~@7 a2 ~, ~@8 a2@5 ~@3, ~@5 [c3,f3]@3", // F5
  AD: "c3@2 c3@4 c3@2 ~@6 a2 ~, ~@2 f3@6 a2@5 ~@3, ~@5 [c3,f3]@3", AE: "[c3,e3]@6 c3 ~ g3@4 [d3,g3]@2 g3 ~",
  AF: "[c3,e3]@6 c3 ~ g3@2 g3@4 g3@2, ~@5 d3@3", AG: "[bb2,d3]@6 bb2 ~ d3@4 [bb2,d3]@2 d3 ~",
  AH: "~@6 f3 ~ d3@4 [bb2,d3]@2 d3 ~, f3@5 ~@11, ~ [bb2,d3]@3 ~@4", // Bb
  AI: "f3@4 [c3,f3]@2 f3 ~ a2@4 [c3,f3]@2 a2 ~, c3 ~@7", AJ: "c3@4 [c3,f3]@2 c3 ~ [c3,f3]@6 a2 ~, f3@2 ~@6 a2@5 ~@3",
  AK: "bb2@2 bb2@4 bb2@2 [bb2,d3]@6 d3 ~, ~ d3@3 ~@4", AL: "~@2 [bb2,d3] ~@3 [f2,f3]@2 [bb2,d3,f3]@8, f3@5 ~@11",
  AM: "[bb2,d3]@6 bb2 ~ d3@2 d3@4 d3@2, ~@5 bb2@3", AN: "~@2 [bb2,d3] ~@3 [f2,f3] ~ [bb2,d3]@6 f3 ~, f3@5 ~@3 f3@5 ~@3",
  AO: "c3@4 [c3,f3]@2 c3 ~ a2@4 [c3,f3]@2 a2 ~", AP: "f3@2 f3@4 f3@2 ~@6 a2 ~, ~@2 c3@6 a2@5 ~@3, ~@5 [c3,f3]@3",
  AQ: "c3 c3@2 c3 c3@2 [c3,f3] ~, ~ f3@3 f3 ~ d3@2", AR: "bb2@4 [bb2,d3]@2 bb2 ~ d3@2 d3@4 d3@2, ~@5 bb2@3",
  AS: "f3@4 [c3,f3]@2 f3 ~@7 a2 ~, c3@2 ~@6 a2@5 ~@3, ~@5 [c3,f3]@3", // F5
  AT: "[c3,f3]@6 c3 ~ c3@4 [c3,f3]@2 ~@2, ~@4 f3 ~ d3@2", // F5
  AU: "bb2@4 [bb2,d3]@2 bb2 ~ d3@4 [bb2,d3]@2 d3 ~, d3 ~@3 bb2 ~@3", // Bb
  AV: "bb2@4 [bb2,d3]@2 bb2 ~ [bb2,d3]@6 d3 ~, d3 ~@7", AW: "~@2 [bb2,d3] ~@3 f3 ~ [bb2,d3,f3]@6 f3 ~, f3@5 ~@11",
  AX: "f3@4 [c3,f3]@2 f3 ~ a2@4 [c3,f3]@2 a2 ~", AY: "c3@4 [c3,f3]@2 c3 ~ [c3,f3]@6 a2 ~, ~@8 a2@5 ~@3",
  AZ: "f3@2 f3@4 f3@2 a2@4 [a2,db3]@2 a2 ~, ~ c3@3 db3 ~@3", BA: "bb2@4 [bb2,d3]@2 bb2 ~ [c3,e3]@6 c3 ~, d3 ~@7",
  BB: "bb2@4 [bb2,d3]@2 bb2 ~ f3@4 [c3,f3]@2 f3 ~, ~@4 c3 ~@3", BC: "bb2@2 bb2@4 bb2@2 f3@4 [c3,f3]@2 f3 ~, ~ d3@3 ~@4",
  BD: "[f2,c3,f3]", // F5
})).s("gm_acoustic_guitar_nylon").gain(0.31).pan(1)

// other · cello
const cello = note(`<
  A@2 B@5 ~ C@2 D@2 E@2 F ~ C@2 G@4 H I J@2 K@2 L@3 ~@12 M@2 N@2 O@2 P ~@2 Q R@2 S@2 T@2 U ~@2 Q V@2 W@2 O@2 X Y Z@2 W@2
  T@2 AA AB AC@2 AD@2 AE@2 AF@4 AD@2 AG@2 ~ AB AC@2 AD@2 AH@2 AI AJ AK@2 AL@2 AM@2 AN@2 ~ A@2 B@5 ~ C@2 D@2 E@2 F ~ C@2
  G@4 H I J@2 K@2 L@3
>`.pickRestart({
  A: "[g3@24 g3@7 ~]/2", B: "[f3@24 ~@32 c3@7 ~ c3@4 c3@5 ~@7, ~@12 f3@21 ~@7, ~@56 b2 ~@23]/5", C: "[g3@23 ~ g3@8]/2",
  D: "[f3@23 ~ f3@8]/2", E: "f3/2", F: "e3@5 ~@11", G: "[f3@3 f3@4 c3]/4", H: "c3@3 ~ c3@5 ~@7", I: "~ g3",
  J: "[g3@31 ~]/2", K: "[f3@23 f3@8 ~]/2", L: "[f3@31 e3@11 ~@6]/3", M: "[c4 ~@3 c4@19 ~ c4@4 g3@2 a3@2]/2",
  N: "[bb3@23 a3@2 g3@2 f3@4 ~]/2", O: "[a3@23 g3@9]/2", P: "e3@4 c3@3 ~@9", Q: "~@12 c4@3 ~",
  R: "[c4@23 ~ c4@4 g3@2 a3@2]/2", S: "[bb3@23 ~ a3@2 g3@2 f3@4]/2", T: "a3/2", U: "g3 ~@3", V: "[c4@12 c4@2 g3 a3]/2",
  W: "[bb3@12 a3 g3 f3@2]/2", X: "e3@3 c3@4 ~@9", Y: "~@8 c4@3 ~ c4@3 ~", Z: "[c4@23 ~ c4@4 ~ a3@3, ~@14 g3 ~]/2",
  AA: "g3@5 ~@11", AB: "~@12 bb3@3 ~", AC: "[bb3@31 ~]/2", AD: "[bb3@7 c4]/2", AE: "[a3 f3@7]/2",
  AF: "[f3@27 bb3@3 ~ bb3@32 ~]/4", AG: "[a3 f3@4 ~@3]/2", AH: "[a3@4 f3@23 ~ f3@3 ~]/2", AI: "f3 ~@3",
  AJ: "~@8 c4@3 ~ c4@2 ~@2", AK: "[c4@22 ~ c4@4 ~ g3@2 a3@2]/2", AL: "[bb3@23 a3@2 g3@2 ~ f3@4]/2",
  AM: "[g3@3 a3@29]/2", AN: "[g3@5 ~@3]/2",
})).s("gm_cello").gain(0.46).pan(0.7)

// other · viola
const viola = note(`<
  A@2 B@2 C@3 ~ D@2 E@5 ~ F@2 G@2 H@2 I J D@2 K@2 L@2 M ~@12 N@2 O@5 P ~ P Q@2 R@2 S@3 ~@2 T Q@2 U@2 V@3 W X@2 Y@2 L@2 Z
  ~@24 AA AB@2 AC@2 AD@2 AE@2 ~ A@2 B@2 C@3 ~ D@2 E@5 ~ F@2 G@2 H@2 I J D@2 K@2 L@2 M
>`.pickRestart({
  A: "[~@26 d4 ~@5, ~ e4@31]/2", B: "[d4@23 d4@8 ~]/2", C: "[c4@24 c4@7 c4@11 ~@6]/3", D: "[e4@23 ~ e4@2 d4@2 c4@4]/2",
  E: "[d4@23 ~ d4@7 c4@31 ~ c4@8 ~@9]/5", F: "[e4@22 ~ e4@2 d4@2 c4@4 ~]/2", G: "[d4@28 d4@3 ~]/2",
  H: "[c4@23 ~ c4@7 ~]/2", I: "c4@2 c4 ~@5", J: "~@8 e4@4 e4@3 ~", K: "[~ e4@2 d4@20 ~ d4@8, ~ d4 ~@30]/2",
  L: "[c4@31 ~]/2", M: "c4 ~", N: "[~@3 e4 ~ e4@18 ~ e4@8]/2",
  O: "[~ d4@21 ~ d4@7 ~ c4@24 ~@9 e4@4 [c4,e4]@4 ~@8, ~@57 c4@11 ~@12]/5", P: "~@13 e4@2 ~", Q: "[e4@23 ~ e4@8]/2",
  R: "[~ d4@21 ~ d4@8 ~]/2", S: "[c4@5 ~]/3", T: "~@12 e4@3 ~", U: "[d4@23 ~ d4@8]/2", V: "[c4@30 ~ c4@3 ~ c4@4 ~@9]/3",
  W: "~@6 e4 ~", X: "[~ e4@23 e4@3 ~ c4@4]/2", Y: "[d4@11 ~ d4@4]/2", Z: "c4@3 ~@5", AA: "~@8 e4@3 ~ e4@2 ~@2",
  AB: "[e4@23 ~ e4@7 ~]/2", AC: "[d4@22 ~ d4@7 ~@2]/2", AD: "c4/2", AE: "[c4@3 ~]/2",
})).s("gm_viola").gain(0.46)

// bass · contrabass
const bass = note(`<
  A@2 B@2 C@3 ~ D@2 E@2 F G@2 ~ D@2 H@2 I@2 J K A@2 L@3 M@2 ~@81 A@2 B@2 C@3 ~ D@2 E@2 F G@2 ~ D@2 H@2 I@2 J K A@2 N@3
  O@2
>`.pickRestart({
  A: "[[c2,c3]@6 [g1,g2] [a1,a2]]/2", B: "[[bb1,bb2]@6 ~ [g1,g2], ~@12 [a1,a2]@3 ~]/2",
  C: "[[f1,f2]@23 ~ [f1,f2]@7 [c2,c3]@3 ~ [c2,c3]@4 ~@9]/3", D: "[[c2,c3]@23 [g1,g2]@5 [a1,a2]@4]/2",
  E: "[[bb1,bb2]@23 [bb1,bb2]@9]/2", F: "[f1,f2]", G: "[[e1,e2]@15 [c1,c2]@9 ~@8]/2", H: "[bb1,bb2]/2",
  I: "[[f1,f2]@3 [e1,e2]]/2", J: "[c1,c2]@3 ~ [c1,c2]@5 ~@7", K: "~@8 [c2,c3]@3 ~ [c2,c3]@3 ~",
  L: "[[bb1,bb2]@32 [f1,f2]@15 ~]/3", M: "[[e1,e2]@15 [c1,c2]@13 ~@4]/2", N: "[bb2@32 f2@15 ~]/3",
  O: "[e2@15 c2@13 ~@4]/2",
})).s("gm_contrabass").gain(0.46)

stack(electric_guitar_jazz, acoustic_guitar_nylon, cello, viola, bass)

More by Eagles