Strudelify

Inside Your Dreams

U96

KeyG minorTempo126 bpm
0:00/0:00
// Inside Your Dreams — U96
// 126 bpm, 4/4, key G minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 120 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): NYLON GTR.
setcpm(126/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 · synth bass 1 · "SYN BASS 1"
const bass = note(`<
  ~@18 A B A C A B A C D E A F D G D G A G A H I H A J A H I ~ I B A K A B A C A C A L A C D C I M A C A B I C A B A B N
  O N O N O N ~@13 A P I C A B A E A B A F A Q A C A B I F A Q A B ~@2
>`.pickRestart({
  A: "g1 ~ g1 ~@2 g1 ~ g1!2 ~ g1 ~@2 g1 ~ g1", B: "g1 ~ g1 ~@2 g1 ~ g1!2 ~ g1 ~@2 g1 c2 d2",
  C: "g1 ~ g1 ~@2 g1 ~ g1!2 ~ g1 ~@2 g1 d2 ~", D: "g1 ~ g1 ~@2 g1 ~ g1!2 ~ g1@2 ~ g1 ~ g1",
  E: "g1 ~ g1 ~@2 g1 ~ g1!2 ~ g1@2 ~ g1 d2 ~", F: "g1 ~ g1@2 ~ g1 ~ g1!2 ~ g1 ~@2 g1 d2 ~",
  G: "g1 ~ g1 ~@2 g1 ~ g1!2 ~ g1 ~ g1@2 eb3 ~", H: "g1 ~ g1 ~@2 g1 ~ g1!2 ~ g1 ~ g1@2 eb2 ~",
  I: "g1 ~ g1@2 ~ g1 ~ g1!2 ~ g1 ~@2 g1 ~ g1", J: "g1 ~ g1@2 ~ g1 ~ g1!2 ~ g1 ~ g1@2 eb2 ~",
  K: "g1 ~ g1@2 ~ g1 ~ g1!2 ~ g1 ~@2 g1 d2@2", L: "g1 ~ g1 ~@2 g1 ~ g1!2 ~ g1 ~@2 g1 d2@2",
  M: "g1 ~ g1@2 ~ g1 ~ g1!2 ~ g1@2 g1@2 eb3 ~", N: "g2!3 g1 g2 g1 g2!5 g1 g2 g1 g2!2",
  O: "g2!3 g1 g2 g1 g2!5 g1 ab2 ab1 ab2!2", P: "g1 ~ g1 ~@2 g1 ~ g1!2 ~ g1@2 ~ g1 c2 d2",
  Q: "g1 ~ g1@2 ~ g1 ~ g1!2 ~ g1 ~@2 g1 c2 d2",
})).s("gm_synth_bass_1").gain(0.44)

// other · synth bass 1 · "+SYNBASS 3"
const synth_bass_1 = note(`<
  A B C@2 D@2 E@2 F@2 ~@13 G ~@3 H ~@3 I ~ I ~ I ~@15 G ~@2 A B ~@7 J ~@3 G ~@3 G ~ G ~@5 K ~@2 C@2 D@2 E@2 F@2 ~ A B
  ~@6 G ~@2 C@2 L@2 ~@5 G ~@3 G ~ G A B
>`.pickRestart({
  A: "[g1,g2,d3]@2 [g0,g1,d3]@3 [g-1,g0,d3] [g1,g2,d3]@4 ~ [g0,g1,d3]@2 ~ [g0,g1,d3]@2", // G5
  B: "~@2 [g0,g1,d3]@2 ~ [g0,g1,d3]@2 ~@2 [g0,g1,d3]@2 ~ [g0,g1,d3]@2 ~@2", // G5
  C: "g3 bb3 d4 g4 bb4 a4 g4 d4 g3 bb3 d4 g4 bb4 a4 g4 d4", D: "f3 bb3 d4 f4 bb4 d5 bb4 f4 f3 bb3 d4 f4 bb4 d5 bb4 f4",
  E: "c4 eb4 g4 eb5 d5 c5 g4 eb4 c4 eb4 g4 eb5 d5 c5 g4 eb4",
  F: "a3 d4 gb4 a4 bb4 a4 gb4 d4 a3 d4 gb4 a4 bb4 a4 gb4 d4", G: "~@13 g1 c2 d2", H: "~@8 g1 ~ g1@2 ~ g1 d2 ~",
  I: "~@10 g1 ~ g1@2 eb2 ~", J: "~@10 g1@2 g1@2 eb2 ~", K: "~@8 g2!3 g1 ab2 ab1 ab2!2",
  L: "g3 d4 f4 a4 bb4 a4 f4 d4 g3 d4 f4 a4 bb4 a4 f4 d4",
})).s("gm_synth_bass_1").gain(0.24)

// other · lead 8 bass lead · "BASS&LEAD"
const lead_8_bass_lead = note(`<
  ~@8 A B C ~@13 A B C ~@25 A B C ~@7 D@3 E F G A H I ~@17 A B C ~@3 D@3 E F G A H I ~@9 A B C ~@5
>`.pickRestart({
  A: "a3@2 g3 a3@5", B: "~ g3 a3 bb3", C: "c4 bb3@6 ~", D: "d4 c4@2 bb3@3 ~@2", E: "d4 eb4@2 bb3@3 ~@2",
  F: "c4 c4@2 bb3 a3@2 ~@2", G: "a3 bb3@2 a3@2 ~@2 g3", H: "~@2 bb3 ~ bb3@2 a3@2", I: "g3 ~",
})).s("gm_lead_8_bass_lead").gain(0.24)

// chords · lead 2 sawtooth · "SAW WAVE"
const lead_2_sawtooth = note(`<
  ~@10 A B A B A C A B ~@8 D E A B ~@24 A B A B A B D B ~@8 F G F G H I H I H I H ~@9 D B A B ~@20 F G F G ~@2
>`.pickRestart({
  A: "[g2,d3]@2 [d4,g4,d5] ~ [d4,g4,d5]@2 [g2,d3] ~ [d4,g4,d5]@2 [g2,d3] [d4,g4,d5]@2 [g2,d3] [eb4,ab4,eb5]@2", // G5 Ab5
  B: "[g2,d3]@2 [d4,g4,d5] ~ [d4,g4,d5]@2 [g2,d3] ~ [a3,d4,a4]@2 [g2,d3] [a3,d4,a4] ~ [g2,d3,a3,d4,a4] [c4,f4,c5]@2", // G5 D5 G5 D5 Gsus2 F5
  C: "[g2,d3]@2 [d4,g4,d5] ~ [d4,g4,d5]@2 [g2,d3]@2 [a3,d4,a4]@2 [g2,d3] [a3,d4,a4] ~ [g2,d3,a3,d4,a4] [c4,f4,c5]@2", // G5 D5 G5 D5 Gsus2 F5
  D: "[g2,d3]@2 [d4,g4,d5] ~ [d4,g4,d5]@2 [g2,d3] ~ [d4,g4,d5]@2 ~ [d4,g4,d5]@2 [g2,d3] [eb4,ab4,eb5]@2, ~@5 [g2,d3] ~@2", // G5 Ab5 G5
  E: "[g2,d3]@2 [d4,g4,d5] ~ [d4,g4,d5]@2 [g2,d3] ~ [a3,d4,a4]@2 ~ [a3,d4,a4] ~ [g2,d3,a3,d4,a4] [c4,f4,c5]@2, ~@5 [g2,d3] ~@2", // G5 D5 Gsus2 F5 G5
  F: "[g3,d4,g4]!2 ~ [g3,d4,g4] ~ [g2,d3] [g3,d4,g4] ~ [g3,d4,g4] ~ [g3,d4,g4] ~ [g3,d4,g4] [ab3,eb4,ab4] ~ [g3,d4,g4]", // G5 Ab5 G5
  G: "[g3,d4,g4] ~ [g3,d4,g4] [g2,d3] ~ [g3,d4,g4] ~@2 [g3,d4,g4]!2 ~ [g3,d4,g4] ~ [g2,d3] ~@2", // G5
  H: "g5@2 g4 ~ g4@2 g5@2 g4 ~ g4@2 [ab4,ab5]@2 g4 ~", // Ab
  I: "g5@2 g4 ~ g4@2 ~@2 c4@2 [d4,d5]@2 [eb4,eb5]@2 g4 ~, ~@3 c5@2 ~@3", // D Eb
})).s("gm_lead_2_sawtooth").gain(0.27).pan(0.4)

// other · kalimba
const kalimba = note(`<
  ~@2 A@2 B@2 C@2 D@2 ~@8 A@2 B@2 C@2 E@2 ~@20 A@2 B@2 C@2 E@2 ~@8 A@2 B@2 C@2 E@2 ~@12 A@2 B@2 C@2 D@2 ~@4 A@2 B@2 C@2
  E@2 A@2 E@2 A@2 B@2 C@2 E@2 ~@6
>`.pickRestart({
  A: "g3 bb3 d4 g4 bb4 a4 g4 d4 g3 bb3 d4 g4 bb4 a4 g4 d4", B: "f3 bb3 d4 f4 bb4 d5 bb4 f4 f3 bb3 d4 f4 bb4 d5 bb4 f4",
  C: "c4 eb4 g4 eb5 d5 c5 g4 eb4 c4 eb4 g4 eb5 d5 c5 g4 eb4",
  D: "a3 d4 gb4 a4 bb4 a4 gb4 d4 a3 d4 gb4 a4 bb4 a4 gb4 d4", E: "g3 d4 f4 a4 bb4 a4 f4 d4 g3 d4 f4 a4 bb4 a4 f4 d4",
})).s("gm_kalimba").gain(0.34)

// other · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note("<~@30 A@4 B C D E B C D E B C D ~@75>".pickRestart({
  A: "g3@2 bb3@2 d4@2 g3@2 eb4@2 g3 d4@2 g3 bb3@2", B: "a3 g3 bb3 g3 c4 g3 bb3 g3 d4 g3 c4 g3 eb4 g3 d4 g3",
  C: "c4 g3 d4 g3 bb3 g3 c4 g3 a3 g3 bb3 g3 c4 g3 bb3 g3", D: "d4 g3 bb3 g3 c4 g3 bb3 g3 d4 g3 bb3 g3 c4 g3 a3 g3",
  E: "bb3 g3 c4 g3 d4 g3 eb4 g3 c4 g3 d4 g3 bb3 g3 c4 g3",
})).s("gm_acoustic_guitar_steel").gain(0.35).pan(0.4)

// other · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note(`<
  ~@2 A@4 B@4 C@2 D@2 E@4 C@2 D@2 E@4 ~@20 C@2 D@2 E@4 ~@8 C@2 D@2 E@4 ~@12 A@4 B@4 C@2 F@2 C@2 D@2 E@4 C@2 F@2 C@2 D@2
  E@4 ~@6
>`.pickRestart({
  A: "[[g1,g2,d3,g3,bb3,g4] [bb1,bb2,d3,f3,bb3,f4], bb4]/4", // Gm Bb
  B: "[[eb3,g3,c4,g4]@4 ~@3 [d2,d3], c5, [c2,c3]@7 ~, ~ [gb3,a3,c4,a4]]/4", C: "[g2,g3,g4]/2", D: "[bb2,bb3,bb4]/2",
  E: "[[c3,c4,c5]@7 [d3,d4,d5]]/4", F: "[[c3,c4,c5]@3 [d3,d4,d5]]/2",
})).s("gm_string_ensemble_2").gain(0.23)

// other · flute
const flute = note("<~@45 [db-1 ~ db-1 ~ db-1 ~ db-1 ~] ~@35 [db-1 ~ db-1 ~ db-1 ~ db-1 ~] ~@38>")
  .s("gm_flute").gain(0.13)

// other · flute · soft notes
const flute_soft = note(`<
  ~@44
  [~@15 db9]
  [~@3 d9 ~@3 eb9 ~@3 e9 ~@4]
  ~@34
  [~@15 db9]
  [~@3 d9 ~@3 eb9 ~@3 e9 ~@4]
  ~@38
>`).s("gm_flute").gain(0.02)

// other · lead 1 square · "+SINE WAVE"
const lead_1_square = note("<~@45 g5 ~@35 g5 ~@36 [g5 ~] ~>").s("gm_lead_1_square").gain(0.39)

// other · woodblock
const woodblock = note("<~@28 A ~@41 B C ~@42 B C ~@4>".pickRestart({
  A: "eb7 ~@15", B: "~@12 eb6 ~@3", C: "~@4 eb5 ~@11",
})).s("gm_woodblock").gain(0.44)

// drums · kick
const kick = s("bd").struct("<~@10 A@3 B A@23 ~ A@7 ~ A@35 ~@9 A@3 B A@11 B A@12 ~@2>".pickRestart({
  A: "x!4", B: "x ~ x ~ x ~ x!2",
})).gain(0.49)

// drums · snare
const snare = s("sd").struct("<~@18 A@19 ~ A@7 ~ A@35 ~@13 A@24 ~@2>".pickRestart({
  A: "~@4 x ~@2 x ~@4 x ~@2 x",
})).gain(0.34)

// drums · hihat
const hihat = s("hh").struct("<~@10 A@27 ~ A@7 ~ A@35 ~@9 A@28 ~@2>".pickRestart({
  A: "x!4",
})).gain(0.34)

// drums · open hat
const open_hat = s("oh").struct("<~@10 A@27 ~ A@7 ~ A@35 ~@9 A@28 ~@2>".pickRestart({
  A: "~ x ~ x ~ x ~ x",
})).gain(0.34)

// drums · crash
const crash = s("cr").struct(`<
  ~@10 A ~@3 A ~@2 B ~@8 A ~ A ~@17 A ~@6 C ~@7 B A ~ A ~ A ~@3 A ~@2 C A D A ~@13 A ~@2 C A ~@7 A ~@2 C ~@8 A ~@2 C ~@2
>`.pickRestart({
  A: "x", B: "x!4", C: "~ x!3", D: "~@7 x",
})).gain(0.24)

// drums · shaker
const shaker = s("sh").struct("<~@10 A@27 ~ A@7 ~ A@35 ~@9 A@28 ~@2>".pickRestart({
  A: "x!16",
})).gain(0.24)

stack(
  bass, synth_bass_1, lead_8_bass_lead, lead_2_sawtooth, kalimba, acoustic_guitar_steel, string_ensemble_2, flute,
  flute_soft, lead_1_square, woodblock, kick, snare, hihat, open_hat, crash, shaker
)

More by U96