Strudelify

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: edit a riff to change every repeat.

// bass · electric bass finger · "FINGERDBA"
const bass = note(`<
  ~@4 A B A C D A B@2 D E A C A E F G H E F A B@2 D A H E I J K L M A@2 E K N A@2 B@2 O B P J O B F Q H R O@2 B@2 F A B
  E I N O B O A ~@12 O E O C O F B@2 O B K N A E F G B@2 F A S@2 F D S@2 I N A T U D S@2 D@2 S@2 D@2 S@2 I V D E D@2 W
>`.pickRestart({
  A: "e1@2 ~@4 e1 ~ e1@3 ~@5", B: "b1@3 ~@3 b1 ~ b1@3 ~@5", C: "a1@3 ~@3 a1 ~ a1@3 ~@5", D: "e1@2 ~@4 e1 ~ e1@2 ~@6",
  E: "b1@2 ~@4 b1 ~ b1@3 ~@5", F: "e1@3 ~@3 e1 ~ e1@2 ~@6", G: "e1@3 ~@13", H: "b1@3 ~@3 b1 ~ b1@2 ~@6",
  I: "c#2@3 ~@3 c#2 ~ c#2@3 ~@5", J: "a1@3 ~@3 a1 ~ a1@4 ~@4", K: "e1@3 ~@3 e1 ~ e1@4 ~@4", L: "b1@3 ~@3 b1 ~ b1@4 ~@4",
  M: "e1@4 ~@2 e1 ~ e1@3 ~@5", N: "a1@2 ~@4 a1 ~ a1@3 ~@5", O: "e1@3 ~@3 e1 ~ e1@3 ~@5", P: "e1@2 ~@4 e1 ~ e1@4 ~@4",
  Q: "e1 ~@7", R: "b1@4 ~@2 b1 ~ b1@3 ~@5", S: "b1@2 ~@4 b1 ~ b1@2 ~@6", T: "b1@2 ~@4 b1 ~ b1@4 ~@4",
  U: "e1@4 ~@2 e1 ~ e1@2 ~@6", V: "a1@2 ~@4 a1 ~ a1@2 ~@6", W: "e1 ~@3",
})).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 P@4 Q@8 I@2 K@2 R@2 S@2 ~@9 T@3 U@2 V@8 W@6 X@8 Y@2
  Z@2 AA@8 AB@2 AC@2 AB@2 AD@4 AE@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: "[[e4,g#4]@8 [d#4,f#4]@8 [e4,g#4]@9 ~@7, b3@49 ~@15]/4", Q: "[[d#4,f#4]@32 [e4,g#4]@31 ~, b3@63 ~]/4",
  R: "[g#4@16 [d#4,f#4]@15 ~, b3@15 ~, e4@7 ~@9]/2", S: "[f#4@7 ~ e4@21 ~@3, [g#3,b3]@29 ~@3]/2",
  T: "[e4@16 d#4@27 ~@5, [b3,f#4]@7 ~]/3", U: "[[e4,g#4] [d#4,f#4], b3]/2",
  V: "[g#4@7 ~ [c#4,a4]@7 ~ g#4@16 [d#4,f#4]@16 [e4,g#4]@8 [d#4,f#4]@8, e4 ~, ~ b3@3]/8", // F#m D#m E D#m
  W: "[g#4@13 ~@3 [c#4,a4]@15 ~ g#4@16 [d#4,f#4]@16 [e4,g#4]@17 ~@15, e4 ~, ~@32 b3@49 ~@15]/6", // F#m D#m E
  X: "[[d#4,f#4] [e4,g#4] [d#4,f#4] [e4,g#4], b3]/8", Y: "[f#4, d#4@15 ~]/2", Z: "[g#4@16 a4@15 ~, [c#4,e4]@31 ~]/2",
  AA: "[g#4 [d#4,f#4] [e4,g#4]@2 [d#4,f#4]@2 [e4,g#4]@2, b3, e4@7 ~@57]/8", AB: "[d#4,f#4]/2", AC: "[e4,g#4]/2",
  AD: "[g#4 a4 g#4 [d#4,f#4], e4@23 ~@9, c#4@31 ~ b3@30 ~@2]/4", // D#m
  AE: "[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 H I ~@16 A@2 B@2 A@2 B I J A D E F G H K ~@12 B ~@5 L M B ~@7 A@2 B@2 A@2 K I J A D E
  F G I K J A K B A@2 B I J A D N F G I@2 O
>`.pickRestart({
  A: "b3@3 ~@13", B: "e4@3 ~@13", C: "e4@2 ~@4 e4 ~ e4@3 ~@5", 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@3 ~@3 e4 ~ e4@2 ~@6", I: "e4@2 ~@4 e4 ~ e4@2 ~@6", J: "b3 ~@7", K: "e4 ~@7",
  L: "~@14 b3 ~", M: "b3 ~@5 b3 ~", N: "a3 ~@7", O: "e4 ~@3",
})).s("gm_orchestra_hit").gain(0.35)

// other · music box
const music_box = note(`<
  A B C D E F G@3 H I J G K G L G M G@2 I N G O J P G@2 P@2 G@3 Q G@3 R G@3 S I T G U G@3 V G@2 W X G@2 Y X Z G M Q G@3
  M G@2 ~@12 G AA G@4 N AB G AC AD G@2 P G@2 AA M G@2 I J G@2 M AE G@3 AF AG G AH AI AJ AK AL AM AK AD AN AO AP AD G AQ
  AR AS AT
>`.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@2 b4 ~ e4 ~ a4 ~", D: "e4 ~ a4 ~ b4@2 e4 ~ a4@2 b4@2 e4 ~ a4@2",
  E: "e4 ~ a4 ~ b4 ~ e4 ~ a4 ~ b4 ~ e4@2 a4 ~", F: "f#4 ~ a4 ~ b4 ~ f#4 ~ a4 ~ b4 ~ b3 ~ a4 ~",
  G: "e4 ~ a4 ~ b4 ~ e4 ~ a4 ~ b4 ~ e4 ~ a4 ~", H: "e4 ~ a4 ~ b4 ~ e4 ~ a4 ~ b4 ~ e4 ~ a4@2",
  I: "b3 ~ a4 ~ b4 ~ b3 ~ a4 ~ b4 ~ a4 ~ b4 ~", J: "b3 ~ a4 ~ b4 ~ b3 ~ a4 ~ b4 ~ b3 ~ a4 ~",
  K: "e4 ~ a4 ~ b4 ~@3 a4 ~ b4 ~ f#4 ~ a4 ~", L: "~@2 a4 ~ b4 ~ e4 ~ a4 ~ b4 ~ a4 ~ b4 ~",
  M: "b3 ~ a4 ~ b4 ~ b3 ~ b4 ~ b3 ~ a4 ~ b4 ~", N: "b3 ~ a4 ~ b4 ~ b3 ~ a4 ~ b4 ~ f#4 ~ a4 ~",
  O: "e4 ~ b4 ~ e4 ~ a4 ~ b4 ~ e4 ~ a4 ~ b4 ~", P: "b3 ~ a4 ~ b4 ~ b3 ~ a4 ~ b4 ~ b3 ~ b4 ~",
  Q: "b3 ~ b4 ~ b3 ~ a4 ~ b4 ~ b3 ~ a4 ~ b4 ~", R: "b3 ~ a4 ~ b4 ~ e4 ~ a4 ~ b4 ~ f#4 ~ a4 ~",
  S: "b3 ~ a4 ~ b4 ~ e4 ~ a4 ~ b4 ~ e4 ~ a4 ~", T: "b3 ~ a4 ~ b4 ~ b3 ~ a4 ~ b4 ~ e4 ~ a4 ~",
  U: "e4 ~ a4 ~ b4 ~ f#4 ~ a4 ~ b4 ~ a4 ~ b4 ~", V: "b3 ~ a4 ~ b4 ~ b3 ~ b4 ~ b3 ~ b4 ~ b4 ~",
  W: "e4 ~ a4 ~ b4 ~ b3 ~ a4 ~ b4 ~ f#4 ~ a4 ~", X: "~@2 a4 ~ b4 ~ b3 ~ a4 ~ b4 ~ b3 ~ b4 ~",
  Y: "b3 ~ a4 ~ b4 ~ b3 ~ b4 ~ b3 ~ f#4 ~ a4 ~", Z: "~@2 a4 ~ b4 ~ e4 ~ a4 ~ b4 ~ e4 ~ a4 ~",
  AA: "b3 ~ a4 ~ b4 ~ f#4 ~ a4 ~ b4 ~ b3 ~ b4 ~", AB: "b3 ~ a4 ~ b4 ~ f#4 ~ a4 ~ b4 ~ b3 ~ a4 ~",
  AC: "b3 ~ a4 ~ b4 ~ b3 ~ f#4 ~ a4 ~ b4 ~ e4 ~", AD: "a4 ~ b4 ~ e4 ~ a4 ~ b4 ~ e4 ~ a4 ~ b4 ~",
  AE: "f#4 ~ a4 ~ b4 ~ b3 ~ a4 ~ b4 ~ f#4 ~ a4 ~", AF: "b3 ~ b4 ~ b4 ~ b3 ~ b4 ~ b3 ~ a4 ~ b4 ~",
  AG: "b3 ~ b4 ~ b4 ~ e4 ~ a4 ~ b4 ~ e4 ~ a4 ~", AH: "~@2 a4 ~ b4 ~@3 a4 ~ b4 ~ b3 ~ b4 ~",
  AI: "~@2 a4 ~ b4 ~ b3 ~ a4 ~ b4 ~ a4 ~ b4 ~", AJ: "~@2 e4 ~ a4 ~ b4 ~ e4 ~ a4 ~ e4 ~ b4 ~",
  AK: "e4 ~ a4 ~ b4 ~ e4 ~ a4 ~ b4 ~@3 e4 ~", AL: "a4 ~ b4 ~ b3 ~ a4 ~ b4 ~ b3 ~@3 a4 ~",
  AM: "b4 ~ b3 ~ a4 ~ b4 ~@3 b3 ~ a4 ~ b4 ~", AN: "b3 ~ a4 ~ b4 ~ b3 ~ a4 ~ b4 ~@3 a4 ~",
  AO: "b4 ~ b3 ~ a4 ~ b4 ~ b3 ~ b4 ~@3 b4 ~", AP: "~@2 e4 ~ a4 ~ b4 ~ e4 ~ a4 ~ b4 ~ e4 ~",
  AQ: "b3 ~@3 b4 ~ b3 ~ b4 ~ b3 ~ a4 ~ b4 ~", AR: "~@2 a4 ~ b4 ~ e4 ~ a4 ~ b4 ~@3 a4 ~",
  AS: "b4 ~ e4 ~ a4 ~ b4 ~ e4 ~ f#4 ~ b4 ~ e4 ~", AT: "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