Strudelify

Take a Chance With Me

Roxy Music

KeyF minorTempo124 bpm
0:00/0:00
// Take a Chance With Me — Roxy Music
// 124 bpm, 4/4, key F minor. 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; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(124/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 · slap bass 1 · "SLAPBASS 1"
const bass = note(`<
  ~ A ~ B ~ B ~ C ~ B ~@2 D E F ~ G ~ G ~ G ~@3 D E H I J K L I J K L M N O P M Q O P M N O P M Q O P R S T U R S T U R
  S T U R S T U V W X W M N O P M Q O P M N O P M Q O P R S T U R S T U R S T U R S T U I J K L I J K L I J I J K L I J
  I J K L I J I J Y@2
>`.pickRestart({
  A: "~@8 g1!2 ~ g1!2 ~@3", B: "~@8 f1!2 ~ f1!2 ~@3", C: "~@8 f2!2 ~ f2!2 ~@3", D: "c2@15 ~", E: "f1@14 ~ f1",
  F: "g1@6 ~ g1 f1!2 ~ f1!3 ~@2", G: "~@8 f1!2 ~ f1!3 ~@2", H: "g1", I: "f1@15 ~", J: "f1@9 ~ c1 d1 eb1@4", K: "f1@7 ~",
  L: "f1@10 c1 d1 eb1@3 ~", M: "ab1@5 ~ ab1 ~ ab1@2 g1@2 ab1@2 bb1@2", N: "c2@4 ~@2 c2 ~ c2@7 ~",
  O: "bb1@5 ~ bb1 ~ bb1@6 f2@2", P: "bb2@3 f2 bb1 f2 c2 bb1", Q: "c2@5 ~ c2 ~ c2@8", R: "f1@5 ~ f1@2 c2@4 f1@4",
  S: "bb1@5 ~ bb1@2 f2@4 bb1@4", T: "eb2@5 ~ eb2@2 bb1@4 eb2@4", U: "ab1@6 g1@9 ~", V: "f2@4 ~@2 f2 ~ f2@5 ~@3",
  W: "f2@3 ~ f2 ~ f2 ~ f2@4 ~@2 f2 ~", X: "f2@4 f3 ~ eb3@2 f3 ~ eb3@4 ~@2, ~@6 f2 ~ f2@5 ~@3", Y: "[f1@7 ~]/2",
})).s("gm_slap_bass_1").gain(0.47)

// bass · slap bass 1 · "SLAPBASS 1" · soft notes
const bass_soft = note("<~ A B C D C D E F C D ~@3 G H G H G H G H ~@107>".pickRestart({
  A: "~@13 g1 ~ g1", B: "g1!2 ~ g1!2 ~@11", C: "~@13 f1 ~ f1", D: "f1!2 ~ f1!2 ~@11", E: "~@13 f2 ~ f2",
  F: "f2!2 ~ f2!2 ~@11", G: "~@15 f1", H: "f1!2 ~ f1!3 ~ f1 ~@8",
})).s("gm_slap_bass_1").gain(0.13)

// other · oboe
const oboe = note(`<
  ~ A B ~@3 C D E@2 F G H I J@2 ~ K L@2 M N@2 D O P@2 ~@4 Q R S@2 ~@74 T@4 ~@2 U V W@2 ~@2 X@4 ~@4
>`.pickRestart({
  A: "~@7 ab4 gb4 g4@6 ~", B: "g5 ~", C: "~ c6", D: "bb5 ab5", E: "[g5@8 f5@18 ~@5 c5]/2", F: "eb5 f5 g5@2", G: "ab5",
  H: "g5", I: "ab5 f5", J: "[eb5 f4@2 ~]/2", K: "~@4 f4@2 ~ ab4@9", L: "[c5@3 ~]/2", M: "c5 g5",
  N: "[eb5 f5 c6@4 c6@2]/2", O: "g5 e5", P: "[f5 c5@7]/2", Q: "c5", R: "bb4@7 ab4", S: "f4/2",
  T: "[f5@8 f4@7 bb4@16 c5@18 ~@15]/4", U: "bb4", V: "g4", W: "[ab4@9 ~@7]/2", X: "[bb4@15 c5@34 ~@15]/4",
})).s("gm_oboe").gain(0.37)

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  A@2 B@2 C D E@2 C F@2 G@5 C D E@2 C F@2 H@4 I@8 ~@16 J K L@2 J K L@2 J K L@2 J K L@2 ~@20 J K L@2 J K L@2 J K L@2 J K
  L@2 ~@26
>`.pickRestart({
  A: "[~@15 g4@11 ~@6]/2", B: "[~ f5@2 eb5]/2", C: "c5 bb4", D: "f4 bb4", E: "[c5 f5@2 eb5]/2", F: "[f4@3 [e3,e4]]/2",
  G: "[[f3,f4]@15 ~@9 e3@7 ~ f4@15 ~ g3@8 f5@16 eb5@8, ~@15 g3@9 ~@7 f3@17 ~@32, ~@16 e4@16 ~@15 g4@9 ~@24]/5", // F
  H: "[[f3,f4]@15 ~@9 e3@3 ~@5 f4@15 ~ g3@16, ~@15 g3@9 ~@7 f3@17 ~@16, ~@16 e4@16 ~@15 g4@17]/4", I: "f3/8",
  J: "ab3@2 c4@2 f4@11 ~", K: "bb3@2 d4@2 f4@11 ~", L: "[bb4 eb5 g5 bb5 ab5@2 g5 f5@9]/2",
})).s("gm_string_ensemble_1").gain(0.29)

// other · synth bass 1 · "SYN BASS 1"
const synth_bass_1 = note(`<
  ~@10 A B C B D@2 E F G@2 E H I B C B J K@2 L M N@4 ~@2 O P Q ~ R S L ~ T U@2 ~ V@2 ~@3 W ~@3 X Y ~@2 Z AA ~@2 AB AC@3
  AD ~@2 O P Q ~ R S L ~ T U@2 ~ V@2 ~@3 W ~@3 X Y ~@2 Z AA ~@2 AB AE ~@2 AF AG AH AI@4 AG AH AI@4 AG AH AI@4 AG AH AJ@2
>`.pickRestart({
  A: "~ e3", B: "f3 c3 ab3 f3", C: "g3 e3", D: "[g3 f5@2 eb5]/2", E: "c5 bb4", F: "f4", G: "[c5 f5@2 eb5]/2",
  H: "f4@8 ab4 g4 ~ f4 ~@4", I: "c5@7 ~ e3@8", J: "g3", K: "[c4@31 ~]/2", L: "c4", M: "bb3@7 ab3",
  N: "[f3@26 eb3@2 ~@2 ab3@11 ~ eb3@2 ~@2 ab3@11 ~ eb3 ~ f3@2 ab3 ~, ~@28 f3@13 ~@3 f3@13 ~@7]/4",
  O: "~@6 d4@5 ~ d4@4, ~ bb3@3", P: "[bb3,db4]@7 ~ db4@2 eb4 ~ f4@4", Q: "eb4 ~", R: "~ f3 bb3 d4@3 d4@2",
  S: "db4@5 c4 bb3 c4", T: "~@4 ab4@3 ~", U: "[[f4,ab4]@5 eb4 db4 c4@4 ~@5]/2",
  V: "[~@4 bb4@4 ab4@5 ~@3 ab4@15 ~, ~@14 db4@17 ~]/2", W: "ab3@2 c4@2 eb4@2 f4@5 ~ c4@2 ab3@2",
  X: "ab3 c4 f4 c4 ~@2 f4@2, ~ g3, ~@5 c4@3", Y: "f3 c4 f4@4 ~@2", Z: "~ f4 ab4 ~ f4 ab4 c4 ab3, c4@5 ~ c4@4 ~@6",
  AA: "f3@7 ~@9", AB: "~@2 f4 ab3 c4 f4 ~ ab3, ab3@5 ~@11, ~ c4@2 ~@3 c4@2", AC: "[f3@12 ~ bb3 ab3 f3@9]/3",
  AD: "f3, eb3 ~@15", AE: "[f3,c4]", AF: "~ e3 f3 c3", AG: "ab3", AH: "f3", AI: "[g3@3 c3@23 e3@2 f3@2 c3@2]/4",
  AJ: "[g3@7 ~]/2",
})).s("gm_synth_bass_1").gain(0.34)

// other · contrabass
const contrabass = note("<~@2 A@4 B@5 C D E F@4 B@5 C D E D ~@77 G@2 ~@23>".pickRestart({
  A: "[~@3 f5@3 eb5@4 bb4@6]/4", B: "[~ eb5 f5@4 eb5@4 bb4@8 e5@2]/5", C: "f5 c6@3", D: "g5", E: "ab5 f5",
  F: "[g5 f5@2 eb5@2 bb4@3]/4", G: "[~@2 f4@3 eb4@2 f4@2 bb3@2 c4@5]/2",
})).s("gm_contrabass").gain(0.37)

// other · shakuhachi
const shakuhachi = note(`<
  ~@35 A@3 ~ B@3 ~ C@4 D@3 ~ E@3 ~ F@3 ~ G@3 ~ H@3 ~@5 A@3 ~ B@3 ~ C@4 D@3 ~ E@3 ~ F@3 ~ G@3 ~ H@3 ~@27
>`.pickRestart({
  A: "[~@8 ab4 ~ ab4@4 c5@9 ~ eb5@2 c5@4 bb4@17 ~]/3", B: "[~@6 ab4 ~ ab4 ~ ab4@2 ~@2 c5@7 ~ c5 ~ eb5@2 c5@4 bb4@18]/3",
  C: "[~@4 f5 eb5 f5 eb5@5 f5 c5@2 bb4@10 ~@7]/4", D: "[~@6 ab4 ~ ab4@4 bb4@2 c5@9 ~ eb5@2 c5@4 bb4@16 ~@2]/3",
  E: "[~@4 f5 eb5@2 d5@5 eb5@2 f5 g5@4 ~@5]/3", F: "[~@8 f5@4 eb5@2 d5@8 ~@2 eb5@4 bb4 ~ bb4@10 ~@8]/3",
  G: "[~@8 f5@2 eb5@4 d5@10 eb5@4 bb4 ~ bb4@8 ~@10]/3", H: "[~@8 f5@2 eb5@4 d5@8 eb5 ~ eb5@3 ~ eb5 ~ eb5@8 ~@10]/3",
})).s("gm_shakuhachi").gain(0.51)

// other · flute
const flute = note(`<
  ~@51 A@3 ~ B@3 ~ C@3 ~ D@3 ~@21 A@3 ~ B@3 ~ C@3 ~ D@3 ~@4 E F G H@4 F G H@4 F G H@4 F G I@2
>`.pickRestart({
  A: "[~@8 f4@2 g4@4 bb4@10 c5@4 bb4 ~ bb4@9 ~@9]/3", B: "[~@8 f4@4 g4@2 bb4@10 c5@4 bb4 ~ bb4@14 ~@4]/3",
  C: "[~@8 f4@2 g4@4 bb4@10 c5@4 bb4 ~ bb4@7 ~@11]/3",
  D: "[~@8 f4@2 g4@2 ~@2 bb4@7 ~ bb4 ~ bb4@3 ~ bb4 ~ bb4@8 ~@10]/3", E: "~ e3 f3 c3", F: "ab3", G: "f3",
  H: "[g3@3 c3@23 e3@2 f3@2 c3@2]/4", I: "[g3@7 ~]/2",
})).s("gm_flute").gain(0.27)

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

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

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~@10 A B@3 ~@8 A B@3 ~@19 C ~@4 D ~@14 E F ~@14 C ~@4 D ~@14 E F ~@26
>`.pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~@5 x ~@2", D: "~@6 x!4 ~@6", E: "~@7 x", F: "~ x ~@6",
})).gain(0.4)

// drums · low tom
const low_tom = s("lt").struct("<~@4 A ~ B@4 C@16 ~@8 D ~@91 E ~@2>".pickRestart({
  A: "x", B: "~ x", C: "~@8 x!2 ~ x!2 ~@3", D: "~@5 x ~ x", E: "~@3 x",
})).gain(0.32)

// drums · low tom · soft notes
const low_tom_soft = s("lt").struct("<~@10 [~@13 x ~ x] [x ~@12 x ~ x]!15 ~@103>").gain(0.08)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@2 A B@3 A B@3 C ~@16 D@15 E D@9 F G H D@5 F G H D@15 E D@9 F G H D@5 F G H D@28 ~@2
>`.pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~ x ~@2", D: "x!7 ~", E: "x!5 ~@3", F: "x!8", G: "x!3 ~ x!4", H: "x!3 ~ x!3 ~",
})).gain(0.48)

// drums · mid tom
const mid_tom = s("mt").struct("<~@4 [x!2 ~ x ~@12] ~@14 [~ x ~ x ~@12] ~@14 [~@11 x!2 ~@3] ~@94>").gain(0.56)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@6 A ~@14 B A ~@4 C@15 D C@9 ~ E F C@5 ~ E F C@15 D C@9 ~ E F C@5 ~ E F C@27 ~@3
>`.pickRestart({
  A: "x!2 ~ x!3 ~@10", B: "~@12 x!2 ~ x", C: "~@7 x", D: "~@3 x", E: "~@3 x ~@4", F: "~@3 x ~@3 x",
})).gain(0.48)

// drums · high tom
const high_tom = s("ht").struct("<~@4 [~@4 x!2 ~ x ~@8] ~@10 [~ x ~@2 x ~@11] ~@3 [~@3 x!2 ~@11] ~@109>").gain(0.72)

// drums · crash
const crash = s("cr").struct(`<
  ~@6 A ~@15 B ~@24 C ~@3 C ~@2 D ~@3 D ~@3 D ~@3 D ~@3 E ~@12 C ~@3 C ~@2 D ~@3 D ~@3 D ~@3 D C ~@23 C ~
>`.pickRestart({
  A: "~@7 x ~@8", B: "~@7 x!2 ~@7", C: "x", D: "~@3 x", E: "~ x ~@2",
})).gain(0.72)

// drums · congas
const congas = s("conga:18").struct("<~@14 A B C D E B C D E B C D ~@103>".pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~@4 x ~@6 x ~@4", D: "~@4 x ~@4 x ~@2 x ~@3", E: "~ x ~@10 x ~@3",
})).gain(1.79)

// drums · congas
const congas_2 = s("conga:33").struct("<~@14 A B C D E B C D E B C D ~@103>".pickRestart({
  A: "~@8 x!2 ~ x ~@3 x", B: "x!2 ~ x ~@3 x!3 ~ x ~@3 x", C: "x!2 ~ x ~@3 x!3 ~@5 x", D: "x!2 ~ x ~@3 x!2 ~@2 x ~@3 x",
  E: "x ~@2 x!2 ~@3 x!2 ~ x ~@3 x",
})).gain(1.79)

// drums · shaker
const shaker = s("sh").struct("<~@14 A B C@2 D E C@2 F B C@2 ~ G@15 H G@35 H G@47 H ~@2>".pickRestart({
  A: "~@11 x!2 ~@3", B: "~@4 x ~@4 x ~@6", C: "~ x ~@7 x ~@6", D: "~ x ~ x ~@5 x ~@6", E: "~ x ~@3 x ~@6 x ~@3",
  F: "~ x ~@3 x ~ x ~@3 x!2 ~@3", G: "x!8", H: "x!7 ~",
})).gain(0.48)

stack(
  bass, bass_soft, oboe, string_ensemble_1, synth_bass_1, contrabass, shakuhachi, flute, kick, snare, snare_soft,
  low_tom, low_tom_soft, hihat, mid_tom, open_hat, high_tom, crash, congas, congas_2, shaker
)

More by Roxy Music