Strudelify

hallelujah

Leonard Cohen

KeyF majorTempo90 bpm
0:00/0:00
// hallelujah — Leonard Cohen
// 90 bpm, 6/8, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/6436893; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 92 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(90/3)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [...]/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 · clarinet · "B♭ Clarinet"
const clarinet = note(`<
  ~@3 A B C B D E F G A B H I J K L M@2 N@2 O@2 N@2 P Q ~@5 A R S T U V W X Y Z AA AB@2 AC@2 AD@2 AC@2 AE AF AG@2 AH
  AI@2 AJ@2 AI@2 AK AL AM@2 AN@2 AO@2 AP AQ ~@9 AR@2 AS@2 AR@2 AK AT ~@2
>`.pickRestart({
  A: "~@5 d4", B: "f4@2 f4 f4@2 f4", C: "g4!2 g4@3 d4", D: "g4!2 g4@3 f4", E: "g4@2 g4@2 g4!2", F: "g4@2 f4 f4@2 eb4",
  G: "f4 ~", H: "g4@2 g4 a4@2 a4", I: "bb4@2 bb4 bb4@2 bb4", J: "bb4@2 bb4 c5@2 bb4", K: "c5@2 c5@3 c5",
  L: "d5@3 d5@2 c5", M: "[c5 bb4@2 ~]/2", N: "[g4@3 g4@6 g4@2 f4]/2", O: "[d4@3 d4@6 d4@2 f4]/2", P: "d4@4 eb4 d4",
  Q: "c4@2 ~", R: "eb4@2 eb4@2 eb4!2", S: "eb4@2 c4 c4@2 c4", T: "d4!2", U: "~@5 bb3", V: "d4@2 d4 d4@2 d4",
  W: "eb4@2 eb4 gb4@2 gb4", X: "g4@2 g4 g4@2 g4", Y: "g4@2 g4 a4@2 g4", Z: "a4@2 a4@3 a4", AA: "gb4@3 gb4@2 a4",
  AB: "[a4@3 g4@6 bb4@2 d5]/2", AC: "[eb5@3 eb5@6 eb5@2 d5]/2", AD: "[bb4@3 bb4@6 bb4@2 d5]/2", AE: "bb4@4 c5 bb4",
  AF: "a4@4 f4!2", AG: "d4", AH: "~@3 e5@2 g5", AI: "[a5@3 a5@6 a5@2 g5]/2", AJ: "[e5@3 e5@6 e5@2 g5]/2",
  AK: "e5@4 f5 e5", AL: "d5@3 e5@2 g5", AM: "[a5@3 a5@6 a4@2 b4]/2", AN: "[c5@3 c5@6 d5@2 c5]/2",
  AO: "[a4@3 a4@6 a4@2 b4]/2", AP: "c5@4 d5 c5", AQ: "b4@3 g5@2 ~", AR: "[a4@3 a4@6 a4@2 g4]/2",
  AS: "[e4@3 e4@6 e4@2 g4]/2", AT: "d5@4 c5 b4",
})).s("gm_clarinet").gain(0.4)

// other · clarinet · "B♭ Clarinet" · soft notes
const clarinet_soft = note("<~@10 A ~@8 B ~@7 C D ~@43 E F G H I J K L M N ~@8 O@2>".pickRestart({
  A: "~ f4", B: "~@3 d4@2 f4", C: "~@2 bb3", D: "bb3", E: "~@5 g5", F: "f5 c5 f5!2 c5 f5", G: "f5 c5 a4 f4 a4 d5",
  H: "e5 a4 e5!2 a4 e5", I: "e5 d5 e5 g5 e5 d5", J: "c5 a4 c5!2 a4 c5", K: "c5 d5 e5 a4 c5 f5", L: "e5@4 d5 e5",
  M: "d5", N: "~@3 e4@2 g4", O: "c5/2",
})).s("gm_clarinet").gain(0.2)

// other · clarinet · "B♭ Clarinet"
const clarinet_2 = note(`<
  ~@7 A B ~@2 C D E F G H I J@2 K@2 L@2 K@2 M N ~ A O P O Q R S T A O U V W X Y Z@2 AA@2 AB@2 AA@2 AC AD AE@2 AF AG@2
  AH@2 AI@2 AJ AK AL AM AN AO AP AQ AR AS AT@2 AU@2 AT@2 AV AW ~ AX@2 AY@2 AX@2 AV AZ ~@2
>`.pickRestart({
  A: "~@5 d4", B: "eb4@2 eb4@2 eb4!2", C: "~@5 bb3", D: "~@2 d4 d4@2 d4", E: "eb4@2 eb4 gb4@2 gb4",
  F: "g4@2 g4 g4@2 g4", G: "g4@2 g4 a4@2 g4", H: "a4@2 a4@3 a4", I: "a4@3 a4@2 a4", J: "[a4 g4@2 ~]/2",
  K: "[eb4@3 eb4@6 eb4@2 d4]/2", L: "[bb3@3 bb3@6 bb3@2 d4]/2", M: "bb3@4 c4 bb3", N: "a3@2 ~", O: "f4@2 f4 f4@2 f4",
  P: "g4!2 g4@3 d4", Q: "g4!2 g4@3 f4", R: "g4@2 g4@2 g4!2", S: "g4@2 f4 f4@2 eb4", T: "f4!2", U: "g4@2 g4 a4@2 a4",
  V: "bb4@2 bb4 bb4@2 bb4", W: "bb4@2 bb4 c5@2 bb4", X: "c5@2 c5@3 c5", Y: "d5@3 d5@2 c5", Z: "[c5@3 bb4@6 d5@2 f5]/2",
  AA: "[g5@3 g5@6 g5@2 f5]/2", AB: "[d5@3 d5@6 d5@2 f5]/2", AC: "d5@4 eb5 d5", AD: "c5@4 bb4 a4", AE: "bb4",
  AF: "~@3 a4@2 c5", AG: "[c5@3 c5@6 c5@2 d5]/2", AH: "[e5@3 e5@6 e5@2 d5]/2", AI: "[f5@3 f5@6 c5@2 d5]/2",
  AJ: "e5@4 f5 e5", AK: "g5@3 e5@2 g5", AL: "f5 c5 f5!2 c5 f5", AM: "f5 c5 a4 f4 a4 d5", AN: "e5 a4 e5!2 a4 e5",
  AO: "e5 d5 e5 g5 e5 d5", AP: "c5 a4 c5!2 a4 c5", AQ: "c5 d5 e5 a4 c5 f5", AR: "e5 c5 g4 c5 d5 e5",
  AS: "d5 b4 g4 ~@2 b4", AT: "[a4@3 a4@6 a4@2 b4]/2", AU: "[c5@3 c5@6 d5@2 c5]/2", AV: "c5@4 d5 c5", AW: "b4",
  AX: "[f4@3 f4@6 f4@2 e4]/2", AY: "[c4@3 c4@6 c4@2 e4]/2", AZ: "b4@2 ~",
})).s("gm_clarinet").gain(0.4)

// other · clarinet · "B♭ Clarinet" · soft notes
const clarinet_soft_2 = note("<~@9 A B ~ C ~@6 D ~@7 E F ~@43 G ~@8 H ~@7 I J@2>".pickRestart({
  A: "eb4@2 c4 c4@2 bb3", B: "d4!2", C: "d4 ~@2", D: "~@3 bb3@2 d4", E: "~@2 a3", F: "d4", G: "~@3 b4@2 ~",
  H: "~@3 c4@2 e4", I: "~@4 g4!2", J: "e4/2",
})).s("gm_clarinet").gain(0.25)

// other · clarinet · "B♭ Clarinet"
const clarinet_3 = note(`<
  A B A B A B A C D E F E G H I D E J K@2 L@2 K@2 M@2 G E F N A B A C D E F E G O I D E J I P Q@2 R@2 Q@2 S T G@2 U V@2
  W@2 X@2 Y I Z@2 AA@2 AB@2 Y AC V@2 W@2 X@2 Y I AD AE@6 AF AD AE@2
>`.pickRestart({
  A: "bb3@5 a3", B: "g3@5 a3", C: "g3@5 f3", D: "eb3", E: "f3", F: "bb3@4 d3 eb3", G: "bb3", H: "eb3 gb3", I: "g3",
  J: "gb3", K: "[g3@11 f3]/2", L: "[eb3@11 f3]/2", M: "[eb3@11 a3]/2", N: "f3@5 a3", O: "d4 gb3", P: "g3@3 d4@2 f4",
  Q: "[g4@3 g4@6 g4@2 f4]/2", R: "[d4@3 d4@6 d4@2 f4]/2", S: "d4@4 eb4 d4", T: "c4@4 bb3 a3", U: "e3@3 e3@2 g3",
  V: "[a3@3 a3@6 a3@2 g3]/2", W: "[e3@3 e3@6 e3@2 g3]/2", X: "[a3@3 a3@6 f3!2 b3]/2", Y: "c4", Z: "[f3@11 g3]/2",
  AA: "[a3@11 g3]/2", AB: "[f3@11 b3]/2", AC: "g3@3 e3@2 g3", AD: "d5", AE: "c5/2", AF: "e5",
})).s("gm_clarinet").gain(0.25)

stack(clarinet, clarinet_soft, clarinet_2, clarinet_soft_2, clarinet_3)

More by Leonard Cohen