Strudelify
In The Navy cover art

1979 · Go West In The Navy

In The Navy

Village People

KeyG minorTempo130 bpm
0:00/0:00
// In The Navy — Village People
// 130 bpm, 4/4, key G minor. Source: mcgill + midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 104 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(130/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 · rock organ · "RockORg"
const rock_organ = note(`<
  ~@11 A B C@2 D E F@2 A B C@2 D E F@2 G H G I G I J K G H G L M K N O ~@2 P Q A B C@2 D E F@2 A B C@2 D E F@2 G H G I G
  I J K G H G L M K N O ~@6 P Q R S R T R T ~ U R S ~@7
>`.pickRestart({
  A: "bb4 ~ a4 ~ bb4 ~ a4 ~ bb4@3 ~ a4 ~ bb4@2", B: "~@2 a4 ~ bb4 ~ a4 ~ bb4@3 ~ a4@3 ~",
  C: "[bb4 ~ a4 ~ bb4 ~ a4 ~ bb4@3 ~ c5 ~ d5@7 ~@11]/2", D: "eb5 ~ d5 ~ eb5 ~ d5 ~ eb5@3 ~ c5 ~ d5@2",
  E: "~@2 c5 ~ d5 ~ c5 ~ d5@3 ~ bb4@3 ~", F: "[bb4 ~ g4 ~ bb4 ~ g4 ~ bb4@3 ~ c5 ~ a4@7 ~@11]/2",
  G: "~@10 d4 ~ d4 ~ d4 ~", H: "g4 ~ a4 ~ b4 c5 ~ d5@3 ~@6", I: "a4 ~ b4 ~ c5 d5 ~ e5@3 ~@6", J: "~@12 g5 ~ e5 ~",
  K: "g5 ~ e5 ~ g5!2 ~ e5@2 ~ d5 ~@5", L: "a4 ~ b4 ~ c5 ~ d5 e5@3 ~@6", M: "~@10 e5 ~ g5 ~ e5 ~",
  N: "~@4 d5@2 ~ c5 b4@2 g4@3 ~@3", O: "~@8 c5@4 a4@3 ~", P: "eb4 ~ eb4 ~ eb4 ~@3 eb4 ~ eb4 ~ eb4 ~@3",
  Q: "eb4 ~ eb4 ~ eb4!2 ~ eb4!2 ~ eb4 ~ eb4 ~@3", R: "~@14 d4 ~", S: "d4 ~ d4 ~ g4 ~ a4 ~ b4 c5 ~ d5@3 ~@2",
  T: "d4 ~ d4 ~ a4 ~ b4 ~ c5 d5 ~ e5@3 ~@2", U: "g5 ~ e5 ~ g5 ~ e5 ~ g5!2 ~ e5@2 ~ d5 ~",
})).s("gm_rock_organ").gain(0.47)

// other · rock organ · "RockORg" · soft notes
const rock_organ_soft = note(`<
  ~@97
  [~@14 d4 ~]
  [d4 ~ d4 ~ a4 ~ b4 ~ c5 ~ d5 e5@3 ~@2]
  [~@14 e5 ~]
  [g5 ~ e5 ~ g5 ~ e5 ~ g5!2 ~ e5@2 ~ d5 ~]
  [~@8 d5@2 ~ c5 b4@2 g4@2]
  [~@3 c5]
  [a4@3 ~@13]
>`).s("gm_rock_organ").gain(0.19)

// chords · string ensemble 1 · "Strings1"
const string_ensemble_1 = note(`<
  ~@3 A ~ A B C D A E F@2 G@2 H@2 I@2 J@2 G@2 H@2 K@2 L M N O P Q R S T U P O V W R X ~@4 F@2 G@2 H@2 I@2 J@2 G@2 H@2
  K@2 L M N O P Q R S T U P O V W R X ~@8 Y Z AA AB AC AD AE AF AG AH AC AI ~@5
>`.pickRestart({
  A: "[d4,g4]@11 ~@5", B: "[c4,d4] ~", C: "[d4,g4] ~", D: "[d4,f4] ~", E: "[gb4,a4]@5 ~@3 [gb4,a4]@5 ~@3",
  F: "[[d4,g4]@8 ~@4 d4 ~ [d4,g4]@13 ~@5]/2", G: "[[d4,g4]@8 ~@4 a4 ~ [d4,f4,bb4]@13 ~@5]/2",
  H: "[[g4,c5]@8 ~@4 [eb4,g4] ~ [f4,bb4]@7 ~@3 [f4,bb4]@3 ~ d4@3 ~]/2", I: "[eb4@5 ~@3 eb4@4 ~@2 [d4,gb4]@13 ~@5]/2",
  J: "[[d4,g4]@8 ~@4 f4 ~ [d4,g4]@7 ~@3 [d4,g4]@5 ~@3]/2", K: "[eb4@5 ~@3 eb4@4 ~@2 [d4,gb4]@13 ~ [d4,a4]@3 ~]/2",
  L: "[d4,g4,b4]@3 ~ [b3,d4,g4]@3 ~@9", M: "[b3,d4] ~@3 [d4,g4] ~@2 [g4,b4]@3 ~@6", N: "[e4,g4]@3 ~ [c4,e4]@3 ~@9",
  O: "[d4,gb4] ~@3 [gb4,a4] ~@2 [gb4,a4,c5]@3 ~@6", P: "[e4,g4]@3 ~ [c4,e4,g4]@3 ~@9",
  Q: "[d4,gb4] ~@3 [gb4,a4] ~@2 [a4,c5]@3 ~@6", R: "[d4,g4]@3 ~ [b3,d4]@5 ~@7", S: "[d4,g4]@3 ~ g4@3 ~ [c4,e4]@3 ~@5",
  T: "[d4,g4]@3 ~ [b3,d4]@3 ~@9", U: "[b3,d4]@3 ~ [d4,g4]@3 [g4,b4]@3 ~@6", V: "[e4,g4]@4 [c4,e4,g4]@3 ~@5 [a4,c5] ~@3",
  W: "[a4,c5] ~@3 [a4,c5] ~@2 [a4,c5]@2 ~@7", X: "[d4,g4]@3 ~@5 [c4,d4]@5 ~@3",
  Y: "[d4,a4]@3 ~ [d4,g4,b4]@3 ~ [b3,d4,g4]@3 ~@5", Z: "~@4 [b3,d4] ~@3 [d4,g4] ~@2 [g4,b4]@3 ~@2",
  AA: "~@4 [e4,g4]@3 ~ [c4,e4]@3 ~@5", AB: "~@4 [d4,gb4] ~@3 [gb4,a4] ~@2 [gb4,a4,c5]@3 ~@2",
  AC: "~@4 [e4,g4]@3 ~ [c4,e4,g4]@3 ~@5", AD: "~@4 [d4,gb4] ~@3 [gb4,a4] ~@2 [a4,c5]@3 ~@2",
  AE: "~@4 [d4,g4]@3 ~ [b3,d4]@5 ~@3", AF: "~@4 [d4,g4]@3 ~ g4@3 ~ [c4,e4]@3 ~", AG: "~@4 [d4,g4]@3 ~ [b3,d4]@3 ~@5",
  AH: "~@4 [b3,d4]@3 ~ [d4,g4]@3 [g4,b4]@3 ~@2", AI: "~@4 [d4,gb4] ~@3 [gb4,a4] ~@7",
})).s("gm_string_ensemble_1").gain(0.37).pan(0.7)

// chords · string ensemble 1 · "Strings1" · soft notes · Gbdim Em C Am G5 Bm G5 Csus2
const string_ensemble_1_soft = note(`<
  ~@98
  [~@11 [gb4,a4,c5]@3 ~@2]
  [~@4 [e4,g4]@4 [c4,e4,g4]@3 ~@5]
  [[a4,c5] ~@3 [a4,c5] ~@3 [a4,c5] ~@2 [a4,c5]@2 ~@3]
  [~@4 [d4,g4]@3 ~ [b3,d4]@5 ~@3]
  [~@4 [d4,g4]@3 ~@5 [c4,d4]@4]
  ~
>`).s("gm_string_ensemble_1").gain(0.18).pan(0.7)

// other · tuba
const tuba = note(`<
  ~@3 A B C D E F E G ~@15 H I J K J K L M@2 I J K J K L M I ~@2 N O ~@15 H I J K J K L M@2 I J K J K L M I ~@6 N O P ~
  Q ~ Q ~ R S@2 ~ Q ~@6
>`.pickRestart({
  A: "g4@11 ~@5", B: "f4@11 ~@5", C: "eb4@11 ~@5", D: "[c4,d4] ~@3", E: "[d4,g4] ~@3", F: "[d4,f4] ~@3",
  G: "[gb4,a4] ~ [gb4,a4] ~", H: "~@12 f4@2 ~ eb4", I: "d4@3 ~ b3@3 ~@9", J: "~@12 e4@2 ~ d4", K: "e4@3 ~ c4@3 ~@9",
  L: "~@12 d4@2 ~ c4", M: "d4@3 ~ b3@3 ~@5 gb4@2 ~ e4", N: "f3 ~ f3 ~ f3 ~@3 f3 ~ f3 ~ f3 ~@3",
  O: "f3 ~ f3 ~ f3!2 ~ f3!2 ~ f3 ~ f3 ~@3", P: "f4@2 ~ eb4 d4@3 ~ b3@3 ~@5", Q: "e4@2 ~ d4 e4@3 ~ c4@3 ~@5",
  R: "d4@2 ~ c4 d4@3 ~ b3@3 ~@5", S: "gb4@2 ~ e4 d4@3 ~ b3@3 ~@5",
})).s("gm_tuba").gain(0.34)

// other · tuba · soft notes
const tuba_soft = note(`<
  ~@99
  [e4@2 ~ d4 e4@3 ~ c4@3 ~@5]
  ~
  [d4@2 ~ c4 d4@3 ~ b3@3 ~@5]
  [gb4@2 ~ e4 d4@3 ~ b3@3 ~@5]
  ~
>`).s("gm_tuba").gain(0.13)

// bass · synth bass 1 · "SynBass1"
const bass = note(`<
  ~@3 A B A B A B A B@3 A C D C D E B@2 A C D C D E B@2 F E F E B G B@2 F E F D B H ~@4 B@2 A C D C D E B@2 A C D C D E
  B@2 F E F E B G B@2 F E F D B H ~@8 I J K L M L I N O J K P ~@5
>`.pickRestart({
  A: "g1@2 g2 ~ g1@2 g2 ~ g1 g2 ~ g2 g1@2 g2 ~", B: "g1@2 g2 ~ g1@2 g2 ~@2 g2 ~ g2 g1@2 g2 ~, ~@4 g1 ~@3",
  C: "bb1@2 bb2 ~ bb1@2 bb2 ~@2 bb2 ~ bb2 bb1@2 bb2 ~, ~@4 bb1 ~@3",
  D: "c2@2 c3 ~ c2@2 c3 ~@2 c3 ~ c3 c2@2 c3 ~, ~@4 c2 ~@3", E: "d2@2 d3 ~ d2@2 d3 ~@2 d3 ~ d3 d2@2 d3 ~, ~@4 d2 ~@3",
  F: "a1@2 a2 ~ a1@2 a2 ~@2 a2 ~ a2 a1@2 a2 ~, ~@4 a1 ~@3", G: "g1@2 g2 ~ g1@2 g2 ~ c2@2 c3 ~ c2@2 c3 ~",
  H: "g1@2 g2 ~ g1@2 g2 ~ d2@2 d3 ~ d2@2 d3 ~", I: "d2@2 d3 ~ g1@2 g2 ~ g1@2 g2 ~@2 g2 ~ g2, ~@6 g1 ~",
  J: "g1@2 g2 ~ g1@2 g2 ~ g1@2 g2 ~@2 g2 ~ g2, ~@6 g1 ~", K: "g1@2 g2 ~ a1@2 a2 ~ a1@2 a2 ~@2 a2 ~ a2, ~@6 a1 ~",
  L: "a1@2 a2 ~ d2@2 d3 ~ d2@2 d3 ~@2 d3 ~ d3, ~@6 d2 ~", M: "d2@2 d3 ~ a1@2 a2 ~ a1@2 a2 ~@2 a2 ~ a2, ~@6 a1 ~",
  N: "g1@2 g2 ~ g1@2 g2 ~ g1@2 g2 ~ c2@2 c3 ~", O: "c2@2 c3 ~ g1@2 g2 ~ g1@2 g2 ~@2 g2 ~ g2, ~@6 g1 ~",
  P: "a1@2 a2 ~ d2@2 d3 ~ d2@2 d3 ~@5",
})).s("gm_synth_bass_1").gain(0.4)

// bass · synth bass 1 · "SynBass1" · soft notes
const bass_soft = note(`<
  ~@98
  [~@13 d3 ~ d3, ~@6 d2 ~]
  [d2@2 d3 ~ a1@2 a2 ~ a1@2 a2 ~@2 a2 ~ a2, ~@6 a1 ~]
  [a1@2 a2 ~ c2@2 c3 ~ c2@2 c3 ~@2 c3 ~ c3, ~@6 c2 ~]
  [c2@2 c3 ~ g1@2 g2 ~ g1@2 g2 ~@2 g2 ~ g2, ~@6 g1 ~]
  [g1@2 g2 ~ g1@2 g2 ~ g1@2 g2 ~ d2@2 d3 ~]
  [d2@2 d3 ~@13]
>`).s("gm_synth_bass_1").gain(0.2)

// other · brass section · "BrassSect"
const brass_section = note("<~@2 A B C D E F@2 G H ~@93>".pickRestart({
  A: "~@14 g4 a4", B: "bb4 ~ d5 ~ c5 ~ d5 ~ a4 ~ d5 ~ g4 ~ d5 ~", C: "[bb3,f4]@8 ~@6 g4 a4",
  D: "bb4 ~ d5 ~ c5 ~ d5 ~ bb4 ~ d5 ~ a4 ~ d5 ~", E: "g4@5 ~@3 gb4@3 ~@3 g4 a4", F: "bb4@3 ~ a4 ~ c5@4 ~@4 g4 a4",
  G: "bb4@3 ~ a4 ~ c5@3 ~ bb4 ~ d5@3 ~", H: "~@4 d5 eb5 d5 ~@5 d5 eb5 d5 ~",
})).s("gm_brass_section").gain(0.33)

// chords · string ensemble 1 · "Strings1"
const string_ensemble_1_2 = note(`<
  ~@2 A B C D E F@2 G H I J@2 K L M L N I O@2 K L K P N Q R S T S T R U Q@2 S T S V R W ~@4 I J@2 K L M L N I O@2 K L K
  P N Q R S T S T R U Q@2 S T S V R W ~@8 X@8 Y@5 ~@4
>`.pickRestart({
  A: "~@14 g4 a4", B: "bb4 ~ d5 ~ c5 ~ d5 ~ a4 ~ d5 ~ g4 ~ d5 ~", C: "[g3,bb3,d4,f4]@8 ~@6 g4 a4",
  D: "bb4 ~ d5 ~ c5 ~ d5 ~ bb4 ~ d5 ~ a4 ~ d5 ~", E: "g4@5 ~@3 gb4@3 ~@3 g4 a4", F: "bb4@3 ~ a4 ~ c5@4 ~@4 g4 a4",
  G: "bb4@3 ~ a4 ~ c5@3 ~ bb4 ~ d5@3 ~", H: "~@4 d5 eb5 d5 ~@5 d5 eb5 d5 ~", I: "[g2,bb3,d4,g4]", J: "[g2,bb3,g4,d5]/2",
  K: "[bb2,f3,d4,bb4]", L: "[c3,eb4,g4,c5]", M: "[bb2,d4,f4,bb4]", N: "[d3,gb4,a4,d5]", O: "[g2,bb3,d4,g4]/2",
  P: "[c3,bb3,eb4,c5]", Q: "[g2,b3,d4,g4]", R: "[g2,b3,g4,d5]", S: "[a2,c4,e4,a4]", T: "[d3,c4,gb4,d5]",
  U: "[g2,b3,g4,d5] [c3,g3,e4,c5]", V: "[c3,e4,g4,c5]", W: "[g2,b3,d4,g4] [d3,c4,gb4,d5]",
  X: "[~ [g2,b3,d4,g4]@4 [g2,b3,g4,d5]@4 [a2,c4,e4,a4]@4 [d3,c4,gb4,d5]@4 [a2,c4,e4,a4]@4 [d3,c4,gb4,d5]@4 [g2,b3,g4,d5]@4 [g2,b3,g4,d5]@2 [c3,g3,e4,c5]]/8", // G Am D7 Am D7 G C
  Y: "[~ [g2,b3,d4,g4]@4 [g2,b3,d4,g4]@4 [a2,c4,e4,a4]@4 [d3,c4,gb4,d5]@4 ~@3]/5", // G Am D7
})).s("gm_string_ensemble_1").gain(0.24).pan(0.7)

// chords · string ensemble 1 · "Strings1" · soft notes
const string_ensemble_1_soft_2 = note("<~@99 A@5>".pickRestart({
  A: "[~ [a2,c4,e4,a4]@4 [c3,e4,g4,c5]@4 [g2,b3,g4,d5]@4 [g2,b3,d4,g4]@2 [d3,c4,gb4,d5]@2 ~@3]/5", // Am C G D7
})).s("gm_string_ensemble_1").gain(0.1).pan(0.7)

// drums · kick
const kick = s("bd").struct("<[~@14 x!2] [x!4]!101 x ~>").gain(0.52).pan(0.7)

// drums · snare
const snare = s("sd").struct(`<
  ~ A B@2 C D E B F B C D E B F B C D E B F B C D E B F B C D E B F B C D E B F B C D E B F B C D E B F B C D E B F B C
  D E B F B C D E B F B C D E B F B C D E B F B C B F B C G H I@2 J H G H I@2 J H G H I K ~
>`.pickRestart({
  A: "~ x ~ x", B: "~@2 x ~@3 x!2", C: "~@4 x ~@3 x ~@3 x ~ x!2", D: "~@4 x ~@7 x ~ x!2", E: "~@4 x ~@7 x ~@2 x",
  F: "~@4 x ~@3 x ~@3 x!2 ~@2", G: "x!2 ~@6 x ~@7", H: "x!2 ~@2 x ~ x ~", I: "x ~ x!2 ~@4 x ~@7",
  J: "x ~@2 x ~@4 x ~@7", K: "x ~ x!2 ~@12",
})).gain(0.46).pan(0.7)

// drums · clap
const clap = s("cp").struct("<~ A B ~@40 A B A B ~@32 A B A B A B A B ~@17>".pickRestart({
  A: "x!3 ~ x!3 ~", B: "x ~ x ~ x!2 ~ x!2 ~ x ~ x ~@3",
})).gain(0.58).pan(0.7)

// drums · low tom
const low_tom = s("lt").struct("<[~@14 x!2] [x!4]!101 x ~>").gain(0.52).pan(0.7)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A@2 B C@2 D E F B C@2 D E F B C@2 D E F B C@2 D E F B C@2 D E F B C@2 D E F B C@2 D E F B C@2 D E F B C@2 D E F B
  C@2 D E F B C@2 D E F B C@2 D E F B C@2 D E F B C E F B C F D B@2 F G F D B@2 F G F D B H ~
>`.pickRestart({
  A: "x!16", B: "x ~ x!6", C: "x!7 ~", D: "x!8", E: "x ~ x!5 ~", F: "x!3 ~ x!4", G: "x ~ x!3 ~ x!2", H: "x",
})).gain(0.35).pan(0.7)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~ A ~ B A@2 ~ C D B A@2 ~ C D B A@2 ~ C D B A@2 ~ C D B A@2 ~ C D B A@2 ~ C D B A@2 ~ C D B A@2 ~ C D B A@2 ~ C D B
  A@2 ~ C D B A@2 ~ C D B A@2 ~ C D B A@2 ~ C D B A C D B A D ~ B@2 D E D ~ B@2 D E D ~ B@2 ~
>`.pickRestart({
  A: "~@7 x", B: "~ x ~@6", C: "~ x ~@5 x", D: "~@3 x ~@4", E: "~ x ~@3 x ~@2",
})).gain(0.35).pan(0.7)

// drums · congas
const congas = s("conga:13").struct(`<
  ~ A@2 B A B@5 A B@5 A B@5 A B@5 A B@5 A B@5 A B@5 A B@5 A B@5 A B@5 A B@5 A B@5 A B@5 A B@3 A B@2 C B@5 C B@5 C D ~
>`.pickRestart({
  A: "x ~@3 x ~@3 x ~@3 x ~ x!2", B: "x!4", C: "x ~ x!3 ~@3 x ~@3 x ~@3", D: "x",
})).gain(1.48).pan(0.7)

// drums · agogo bells
const agogo_bells = s("agogo:2").struct(`<
  ~ A@2 B A B@5 A B@5 A B@5 A B@5 A B@5 A B@5 A B@5 A B@5 A B@5 A B@5 A B@5 A B@5 A B@5 A B@3 A B@2 C B@5 C B@5 C D ~
>`.pickRestart({
  A: "x ~@3 x ~@3 x ~@3 x ~ x!2", B: "x!4", C: "x ~ x!3 ~@3 x ~@3 x ~@3", D: "x",
})).gain(2.95).pan(0.7)

stack(
  rock_organ, rock_organ_soft, string_ensemble_1, string_ensemble_1_soft, tuba, tuba_soft, bass, bass_soft,
  brass_section, string_ensemble_1_2, string_ensemble_1_soft_2, kick, snare, clap, low_tom, hihat, open_hat, congas,
  agogo_bells
)

More by Village People