Strudelify

Dream Mission

Trance

KeyB minorTempo142 bpm
0:00/0:00
// Dream Mission — Trance
// 142 bpm, 4/4, key B minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 142 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(142/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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 · lead 2 sawtooth
const lead_2_sawtooth = note("<~@10 A B A B A B A B ~@124>".pickRestart({
  A: "b2!16", B: "g2!8 a2!8",
})).s("gm_lead_2_sawtooth").gain(0.27).pan(0.7)

// chords · synth brass 2
const synth_brass_2 = note(`<
  ~@2 A B A B A B A B A B A B A B A B ~@33 A B A B A B A B A B A B A B A B ~@25 A B A B A B A B A B A B A B A B ~@13 A B
  A B A B A B A B A B A B A B ~@5
>`.pickRestart({
  A: "[b3,d4,f#4]", B: "[g3,b3,d4] [a3,c#4,e4]",
})).s("gm_synth_brass_2").gain(0.21).pan(0.4)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  ~@10 A B A C A B A C ~@41 A B A C A B A C ~@33 A B A C A B A C ~@17 A B A C A B A C A B A C ~@5
>`.pickRestart({
  A: "[b4,b5]", B: "[d5,d6] [c#5,c#6]", C: "[g4,g5] [a4,a5]",
})).s("gm_string_ensemble_1").gain(0.19).pan(0.3)

// chords · synth brass 1
const synth_brass_1 = note("<~@25 A ~@36 A ~@3 A ~@36 A ~@3 A ~@11 A ~@16 A ~@5>".pickRestart({
  A: "[b3,d4,g4]!2 [c#4,e4,a4]!2", // G A
})).s("gm_synth_brass_1").gain(0.31).pan(0.7)

// other · lead 2 sawtooth
const lead_2_sawtooth_2 = note("<~@42 [b3 b4 b3 f#4 b3 b4 b3 f#4]!9 ~@32 [b3 b4 b3 f#4 b3 b4 b3 f#4]!9 ~@50>")
  .s("gm_lead_2_sawtooth").gain(0.18).pan(0.7)

// other · oboe
const oboe = note(`<
  ~ A B@6 C@2 ~@3 D@5 ~@32 A B@6 C@2 ~@3 D@5 ~@24 A B@6 C@2 ~@3 D@5 ~@12 A B@6 C@2 ~@3 E@6 F@2 G@2
>`.pickRestart({
  A: "~@4 b3 ~ b3 ~ b3@2 c#4@4 d4@2", B: "[~@4 d4 ~ d4 ~ d4@2 c#4@2 b3@2 c#4@4 ~@2 b3 ~ b3 ~ b3@2 c#4@4 d4@2]/2",
  C: "[~@2 d4!2 f#4 d4!2 c#4@2 ~@7]/2",
  D: "[~@4 b3@2 b3 ~ b3@2 c#4@4 d4@5 ~ d4 ~ d4 ~ d4@2 c#4@2 b3@2 c#4@4 ~@2 b3 ~ b3 ~ b3@2 c#4@4 d4@4 c#4@2 b3@15 ~@13]/5",
  E: "[~@4 b3@2 b3 ~ b3@2 c#4@4 d4@5 ~ d4 ~ d4 ~ d4@2 c#4@2 b3@2 c#4@4 ~@2 b3 ~ b3 ~ b3@2 c#4@4 d4@4 c#4@2 b3@15 ~ f#4 ~ f#4 ~ e4@3 ~ e4 ~ e4@4 d4@11 ~@3]/6",
  F: "[~@4 f#4 ~ f#4 ~ e4@3 ~ e4 ~ e4@4 d4@8 ~@6]/2", G: "[~@4 f#4 ~ f#4@2 e4@3 ~ e4 ~ e4@4 d4@13 ~]/2",
})).s("gm_oboe").gain(0.23).pan(0.6)

// bass · synth bass 1
const bass = note(`<
  ~@26 A B A B A B A B A B A B A B A B A B A B A B A B ~@25 A@2 C B A@2 C B A B A B A B A B ~@21 A@2 C B A@2 C B ~@22
>`.pickRestart({
  A: "b1 ~ b2!2 b1 ~ b2!2 b1 ~ b2!2 b1 ~ b2!2", B: "g1 ~ g2!2 g1 ~ g2!2 a1 ~ a2!2 a1 ~ a2!2",
  C: "g1 ~ g2!2 g1 ~ g2!2 g1 ~ g2!2 g1 ~ g2!2",
})).s("gm_synth_bass_1").gain(0.42)

// other · synth brass 1
const synth_brass_1_2 = note(`<
  ~@18 A B A B A B A B A B A B A B A B ~@17 A B A B A B A B A B A B A B A B A B A B A B A B ~@17 A B A B A B A B A B A B
  A B A B C@2 D E C@2 D E C@2 D ~@2 A B A B A B A B A B A B A B A B A@4 F
>`.pickRestart({
  A: "b3 ~ b3 ~ f#4 ~ f#4 b3 ~ b3 f#4 ~ e4 ~ d4 ~", B: "g3 ~ g3 ~ d4 ~ d4 a3 ~ a3 e4 ~ d4 ~ c#4 ~",
  C: "[d4,f#4,b4] ~@2 [d4,f#4,b4] ~@4 [d4,f#4,b4] ~ [d4,f#4,b4] ~@5", // Bm
  D: "[b3,d4,g4] ~@2 [b3,d4,g4] ~@4 [b3,d4,g4] ~ [b3,d4,g4] ~@5", // G
  E: "[b3,d4,g4] ~@2 [b3,d4,g4] ~@4 [c#4,e4,a4] ~ [c#4,e4,a4] ~@5", F: "b3 ~ b3 ~ b3 ~ b3 ~ b3 ~ b3 ~@5",
})).s("gm_synth_brass_1").gain(0.39).pan(0.4)

// chords · synth strings 1
const synth_strings_1 = note(`<
  ~@2 A B A B A B A B C D C D C D C D E F E F G H G H I J I J I J I J I J I J I J I J I J I J I J I J ~ I J I J I J I J
  I J I J I J I J E F E F G H G H K@2 L@2 K@2 L@2 I J I J I J I J ~ I J I J I J I J I J I J I J I J M@2 N@2 ~@9 I J I J
  I J I J I J I J I J I J O@5
>`.pickRestart({
  A: "[b2,b3,d4,f#4,b4]", B: "[g2,g3,b3,d4,g4] [a2,a3,c#4,e4,a4]", C: "[b2,b3,d4,f#4]",
  D: "[g2,g3,b3,d4] [a2,a3,c#4,e4]", E: "[b1,b2]", F: "[g1,g2] [a1,a2]", G: "b2", H: "g2 a2", I: "[b3,d4,f#4]",
  J: "[g3,b3,d4] [a3,c#4,e4]", K: "[b3,d4,f#4]/2", L: "[[g3,b3,d4]@3 [a3,c#4,e4]]/2", M: "b2/2", N: "[g2@3 a2]/2",
  O: "[[b1,b2]@33 ~@7]/5", // B
})).s("gm_synth_strings_1").gain(0.14)

// other · synth brass 1
const synth_brass_1_3 = note(`<
  ~@18 A B A B A B A B A B A B A B A B ~@17 A B A B A B A B A B A B A B A B A B A B A B A B ~@17 A B A B A B A B A B A B
  A B A B ~@13 A B A B A B A B A B A B A B A B A@4 ~
>`.pickRestart({
  A: "~@8 f#4@3 b3@2 ~@3", B: "~@8 d4@3 a3@2 ~@3",
})).s("gm_synth_brass_1").gain(0.19).pan(0.7)

// other · orchestra hit
const orchestra_hit = note("<~@25 A ~@36 A ~@3 A ~@36 A ~@3 A ~@11 A ~@16 A ~@5>".pickRestart({
  A: "g4 ~@3 g4 ~@3 a4 ~@3 a4 ~@3",
})).s("gm_orchestra_hit").gain(0.38).pan(0.7)

// bass · electric bass finger
const bass_2 = note(`<
  ~@2 A B A B A B A B A B A B A B A B ~@4 C D C D C D C D C D C D C D C D C D C D C D C D C D C D ~ C D C D C D C D C D
  C D C D C D ~@4 C D C D C@2 E D C@2 E D C D C D C D C D ~ C D C D C D C D C D C D C D C D C@2 E D C@2 E D C@2 E D ~@5
  C D C D C D C D C D C D ~@5
>`.pickRestart({
  A: "b1", B: "g1 a1", C: "b0 b1 b0 b1 b0 b1 b0 b1", D: "g0 g1 g0 g1 a0 a1 a0 a1", E: "g0 g1 g0 g1 g0 g1 g0 g1",
})).s("gm_electric_bass_finger").gain(0.48)

// drums · kick
const kick = s("bd").struct("<~@26 A@7 B A@16 C A@40 C A@16 ~@4 A@8 C D ~@7 A@8 D ~@4>".pickRestart({
  A: "x!4", B: "x!4 ~@2 x!2 ~@2 x ~ x ~ x ~", C: "x!2 ~ x!2 ~ x ~ x ~@7", D: "x",
})).gain(0.48)

// drums · snare
const snare = s("sd").struct("<~@25 A B@24 ~ B@16 ~@6 C D B@16 ~ B@16 ~@4 B@8 ~@8 A B@8 ~@5>".pickRestart({
  A: "~@5 x!11", B: "~ x ~ x", C: "~@14 x!2", D: "x!16",
})).gain(0.36)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@25 [x!5 ~@11] ~@47 [x!14 ~@2] ~@54 [x!5 ~@11] ~@13>").gain(0.18)

// drums · clap
const clap = s("cp").struct("<~@26 A@8 B@16 C A@16 ~@8 B@16 C A@16 ~@4 B@8 C ~@8 A@8 ~@5>".pickRestart({
  A: "~ x ~ x", B: "~@2 x ~ x!3 ~@3 x ~ x!3 ~", C: "~@3 x",
})).gain(0.18)

// drums · clap · soft notes
const clap_soft = s("cp").struct(`<
  ~@34
  [~@3 x ~@3 x ~@3 x ~@3 x]!16
  ~@25
  [~@3 x ~@3 x ~@3 x ~@3 x]!16
  ~@21
  [~@3 x ~@3 x ~@3 x ~@3 x]!8
  ~@22
>`).gain(0.06)

// drums · hihat
const hihat = s("hh").struct("<A@24 B@2 A@24 C A@40 C A@28 C D A@5 B@2 A@8 E ~@4>".pickRestart({
  A: "x!4", B: "x!16", C: "x!2 ~ x!2 ~ x ~ x ~@7", D: "~ x!3", E: "x",
})).gain(0.36)

// drums · open hat
const open_hat = s("oh").struct("<~@26 A@24 ~ A@40 ~ A@16 ~@3 B A@8 ~@9 A@8 ~@5>".pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~@15 x",
})).gain(0.3)

// drums · crash
const crash = s("cr").struct("<~@121 x ~@20>").gain(0.36)

// drums · shaker
const shaker = s("sh").struct("<~@26 A@24 ~ A@16 ~@4 A@20 ~ A@16 ~@3 B A@8 ~@9 A@8 ~@5>".pickRestart({
  A: "x!16", B: "~@13 x!3",
})).gain(0.24)

stack(
  lead_2_sawtooth, synth_brass_2, string_ensemble_1, synth_brass_1, lead_2_sawtooth_2, oboe, bass, synth_brass_1_2,
  synth_strings_1, synth_brass_1_3, orchestra_hit, bass_2, kick, snare, snare_soft, clap, clap_soft, hihat, open_hat,
  crash, shaker
)

More by Trance