Strudelify

Pop Looks Bach

Sam Fonteyn

KeyC majorTempo200 bpm
0:00/0:00
// Pop Looks Bach — Sam Fonteyn
// 200 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 1 "Violins 1" named as a string part, played on violin (its acoustic bass patch is not one); ch 16 "Double Bass" named as a bass, played on acoustic bass (its contrabass patch is not one)
// note: Transcription provider: pdmx. https://musescore.com/score/1406606; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 102 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(200/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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 · violin · "Violins 1"
const violin = note(`<
  ~@4 A B C D E F G H I ~@3 A B C D E F G J K L ~@3 M ~@6 N@2 O A B C D E F G H I ~@3 A B C D E F G J K L ~@3 M ~@6 N@2
  O A B C D E F G H I ~@3 A B C D E F G H P Q R Q R S@2 T
>`.pickRestart({
  A: "~@5 g5 f5 g5", B: "e5 g5 d5 g5 c5 g5 b4 g5", C: "c5 g5 d5 g5 e5 g4 c5 b4", D: "a4 c5 g4 c5 f4 c5 e4 c5",
  E: "f4 c5 g4 c5 a4 c5 f5 e5", F: "d5 f5 c5 f5 b4 f5 a4 f5", G: "b4 f5 c5 f5 d5 g4 g5 f5",
  H: "e5 d5 e5 f5 g5 e5 d5 c5", I: "c5 g5 e5 g5 f5 d5 b4 g4", J: "e5 d5 e5 f#5 g5 e5 d5 b4",
  K: "c5 b4 a4 b4 c5 d5 e5 f5", L: "g5", M: "a#5@2 ~ a5@3 g5@2", N: "g5 ~@4 f5@3",
  O: "g5@2 ~@2 d#5@4 f5@2 ~@2 f#5@3 g5", P: "d5 e5 f5 e5 f5 g5 a5 b5", Q: "c6!8", R: "c6!5 b5 a5 g5",
  S: "c6 b5 a5 g5 a5 g5 a5 b5", T: "c6",
})).s("gm_violin").gain(0.3)

// other · violin · "Violins 2"
const violin_2 = note(`<
  ~ A B A C D E F G H I J K A B A C D E F G H I L M N B A O P ~@6 Q@2 R S D E F G H I J K A B A C D E F G H I L M N B A
  O P ~@6 Q@2 R S D E F G H I J K A B A C D E F G H I J K T U T U V@2 W
>`.pickRestart({
  A: "~@2 g5!2 g5@2 g5!2", B: "g5@2 g5!2 g5@2 ~@2", C: "g5@2 g5!3 ~ f5@2", D: "e5 d5 c5 b4", E: "c5@2 d5@2 e5@2 c5 b4",
  F: "a4 g4 f4 e4", G: "f4@2 g4@2 a4@2 f5 e5", H: "d5 c5 b4 a4", I: "b4 c5 d5 ~", J: "c5 ~ a4 ~", K: "f4 ~@3",
  L: "c5 ~ b4 ~", M: "a4 ~ f#5 ~", N: "g4", O: "g5@2 g5!3 ~@3", P: "f5@2 ~ f5@3 d5@2", Q: "b4 ~@4 a4@3",
  R: "b4@2 ~@2 g4@4 a4@2 ~@2 a#4@3 b4", S: "~@3 f5", T: "c5!8", U: "c5!5 b4 a4 g4", V: "c5 b4 a4 g4 a4 g4 a4 b4",
  W: "e5",
})).s("gm_violin").gain(0.4)

// other · flute
const flute = note(`<
  ~ A B A C D E F G H I ~@2 A B A C D E F G H I ~@2 J K J L M N@2 O@2 ~@2 P@2 Q ~ D E F G H I ~@2 A B A C D E F G H I
  ~@2 J K J L M ~@6 P@2 Q ~@9 A B A C ~@8 A B A C R@3
>`.pickRestart({
  A: "~@2 g5!2 g5@2 g5!2", B: "g5@2 g5!2 g5@2 ~@2", C: "g5@2 g5!3 ~@3", D: "g4", E: "g4@3 ~", F: "c4", G: "c4@3 ~",
  H: "f4", I: "f4@3 ~", J: "~@2 d6!2 d6@2 d6!2", K: "d6@2 d6!2 d6@2 ~@2", L: "d6@2 d6!3 ~@3", M: "d6@2 ~ c6@3 b5@2",
  N: "[~@2 c5 d#5 f5@2 d#5 f#5@2 d#5 f5@2 d#5 c5 d#5 f5]/2", O: "[~@2 c5 g4 a#4@2 c5 c#5@2 c5 c#5@2 c5@4]/2",
  P: "g5 ~@4 f5@3", Q: "g5@2 ~@2 d#5@4 f5@2 ~@2 f#5@3 g5", R: "[c6,d6]!16",
})).s("gm_flute").gain(0.4)

// other · flute · soft notes
const flute_soft = note("<~@65 A@2 B@2 C@2 ~@4 D E F G H I ~@6 D E F G H I ~@9>".pickRestart({
  A: "[~@2 g4@12 ~ g4]/2", B: "[d4@7 ~]/2", C: "[~ g4@3]/2", D: "g4", E: "g4@3 ~", F: "c4", G: "c4@3 ~", H: "f4",
  I: "f4@3 ~",
})).s("gm_flute").gain(0.2)

// chords · clarinet · "Bb Clarinet"
const clarinet = note(`<
  ~ A B A C ~@8 A B A C ~@8 D E D F G ~@4 H@2 I@2 J ~@9 A B A C ~@8 D E D F G ~@6 I@2 J ~ K L M N O P Q R A B A C K L M
  N O P Q R A B A C S@2 T
>`.pickRestart({
  A: "~@2 [e5,c6]!2 [f5,c6]@2 [f5,c6]!2", B: "[e5,c6]@2 [e5,c6]!2 [f5,c6]@2 ~@2", C: "[e5,c6]@2 [e5,c6]!2 [f5,c6] ~@3",
  D: "~@2 [g5,b5]!2 [g5,c6]@2 [g5,c6]!2", E: "[g5,b5]@2 [g5,b5]!2 [g5,c6]@2 ~@2", F: "[g5,b5]@2 [g5,b5]!2 [g5,c6] ~@3",
  G: "a#4@2 ~ f4@3 g4@2", H: "[~@2 c5 d#5 f5@2 d#5 f#5@2 d#5 f5@2 d#5 c5 d#5 f5]/2", I: "d5 ~@4 c5@3",
  J: "d5@2 ~@2 a#4@4 c5@2 ~@2 c#5@3 d5", K: "c5", L: "c5@2 ~ e5", M: "f5 e5 d5 c5", N: "d5 e5 f5 a5", O: "f5@2 f5 g5",
  P: "a5@2 ~ b5", Q: "c6@2 ~ e5", R: "f5", S: "[f5,c6]@2 [f5,c6]!2 [e5,c6]@2 [e5,c6]!2", T: "g5",
})).s("gm_clarinet").gain(0.4)

// chords · clarinet · "Bb Clarinet" · soft notes
const clarinet_soft = note(`<
  ~@5 A B C D E F G H ~@4 A B C D E F G I ~@15 A B C D E F G H ~@4 A B C D E F G I ~@5 J@2 K@2 L@2 ~@31
>`.pickRestart({
  A: "c5", B: "c5@2 ~ e5", C: "f5 e5 d5 c5", D: "d5 e5 f5 a5", E: "f5@2 f5 g5", F: "a5@2 ~ b5", G: "c6@2 ~ e5", H: "f5",
  I: "g5", J: "[~@2 c4@12 ~ c4]/2", K: "[g3@7 ~]/2", L: "[~ c4@3]/2",
})).s("gm_clarinet").gain(0.2)

// chords · trumpet · "Bb Trumpet"
const trumpet = note(`<
  ~ A B A C ~@8 A B A C ~@8 D E D F G H@2 I@2 J@2 K@2 L ~@9 A B A C ~@8 D E D F G M@2 N@2 ~@2 K@2 L ~@9 A B A C ~@8 A B
  A C O@2 P
>`.pickRestart({
  A: "~@2 [e4,c5]!2 [f4,c5]@2 [f4,c5]!2", B: "[e4,c5]@2 [e4,c5]!2 [f4,c5]@2 ~@2", C: "[e4,c5]@2 [e4,c5]!2 [f4,c5] ~@3",
  D: "~@2 [b4,g5]!2 [c5,g5]@2 [c5,g5]!2", E: "[b4,g5]@2 [b4,g5]!2 [c5,g5]@2 ~@2", F: "[b4,g5]@2 [b4,g5]!2 [c5,g5] ~@3",
  G: "[f5,a#5]@2 ~ [f5,a5]@3 [d5,g5]@2", H: "[~@2 g4@12 ~ g4]/2", I: "[d4@7 ~]/2", J: "[~ g4@3]/2", K: "g5 ~@4 f5@3",
  L: "g5@2 ~@2 d#5@4 f5@2 ~@2 f#5@3 g5", M: "[~@2 c5 d#5 f5@2 d#5 f#5@2 d#5 f5@2 d#5 c5 d#5 f5]/2",
  N: "[~@2 c5 g4 a#4@2 c5 c#5@2 c5 c#5@2 c5@4]/2", O: "c5 b4 a4 g4 a4 g4 a4 b4", P: "e5",
})).s("gm_trumpet").gain(0.4)

// other · french horn · "Horn"
const french_horn = note(`<
  ~ A B A C ~@8 A B A C ~@8 D E D F G ~@6 H@2 I ~@9 A B A C ~@8 D E D F G ~@4 J@2 H@2 I ~@9 A B A C ~@6 K L A B A C M@2
  K
>`.pickRestart({
  A: "~@2 g4!2 g4@2 g4!2", B: "g4@2 g4!2 g4@2 ~@2", C: "g4@2 g4!3 ~@3", D: "~@2 d5!2 d5@2 d5!2",
  E: "d5@2 d5!2 d5@2 ~@2", F: "d5@2 d5!3 ~@3", G: "d5@2 ~ c5@3 b4@2", H: "d4 ~@4 c5@3",
  I: "d4@2 ~@2 a#3@4 c4@2 ~@2 c#4@3 d4", J: "[~@2 c4 d#4 f4@2 d#4 f#4@2 d#4 f4@2 d#4 c4 d#4 f4]/2", K: "c5", L: "f4",
  M: "g4@2 g4!2 g4@2 g4!2",
})).s("gm_french_horn").gain(0.4)

// other · french horn · "Horn" · soft notes
const french_horn_soft = note(`<
  ~@5 A B C D E F A C ~@4 A B C D E F A G ~@5 H@2 I@2 J@2 ~@4 A B C D E F A C ~@4 A B C D E F A G ~@15 A B C D E F A C
  ~@4 A B C D E F ~@9
>`.pickRestart({
  A: "c5", B: "c5 b4 a4 ~", C: "f4", D: "f4 e4 d4 ~", E: "c4", F: "c4 e4 g4 ~", G: "g4", H: "[~@2 c4@12 ~ c4]/2",
  I: "[g3@7 ~]/2", J: "[~ c4@3]/2",
})).s("gm_french_horn").gain(0.2)

// other · bassoon
const bassoon = note(`<
  A B C B D E F G H I J K L B C B D E F G H I J M N B C B O P Q R S T U V W@2 X Y E F G H I J K L B C B D E F G H I J M
  N B C B O P Z@2 AA@2 AB@2 W@2 X Y E F G H I J K L B C B D E F G H I J AC AD B C B O AE@2 AF
>`.pickRestart({
  A: "~@5 f3!3", B: "g2@2 g2!2 g2@2 g2!2", C: "g2@2 g2!2 g2@2 f3!2", D: "g2@2 g2!3 ~ f3@2", E: "e3 d3 c3 b2",
  F: "c3 d3 e3 c3", G: "a2 g2 f2 e2", H: "f2 g2 a2 f3", I: "d3 c3 b2 a2", J: "b2 c3 d3 ~", K: "c3 ~ a3 ~", L: "c3 ~@3",
  M: "c3 ~ g2 ~", N: "a2 ~ f#2 ~", O: "g2@2 g2!3 ~@3", P: "f3@2 ~ e3@3 d3@2", Q: "~@2 c3@2 ~@2 c3 e3",
  R: "g3@2 c3@2 ~@2 c3 a3", S: "c4@2 f3@2 ~@2 f3 a3", T: "c4@2 f3@2 ~@2 f3 e3", U: "d3@2 c3@2 ~@2 c3 e3",
  V: "g3@2 c3@2 ~@2 c3 f3", W: "g2 ~@4 f3@3", X: "g2@2 ~@2 d#2@4 f2@2 ~@2 f#2@3 g2", Y: "~@2 f3!3 c3@3",
  Z: "[~@2 c3@12 ~ c3]/2", AA: "[g2@14 ~ a#2]/2", AB: "c3/2", AC: "e2 ~ d3 ~", AD: "f3@2 ~@3 f3!3", AE: "c3!8",
  AF: "e2",
})).s("gm_bassoon").gain(0.25)

// other · trombone
const trombone = note(`<
  A B C B D E@2 F@2 G H I J B C B D E@2 F@2 G@2 K L M N M O P Q@2 R@2 S@2 T@2 U V E@2 F@2 G H I J B C B D E@2 F@2 G@2 K
  L M N M O P W X Y Z AA AB T@2 U V E@2 F@2 G H I J B C B D E@2 F@2 G H I J B C B D B@2 AC
>`.pickRestart({
  A: "~@5 f3!3", B: "c3@2 c3!2 c3@2 c3!2", C: "c3@2 c3!2 c3@2 f3!2", D: "c3@2 c3!3 ~ f2@2", E: "c3 ~ c3 g2",
  F: "f2 ~ f2 c3", G: "g2 ~ g2 d2", H: "g2 ~ g2 d3", I: "c3@2 ~@2 c3 a2 ~@2", J: "a2 d2 ~@2 d3 f3!3",
  K: "c3@2 ~@2 c3 b2 d2@2", L: "b2@2 d2 e2 a2!4", M: "g3@2 g3!2 g3@2 g3!2", N: "g3@2 g3!2 g3@2 a2!2",
  O: "g3@2 g3!3 a2!3", P: "f3@2 ~ c3@3 d3@2", Q: "[~@2 c3@12 ~ c3]/2", R: "[g2@14 ~ a#2]/2", S: "c3/2",
  T: "g3 ~@4 f3@3", U: "g3@2 ~@2 d#3@4 f3@2 ~@2 f#3@3 g3", V: "~@2 f3!3 c3@3", W: "~@2 c3@2 ~@2 c3 e3",
  X: "g3@2 c3@2 ~@2 c3 a3", Y: "c4@2 f3@2 ~@2 f3 a3", Z: "c4@2 f3@2 ~@2 f3 e3", AA: "d3@2 c3@2 ~@2 c3 e3",
  AB: "g3@2 c3@2 ~@2 c3 f3", AC: "c3",
})).s("gm_trombone").gain(0.3)

// bass · acoustic bass · "Double Bass"
const bass = note(`<
  A B C B D E@2 F@2 G@2 H I B C B D E@2 F@2 G@2 J K L M L M N O P Q R S T U@2 V W E@2 F@2 G@2 H I B C B D E@2 F@2 G@2 J
  K L M L M N O P Q R S T U@2 V W E@2 F@2 G@2 H I B C B D E@2 F@2 G@2 H I B C B D X@2 Y
>`.pickRestart({
  A: "~@5 f2!3", B: "c2@4 c2!4", C: "c2!5 f2!3", D: "c2!6 f1@2", E: "c2@2 ~@2 c2!2 g1@2", F: "f1@2 ~@2 f1!2 c2@2",
  G: "g1@2 ~@2 g1!2 d2@2", H: "c2@2 ~@2 c2 a1 ~@2", I: "a1 d2 ~@2 d2 f2!3", J: "c2@2 ~@2 c2 b1 d2@2",
  K: "b1@2 d2 e1 a1 a2!3", L: "g2@4 g2!4", M: "g2!5 a2!3", N: "a#1@2 ~ f1@3 g1@2", O: "~@2 c2@2 ~@2 c2 e2",
  P: "g2@2 c2@2 ~@2 c2 a2", Q: "c3@2 f2@2 ~@2 f2 a2", R: "c3@2 f2@2 ~@2 f2 e2", S: "d2@2 c2@2 ~@2 c2 e2",
  T: "g2@2 c2@2 ~@2 c2 f2", U: "c2 ~@4 c2@3", V: "c2@2 ~@2 c2@4 c2@2 ~@2 c2@3 c2", W: "~@2 f1!4 f1@2",
  X: "c2 b1 a1 g1 a1 g1 a1 b1", Y: "g1",
})).s("gm_acoustic_bass").gain(0.4)

// other · timpani
const timpani = note(`<
  A B A B ~@8 A B A B ~@8 A B A B A ~@10 C ~@7 A B A B ~@8 A B A B A ~@10 C ~@7 A B A B ~@8 A B A B ~ D@3
>`.pickRestart({
  A: "~@5 f2!3", B: "c3 ~", C: "~@2 f2!3 c3@3", D: "c3/3",
})).s("gm_timpani").gain(0.4)

stack(
  violin, violin_2, flute, flute_soft, clarinet, clarinet_soft, trumpet, french_horn, french_horn_soft, bassoon,
  trombone, bass, timpani
)