Strudelify

Blue Star 'The Melodic Theme'

The Ventures

KeyE majorTempo102 bpm
0:00/0:00
// Blue Star 'The Melodic Theme' — The Ventures
// 102 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 61 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 28, guitar program 25.
setcpm(102/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 · drawbar organ
const drawbar_organ = note(`<
  ~@5 A B C D A E F G H A I@2 J B K D L E F G H M@2 H N O P A Q R S A T@2 O U A V W X Y Z AA AB AC@2 B AD@2 AE AF AE AF
  AE AG ~
>`.pickRestart({
  A: "a6", B: "g#6", C: "f#6@8 g#6@4 ~ a6@3", D: "g#6@2 a6 b6", E: "g#6@6 a6 g#6", F: "f#6@3 f6", G: "f#6@7 f6",
  H: "f#6", I: "g#6/2", J: "a6@12 b6@2 [a6,b6] a6", K: "f#6@2 g#6 a6", L: "a6@6 b6 a6", M: "[a6@14 g#6 g6]/2",
  N: "a#6@6 a6 g#6", O: "g6", P: "a#6@8 c7@4 a#6 c7 a#6@2", Q: "g6@2 a6 a#6", R: "a6@2 a#6 c7", S: "a#6@6 c7 a#6",
  T: "g6@3 f#6", U: "a#6", V: "a#6@2 a#6!3 a#6@3", W: "b6@12 c#7@2 [b6,c#7] ~", X: "a#6@11 ~ a#6@2 a6@2",
  Y: "g#6@2 a#6 b6", Z: "a#6@2 b6 c#7", AA: "b6@6 c#7 b6", AB: "a#6@7 a6", AC: "g#6@7 g6",
  AD: "[b6@25 b6@3 a#6@2 a6@2]/2", AE: "g#6@6 a6 a#6", AF: "b6@6 a#6 a6", AG: "b6",
})).s("gm_drawbar_organ").gain(0.17)

// other · electric guitar clean
const electric_guitar_clean = note("<A B C B D ~@21 E F G H I ~@21 J K L M N M O P ~>".pickRestart({
  A: "~@10 e2 ~ f#2 ~ g#2 ~", B: "a2@8 ~@2 a2@2 g#2@2 g2 ~", C: "f#2@4 ~ f#2 g2 g#2, e2 ~@7", D: "f#2 ~",
  E: "~@10 f#2@2 ~ g2 g#2@2", F: "a2@4 ~ a2 g#2 g2", G: "f#2@7 ~@3 g2@2 g#2@2 a2@2", H: "a#2@8 ~@2 a#2@2 a2@2 g#2 ~",
  I: "g2 ~", J: "~@5 g#2 a2 a#2", K: "b2@8 ~@2 b2@2 a#2@2 a2 ~", L: "g#2@8 ~@2 g#2@2 a2@2 a#2 ~",
  M: "b2@8 ~@2 b2@2 a#2 ~ a2 ~", N: "g#2@4 ~ g#2 a2 a#2, e2 ~@15", O: "g#2@4 ~ g#2 a2 a#2", P: "b2",
})).s("gm_electric_guitar_clean").gain(0.4)

// chords · electric guitar muted
const electric_guitar_muted = note(`<
  A B C B C B D E F B D E G E H I J B D E I B D E G E K B C L M L B N O L B N P N Q R G H L S G H L S D S T H U H U H U
  V ~
>`.pickRestart({
  A: "~@10 e2@2 f#2@2 g#2 ~", B: "[a3,c#4,e4]@2 [a3,c#4,e4]!4 [a3,c#4,e4]@2",
  C: "[a3,c#4,f#4]@2 [a3,c#4,f#4]!4 [a3,c#4,f#4]@2", D: "[g#3,c4,d#4]@2 [g#3,c4,d#4]!4 [g#3,c4,d#4]@2",
  E: "[f#3,b3,d4]@2 [f#3,b3,d4]!4 [f#3,b3,d4]@2", F: "[g#3,b3,e4]@2 [g#3,b3,e4]!2 [g#3,b3,d4]!2 [g#3,b3,d4]@2",
  G: "[a#3,c#4,f#4]@2 [a#3,c#4,f#4]!4 [a#3,c#4,f#4]@2", H: "[f#3,b3,d#4]@2 [f#3,b3,d#4]!4 [f#3,b3,d#4]@2",
  I: "[g#3,b3,e4]@2 [g#3,b3,e4]!4 [g#3,b3,e4]@2", J: "[g#3,b3,d4]@2 [g#3,b3,d4]!4 [g#3,b3,d4]@2",
  K: "[a3,d4,f4]@2 [a3,d4,f4]!4 [a3,d4,f4]@2", L: "[a#3,d4,f4]@2 [a#3,d4,f4]!4 [a#3,d4,f4]@2",
  M: "[g3,a#3,d4]@2 [g3,a#3,d4]!4 [g3,a#3,d4]@2", N: "[g3,c4,d#4]@2 [g3,c4,d#4]!4 [g3,c4,d#4]@2",
  O: "[a3,c4,f4]@2 [a3,c4,f4]!2 [a3,c4,d#4]!2 [a3,c4,d#4]@2", P: "[g3,b3,d4]@2 [g3,b3,d4]!4 [g3,b3,d4]@2",
  Q: "[g3,c4,e4]@2 [g3,c4,e4]!4 [g3,c4,e4]@2", R: "[a3,c4,f4]@2 [a3,c4,f4]!4 [a3,c4,f4]@2",
  S: "[g#3,c#4,e4]@2 [g#3,c#4,e4]!4 [g#3,c#4,e4]@2", T: "[g3,b3,e4]@2 [g3,b3,e4]!4 [g3,b3,e4]@2",
  U: "[g#3,b3,d#4]@2 [g#3,b3,d#4]!4 [g#3,b3,d#4]@2", V: "[f#3,b3,d#4]",
})).s("gm_electric_guitar_muted").gain(0.2)

// chords · clavinet
const clavinet = note("<~@26 A B C D E ~@21 F G H I H I J@2 ~>".pickRestart({
  A: "~@7 e4", B: "~@4 a4@7 ~@5, e4 ~, ~ c#5@4 ~@3", C: "~ f#4@2 ~, c#4 ~, ~ a4@4 ~@3",
  D: "~ a#4@2 ~, f4 ~, ~ d5@4 ~@3", E: "~ g4@2 ~, d4 ~, ~ a#4@4 ~@3", F: "~@13 f#4@2 ~",
  G: "~@4 b4@7 ~@3 d#4@2, f#4 ~@3, ~ d#5@4 ~@3", H: "~ g#4@2 ~, d#4 ~, ~ b4@4 ~@3", I: "~ b4@2 ~, f#4 ~, ~ d#5@4 ~@3",
  J: "[~ g#4@2 ~ [b4,d#5]@4, d#4@8 ~@7 f#4@17, ~ b4@5 ~@10]/2", // B
})).s("gm_clavinet").gain(0.45)

// chords · clavinet · soft notes
const clavinet_soft = note(`<
  ~
  [~@4 a4@7 ~@5, e4 ~, ~ c#5@4 ~@3]
  [~ f#4@2 ~, c#4 ~, ~ a4@4 ~@3]
  [~ a4@2 ~, e4 ~, ~ c#5@4 ~@3]
  [~ f#4@2 ~, c#4 ~, ~ a4@4 ~@3]
  ~@56
>`).s("gm_clavinet").gain(0.25)

// other · rock organ
const rock_organ = note(`<
  ~@5 A B C D A B E@2 F@2 G@2 A B C D A B E@2 C H@2 C I J K A L A K A M@2 J K A K N K B C N K O@2 B P Q R Q R Q R N ~
>`.pickRestart({
  A: "a5", B: "g#5", C: "f#5", D: "e5", E: "f#5@7 f5", F: "f#5/2", G: "e5/2", H: "[a5@14 g#5 g5]/2", I: "a#5@6 a5 g#5",
  J: "g5", K: "a#5", L: "g5 a#5", M: "g5@7 f#5", N: "b5", O: "g#5@7 g5", P: "b5@15 a#5", Q: "b5@6 a#5 a5",
  R: "g#5@6 a5 a#5",
})).s("gm_rock_organ").gain(0.17)

// other · rock organ
const rock_organ_2 = note(`<
  ~@5 A B C@2 A B D E F@4 A B G@3 B D E D H I@2 J K H A L@2 M A B D B N O P Q H I@2 R H A B A S T@2 U V U V Q ~
>`.pickRestart({
  A: "c#6", B: "c6", C: "b5/2", D: "b5", E: "a#5", F: "b5/4", G: "[b5@2 c#6]/3", H: "d6", I: "c#6/2", J: "d6@15 ~",
  K: "d6, c#6 ~@15", L: "c6/2", M: "d6@6 d#6 d6", N: "g5", O: "a5",
  P: "c#6 ~ c#6 ~ c#6 ~ c#6 ~ c#6 ~ c#6 ~ c#6 ~ c#6 ~", Q: "d#6", R: "d#6@3 d#6", S: "e6", T: "d#6/2",
  U: "d#6, d6 ~@15", V: "d#6@15 ~, d6 ~@15",
})).s("gm_rock_organ").gain(0.17)

// other · electric guitar clean
const electric_guitar_clean_2 = note("<~@16 A B@2 C D E F G H I J ~@34>".pickRestart({
  A: "~@7 e2", B: "[c#3@8 ~@2 b2@2 ~@2 g#2 ~ f#2@8 ~@2 g#2@2 a2@2 c#3@2, ~@3 a2@2 ~@3]/2",
  C: "b2@5 ~ c#3@2 d3@4 f#3 d3 f#3 ~", D: "e3@12 ~@2 e3 ~", E: "a3@8 ~@2 g#3@2 ~ f#3@3", F: "g#3@8 ~@2 f#3@3 ~ e3@2",
  G: "f#3@8 e3@5 ~ d3@2", H: "e3@3 f#3@3 e3@2 d3@4 c#3@4", I: "b2@5 b2@2 ~ b2@4 b2@2 ~@2", J: "d3 ~",
})).s("gm_electric_guitar_clean").gain(0.5)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~ A@2 ~@3 B C D E F C ~@3 G@2 H ~ I J K B L I M N@2 ~ O P Q E R S T E U V ~ W X Y Z AA AB AC AD ~ AE AF ~ AG@2 AH ~ AI
  AJ AK ~@2
>`.pickRestart({
  A: "[~@15 f#3@8 ~@9]/2", B: "~@3 g#4 ~@12", C: "~@3 [d4,f#4] ~@12", D: "~@7 [b3,e4] f#4 [b3,f#4] f#4 [b3,e4] e4@3 a4",
  E: "~@3 [e4,a4] ~@12", F: "~@3 [d#4,g#4] ~@12", G: "[~ e4@5 ~@8 e3@8 ~@2 e4@4 e4@3 a4]/2", H: "~@5 e4 ~@10",
  I: "~@3 f#4 ~@12", J: "~@3 e4@3 ~@9 a4, ~@3 b3 ~@12", K: "b3 ~@2 [e4,a4] ~@11 c4", L: "~@3 f#4 ~@11 a#3",
  M: "~ d4 ~ f#4 ~@12, ~ d4 ~@6", N: "[~@3 [f4,a4] ~@9 a4 ~ a3@8 ~@4 a4 ~@4]/2", O: "~ f4@2 a#4 ~@12",
  P: "~ d4@2 [d4,g4] ~@12", Q: "~@2 f4 [f4,a#4] ~@12", R: "~ d#4@2 [d#4,g4] ~@12",
  S: "~@2 f4 ~@5 [f4,g4] [c4,g4] g4 [c4,f4] f4 ~@3", T: "~@3 [f4,a#4] ~@11 c#4", U: "~@3 [d#4,g4] ~@12",
  V: "~@14 g3 c4", W: "~@3 g4 ~@10 g3 a3", X: "~ c4@2 [c4,f4] ~@12", Y: "~@2 [a#3,c#4,f#4] c#4 ~@12",
  Z: "~@3 d#4 ~@10 g3 d4, ~@2 b4@2 ~@9 a2@2 ~", AA: "~ a#4@5 ~@10", AB: "~@3 g#4 ~@11 a#3",
  AC: "~@2 f#4@3 c#4 ~ c#4 ~ [c#4,f#4] ~ [c#4,f#4] ~@4", AD: "~@3 [f#4,b4] ~@10 g3 d4",
  AE: "~@3 [e4,g#4] ~@11 c4, ~@7 [g3,b3]", AF: "~@7 g3", AG: "[~@14 g3 d#4 ~@2 f#4@4 ~@9 d#4, ~@15 b3@8 ~@7 g3@2]/2",
  AH: "~@3 [d#4,g#4] ~ [b3,d#4] ~@9 b4", AI: "g3 g#4@2 [d#4,g#4] ~@12", AJ: "~ b4@2 [f#4,b4] ~@12",
  AK: "g3 d#4@2 d#4 ~@3 d#4@3 ~@6",
})).s("gm_acoustic_guitar_steel").gain(0.25)

// bass · acoustic bass
const bass = note(`<
  ~ A B C B C D E F C D E B E@2 F@2 C D E F C D E B E G C B H I H C J K H C J I J@2 K B E H L B E H L D L F E D E D E D
  M ~
>`.pickRestart({
  A: "~@6 a1@2 e1@5 ~ e1@2", B: "f#1@5 ~ f#1@2 c#2@5 ~ c#2@2", C: "a1@5 ~ a1@2 e1@5 ~ e1@2",
  D: "g#1@5 ~ g#1@2 d#2@5 ~ d#2@2", E: "b1@5 ~ b1@2 f#1@5 ~ f#1@2", F: "e1@5 ~ e1@2 b1@5 ~ b1@2",
  G: "d2@5 ~ d2@2 a1@5 ~ a1@2", H: "a#1@5 ~ a#1@2 f1@5 ~ f1@2", I: "g1@5 ~ g1@2 d2@5 ~ d2@2",
  J: "c2@5 ~ c2@2 g1@5 ~ g1@2", K: "f1@5 ~ f1@2 c2@5 ~ c2@2", L: "c#2@5 ~ c#2@2 g#1@5 ~ g#1@2", M: "b1",
})).s("gm_acoustic_bass").gain(0.4)

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

// drums · rim
const rim = s("rim").struct("<~ [~ x ~ x]!58 ~@2>").gain(0.4)

// drums · snare
const snare = s("sd").struct("<[~@7 x] ~@41 [x!8] ~@18>").gain(0.4)

// drums · low tom
const low_tom = s("lt").struct("<A ~ B ~ B ~@11 B ~@9 B C B@2 ~@12 D E ~@8 B C B@5 E ~>".pickRestart({
  A: "~@6 x!3 ~ x ~@5", B: "~@10 x!3 ~ x ~", C: "x ~@9 x!3 ~ x ~", D: "~@6 x!2", E: "x",
})).gain(0.35)

// drums · hihat
const hihat = s("hh").struct("<~ [x!8]!58 x ~>").gain(0.4)

// drums · mid tom
const mid_tom = s("mt").struct("<[~@3 x] ~@60>").gain(0.25)

// drums · crash
const crash = s("cr").struct("<~@5 A ~@11 A ~@9 A@5 ~@11 A ~@9 A@7 ~>".pickRestart({
  A: "x",
})).gain(0.35)

// drums · ride
const ride = s("rd").struct("<~ A@4 B A@11 B A@9 B@5 A@11 B A@9 B@6 C ~>".pickRestart({
  A: "x!8", B: "~ x!7", C: "x",
})).gain(0.35)

// drums · shaker
const shaker = s("sh").struct("<~ [x ~ x!6]!58 x ~>").gain(0.35)

stack(
  drawbar_organ, electric_guitar_clean, electric_guitar_muted, clavinet, clavinet_soft, rock_organ, rock_organ_2,
  electric_guitar_clean_2, acoustic_guitar_steel, bass, kick, rim, snare, low_tom, hihat, mid_tom, crash, ride, shaker
)

More by The Ventures