Strudelify

Directamente a ti (Run to You)

Roxette

KeyD majorTempo99 bpm
0:00/0:00
// Directamente a ti (Run to You) — Roxette
// 99 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 86 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(99/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 · "Bright Acoustic Piano"
const piano = note(`<
  ~@21 A B ~@2 A B ~@10 C D@2 ~@3 A B ~@2 A B ~@5 E@3 F@2 ~@11 G H ~@2 G I ~@2 G H ~@6
>`.pickRestart({
  A: "~@2 g4@2 g4!2 g4@3 d4 d4@6", B: "~@2 g4@2 g4!2 g4@4 d4@2 d4 c4 b3@2", C: "~@7 d4",
  D: "[g4!3 f#4@2 e4 f#4 f#4@2 e4 c4@4 ~@2]/2", E: "[~@4 d5@2 c#5 b4@2 f#4@2 e4 d4@2 d4 f#4@6 ~@3]/3",
  F: "[f#4!2 e4 d4@2 e4@2 e4@7 ~@2]/2", G: "~@2 a4@2 a4!2 a4@3 e4 e4@6", H: "~@2 a4@2 a4!2 b4@4 b4@2 c#5 b4 a4@2",
  I: "~@2 a4@2 a4!2 a4@4 e4@2 e4 d4 c#4@2",
})).s("gm_piano").gain(0.41)

// other · piano · "Bright Acoustic Piano" · soft notes
const piano_soft = note("<~@82 [~@2 a4@2 a4!2 a4@3 e4 e4@6] [~@2 a4@2 a4!2 a4@4 e4@2 e4 d4 c#4@2] ~@2>")
  .s("gm_piano").gain(0.15)

// chords · acoustic guitar steel · "Acoustic Guitar (steel)"
const acoustic_guitar_steel = note(`<
  A B A C A B D E F G H I F G J E F G F K@2 L M L N L M L N O P Q R S P Q T O U V U W@2 X Y X Z X Y X Z AA@2 AB@4 AC AD
  AE AD AF AG AH AC AI AJ AK AJ AL AD AE AD AF AD AE AD AF AD AE AD ~@5
>`.pickRestart({
  A: "d4@3 d4@3 d4@3 d4 d4@2 d4@4, [g2,d3]@3 e3@5", B: "b3@3 b3@3 d4@3 d4 d4@2 d4@4, [e2,e3]@3 d3@5",
  C: "d4@3 d4@3 d4@3 d4 d4@2 d4@4, [g2,d3]@3 d3@5", D: "~ [e3,e4]@15, a2", E: "b3", F: "b3 a3", G: "g3",
  H: "g3@4 a3 ~@3", I: "f#3", J: "[g3,d4] a3", K: "[g3@3 ~]/2", L: "[g2,d3]@3 [c3,g3]@3 [c3,g3]@2",
  M: "[e3,b3]@3 [d3,a3]@3 [d3,a3]@2", N: "[g2,d3]@3 [d3,a3]@3 [d3,a3]@2", O: "[f#3,d4]", P: "[f#3,d4] [e3,c#4]",
  Q: "[d3,b3]", R: "[d3,b3] e3", S: "d3", T: "[d3,b3] f#3, ~@8 d4@3 ~@5", U: "g3 f#3", V: "e3", W: "[[e3,g3]@3 ~]/2",
  X: "[b2,g3]@3 e3@3 e3@2", Y: "g3@3 f#3@3 f#3@2", Z: "[b2,g3]@3 f#3@3 f#3@2", AA: "[b2!4 b2!4, g#3@15 ~]/2",
  AB: "d3!4", AC: "f#3!4", AD: "[c#3,a3]@3 f#3@3 f#3@2", AE: "a3@3 g#3@3 g#3@2", AF: "[c#3,a3]@3 g#3@3 g#3@2",
  AG: "[d3,a3]!4", AH: "e3!4", AI: "g#3!4", AJ: "[c#3,a3]@3 f#3@5", AK: "a3@3 g#3@5", AL: "[c#3,a3]@3 g#3@5",
})).s("gm_acoustic_guitar_steel").gain(0.36).pan(0.8)

// chords · acoustic guitar steel · "Acoustic Guitar (steel)" · soft notes · F#m
const acoustic_guitar_steel_2 = note(`<
  ~@81
  [[c#3,a3]@3 g#3@3 g#3@2]
  [[c#3,a3]@3 f#3@3 f#3@2]
  [a3@3 g#3@3 g#3@2]
  [[c#3,a3]@3 f#3@3 f#3@2]
  [[c#3,a3]@3 g#3@3 g#3@2]
>`).s("gm_acoustic_guitar_steel").gain(0.13).pan(0.8)

// chords · acoustic guitar steel · "Acoustic Guitar (steel)"
const acoustic_guitar_steel_3 = note(`<
  A B A C A B D E F G H I F G J E K L K M@2 N O N P N O N P Q R S T U R S V Q R S R W@2 X Y X Z X Y X Z AA@2 AB AC AB@2
  AD AE AF AE AG AB AH AD AI AJ AK AJ AL AE AF AE AG AE AF AE AG AE AF AE ~@5
>`.pickRestart({
  A: "[g3,g4]@3 [g3,g4]@3 [g3,g4]@3 [g3,g4] [g3,g4]@2 [g3,g4]@4, b2@3 c3@5", // G
  B: "[g3,e4]@3 [g3,e4]@3 [a3,f#4]@3 [a3,f#4] [a3,f#4]@2 [a3,f#4]@4", // C D
  C: "[g3,g4]@3 [g3,g4]@3 [a3,f#4]@3 [a3,f#4] [a3,f#4]@2 [a3,f#4]@4, b2@3 ~@5", D: "~ a4@7, e3, ~ c#4@15",
  E: "[f#3,d4]", F: "[f#3,d4] [e3,c#4]", G: "[d3,b3]", H: "[d3,b3] e3", I: "d3", J: "[d3,b3] f#3, ~@8 d4@3 ~@5",
  K: "g3 f#3", L: "e3", M: "[[e3,g3]@3 ~]/2", N: "[b2,g3]@3 e3@3 e3@2", O: "g3@3 f#3@3 f#3@2",
  P: "[b2,g3]@3 f#3@3 f#3@2", Q: "b3", R: "b3 a3", S: "g3", T: "g3@4 a3 ~@3", U: "f#3", V: "[g3,d4] a3",
  W: "[g3@3 ~]/2", X: "[g2,d3]@3 [c3,g3]@3 [c3,g3]@2", Y: "[e3,b3]@3 [d3,a3]@3 [d3,a3]@2",
  Z: "[g2,d3]@3 [d3,a3]@3 [d3,a3]@2", AA: "[e2,e3]!4", AB: "[b2,f#3]!4", AC: "[g2,g3]!4", AD: "[d3,a3]!4",
  AE: "[a2,e3]@3 [d3,a3]@3 [d3,a3]@2", AF: "[f#3,c#4]@3 [e3,b3]@3 [e3,b3]@2", AG: "[a2,e3]@3 [e3,b3]@3 [e3,b3]@2",
  AH: "[c#3,a3]!4", AI: "[e3,b3]!4", AJ: "[a2,e3]@3 [d3,a3]@5", AK: "[f#3,c#4]@3 [e3,b3]@5", AL: "[a2,e3]@3 [e3,b3]@5",
})).s("gm_acoustic_guitar_steel").gain(0.36).pan(0.3)

// chords · acoustic guitar steel · "Acoustic Guitar (steel)" · soft notes · A5 E5 A5 D5 F#5 E5 A5 D5 …
const acoustic_guitar_steel_4 = note(`<
  ~@81
  [[a2,e3]@3 [e3,b3]@3 [e3,b3]@2]
  [[a2,e3]@3 [d3,a3]@3 [d3,a3]@2]
  [[f#3,c#4]@3 [e3,b3]@3 [e3,b3]@2]
  [[a2,e3]@3 [d3,a3]@3 [d3,a3]@2]
  [[a2,e3]@3 [e3,b3]@3 [e3,b3]@2]
>`).s("gm_acoustic_guitar_steel").gain(0.13).pan(0.3)

// bass · electric bass finger · "Electric Bass (finger)"
const bass = note(`<
  ~@7 A B C D A B C E A F G F H@2 I J I K I J I K L@2 M@2 L@2 N@2 O F P F Q@2 I J I K I J I K R@2 O S T@2 U V W V X Y Z
  AA AB AC AD AC AE V W V X V W V X V W V ~@5
>`.pickRestart({
  A: "[b1,b2]@3 [b1,b2]@5", B: "[b1,b2]@3 [b1,b2] [a1,a2]@4", C: "[g1,g2]@3 [g1,g2]@5",
  D: "[g1,g2]@3 [g1,g2] [a1,a2]@4", E: "[g1,g2] [d2,d3]", F: "[e2,e3] [d2,d3]", G: "[c2,c3]@3 [c2,c3]@5",
  H: "[[c2,c3]@6 ~ [d1,d2]]/2", I: "[g1,g2]@3 [c2,c3]@5", J: "[e2,e3]@3 [d2,d3]@5", K: "[g1,g2]@3 [d2,d3]@5",
  L: "[[b1,b2]@3 [a1,a2]]/2", M: "[[g1,g2]@3 [a1,a2]]/2", N: "[[g1,g2]@3 [d2,d3]]/2", O: "[b1,b2]", P: "[c2,c3]",
  Q: "[c2,c3]/2", R: "[e1,e2]/2", S: "[g1,g2]", T: "[b1,b2]/2", U: "[d2,d3]", V: "[a1,a2]@3 [d2,d3]@3 [d2,d3]@2",
  W: "[f#2,f#3]@3 [e2,e3]@3 [e2,e3]@2", X: "[a1,a2]@3 [e2,e3]@3 [e2,e3]@2", Y: "[b1,b2]!4", Z: "[c#2,c#3]!4",
  AA: "[d2,d3]!4", AB: "[e2,e3]!4", AC: "a2@3 d3@5", AD: "f#3@3 e3@5", AE: "a2@3 e3@5",
})).s("gm_electric_bass_finger").gain(0.63)

// bass · electric bass finger · "Electric Bass (finger)" · soft notes · A E A D F# E A D …
const bass_soft = note(`<
  ~@81
  [[a1,a2]@3 [e2,e3]@3 [e2,e3]@2]
  [[a1,a2]@3 [d2,d3]@3 [d2,d3]@2]
  [[f#2,f#3]@3 [e2,e3]@3 [e2,e3]@2]
  [[a1,a2]@3 [d2,d3]@3 [d2,d3]@2]
  [[a1,a2]@3 [e2,e3]@3 [e2,e3]@2]
>`).s("gm_electric_bass_finger").gain(0.24)

// other · acoustic guitar nylon · "Acoustic Guitar (nylon)"
const acoustic_guitar_nylon = note(`<
  ~@2 A B A C D E@2 F@2 E@2 G@2 H I J I K@2 A L A B A L A B E@2 F@2 E@2 G@2 H I J I M@2 A L A B A L A B N@2 H O P@2 Q R
  S R T H U Q V R S R T W X W Y W X W Y W X W ~@5
>`.pickRestart({
  A: "g2@3 c3@5", B: "g2@3 d3@5", C: "e2@3 d3@5", D: "a2", E: "[b2@3 a2]/2", F: "[g2@3 a2]/2", G: "[g2@3 d3]/2",
  H: "b2", I: "e3 d3", J: "c3", K: "[c3@3 ~]/2", L: "e3@3 d3@5", M: "c3/2", N: "e2/2", O: "g2", P: "b2/2", Q: "d3",
  R: "a2@3 d3@5", S: "f#3@3 e3@5", T: "a2@3 e3@5", U: "c#3", V: "e3", W: "a1@3 d2@5", X: "f#2@3 e2@5", Y: "a1@3 e2@5",
})).s("gm_acoustic_guitar_nylon").gain(0.36)

// other · acoustic guitar nylon · "Acoustic Guitar (nylon)" · soft notes
const acoustic_guitar_nylon_2 = note("<~@81 [a1@3 e2@5] [a1@3 d2@5] [f#2@3 e2@5] [a1@3 d2@5] [a1@3 e2@5]>")
  .s("gm_acoustic_guitar_nylon").gain(0.13)

// other · pad halo · "Pad 7 (halo)"
const pad_halo = note(`<
  ~@4 A B C D@2 E@2 D@2 F@2 G H I H J@2 A K A L A K A L D@2 E@2 D@2 F@2 G H I H M@2 A K A L A K A L N@2 O P Q@2 R S T S
  U G V W X ~@4 Y Z Y AA Y Z Y AA Y Z Y ~@5
>`.pickRestart({
  A: "g3@3 c4@5", B: "e3@3 d4@5", C: "a3", D: "[b3@3 a3]/2", E: "[g3@3 a3]/2", F: "[g3@3 d4]/2", G: "b3", H: "e4 d4",
  I: "c4", J: "[c4@3 ~]/2", K: "e4@3 d4@5", L: "g3@3 d4@5", M: "c4/2", N: "[e2,e3]/2", O: "[b2,b3]", P: "[g2,g3]",
  Q: "[b2,b3]/2", R: "[d3,d4]", S: "a3@3 d4@5", T: "f#4@3 e4@5", U: "a3@3 e4@5", V: "c#4", W: "d4", X: "e4",
  Y: "[a2,a3]@3 [d3,d4]@3 [d3,d4]@2", Z: "[f#3,f#4]@3 [e3,e4]@3 [e3,e4]@2", AA: "[a2,a3]@3 [e3,e4]@3 [e3,e4]@2",
})).s("gm_pad_halo").gain(0.25)

// other · pad halo · "Pad 7 (halo)" · soft notes · A E A D F# E A D …
const pad_halo_soft = note(`<
  ~@81
  [[a2,a3]@3 [e3,e4]@3 [e3,e4]@2]
  [[a2,a3]@3 [d3,d4]@3 [d3,d4]@2]
  [[f#3,f#4]@3 [e3,e4]@3 [e3,e4]@2]
  [[a2,a3]@3 [d3,d4]@3 [d3,d4]@2]
  [[a2,a3]@3 [e3,e4]@3 [e3,e4]@2]
>`).s("gm_pad_halo").gain(0.09)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  ~@42 A B C B D B C B D ~@7 E F E G E F E H ~@4 E I E J E K E J E I L ~@5
>`.pickRestart({
  A: "~@5 g5 f#5 e5", B: "g5 ~@3 g5 ~@3 g5 ~@3 g5@2 e5 f#5", C: "g5@2 g5 f#5@2 g5 f#5 e5", D: "g5@2 g5 a5@2 g5 f#5 e5",
  E: "[a4,a5] ~@3 [a4,a5] ~@3 [a4,a5] ~@3 [a4,a5]@2 [f#4,f#5] [g#4,g#5]", // A F# G#
  F: "[a4,a5]@2 [a4,a5] [g#4,g#5]@2 [a4,a5] [g#4,g#5] [f#4,f#5]", // A G# A G# F#
  G: "[a4,a5]@2 [a4,a5] [b4,b5]@2 [a4,a5] [g#4,g#5] [f#4,f#5]", H: "[a4,a5]!2 ~@2",
  I: "[a4,a5]@2 [a4,a5] [b4,b5]@2 [b4,b5] [c#5,c#6] [a4,a5]", // A B C# A
  J: "[a4,a5]@2 [a4,a5] [b4,b5]@2 [a4,a5] [g#4,g#5] [a4,a5]", K: "[a4,a5]@2 [a4,a5] [a4,a5]@2 [e4,e5]!2 [c#4,c#5]",
  L: "[a4,a5] ~@3 [a4,a5] ~@3 [a4,a5] ~@3 [a4,a5]@2 ~@2", // A
})).s("gm_string_ensemble_1").gain(0.64)

// other · string ensemble 1 · soft notes · F# G# A B A G# A F# …
const string_ensemble_1_soft = note(`<
  ~@80
  [~@14 [f#4,f#5] [g#4,g#5]]
  [[a4,a5]@2 [a4,a5] [b4,b5]@2 [a4,a5] [g#4,g#5] [a4,a5]]
  [[a4,a5] ~@3 [a4,a5] ~@3 [a4,a5] ~@3 [a4,a5]@2 [f#4,f#5] [g#4,g#5]]
  [[a4,a5]@2 [a4,a5] [a4,a5]@2 [e4,e5]!2 [c#4,c#5]]
  [[a4,a5] ~@3 [a4,a5] ~@3 [a4,a5] ~@3 [a4,a5]@2 [f#4,f#5] [g#4,g#5]]
  [[a4,a5]@2 [a4,a5] [b4,b5]@2 [a4,a5] [g#4,g#5] [a4,a5]]
>`).s("gm_string_ensemble_1").gain(0.24)

// other · violin
const violin = note("<~@58 A B A C A B A D ~@20>".pickRestart({
  A: "a4 ~@3 a4 ~@3 a4 ~@3 a4@2 f#4 g#4", B: "a4@2 a4 g#4@2 a4 g#4 f#4", C: "a4@2 a4 b4@2 a4 g#4 f#4", D: "a4!2 ~@2",
})).s("gm_violin").gain(0.64)

// drums · kick
const kick = s("bd").struct("<~@7 A@13 B C@20 B D C@23 E ~@3 C@10 F B ~@4>".pickRestart({
  A: "x ~@2 x ~@2 x ~", B: "x ~@2 x ~@4", C: "x ~@2 x ~@2 x ~@3 x ~@5", D: "x ~@2 x ~ x ~ x", E: "x",
  F: "x ~@2 x ~ x ~@2",
})).gain(0.63)

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@80 [~@3 x ~@12] [~@3 x ~@6 x ~@5] [x ~@2 x ~@2 x ~@3 x ~@5]!4>").gain(0.16)

// drums · snare
const snare = s("sd").struct("<~@21 A@7 B A@12 ~ C A@7 D A@6 E A@3 F A@4 G ~@2 H A@3 F A@3 I A@3 J ~@4>".pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@3 x ~@2 x!2 ~@3", C: "~@12 x!3 ~", D: "~@4 x ~@3 x!2 ~ x!4 ~", E: "~@4 x ~@3 x!2 ~@2 x!4",
  F: "~@4 x ~@7 x ~ x!2", G: "x", H: "~@8 x ~@2 x!2 ~ x!2", I: "~@4 x ~@3 x ~ x!2 ~ x!2 ~", J: "~ x ~@2",
})).gain(0.71)

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~@7
  [~ x ~ x]!12
  ~@58
  [~@3 x]
  ~@3
  [~@8 x!2 ~ x!4 ~]
  [~ x ~ x]!3
  [~@4 x ~@3 x ~ x!5 ~]
>`).gain(0.16)

// drums · crash
const crash = s("cr").struct(`<
  ~@6 A ~@14 B ~@3 B ~@3 B ~@13 B ~@3 B ~@3 B ~@3 B ~@6 B ~@3 B ~@3 B ~@3 B ~@3 B ~@7
>`.pickRestart({
  A: "~@5 x!2 ~", B: "x",
})).gain(0.63)

// drums · crash · soft notes
const crash_soft = s("cr").struct("<~@5 [~@7 x] [x!5 ~@3] ~@75 x ~@3>").gain(0.31)

// … 30 more lines

More by Roxette