Strudelify

Holiday

Bee Gees

KeyA minorTempo100 bpm
0:00/0:00
// Holiday — Bee Gees
// 100 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 11 "HORN" trombone (copy of ch 5 "HORN" synth brass 1); ch 9 "BELL" synth bass 1 (copy of ch 8 "PIZZ" pizzicato strings)
// note: Full arrangement: all 75 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(100/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 · fretless bass · "BASS"
const bass = note(`<
  ~@11 A B C D E F G F H@2 I J H@2 I K A B C D E F G F H@2 I J H@2 I K A B C D E F G F H@2 I J H@2 I K A B C D E F G F
  H@2 I J H@2 I ~
>`.pickRestart({
  A: "c2@3 ~ c2@3 ~ c2@3 ~ c2@4", B: "g1@4 g1@3 ~ g1@3 ~ g1@4", C: "a1@3 ~ a1@3 ~ a1@3 ~ a1@4",
  D: "e1@3 ~ e1@3 ~ e1@3 ~ e1@4", E: "f1@3 ~ f1@3 ~ f1@3 ~ f1@4", F: "c2@3 ~ c2@3 ~ c2@3 ~ c2@3 ~",
  G: "g1@3 ~ g1@3 ~ g1@3 ~ g1@4", H: "[a1@23 ~ a1@4 g1@4]/2", I: "f1", J: "a1@7 e1", K: "a1 g1",
})).s("gm_fretless_bass").gain(0.54)

// chords · church organ · "ORGAN 1"
const church_organ = note("<A@5 B@4 C@2 ~@64>".pickRestart({
  A: "[[f#4,d5]@4 c#5@4 [a2,c5]@11 [g2,d4,g4,b4], a4@19 ~, ~@4 e4@15 ~]/5", // D Am G
  B: "[[f2,f4]@4 [a2,e4]@11 [g2,d4,g4,b4], [a4,c5]@15 ~]/4", C: "[[f2,f4]@2 [a2,e4] [g2,d4,g4,b4], [a4,c5]@3 ~]/2",
})).s("gm_church_organ").gain(0.22)

// chords · orchestral harp · "HARP"
const orchestral_harp = note("<~@34 A B ~@14 A B ~@6 A B ~@6 A B ~@7>".pickRestart({
  A: "~@8 [g2,a2] [b2,c3,d3] [e3,f3,g3] [a3,b3,c4,d4] [e4,f4,g4] [a4,b4,c5] [d5,e5,f5] [g5,a5]", B: "[b5,c6] ~@15",
})).s("gm_orchestral_harp").gain(0.19)

// chords · synth brass 1 · "HORN"
const synth_brass_1 = note(`<
  ~@10 A@2 B C D E F G F ~@7 A@2 B C D E F G F ~@7 A@2 B C D E F G F ~@7 A@2 B C D E F G F ~@8
>`.pickRestart({
  A: "[~ d4 e4@2, ~ g4@3]/2", B: "~ [d4,g4]@3", C: "[e4,a4]", D: "~ [e4,g4]@3", E: "[c4,f4]", F: "[e4,g4]",
  G: "[d4,g4]", // G5
})).s("gm_synth_brass_1").gain(0.1).pan(0.7)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@19 A@2 B@2 A@2 C@2 ~@8 A@2 B@2 A@2 C@2 ~@8 A@2 B@2 A@2 C@2 D E D F G H I D A@2 B@2 A@2 J ~
>`.pickRestart({
  A: "[[a4,c5,e5]@7 [g4,b4,d5]]/2", B: "[f4 e4, [a4,c5]@31 ~]/2", C: "[f4@2 e4 [g4,b4,d5], [a4,c5]@3 ~]/2", D: "c6",
  E: "b5@4 d6@3 e6 d6@8", F: "b5@2 e6 g6 b6 g6 e6 b5", G: "a5 d6", H: "c6 d6 c6 d6 e6@12", I: "g6", J: "[f4,a4,c5]",
})).s("gm_string_ensemble_1").gain(0.08)

// other · pizzicato strings · "PIZZ"
const pizzicato_strings = note(`<
  A B C ~@3 C ~@8 D E F E ~ C ~ C ~ C ~ G ~@4 D E F E ~ C ~ C ~ C ~ G ~@4 D E F E ~ C ~ C ~ C ~ G ~@4 D E F E ~ C ~ C ~
  C ~@2
>`.pickRestart({
  A: "~@2 d4 ~ f#4 ~ a4 ~ d5 ~@7", B: "~@2 e4 ~ a4 ~ c#5 ~ e5 ~@7", C: "~@2 e4 ~ a4 ~ c5 ~ e5 ~@7",
  D: "~@2 f4 ~ a4 ~ c5 ~ f5 ~@7", E: "~@2 e4 ~ g4 ~ c5 ~ e5 ~@7", F: "~@2 g4 ~ b4 ~ d5 ~ g5 ~@7",
  G: "~@2 e4 ~ a4 ~ c5 ~ b4 ~@7",
})).s("gm_pizzicato_strings").gain(0.15).pan(0.8)

// other · piano
const piano = note(`<
  ~@3 A@2 B@2 A@2 C@2 D E F G H@4 I@2 J@2 K@2 A@2 L M N E O P@3 Q R S T Q R S U L M N E O P@3 I@2 J@2 V@2 W@2 X E F G
  H@4 Q R S Y Z R AA ~
>`.pickRestart({
  A: "[d4@2 ~@2 d4 ~ d4 ~ d4 ~ d4@2 ~@2 d4@5 ~@13]/2", B: "[~@4 d4 ~ d4 ~ d4 ~ d4@2 ~@2 d4@7 ~@11]/2",
  C: "[~@4 d4 ~ d4 ~ d4 ~ d4@2 ~@2 d4@5 ~@9 d4@2 ~@2]/2", D: "d4 ~@2 d4@2 ~ d4 ~ d4@2 ~@2 d4 ~ d4 ~",
  E: "d4@4 ~@8 d4 ~ d4 ~", F: "d4 ~ d4@3 ~@3 d4@2 ~@2 d4@2 ~@2", G: "d4@5 ~@7 d4@2 ~@2",
  H: "[d4 ~ d4@2 ~@2 d4 ~ d4 ~@2 d4 ~@2 d4@5 ~@5 d4 ~@2 d4 ~@2 d4@5 ~@5 d4@2 ~ d4@2 ~ d4@7 ~@11]/4",
  I: "[d4@2 ~@2 d4 ~ d4 ~ d4 ~ d4@2 ~@2 d4@5 ~@5 d4@2 ~@2 d4@2 ~@2]/2",
  J: "[d4@2 ~@2 d4 ~ d4 ~ d4 ~ d4@2 ~@2 d4@7 ~@11]/2",
  K: "[d4 ~@2 d4@2 ~ d4 ~ d4@2 ~@2 d4 ~ d4@5 ~@5 d4@2 ~@2 d4@2 ~@2]/2", L: "d4 ~@2 d4@2 ~ d4 ~ d4@2 ~@2 d4 ~@3",
  M: "d4@3 ~@3 d4 ~", N: "d4@3 ~@3 d4 ~ d4@2 ~@2 d4 ~@3", O: "d4@3 ~@3 d4 ~ d4@2 ~@2 d4@2 ~@2",
  P: "[d4@4 ~@4 d4 ~ d4@2 ~@2 d4@5 ~@5 d4 ~ d4@2 ~@2 d4@7 ~@11]/3", Q: "d4@2 ~@2 d4 ~@2 d4 d4@2 ~@2 d4@2 ~@2",
  R: "d4@4 ~@4 d4 ~@2 d4 d4@2 ~@2", S: "d4 ~ d4@5 ~@5 d4@2 ~@2", T: "d4@7 ~@9", U: "d4@4 ~@8 d4 ~@3",
  V: "[d4 ~@2 d4 ~@2 d4 ~ d4@2 ~@2 d4 ~ d4@4 ~@6 d4@2 ~@2 d4@2 ~@2]/2",
  W: "[d4@2 ~@2 d4 ~ d4 ~ d4 ~ d4@2 ~@2 d4@5 ~@9 d4@2 ~@2]/2", X: "d4 ~@2 d4@2 ~ d4 ~ d4 ~ d4 ~ d4 ~@3", Y: "d4 ~",
  Z: "d4@2 ~@2 d4@2 ~ d4 d4@2 ~@2 d4@2 ~@2", AA: "d4 ~ d4@5 ~@9",
})).s("gm_piano").gain(0.05)

stack(bass, church_organ, orchestral_harp, synth_brass_1, string_ensemble_1, pizzicato_strings, piano)

More by Bee Gees