Strudelify

Norweigian Wood (This Bird Has Flown) (take 1)

The Beatles

KeyG majorTempo95 bpm
0:00/0:00
// Norweigian Wood (This Bird Has Flown) (take 1) — The Beatles
// 95 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 6 "tuba channel 6" named as a brass, played on tuba (its pad halo patch is not one); ch 5 "french horn 1 chan 5" named as a brass, played on french horn (its pad bowed patch is not one)
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 52 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(95/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 · string ensemble 2 · "strings 1 channel 3"
const string_ensemble_2 = note("<~@7 A@3 ~@42>".pickRestart({
  A: "[~@4 e4@3 ~ d4@3 ~ c#4@7 ~ c4@7 ~ b3@7 ~@13]/3",
})).s("gm_string_ensemble_2").gain(0.15)

// other · tenor sax · "elbass 1 channel 4"
const tenor_sax = note(`<
  A B C D E F G H I J K L M N O P Q R S T U V@2 C D E F W X Y Z AA I AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AN AO AP
  AQ AR
>`.pickRestart({
  A: "g3 a2 b2!2", B: "~@2 b2 ~ b2@5 ~ b2 ~ c3@4", C: "c#3 d3 d#3 e3", D: "~@2 e3 ~ d#3@5 ~ d#3 ~ d3@4", E: "c#3 c3!3",
  F: "c3@4 b2@5 ~ b2 ~ a2@4", G: "a2 d3!2 g3", H: "~@2 g3 ~ c3@4 b2@4 a2@4", I: "~@2 a2 ~ d3@5 ~ d3 ~ g3@4",
  J: "~@2 g3 ~ g3@4 a2@4 b2@4", K: "b2@4 ~@2 b2 ~ b2@5 ~ b2 ~", L: "c3 c#3 d3 d#3", M: "e3@5 ~ e3 ~ d#3@5 ~ d#3 ~",
  N: "d3 c#3 c3!2", O: "c3@4 c3@4 b2@5 ~ b2 ~", P: "a2!2 d3!2", Q: "g3@5 ~ g3 ~ f3@4 e3@4",
  R: "d3@4 c3@4 a#2@5 ~ a#2 ~", S: "c3@5 ~ c3 ~ f3@4 e3@4", T: "d3 c3 a#2 a2", U: "a2@5 ~ a2 ~ d3@5 ~ d3 ~",
  V: "[g3@5 ~ g3 ~ a2@4 g3@6 d3@2 g3 ~ g3@2 ~@2 g3 ~ c3@4]/2", W: "a2@5 ~ a2 ~ d3@4 g3@4", X: "~@2 g3 ~ f3@4 e3@4 d3@4",
  Y: "c3@4 a#2@5 ~ a#2 ~ c3@4", Z: "~@2 c3 ~ f3@4 e3@4 d3@4", AA: "c3@4 a#2@5 ~ a#2 ~ a2@4",
  AB: "a2@4 b2@4 g3@5 ~ g3 ~", AC: "g3@6 d3 e3 g3@5 ~ g3 ~", AD: "g3@4 ~@2 g3 ~ g3@4 ~@2 g3 ~",
  AE: "g3@5 ~ g3 ~ g3@4 a2@4", AF: "b2 c3 b2 a2", AG: "d3@5 ~ d3 ~ g3@4 a2@4", AH: "b2@4 g3@4 ~@2 g3 ~ g3@4",
  AI: "~@2 g3 ~ c3@4 c#3@4 d3@4", AJ: "d#3@4 e3@5 ~ e3 ~ d#3@4", AK: "~@2 d#3 ~ b2@4 c#3@4 c3@4", AL: "c3!3 b2",
  AM: "~@2 b2 ~ a2@5 ~ a2 ~ d3@4", AN: "d3@4 g3@5 ~ g3 ~ c3@4", AO: "b2@4 a2@5 ~ a2 ~ d3@4",
  AP: "d3@4 g3@5 ~ g3 ~ g3@4", AQ: "~@2 g3 ~ g3@5 ~ d3 e3 g3@4", AR: "~@2 g3 ~ g3@7 ~@5",
})).s("gm_tenor_sax").gain(0.2)

// chords · tuba · "tuba channel 6"
const tuba = note(`<
  A B C@2 D E F C@3 G H@2 I J K G H@3 L M C B C J N O C P Q C R J H@3 E G K C@3 S C@3 T U V W X
>`.pickRestart({
  A: "[c2,f#2,c#3] ~ f#2 ~ [c#2,f#2] ~ [c2,f#2] ~ [c2,f#2] ~ f#2 ~ [c2,c#2,f#2] ~ f#2 ~", // F# F#5 Cdim F#
  B: "[c#2,f#2] ~ [c2,f#2] ~ [c2,f#2] ~ [c2,f#2] ~ [c#2,f#2] ~ [c2,f#2] f#2 [c2,f#2] ~ f#2 ~", // F#5 Cdim F#5 Cdim
  C: "[c#2,f#2] ~ [c2,f#2] ~ [c2,f#2] ~ f#2 ~ [c#2,f#2] ~ [c2,f#2] ~ [c2,f#2] ~ f#2 ~", // F#5 Cdim F#5 Cdim
  D: "[c#2,f#2] ~ [c2,f#2] ~ [c2,f#2] ~ f#2 ~ [c2,c#2,f#2] ~ f#2 ~ [c#2,f#2] ~ [c2,f#2] f#2", // F#5 Cdim F# F#5 Cdim
  E: "[c2,f#2] ~ [c2,f#2] ~ [c2,c#2,f#2] ~ f#2 ~ [c#2,f#2] ~ [c2,f#2] ~ [c2,f#2] ~ f#2 ~", // Cdim F# F#5 Cdim
  F: "[c2,c#2,f#2] ~ f#2 ~ [c#2,f#2] ~ [c2,f#2] f#2 [c2,f#2] ~ f#2 ~ [c2,c#2,f#2] ~ f#2 ~", // F# F#5 Cdim F#
  G: "[c2,c#2,f#2] ~ f#2 ~ [c#2,f#2] ~ [c2,f#2] ~ [c2,f#2] ~ f#2 ~ [c#2,f#2] ~ [c2,f#2] ~", // F# F#5 Cdim F#5 Cdim
  H: "[c2,f#2] ~ f#2 ~ [c#2,f#2] ~ [c2,f#2] ~ [c2,f#2] ~ f#2 ~ [c#2,f#2] ~ [c2,f#2] ~", // Cdim F#5 Cdim F#5 Cdim
  I: "[c2,f#2] ~ f#2 ~ [c#2,f#2] ~ [c2,f#2] ~ [c2,f#2] ~ [c2,f#2] ~ [c2,c#2,f#2] ~ f#2 ~", // Cdim F#5 Cdim F#
  J: "[c#2,f#2] ~ [c2,f#2] ~ [c2,f#2] ~ f#2 ~ [c2,c#2,f#2] ~ f#2 ~ [c#2,f#2] ~ [c2,f#2] ~", // F#5 Cdim F# F#5 Cdim
  K: "[c2,f#2] ~ f#2 ~ [c2,c#2,f#2] ~ f#2 ~ [c#2,f#2] ~ [c2,f#2] ~ [c2,f#2] ~ f#2 ~", // Cdim F# F#5 Cdim
  L: "[c2,f#2] ~ [c2,f#2] ~ [c#2,f#2] ~ [c2,f#2] a#2 [c2,f#2] ~ f#2 ~ [c#2,f#2] ~ [c2,f#2] ~", // Cdim F#5 Cdim F#5 Cdim
  M: "[c2,f#2] ~ f#2 ~ [c#2,f#2] ~ [c2,f#2] ~ [c2,f#2] ~ f#2 ~ [c2,c#2,f#2] ~ f#2 ~", // Cdim F#5 Cdim F#
  N: "[c2,f#2] ~ f#2 ~ [c2,c#2,f#2] ~ f#2 ~ [c#2,f#2] ~ [c2,f#2] ~ [c2,f#2] ~ [c2,f#2] ~", // Cdim F# F#5 Cdim
  O: "[c2,c#2,f#2] ~ f#2 ~ [c#2,f#2] ~ [c2,f#2] ~ [c2,f#2] ~ f#2 ~ [c2,c#2,f#2] ~ f#2 ~", // F# F#5 Cdim F#
  P: "[c#2,f#2] ~ [c2,f#2] ~ [c2,f#2] ~ f#2 ~ [c#2,f#2] ~ [c2,f#2] ~ [c2,f#2] ~ [c2,f#2] ~", // F#5 Cdim F#5 Cdim
  Q: "[c#2,f#2] ~ [c2,f#2] f#2 [c2,f#2] ~ f#2 ~ [c#2,f#2] ~ [c2,f#2] ~ [c2,f#2] ~ f#2 ~", // F#5 Cdim F#5 Cdim
  R: "[c#2,f#2] ~ [c2,f#2] a#2 [c2,f#2] ~ f#2 ~ [c#2,f#2] ~ [c2,f#2] ~ [c2,f#2] ~ f#2 ~", // F#5 Cdim F#5 Cdim
  S: "[c2,c#2,f#2] f#2!2 ~ [c#2,f#2] ~ [c2,f#2] a#2 [c2,f#2] ~ f#2 ~ [c2,c#2,f#2] ~ f#2 ~", // F# F#5 Cdim F#
  T: "[c#2,f#2] ~ [c2,f#2] f#2 [c2,f#2] ~ [c2,f#2] ~ [c#2,f#2] ~ [c2,f#2] a#2 [c2,c#3] ~@2 d2", // F#5 Cdim F#5 Cdim C#maj7
  U: "d2 c2 c3 ~@2 a2 ~@2 f2 ~ c2 ~ c2 ~@2 d2", V: "d2 c2!2 c3 d2 a2 ~ d2!3 f2 ~ [c2,f#2,c#3] ~ f#2 ~",
  W: "[d2,f#2] ~ [c2,f#2] ~ [c2,f#2] ~ f#2 ~ [d2,f#2] ~ f#2 ~ [c2,f#2] ~ f#2 ~", X: "d2 ~ c2 ~ [d2,c#3] ~@11",
})).s("gm_tuba").gain(0.15)

// chords · french horn · "french horn 1 chan 5"
const french_horn = note(`<
  A@2 B@2 C D E@4 F G H I J K L M N O P Q@2 R@2 C S T@2 U@2 V@2 W@4 X Y Z AA AB@2 AC@2 AD AE AF AG AH@3
>`.pickRestart({
  A: "[[g3,b3,d4]@2 [c4,e4,g4,a4]@2 [g3,b3,d4]@2 d4@5 d4 b3 g3 [g3,c4,e4]@2, ~@3 [g3,b3]@3 ~@2]/2", // G Am7 G C G
  B: "[[c#4,e4,g4,a4]@2 [c4,d4,f#4,a4]@2 [a3,b3,d#4,f#4]@2 [g3,b3,e4] ~ [g3,b3,e4] ~ [g3,c4,d#4]@4 [g3,b3,d4]@2, ~@7 e3@2 ~@7]/2", // A7 D7 B7 Em Cm G
  C: "[c#4,e4,g4,a4] [c4,e4,g4,a4]!2 [g3,c4,d#4]", D: "[g3,c4,d#4] [g3,b3,d4]@2 [c#4,e4,g4,a4]",
  E: "[[c#4,e4,g4,a4]@4 [c4,e4,g4,a4]@4 [c4,d4,f#4,a4]@4 [g3,b3,d4]@8 [g3,c4,e4]@4 [g3,b3,d4]@4 [c#4,e4,g4,a4]@2 ~@2 [c#4,e4,g4,a4]@2 ~@2 [a3,c4,d4,f#4]@8 [g3,b3,d4]@6 b3 d4 [g3,b3,d4]@4 [c4,e4,g4,a4]@4 [g3,b3,d4]@4, ~@15 a2@2 ~@15]/4", // A7 Am7 D7 G C G A7 D7 …
  F: "b1@8 ~@2 g3@4 b3 ~, [b3,d4]@15 ~, g3@5 ~@3, ~@8 b1@7 ~", // Bm
  G: "[g3,c4,e4] [c#4,e4,g4,a4] [c4,d4,f#4,a4] [a3,b3,d#4,f#4]", // C A7 D7 B7
  H: "e4@2 ~@2 g4@2 b4 ~ [g3,c4,d#4]@8, [g3,b3]@7 ~@9, ~@2 e4@5 ~@9", I: "[g3,b3,d4] [c#4,e4,g4,a4] [c4,e4,g4,a4]!2",
  J: "[g3,c4,d#4]@4 [g3,c4,d#4]@4 g3@2 ~@2 b3@2 d4 ~, ~@4 d4@3 ~, ~@2 b3 ~, ~@10 g3@5 ~", // Cm
  K: "[c#4,e4,g4,a4]!2 [c4,e4,g4,a4] [c4,d4,f#4,a4]", // A7 Am7 D7
  L: "[g3,b3,d4] ~ [g3,b3,d4] ~ [a3,c4,f4]@2 [g3,c4,e4]@2, ~ g2@2 ~@5", M: "[a3,d4,f4] [g3,c4,e4] [a#3,d4,f4]@2",
  N: "[g3,c4,e4]@6 e4 g4 [a3,c4,f4]@4 [g3,c4,e4]@4", O: "[a3,d4,f4] [g3,c4,e4] [a#3,d4,f4] [c#4,e4,g4,a4]",
  P: "[c#4,e4,g4,a4]@2 ~@2 [c#4,e4,g4,a4]@2 ~@2 d4@2 ~@2 f#4@2 a4 ~, ~@2 a2@4 ~@2 [c4,a4]@7 ~, ~@2 f#4 ~, ~@10 d4@5 ~", // A7 F
  Q: "[[g3,b3,d4]@8 [c4,e4,g4,a4]@4 g2@8 ~@2 g3@4 b3 ~ [g3,c4,e4]@4, ~@12 [b3,d4]@15 ~@5, ~@6 g3@5 ~@5, ~@20 g2@7 ~@5]/2", // G Am7 C Bm
  R: "[[c#4,e4,g4,a4]@2 [c4,d4,f#4,a4]@2 [a3,b3,d#4,f#4]@2 [g3,b3,e4] ~ [g3,b3,e4] ~ [g3,c4,d#4]@4 [b3,d4,f#4,a4]@2, ~@7 e3@2 ~@7]/2", // A7 D7 B7 Em Cm Bm7
  S: "[g3,c4,d#4]@4 [g3,b3,d4]@6 b3 d4 [c#4,e4,g4,a4]@4", // Cm G A7
  T: "[~@4 c#4@2 e4 ~ [c4,d4,f#4,a4]@4 g3@2 g3@4 d4 ~ [a3,c4,f4]@4 [g3,c4,e4]@4 [a3,d4,f4]@4, [e4,g4,a4]@7 ~@25, c#4@2 ~@4 d4@3 ~@7, ~ a3@2 ~@3 b3@2 ~@8]/2", // D7 F C Dm A7
  U: "[[g3,c4,e4]@4 [a#3,d4,f4]@8 c4@2 c4@4 g4 ~ [a3,c4,f4]@4 [g3,c4,e4]@4 [a3,d4,f4]@4, ~@12 g3@7 ~@13, ~@3 e4 ~@4]/2", // C A# F C Dm
  V: "[[g3,c4,e4]@4 [a#3,d4,f4]@2 ~@2 [a#3,d4,f4]@2 ~@4 a3@4 e4 ~ [c4,d4,f#4,a4]@8 [g3,b3,d4]@4, ~@6 a#2@4 ~@2 [e4,g4,a4]@7 ~@13, ~@3 c#4 ~@4]/2", // C A# D7 G A7
  W: "[[c4,e4,g4,a4]@4 [g3,b3,d4]@4 ~@28 b3@2 ~@2 g2@8 ~@2 g3@4 b3 ~ [g3,b3,d4]@4 [c4,e4,g4,a4]@4, ~@4 g2@13 g3@2 ~ g3@5 ~@7, ~@8 g4@12 g3@2 b3@4 d3@12 ~@10 g2@7 ~@9, ~@4 [b3,d4]@2 g3@3 d3@2 g4@3 g3 b3 g4@3 ~@13, ~@8 g3@2 d3@4 [b3,d4]@8 d4@16 ~@2 [b3,d4]@15 ~@9]/4", // Am7 G Am7 Bm
  X: "[g3,b3,d4] [g3,c4,e4] [g3,b3,d4] [c#4,e4,g4,a4]", Y: "[c4,e4,g4,a4]@2 [g3,b3,d4] [c4,e4,g4,a4]",
  Z: "[g3,b3,d4]@4 [g3,b3,d4]@9 ~ g2@2", AA: "[g3,b3,d4]@3 ~ [g3,c4,e4]@4 [c#4,e4,g4,a4]@4 [c4,d4,f#4,a4]@4",
  AB: "[[a3,b3,d#4,f#4]@2 [g3,b3,e4]@4 [g3,c4,d#4] ~ [g3,c4,d#4] ~ [g3,b3,d4]@2 [c#4,e4,g4,a4]@2 [c4,e4,g4,a4]@2, ~@7 d#3@2 ~@7]/2", // B7 Em Cm G A7 Am7
  AC: "[[c4,e4,g4,a4]@4 [g3,c4,d#4]@4 [g3,c4,d#4]@4 [g3,b3,d4]@6 b3 d4 ~@4 c#4@2 e4 ~ [c4,e4,g4,a4]@4, ~@20 [e4,g4,a4]@7 ~@5, ~@5 c#4 ~@2, ~@11 a3@2 ~@3]/2", // Am7 Cm G Am7 A7
  AD: "[c4,d4,f#4,a4]@4 g3@2 ~@2 b3@2 d4 ~ [g3,c4,e4]@4, ~@2 d4@3 ~@3, ~ b3 ~@2, ~@6 g3@5 ~@5", // D7 C
  AE: "[g3,b3,d4]@2 [c#4,e4,g4,a4] ~ [c#4,e4,g4,a4] ~ [c4,e4,g4,a4]@2, ~@3 a2@2 ~@3", // G A7 Am7
  AF: "[c4,d4,f#4,a4]@4 [g3,b3,d4]@6 b3 d4 [g3,c4,e4]@4", // D7 G C
  AG: "[g3,b3,d4]@4 ~@4 c#4@2 e4 ~ [c4,e4,g4,a4]@4, ~@4 [e4,g4,a4]@7 ~@5, ~ c#4 ~@2, ~@3 a3@2 ~@3", // G Am7 A7
  AH: "[[a3,c4,d4,f#4]@4 [g3,b3,d4]@8 [g3,b3,d4,g4]@21 ~ g2@2 [g3,b3,d4,g4]@4 ~@8]/3", // D7 G
})).s("gm_french_horn").gain(0.15)

stack(string_ensemble_2, tenor_sax, tuba, french_horn)

More by The Beatles