Strudelify

only human

Jonas Brothers

KeyF majorTempo94 bpm
0:00/0:00
// only human — Jonas Brothers
// 94 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5922288; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 70 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(94/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// other · marimba · "Xylophone"
const marimba = note(`<
  ~@5 A B A B ~@8 A B A B A B A C ~@8 A D A B ~@5 E F G A B A B A B A C ~@8 A D A B A D A B A
>`.pickRestart({
  A: "f5 ~ f5!2 a5!2 f5 ~@3 e5!2 g5!2 e5 ~", B: "d5 ~ d5!2 f5!2 d5 ~@9", C: "d5 ~ d5!2 ~@12",
  D: "d5 ~ d5!2 f5!2 d5 ~@3 d6 ~ c6 ~ bb5 ~", E: "~@5 d6 c6 bb5", F: "[f5,a5] [e5,g5]", G: "f5 d5 ~@6, e5 ~@15",
})).s("gm_marimba").gain(0.4)

// bass · electric bass finger · "Electric Bass"
const bass = note(`<
  ~ A B A C A B A C D E D F A B A C A B A C A B A C ~@8 A B A C G E D F A B A C A B A C A B A C ~@8 A B A C A B A B ~
>`.pickRestart({
  A: "d1 ~ d2 ~ c1 ~ c2 ~", B: "g0 ~ g1 ~ g0 ~ g1 ~", C: "g0@2 ~@2 g1@2 ~@2 g0@2 ~@2 g1 f1@3",
  D: "d1 d2 ~ d2 c1 c2 ~ c2", E: "g0 g1 ~ g1 ~ g1 ~ g1", F: "g0@2 g1@2 ~@2 g1@2 ~@2 g1@2 g1 f1@3", G: "d1 ~@6 c2",
})).s("gm_electric_bass_finger").gain(0.2)

// chords · piano
const piano = note(`<
  A B C B D B C B D E F E G B C B D B C B D B C B D H I H I H I H J B C B D K L M N B C B D B C B D B C B D H I H I H I
  H J B C B D B C B C ~
>`.pickRestart({
  A: "~@7 d5", B: "d2 [f4,a4,d5] d3 [f4,a4,d5] c2 [e4,g4,c5] c3 [e4,g4,c5]",
  C: "g1 [d4,g4,bb4] g2 [d4,g4,bb4] g1 [d4,g4,bb4] g2 [d4,g4,bb4]", // Gm
  D: "g1@2 [d4,g4,bb4]@2 g2@2 [d4,g4,bb4]@2 g1@2 [d4,g4,bb4]@2 g2 ~ [d4,g4,bb4]@2, ~@13 f2@3", // Gm
  E: "[d2,d4] d3 ~ d3 [c2,c4] c3 ~ c3", F: "[g1,g4] g2 ~ g2 ~ g2 ~ g2",
  G: "[g1,g4]@2 g2@2 ~@2 g2@2 ~@2 g2@2 g2 ~@2 [a5,d6], ~@13 f2@3, ~@7 [d5,f5]", // G D5 Dm
  H: "~ [f4,a4,d5] ~ [f4,a4,d5] ~ [e4,g4,c5] ~ [e4,g4,c5], [d3,d4] [c3,c4]", // Dm C D C
  I: "~ [d4,g4,bb4] ~ [d4,g4,bb4] ~ [d4,g4,bb4] ~ [d4,g4,bb4], [g2,g3]@15 ~", // Gm G
  J: "~ [d4,g4,bb4] ~ [d4,g4,bb4] ~ [d4,g4,bb4] ~ [d4,g4,bb4]", K: "d2 ~@6 c3", L: "g1 g2 ~ g2 ~ [g2,d5] c5 [g2,bb4]",
  M: "d2 d3 ~ d3 c2 c3 ~ c3, [f4,a4] [e4,g4]", // F Em
  N: "[g1,f4]@2 [g2,d4]@2 ~@2 g2@2 ~@2 g2@2 g2 ~@2 [a5,d6], e4 ~@12 f2@3, ~@7 [d5,f5]", // G7 G5 D5 Dm
})).s("gm_piano").gain(0.25)

// chords · brass section · "Brass"
const brass_section = note(`<
  A B C B D B C B D ~@4 B C B D B C B D B C B D ~@4 E F E G B C B D ~@4 B C B H B C B D B C B D ~@4 E F E G B C B D B C
  B C ~
>`.pickRestart({
  A: "~@7 d5", B: "d2 [f4,a4,d5] d3 [f4,a4,d5] c2 [e4,g4,c5] c3 [e4,g4,c5]",
  C: "g1 [d4,g4,bb4] g2 [d4,g4,bb4] g1 [d4,g4,bb4] g2 [d4,g4,bb4]", // Gm
  D: "g1@2 [d4,g4,bb4]@2 g2@2 [d4,g4,bb4]@2 g1@2 [d4,g4,bb4]@2 g2 ~ [d4,g4,bb4]@2, ~@13 f2@3", // Gm
  E: "~ [f4,a4,d5] ~ [f4,a4,d5] ~ [e4,g4,c5] ~ [e4,g4,c5], [d3,d4] [c3,c4]", // Dm C D C
  F: "~ [d4,g4,bb4] ~ [d4,g4,bb4] ~ [d4,g4,bb4] ~ [d4,g4,bb4], [g2,g3]", // Gm G
  G: "~ [d4,g4,bb4] ~ [d4,g4,bb4] ~ [d4,g4,bb4] ~ [d4,g4,bb4]", // Gm
  H: "f4 e4 f4 ~ g2@2 g4 ~ g1@2 a4 bb4 [g2,c5] bb4 c5 d5, g1@2 ~ g4@3 ~ a4@3 ~@3 f2@3", // C5
})).s("gm_brass_section").gain(0.2)

// drums · kick
const kick = s("bd").struct("<~ A@24 ~@8 A@4 ~ A@15 ~@8 A@8 ~>".pickRestart({
  A: "x!4",
})).gain(0.2)

// drums · snare
const snare = s("sd").struct("<A B@24 ~@7 A B@4 ~ B@15 ~@7 A B@8 ~>".pickRestart({
  A: "x!3 ~ x!3 ~ x!8", B: "~ x ~ x",
})).gain(0.2)

// drums · clap
const clap = s("cp").struct("<~ A@24 ~@8 A@4 ~ A@15 ~@8 A@8 ~>".pickRestart({
  A: "~ x ~ x",
})).gain(0.3)

// drums · hihat
const hihat = s("hh").struct("<~ A@24 ~@8 A@4 ~ A@15 ~@8 A@8 ~>".pickRestart({
  A: "~@3 x ~@3 x ~@3 x ~@3 x",
})).gain(0.2)

// drums · open hat
const open_hat = s("oh").struct("<~ A@24 ~@8 A@4 ~ A@15 ~@8 A@8 ~>".pickRestart({
  A: "~ x ~ x ~ x ~ x",
})).gain(0.2)

// drums · crash
const crash = s("cr").struct("<~@33 x ~@27 x ~@3 x ~@4>").gain(0.3)

stack(marimba, bass, piano, brass_section, kick, snare, clap, hihat, open_hat, crash)