Strudelify
Just for You cover art

Mixed Emotions

Just for You

Mixed Emotions

KeyE majorTempo120 bpm
0:00/0:00
// Just for You — Mixed Emotions
// 120 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 129 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
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, A@4 for four bars: edit a riff to change every repeat.

// bass · electric bass finger · "FINGERDBA"
const bass = note(`<
  ~@4 A B A C D A B@2 A B A C A B A E B@2 D A B@2 D A B@2 F C G H G A@2 B A C A@2 B@2 A B A C A B A I B@2 G A B@2 J A B
  K F C A B A@2 ~@12 A B A C A@2 B@2 A B A C A B A E B@2 A@2 K@2 D@2 K B F C A L G A K@2 D@2 K@2 D@2 K@2 F C A K D A E
>`.pickRestart({
  A: "e1@2 ~@4 e1 ~ e1@3 ~@5", B: "b1@3 ~@3 b1 ~ b1@3 ~@5", C: "a1@2 ~@4 a1 ~ a1@3 ~@5", D: "e1@2 ~@4 e1 ~ e1@2 ~@6",
  E: "e1@3 ~@13", F: "c#2@3 ~@3 c#2 ~ c#2@3 ~@5", G: "e1@3 ~@3 e1 ~ e1@3 ~@5", H: "b1@3 ~@3 b1 ~ b1@4 ~@4", I: "e1 ~@7",
  J: "e1@3 ~@3 e1 ~ e1@2 ~@6", K: "b1@2 ~@4 b1 ~ b1@2 ~@6", L: "b1@2 ~@4 b1 ~ b1@3 ~@5",
})).s("gm_electric_bass_finger").gain(0.5)

// chords · pad warm · "WARM PAD"
const pad_warm = note(`<
  ~@4 A@2 B C D@4 E@4 F@4 G@2 H@2 I@2 H@2 J@2 K@2 L M N@2 E@4 O@7 C F@4 P@8 J@2 K@2 Q@2 R@2 ~@9 S@3 T@2 U@8 V@6 W@8 X@2
  K@2 Y@8 X@2 Z@2 X@2 AA@4 AB@3
>`.pickRestart({
  A: "[[e4,g#4] [d#4,f#4], b3@31 ~]/2", B: "[b3,e4,g#4]@7 ~", C: "[c#4,e4,a4]@15 ~",
  D: "[[e4,g#4]@16 [d#4,f#4]@15 ~, b3@31 ~]/4", // E D#m
  E: "[[e4,g#4]@16 [d#4,f#4]@16 g#4@14 ~@2 [c#4,a4]@15 ~, b3@23 ~@9, ~@32 e4@31 ~]/4", // E D#m F#m
  F: "[[e4,g#4]@8 [d#4,f#4]@8 [e4,g#4]@9 ~@7, b3@25 ~@7]/4", G: "[b3,d#4,f#4]/2", H: "[[b3,e4,g#4]@31 ~]/2",
  I: "[[b3,d#4,f#4]@31 ~]/2", J: "[[b3,d#4,f#4]@15 ~]/2", K: "[g#4@8 a4@7 ~, [c#4,e4]@15 ~]/2", L: "[b3,e4,g#4]",
  M: "[b3,d#4,f#4]@15 ~", N: "[f#4@3 e4@11 ~@2, [g#3,b3]@29 ~@3]/2",
  O: "[[e4,g#4]@32 [d#4,f#4]@32 [e4,g#4]@16 [d#4,f#4]@16 [e4,g#4]@15 ~, b3@55 ~]/7", // E D#m E D#m E
  P: "[[d#4,f#4]@32 [e4,g#4]@31 ~, b3@63 ~]/4", Q: "[g#4@16 [d#4,f#4]@15 ~, b3@15 ~, e4@7 ~@9]/2",
  R: "[f#4@7 ~ e4@21 ~@3, [g#3,b3]@29 ~@3]/2", S: "[e4@16 d#4@27 ~@5, [b3,f#4]@7 ~]/3", T: "[[e4,g#4] [d#4,f#4], b3]/2",
  U: "[g#4@14 ~@2 [c#4,a4]@15 ~ g#4@32 [d#4,f#4]@32 [e4,g#4]@16 [d#4,f#4]@16, e4 ~, ~ b3@3]/8", // F#m D#m E D#m
  V: "[g#4@13 ~@3 [c#4,a4]@15 ~ g#4@16 [d#4,f#4]@16 [e4,g#4]@18 ~@14, e4 ~, ~@32 b3@49 ~@15]/6", // F#m D#m E
  W: "[[d#4,f#4] [e4,g#4] [d#4,f#4] [e4,g#4], b3]/8", X: "[d#4,f#4]/2",
  Y: "[g#4 [d#4,f#4] [e4,g#4]@2 [d#4,f#4]@2 [e4,g#4]@2, b3, e4@7 ~@57]/8", Z: "[e4,g#4]/2",
  AA: "[g#4@16 a4@15 ~ g#4@16 [d#4,f#4]@16, e4@23 ~@9, c#4@31 ~ b3@30 ~@2]/4", // D#m
  AB: "[f#4@6 ~@18 f#4@7 g#3@10 ~@7, b3@7 ~, g#3 ~, ~@6 e4@35 ~@7]/3",
})).s("gm_pad_warm").gain(0.3)

// chords · flute
const flute = note("<~@68 A B C D A B C E F@2 G H ~@49>".pickRestart({
  A: "[e5,g#5] ~ [g#5,c#6] ~ [c#6,e6] ~ [g#5,c#6] ~@3 [g#5,c#6] ~ [c#6,e6] ~ [g#5,c#6] ~", // E C#5 C#m C#5 C#m C#5
  B: "[d#5,f#5] ~ [f#5,b5] ~ [b5,d#6] ~ [f#5,b5] ~@3 [f#5,b5] ~ [b5,d#6] ~ [f#5,b5] ~", // D#m B5 B B5 B B5
  C: "[c#5,e5] ~ [e5,a5] ~ [a5,c#6] ~ [e5,a5] ~@3 [e5,a5] ~ [a5,c#6] ~ [e5,a5] ~", // C#m A5 A A5 A A5
  D: "[e5,g#5] ~ [g#5,b5] ~ [b5,e6] ~ [g#5,b5] ~ [d#5,f#5] ~ [f#5,b5] ~ [b5,d#6] ~ [f#5,b5] ~", // E G#m E5 G#m D#m B5 B B5
  E: "[c5,e5] ~ [e5,a5] ~ [a5,c6] ~ [e5,a5] ~@3 [e5,a5] ~ [a5,c6] ~ [e5,a5] ~", // C A5 Am A5 Am A5
  F: "e5 ~ b5 ~ e6 ~ b5 ~@3 e5 ~ e6 ~ b5 ~", G: "d#5 ~ b5 ~ d#6 ~ b5 ~@3 d#5 ~ d#6 ~ b5 ~",
  H: "d#5 ~ b5 ~ d#6 ~ b5 ~@3 f#5 ~ d#6 ~ b5 ~",
})).s("gm_flute").gain(0.25)

// other · clavinet
const clavinet = note(`<
  ~@4 A B A C A@2 B@2 A B A C A B A D B@2 A@2 B@2 A@2 B@2 E C A B A@3 B A C A@2 B@2 A B A C A B A D B@2 A@2 B@2 A@2 B@2
  E C A B A@2 ~@12 A B A C A@2 B@2 A B A C A B A D B@2 A@2 B@2 A@2 B@2 E C A B A@2 B@2 A@2 B@2 A@2 B@2 E C A B A@2 F
>`.pickRestart({
  A: "e3 ~ e3 ~ e3 ~ e3 ~ e3!3 ~ e3 ~ e3 ~", B: "b2 ~ b2 ~ b2 ~ b2 ~ b2!3 ~ b2 ~ b2 ~",
  C: "a2 ~ a2 ~ a2 ~ a2 ~ a2!3 ~ a2 ~ a2 ~", D: "e3 ~@7 e2@2 ~@6", E: "c#3 ~ c#3 ~ c#3 ~ c#3 ~ c#3!3 ~ c#3 ~ c#3 ~",
  F: "e2 ~",
})).s("gm_clavinet").gain(0.3).pan(0.7)

// other · orchestra hit · "ORCH.HIT"
const orchestra_hit = note(`<
  ~@20 A@2 B@2 A@2 B C A@2 D E F G C@2 ~@16 A@2 B@2 A@2 B C A@2 D E F G C H ~@12 B ~@5 I J B ~@7 A@2 B@2 A@2 B C A@2 D E
  F G C H A@2 B@2 A@2 B C A@2 D E F G C@2 B
>`.pickRestart({
  A: "b3@3 ~@13", B: "e4@3 ~@13", C: "e4@2 ~@4 e4 ~ e4@2 ~@6", D: "c#4@3 ~@13", E: "a3@3 ~@13", F: "e4@3 ~@9 e4@2 ~@2",
  G: "b3@3 ~@9 b3@2 ~@2", H: "e4 ~@7", I: "~@14 b3 ~", J: "b3 ~@5 b3 ~",
})).s("gm_orchestra_hit").gain(0.35)

// other · music box
const music_box = note(`<
  A B C D C E C@4 F G C H C I C J C@2 F K C L G M C@2 M@2 C@3 N C@3 O C@3 P F Q C R C@3 S C@2 T U C@2 V U W C J N C@3 J
  C@2 ~@12 C X C@4 K Y C Z AA C@2 M C@2 X J C@2 F G C@2 J AB C@3 AC AD C AE AF AG AH AI AJ AH AA AK AL AM AA C AN AO AP
  AQ
>`.pickRestart({
  A: "e4 ~ a4@2 b4@2 e4 ~ a4@2 b4@2 e4@2 a4@2", B: "e4@2 a4@2 b4@2 e4@2 a4@2 b4@2 e4 ~ a4 ~",
  C: "e4 ~ a4 ~ b4 ~ e4 ~ a4 ~ b4 ~ e4 ~ a4 ~", D: "e4 ~ a4 ~ b4@2 e4 ~ a4@2 b4@2 e4 ~ a4@2",
  E: "f#4 ~ a4 ~ b4 ~ f#4 ~ a4 ~ b4 ~ b3 ~ a4 ~", F: "b3 ~ a4 ~ b4 ~ b3 ~ a4 ~ b4 ~ a4 ~ b4 ~",
  G: "b3 ~ a4 ~ b4 ~ b3 ~ a4 ~ b4 ~ b3 ~ a4 ~", H: "e4 ~ a4 ~ b4 ~@3 a4 ~ b4 ~ f#4 ~ a4 ~",
  I: "~@2 a4 ~ b4 ~ e4 ~ a4 ~ b4 ~ a4 ~ b4 ~", J: "b3 ~ a4 ~ b4 ~ b3 ~ b4 ~ b3 ~ a4 ~ b4 ~",
  K: "b3 ~ a4 ~ b4 ~ b3 ~ a4 ~ b4 ~ f#4 ~ a4 ~", L: "e4 ~ b4 ~ e4 ~ a4 ~ b4 ~ e4 ~ a4 ~ b4 ~",
  M: "b3 ~ a4 ~ b4 ~ b3 ~ a4 ~ b4 ~ b3 ~ b4 ~", N: "b3 ~ b4 ~ b3 ~ a4 ~ b4 ~ b3 ~ a4 ~ b4 ~",
  O: "b3 ~ a4 ~ b4 ~ e4 ~ a4 ~ b4 ~ f#4 ~ a4 ~", P: "b3 ~ a4 ~ b4 ~ e4 ~ a4 ~ b4 ~ e4 ~ a4 ~",
  Q: "b3 ~ a4 ~ b4 ~ b3 ~ a4 ~ b4 ~ e4 ~ a4 ~", R: "e4 ~ a4 ~ b4 ~ f#4 ~ a4 ~ b4 ~ a4 ~ b4 ~",
  S: "b3 ~ a4 ~ b4 ~ b3 ~ b4 ~ b3 ~ b4 ~ b4 ~", T: "e4 ~ a4 ~ b4 ~ b3 ~ a4 ~ b4 ~ f#4 ~ a4 ~",
  U: "~@2 a4 ~ b4 ~ b3 ~ a4 ~ b4 ~ b3 ~ b4 ~", V: "b3 ~ a4 ~ b4 ~ b3 ~ b4 ~ b3 ~ f#4 ~ a4 ~",
  W: "~@2 a4 ~ b4 ~ e4 ~ a4 ~ b4 ~ e4 ~ a4 ~", X: "b3 ~ a4 ~ b4 ~ f#4 ~ a4 ~ b4 ~ b3 ~ b4 ~",
  Y: "b3 ~ a4 ~ b4 ~ f#4 ~ a4 ~ b4 ~ b3 ~ a4 ~", Z: "b3 ~ a4 ~ b4 ~ b3 ~ f#4 ~ a4 ~ b4 ~ e4 ~",
  AA: "a4 ~ b4 ~ e4 ~ a4 ~ b4 ~ e4 ~ a4 ~ b4 ~", AB: "f#4 ~ a4 ~ b4 ~ b3 ~ a4 ~ b4 ~ f#4 ~ a4 ~",
  AC: "b3 ~ b4 ~ b4 ~ b3 ~ b4 ~ b3 ~ a4 ~ b4 ~", AD: "b3 ~ b4 ~ b4 ~ e4 ~ a4 ~ b4 ~ e4 ~ a4 ~",
  AE: "~@2 a4 ~ b4 ~@3 a4 ~ b4 ~ b3 ~ b4 ~", AF: "~@2 a4 ~ b4 ~ b3 ~ a4 ~ b4 ~ a4 ~ b4 ~",
  AG: "~@2 e4 ~ a4 ~ b4 ~ e4 ~ a4 ~ e4 ~ b4 ~", AH: "e4 ~ a4 ~ b4 ~ e4 ~ a4 ~ b4 ~@3 e4 ~",
  AI: "a4 ~ b4 ~ b3 ~ a4 ~ b4 ~ b3 ~@3 a4 ~", AJ: "b4 ~ b3 ~ a4 ~ b4 ~@3 b3 ~ a4 ~ b4 ~",
  AK: "b3 ~ a4 ~ b4 ~ b3 ~ a4 ~ b4 ~@3 a4 ~", AL: "b4 ~ b3 ~ a4 ~ b4 ~ b3 ~ b4 ~@3 b4 ~",
  AM: "~@2 e4 ~ a4 ~ b4 ~ e4 ~ a4 ~ b4 ~ e4 ~", AN: "b3 ~@3 b4 ~ b3 ~ b4 ~ b3 ~ a4 ~ b4 ~",
  AO: "~@2 a4 ~ b4 ~ e4 ~ a4 ~ b4 ~@3 a4 ~", AP: "b4 ~ e4 ~ a4 ~ b4 ~ e4 ~ f#4 ~ b4 ~ e4 ~", AQ: "g#4 ~@15",
})).s("gm_music_box").gain(0.15).pan(0.3)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@4 A B A C A@2 B@2 A B A C A B A D B@2 E@2 B@2 E@2 B@2 F C A B A@3 B A C A@2 B@2 A B A C A B A D B@2 E@2 B@2 E@2 B@2
  F C A B A@2 G H C I F H C J A K B@2 A B A C A@2 B@2 A B A C A B A D B@2 A@2 B@2 A@2 B@2 F C A B A@2 B@2 A@2 B@2 A@2
  B@2 F C A B A L ~
>`.pickRestart({
  A: "[b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~", // E
  B: "[b3,d#4,f#4] ~ [b3,d#4,f#4] ~ [b3,d#4,f#4] ~ [b3,d#4,f#4] ~ [b3,d#4,f#4] ~ [b3,d#4,f#4] ~ [b3,d#4,f#4] ~ [b3,d#4,f#4] ~", // B
  C: "[c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~", // A
  D: "[b3,e4,g#4] ~@15", // E
  E: "[g#3,b3,e4] ~ [g#3,b3,e4] ~ [g#3,b3,e4] ~ [g#3,b3,e4] ~ [g#3,b3,e4] ~ [g#3,b3,e4] ~ [g#3,b3,e4] ~ [g#3,b3,e4] ~", // E
  F: "[c#4,e4,g#4] ~ [c#4,e4,g#4] ~ [c#4,e4,g#4] ~ [c#4,e4,g#4] ~ [c#4,e4,g#4] ~ [c#4,e4,g#4] ~ [c#4,e4,g#4] ~ [c#4,e4,g#4] ~", // C#m
  G: "[e4,g#4,c#5] ~ [e4,g#4,c#5] ~ [e4,g#4,c#5] ~ [e4,g#4,c#5] ~ [e4,g#4,c#5] ~ [e4,g#4,c#5] ~ [e4,g#4,c#5] ~ [e4,g#4,c#5] ~", // C#m
  H: "[d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,f#4,b4] ~", // B
  I: "[b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,d#4,f#4] ~ [b3,d#4,f#4] ~ [b3,d#4,f#4] ~ [b3,d#4,f#4] ~", // E B
  J: "[c4,e4,a4] ~ [c4,e4,a4] ~ [c4,e4,a4] ~ [c4,e4,a4] ~ [c4,e4,a4] ~ [c4,e4,a4] ~ [c4,e4,a4] ~ [c4,e4,a4] ~", // Am
  K: "[b3,e4,f#4] ~ [b3,e4,f#4] ~ [b3,e4,f#4] ~ [b3,e4,f#4] ~ [b3,e4,f#4] ~ [b3,e4,f#4] ~ [b3,e4,f#4] ~ [b3,e4,f#4] ~", // Bsus4
  L: "[b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,e4,f#4] ~ [b3,e4,f#4] ~ [b3,e4,f#4] ~", // E Bsus4
})).s("gm_string_ensemble_1").gain(0.3)

// drums · kick
const kick = s("bd").struct("<~@4 [x!2]!124 x>").gain(0.51)

// drums · snare
const snare = s("sd").struct("<~@4 [~ x ~ x]!124 ~>").gain(0.51)

// drums · hihat
const hihat = s("hh").struct("<~@4 [x!8]!124 x>").gain(0.2)

// drums · tambourine
const tambourine = s("tb").struct("<~@20 [~ x ~ x ~ x ~ x]!16 ~@16 [~ x ~ x ~ x ~ x]!16 ~@12 [~ x ~ x ~ x ~ x]!48 ~>")
  .gain(0.15)

stack(bass, pad_warm, flute, clavinet, orchestra_hit, music_box, string_ensemble_1, kick, snare, hihat, tambourine)

More by Mixed Emotions