Strudelify

To You I Belong

B*Witched

KeyE♭ majorTempo76 bpm
0:00/0:00
// To You I Belong — B*Witched
// 76 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: Full arrangement: all 59 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(76/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 · fretless bass
const bass = note(`<
  ~@2 A B C D E F G F H F B A I J K J K J L M N F G F H F B A O J K J K J L M A B F P F B F O J K J K J L M N ~@5
>`.pickRestart({
  A: "c2@11 ~ bb1@20", B: "g1@3 ab1@4 bb1", C: "c2@12 bb1@19 ~", D: "ab1@11 ~ ab1@17 ~ ab1@2", E: "ab1@31 ~",
  F: "c2@3 bb1@5", G: "g1@11 ~ ab1@16 bb1@4", H: "g1@11 ~ ab1@20", I: "ab1@11 ~ ab1@20",
  J: "[db1,db2]@11 ~ [db1,db2]@20", K: "[eb1,eb2]@11 ~ [eb1,eb2]@20", L: "[c1,c2]@11 ~ [c1,c2]@19 ~",
  M: "[gb1,gb2]@12 [f1,f2]@19 ~", N: "[eb1,eb2]@3 ~", O: "ab1@11 ~ ab1@14 ab0@2 bb0@2 c1@2", P: "g1@12 ab1@15 ~ ab1@4",
})).s("gm_fretless_bass").gain(0.25)

// chords · string ensemble 2
const string_ensemble_2 = note("<~ A@6 ~@7 B@7 C@8 D@8 E@7 F@8 G@7>".pickRestart({
  A: "[~@32 c3@11 ~ bb2@19 ~ g2@11 ~ ab2@15 ~ bb2@3 ~ c3@11 ~ bb2@19 ~ ab2@31 ~ ab1@32, ~@31 [eb4,g4]@12 [d4,f4]@20 eb4@28 [d4,f4]@4 [eb4,g4]@12 [d4,f4]@20 ~@65, ~@63 bb3@12 c4@16 ~@36 [ab3,bb3,c4,eb4]@32 [ab3,bb3,c4,eb4]@32 ~]/6", // Eb Dm Eb Dm Ab
  B: "[~@43 g4@12 f4@8 ~ eb3@31 ~@12 g4@12 f4@8 ~ eb3@31 ~@12 g4@12 f4@8 ~ c3@31 [bb3,db4,gb4], ~@31 eb4@192 ~, ~@31 ab3@32 [bb3,g4]@32 ab3@32 [bb3,g4]@32 ab3@64 ~, ~@31 ab4@12 ~@52 ab4@12 ~@52 ab4@12 ~@20 c4@32 ~, ~ db3 ~ db3 ~ db3 ~]/7", // Gb Eb
  C: "[gb3@11 ~ f3@19 ~ eb3@31 [eb4,g4]@12 [d4,f4]@20 bb3@12 c4@16 [d4,f4]@4 [eb4,g4]@12 [d4,f4]@20 bb3@12 c4@20 g4@12 [d4,f4]@20 bb3@12 c4@16 [d4,f4]@4 [eb4,g4], ~@11 [ab3,c4,f4]@20 [g3,bb3,eb4]@32 ~@32 eb4@28 ~@36 eb4@44 ~@20 eb4@28 ~@5]/8", // Eb Dm Eb Dm Eb Fm Eb
  D: "[~@11 [d4,f4]@20 [c4,eb4,bb4]@32 ~ db3@31 ~ eb3@31 ~ db3@31 ~ eb3@31 ~ db3@31 ~ c3@31 [gb3,bb3,db4], ~@63 eb4@192 ~, ~@63 [ab3,db4]@32 [g3,bb3]@32 [ab3,db4]@32 [g3,bb3]@32 ab3@64 ~, ~@191 db4@32 c4@32 ~]/8", // Dm Cm7 Gb Db5 Gm Db5 Gm
  E: "[gb2@11 ~ f2@19 ~ c3@11 ~ bb2@19 ~ g2@11 ~ ab2@15 ~ bb2@3 ~ c3@11 ~ bb2@19 ~ g2@11 ~ ab2@15 ~ bb2@3 ~ c3@11 ~ bb2@19 ~ g2@11 ~ ab2@15 ~ bb2@3 [eb4,g4], ~@11 [f3,ab3,c4]@20 [eb4,g4]@12 [d4,f4]@20 eb4@28 [d4,f4]@4 [eb4,g4]@12 [d4,f4]@20 eb4@28 [d4,f4]@4 [eb4,g4]@12 [d4,f4]@20 eb4@28 [d4,f4]@4 ~, ~@63 bb3@12 c4@16 ~@36 bb3@12 c4@16 ~@36 bb3@12 c4@16 ~@5]/7", // Eb Fm Eb Dm Eb Dm Eb Dm
  F: "[c3@11 ~ bb2@19 ~ ab2@31 ~ db3@31 ~ eb3@31 ~ db3@31 ~ eb3@31 ~ db3@31 ~ c3@31 [gb3,bb3,db4], ~@11 [d4,f4]@20 [ab3,eb4,bb4]@32 eb4@192 ~, ~@63 [ab3,db4]@32 [g3,bb3]@32 [ab3,db4]@32 [g3,bb3]@32 ab3@64 ~, ~@191 db4@32 c4@32 ~]/8", // Gb Dm Absus2 Db5 Gm Db5 Gm
  G: "[gb2@11 ~ f2@19 ~ eb2@31 ~ gb2@11 ~ f2@19 ~ eb2@31 ~ gb2@12 ~ f2@22 [eb2,g3,bb3,eb4]@53 ~@8, ~@11 [f3,ab3,c4]@20 bb3@44 ~@20 bb3@49 ~@80, ~@31 [g3,eb4]@32 [gb3,db4]@12 [f3,ab3,c4]@20 [g3,eb4]@32 [gb3,db4]@13 [f3,ab3,c4]@22 ~@62]/7", // Eb Fm Cm Gb5 Fm Cm Gb5 Fm
})).s("gm_string_ensemble_2").gain(0.18).pan(0.4)

// chords · blown bottle
const blown_bottle = note(`<
  ~@7 A B A C A B A D E F E G E F H I A B A C A B A D E F E G E F J K L K M K N K O E F E P E F H I Q R S@3
>`.pickRestart({
  A: "[g4,eb6]@3 [f4,d6]@5", B: "[eb4,bb5]@3 [eb4,c6]@4 [f4,d6]", C: "eb4@11 ~ eb4@20, bb5", D: "[eb4,bb5]",
  E: "ab5@3 g5@3 f5@2", F: "eb5", G: "g5@3 bb5@5", H: "gb4@3 f4@5", I: "[eb4,g4]", J: "gb4@3 f4@3 ~ [g4,bb4]",
  K: "[eb4,g4]@3 [d4,f4]@5", L: "[bb3,eb4]@6 [c4,eb4]@7 ~ [f4,bb4]@2", M: "[bb3,eb4]@3 [c4,eb4]@3 ~ [f4,bb4]",
  N: "[bb3,eb4]@12 [c4,eb4]@13 ~@3 [f4,bb4]@4", O: "[c4,eb4]", P: "eb5@3 bb5@5", Q: "[gb4,gb5]@3 [f4,f5]@5",
  R: "[eb4,eb5,g5]", S: "[[gb4,gb5]@13 [f4,f5]@22 [eb4,eb5,g5]@53 ~@8]/3",
})).s("gm_blown_bottle").gain(0.11)

// chords · pad warm
const pad_warm = note("<~ A@8 B@4 C@8 D@8 C@8 E@7 C@8 F@4 ~@3>".pickRestart({
  A: "[~@31 [c4,eb4,g4]@12 [d4,f4]@20 g3@12 [ab3,c4]@16 [bb3,d4,f4]@4 [c4,eb4,g4]@12 [d4,f4]@20 [ab3,c4,eb4]@62 ~@2 [c4,eb4,g4]@12 [d4,f4]@20 g3@12 [ab3,c4]@16 [bb3,d4,f4]@4 [c4,eb4,g4], ~@43 bb3@32 ~@32 bb3@80 ~@16 bb3@30 ~@23, ~@63 eb4@28 ~@132 eb4@28 ~@5]/8", // Cm Dm Ab Bb Cm Dm Ab Cm …
  B: "[~@11 [d4,f4]@20 g3@12 ab3@20 g4@12 [d4,f4]@20 g3@12 [ab3,c4]@16 [bb3,d4,f4]@4 [c4,eb4,g4], ~@11 bb3@32 c4@32 bb3@32 ~@21, ~@31 eb4@44 ~@20 eb4@28 ~@5]/4", // Dm Ab Bb Cm
  C: "[~@11 [d4,f4]@20 [ab3,c4,eb4]@32 [ab3,db4,f4]@32 [bb3,g4]@32 [ab3,db4,f4]@32 [bb3,g4]@32 [db4,f4]@32 [c4,ab4]@32 [bb3,db4,gb4], ~@11 bb3@52 eb4@192 ~, ~@191 ab3@64 ~]/8", // Dm Ab Db Eb Db Eb Db Fm …
  D: "[~@11 [ab3,c4,f4]@20 [bb3,eb4,g4]@32 [c4,eb4,g4]@12 [d4,f4]@20 g3@12 [ab3,c4]@16 [bb3,d4,f4]@4 [c4,eb4,g4]@12 [d4,f4]@20 g3@12 ab3@20 g4@12 [d4,f4]@20 g3@12 [ab3,c4]@16 [bb3,d4,f4]@4 [c4,eb4,g4], ~@75 bb3@30 ~@34 bb3@32 c4@32 bb3@32 ~@21, ~@95 eb4@28 ~@36 eb4@44 ~@20 eb4@28 ~@5]/8", // Fm Eb Cm Dm Ab Bb Cm Dm …
  E: "[~@11 [ab3,c4,f4]@20 [c4,eb4,g4]@12 [d4,f4]@20 g3@12 [ab3,c4]@16 [bb3,d4,f4]@4 [c4,eb4,g4]@12 [d4,f4]@20 g3@12 [ab3,c4]@16 [bb3,d4,f4]@4 [c4,eb4,g4]@12 [d4,f4]@20 g3@12 [ab3,c4]@16 [bb3,d4,f4]@4 [c4,eb4,g4], ~@43 bb3@32 ~@32 bb3@32 ~@32 bb3@32 ~@21, ~@63 eb4@28 ~@36 eb4@28 ~@36 eb4@28 ~@5]/7", // Fm Cm Dm Ab Bb Cm Dm Ab …
  F: "[~@11 [ab3,c4,f4]@20 [bb3,eb4,g4]@32 [bb3,db4,gb4]@12 [ab3,c4,f4]@20 [g3,bb3,eb4]@32 ~]/4", // Fm Eb Gb Fm Eb
})).s("gm_pad_warm").gain(0.24).pan(0.4)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  ~@2 A B C D@2 ~@8 E F E F G H I J ~@8 E K E K G H ~@4 L M N O ~ P Q R Q S T U@2 ~@5
>`.pickRestart({
  A: "[c4,eb4]@4 ~@2 [c4,eb4]@6 [f3,bb3]@5 ~@11 f3@4, g3@3 ~ g3@8 d4@8 bb3@8 ~@4, ~@9 f3@5 ~@2, ~@22 d4@9 ~", // Cm Bb5
  B: "[g3,bb3,eb4]@5 ~ [g3,bb3]@6 [ab3,c4,eb4]@6 ab3@5 ~ [ab3,c4]@2 [bb3,d4]@2 [c4,eb4]@2 [d4,f4] ~", // Eb Gm Ab Bb Cm Dm
  C: "c4@2 ~ c4@3 [f3,bb3]@3 ~@2 d4@4 ~, [eb4,g4]@11 ~ d4@8 bb3@11 ~, ~@4 g3@8 ~@6 f3@13 ~", // Bb5 Eb
  D: "[[bb3,eb4]@4 ~@6 c4@2 bb3@6 c4@2 bb3@10 ~@2 [bb3,eb4]@31 ~, ab3@3 ~ ab3@26 ~ ab3@31 ~@2, ~@3 eb4@12 ~@17]/2", // Eb5
  E: "db4 ~@12 db4@2 ~, ~@2 ab3@14 ~@2 ab3@13 ~, ~@4 db4@13 ~@3 db4@5 ~@7, ~@3 eb4@7 ~ eb4@4 ~, ~@5 ab4@10 ~",
  F: "eb4@2 ~@4 f4@4 ~@16 eb4@5 ~, ~@2 bb3@15 ~ bb3@13 ~, ~@4 eb4@14 ~@2 eb4@5 ~@7, ~@10 g4@21 ~, ~@11 f4@4 ~",
  G: "db4 ~@4 ab4@4 ~@4 db4@2 ~, ~ ab3@7 ~ ab3@3 ~@4, ~@4 db4@13 ~@3 db4@4 ~@8, ~@3 eb4@6 ~@2 eb4@4 ~",
  H: "~@6 eb4@4 ~@4 eb4@3 ~@5 bb3@2 eb4@2 ~@4 eb4@2, eb4@4 bb3@6 ~@2 bb3@7 ~ ab3@4 ~@2 ab3@6, ~@2 ab3@7 ~ ab3@8 eb4@4 ~@6 bb3@4",
  I: "[bb3,db4,gb4]@11 ~ [ab3,c4,f4]@18 ~@2", J: "[g3,bb3,eb4]@31 ~",
  K: "eb4@2 ~@4 f4@4 ~@16 eb4@5 ~, ~@2 bb3@15 ~ bb3@13 ~, ~@4 eb4@13 ~@3 eb4@5 ~@7, ~@10 g4@21 ~, ~@11 f4@4 ~",
  L: "~@18 g3 ~ c4 ~ d4 ~ eb4@2 g4 ~ c5 ~ d5 ~", M: "eb5@2 ~ d5@2 ~ eb5 ~ g4@3 ~ ab4@3 ab4@9 ~@4 bb4@3 ~",
  N: "bb4@2 ~ ab4@2 g4@2 ~ eb4@10 ~@2 c4@2 d4@2 eb4 ~ f4@2 g4@2 ab4 ~", O: "g4@9 ~@23",
  P: "db4@2 ~@4 f4@4 eb4@2 ab4@19 ~, ~@2 ab3@27 ~@3, ~@4 db4@25 ~@3",
  Q: "eb4 ~@2 g4@2 f4 bb4@9 ~, ~ bb3@14 ~, ~@2 eb4@13 ~",
  R: "db4@2 ~@4 f4@4 eb4@2 ab4@19 ~, ~@2 ab3@27 ~@3, ~@2 db4@13 ~",
  S: "db4@2 ~@4 f4@4 eb4@2 ab4@19 ~, ~@2 ab3@29 ~, ~@2 db4@13 ~",
  T: "~@6 eb4@4 ~@4 eb4@4 ab3@2 ~@4 bb4@7 ~, eb4@4 bb3@5 ~@3 bb3@4 ~@4 bb3@11 ~, ~@2 ab3@7 ~ ab3@6 ~@6 eb4@9 ~",
  U: "[[bb3,db4,gb4]@6 [ab3,c4,f4]@9 ~ [bb3,eb4]@16, ~@31 g3@33]/2", // Gb Fm Eb5
})).s("gm_acoustic_guitar_nylon").gain(0.26).pan(0.6)

// other · acoustic guitar steel
const acoustic_guitar_steel = note("<~@23 A B C B D B C E ~@7 A B C B D B C F ~@13>".pickRestart({
  A: "g4@3 ~ bb4@2 f4@10", B: "g4@8 bb4@4 eb4@19 ~", C: "g4@8 bb4@4 f4@19 ~", D: "g4@2 bb4 f4@5",
  E: "~@4 g4 ~ eb5@2, eb4@31 ~, ~@3 f4@2 bb4@3", F: "eb4@31 ~",
})).s("gm_acoustic_guitar_steel").gain(0.23)

// other · string ensemble 2
const string_ensemble_2_2 = note(`<
  ~ A B@2 C D ~@9 E F G H I J K ~@8 L M N O P@2 Q A R@2 S@2 T U V@2 W X@2 Y Z AA@3 ~@5
>`.pickRestart({
  A: "~@7 bb4", B: "[g4@7 bb4@4 f4@8 bb4@12 g4@12 eb4@16 bb4@5]/2", C: "g4@7 bb4@4 f4@8 bb4@13", D: "bb4", E: "db5",
  F: "eb5@31 ~", G: "eb5@11 f5@21", H: "bb5", I: "eb6@3 f6@5", J: "ab6@3 bb6@5", K: "eb7",
  L: "~@4 bb3@3 eb4@4 f4@4 g4@4 bb4@4 ~ eb5@8", M: "ab4@11 bb4@12 ~ c5@8",
  N: "~@7 eb4@4 g4@4 bb4@4 eb5@4 f5@4 g5@4 ~, eb5 ~, ~@2 bb3@3 ~@11", O: "ab5@11 bb5@12 ~ f5@8",
  P: "[eb5@11 ab5@4 g5@4 ab5@4 bb5@8 eb6@25 f6@8]/2", Q: "bb6@3 eb7@5",
  R: "[g4@7 bb4@4 ~ f4@7 bb4@12 g4@12 eb4@16 bb4@5]/2", S: "[g4@7 bb4@4 ~ f4@8 bb4@11 g4@13 eb4@15 bb5@5]/2",
  T: "eb6@7 f6@4 ~ d6@7 eb6@4 f6@9", U: "bb5@8 c6@3 bb5@20 ~",
  V: "[eb6@8 f6@4 d6@7 c6@4 ~@8 bb6@32 ~, ~@23 bb5@40 ~]/2", W: "ab4@3 bb4@3 c5@2",
  X: "[~@4 bb3@4 eb4@3 f4@5 g4@4 bb4@4 eb5@19 f5@21, eb5@23 ~@41]/2", Y: "g5@11 bb5@21", Z: "eb6@11 f6@21",
  AA: "[ab6@11 bb6@20 eb7@65]/3",
})).s("gm_string_ensemble_2").gain(0.24)

// other · pan flute
const pan_flute = note(`<
  ~ A B C D@2 ~@4 E F ~@4 G@2 H@2 ~ I J ~@3 E F ~@4 G@2 K@2 ~ A B C B L B C D@2 ~ M@2 N@2 O I J ~@5
>`.pickRestart({
  A: "~@28 bb5@3 c6", B: "eb6@2 f6 d6@2 eb6 f6@2, d6 ~@31", C: "bb5@8 c6@4 bb5@14 ~@2 bb5@3 c6",
  D: "[eb6@2 f6 d6@2 c6 bb5@10, d6 ~@63]/2", E: "~@5 eb5 f5@2", F: "~ eb5@11 d5@8 c5@4 bb4@8",
  G: "[~@10 bb5 ~ eb6 ~ g6 ~ g6@6 eb6@6 bb5@9 ~@27]/2", H: "[~@10 g6 ~ eb6 ~ bb6 ~ f6@4 eb6@2 bb5@14 ~@28]/2",
  I: "db6@3 c6@5", J: "bb5", K: "[~@10 g6 ~ eb6 ~ g6 ~ f6@4 eb6@2 bb5@14 ~@28]/2", L: "bb6@8 c7@4 bb6@12 ~@4 bb5@3 c6",
  M: "[~@10 bb5 ~ eb6 ~ g6 ~ ab6@4 g6@4 eb6@12 ~@28]/2", N: "[~@6 g6 ~ bb6 ~ g6 ~ bb6 ~ bb6@6 g6@7 f6 ~ eb6@17 ~@18]/2",
  O: "~@14 bb5 c6",
})).s("gm_pan_flute").gain(0.33).pan(0.3)

// drums · kick
const kick = s("bd").struct("<~@2 A@4 ~ B@15 C B@14 C B@7 C B@7 C ~@5>".pickRestart({
  A: "x ~@5 x!2 ~@5 x ~ x", B: "x ~@5 x!2 ~@2 x ~@2 x ~ x", C: "x",
})).gain(0.35)

// drums · snare
const snare = s("sd").struct("<~@2 A@4 B A@15 ~ A@14 ~ A@7 ~ A@7 ~@6>".pickRestart({
  A: "~@4 x ~@4 x ~@2 x ~@3", B: "~@3 x",
})).gain(0.35)

// drums · hihat
const hihat = s("hh").struct("<A B C@4 ~ C@15 ~ C@14 ~ C@7 ~ C@7 ~@6>".pickRestart({
  A: "x!2", B: "x!4", C: "~ x ~@2 x!2 ~ x ~ x!2 ~ x!2 ~ x",
})).gain(0.4)

// drums · open hat
const open_hat = s("oh").struct("<~@2 A@4 ~ A@15 ~ A@14 ~ A@7 ~ A@7 ~@6>".pickRestart({
  A: "~ x ~@6",
})).gain(0.35)

// drums · tambourine
const tambourine = s("tb").struct("<~@2 A@4 ~ A@15 ~ A@14 ~ A@7 ~ A@7 ~@6>".pickRestart({
  A: "x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~",
})).gain(0.45)

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

// drums · shaker
const shaker = s("sh").struct(`<
  ~@2 A B A B ~ A C A B D B A E A C A C A E A ~ A C A B D B A E A C A C A E ~ A C A B D B A F A C A C A E A ~@6
>`.pickRestart({
  A: "x ~ x!3 ~ x ~ x ~ x ~ x ~ x ~", B: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!2", C: "x ~ x!3 ~ x ~ x ~ x ~ x ~ x!2",
  D: "x!8", E: "x ~ x!3 ~ x ~ x ~ x!3 ~ x!2", F: "x ~@2 x ~@2 x ~@9",
})).gain(0.35)

// drums · claves
const claves = s("clave:2").struct("<~@2 A@4 ~ A@15 ~ A@14 ~ A@7 ~ A@7 ~@6>".pickRestart({
  A: "~ x ~@6",
})).gain(1.94)

// drums · triangle
const triangle = s("triangles:35").struct("<~@2 A@4 ~ A@15 ~ A@14 ~ B@7 C A@7 ~@6>".pickRestart({
  A: "x ~ x ~@2 x ~ x ~@3 x!2 ~@2 x", B: "x ~ x!2 ~@4", C: "x",
})).gain(1.3)

stack(
  bass, string_ensemble_2, blown_bottle, pad_warm, acoustic_guitar_nylon, acoustic_guitar_steel, string_ensemble_2_2,
  pan_flute, kick, snare, hihat, open_hat, tambourine, crash, shaker, claves, triangle
)

More by B*Witched