Strudelify
Scarborough Fair cover art

Feelin' Groovy

Scarborough Fair

Simon & Garfunkel

KeyE minorTempo90 bpm
0:00/0:00
// Scarborough Fair — Simon & Garfunkel
// 90 bpm, 3/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 125 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(90/3)

// 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 · epiano2 · "E.PIANO 2"
const epiano2 = note(`<
  ~@4 A B C D@2 E F G H@4 I J K L@2 M N O P@4 Q R S D@2 E F G T@3 U I J K L@2 M N O P@4 Q R S D@2 E F G T@3 U I J K L@2
  M N O P@4 Q R S D@2 E F G T@3 U I J K L@2 M N O V@3 ~ W B C D@2 E F G H@4 I J K L@2 M N O P@4 ~
>`.pickRestart({
  A: "~@2 e4", B: "b4@4 ~ b4@16 b4@3", C: "f#4@12 ~ g4@3 f#4@8", D: "e4/2", E: "~ b4 d5", F: "e5@2 d5", G: "b4 c#5 a4",
  H: "[b4@10 ~ e5]/4", I: "e5@2 e5", J: "d5@2 b4", K: "b4 a4 g4", L: "f#4/2", M: "e4@2 b4", N: "a4@2 g4",
  O: "f#4 e4 d4", P: "e4/4", Q: "e4!3", R: "b4!3", S: "f#4 g4 f#4", T: "b4/3", U: "~@2 e5", V: "e4/3", W: "e4@2 e4",
})).s("gm_epiano2").gain(0.46)

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  ~@6 A B C D E F B G H I J K L M N O P Q B G R S B T Q E G U V F B C H W E X L A N E P Q E G E G B T Q E G U V F B C H
  W E X L A N E P Q E G E G B T Q E G U V F B C H W E X L A N E P Q P Q B Y ~ T A B C D E F B G H I J K L M N O P Q Z AA
  AB@2 ~
>`.pickRestart({
  A: "d2@7 ~", B: "e2@20 ~@2 e1 ~", C: "b2@7 ~", D: "g2@19 ~@3 d#2@2", E: "e2@7 ~", F: "g2@5 ~@3 a1@13 ~@3",
  G: "b2@20 ~@2 b1 ~", H: "e3@20 ~@2 b2 ~", I: "e3@2 ~ b2 ~ g2 ~@2 e2@6 ~@2 e2@6 ~@2", J: "e2@19 ~@3 f#2@2",
  K: "g2@7 ~", L: "g2@5 ~@3 f#2@5 ~@3 e2@5 ~@3", M: "d2@20 ~@2 d1 ~", N: "a2@7 ~", O: "e2@16 ~@3 e2@2 d#2@2 ~",
  P: "d2@13 ~@3 e2@5 ~@3", Q: "d2@5 ~@3 e2@5 ~@3 d2@5 ~@3", R: "e3@20 ~@2 e3 ~", S: "e2@6 ~@2 b1@5 ~ e1 ~ e2@6 ~@2",
  T: "b1@7 ~", U: "g2@19 ~@3 f2@2", V: "e2@19 ~@3 e2@2", W: "e2@6 ~@2 g2@5 ~ e1 ~ b2@4 ~ d#2@2 ~",
  X: "g2@16 ~@3 f2@2 f#2@2 ~", Y: "b1@20 ~@2 b0 ~", Z: "e2@13 ~@3 d2@5 ~@3", AA: "e2@19 ~@3 c#2@2", AB: "e3@7 ~",
})).s("gm_acoustic_bass").gain(0.36)

// chords · piano · "A.PIANO 1"
const piano = note(`<
  ~@5 A B C D E F G H I H J H K L M N O P Q R S O@2 R D T A U V W X A S Y O W Z AA AB N S AC AD A U W R@2 D T A U V W X
  A S Y O W Z AA AB N S AC AD A U W R@2 D T A U V W X A S Y O W Z AA AB N S AC AD AE T R@2 ~ A B C D E F G H I H J H K L
  M N O P Q AF A AG@2 ~
>`.pickRestart({
  A: "[g3,e4,b4]@5 [g3,e4,b4]@3 ~@6 e2 ~ [g3,e4,b4]@6 ~@2", B: "[f#3,a3,d4]@11 ~@2 [f#3,a3,d4]@5 ~@6",
  C: "[g3,e4,b4]@5 [g3,e4,b4]@3 ~@8 [g3,e4,b4]@6 ~@2", D: "[g3,b3,e4]@5 [g3,b3,e4]@3 ~@8 [g3,b3,e4]@6 ~@2",
  E: "[b3,g4,d5]@5 [b3,g4,d5]@3 ~@8 [b3,g4,d5]@6 ~@2", F: "[e4,g4,b4]@17 ~@7",
  G: "[b3,g4,d5]@5 ~@3 e4@13 [e4,g4,b4]@3, ~ [c#4,a4]@2", H: "~@5 [e4,g4,b4,e5]@5 ~@6 [e4,g4,b4,e5]@7 ~",
  I: "[e4,g4,b4,e5]@17 ~@7", J: "[e4,g4,b4,e5]@5 [e4,g4,b4,e5]@3 ~@6 e2 ~ [e4,g4,b4,e5]@6 ~@2", K: "[b3,g4,d5]@17 ~@7",
  L: "[b3,g4,d5]@5 ~@3 [a3,c#4,f#4]@5 ~@3 [g3,e4,b4]@5 ~@3", // G F#m Em
  M: "f#3@13 ~@3 d4@3 ~@2 a3@3, a3@7 ~, d4@16 ~@3 d4@5, ~@13 f#3@11", N: "[f#3,d4,a4]@17 ~@7", O: "[g3,e4,b4]@17 ~@7",
  P: "~@5 [f#3,d4,a4]@9 ~@2 [g3,b3,e4]@5 ~@3", Q: "[f#3,d4,a4]@5 ~@3 [g3,b3,e4]@5 ~@3 [f#3,a3,d4]@5 ~@3",
  R: "[g3,b3,e4]@17 ~@7", S: "[g3,e4,b4]@11 ~@2 [g3,e4,b4]@5 ~@6",
  T: "[f#3,a3,d4]@5 ~@3 [g3,b3,e4]@5 ~@3 [f#3,d4,a4]@5 ~@3", // D Em D
  U: "g3@13 ~@3 e4@3 ~@2 b4@3, b4@7 ~, e4@16 ~@3 e4@5, ~@13 g3@11", V: "[g3,b3,d4,g4]@11 ~@2 [g3,b3,d4,g4]@5 ~@6",
  W: "~@5 [g3,e4,b4]@5 ~@6 [g3,e4,b4]@7 ~", X: "[b3,d4,g4]@5 ~@8 [a3,c#4,e4,a4]@9 ~@2",
  Y: "g3@13 ~@3 e4@3 ~@2 b3@3, b3@7 ~, e4@16 ~@3 e4@5, ~@13 g3@11",
  Z: "[g3,b3,d4,g4]@5 [g3,b3,d4,g4]@3 ~@6 g2 ~ [g3,b3,d4,g4]@6 ~@2", // G
  AA: "[g3,b3,d4,g4]@5 ~@3 [f#3,a3,c#4,f#4]@5 ~@3 [g3,e4,b4]@5 ~@3", AB: "[f#3,d4,a4]@11 ~@2 [f#3,d4,a4]@5 ~@6",
  AC: "~@13 [g3,e4,b4]@11, [f#3,d4,a4]", AD: "[f#3,d4,a4]@5 ~@3 [g3,e4,b4]@5 ~@3 [f#3,d4,a4]@5 ~@3",
  AE: "~@13 [g3,b3,e4]@11, [f#3,d4,a4]", AF: "~@5 [g3,e4,b4]@6 ~@5 [f#3,d4,a4]@5 ~@3", AG: "[g3,b3,e4]/2",
})).s("gm_piano").gain(0.31)

// other · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  A B C B C D E C F G H I C D C D H J K L M N O P C D C D C D Q C F R H I C F S T H J K L M N O P U V W T C D Q C F R H
  I C F S T H J K L M N O P U V W T C D Q C F R H I C F S T H J K L M N O P C D C D C D E C F G H I C D C D H J K L M N
  O P C F X Y ~
>`.pickRestart({
  A: "~@5 b3@3 d4@4 ~ c#4@3 a3@4 ~ b3@3", B: "g3@4 ~ b3@3 a3@4 ~ b3@3 f#3@4 ~ g3@3",
  C: "e3@4 ~ b3@3 d4@4 ~ c#4@3 a3@4 ~ b3@3", D: "e3@4 ~ b3@3 a3@4 ~ b3@3 f#3@4 ~ g3@3",
  E: "d3@4 ~ a3@3 d3@4 ~ e3@3 f#3@4 ~ a3@3", F: "e3@4 ~ b3@3 a3@4 ~ b3@3 f#3@4 ~ a3@3",
  G: "e3@4 ~ b3@3 d4@4 ~ b3@3 g3@4 ~ b3@3", H: "e3@4 ~ b3@3 e4@4 ~ b3@3 e3@4 ~ b3@3",
  I: "g3@4 ~ d4@3 a3@4 ~ c#4@3 e4@4 ~ c#4@3", J: "g3@4 ~ b3@3 d4@4 ~ b3@3 d4@4 ~ b3@3",
  K: "g3@4 ~ b3@3 f#3@4 ~ a3@3 e3@4 ~ g3@3", L: "d3@4 ~ a3@3 d4@4 ~ a3@3 g3@4 ~ a3@3",
  M: "f#3@4 ~ a3@3 e3@4 ~ a3@3 d3@4 ~ a3@3", N: "e3@4 ~ g3@3 b3@4 ~ g3@3 e3@4 ~ g3@3",
  O: "d3@4 ~ f#3@3 a3@4 ~ f#3@3 e3@4 ~ g3@3", P: "d3@4 ~ f#3@3 e3@4 ~ g3@3 f#3@4 ~ a3@3",
  Q: "d3@4 ~ a3@3 e3@4 ~ a3@3 d3@4 ~ a3@3", R: "g3@4 ~ b3@3 d4@4 ~ b3@3 g3@4 ~ b3@3",
  S: "e3@4 ~ g3@3 a3@4 ~ b3@3 a3@4 ~ f#3@3", T: "e3@4 ~ g3@3 a3@4 ~ b3@3 a3@4 ~ g3@3",
  U: "e3@4 ~ b3@3 a3@4 ~ b3@3 g3@4 ~ b3@3", V: "f#3@4 ~ b3@3 e3@4 ~ b3@3 d3@4 ~ b3@3",
  W: "e3@4 ~ b3@3 f#3@4 ~ b3@3 g3@4 ~ b3@3", X: "e3@4 ~ g3@3 b3@4 ~ g3@3 a3@4 ~ d4@3", Y: "~ [e5,b5]@2, [e3,b3,e4]",
})).s("gm_acoustic_guitar_steel").gain(0.31)

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@10 A B C@2 ~@6 D E F G H@2 ~@4 I J K L M N H@2 ~@3 O P Q@2 E F G R@2 E S ~@2 I J K L M N H@2 ~@3 O P Q@2 E F G R@2 E
  S ~@2 I J K L M N H@2 ~@3 O P Q@2 E F G T@3 ~@6 U A B C@2 ~@6 D E F G ~ V W X@2
>`.pickRestart({
  A: "[e2,e4]", B: "[g2,g4] [a2,a4]@2", C: "[e2,e4]/2", D: "[d3,d4]", E: "[e3,e4]", F: "[d3,d4]@2 [e3,e4]",
  G: "[d3,d4] [e3,e4] [d3,d4]", H: "[e3,e4]/2", I: "d4 e4 d4", J: "e4", K: "e3", L: "[g2,g3]", M: "[e2,e3]",
  N: "[g2,g3] [a2,a3]@2", O: "[g3,g4]", P: "[g3,g4] [f#3,f#4] [e3,e4]", Q: "[d3,d4]/2", R: "[e2,e3,e4]/2",
  S: "e4 e3 e2", T: "[e3,e4]/3", U: "[g2,g4]", V: "a4", W: "g4", X: "[f#4 e4@3 ~@2]/2",
})).s("gm_string_ensemble_1").gain(0.36)

// drums · kick
const kick = s("bd").struct("<A@15 B A@12 B A@13 C A@9 B A@13 C A@9 B A@13 C A@20 B A@11 D ~>".pickRestart({
  A: "x", B: "x ~@6 x", C: "x ~@10 x", D: "x ~ x",
})).gain(0.2)

// drums · rim
const rim = s("rim").struct(`<
  A B@2 A B C D B@4 A B@5 A B@4 A E B@5 F A C A B@5 A B@2 A@2 C B@3 E B@5 F A C A B@5 A B@2 A@2 C B@3 E B@5 F A C A B@5
  A B@2 A@2 C B@3 E B C B@3 C D B@4 A B@5 A B@4 A E B@2 ~@3
>`.pickRestart({
  A: "~@7 x ~@4", B: "~@13 x ~@10", C: "~@13 x ~@7 x ~@2", D: "~@5 x ~@8 x ~@7 x ~", E: "~@5 x ~@7 x ~@10",
  F: "~@5 x ~@8 x ~@9",
})).gain(0.31)

// drums · hihat
const hihat = s("hh").struct("<~@3 A ~@15 A ~@7 A@2 ~@20 A ~@2 A ~@20 A ~@2 A ~@38 A ~@7 B ~>".pickRestart({
  A: "~@5 x ~@18", B: "~@2 x",
})).gain(0.36)

// drums · crash
const crash = s("cr").struct("<~@123 x ~>").gain(0.36)

// drums · ride
const ride = s("rd").struct("<[x!3]!122 [x ~@4 x ~@2 x ~@5 x ~ x ~@5 x ~] ~@2>").gain(0.36)

stack(epiano2, bass, piano, acoustic_guitar_steel, string_ensemble_1, kick, rim, hihat, crash, ride)

More by Simon & Garfunkel