Strudelify

Near You Always

Jewel

KeyD♭ majorTempo112 bpm
0:00/0:00
// Near You Always — Jewel
// 112 bpm, 4/4, key C# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 93 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(112/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.

// chords · acoustic guitar steel · "Guitar 1"
const acoustic_guitar_steel = note(`<
  A B C D E F G@2 H I J K L I M N O P Q R G@2 H I J K L I M N O P Q S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL
  AM AN AO AP@2 AQ@2 AR@7 AS@3 AT@3 AU@7 AV@2 AW@4 AX@6 ~
>`.pickRestart({
  A: "db5@3 ~ ab4@2 db5@2 db5@3 ~ ab4@2 db5@2", B: "db5@3 ~ bb4@2 db5@2 db5@3 ~ ab4@2 db5@2",
  C: "[db4,bb4]@2 db5@2 bb4@3 ~ [db4,a4]@2 db5@2 a4@3 ~", D: "[db4,ab4]@2 db5@2 ab4@3 ~ [db4,g4]@2 db5@2 g4@3 ~",
  E: "[db4,gb4]@2 db5@2 gb4@3 ~ [db4,gb4]@2 db5@2 gb4@3 ~", F: "[db4,f4]@2 db5@2 ab4@2 f4@2 [ab4,db5,f5]@7 ~",
  G: "[[ab4,db5]@3 ~ db5@3 ~ [ab4,eb5]@3 ~ db5@6 [ab4,f5]@4 eb5@2 [ab4,db5]@7 ~]/2", // Db5 Ab5 Db Db5
  H: "~@4 [gb4,db5]@3 ~ ab4@5 ~ db5@2", I: "[c5,eb5]@5 ~ db5@2 [db5,f5]@2 eb5@4 db5@2",
  J: "[ab4,eb5]@2 db5@5 ~ [ab4,eb5]@2 db5@5 ~", K: "[ab4,db5]@2 f5@5 ~ [ab4,eb5]@2 db5@2 db5@3 ~",
  L: "~@2 bb4@2 [gb4,bb4]@2 db5@2 [gb4,db5]@2 ab4@4 ab4!2", M: "[ab4,bb4,db5] db5 db5@4 db5@2 [db5,f5]@2 ab5@5 ~",
  N: "[db5,bb5] ab5 ab5@4 ab5@2 [ab4,f5]@2 eb5@4 db5@2", O: "~@2 bb4@2 db5@2 bb4@2 [ab4,db5]@3 ~ eb5 db5 eb5@2",
  P: "[ab4,db5] f5@2 [g4,gb5] f5 eb5!2 db5", Q: "[db4,gb4]@3 ~ eb5@5 ~ db5@2 c5@2 db5@2", R: "[f4,ab4,db5]@15 ~",
  S: "[f4,ab4,db5] db5 ab4 f4 [f4,ab4,db5] db5 ab4 f4", T: "[f4,ab4,db5] db5 ab4 f4 [f4,ab4,db5] db5 ab4!2",
  U: "[db5,ab5]@5 ~ gb5@2 [db5,gb5]@5 ~ f5@2", V: "[ab4,f5]@3 ~ [ab4,f5]@2 c5@2 [ab4,c5]@3 ~ [ab4,db5]@3 ~",
  W: "~@2 [db5,gb5]@2 [db5,gb5]@2 [db5,gb5]@2 [db5,f5]@2 [db5,f5]@3 ~ f5@2", // Gb5 Db
  X: "[ab4,eb5]@3 ~ [ab4,eb5]@2 c5@2 [ab4,c5]@3 ~ [ab4,db5]@2 db5@2", Y: "~@2 ab5@2 [db5,gb5]@3 ~ [db5,gb5]@5 ~ f5@2",
  Z: "[db5,f5]@3 ~ [db5,f5]@3 ~ [ab4,c5]@3 ~ [ab4,db5]@3 ~", AA: "~@2 gb5@2 [db5,f5]@3 ~ [db5,f5]@5 ~ f5@2",
  AB: "f5@2 f5@2 f5@9 ~ c5@2, ab4@15 ~", AC: "c5@10 db5!2 db5@3 ~, f4@15 ~",
  AD: "[f4,c5]@3 ~ [f4,c5]@3 ~ bb4@2 db5@2 bb4@3 ~, ~@8 f4@7 ~", // F5
  AE: "[gb4,ab4,db5]@5 ~ bb4@2 [a4,db5]@3 ~ eb5 db5 eb5@2", // Gbsus2 A
  AF: "~@2 [ab4,f5]@3 ~ gb5@2 f5@2 eb5@2 eb5@2 db5@2, ~@8 g4@7 ~", AG: "~@2 eb5@3 db5 c5 db5, [db4,gb4]@15 ~",
  AH: "[f4,ab4,db5]@3 ~ ab4@2 f4@2 db4@7 ~", AI: "eb5 db5 c5 db5!3 f4 ab4", AJ: "eb5 db5 c5 db5 ab4 f4 bb4 ab4",
  AK: "db5 ab4 eb5 db5 c5 db5!3", AL: "f4@2 ab4@2 eb5@2 db5@2 c5@2 db5@2 ab4!2 f4@2",
  AM: "bb4 ab4 db5 ab4 g4 db5 gb4 db5", AN: "f4 db5 f4 db5 ab4 f4!2 db5", AO: "ab4 f4 e4 db5 ab4 e4 eb4 ab4",
  AP: "[c4@2 ab4@2 db4@2 db5@2 ab4@2 f4@2 [ab4,db5,f5]@7 ~ [ab4,db5]@3 ~ db5@3 ~ [ab4,eb5]@3 ~]/2", // Db Db5 Ab5
  AQ: "[db5@6 [ab4,f5]@4 eb5@2 [ab4,db5]@7 ~@5 [gb4,db5]@3 ~ ab4@4]/2", // Db Db5 Gb5
  AR: "[~@2 db5@2 [c5,eb5]@5 ~ db5@2 [db5,f5]@2 eb5@4 db5@2 [ab4,eb5]@2 db5@5 ~ [ab4,eb5]@2 db5@5 ~ [ab4,db5]@2 f5@5 ~ [ab4,eb5]@2 db5@5 ~@3 bb4@2 [gb4,bb4]@2 db5@2 [gb4,db5]@2 ab4@4 ab4!2 [c5,eb5]@5 ~ db5@2 [db5,f5]@2 eb5@4 db5@2 [ab4,bb4,db5] db5 db5@4 db5@2 [db5,f5]@2 ab5@5 ~ [db5,bb5] ab5 ab5@4 ab5@2 [ab4,f5]@2 eb5@2]/7", // Cm Db Ab5 Db5 Ab5 Gb Gb5 Cm …
  AS: "[~@2 db5@2 ab4@2 bb4@2 db5@2 db5@2 bb4@2 db5@2 db5@3 ~ db5@2 eb5@2 eb5 db5@3 eb5@2 f5@3 db5@2 ~@2 bb4@2 db5@2 bb4@2 [ab4,db5]@3 ~ eb5, ~@6 gb4@7 ~ ab4@7 ~ ab4@15 ~@11]/3", // Db5
  AT: "[db5 eb5@2 [ab4,db5]@2 f5@4 [g4,gb5]@2 f5@2 eb5@2 eb5@2 db5@2 [db4,gb4]@3 ~ eb5@5 ~ db5@2 c5@2 db5@2 [f4,ab4,db5]@2 db5@2 ab4@2 f4@2 [f4,ab4,db5]@5]/3", // Db5 Gmaj7 Gb5 Db
  AU: "[~ ab4@2 bb4@2 db5@2 db5@2 bb4@2 db5@2 db5@3 ~ db5@2 e5@2 eb5 db5@3 eb5@2 f5@3 db5@2 db5 db5@2 ~@2 [ab4,f5]@3 ~ eb5@2 eb5@2 db5@2 eb5@2 db5@2 bb5@2 ab5@2 ab5@6 ab5@5 ~ [db5,ab5]@10 gb5@2 f5@2 eb5@2 eb5@2 db5@13 ~ [ab4,db5]@7 ~ [db5,f5]@2 ab5@2 ab5, ~@3 gb4@7 ~ ab4@7 ~ a4@15 ~@17 db5@15 ~@17 ab4@15 ~@14]/7", // Db Db5 Db
  AV: "[~ bb5@4 ab5@2 ab5@6 bb5@2 ab5@3 ~ [c5,db5,ab5]@10 f5@3, ~ db5@17 ~@14]/2", // Dbmaj7
  AW: "[~ ab5@2 [db5,ab5]@23 ~ [db5,f5]@2 ab5@2 ab5@2 bb5@4 ab5@2 ab5@6 bb5@2 ab5@3 ~ [c5,db5,ab5]@10 f5@3, ~@33 db5@17 ~@14]/4", // Db5 Db Dbmaj7
  AX: "[~ ab5@2 [db5,ab5]@23 ~ f5@2 ab5@2 ab5@2 bb5@4 ab5@2 ab5@6 gb5@2 f5@3 ~ f5@2 eb5@8 db5@2 c5@2 db5@2 [f4,ab4,db5]@7 ~ [f5,ab5,db6]@7 ~@14, ~@33 db5@17 ~ ab4@15 ~@30]/6", // Db5 Db
})).s("gm_acoustic_guitar_steel").gain(0.4)

// chords · acoustic guitar steel · "Guitar 2"
const acoustic_guitar_steel_2 = note(`<
  A@7 B@6 C@8 B@6 D@7 E F G@8 H@8 I@4 J K@8 L@4 M@5 N O P Q R S@6 T@8
>`.pickRestart({
  A: "[~@44 db3@4 ~@7 ab3, db3@9 f3 db4@2 ab2@9 db3 a3@7 db3 g3@10 db2@9 ab3 db4 ab3 c3 ab3 db4@2, ~ ab3@4 ab3@8 f3@10 db3 f2@7 db3@6 bb2 gb3@4 f3@14, ~@2 db4@4 db4@2 bb2@7 db3 gb2 db3 ab3 db3 gb2@7 db3 e2@11 bb2@5 [ab3,db4]@4 db3@8, ~@4 c3@10 db4@11 db3 ab3@6 eb2 bb2 gb3 bb2 eb2@5 ab2@15]/7", // Db5
  B: "[~@47 db3, bb2@7 f3@10 eb3 c4 eb3 bb3@5 ab3 db4 ab3 c3@9 f3 db4 f3 gb2 db3 bb3 db3 gb2 db3 bb3@2, ~ ab3@2 ab3@10 db3 bb3 db3@6 eb3 c4@7 ab3 db4 ab3 bb2@16, ~@2 db4@3 f3 db4@10 ab2@8 db3@12 ab2@12, ~@4 ab2@4 gb2 db3 bb3 db3 gb2@11 eb3@10 ab3 db4 ab3@13]/6",
  C: "[~@63 ab3, ab2@13 db3 bb3@10 gb2 db3 bb3@7 db3 ab3@6 eb2 bb2 gb3 bb2 eb2@6 ab2@7 ab3 db4 ab3 c3 ab3 db4@2, ~ eb3@2 eb3@2 eb3@2 eb3@9 db2 ab2 f3 ab2 db2@7 db3 gb2@7 db3 e2@9 bb2 gb3@6 f3@12, ~@2 c4@4 c4@9 db3@8 ab2@8 db3 f2@7 db3@9 db2@16, ~@4 bb3@4 gb2 db3 bb3 db3 gb2@9 ab2 f3@7 db3 a3@7 db3 g3@9 bb2@9 db3@8]/8",
  D: "[~@27 f3, ab2@13 db3 bb3@10 gb2 db3 bb3@7 db3 ab3@6 eb2 bb2 gb3 bb2 eb2@9 ab2@3, ~ eb3@2 eb3@2 eb3@2 eb3@9 db2 ab2 f3 ab2 db2@7 db3 gb2@7 db3 e2@9 bb2 gb3@10, ~@2 c4@4 c4@9 db3@8 ab2@8 db3 f2@7 db3@9 db2 ab2 f3@2 db2@4, ~@4 bb3@4 gb2 db3 bb3 db3 gb2@9 ab2 f3@7 db3 a3@7 db3 g3@9 bb2@9]/7",
  E: "~@3 f3, db2!2, ~ ab2@4 ab2@3, ~ f3@2 ~", F: "~@7 bb3, eb3!2, ~ bb3@2 bb3@2 bb3@2 ~, ~ gb4@2 gb4",
  G: "[~@63 f3, db3@5 f3 db4@6 db3 ab3 f4@9 ab3 eb3 bb3 gb4 ab3 eb3@7 ab3 ab2@11 ab3 c3 ab3 f4@6 bb2 f3 bb3 f3 bb2 f3 db4@2, ~ ab3@2 ab3@4 f3@8 ab3 db3 ab3 eb4@12 gb4@10 db3 ab3 db4 ab3 db3@9 ab3 eb4@10, ~@2 f4@6 db3 bb3 gb4@11 ab3 db4@9 ab3 db3 ab3 f4@11 ab3 db4@9 ab3@9, ~@4 ab2@7 bb3@8 ab3 db3@9 bb3@8 f3 db4 f3@12 ab3 c3@12]/8",
  H: "[~@31 db3, bb2@4 bb2@7 db3 gb2@7 db3 e2@9 bb2 gb3@4 f3@16 ~@14, ~ f3@2 f3@2 f3@8 db3 a3@7 db3 g3@9 bb2@9 db3@2 ab3@2 db3@2 ab3@4 ab3@4 ab3@6 ab3@4, ~@2 c4@5 db3 gb2 db3 bb3@7 db3 ab3@6 eb2 bb2 gb3 bb2 eb2@5 ab2@16 ~@15, ~@6 db4@9 db3 f2@7 db3@9 db2@16 db3@4 db3@6 db3@4 ~@2]/8",
  I: "[~@15 db3, ab3!2 ab3!2 ab3!2 ab3!2, ~ db3@2 db3@2 db3@2 db3@2 db3@2 db3@2 db3@2 ~]/4",
  J: "~@3 db3, ab3!2, ~ db3@2 ~",
  K: "[~@63 eb3, ~@2 db3@12 ab2@3 f3@10 eb3 c4 eb3 bb3@5 ab3 db4 ab3 c3@9 f3 db4@10 ab2 eb3 c4 eb3 bb3@2, ~@3 ab3@2 ab3@2 ab3@2 ab3 bb2@8 gb2 db3 bb3 db3 gb2@11 eb3@10 ab3 db4 ab3@10 db3 bb3 db3@7, ~@4 db4@4 db4@3 ab3 db4 ab3@10 db3 bb3 db3@6 eb3 c4@7 ab3 db4 ab3 bb2@7 f3@15, ~@6 c3@9 f3 db4@10 ab2@8 db3@12 ab2@4 gb2 db3 bb3 db3 gb2@10]/8",
  L: "[~@31 db3, c4@9 db3@9 f3@12 gb2@2, ~ eb3@9 db2 ab2 f3 ab2 db2@12 db3 gb2 db3 a3@3, ~@2 gb2@3 db3 gb2@9 ab2 f3 ab2@15, ~@3 db3 bb3@3 db3 bb3@11 gb2 db3 bb3 db3 gb2 db3 bb3@7]/4",
  M: "[~@77 db3@2 bb3, a3@15 a3@14 db3@2 g3@18 bb2@18 gb2@2 db3@2 bb3@2 db3@2 gb2@5, ~@2 db3@3 db3@4 db3@4 db3@4 db3@2 f2@14 db3@18 db2@29, ~@3 gb2@8 gb2@14 db3@2 e2@18 bb2@2 gb3@12 f3@21, ~@7 bb3@14 db3@2 ab3@12 eb2@2 bb2@2 gb3@2 bb2@2 eb2@12 ab2@25]/5",
  N: "~@13 db3@2 a3, ~ db3@4 db3@4 db3@4 ~@3, ~@3 gb2@8 gb2@5, ~@7 a3@8 ~",
  O: "~@13 db3@2 ab3, ~ db3@4 db3@4 db3@4 ~@3, ~@3 f2@8 f2@5, ~@7 ab3@8 ~",
  P: "~@13 db3@2 g3, ~ db3@4 db3@4 db3@4 ~@3, ~@3 e2@8 e2@5, ~@7 g3@8 ~",
  Q: "~@13 bb2@2 gb3, ~ db3@15, ~@3 eb2@8 eb2@5, ~@5 bb2@4 bb2@4 ~@3, ~@7 gb3@8 ~",
  R: "~@13 ab3@2 db4, ~ bb2@15, ~@3 db3@13, ~@5 ab3@4 ab3@2 c3@5, ~@7 db4@8 ~",
  S: "[~@93 db3@2 bb3, ~ ab3@4 ab3@4 ab3@20 db3@2 bb3@2 db3@12 eb3@2 c4@14 ab3@2 db4@2 ab3@2 bb2@14 f3@2 gb2@2 db3@2 bb3@2 db3@2 gb2@5, ~@3 bb2@14 f3@20 eb3@2 c4@2 eb3@2 bb3@10 ab3@2 db4@2 ab3@2 c3@18 f3@2 db4@17, ~@7 db4@6 f3@2 db4@20 ab2@16 db3@24 ab2@21, ~@11 ab2@8 gb2@2 db3@2 bb3@2 db3@2 gb2@22 eb3@20 ab3@2 db4@2 ab3@23]/6",
  T: "[~@91 f3@32 ~@5, ~ db3@16 eb3@20 ab3@2 db4@2 ab3@20 db3@2 bb3@2 db3@18 db2@32 ~@13, ~@3 ab2@16 db3@24 ab2@6 f3@20 eb3@2 c4@2 eb3@2 bb3@12 ab2@32 ~@9, ~@5 eb3@4 eb3@2 bb3@10 ab3@2 db4@2 ab3@2 c3@18 f3@2 db4@20 ab2@10 eb3@2 c4@32 ~@17, ~@7 c4@6 eb3@2 c4@14 ab3@2 db4@2 ab3@2 bb2@16 gb2@2 db3@2 bb3@2 db3@2 gb2@22 eb3@32 ~@15]/8",
})).s("gm_acoustic_guitar_steel").gain(0.72)

stack(acoustic_guitar_steel, acoustic_guitar_steel_2)

More by Jewel