Strudelify
KeyE majorTempo90 bpm
0:00/0:00
// Sinfonia — Bach Johann Sebastian
// 90 bpm, 9/8, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 44 bars on a 48-step grid, each part at one level. Source detail keeps the original performance.
setcpm(90/4.5)

// 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 · church organ
const church_organ = note(`<
  A B C D E F G H I J K L M N O P Q R S@2 T U V W X Y@2 Z AA@2 AB AC AD AE@4 AF@2 AG@5
>`.pickRestart({
  A: "e4@2 d#4", B: "e4@4 c#4@4 f#4@3 ~", C: "b3@6 c#4@5 d#4@5 e4@5 ~ f#4@5 g#4@5 f#4@5 ~ g#4@5 e4@5",
  D: "d#4@6 e4@5 f#4@5 e4@5 ~ f#4@5 d#4@5 c#4@6 d#4@5 e4@5", E: "d#4@5 ~ e4@5 c#4@5 b3@6 c#4@5 d#4@5 c#4@6 d#4@5 b3@5",
  F: "a3@4 f#3@4 b3@3 ~", G: "e3@6 f#3@5 g#3@5 a3@6 b3@5 c#4@5 b3@5 ~ c#4@5 a3@5",
  H: "g#3@6 a3@5 b3@5 a3@6 b3@5 g#3@5 f#3@6 g#3@5 a3@5", I: "g#3@16 e3@15 ~ f#3@16", J: "~@32 g#3@15 ~, d#3",
  K: "c#3@17 ~@15 e3@16", L: "f#3@25 ~@18 c#4@5", M: "d#4@6 f#4@5 c#4@5 d#4@5 ~ f#4@5 a#3@5 b3@5 ~ d#4@5 f#3@5",
  N: "g#3@5 ~ b3@5 f#3@5 g#3@6 b3@5 d#3@5 e3@6 g#3@5 b2@5",
  O: "c#3@5 ~ e3@5 b2@5 c#3@5 ~ e3@5 g#2@5 a#2@5 ~ c#3@5 e2@5", P: "f#2@10 ~@6 e3@17 ~@15", Q: "d#3@4 e3@4 f#3@3 ~",
  R: "b2@5 ~ c#3@5 d#3@5 e3@6 f#3@5 g#3@5 f#3@6 g#3@5 e3@5",
  S: "[d#3@6 e3@5 f#3@5 g#3@6 f#3@5 e3@5 a3@32 g#3@16 c#4@16]/2", T: "f#3@6 ~@2 b3@13 ~@3",
  U: "a3@6 g#3@5 f#3@5 e3@6 d#3@5 c#3@5 c3@6 c#3@5 d#3@5", V: "c#3@19 ~@29", W: "f#3@19 ~@29",
  X: "b3@6 a3@5 g#3@5 f#3@5 ~ e3@5 d#3@5 e3@6 d#3@5 f#3@5", Y: "[g#3@2 f#3]/2", Z: "e3@2 d#3",
  AA: "[e3@6 d#3@5 c#3@5 b2@6 a2@5 g#2@6 a2@6 g#2@6 b2@6 c2@24 ~@21]/2", AB: "~@5 c#2@18 ~@25", AC: "~ f#2@3 ~@4",
  AD: "~@3 d#2@8 ~@13",
  AE: "[~@8 a2@47 ~@24 g#2@22 ~@26 a#2@5 c#3@6 d#3@5 e3@5 f#3@5 ~ g3@5 f#3@5 g3@5 ~ e3@5 d#3@17]/4",
  AF: "[~@31 e3@10 ~@6 f#3@12 ~@4 g#3@11 ~@5 a3@17]/2",
  AG: "[~@36 b3@6 f#3@5 g#3@6 d#3@6 ~ e3@6 ~ a#2@6 ~@16 e2@112 ~@39, ~@37 b2@9 ~@74, ~@81 b1@19 ~@140]/5",
})).s("gm_church_organ").gain(0.26)

// other · synth brass 1
const synth_brass_1 = note("<A B C@2 D@2 E F G H I J@2 F K@2 L M N O P Q R S@3 T U V@2 W@2 X@3 Y@5 Z@4>".pickRestart({
  A: "e4@6 f#4@5 g#4@5 a4@5 ~ b4@5 c#5@5 b4@6 c#5@5 a4@4 ~", B: "g#4@2 a#4", C: "[b4 a4 g#4]/2",
  D: "[f#4@32 e4@19 ~@3 f#4@5 g#4@5 a4@5 ~ b4@5 c#5@5 b4@6 c#5@5 a4@5]/2", E: "g#4 f#4@2", F: "e4@2 d#4",
  G: "~@6 e4@5 f#4@5 g#4@5 ~ a4@5 b4@5 a4@5 ~ b4@5 g#4@5", H: "f#4 c4@2", I: "c#4@17 ~@26 g#4@5",
  J: "[a#4@6 c#5@5 g#4@5 a#4@6 c#5@5 f4@5 f#4@6 a#4@22 ~@4 c#5@2 b4@2 ~ c#5@2 b4@9 f#4@16]/2",
  K: "[e4@52 ~@2 f#4@5 g#4@5 a#4@5 ~ b4@5 c#5@5 b4@5 ~ c#5@5 a#4@5]/2", L: "b4@2 a#4", M: "b4@19 ~@29",
  N: "b3@6 c#4@5 d#4@5 e4@6 f#4@5 g#4@5 f#4@6 g#4@5 e4@5", O: "d#4 f4@2", P: "f#4@2 g#4", Q: "a4 ~@2",
  R: "c#5@5 ~ b4@5 a4@5 g#4@6 f#4@5 e4@5 f#4@6 e4@5 g#4@5",
  S: "[a4@97 ~@5 g#4@5 f#4@5 e4@6 d4@5 c#4@5 d4@5 ~ b3@5 c#4@4 ~]/3",
  T: "c#4@6 d#4@5 e4@5 d#4@6 e4@5 c#4@5 b3@6 c#4@5 d#4@5", U: "c#4@6 d#4@5 b3@5 a3@6 b3@5 c#4@5 b3@6 c#4@5 a3@5",
  V: "[g#3@33 f#3@24 ~ d#3@5 e3@6 f#3@5 g#3@5 a3@6 g#3@5 a3@6]/2",
  W: "[f#3@5 e3@16 c#4@35 ~@3 a3@5 b3@6 c#4@5 d#4@5 e4@6 d#4@5 e4@5]/2",
  X: "[~ c#4@5 ~@16 f#4@80 ~@30 f#3@6 g#3@6, ~@6 b3@34 ~@87 e3@11 ~@6]/3",
  Y: "[a3@5 b3@5 c#4@5 b3@5 c#4@5 a3@6 g3@26 ~@27 f#3@5 g#3@6 a3@5 b3@5 c#4@6 b3@5 c#4@5 a3@6 g#3@15 a3@17 b3@16 c#4@5 d#4@5 e4@6 f#4@5 g#4@5 a4@5 ~ g#4@5 a4@5 f#4@6 g#4@17]/5",
  Z: "[~@11 c#4@6 ~ e4@2 d#4@2 ~ e4@2 d#4@11 ~@33 e4@84 ~@39, ~@41 d#4@31 ~@120]/4",
})).s("gm_synth_brass_1").gain(0.26).pan(0.2)

// chords · harpsichord
const harpsichord = note("<A B C@4 D@2 E@2 F@6 G H I@2 J K L@8 M@2 N@8 O@4>".pickRestart({
  A: "~@6 f#4@5 g#4@5 a4@5 ~ b4@5 c#5@5 b4@6 c#5@5 a4@4 ~, e4@2 d#4",
  B: "b4@5 ~ c#5@5 d#5@5 e5@6 f#5@5 g#5@5 f#5@6 g#5@5 e5@5, g#4@8 f#4@3 ~, e4 c#4 a#4",
  C: "[b3@6 c#4@5 d#4@5 e4@5 ~ f#4@5 g#4@5 f#4@5 ~ g#4@5 e4@5 d#4@6 e4@5 f#4@5 e4@5 ~ f#4@5 d#4@5 c#4@6 d#4@5 e4@5 d#4@5 ~ e4@5 c#4@5 b3@6 c#4@5 d#4@5 c#4@6 d#4@5 b3@5 ~@6 f#4@5 g#4@5 a4@5 ~ b4@5 c#5@5 b4@6 c#5@5 a4@5, b4@32 a4@32 g#4@32 f#4@32 e4@19 ~@13 f#3@16 ~@16, d#5@16 c#5@32 b4@32 a4@32 g#4@28 ~@4 c#5@27 ~@5 d#5@16, ~@144 a3@17 ~@15 b3@12 ~@4]/4",
  D: "[e3@6 f#3@5 g#3@5 a3@6 b3@5 c#4@5 b3@5 ~ c#4@5 a3@5 g#3@6 a3@5 b3@5 a3@6 b3@5 g#3@5 f#3@6 g#3@5 a3@5, e5 d#5 c#5, g#4 f#4@2 e4@2 d#4]/2",
  E: "[~@6 e4@5 f#4@5 g#4@5 ~ a4@5 b4@5 a4@5 ~ b4@5 g#4@5 ~@6 d#5@5 e5@5 f#5@6 g#5@5 a5@5 g#5@6 a5@5 f#5@5, g#3@16 e3@15 ~ f#3@16 d#3@48, c5@11 ~@5 c#5@36 ~@12 c4@32, ~@48 f#4@17 ~@15 g#3@15 ~]/2",
  F: "[e5@5 g#5@5 ~ d#5@4 ~ e5@2 ~@2 e5@2 g#5@5 c5@3 ~@2 c#5@2 ~ c#5@2 ~@6 g#4@5 a#4@6 c#5@5 g#4@5 a#4@6 c#5@5 f4@5 f#4@6 ~@5 c#4@5 d#4@6 f#4@5 c#4@5 c#5@2 b4@2 ~@7 a#3@5 b3@5 ~ d#4@5 f#3@5 g#3@5 ~ b3@5 f#3@5 g#3@6 b3@5 d#3@5 e3@6 g#3@5 b2@5 c#3@5 ~ e3@5 b2@4 b4 ~@2 b4@2 ~@2 e3@5 g#2@5 a#2@5 ~ c#3@5 e2@5 ~@6 f#4@5 g#4@5 a#4@5 ~ b4@5 c#5@5 b4@5 ~ c#5@5 a#4@5, [c#3,c#4]@17 ~ d#5@4 ~@10 e3@16 f#3@25 ~@13 a#4@22 ~@4 d#5@48 c#5@16 d#4@16 ~@16 c#3@5 ~@27 f#2@10 ~@6 e3@17 ~@15, ~@34 c5@2 ~ e5@28 ~@15 e5@32 d#4@5 c#5@2 b4@11 ~@14 e4@33 ~@15 e4@52 ~@44, ~@118 f#4@6 ~@4 f#4@17 ~@31 b4@28 ~@5 a#4@2 ~ a#4@12 c#5@43 ~@21]/6", // C#
  G: "b5@6 a#5@5 g#5@5 f#5@6 e5@5 d#5@5 e5@5 ~ c#5@5 d#5@5, b4@2 a#4, d#3@4 e3@4 f#3@3 ~",
  H: "[b4,c#5]@2 ~@2 c#5@2 ~@5 d#3@5 e3@6 f#3@5 g#3@5 f#3@6 g#3@5 e3@5, b2@5 ~ c#3@6 ~@36, ~@2 b4@5 b4@13 ~@28", // Bsus2
  I: "[[d#3,b3]@6 [e3,c#4]@5 [f#3,d#4]@5 [g#3,e4]@6 [f#3,f#4]@5 [e3,g#4]@5 f#4@6 g#4@5 e4@5 f#4@5 ~ g#4@5 a4@5 b4@6 c#5@5 d5@5 c#5@5 ~ d5@5 b4@3 ~@2, ~@2 a3@2 g#3 c#4, ~@3 d#4 f4@2]/2", // G#m C#m D#m C#m F# E
  J: "a4@5 ~ b4@5 c#5@5 d5@5 ~ e5@5 f#5@5 e5@6 f#5@5 d5@5, f#4@2 g#4, f#3@6 ~@2 b3@13 ~@3",
  K: "[a3,c#5]@6 [g#3,d#5]@5 [f#3,e5]@5 [e3,f#5]@6 [d#3,g#5]@5 [c#3,a5]@5 [c3,g#5]@6 [c#3,a5]@5 [d#3,f#5]@5, a4 ~@2", // A G#5 F#7 Esus2 G#5 F#m Fm F#m …
  L: "[c#5@5 ~ b4@5 a4@5 g#4@6 f#4@5 e4@5 f#4@6 e4@5 g#4@5 ~@6 e5@5 d#5@5 c#5@6 b4@5 ~@5 b4@6 ~@5 c#5@5 b3@6 a3@5 g#3@5 f#3@5 ~ [e3,e5]@5 [d#3,f#5]@5 [e3,g#5]@6 [d#3,f#5]@5 [f#3,a5]@5 ~@6 g#4@5 f#4@5 e4@6 d4@5 c#4@5 d4@5 ~ b3@5 c#4@4 ~ c#4@6 d#4@5 e4@5 d#4@6 e4@5 c#4@5 b3@6 c#4@5 d#4@5 c#4@6 d#4@5 b3@5 a3@6 b3@5 c#4@5 b3@6 c#4@5 a3@5 e3@6 d#3@5 c#3@5 b2@6 a2@5 g#2@6 a2@6 g#2@6 b2@6 ~@7 d#3@5 e3@6 f#3@5 g#3@5 a3@6 g#3@5 a3@6, e5@53 ~@43 d#5@21 ~@27 b4@48 ~@16 f#3@32 e3@33 ~@15 g#3@33 d#4@63, c#3@19 ~@29 a4@27 a4@11 a4@60 ~@46 a4@33 ~@31 f#4@47 ~ e4@18 ~@17 c2@24 ~@21, ~@48 f#3@19 ~@77 g#3@65 ~@15 g#4@34 ~@14 d#3@16 ~@33 f#3@24 ~@39]/8", // E D#m E D#m F#m
  M: "[f#3@5 ~@5 c#4@5 ~ d#4@5 e4@6 f#4@5 g#4@5 f#4@6 g#4@5 e4@6 ~@5 a3@5 b3@6 c#4@5 d#4@5 e4@6 d#4@5 e4@5, ~@5 [c#2,e3]@16 c#4@33 a4@42, ~@9 f#2@3 ~@4]/2", // C#m
  N: "[~ c#4@5 ~@5 f#4@5 ~ g#4@5 a4@6 b4@5 c#5@5 b4@6 c#5@6 a4@6 e5@14 d#5@32 ~@25 e5@5 [f#3,d#5]@6 [g#3,c#5]@5 ~ a3@4 ~ b3@5 [c#4,g#4]@5 [b3,a4]@5 [c#4,g#4]@5 ~ b4@5 a#2@5 c#3@6 d#3@5 e3@5 f#3@5 ~ g3@5 f#3@5 g3@5 ~ e3@5 b5@5 [f#3,a5]@5 ~ g#5@5 [a3,f#5]@5 [b3,e5]@5 ~ d#5@5 [b3,e5]@5 [c#4,d#5]@5 ~@8 e5@2 d#5@2 ~ c#5@3 ~@9 f#5@2 e5@2 ~ d#5@3 ~@8 g#5@2 f#5@3 e5@3 b5@4 ~ c#4@5 [d#4,b4]@5 [e4,c#5]@6 [f#4,d#5]@5 [g#4,e5]@5 [a4,f#5]@5 ~ [g#4,e5]@5 [a4,f#5]@5 [f#4,d#5]@6 ~@5 b3@6 f#3@5 g#3, ~@6 b3@34 ~@16 a2@47 ~@24 g#2@22 ~@26 c#5@21 ~@37 g#3@6 ~@10 c#4@6 ~@10 a3@6 g#3@16 f#3@12 ~@4 g#3@11 ~@5 a3@17 ~@48, ~@6 d#2@16 f#4@80 ~@25 e3@11 ~@5 b4@5 a4@6 ~@15 a3@6 g3@26 ~@22 d#3@17 ~@26 f#5@9 ~@6 g#5@9 ~@8 a5@8 ~@78, ~@271 e3@10 ~@5 a3@17 b3@17 ~@47 [g#4,e5]@17]/8", // D#m C#5 B7 C#5 F#m D E5 C#sus2 …
  O: "[~@5 d#3@6 ~ e3@6 ~@2 d#4@2 ~ e4@2 ~@8 a4@6 ~@30 [e4,g#4]@84 ~@39, ~@11 c#4@6 ~ e4@2 ~@5 d#4@11 ~@5 e2@112 ~@39, ~@19 f#4@14 b1@19 ~@140, ~@19 a#2@6 ~ b2@18 ~@148, ~@41 [d#4,a4]@31 ~@120]/4", // E D#dim
})).s("gm_harpsichord").gain(0.26).pan(0.4)

stack(church_organ, synth_brass_1, harpsichord)

More by Bach Johann Sebastian