Strudelify

Try Me

James Brown

KeyC majorTempo70 bpm
0:00/0:00
// Try Me — Brown James
// 70 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 63 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(70/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 · "Bass"
const bass = note(`<
  ~ A B C D E F C D G H A B C D E F C D G H A B C D E F C D G H A B C D E F C D G H A B C D E F C D G H A B C D E F C D
  G H I J
>`.pickRestart({
  A: "c2@9 ~ c2@2 c2@8 c2@2 b1@2", B: "a1@8 ~@2 a1 ~ a1@8 a1 ~ a1 ~", C: "f2@8 ~@2 f2 ~ f2@3 ~ f2@3 ~ f2 ~ f2 ~",
  D: "g2@8 ~@2 g2 ~ g2@2 ~@8 g2@2", E: "c2@8 ~@2 c2 ~ c2@3 ~ c2@3 ~ c2 ~ c2 ~",
  F: "a1@8 ~@2 a1 ~ a1@3 ~ a1@3 ~ a1 ~ a1 ~", G: "c2@7 ~ c2 ~ c2 ~ f2@8 f2 ~ f2 ~", H: "c2@8 c1 ~ g1 ~ g2@2 ~@8 d2@2",
  I: "c2@9 ~ c2 ~ g1@8 ~@2 g1 ~", J: "c2@4 ~@2 g1@6 c2@7 ~@5",
})).s("gm_fretless_bass").gain(0.32)

// chords · epiano1 · "EPiano 1"
const epiano1 = note(`<
  ~ A B C D E B C D F G A B C D E B C D F G A B C D E B C D F G A B C D E B C D F G A B C D E B C D F G A B C D E B C D
  F G H I
>`.pickRestart({
  A: "[g3,c4,e4]@18 c4@2 e4@2 g4 ~", B: "[a3,c4,e4]@18 a3@2 c4@2 e4 ~",
  C: "~@16 c4@2 ~@2 f4@2 a4 ~, [f2,a4]@23 ~, f4@5 ~, c4@16 ~@2 c4@5 ~, ~@14 a3@9 ~", // F
  D: "[g3,b3,d4]@3 [g3,b3,d4] ~@2, ~@6 g2 ~@5", // G
  E: "~@16 c4@2 ~@2 e4@2 g4 ~, [c3,g4]@11 ~, e4@5 ~, c4@8 ~ c4@2 ~, ~@14 g3@9 ~", // C5
  F: "[g3,c4,e4]@12 ~@4 c4@2 ~@2 f4@2 a4 ~, ~@6 [f2,a4]@5 ~, ~@3 f4@2 ~, ~@6 c4@2 ~ c4@2 ~, ~@7 a3@4 ~", // C F
  G: "[g3,c4,e4]@6 [g2,d4,g4,b4] ~@5", H: "[g3,c4,e4]", I: "~@3 c4 e4 g4 [g3,c4,e4] ~@5",
})).s("gm_epiano1").gain(0.24)

// chords · string ensemble 1 · "Strings"
const string_ensemble_1 = note(`<
  ~ A B C D E F C D G H A B C D E F C D G H A B C D E F C D G H A B C D E F C D G H A B C D E F C D G H A B C D E F C D
  G H I@2
>`.pickRestart({
  A: "[e6,g6]", B: "~ e5, [c6,e6]", C: "[a5,f6]", D: "[g6,b6]@9 ~@3 [g6,b6]@2 ~@10", E: "[g5,e6]", F: "[e5,c6]",
  G: "[g5,e6] [a5,f6]", H: "[c6,e6]@9 ~@3 [b5,g6]@2 ~@10", I: "[[g5,e6]@27 ~@9 [g5,e6]@10 ~@2]/2",
})).s("gm_string_ensemble_1").gain(0.16)

// chords · trumpet
const trumpet = note(`<
  ~@3 A B ~@2 A B C D ~@2 A B ~@2 A B C E F G A H F I A B C J ~@2 A B ~@2 A B C D ~@2 A B ~@2 A B C E F I A H F I A B K
  E L@2
>`.pickRestart({
  A: "f3 ~ f3 ~ f3 ~ [f3,a3] ~ [f3,a3] ~ [f3,a3] ~ [f3,a3,c4] ~ [f3,a3,c4] ~ [f3,a3,c4] ~ [f3,a3,c4,f4] ~ [f3,a3,c4,f4] ~ [f3,a3,c4,f4] ~", // F
  B: "[g3,b3,d4,g4] ~ [g3,b3,d4,g4] ~ [g3,b3,d4,g4] ~ [g3,b3,d4,g4] ~ [g3,b3,d4,g4] ~ [g3,b3,d4,g4] ~ [g3,b3,d4,g4] ~@11", // G
  C: "~@6 [f4,a4]@2 ~ [f4,a4]@2 ~", D: "a4@2 g4@3 ~@7, e4@3 ~@5", E: "a4@2 g4@3 ~@4 c4 b3 a3, e4@3 ~@5",
  F: "c4@9 a3 g3 f3", G: "a3@8 ~ f3 e3 d3",
  H: "[g3,b3,d4,g4] ~ [g3,b3,d4,g4] ~ [g3,b3,d4,g4] ~ [g3,b3,d4,g4] ~ [g3,b3,d4,g4] ~ [g3,b3,d4,g4] ~ [g3,b3,d4,g4] ~@5 c4@2 b3@2 a3@2", // G
  I: "a3@9 f3 e3 d3", J: "a4@4 g4@7 ~@13, e4@3 ~@5", K: "~@4 [f4,a4] ~ [f4,a4] ~",
  L: "[c4@6 e4@2 d4@2 c4@2 e4@33 ~@3]/2",
})).s("gm_trumpet").gain(0.36)

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

// drums · snare
const snare = s("sd").struct(`<
  ~ A B A C A B A C A D A B A C A B A C A D A B A C A B A C A D A B A C A B A C A D A B A C A B A C A D A B A C A B A C
  A D A E
>`.pickRestart({
  A: "~ x ~ x", B: "~@3 x ~ x ~@3 x ~@2", C: "~ x ~@2", D: "~@2 x!2 ~@2 x ~@2 x ~@2", E: "~ x!2 ~",
})).gain(0.36)

// drums · hihat
const hihat = s("hh").struct(`<
  A B C D E F G F E B H B C D E F G F E B H B C D E F G F E B H B C D E F G F E B H B C D E F G F E B H B C D E F G F E
  B H I J
>`.pickRestart({
  A: "x!4", B: "x ~ x!5 ~ x!4", C: "x ~ x!3 ~ x ~ x!4", D: "x!12", E: "x ~ x!5 ~ x!3 ~", F: "x ~ x!6 ~ x!3",
  G: "x ~ x!2 ~@2 x ~ x!4", H: "~@6 x!5 ~", I: "x ~ x!2 ~ x!2 ~ x!2 ~ x", J: "x!2 ~@4",
})).gain(0.36)

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

// drums · high tom
const high_tom = s("ht").struct("<~@10 A ~@9 A ~@9 A ~@9 A ~@9 A ~@9 A ~@2>".pickRestart({
  A: "~@5 x ~@6",
})).gain(0.36)

// drums · crash
const crash = s("cr").struct("<~ A ~@9 A ~@9 A ~@9 A ~@9 A ~@9 A ~@9 A B>".pickRestart({
  A: "x", B: "~ x",
})).gain(0.36)

stack(bass, epiano1, string_ensemble_1, trumpet, kick, snare, hihat, open_hat, high_tom, crash)

More by James Brown