Strudelify

Walking in The Air - 4 cellos 1 piano

HOWARD BLAKE

KeyF majorTempo96 bpm
0:00/0:00
// Walking in The Air - 4 cellos 1 piano — HOWARD BLAKE
// 96 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5369584; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 85 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(96/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 · cello · "Violoncello"
const cello = note(`<
  ~@12 A@2 B C@2 D E ~@2 F G H I J ~@10 K L M N O P Q R ~@7 S T U V U V W X Y@2 Z AA AB AC AD AE AF AG@2 AH@2 AI AJ@2 AK
  AL AM AN@2 AO@2 AP@2 AQ
>`.pickRestart({
  A: "[f3!2 e3!2 d3@10 ~@2]/2", B: "f3!2 e3!2 d3@3 ~", C: "[c3@7 ~]/2", D: "d3!2 c3!2 bb2@3 ~", E: "d3!2 c3!2 bb2@4",
  F: "a3 g3 a3 g3 f3@3 e3", G: "f3 e3 f3 e3 d3@4", H: "d3 c3 d3 c3 bb2@3 a2", I: "bb2 a2 bb2 a2 g2@4", J: "a2",
  K: "a2 b2 db3@6", L: "d3 e3 f3@6", M: "d3 e3 f3@4 f3@2", N: "e3", O: "c3 d3 eb3@6", P: "f3 g3 a3@4 a3@2",
  Q: "f3@3 e3", R: "e3 ~@3", S: "d2 f2 a2 d3 f2 a2 d3 f3", T: "a2 d3 f3 a3 d3 f3 a3 d4", U: "a4 g4 a4 g4 f4@3 e4",
  V: "f4 e4 f4 e4 d4@4", W: "d4 c4 d4 c4 bb3@3 a3", X: "bb3 a3 bb3 a3 g3@4", Y: "a3/2", Z: "a3 b3 db4@6",
  AA: "d4 e4 f4@6", AB: "d4 e4 f4@4 f4@2", AC: "e4", AD: "c4 d4 eb4@6", AE: "f4 g4 a4@4 a4@2", AF: "f4@3 e4",
  AG: "[e4@7 ~]/2", AH: "[f4!2 e4!2 d4@10 ~@2]/2", AI: "f4!2 e4!2 d4@3 ~", AJ: "[c4@7 ~]/2", AK: "d4!2 c4!2 bb3@3 ~",
  AL: "d4!2 c4!2 bb3@4", AM: "~@4 d4 e4 f4 a4", AN: "[g4!2 f4!2 eb4@12]/2", AO: "[eb4!2 d4!2 c4@12]/2", AP: "b3/2",
  AQ: "b3",
})).s("gm_cello").gain(0.3)

// other · cello · "Violoncello"
const cello_2 = note(`<
  ~@36 A B C D E F G H ~@9 I J I J K L M@2 A B C D E F G N@2 O@2 P Q@2 R S@2 T@2 U@2 V@2 W
>`.pickRestart({
  A: "e2!2 a2 b2 db3 e3 a3 g3", B: "f3 e3 d3 a2 f2 e2 d2 c2", C: "d2!2 g2 a2 b2 d3 g3 f3", D: "e3 d3 c3 g2 e2 d2 c2 d2",
  E: "c2 g2 c3 d3 eb3 g3 c4 bb3", F: "a3 g3 f3 c3 a2 g2 f2 c2", G: "f2!2 bb2 d3 e2 b2 e3 ab3", H: "a2 e3 a3 db4 e4@4",
  I: "c4 bb3 c4 bb3 a3@3 g3", J: "a3 g3 a3 g3 f3@4", K: "f3 e3 f3 e3 d3@3 c3", L: "d3 c3 d3 c3 bb2@4", M: "f3/2",
  N: "[a2 e3 a3 db4 e4@10 ~ a3]/2", O: "[d4!2 c4!2 a3@10 ~ a3]/2", P: "d4!2 c4!2 a3@3 f3", Q: "[g3@14 ~ g3]/2",
  R: "bb3!2 a3!2 g3@3 d3", S: "[f3!2 e3!2 d3@8 d3 e3 f3 a3]/2", T: "[bb3!2 a3!2 g3@12]/2", U: "[g3!2 f3!2 eb3@12]/2",
  V: "g2/2", W: "g2",
})).s("gm_cello").gain(0.3)

// bass · cello · "Violoncello"
const bass = note(`<
  A@6 B@2 C D A@5 B@2 C D A@2 E A D C A@5 B@2 C D A@2 F A C B@2 E G F A@3 B@2 C D A@2 E A E A D C A@2 F A C B@2 E G F@2
  A@3 B@2 C D A H@2 B@2 C@2 I
>`.pickRestart({
  A: "d2@7 d2", B: "c2@7 c2", C: "g2@7 g2", D: "bb2@7 bb2", E: "f2@7 f2", F: "a2@7 a2", G: "bb2 e2", H: "eb2@7 eb2",
  I: "g4",
})).s("gm_cello").gain(0.3)

// chords · piano
const piano = note(`<
  A@6 B@2 C D A@5 B@2 C D A@2 E A D C A@5 B@2 C D A@2 ~@8 A@3 B@2 C D A@2 E A D C A@4 ~@9 A@3 B@2 C D A@2 F G H I@2 J
>`.pickRestart({
  A: "d2 a2 d3 [f3,a3]!2 d3 a2 d2", B: "c2 g2 c3 [e3,g3]!2 c3 g2 c2", C: "g2 d3 g3 [bb3,d4]!2 g3 d3 g2",
  D: "bb2 f3 bb3 [d4,f4]!2 bb3 f3 bb2", E: "f2 c3 f3 [a3,c4]!2 f3 c3 f2",
  F: "g6 eb6 bb5 g5 eb5 bb4 g4 eb4 ~ eb4 g4 bb4 eb5 g5 bb5 eb6, eb2 bb2 eb3 [g3,bb3]!2 eb3 bb2 eb2", // Gm
  G: "c2 g2 c3 [eb3,g3]!2 c3 g2 c2", // Eb
  H: "eb6 c6 g5 eb5 c5 g4 eb4 c4 ~ c4 eb4 g4 c5 eb5 g5 [c6,eb6], c2 g2 c3 [eb3,g3]!2 c3 g2 c2", // Cm Eb
  I: "[b5,d6] g5 d5 g4!2 d5 g5 [b5,d6]!2 g5 d5 g4!2 d5 g5 [b5,d6], g2 d3 g3 [b3,d4]!2 g3 d3 g2", J: "[g3,b5,d6]@15 ~",
})).s("gm_piano").gain(0.3)

stack(cello, cello_2, bass, piano)