Strudelify

Norwegian Wood

Gary Burton

KeyF majorTempo193 bpm
0:00/0:00
// Norwegian Wood — Gary Burton
// 193 bpm, 3/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: pitch bends are ignored
// note: Full arrangement: all 121 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(193/3)

// 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 · sitar
const sitar = note(`<
  ~@8 A B C D E F G@2 ~@7 F H ~@30 F H ~@7 A B C D E F G@2 A B C D E F G@2 ~@23 F H ~@7 A B C D E I J@3
>`.pickRestart({
  A: "c5", B: "d5@5 c5@5 ~ bb4@3 ~@2", C: "a4", D: "g4@5 bb4@5 ~ a4@3 ~@2", E: "f4", F: "eb4@5 bb4@5 ~ d4@3 ~@2",
  G: "[c4@27 ~@5]/2", H: "c4 ~", I: "eb4@6 bb4@6 d4@3 ~", J: "[~ c4@21 ~@2]/3",
})).s("gm_sitar").gain(0.66)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B C@4 D E D E C@4 F@2 G@2 A B A B A B A B A B A B A B A
  B A B A B A B A B A B A B A B A B C@4 D E D E C@4 F@2 G@2 A B A B A B A B A B A B A B A B A B A B A H@4
>`.pickRestart({
  A: "~@5 [a3,c4,f4]@3 c4@3 c4@5, f2, ~ [a3,f4]", B: "~@5 [a3,c4,f4]@5 ~ [a3,c4,f4]@5, c3",
  C: "f2@5 [ab3,c4,f4]@3 [ab3,c4,f4]@3 [ab3,c4,f4]@5", D: "bb2@5 [bb3,d4,f4]@3 [bb3,d4,f4]@3 [bb3,d4,f4]@5",
  E: "f2@5 [bb3,d4,f4]@3 [bb3,d4,f4]@3 [bb3,d4,f4]@5", F: "g2@5 [bb3,d4,g4]@3 [bb3,d4,g4]@3 [bb3,d4,g4]@5",
  G: "c3@5 [c4,e4,g4]@3 [c4,e4,g4]@3 [c4,e4,g4]@5", // C
  H: "[~@3 [a3,c4,f4]@3 [a3,c4,f4]@3 [f2,a3,c4,f4]@21 ~@2, c3@9 ~@23]/4", // F
})).s("gm_acoustic_guitar_steel").gain(0.21)

// other · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel_2 = note(`<
  A B C D E F G@2 A B C D E F G@2 ~@48 A B C D E F G@2 A B C D E F G@2 ~@32 A B C D E H@4
>`.pickRestart({
  A: "c4", B: "d4@5 c4@5 ~ bb3@5", C: "a3", D: "g3@5 bb3@5 ~ a3@5", E: "f3", F: "eb3@5 bb3@5 ~ d3@5", G: "c3/2",
  H: "[eb3@3 bb3@3 d3@3 c3@21 ~@2]/4",
})).s("gm_acoustic_guitar_steel").gain(0.6)

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  ~@7 A B C B C B C D C B C B C B E F C B C B C B E F C G H G H I F I F J F J K L M C N B C B C B E F C B C B C B E F C
  B C B C B C D C B C B C B C D C G H G H I F I F J F J K L M C N B C B C B E F C B C B C B E F C B C B C B N O@3
>`.pickRestart({
  A: "~@7 c2", B: "f2", C: "c2@7 c2", D: "f2@7 ~", E: "c2@5 eb2@5 ~ f2@5", F: "f1", G: "f1@6 ~ f1", H: "f1@7 ~",
  I: "bb1", J: "f1@7 f1", K: "f1@3 ~", L: "g1@6 ~ g1", M: "g1@7 ~", N: "c2", O: "[c2 f1@21 ~@2]/3",
})).s("gm_electric_bass_finger").gain(0.49)

// other · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  ~@7 A B C B C B C D C B C B C B E F C B C B C B E F C G H G H I F I F J F J K L M C N B C B C B E F C B C B C B E F C
  B C B C B C D C B C B C B C D C G H G H I F I F J F J K L M C N B C B C B E F C B C B C B E F C B C B C B N O@2 ~
>`.pickRestart({
  A: "~@7 c3", B: "f3", C: "c3@7 c3", D: "f3@7 ~", E: "c3@5 eb3@5 ~ f3@5", F: "f2", G: "f2@6 ~ f2", H: "f2@7 ~",
  I: "bb2", J: "f2@7 f2", K: "f2@3 ~", L: "g2@6 ~ g2", M: "g2@7 ~", N: "c3", O: "[c3@2 f3@19 ~@11]/2",
})).s("gm_electric_guitar_muted").gain(0.18)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel_3 = note(`<
  A@26 B@2 A@4 C@2 D@2 E@2 F@2 C@2 D@2 G@2 H@2 I@2 A@30 C@2 D@2 E@2 F@2 C@2 D@2 G@2 H@2 I@2 A@18 J@2 K@3
>`.pickRestart({
  A: "[[a3,c4,f4]@27 ~@5]/2", B: "[[c4,f4]@27 ~@5, a3]/2", C: "[ab3,c4,f4]/2", D: "[[ab3,c4,f4]@27 ~@5]/2",
  E: "[[d4,f4], bb3@27 ~@5]/2", F: "[[bb3,d4,f4]@27 ~@5]/2", G: "[[bb3,d4,g4]@27 ~@5]/2", H: "[[c4,e4,g4]@27 ~@5]/2",
  I: "[[c4,f4]@27 ~@5, a3 ~]/2", J: "[[a3,c4,f4]@7 ~]/2", K: "[~ [a3,c4,f4]@21 ~@2]/3",
})).s("gm_acoustic_guitar_steel").gain(0.32)

// other · baritone sax · "BARITONSAX"
const baritone_sax = note(`<
  ~@16 A B C D E F G@2 H B C D E F G@2 ~@16 A B C D E I G@2 A B C D E F J@2 ~@32 A B C D E F G@2 A B C D E F G@2 ~@9
>`.pickRestart({
  A: "c3", B: "d3@5 c3@5 ~ bb2@5", C: "a2", D: "g2@5 bb2@5 ~ a2@5", E: "f2", F: "eb2@5 bb2@5 ~ d2@5",
  G: "[c2@27 ~@5]/2", H: "c3@7 ~", I: "eb2@5 a2@5 ~ d2@5", J: "c2/2",
})).s("gm_baritone_sax").gain(0.36)

// other · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel_4 = note("<~@36 A B C D ~@44 A B C D ~@33>".pickRestart({
  A: "f3@2 g3@2 ~ e3@3 f3@3 bb3@5, ~@2 f3 ~@5", B: "bb3@2 c4@2 ~ a3@3 bb3@3 d4@5, ~@2 bb3 ~@5",
  C: "f4@2 g4@2 ~ e4@3 f4@3 bb4@5, ~@2 f4 ~@5", D: "bb4@2 c5@2 ~ a4@3 bb4@3 d5@5, ~@2 bb4 ~@5",
})).s("gm_acoustic_guitar_steel").gain(0.5)

// bass · tuba
const bass_2 = note("<~@36 A B C B ~@44 A B C B ~@33>".pickRestart({
  A: "bb1@3 ~", B: "f2@11 ~@5", C: "bb1@11 ~@5",
})).s("gm_tuba").gain(0.8)

// drums · kick
const kick = s("bd").struct(`<
  ~@16 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ B ~@2
>`.pickRestart({
  A: "x", B: "~ x ~@6",
})).gain(0.56)

// drums · snare
const snare = s("sd").struct(`<
  ~@17 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@3
>`.pickRestart({
  A: "x",
})).gain(0.32)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~@17 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A B@16 ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A B@16 ~ A ~ A ~
  A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@3
>`.pickRestart({
  A: "x", B: "~@5 x ~@5 x ~@4",
})).gain(0.64)

stack(
  sitar, acoustic_guitar_steel, acoustic_guitar_steel_2, bass, electric_guitar_muted, acoustic_guitar_steel_3,
  baritone_sax, acoustic_guitar_steel_4, bass_2, kick, snare, tambourine
)