Strudelify

I Turn to You

Christina Aguilera

KeyD♭ majorTempo69 bpm
0:00/0:00
// I Turn to You — Christina Aguilera
// 69 bpm, 4/4, key Db major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 64 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(69/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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 · electric guitar jazz
const electric_guitar_jazz = note(`<
  A B C D E F C D E G H I J K L M N O L M P Q A B C D E F C D E G H I J K L M N O L M R S T U V W T U V X ~ Y Z AA AB Y
  Z N AC N AC AD
>`.pickRestart({
  A: "gb4@11 ~@3 gb4 ab4", B: "a4@5 ~ ab4@7 ~@3", C: "f3@2 ab3@2 db4@2 f3@7 ~@3",
  D: "ab3@2 c4@2 eb4@2 bb3@2 ab3@2 ~@5 ab3", E: "bb3@2 eb4@2 gb4@3 bb3 ab3@2 db4@2 f4@2 db4@2",
  F: "f3@2 ab3@2 db4@3 bb3 ab3@2 c4@2 eb4@3 ab3", G: "f3@2 ab3@2 db4@3 bb3 ab3@2 c4@2 eb4@2 eb4 f4",
  H: "gb4@2 c4 c4@3 c4 c4@3 c4 eb4@4 db4", I: "bb3@2 bb3@2 bb3@2 bb3@2 c4@3 ~@2 ab3 gb4 f4",
  J: "gb4@3 ~ gb4@3 ~ gb4@3 ~ gb4@3 ~", K: "ab4 ~@15", L: "db4@7 ~ eb4@7 ~", M: "f4@7 ~ gb4@7 ~", N: "ab4@7 ~@9",
  O: "eb4@7 ~@9", P: "gb4@7 ~@9", Q: "e4@7 ~ eb4@7 ~", R: "gb4@5 ~@3 ab4@2 eb4@2 c4@2 ab3@2", S: "db4@5 ~ db4@7 ~@3",
  T: "gb3@5 ~ gb3@2 gb3@3 ~ gb3@3 ~", U: "f3@5 ~ f3@2 f3@3 ~ f3@3 ~", V: "eb3@5 ~ eb3@2 eb3@3 ~ eb3@3 ~",
  W: "eb3@5 ~ eb3@2 gb3@3 ~ ab3@3 ~", X: "ab3 ~@7", Y: "eb4@7 ~ f4@7 ~", Z: "g4@7 ~ ab4@7 ~", AA: "bb4@7 ~@9",
  AB: "f4@7 ~@9", AC: "gb4@7 ~ f4@7 ~", AD: "[g3,eb4]@15 ~",
})).s("gm_electric_guitar_jazz").gain(0.72)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  A B C D E F C D E F G H I J K L M N K O P Q A B C D E F C D E F G H I J K L M N K O R C S T U V S W U X ~ Y Z AA AB Y
  AC AD AE AD AE AF
>`.pickRestart({
  A: "[bb3,db4,gb4]@15 ~", B: "[db4,e4,a4]@5 ~ [c4,eb4,ab4]@7 ~@3", C: "[f3,ab3,db4]@15 ~", D: "[ab3,c4,eb4]@15 ~",
  E: "[bb3,eb4,gb4]@7 ~ [ab3,db4,f4]@7 ~", F: "[f3,ab3,db4]@7 ~ [ab3,c4,eb4]@7 ~", G: "[bb3,eb4,gb4]@15 ~",
  H: "[ab3,db4,f4]@7 ~ [ab3,c4,eb4]@7 ~", I: "[db4,gb4,bb4]@7 ~ [db4,gb4,bb4]@7 ~", J: "[eb4,ab4,c5]@7 ~@9",
  K: "[db4,f4,ab4]@7 ~ [eb4,gb4,bb4]@7 ~", L: "[db4,f4,ab4]@7 ~ [bb3,db4,gb4]@7 ~", M: "[c4,eb4,ab4]@15 ~",
  N: "[c4,eb4,ab4]@11 ~ [c4,eb4,ab4]@3 ~", O: "[db4,f4,ab4]@7 ~ [db4,gb4,b4]@7 ~",
  P: "[bb3,db4,gb4]@7 ~ [db4,f4,ab4]@7 ~", Q: "[db4,e4,a4]@7 ~ [c4,eb4,ab4]@7 ~",
  R: "[bb3,db4,gb4]@7 ~ [c4,eb4,ab4]@7 ~", S: "[bb3,db4,gb4]@7 ~ [bb3,db4,gb4]@7 ~",
  T: "[ab3,db4,f4]@7 ~ [ab3,db4,f4]@7 ~", U: "[gb3,bb3,eb4]@7 ~ [gb3,bb3,eb4]@7 ~",
  V: "[f3,ab3,db4]@7 ~ [f3,ab3,db4]@7 ~", W: "[ab3,c4,f4]@7 ~ [ab3,c4,f4]@7 ~", X: "[ab3,db4,f4,ab4] ~@7",
  Y: "[eb4,g4,bb4]@7 ~ [f4,ab4,c5]@7 ~", Z: "[eb4,g4,bb4]@7 ~ [c4,eb4,ab4]@7 ~", AA: "[d4,f4,bb4]@15 ~",
  AB: "[d4,f4,bb4]@11 ~ [d4,f4,bb4]@3 ~", AC: "[eb4,g4,bb4]@7 ~ [eb4,ab4,db5]@7 ~",
  AD: "[c4,eb4,ab4]@7 ~ [eb4,g4,bb4]@7 ~", AE: "[eb4,gb4,b4]@7 ~ [d4,f4,bb4]@7 ~", AF: "[g3,bb3,eb4]@15 ~",
})).s("gm_string_ensemble_1").gain(0.72)

// other · clavinet · "maryn =þ"
const clavinet = note("<~@10 A B C D@3 E@4 F G ~@10 A B C D@3 E@4 H ~ I J K L ~@4 M@3 N@4 O P O P ~>".pickRestart({
  A: "~@2 [c4,eb4] [c4,eb4]@3 [c4,eb4] [c4,eb4]@3 [c4,eb4] [eb4,gb4]@4 [db4,f4]", // Cm Ebm Db
  B: "[bb3,db4]@2 [bb3,db4]@2 [bb3,db4]@2 [bb3,db4]@2 [c4,eb4]@3 ~@5", // Bbm Cm
  C: "[db4,gb4,bb4]@5 ~ [db4,gb4,bb4]@5 ~ [db4,gb4,bb4]@3 ~", // Gb
  D: "[[eb4,ab4,c5]@5 ~ [eb4,ab4,c5]@5 ~ [db3,db4]@2 [c3,c4] [db3,db4]@3 ~@2 [db3,db4]@2 [c3,c4] [db3,db4]@3 ~@2 [db3,db4]@2 [c3,c4] [db3,db4]@3 ~@2 [db3,db4]@2 [eb3,eb4] [f3,f4]@3 [eb3,eb4] [db3,db4]@2 [c3,c4] [bb2,bb3]@2]/3", // Ab Db C Db C Db C Db …
  E: "[[bb2,bb3]@2 [ab2,ab3]!2 [bb2,bb3]@3 ~@6 [ab2,ab3]@2 [ab2,ab3]@4 ~ [eb3,eb4]@2 [eb3,eb4]@2 ~@4 [db3,db4]@2 [c3,c4] [db3,db4]@3 ~@2 [db3,db4]@2 [c3,c4] [db3,db4]@3 ~@2 [db3,db4]@2 [db3,db4] [bb3,bb4]@3 [ab3,ab4]@2 [ab3,ab4]@2 [ab3,ab4] db5@7 db4@2]/4", // Bb Ab Bb Ab Eb Db C Db …
  F: "[gb3,gb4]@2 [gb3,gb4] [ab3,ab4]@2 [ab3,ab4] [bb3,bb4]@3 ~@5 db4@2", // Gb Ab Bb
  G: "[e3,e4]@2 [e3,e4] [gb3,gb4]@2 [gb3,gb4] [ab3,ab4]@3 ~@3 db4 db4@2 c4", // E Gb Ab
  H: "[gb3,gb4]@2 [gb3,gb4] [ab3,ab4]@2 [ab3,ab4] [bb3,bb4]@3 ~@3 db4 db4@2 c4", // Gb Ab Bb
  I: "~@4 gb4@2 f4@2 eb4@2 db4 db4@2 f4@3", J: "f4@2 bb3!3 c4 db4@2 ~@6 f4@2", K: "f4@2 bb3!3 c4 db4@2 ~@6 db4@2",
  L: "gb4@3 ~ f4@3 ~ gb4@3 ~ db5 ab4@3",
  M: "[~@12 [eb3,eb4]@2 [d3,d4] [eb3,eb4]@3 ~@2 [eb3,eb4]@2 [d3,d4] [eb3,eb4]@3 ~@2 [eb3,eb4]@2 [d3,d4] [eb3,eb4]@3 ~@2 [eb3,eb4]@2 [f3,f4] [g3,g4]@3 [f3,f4] [eb3,eb4]@2 [d3,d4] [c3,c4]@2]/3", // Eb D Eb D Eb D Eb F …
  N: "[[c3,c4]@2 [bb2,bb3]!2 [c3,c4]@3 ~@6 [bb2,bb3]@2 [bb2,bb3]@4 ~ [f3,f4]@2 [f3,f4]@2 ~@4 [eb3,eb4]@2 [d3,d4] [eb3,eb4]@3 ~@2 [eb3,eb4]@2 [d3,d4] [eb3,eb4]@3 ~@2 [eb3,eb4]@2 [eb3,eb4] [c4,c5]@3 [bb3,bb4]@2 [bb3,bb4]@2 [bb3,bb4] eb5@7 eb4@2]/4", // C Bb C Bb F Eb D Eb …
  O: "[ab3,ab4]@2 [ab3,ab4] [bb3,bb4]@2 [bb3,bb4] [c4,c5]@3 ~@5 eb4@2", // Ab Bb C
  P: "[gb3,gb4]@2 [gb3,gb4] [ab3,ab4]@2 [ab3,ab4] [bb3,bb4]@3 ~@7", // Gb Ab Bb
})).s("gm_clavinet").gain(0.72)

// bass · electric bass finger
const bass = note(`<
  A B C D E F C D G H G I A J K L D M K N O P A B C D E F C D G H G I A J K L D M K N O C Q R S T Q R S U ~ V W X Y V W
  Z AA Z AA AB
>`.pickRestart({
  A: "gb2@5 ~ gb2@7 ~ gb2@2", B: "e2@5 ~ eb2@7 ~ eb2@2", C: "db2@5 ~ db2@7 ~ db2@2", D: "c2@5 ~ c2@7 ~ c2@2",
  E: "eb2@5 ~ eb2@7 ~ gb2@2", F: "db2@3 ~@3 ab2@5 ~ ab1@3 ~", G: "eb2@5 ~ eb2@7 ~ eb2@2", H: "c2@5 ~ c2@7 ~ eb2 f2",
  I: "db2@5 ~ c2@7 ~ eb2 f2", J: "ab2@5 ~ ab2@5 ~ ab1@3 ~", K: "db2@7 ~ eb2@7 ~", L: "db2@7 ~ bb1@7 ~",
  M: "ab1@5 ~ ab1@5 ~ ab1@3 ~", N: "db2@7 ~ b1@7 ~", O: "bb1@5 ~ bb1@7 ~ bb1@2", P: "a1@5 ~ a1@2 ab1@7 ~",
  Q: "gb2@5 ~ gb2@2 gb2@7 ~", R: "f2@5 ~ f2@2 f2@7 ~", S: "eb2@5 ~ eb2@2 eb2@7 ~", T: "eb2@5 ~ eb2@2 ~@8", U: "c2 ~@7",
  V: "eb2@7 ~ f2@7 ~", W: "eb2@7 ~ c2@7 ~", X: "d2@5 ~ d2@7 ~ d2@2", Y: "bb1@5 ~ bb1@5 ~ bb1@3 ~",
  Z: "c2@5 ~ c2@2 bb1@7 ~", AA: "gb2@5 ~ gb2@2 f2@7 ~", AB: "[g1,bb1,eb2]@15 ~",
})).s("gm_electric_bass_finger").gain(0.72)

// drums · kick
const kick = s("bd").struct(`<
  A B A B A B A B A B A B A B A B A B A B A B C D C E C E C@2 D C E C E C@2 E C A B A B A B A B A B A@2 D ~ A B C A B A
  B A B@2 ~
>`.pickRestart({
  A: "x ~@7 x ~@6 x", B: "x ~@4 x ~@2", C: "x ~@7 x ~ x ~@4 x", D: "x", E: "x ~@3 x!2 ~@2",
})).gain(0.72)

// drums · snare
const snare = s("sd").struct("<A@23 B A@6 C A@20 ~ D A@10 ~>".pickRestart({
  A: "~ x ~ x", B: "~@2 x!2 ~@3 x", C: "~@2 x!2 ~@2 x ~", D: "~@3 x",
})).gain(0.72)

// drums · low tom
const low_tom = s("lt").struct("<~@13 A ~@7 B ~@3 A ~@6 A ~@19 A ~@10 C>".pickRestart({
  A: "~@7 x", B: "~@4 x ~ x!2", C: "x",
})).gain(0.72)

// drums · hihat
const hihat = s("hh").struct("<A@23 B A@6 C A@20 D E A@10 ~>".pickRestart({
  A: "x!8", B: "x!4 ~@3 x", C: "x ~ x!2 ~@2 x!2", D: "x", E: "x!4",
})).gain(0.72)

// drums · mid tom
const mid_tom = s("mt").struct("<~@13 [~@7 x] ~@7 [~@5 x ~@2] ~@29 x ~@12>").gain(0.72)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~ A ~ A ~ A ~ A ~ B ~ A ~ B ~ A ~ B ~ A ~ B ~@3 B ~ A ~@4 B ~ A ~@2 A ~@2 B ~ A ~ A ~ A ~ A ~@5 A ~@2 B ~ A ~ A@2 ~
>`.pickRestart({
  A: "~@5 x ~@2", B: "~@3 x ~ x ~@2",
})).gain(0.72)

// drums · high tom
const high_tom = s("ht").struct("<~@21 A ~@3 B ~@6 B ~@18 C ~@12>".pickRestart({
  A: "~@13 x ~@2", B: "~@3 x", C: "x",
})).gain(0.72)

// drums · crash
const crash = s("cr").struct(`<
  ~@2 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@2 A ~@3 A ~@2 A ~@4 A ~@11 A ~@4 A ~ A ~@2 A
>`.pickRestart({
  A: "x",
})).gain(0.72)

stack(
  electric_guitar_jazz, string_ensemble_1, clavinet, bass, kick, snare, low_tom, hihat, mid_tom, open_hat, high_tom,
  crash
)

More by Christina Aguilera