Strudelify

Band of Gold

Mel Carter

KeyF majorTempo120 bpm
0:00/0:00
// Band of Gold — Mel Carter
// 120 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 6 pad poly (copy of ch 5 lead 2 sawtooth, 0.073 beats late)
// note: Full arrangement: all 70 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 24, guitar program 31.
setcpm(120/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.

// bass · electric bass pick · "Band Of G"
const bass = note(`<
  ~ A@4 B@2 C@2 D@2 E F E G B@2 C@2 D@2 E F H G B@2 C@2 D@2 E F E G B@2 C@2 D@2 A@4 B@2 C@2 D@2 E F H G B@2 C@2 D@2 E F
  E G A@4 I
>`.pickRestart({
  A: "f1 f2 eb2 c2 ~ bb1 ~ gb1", B: "[f2 e2 d2 c2@2 d2 c2 f2@2 e2@2 c2@3 d2 c2]/2",
  C: "[e2@2 d2@2 c2 ~ c2@4 d2@2 c2@2 e2@4 d2@2 c2 ~ c2@4 d2@2 e2@2 g2@2]/2",
  D: "[bb2@2 a2@2 g2@2 f2@4 g2@2 f2@2 bb2@4 a2@2 g2@2 f2@3 ~ f2@2 g2@2 f2@2]/2", E: "a2 ~ a2 ~ a2 g2 f2 bb2",
  F: "~ bb2 ~ bb2@2 a2 g2 f2", G: "~ bb2 ~ bb2 a2 c3 bb2 a2", H: "a2@2 ~@2 a2@2 ~@2 a2@2 g2@2 f2@2 bb2 ~", I: "f1 ~@7",
})).s("gm_electric_bass_pick").gain(0.32)

// chords · string ensemble 2
const string_ensemble_2 = note(`<
  ~@3 A B C@4 D@2 E@4 F@4 D@2 G@2 H@2 I@2 J@4 G@2 H@2 K@2 L@2 M@2 ~@3 N C@4 D@2 G@2 O@2 P@2 Q@4 G@2 R@2 ~ S T U V
>`.pickRestart({
  A: "~@7 gb3", B: "f3@2 f4@2 eb4@2 c4@2 f5 ~ bb3 ~ f5 ~ gb3@2, f5 ~@3 f5 ~@11",
  C: "[[a3,f4]@32 [g3,e4]@31 ~, c4@63 ~]/4", D: "[[bb3,d4,f4,a4]@31 ~]/2",
  E: "[[c5,c6]@2 [a4,a5]@5 bb5@2 a5@2 f5@3 g5 f5 [c5,c6]@2 [a4,a5]@5 [bb4,bb5]@2 [a4,a5]@2 f5@2 g5@3, f4@63 ~, c4@13 ~ [d4,bb4]@17 ~ c4@14 d4@17 ~]/4", // C A C A Bb A Gm
  F: "[[a3,f4]@31 ~ [g3,e4]@31 ~, c4@63 ~]/4", // Dm C
  G: "[[c4,f4,c5] ~ [c4,f4,a4,a5]@5 bb5@2 a5@2 f5@3 g5 f5, c6@4 ~@10 [d4,f4,bb4]@17 ~]/2", // F5 F Bb
  H: "[[c4,f4,c5] ~ [c4,f4,a4,a5]@5 [bb4,bb5]@2 [a4,a5]@2 f5@2 g5@3, c6@4 ~@10 [d4,f4]@17 ~]/2", // F5 F Bb A Dm
  I: "[a4@2 g4@2 f4 ~ f4@7 ~ f4@4 e4@4 f4@4 e4@2 c4@2 d4@2, a3, c4@7 ~, f4 ~@7]/2",
  J: "[e4@2 e4@2 c4@10 e4@4 d4@4 c4@4 d4@2 f4@2 ~@4 a4@2 f4@10 g4 a4@3 g4@4 f4@6 g4@2 f4 ~, g3@15 g4@2 ~@15, ~@16 [bb3,d4]@15 ~]/4", // Bb
  K: "[a4@2 g4@2 f4 ~ f4@7 ~ f4@4 e4@4 f4@4 e4@2 c4@2 d4@2, a3@31 ~, c4@27 ~@5]/2",
  L: "[e4 c4@6 e4@2 d4@2 c4@2 d4 f4 g4, g3]/2", M: "[a4 f4@6 a4@2 g4@2 f4@2 g4@3, [bb3,d4], ~@14 g4 ~@17]/2",
  N: "f3@2 f4@2 eb4@2 c4@2 f5 ~ bb3@2 f5 ~ gb3@2, f5 ~@3 f5 ~@11",
  O: "[[f4,c6]@2 [c4,f4,a4,a5]@5 [bb4,bb5]@2 [a4,a5]@2 f5@2 g5@3, [c4,c5]@2 ~@12 [d4,f4]@17 ~]/2", // F5 F Bb A C Dm
  P: "[a4@2 g4@2 f4 ~ f4@7 ~ f4@4 e4@4 f4@4 e4@2 c4@2 d4@2, a3, c4@27 ~@5]/2",
  Q: "[e4@2 c4@12 e4@4 d4@4 c4@4 d4@2 f4@2 ~@4 a4@2 f4@10 a4@4 g4@4 f4@6 g4@3 ~, g3@32 [bb3,d4]@31 ~, ~@30 g4@4 ~@12 g4 ~@17, ~@8 f4 ~@7]/4", // Bb
  R: "[[c4,f4,c5] ~ [c4,f4,a4,a5]@5 [bb4,bb5]@2 [a4,a5]@2 f5@2 g5@3, c6@2 ~@5 [d4,f4]@9]/2", S: "~@7 gb4",
  T: "f4 f5 eb5 c5 ~ bb4 ~ gb4", U: "[f3,f4]@2 f4@2 eb4@2 [c4,c5]@2 f5 ~ [bb3,bb4]@2 f5 ~ [gb3,gb4]@2, f5 ~@3 f5 ~@11",
  V: "[c4,f4] ~@7", // F5
})).s("gm_string_ensemble_2").gain(0.18).pan(0.6)

// other · lead 2 sawtooth
const lead_2_sawtooth = note("<~@35 A@2 B@4 ~@29>".pickRestart({
  A: "[a4@2 g4@2 f4 ~ f4@6 ~@2 a4@4 g4 ~ f4 ~ f4@7 ~@3]/2",
  B: "[g4@2 f4@2 e4 ~ e4@6 ~@2 g4@4 f4@2 e4 ~ e4@6 ~@2 d4@4 f4@2 d4 ~ f4@6 ~@2 a4@4 g4@4 f4@6 g4@2 f4@2]/4",
})).s("gm_lead_2_sawtooth").gain(0.4).pan(0.7)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~@5 A@2 B@2 C@2 D E F G A@2 B@2 C@2 H E I G A@2 B@2 C@2 H E I G A@2 B@2 C@2 ~@4 A@2 B@2 C@2 H E I G A@2 B@2 C@2 H E I
  G ~@5
>`.pickRestart({
  A: "[a4,c5] ~ [a4,c5] ~ [a4,c5] ~ [a4,c5] ~", B: "[g4,c5] ~ [g4,c5] ~ [g4,c5] ~ [g4,c5] ~",
  C: "[f4,bb4] ~ [f4,bb4] ~ [f4,bb4] ~ [f4,bb4] ~", D: "[f4,a4]@2 ~@2 [c4,f4,a4]@5 ~ [f4,a4]@3 ~ [f4,bb4]@2",
  E: "~@2 [f4,bb4]@2 ~@2 [f4,bb4]@4 ~@2 [f4,bb4]@3 ~", F: "[f4,a4]@2 ~@2 [c4,f4,a4]@4 ~@2 [f4,a4]@3 ~ [f4,bb4]@2",
  G: "~@2 [f4,bb4]@3 ~ [f4,bb4]@5 ~ [f4,bb4]@3 ~", H: "[f4,a4]@2 ~@2 [f4,a4]@5 ~ [f4,a4]@3 ~ [f4,bb4]@2",
  I: "[f4,a4]@2 ~@2 [f4,a4]@4 ~@2 [f4,a4]@3 ~ [f4,bb4]@2", // F Bb5
})).s("gm_electric_guitar_clean").gain(0.29).pan(0.3)

// other · electric guitar muted
const electric_guitar_muted = note(`<
  ~ A B C D E@2 F@2 G@2 H I J K E@2 F@2 G@2 H I J K E@2 F@2 G@2 H I J K E@2 F@2 G@2 A B C D E@2 F@2 G@2 H I J K E@2 F@2
  G@2 H I J K A B C D L
>`.pickRestart({
  A: "f2 f3 eb3 c3 ~ bb2 ~ gb2", B: "f2@2 f3@2 eb3@2 c3@2 ~@2 bb2@3 ~ [gb2,gb3]@2",
  C: "[f2,f3]@2 [f3,f4]@2 [eb3,eb4]@2 [c3,c4]@2 ~@2 [bb2,bb3]@3 ~ [gb2,gb3]@2", // F Eb C Bb Gb
  D: "[f2,f3] [f3,f4] [eb3,eb4] [c3,c4] ~ [bb2,bb3] ~ [gb2,gb3]", E: "f4 ~ f4 ~ f4 ~ f4 ~", F: "e4 ~ e4 ~ e4 ~ e4 ~",
  G: "d4 ~ d4 ~ d4 ~ d4 ~", H: "c4@2 ~@2 c4@5 ~ c4 ~ c4 ~ d4@2", I: "~@2 d4@2 ~@2 d4@3 ~ d4@3 ~ d4 ~",
  J: "c4@2 ~@2 c4@3 ~ c4 ~ c4 ~ c4 ~ d4@2", K: "~@2 d4@3 ~ d4@3 ~ d4 ~ d4 ~ d4 ~", L: "[f2,f3] ~@15",
})).s("gm_electric_guitar_muted").gain(0.25).pan(0.7)

// other · acoustic guitar nylon
const acoustic_guitar_nylon = note("<~@69 [c4 ~@7]>").s("gm_acoustic_guitar_nylon").gain(0.32).pan(0.3)

// drums · kick
const kick = s("bd").struct("<~ [~@5 x ~ x]!68 x>").gain(0.25)

// drums · snare
const snare = s("sd").struct("<[~@14 x!2] [x!4]!68 ~>").gain(0.32)

// drums · crash
const crash = s("cr").struct(`<
  ~@5 A ~@3 A ~ B ~ B ~ A ~@3 A ~ B ~ B ~ A ~@3 A ~ B ~ B ~ A ~@3 A ~ A ~@3 A ~@3 A ~ B ~ B ~ A ~@3 A ~ B ~ B ~ A ~ A B
  A
>`.pickRestart({
  A: "x", B: "x ~@6 x",
})).gain(0.25)

// drums · tambourine
const tambourine = s("tb").struct("<~ [x!3 ~ x ~ x ~ x ~ x ~ x!4]!68 x>").gain(0.22)

// drums · tambourine · soft notes
const tambourine_soft = s("tb").struct("<~ [~@3 x ~ x ~ x ~ x ~ x ~@4]!68 ~>").gain(0.16)

stack(
  bass, string_ensemble_2, lead_2_sawtooth, electric_guitar_clean, electric_guitar_muted, acoustic_guitar_nylon, kick,
  snare, crash, tambourine, tambourine_soft
)