Strudelify

Gerusalemme

Bepi De Marzi

KeyF majorTempo65 bpm
0:00/0:00
// Gerusalemme — Bepi De Marzi
// 65 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (2/4 at bar 1, 4/4 at bar 19) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5966953; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 46 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(65/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 · choir aahs · "Bass"
const bass = note("<~@2 A@4 B C@5 D E@3 F G H@5 I J K L M@3 N O@4 P Q R@2 S@7>".pickRestart({
  A: "[~@45 f3@10 f3@4 f3@5 f3@10 f3@5 f3@5 f3@5 f3@5 f3@4 f3@5 d3@10 d3@10 d3@5 d3@5 d3@5 d3@5 a2@10 a2@9 a2@5 a2@5 a2@5 a2@5 d3@10]/4",
  B: "d3@19 d3@5 d3@5 d3@10 d3@5 d3@4",
  C: "[d3@10 d3@5 d3@5 a2@10 a2@10 a2@5 a2@5 a2@5 a2@5 e3@24 a2@24 ~@2 c3@10 c3@5 c3@5 g2@9 g2@10 ~ d3@10 d3@5 d3@4 a2@10 a2@5 a2@5 e3@5 e3@5 e3@5 e3@4 a2@10 a2@10 ~@2 a2@10]/5",
  D: "a2@5 a2@5 e3@10 e3@9 f3@5 f3@5 f3@5 f3@4",
  E: "[~ e3@19 a2@19 ~@5 f3@10 f3@5 f3@4 f3@10 f3@5 f3@5 f3@5 f3@5 f3@5 f3@4 d3@10 d3@10 ~@2 d3@19 ~]/3",
  F: "d3@10 d3@9 a2@19 ~ a2@9", G: "~ a2@9 d3@10 d3@10 d3@10 d3@8",
  H: "[~ a2@19 ~ a2@19 ~@4 d3@24 d3@12 d3@12 db3@24 db3@21 db3@6 d3@12 f3@12 g3@12 bb3@12 a3@24 a3@24 ~]/5",
  I: "f3!2 gb3!2", J: "g3@2 g3!2", K: "f3!2 e3!2", L: "d3",
  M: "[~@2 a3@5 a3@5 a3@5 g3@5 f3@5 e3@5 f3@5 gb3@5 g3@5 g3@5 g3@5 g3@5 f3@10]/3", N: "e3@5 e3@5 d3@5 d3@5 d3@4",
  O: "[~ d3@5 g3@10 g3@5 g3@5 f3@5 f3@5 e3@5 e3@5 d3@10 a2@5 a2@5 bb2@5 bb2@5 c3@5 g3@5 f3@10]/4", P: "c3@20 ~@5 f3@23",
  Q: "~ f3@12 f3@12 e3@23", R: "[~ e3@24 ~@3 d3@24 d3@12 d3@12 db3@20]/2",
  S: "[~@4 db3@21 ~ db3@6 d3@12 f3@12 g3@12 bb3@12 a3@24 a2@24 d3@48 ~@5 g3@48 d3@72 ~@35]/7",
})).s("gm_synth_bass_1").gain(0.2)

// chords · church organ · "Organ"
const church_organ = note("<A B@2 ~@6 C@3 D E ~@4 F@5 G H I J ~@7 K L M N ~@8>".pickRestart({
  A: "~@29 [a2,e4,a4,c5]@10 [a2,e4,a4,c5]@5 [a2,e4,a4,c5]@4", // Am
  B: "[~ [e2,e4,g4,b4]@9 [e2,e4,g4,b4]@10 [f2,e4,f4,a4]@10 [f2,d4,f4,a4]@5 [f2,d4,f4,a4]@5 a4@12 ab4@12 [a2,c4,e4,a4]@24 ~@8, ~@5 [e3,b3,e4]@3 ~@4]/2", // Em Fmaj7 Dm Am E5
  C: "[~@14 [c3,c4,e4]@10 [c3,c4,e4]@5 [c3,c4,e4]@5 [g2,g3,d4]@9 [g2,g3,d4]@10 ~ [d2,f3,d4]@10 [d2,f3,d4]@5 [d2,f3,d4]@4 [a2,a3,c4]@10 [a2,a3,c4]@5 [a2,a3,c4]@5 [e2,e3,b3]@5 [e2,e3,b3]@5 [e2,e3,b3]@5 [e2,e3,b3]@4 [a2,e3,a3]@10 [a2,e3,a3]@10 ~@2 [a2,e3,a3]@10]/3", // C G5 Dm Am E5 A5
  D: "[a2,e3,a3]@5 [a2,e3,a3]@5 [e2,e3,g3]@10 [e2,e3,g3]@9 [f2,f3,c4]@5 [f2,f3,c4]@5 [f2,c4]@5 [f2,d4]@4", // A5 Em F5 Dm
  E: "~ [e3,b3,e4]@19 [a2,a3,e4]@19 ~@9", // E5 A5
  F: "[~@44 [d2,d3,a4,d5]@24 [d2,d3,a4,d5]@12 [d2,d3,a4,d5]@12 [db2,db3,a4,e5]@24 [db2,db3,a4,e5]@27 [d2,a4,f5]@12 [f2,f4,d5]@12 [g2,e4,d5]@12 [bb2,e4,d5]@12 [a2,a4,d5]@24 [a2,a4]@12 [g2,g4]@12 ~, ~@215 db5@24 ~]/5", // D5 A Dm Em7 Em7b5 D5 A G
  G: "[f2,f4,d5]!2 [gb2,gb4,d5] [gb2,gb4,c5]", H: "[g2,g4,bb4]@2 [bb2,g4] [g2,e4,g4]",
  I: "[f2,f4,a4] [f2,d4,f4] [e2,a3,e4] [e2,g3,e4]", J: "[d2,f3,d4]", K: "~@4 c3@5 g2@5 f2@10",
  L: "c3@20 ~@5 [f2,f3,f4,a4]@23", M: "~ [f2,f3,f4,a4]@12 [f2,f3,f4,bb4]@12 [e2,e3,e4,c5]@23",
  N: "~ [e2,e3,e4,c5]@24 ~@23", // C
})).s("gm_church_organ").gain(0.12)

// chords · church organ · "Organ" · soft notes
const church_organ_soft = note("<~@2 A@4 B C@3 ~@3 D@3 E F G ~@9 H@2 I@5 ~@2 J@2 K@7>".pickRestart({
  A: "[~@45 [f2,f3,c4]@10 [f2,f3,c4]@4 [f2,f3,c4]@5 [f2,f3,c4]@10 [f2,f3,c4]@5 [f2,f3,c4]@5 [f2,f3,c4]@5 [f2,f3,c4]@5 [f2,f3,c4]@4 [f2,f3,c4]@5 [d3,f3,d4]@10 [d3,f3,d4]@10 [d3,f3,d4]@5 [d3,f3,d4]@5 [d3,f3,d4]@5 [d3,f3,d4]@5 [a2,e3,db4]@10 [a2,e3,db4]@9 [a2,e3,db4]@5 [a2,e3,db4]@5 [a2,e3,db4]@5 [a2,e3,db4]@5 [d2,a3,d4]@10]/4", // F5 Dm A D5
  B: "[d2,a3,d4]@19 [d3,d4]@5 [d3,d4]@5 [d3,f3,d4]@10 [d3,f3,d4]@5 [d3,f3,d4]@4", // D5 D Dm
  C: "[[d3,f3,d4]@10 [d3,f3,d4]@5 [d3,f3,d4]@5 [a2,e3,c4]@10 [a2,e3,c4]@10 [a2,e3,c4]@5 [a2,e3,c4]@5 [a2,e3,d4]@5 [a2,e3,c4]@5 [e2,e3,b3]@24 [a2,e3,a3]@24 ~@36]/3", // Dm Am Asus4 Am E5 A5
  D: "[~@44 [f2,f3]@10 [f2,f3]@5 [f2,f3]@4 [f2,f3]@10 [f2,f3]@5 [f2,f3]@5 [f2,f3]@5 [f2,f3]@5 [f2,f3]@5 [f2,f3]@4 [d2,d3]@10 [d2,d3]@10 ~@2 [d3,d4,a4]@19 ~]/3", // F D D5
  E: "[d3,d4,a4]@10 [d3,d4,a4]@9 [a2,d4,a4]@19 ~ [a2,db4,a4]@9", // D5 A
  F: "~ [g2,db4,g4]@9 [f2,d4,f4]@10 [e2,e4]@10 [d2,d4]@10 [f2,d4,f4]@8", G: "~ [e3,d4,a4]@19 ~ [a2,db4,a4]@19 ~@8",
  H: "[~@9 g2@10 f2@5]/2", I: "[e2 d2@2 g2@2 f2 e2 d2 a2 bb2 ~@2]/5",
  J: "[~@7 [d2,f4]@6 [d2,f4]@3 [d2,f4]@3 [db2,e4]@5]/2", // Dm Dbm
  K: "[~@4 [db2,e4]@28 [d2,f4]@12 [f2,f4]@12 [g2,g4]@12 [e2,e4]@12 [a2,d4]@24 [a2,db4]@24 [d2,d4]@48 ~@5 [g2,g4]@48 [d2,gb4]@72 ~@35]/7", // Dbm Dm F G E D5 A D …
})).s("gm_church_organ").gain(0.08)

stack(bass, church_organ, church_organ_soft)