Strudelify

Goodnight

The Beatles

KeyG majorTempo90 bpm
0:00/0:00
// Goodnight — The Beatles
// 90 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 52 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(90/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.

// other · french horn · "Horn Bank 1"
const french_horn = note("<~@8 A B C@2 D E ~@4 F@3 G H I J G ~@8 F@3 G H I J G ~@6 K L M@2>".pickRestart({
  A: "d4 c4", B: "c4@4 a3@2 g3 f#3", C: "[b3@2 c4 d4 d4@2 e4 f#4@2 g4 f#4 g4 a4 b4 d5 c5]/2", D: "b4@3 f#4 e4@2 e4@2",
  E: "a4@3 e4 d4@2 d4@2", F: "[~ b3 c4 d4 d4@2 e4 f#4@2 g4 b4 c5 a4@6 d5@2 c5@4]/3", G: "c5!2 c5@2", H: "b4@4 b4@3 a4",
  I: "g4@3 g4 g4@4", J: "a4 d5 a4@2", K: "g4@3 d4 a4@3 d4", L: "g4@3 d5 g4@2 a4@2", M: "b4/2",
})).s("gm_french_horn").gain(0.72).pan(0.2)

// other · flute
const flute = note("<~@22 A@2 B C ~@12 A@2 B C ~ D E F ~@2 G H I@2>".pickRestart({
  A: "[~@8 d6@10 c6 d6 c6@2 d6@2 e6@4 b5@4]/2", B: "~@4 d6@6 c6 d6 c6@2 d6@2", C: "e6 b5 f#5@2",
  D: "f#5@2 b5 f#5 e5@2 a5 e5", E: "d5@2 g5 d5 e5@2 f#5 c5", F: "b4@2 e5 b4 a4@2 d5 a4", G: "[b4,d5] [d5,f#5]",
  H: "[c5,e5]@2 [c5,e5] [d5,f#5]", I: "[e5,g5]/2",
})).s("gm_flute").gain(0.48).pan(0.8)

// bass · acoustic bass
const bass = note("<A@4 ~@9 B C@4 D E F G H I F J K L K M ~@4 D E F G H I F J K C@3 A N ~@4>".pickRestart({
  A: "~ g2 ~ g2", B: "~@6 e2 d2", C: "g2!4", D: "g2!2 b2!2", E: "a2!4", F: "b2!2 a2!2", G: "g2@2 g2@2 f#2@2 e2 d2",
  H: "g2@2 g2@2 b2 f#3 b2@2", I: "a2 e3 a2 e3 a2 e3 a2 e3", J: "g2!2 f#2 d2", K: "g2!2 d2@2 g2!2 e2@2",
  L: "g2!2 f#2@2 g2!2 e2@2", M: "g2!2 d2@2 g2@2 c2@2", N: "~ g2 ~ d2",
})).s("gm_acoustic_bass").gain(0.49)

// other · orchestral harp · "Harp"
const orchestral_harp = note("<~@14 A@2 B C ~@8 D@2 B C ~@12 A@2 B C ~@3 E@3>".pickRestart({
  A: "[b4,d5,f#5]@2 b3 d4 g3@2 e3@2 [b4,d5,f#5]@2 c4 d4 g3@2 e3@2", // Bm
  B: "[b4,d5,g5]@2 b3 d4 g3@2 e3@2 [c5,e5,g5]@2 c4 d4 g3@2 e3@2", // G C
  C: "[b4,d5,g5]@2 b3 d4 g3@2 e3@2 [b4,d5,g5]@2 c4 d4 g3@2 ~@2", // G
  D: "[b4,d5,f#5]@2 b3 d4 g3@2 e3@2 [b4,d5]@2 c4 d4 g3@2 e3@2", E: "[~ [d5,g5]@2, ~@15 b4@32 ~]/3",
})).s("gm_orchestral_harp").gain(0.49).pan(0.3)

// other · string ensemble 1 · "Strings 1"
const string_ensemble_1 = note(`<
  ~@4 A B C D E F C G E H I ~@2 J K L M N K L M N ~@4 O P Q R K L M N K L M N ~@4 A B ~@2 S@2
>`.pickRestart({
  A: "g4@3 d4 a4@3 d4", B: "g4@3 d5 g4@2 a4@2", C: "g4@3 d4 a4@3 f#4", D: "g4@3 e4 e4@4", E: "f#4 e4", F: "e4 d4",
  G: "g4 e4", H: "~@2 b4@4 d5 b4 [d4,c5]@2 ~ e4 f#4 [g4,a4] [b4,c5] [d5,e5], e4@4 ~ d4@3", I: "f#5 ~@3",
  J: "~@12 g4 [a4,b4] [c5,d5] [e5,f#5]", K: "~@7 f#5, g5 a5, ~@3 d5@4 ~", L: "~@3 c5 e5@4, g5 ~", M: "f#5 b5 e5@2",
  N: "e5 a5 d5@2", O: "g4@3 d4 a4@4", P: "a4@3 e4 a4@4", Q: "[b4,d5] [c5,e5]", R: "a4@3 a4 g4@2 f#4@2", S: "g5/2",
})).s("gm_string_ensemble_1").gain(0.36).pan(0)

// other · violin
const violin = note(`<
  A B C D E F E G H I E G H J B@2 K@2 E G H L E G H L B@2 K@2 M N O P E G H L E G H L B@2 K@2 E F ~@2 Q@2
>`.pickRestart({
  A: "f#4@3 g4 f#4@3 g4", B: "f#4!2", C: "b4@3 b4 c5@3 c5", D: "b4 c5", E: "b3 d4", F: "c4@2 c4!2", G: "c4!2",
  H: "d4 c4", I: "c4@2 b3 c4 a3@2 g3 f#3", J: "~@2 c4@4 d4 c4 a3@4 g3@2 f#3@2", K: "g4!2", L: "c4 a3", M: "b3 c4",
  N: "a4 d4", O: "d4 e4", P: "f#4@2 g4 a3", Q: "d4/2",
})).s("gm_violin").gain(0.25).pan(1)

// other · viola
const viola = note(`<
  A B C D E F E G H ~ E I H ~ J@2 B@2 E G H K E G H K J@2 B@2 L M ~ N E G H K E G H K J@2 B@2 E F ~@2 O@2
>`.pickRestart({
  A: "d4@3 d4 e4@3 e4", B: "d4 e4", C: "g4@3 g4 a4@3 a4", D: "g4 a4", E: "g3 b3", F: "a3@2 f#3!2", G: "a3!2",
  H: "b3 a3", I: "g3!2", J: "d4!2", K: "a3 f#3", L: "~@9 a3 b3 c4 d4 e4 f4 g4", M: "c#4@8 ~ d4 e4 f4 g4 a4 b4 c5",
  N: "d4@4 ~ d4@2 d4", O: "b3/2",
})).s("gm_viola").gain(0.29).pan(0.6)

// other · cello
const cello = note("<~@2 A B C D E@2 F ~@3 F ~@7 F ~@3 F ~@7 G ~@3 F ~@3 F ~@5 C D ~@2 H@2>".pickRestart({
  A: "d4@3 d4 e4@3 e4", B: "d4 e4", C: "d3 f#3", D: "e3@3 e3 d3@2 d3@2",
  E: "[g2 d3 e3 f#3 f#3@2 g3 a3@2 f#3 g3 a3 b3 c4 a3 g3]/2", F: "a3 g3", G: "~ e3", H: "d3/2",
})).s("gm_cello").gain(0.34).pan(0.9)

// bass · contrabass
const bass_2 = note(`<
  A@4 B C B D E F B G E F H@3 I B D E F B D E F H@3 I J K L M B D E F B D E F H@3 I B C ~@2 N@2
>`.pickRestart({
  A: "b3 c4", B: "g2 b2", C: "a2@3 d2", D: "a2@2 g2 c3", E: "b2 a2", F: "g2@4 f#2@2 e2 d2", G: "a2@3 a2 g2@4",
  H: "b3@4 ~ b3!2 c4 c4@4 ~ c4!2 b3", I: "b3@4 ~ b3!2 c4@9", J: "~ g2 a2 b2 c3 d3 e3 f3 e3@8",
  K: "~ a2 b2 c3 d3 e3 f3 g3 f3@8", L: "~ g2 a2 b2 c3 d3 e3 f3 g2@8", M: "f#2@2 e2 d2", N: "g2/2",
})).s("gm_contrabass").gain(0.38).pan(0.9)

stack(french_horn, flute, bass, orchestral_harp, string_ensemble_1, violin, viola, cello, bass_2)

More by The Beatles