Strudelify

Mirror Temple (Mirror Magic Mix)

Lena Raine 2 Mello

KeyF majorTempo100 bpm
0:00/0:00
// Mirror Temple (Mirror Magic Mix) — Lena Raine 2 Mello
// 100 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 1 "Tenor Saxophone" named as a reed, played on tenor sax (its electric guitar jazz patch is not one)
// note: Transcription provider: pdmx. https://musescore.com/score/6074618; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 96 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(100/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 · piano · "B♭ Cornet"
const piano = note("<~@48 A B C@2 D E F@2 G H I J K L M N O@2 ~@30>".pickRestart({
  A: "d5@2 c5 g4", B: "bb4@2 ab4 eb4", C: "[f4 g4 ~ f4@21 ~@8]/2", D: "c5@2 bb4 eb4", E: "f4@7 gb4 g4@4 eb4@4",
  F: "[a4@3 ~]/2", G: "ab4@2 b4 c5", H: "eb5@2 f5 g5", I: "d5@7 c5", J: "b4@3 ~", K: "c5@2 g4 f4", L: "eb4 d4 b3 c4",
  M: "eb4", N: "d4", O: "[c4@3 ~]/2",
})).s("gm_piano").gain(0.17)

// other · tenor sax · "Tenor Saxophone"
const tenor_sax = note("<~ A@2 B@2 C@2 D@3 E F G H@2 I ~@49 A@2 J@4 D@3 E F G H@2 I ~@16>".pickRestart({
  A: "[~@8 c4 bb3 c4 ~ eb4 f4 ~ g4@8 ~@5 g4 c5 ~ g4, ~@15 f4 ~@16]/2",
  B: "[gb4 [eb4,f4] f4 ~ eb4 c4 ~ bb3 c4 ~ eb4 ~ d4 bb3 ~ g3@8 ~@2 c4 eb4 ~ g4!2 ~ g4, ~@15 f3 ~@16]/2", // Ebsus2
  C: "[gb4!2 ~ gb4 f4!2 ~ f4 g4 eb4 ~ g4 eb4 ~ g4 c5@9 ~@7 eb4]/2",
  D: "[f4@2 ~ f4 ~ eb4 g4@2 ~@2 bb3 c4 eb4 g4 eb4 f4@4 ~@7 bb3 c4 eb4 bb4 ~ f4@4 ~@5 bb4 ~ ab4 ~ g4 eb4 ~ [bb3,c4], ~@15 eb4 ~@15 eb4 ~@16]/3", // Bbsus2
  E: "~ bb3@5 ~@5 c4@2 eb4 ~ f4", F: "d4@3 eb4@2 [c4,d4] bb3@2 ~@2 c4@2 d4 c4 ~ d4", G: "~ c4@5 ~@4 c4 db4 d4 c4 ~ g4",
  H: "[~ c4@5 ~@4 gb4@2 f4 eb4 ~ f4@8 ~@8 eb4, ~@15 eb4 ~@16]/2", I: "f4@2 ~ f4@2 eb4 g4@2 ~ f4@5 ~@2",
  J: "[gb4 [eb4,f4] f4 ~ eb4 c4 ~ bb3 c4 ~ eb4 ~ d4 bb3 ~ g3@8 ~@2 c4 eb4 ~ g4!2 ~ c5@3 eb5 f5 ~ eb5 ~ d5 ~ bb4 ~ g4@3 bb4 c5@9 ~@7 eb4, ~@15 f3 ~@48]/4", // Ebsus2
})).s("gm_tenor_sax").gain(0.3)

// chords · piano
const piano_2 = note(`<
  A@2 B@2 C@2 D@2 E F G H I J K L A@2 B@2 C@2 D@2 E F G H I J K M A@2 B@2 C@2 D@2 E F G H I J K@2 A@2 B@2 C@2 D@2 E F G
  H I J K N O@2 P@2 Q@2 R@2 S@2 T@2 U@2 M@2 V@2 W@2 X@2 Y@2 Z@2 AA@2 AB@2 AC@2
>`.pickRestart({
  A: "~ g4 g5 g4 d6 g4 eb6 g4 bb6 g4 d6 g4 eb6 g4 bb6 g4, [c3,g3]@15 ~", // C5
  B: "~ f4 g5 f4 d6 f4 eb6 f4 g6 f4 d6 f4 eb6 f4 g6 f4, [b2,f3]@15 ~", // Bdim
  C: "~ eb4 g5 eb4 d6 eb4 eb6 eb4 bb6 eb4 d6 eb4 eb6 eb4 bb6 eb4, [bb2,eb3]@15 ~", // Eb5
  D: "~ c4 g5 c4 d6 c4 eb6 c4 g6 c4 d6 c4 eb6 c4 g6 c4, [a2,c3]@15 ~", // Am
  E: "~ c4 g5 c4 d6 c4 eb6 c4 g6 c4 d6 c4 eb6 d4 g6 d4, [ab2,c3]@15 ~", // Ab
  F: "~ eb4 g5 eb4 d6 eb4 eb6 eb4 g6 f4 d6 f4 eb6 g4 g6 g4, [ab2,c3]@15 ~", // Ab
  G: "~ d4 g5 d4 d6 d4 eb6 d4 g6 d4 d6 d4 eb6 d4 g6 d4, [g2,bb2]@15 ~", // Gm
  H: "~ d4 g5 d4 d6 d4 eb6 d4 g6 d4 d6 d4 eb6 c4 g6 d4, [g2,bb2]@15 ~", // Gm
  I: "~ c4 g5 c4 d6 c4 eb6 c4 g6 d4 d6 d4 eb6 d4 g6 d4, [f2,c3]@15 ~", // F5
  J: "~ eb4 g5 eb4 d6 eb4 eb6 eb4 g6 f4 d6 f4 eb6 gb4 g6 gb4, [f2,c3]@15 ~", // F5
  K: "~ g4 f5 g4 d6 g4 eb6 g4 g6 g4 d6 g4 eb6 g4 g6 g4, [g2,d3]@15 ~", // G5
  L: "~ f4 [b4,g5,b5] f4 [b4,g5,d6] ~@3 [b4,g5,d6]@3 [b4,f5,b5]@3 [b4,g5,d6]@2, [g2,d3]@15 ~", M: "[g2,d3]@15 ~",
  N: "~ b4 f5 b4 d6 b4 eb6 b4 g6 b4 d6 b4 eb6 c5 g6 b4, [g2,d3]@15 ~", O: "[c3,g3]@15 ~", P: "[b2,f3]@15 ~",
  Q: "[bb2,eb3]@15 ~", R: "[a2,c3]@15 ~", S: "[ab2,c3]@15 ~", T: "[g2,bb2]@15 ~", U: "[f2,c3]@15 ~",
  V: "[[c3,g3]@15 ~]/2", W: "[[b2,f3]@15 ~]/2", X: "[[bb2,eb3]@15 ~]/2", Y: "[[a2,c3]@15 ~]/2", Z: "[[ab2,c3]@15 ~]/2",
  AA: "[[g2,bb2]@15 ~]/2", AB: "[[f2,c3]@15 ~]/2", AC: "[~@4 g5 d6 b5 d6, [g2,d3]@15 ~]/2",
})).s("gm_piano").gain(0.27)

// chords · epiano1 · "Electric Piano"
const epiano1 = note(`<
  A@2 B@2 C@2 D@2 E@2 F@2 A@2 G H A@2 B@2 C@2 D@2 E@2 F@2 A@2 G H ~@32 A@2 B@2 C@2 D@2 E@2 F@2 A@2 G H A@2 B@2 C@2 D@2
  E@2 F@2 A@2 G I
>`.pickRestart({
  A: "[c4,d4,f4,g4]/2", B: "[b3,d4,f4,g4]/2", C: "[bb3,c4,eb4,g4]/2", D: "[a3,c4,eb4,g4]/2", E: "[ab3,c4,eb4,f4]/2",
  F: "[bb3,d4,f4,g4]/2", G: "[c4,eb4,f4,g4]", H: "[d4,f4,g4,b4]", I: "g4 d5 b4 d5",
})).s("gm_epiano1").gain(0.17)

// other · synth strings 1 · "String Synthesizer"
const synth_strings_1 = note(`<
  ~@30 A@2 B@2 C D E@2 F G H I@3 J K F L ~@32 M@2 N@2 O@2 P@2 Q@2 R@2 S@2 R ~
>`.pickRestart({
  A: "[~@3 g6, b4, ~ g5@3, ~ b5]/2", B: "[c6@3 d6]/2", C: "b5", D: "g5", E: "[g6@6 f6 eb6]/2", F: "d6", G: "c6",
  H: "ab5", I: "[b5 c6 eb6 d6@2 g5@4 c6 eb6 g6]/3", J: "c7", K: "f6@3 eb6", L: "d6 c6 [bb5,b5] ab5 g5@12",
  M: "c4 g3 d4 eb4 bb4 d4 eb4 bb4", N: "b3 g3 d4 eb4 g4 d4 eb4 g4", O: "bb3 g3 d4 eb4 bb4 d4 eb4 bb4",
  P: "a3 g3 d4 eb4 g4 d4 eb4 g4", Q: "ab3 g3 d4 eb4 g4 d4 eb4 g4", R: "g3@2 d4 eb4 g4 d4 eb4 g4",
  S: "f3@2 d4 eb4 g4 d4 eb4 g4",
})).s("gm_synth_strings_1").gain(0.3)

// bass · synth bass 1 · "Bass Synthesizer"
const bass = note(`<
  A@2 B C D E F G H I J K L M@2 N A@2 B C D E F G H I J K L M@2 N A@2 B C D E F G H I J K L M@2 N A@2 B C D E F G H I J
  K L M@2 N A@2 B C D E F G H I J K L M@2 N A@2 B C D E F G H I J K L M@2 ~
>`.pickRestart({
  A: "c3@3 bb2 ~@2 c3@6 ~ g2 bb2 g2", B: "f2@3 gb2 ~@2 g2@6 ~ g2 bb2 g2", C: "f2@3 g2 ~@2 f2@4 eb2!2 d2 c2 bb1 g1",
  D: "eb2@3 d2 ~@2 eb2@6 ~ d2 eb2 a2", E: "bb2@3 a2 ~@2 bb2@6 ~ d2 eb2 f2", F: "g2@3 f2 ~@2 g2@6 ~ d2 eb2 f2",
  G: "a2@3 g2 ~@2 a2@6 ~ d2 g2 f2", H: "ab2@3 g2 ~@2 ab2@6 ~ eb2 g2 f2", I: "ab2@3 g2 ~@2 ab2@6 ~ f2 g2 f2",
  J: "g2@3 f2 ~@2 g2@6 ~ f2 g2 f2", K: "g2@3 f2 ~@2 g2@6 ~ eb2 f2 eb2", L: "f2@3 eb2 ~@2 f2@6 ~ eb2 f2 gb2",
  M: "g2@3 f2 ~@2 g2@6 ~ eb2 f2 gb2", N: "g2@3 bb2 ~@2 d3@6 ~@4",
})).s("gm_synth_bass_1").gain(0.27)

// chords · distortion guitar · "Electric Guitar"
const distortion_guitar = note(`<
  ~@32 A@2 B@2 C@2 D@2 E@2 F@2 G@2 H@2 A@2 B@2 C@2 D@2 E@2 F@2 G@2 H@2 ~@32
>`.pickRestart({
  A: "[[c4,eb4,c5]@3 [c4,eb4,c5]@3 [c4,eb4,c5]@3 [c4,eb4,c5]@23]/2", // Cm
  B: "[[b3,d4,b4]@3 [b3,d4,b4]@3 [b3,d4,b4]@3 [b3,d4,b4]@23]/2", // Bm
  C: "[[bb3,eb4,bb4]@3 [bb3,eb4,bb4]@3 [bb3,eb4,bb4]@3 [bb3,eb4,bb4]@23]/2", // Eb5
  D: "[[a3,eb4,a4]@3 [a3,eb4,a4]@3 [a3,eb4,a4]@3 [a3,eb4,a4]@23]/2", // Adim
  E: "[[ab3,d4,ab4]@3 [ab3,d4,ab4]@3 [ab3,d4,ab4]@3 [ab3,d4,ab4]@23]/2", // Abdim
  F: "[[g3,bb3,d4]@3 [g3,bb3,d4]@3 [g3,bb3,d4]@3 [g3,bb3,d4]@23]/2", // Gm
  G: "[[f3,a3,c4]@3 [f3,a3,c4]@3 [f3,a3,c4]@3 [f3,a3,c4]@23]/2", // F
  H: "[[b3,d4,g4]@3 [b3,d4,g4]@3 [b3,d4,g4]@3 [b3,d4,g4]@23]/2", // G
})).s("gm_distortion_guitar").gain(0.3)

// drums · kick
const kick = s("bd").struct("<~@15 [x!2 ~@2 x ~@2 x] [x ~@2 x ~@2 x ~@3 x ~@4 x]!64 ~@16>").gain(0.25)

// drums · snare
const snare = s("sd").struct("<~@15 [~@2 x ~@2 x ~@2] [~ x ~ x]!64 ~@16>").gain(0.38)

// drums · low tom
const low_tom = s("lt").struct("<~@15 [~@8 x ~@4 x ~@2] ~@80>").gain(0.25)

// drums · hihat
const hihat = s("hh").struct("<A@15 B C A@47 C A@15 C A@14 ~>".pickRestart({
  A: "x!8", B: "x!5 ~@3", C: "~ x!7",
})).gain(0.25)

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

// drums · crash
const crash = s("cr").struct("<~@16 x ~@47 x ~@15 x ~@15>").gain(0.25)

stack(
  piano, tenor_sax, piano_2, epiano1, synth_strings_1, bass, distortion_guitar, kick, snare, low_tom, hihat, mid_tom,
  crash
)