Strudelify

Dreamline

Rush

KeyE minorTempo144 bpm
0:00/0:00
// Dreamline — Rush
// 144 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: ch 2 "Guitar" named as a guitar, played on electric guitar clean (its music box patch is not one); ch 3 "Bass" named as a bass, played on electric bass finger (its dulcimer patch is not one)
// note: duplicate parts dropped: ch 4 "Da Da Da" electric guitar muted (copy of ch 5 electric guitar jazz); ch 6 acoustic guitar steel (copy of ch 5 electric guitar jazz)
// note: Full arrangement: all 93 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(144/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.

// chords · tubular bells
const tubular_bells = note("<A@6 ~@27 B@3 ~@57>".pickRestart({
  A: "[[f#3,g#3,b3,c4,d#4,f#4]@95 ~]/6", B: "[f#3,g#3,b3,c4,d#4,f#4]/3",
})).s("gm_tubular_bells").gain(0.18)

// bass · electric bass finger · "Bass"
const bass = note(`<
  ~@4 A B@5 C D@2 E F G H@2 I@2 J@2 K@4 H@2 L@2 M@3 B@5 C D@2 E F G N@2 O@2 P@2 K@4 N@2 P@2 M@3 B@2 Q R S T U V W X Y Z
  AA AB AC AD AE AF B@5 C@3 D ~@5
>`.pickRestart({
  A: "~@3 e3", B: "e2!8", C: "e2!6 b2 e2", D: "b2!8", E: "c3@2 c3@2 c3@2 c3@2 c3@2 c3@2 c3@2 c3 ~", F: "g2!5 d3!2 e3",
  G: "e2!2 e3 e2 e3 e2!2 e3",
  H: "[e2!3 [d3,g3]@2 [c#3,f#3]@2 [b2,e3]@2 b2 [b2,e3]!2 b2!3 [b2,e3], ~@18 e3 ~@5 e3 ~ e3 ~ e3 ~@3]/2", // G5 F#5 E5
  I: "[[b2,e3] b2!2 [d3,g3]@2 [c#3,f#3]@2 [b2,e3]@2 [b2,e3]!2 b2!3 [b2,e3]!2, ~@2 e3 ~ e3 ~@17 e3 ~ e3 ~ e3 ~@5]/2", // E5 G5 F#5 E5
  J: "[b2!3 [d3,g3]@2 [c#3,f#3]@2 d3@2 d3!7, e3 ~ e3 ~ e3 ~@27]/2", // G5 F#5
  K: "[d3!3 f#3@2 e3@2 b2@2 b2!6 c3@4 d3@4 e2@2 e2!7]/4",
  L: "[[b2,e3] b2!2 [d3,g3]@2 [c#3,f#3]@2 d3@2 d3!7, ~@2 e3 ~ e3 ~@27]/2", // E5 G5 F#5
  M: "[d3!3 f#3@2 e3@2 b2@2 b2!6 c3@4 d3@4 e2]/3", N: "[e2!3 d3@2 c#3@2 b2@2 b2!7]/2",
  O: "[b2!3 d3@2 c#3@2 b2@2 b2!7]/2", P: "[b2!3 d3@2 c#3@2 d3@2 d3!7]/2", Q: "a2@2 a2 ~ a2 ~ a2 ~ a2@2 a2@2 a2 ~ a2 ~",
  R: "a2 ~ a2@2 a2@2 a2 ~ a2 ~ a2 ~ a2@2 a2@2", S: "g2 ~ g2 ~ g2 ~ g2@2 g2@2 g2 ~ g2 ~ g2 ~",
  T: "g2@2 g2@2 g2 ~ g2 ~ g2 ~ g2@2 g2@2 g2 ~", U: "d3 ~ d3 ~ d3@2 d3@2 d3 ~ d3 ~ d3 ~ d3@2",
  V: "d3@2 d3 ~ d3 ~ d3 ~ d3@2 d3@2 d3 ~ d3 ~", W: "c3 ~ c3@2 c3@2 c3 ~ c3 ~ c3 ~ c3@2 c3@2",
  X: "c3 ~ c3 ~ c3 ~ c3@2 c3@2 c3 ~ c3 ~ c3 ~", Y: "a2@2 a2@2 a2 ~ a2 ~ a2 ~ a2@2 a2@2 a2 ~",
  Z: "a2 ~ a2 ~ a2@2 a2@2 a2 ~ a2 ~ a2 ~ a2@2", AA: "g2@2 g2 ~ g2 ~ g2 ~ g2@2 g2@2 g2 ~ g2 ~",
  AB: "g2 ~ g2@2 g2@2 g2 ~ g2 ~ g2 ~ g2@2 g2@2", AC: "d3 ~ d3 ~ d3 ~ d3@2 d3@2 d3 ~ d3 ~ d3 ~",
  AD: "d3@2 d3@2 d3 ~ d3 ~ d3 ~ d3@2 d3@2 d3 ~", AE: "c3 ~ c3 ~ c3@2 c3@2 c3 ~ c3 ~ c3 ~ c3@2",
  AF: "c3@2 c3 ~ c3 ~ c3 ~ c3@2 c3@2 c3 ~ c3 ~",
})).s("gm_electric_bass_finger").gain(0.26)

// other · pizzicato strings · "Da Da Da"
const pizzicato_strings = note("<~@63 A@2 B@2 ~@4 A@2 B@2 ~@18>".pickRestart({
  A: "[e3,e4]/2", B: "[d3,d4]/2",
})).s("gm_pizzicato_strings").gain(0.26)

// other · cello · "Da Da Da"
const cello = note("<~@79 A@4 B@4 C@6>".pickRestart({
  A: "[d5@29 e5@5 b4@30]/4", B: "[d5@61 e5@3]/4", C: "[~@2 b4@78 e5@15 ~]/6",
})).s("gm_cello").gain(0.26)

// other · electric guitar jazz
const electric_guitar_jazz = note("<~@16 A@6 B@8 C@3 ~@11 A@6 B@8 C@3 ~@32>".pickRestart({
  A: "[~@6 g5@4 f#5@4 e5@23 ~ g5@4 f#5@4 e5@23 ~ g5@4 f#5@4 d5@18]/6",
  B: "[d5@6 f#5@4 e5@4 b4@16 c5@8 d5@8 e5@23 ~ g5@4 f#5@4 e5@23 ~ g5@4 f#5@4 d5@18]/8",
  C: "[d5@3 f#5@2 e5@2 b4@8 c5@4 d5@4 e5]/3",
})).s("gm_electric_guitar_jazz").gain(0.26)

// other · drawbar organ · B
const drawbar_organ = note("<~@43 [~@4 [b3,b4] ~@5 [b3,b4] ~@5] [[b3,b4] ~@15] ~@48>").s("gm_drawbar_organ").gain(0.4)

// chords · synth brass 2 · "Hi-Hat"
const synth_brass_2 = note(`<
  ~@3 A@13 B@2 C@4 D E@3 C@2 F@2 G H@2 A@11 I@2 C@4 J E@3 K@2 F@2 G L@3 ~ M N O N O N O N M N M N@5 P A@13
>`.pickRestart({
  A: "[d#3,a3] ~ a3 ~ [d#3,a3] ~ a3 ~ [d#3,a3] ~ a3 ~ [d#3,a3] ~ a3 ~", // D#dim
  B: "[[d#3,a3] ~ a3 ~ [d#3,a3] ~ a#3@4 a#3@4 c2 ~@5 e3 ~@5 c2 ~ e3 ~ c2 ~, ~@6 c2 ~@3 c2 ~@3 c4@18]/2", // D#dim
  C: "[c2 ~@3 e3 ~ a#3@4 c2 ~ e3 ~ c2 ~@5 e3 ~@5 c2 ~ e3 ~ c2 ~, ~@6 c2 ~@3 a#3@4 c4@18]/2",
  D: "c2 ~@3 e3!2 a#3@4 c2 ~ e3 ~ c4@2, ~@6 c2 ~@3 a#3@4 c2 ~",
  E: "[~@4 e3 ~@5 c2 ~ e3 ~ c2 ~@3 c2 ~ e3 ~ c2 ~@3 c2 ~ e3 ~ c2 ~@5 e3 ~@5 c2 ~ e3 ~ c2 ~, ~@14 a#3@7 ~ a#3@8 c4@18]/3",
  F: "[c2 ~@3 e3 ~ a#3@4 c2 ~ e3 ~ c2 ~@5 f3 ~@5 c2 ~ f3 ~ c2 ~, ~@6 c2 ~@3 a#3@4 c4@18]/2",
  G: "c2 ~@3 f3 ~ a#3@4 c2 ~ f3 ~ c4@2, ~@6 c2 ~@3 a#3@4 c2 ~",
  H: "[~@4 f3 ~@5 c2 ~ f3 ~ c2 ~@3 c2 ~ f3 ~ c2 ~@3 c2 ~ f3 ~ [c2,e3] ~, ~@14 a#3@7 ~@11]/2", // C
  I: "[[d#3,a3] ~ a3 ~ [e3,a3] e3 a#3@4 c2 ~ e3 ~ c2 ~@5 e3 ~@5 c2 ~ e3 ~ c2 ~, ~@6 c2 ~@3 a#3@4 c4@18]/2", // D#dim A5
  J: "c2 ~@3 e3 ~ a#3@4 c2 ~ e3 ~ c4@2, ~@6 c2 ~@3 a#3@4 c2 ~",
  K: "[c2 ~@3 e3!2 a#3@4 c2 ~ e3 ~ c2 ~@5 e3 ~@5 c2 ~ e3 ~ c2 ~, ~@6 c2 ~@3 a#3@4 c4@18]/2",
  L: "[~@4 f3 ~@5 c2 ~ f3 ~ c2 ~@3 c2 ~ f3 ~ c2 ~@3 c2 ~ f3 ~ c4@15 ~@3, ~@14 a#3@7 ~@9 c2 ~@17]/3",
  M: "c2 ~@3 e3 ~@5 c2 ~ e3 ~ c2 ~, c4@15 ~", N: "c2 ~@3 e3 ~@6 c2 e3 ~ c2 ~", O: "c2 ~@3 e3 ~@5 c2 ~ e3 ~ c2 ~",
  P: "[d#3,a3] ~ a3 ~ [d#3,a3] ~ a3 ~ [d#3,a3] ~ a3 ~ [d#3,a3] ~ a3 ~, c4@15 ~", // D#dim
})).s("gm_synth_brass_2").gain(0.26)

// chords · synth brass 2 · "Hi-Hat" · soft notes
const synth_brass_2_soft = note(`<
  ~@17 A B A B A C A D A B A B A C A E ~@12 A B A B A C A D A B A B A C A E ~@2 A F A F A F A F A F A F@5 ~@14
>`.pickRestart({
  A: "d#4 ~ d#4 ~ d#4 ~ d#4 ~ d#4 ~ d#4 ~ d#4 ~ d#4 ~", B: "d#4 ~ d#4 ~ d#4 ~@11", C: "d#4 ~ d#4 ~@13",
  D: "d#4 ~ d#4 ~ d#4 ~@3 d#4 ~ d#4 ~ d#4 ~@3", E: "d#4 ~ d#4 ~ d#4 ~ d#4 ~ d#4 ~ d#4 ~ d#4 ~@3",
  F: "d#4 ~ d#4 ~ d#4 ~ d#4 ~ d#4 ~ [c2,d#4] ~ d#4 ~ d#4 ~", // Cm
})).s("gm_synth_brass_2").gain(0.15)

// other · synth brass 2 · "Cres. Snare"
const synth_brass_2_2 = note("<~@61 [~@2 e3!14] [e3!16] ~@30>").s("gm_synth_brass_2").gain(0.23)

stack(
  tubular_bells, bass, pizzicato_strings, cello, electric_guitar_jazz, drawbar_organ, synth_brass_2, synth_brass_2_soft,
  synth_brass_2_2
)

More by Rush