Strudelify
Silent Running cover art

Out Of The Blue

Silent Running

Mike + The Mechanics

KeyD minorTempo133 bpm
0:00/0:00
// Silent Running — Mike + The Mechanics
// 133 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 166 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(133/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, A@4 for four bars: edit a riff to change every repeat.

// bass · synth bass 1 · "Bass Synt" · D
const bass = note("<~ [[d1,d2]@2 ~@4 [d1,d2] ~@9]!164 [[d1,d2] ~@5 [d1,d2] ~@9]>").s("gm_synth_bass_1").gain(0.44)

// chords · epiano2 · "E. Piano"
const epiano2 = note(`<
  ~ A B C@2 A B C@2 A B D@2 A B E@2 A B F@2 A B G@2 A B F@2 A B D@2 A B C@2 A B C@2 A B C@2 A B D@2 A B F@2 A B H@2 A B
  I@2 A B C@2 A B C@2 A B D@2 A B C@2 A B C@2 A B F@2 A B C@2 J B C@2 A B C@2 A B F@2 A B H@2 A B F@2 A B C@2 A B C@2 A
  B C@2 A B D@2 A B C@2 A B C@2 A B C@2 A B C@2 A B C@2 A B C@2 K B C@2 A B C@2 A B C@2 A B D@2 L
>`.pickRestart({
  A: "[a3,d4,f4]@15 ~", B: "[g3,c4,e4]@15 ~", C: "[[f3,bb3,d4]@15 ~]/2", D: "[[f3,bb3,d4]@29 ~@3]/2",
  E: "[[f3,bb3,d4]@27 ~@5]/2", F: "[[f3,bb3,d4]@12 ~ [g3,c4,e4]@3]/2",
  G: "[[f3,bb3,d4]@18 ~@4 [a3,c4,f4] ~@3 [g3,c4,e4]@5 ~]/2", H: "[[f3,bb3,d4]@19 ~@3 [a3,c4,f4] ~@3 [g3,c4,e4]@5 ~]/2",
  I: "[[f3,bb3,d4]@28 [g3,c4,e4]@3 ~]/2", J: "[a3,d4,f4]@7 ~", K: "[a3,d4,f4]@15 ~, g3 ~@15",
  L: "[d1,d2,d3,a3,d4] ~@2 [d1,d2,d3,a3,d4] ~@4", // D5
})).s("gm_epiano2").gain(0.3).pan(0.8)

// other · piccolo · "Whistle"
const piccolo = note(`<
  A B C D@2 E F@3 B C D@2 E G@3 ~@15 A B C D@2 E H@3 I@2 D@2 E G@3 ~@15 A B C D@2 E J@3 I@2 K@2 E L M@2 ~@31 A B C D@2 E
  F@3 B C D@2 E N@3 A O@2 P@2 Q@3 R S@2 T@2 U@3 V ~ W@2 E X@3 R V A Y@2 H@3 B Z AA@2 ~
>`.pickRestart({
  A: "~@6 c6 d6", B: "f6@3 d6@5", C: "~@6 c5 d5", D: "[f5@2 d5@2 c5 d5@5 ~@4 c6 d6]/2", E: "f6@2 d6@2 c6 d6 f5 g5",
  F: "[a5@4 g5@4 c6@2 a5@4 f5@8 d5@13 ~@9 c6@2 d6@2]/3", G: "[a5@4 g5@4 c6@2 a5@4 f5@8 d5@15 ~@11]/3",
  H: "[a5@4 g5@4 c6@2 a5@4 f5@8 d5@13 ~@9 c6@2 d6 ~]/3", I: "[f6@6 d6@13 ~@9 c5@2 d5@2]/2",
  J: "[a5@2 g5@2 c6 a5@2 f5@4 d5@7 ~@4 c6 d6]/3", K: "[f5@4 d5@4 c5@2 d5@11 ~@7 c6@2 d6@2]/2", L: "a5@2 g5@2 c6 a5@3",
  M: "[c6@3 d6@4 f6@4 a6@5]/2", N: "[a5@2 g5@2 c6 a5@2 f5@4 d5@7 ~@6]/3",
  O: "[f6@6 d6@13 ~@9 c6@2 d6@2, ~@6 e6 ~@25]/2", P: "[g6@4 f6@3 g6 [e6,f6]@2 d6@14 ~@4 f5@2 g5 ~]/2",
  Q: "[a5@4 g5@4 c6@2 a5@4 f5@8 d5@13 ~@13]/3", R: "~@12 c6@2 d6 ~", S: "[f6@6 d6@13 ~@9 c6@2 d6 ~, ~@6 e6 ~@25]/2",
  T: "[g6@4 f6@3 g6 e6@2 d6@14 ~@4 f5@2 g5 ~, ~@8 f6 ~@23]/2",
  U: "[a5@4 g5@4 c6@2 a5@4 f5@8 d5@15 ~@11, ~@22 e5 ~@25]/3", V: "f6@5 e6 d6@10",
  W: "[g6@4 f6@3 g6 [e6,f6]@2 d6@14 ~@8]/2", X: "[a5@4 g5@4 c6@2 a5@4 f5@7 e5 d5@16 ~@10]/3",
  Y: "[g6@4 f6@3 g6 f6@2 e6@2 d6@11 ~@9]/2", Z: "g6@7 ~", AA: "[a6@29 ~@3]/2",
})).s("gm_piccolo").gain(0.43).pan(0.9)

// chords · acoustic guitar steel · "Acc.Guita"
const acoustic_guitar_steel = note(`<
  ~ A B C@3 B D@2 A B E@2 A B F@2 G@2 E@2 A B H@3 B I@3 B E@2 A B J@2 A B D@2 A B C@3 B D@2 A B K@3 B L@3 B C@3 B J@2 A
  B E@2 A B E@2 A B E@2 A B M@4 E@2 N@4 A O@3 P@4 A Q@3 A B C@3 B C@3 B R@3 B E@2 A B S@2 T@2 E@2 A B D@2 A Q@3 A B E@2
  A B U@2 V@8 A Q@3 W X@5 Y@3 Z AA@2 AB
>`.pickRestart({
  A: "[a3,d4,f4]@15 ~", B: "[g3,c4,e4]@15 ~", C: "[[f3,bb3,d4]@29 ~@3 [d4,f4]@15 ~, ~@31 a3@16 ~]/3",
  D: "[~@8 g1 a1 c2 a1@3 ~@2, [f3,bb3,d4]@15 ~]/2", E: "[[f3,bb3,d4]@29 ~@3]/2",
  F: "[~@8 g1 a1 c2 a1@3 ~@2, [f3,bb3,d4]@29 ~@3]/2", G: "[~ f4@14 ~ [c4,e4]@15 ~, [a3,d4]@14 ~ g3@15 ~@2]/2",
  H: "[[f3,bb3,d4]@25 ~@7 f4@15 ~, ~@31 [a3,d4]@16 ~]/3", I: "[[f3,bb3]@23 ~@9 f4@15 ~, d4@26 ~@5 [a3,d4]@16 ~]/3",
  J: "[[f3,bb3,d4]@15 ~]/2", K: "[[f3,bb3,d4]@23 ~@9 [d4,f4]@15 ~, ~@31 a3@16 ~]/3",
  L: "[[f3,bb3,d4]@28 ~@4 [d4,f4]@15 ~, ~@31 a3@16 ~]/3", // Bb Dm
  M: "[[f3,bb3,d4]@29 ~@3 [d4,f4]@15 ~ [c4,e4]@15 ~, ~@31 a3@15 ~ g3@15 ~@2]/4", // Bb Dm C
  N: "[[a3,d4,f4]@15 ~ [c4,e4]@15 ~@17 g1@2 a1@2 c2@2 a1@6 ~@4, ~@15 g3@14 ~@2 f3@31 ~@2, ~@16 [bb3,d4]@15 ~]/4", // Dm C Bb
  O: "[[g3,c4,e4]@7 ~ [bb3,d4]@14 ~@2, ~@5 f3@10 ~]/3", // C Bb
  P: "[[a3,d4,f4]@15 ~ [c4,e4]@15 ~@17 g1@2 a1@2 c2@2 a1@6 ~@4, ~@15 g3@14 ~@2 f3@32 ~, ~ [bb3,d4]]/4", // Dm C Bb
  Q: "[[g3,c4,e4]@15 ~ [bb3,d4]@28 ~@4, ~@15 f3@28 ~@5]/3", R: "[[f3,bb3,d4]@29 ~@3 [d4,f4]@15 ~, ~@31 a3@15 ~@2]/3",
  S: "[~@16 g1@2 a1@2 c2@2 a1@9 ~, [f3,bb3,d4]@29 ~@3]/2", T: "[[a3,d4,f4]@15 ~ [c4,e4]@15 ~, ~@15 g3@14 ~@3]/2",
  U: "[[f3,bb3,d4]@7 ~]/2", V: "[[a3,d4,f4]@15 ~ [c4,e4]@15 ~ [bb3,d4]@28 ~@4, ~@15 g3@14 ~@2 f3@29 ~@4]/4",
  W: "~ f4@15, [a3,d4]@15 ~", // D5
  X: "[[g3,c4,e4]@14 ~@2 [bb3,d4]@28 ~@4 f4@15 ~ [c4,e4]@15 ~, ~@15 f3@30 ~@2 [a3,d4]@16 g3@15 ~@2]/5", // C Bb C D5
  Y: "[[f3,bb3,d4]@27 ~@5 [d4,f4]@14 ~@2, ~@31 a3@14 ~@3]/3", Z: "[c4,e4,g4]@7 ~", AA: "[[d4,f4,a4]@11 ~@5]/2",
  AB: "[d1,d2] ~@2 [d1,d2] ~@4", // D
})).s("gm_acoustic_guitar_steel").gain(0.42).pan(0.1)

// chords · string ensemble 1 · "Strings"
const string_ensemble_1 = note(`<
  ~ A B C@2 A B C@2 A B C@2 A B C@2 ~@16 A B C@2 A B C@2 A B C@2 A B C@2 ~@16 A B C@2 A B C@2 A B C@2 A B C@2 A B C@2 A
  B C@2 A B C@2 A B C@2 ~@16 A B C@2 A B C@2 A B C@2 A B C@2 A B C@2 A B C@2 A B C@2 A B C@2 A B C@2 A B C@2 A B C@2 A B
  C@2 D E F@2 G
>`.pickRestart({
  A: "[a3,d4,f4]", B: "[g3,c4,e4]", C: "[f3,bb3,d4]/2", D: "[d3,a3,d4,f4]", E: "[c3,e4,g4], c4@7 ~",
  F: "[[bb2,d4,f4,a4]@15 ~]/2", G: "[d3,a3,d4]@2 ~@4 [d3,a3,d4]@3 ~@7",
})).s("gm_string_ensemble_1").gain(0.33).pan(0.2)

// other · overdriven guitar · "LeadGuita"
const overdriven_guitar = note("<~@81 A@2 B@2 C@2 D@2 E@2 F@2 G@2 H I@3 ~@55 J K@2 ~ L@3 ~@5>".pickRestart({
  A: "[~@2 g5@5 f5@2 d5@2 c5@5]/2", B: "[~@2 g5@5 c6@2 a5@2 g5@5]/2", C: "[~@2 f5 e5 f5 e5@2 d5@2 c5@2 c5@5]/2",
  D: "[e5 a5 g5 e5@11 ~@2]/2", E: "d5/2", F: "[c5@5 ~ a4@18 ~@2 [ab4,a4]@2 c5@2 d5 ~]/2",
  G: "[f5@2 e5 f5 e5@2 c5 a4@4 e5@3 d5 c5]/2", H: "g4@15 ~", I: "[~@2 c5@9 ~]/3", J: "f5@3 e5@2 c5@3",
  K: "[d5@6 a5@25 ~]/2", L: "[e5@4 d5@2 c5@2 g4@4 c5@2 a4@23 ~@11]/3",
})).s("gm_overdriven_guitar").gain(0.36).pan(0.1)

// other · vibraphone · "Soft Bell"
const vibraphone = note(`<
  A B C D E F G@2 A H C I A F J@2 ~@16 A B C K@2 L M@2 A B C K@2 N O@3 ~@15 A B C P@2 Q J@2 A B R I A F S T@2 U V W@2 U
  V X@2 U V X@2 U V W@2 ~@15 A Y@2 K@2 F M@2 A Z C AA@2 F AB@3 B C AC@2 N AD@3 AE@2 AF@2 N J@2 ~@4 AG AH ~@6 AI AJ ~@2 A
  Z AK AL@2 ~
>`.pickRestart({
  A: "~@6 [c6,c7] d6, ~@14 d7 ~", B: "[f6,f7]@3 [d6,d7]@5", C: "~@6 [c5,c6] [d5,d6]",
  D: "[f5,f6]@4 [d5,d6]@4 [c5,c6]@2 [d5,d6]@3 ~@3", E: "~@6 [c6,c7] [d6,d7]",
  F: "[f6,f7]@4 [d6,d7]@4 [c6,c7]@2 [d6,d7] ~ [f5,f6]@2 [g5,g6] ~", // F D C D F G
  G: "[[a5,a6]@4 [g5,g6]@4 [c6,c7]@2 [a5,a6]@4 [f5,f6]@9 ~@9]/2", H: "[f6,f7]@3 [d6,d7]@3 ~@2",
  I: "[f5,f6]@2 [d5,d6]@2 [c5,c6] [d5,d6]@3", J: "[[a5,a6]@2 [g5,g6]@2 [c6,c7] [a5,a6]@2 [f5,f6]@8 ~]/2",
  K: "[[f5,f6]@4 [d5,d6]@4 [c5,c6]@2 [d5,d6]@9 ~@9 [c6,c7]@2 d6@2, ~@30 d7 ~]/2", // F D C D C
  L: "[f6,f7]@4 [d6,d7]@4 [c6,c7]@2 [d6,d7] ~ [f5,f6]@2 g5@2, ~@14 g6 ~", // F D C D F
  M: "[[a5,a6]@2 [g5,g6]@2 [c6,c7] [a5,a6]@2 [f5,f6]@7 ~@2]/2", // A G C A F
  N: "[f6,f7]@2 [d6,d7]@2 [c6,c7] d6 [f5,f6] [g5,g6], ~@10 d7 ~@5", // F D C F G
  O: "[[a5,a6]@2 [g5,g6]@2 [c6,c7] [a5,a6]@2 [f5,f6]@10 ~@7]/3", // A G C A F
  P: "[[f5,f6]@2 [d5,d6]@2 [c5,c6] [d5,d6]@5 ~@4 [c6,c7] d6, ~@30 d7 ~]/2", // F D C D C
  Q: "[f6,f7]@4 d6!2 ~@2 [c6,c7]@2 [d6,d7] ~ [f5,f6]@2 [g5,g6]@2, ~ d7 ~@2", R: "~@6 [c5,c6] d5, ~@14 d6 ~",
  S: "[a5,a6]@2 [g5,g6]@2 [c6,c7] [a5,a6]@3", T: "[[c6,c7]@3 [d6,d7]@4 [f6,f7]@4 [a6,a7]@4 ~]/2", U: "[f6,f7]@7 ~",
  V: "[e6,e7]@7 ~", W: "[[d6,d7]@11 ~@5]/2", X: "[[d6,d7]@15 ~]/2", Y: "[[f6,f7]@3 [d6,d7]@6 ~@5 [c5,c6] [d5,d6]]/2",
  Z: "[f6,f7]@6 [d6,d7]@9 ~", AA: "[[f5,f6]@4 [d5,d6]@4 [c5,c6]@2 [d5,d6]@11 ~@7 [c6,c7]@2 d6@2, ~@30 d7 ~]/2",
  AB: "[[a5,a6]@2 [g5,g6]@2 [c6,c7] [a5,a6]@2 [f5,f6]@10 ~@5 [c6,c7] d6, ~@46 d7 ~]/3", // A G C A F C
  AC: "[[f5,f6]@4 [d5,d6]@4 [c5,c6]@2 [d5,d6]@9 ~@9 [c6,c7] ~ [d6,d7] ~]/2", // F D C D C D
  AD: "[[a5,a6]@4 [g5,g6]@4 [c6,c7]@2 [a5,a6]@4 [f5,f6]@27 ~@3 [c6,c7]@2 d6@2, ~@46 d7 ~]/3", // A G C A F C
  AE: "[[f6,f7]@3 [d6,d7]@6 ~@5 [c6,c7] d6, ~@30 d7 ~]/2", // F D C
  AF: "[[g6,g7]@4 [f6,f7]@4 [e6,e7]@2 [d6,d7]@11 ~@7 [c6,c7]@2 d6@2, ~@30 d7 ~]/2", AG: "[d5,d6]@3 [a5,a6]@3 [g5,g6]@2",
  AH: "[f5,f6] ~", AI: "[d6,d7]@5 ~ [a6,a7]@6 [g6,g7]@3 ~", AJ: "[f6,f7]", AK: "[g6,g7]@5 ~ [f6,f7]@6 [c6,c7]@3 ~",
  AL: "[[g6,g7]@5 ~ [f6,f7]@6 [c6,c7]@13 ~@7]/2", // G F C
})).s("gm_vibraphone").gain(0.4).pan(0.1)

// drums · kick
const kick = s("bd").struct("<~ [x ~@2 x ~@4]!165>").gain(0.45)

// drums · snare
const snare = s("sd").struct("<~ A@15 B A@31 B A@47 B A@68 ~>".pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@7 x ~ x!2",
})).gain(0.45)

// drums · hihat
const hihat = s("hh").struct("<[x!4] [x!8]!164 [x ~@2 x ~@4]>").gain(0.25)

// drums · congas
const congas = s("conga:18").struct(`<
  ~@2 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 ~ 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 ~
>`.pickRestart({
  A: "~@5 x ~@2",
})).gain(1.27)

// drums · congas
const congas_2 = s("conga:33").struct(`<
  ~@2 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 ~ 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 ~
>`.pickRestart({
  A: "~@6 x!2",
})).gain(1.27)

stack(
  bass, epiano2, piccolo, acoustic_guitar_steel, string_ensemble_1, overdriven_guitar, vibraphone, kick, snare, hihat,
  congas, congas_2
)

More by Mike + The Mechanics