Strudelify

One (your name)

C. Ryan

KeyD minorTempo120 bpm
0:00/0:00
// One (your name) — C. Ryan
// 120 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/67058; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 80 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [...]/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.

// other · clarinet · "Bb Clarinet"
const clarinet = note("<~@12 A@16 B@4 C@8 D@4 E@2 F@2 G@2 A@2 G@26 H@2>".pickRestart({
  A: "[a4@3 g4@3 f4@3 e4@3 d4@3 d4@3 d4@3 d4@3 d4@3 ~ d4@2 d4@2]/2", B: "d4 ~ d4 ~ d4 ~ d4 ~ d4 ~ d4 ~ d4 ~ d4 ~",
  C: "[a4@3 a4@3 a4@3 a4@3 a4@3 a4@3 a4@3 a4@3 a4@3 ~@5]/2", D: "[c5@3 c5@3 c5@3 c5@3 c5@3 c5@3 c5@3 c5@3 c5@3 ~@5]/2",
  E: "[e5@3 e5@3 e5@3 e5@3 e5@3 e5@3 e5@3 e5@3 e5@3 ~@5]/2",
  F: "[f5@3 f5@3 f5@3 f5@3 f5@3 f5@3 f5@3 f5@3 f5@3 ~ a4@2 a4@2]/2",
  G: "[a4@3 g4@3 f4@3 d4@3 d4@3 d4@3 d4@3 d4@3 d4@3 ~ d4@2 d4@2]/2",
  H: "[a4@3 c5@3 d5@3 e5@3 a5@3 a5@3 a5@3 a5@3 a5@3 ~ a5@2 a5@2]/2",
})).s("gm_clarinet").gain(0.2)

// other · alto sax · "Alto Saxophone"
const alto_sax = note("<~@20 A@8 B@4 C@12 ~@3 D A@8 ~@8 A@14 E@2>".pickRestart({
  A: "[d4@3 e4@3 f4@3 g4@3 f4@3 e4@3 d4@3 c4@3 a3@3 ~ a3@2 c4@2]/2", B: "d4 ~ d4 ~ d4 ~ d4 ~ d4 ~ d4 ~ d4 ~ d4 ~",
  C: "[a4@3 a4@3 a4@3 a4@3 a4@3 a4@3 a4@3 a4@3 a4@3 ~@5]/2", D: "~@6 d4!2",
  E: "[a3@3 c4@3 d4@3 e4@3 a4@3 a4@3 a4@3 a4@3 a4@3 ~ a4@2 a4@2]/2",
})).s("gm_alto_sax").gain(0.2)

// other · tenor sax · "Tenor Saxophone"
const tenor_sax = note("<~@11 A B C D@2 B E D@2 B E F@2 B G H I ~@27 A B C D@2 ~ G H I ~@12 J@2 K L>".pickRestart({
  A: "~@3 d4!4 a4", B: "a4 ~@3", C: "~@4 d4 f4 a4@2", D: "[a4@2 d4!4 a4 a4@2 ~@2 d4!4 a4]/2", E: "~@4 d4!2 f4 g4",
  F: "[a4@2 d4!4 f4 a4@2 ~@2 d4!4 a4]/2", G: "~@3 d4!2 f4 g4 a4", H: "a4@2 a4@2 c5@2 c5!2", I: "c5@2 c5 ~@5",
  J: "[a4@3 g4@3 f4@3 d4@3 d4@3 d4@3 d4@3 d4@3 d4@3 ~ d4@2 d4@2]/2", K: "a3@3 c4@3 d4@3 e4@3 a4@3 a4",
  L: "a4@2 a4@3 a4@3 a4@3 ~ a4@2 a4@2",
})).s("gm_tenor_sax").gain(0.3)

// other · baritone sax · "Baritone Saxophone"
const baritone_sax = note("<~@12 A B C D A B C D A B C D A B C D ~@4 E@12 ~@4 F@8 ~@8 F@12 ~@4>".pickRestart({
  A: "d3", B: "f3", C: "a3", D: "g3", E: "[a3@3 g3@3 f3@3 e3@3 d3@3 d3@3 d3@3 d3@3 d3@3 ~ d3@2 d3@2]/2",
  F: "[d3@3 e3@3 f3@3 g3@3 f3@3 e3@3 d3@3 c3@3 a2@3 ~ a2@2 c3@2]/2",
})).s("gm_baritone_sax").gain(0.3)

// other · trumpet · "Bb Trumpet"
const trumpet = note(`<
  ~@11 A B C D@2 B E D@2 B E F@2 B G H I ~@11 A J K ~ A L@2 M@2 ~@7 A B C D@2 B G H I ~@12 N@2 O@2
>`.pickRestart({
  A: "~@3 d4!4 a4", B: "a4 ~@3", C: "~@4 d4 f4 a4@2", D: "[a4@2 d4!4 a4 a4@2 ~@2 d4!4 a4]/2", E: "~@4 d4!2 f4 g4",
  F: "[a4@2 d4!4 f4 a4@2 ~@2 d4!4 a4]/2", G: "~@3 d4!2 f4 g4 a4", H: "d5@2 d5@2 f5@2 g5 a5", I: "a5@2 a5 ~@5",
  J: "a4!4", K: "a4!2 ~@2", L: "[a4@3 g4@3 f4@3 e4@3 f4@3 f4@3 f4@3 f4@3 f4@3 ~@3 a4@2]/2",
  M: "[d5@3 d5@3 d5@3 d5@3 d5@3 d5@3 d5@3 d5@3 d5@3 ~@5]/2",
  N: "[a4@3 g4@3 f4@3 d4@3 d4@3 d4@3 d4@3 d4@3 d4@3 ~ d4@2 d4@2]/2",
  O: "[a4@3 c5@3 d5@3 e5@3 a5@3 a5@3 a5@3 a5@3 a5@3 ~ a5@2 a5@2]/2",
})).s("gm_trumpet").gain(0.3)

// other · french horn · "F Mellophone"
const french_horn = note(`<
  ~@20 A@8 B@4 ~@8 C@2 D@2 ~@4 C@2 D@2 C@2 D@2 ~@8 C@2 D@2 C@2 D@2 C@2 D@2 C@2 E@2
>`.pickRestart({
  A: "[d4@3 e4@3 f4@3 g4@3 f4@3 e4@3 d4@3 c4@3 a3@3 ~ a3@2 c4@2]/2", B: "f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ f4 ~",
  C: "[a4@3 g4@3 f4@3 e4@3 f4@3 f4@3 f4@3 f4@3 f4@3 ~ f4@2 f4@2]/2",
  D: "[a4@3 g4@3 f4@3 e4@3 g4@3 g4@3 g4@3 g4@3 g4@3 ~ g4@2 g4@2]/2",
  E: "[a3@3 c4@3 d4@3 e4@3 a4@3 a4@3 a4@3 a4@3 a4@3 ~ a4@2 a4@2]/2",
})).s("gm_french_horn").gain(0.2)

// bass · tuba · "Euphonium"
const bass = note("<~@4 A@2 B@2 A@2 B@2 C D E F C D E F C D E F C D E F ~@4 G@12 ~@4 G@8 ~@8 G@14 H@2>".pickRestart({
  A: "[f3@3 e3@3 d3@3 c3@3 d3@3 d3@3 d3@3 d3@3 d3@3 ~ d3@2 d3@2]/2",
  B: "[f3@3 e3@3 d3@3 c3@3 e3@3 e3@3 e3@3 e3@3 e3@3 ~ e3@2 e3@2]/2", C: "f2", D: "a2", E: "c3", F: "b2",
  G: "[a3@3 g3@3 f3@3 e3@3 d3@3 d3@3 d3@3 d3@3 d3@3 ~ d3@2 d3@2]/2",
  H: "[a2@3 c3@3 d3@3 e3@3 a3@3 a3@3 a3@3 a3@3 a3@3 ~ a3@2 a3@2]/2",
})).s("gm_tuba").gain(0.3)

// other · trombone
const trombone = note(`<
  ~@4 A@2 B@2 A@2 B@2 C D E F C D E F C D E F C D E F ~@4 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 ~@8 A@2 B@2
  A@2 B@2 A@2 B@2 A@2 G@2
>`.pickRestart({
  A: "[a3@3 g3@3 f3@3 e3@3 f3@3 f3@3 f3@3 f3@3 f3@3 ~ f3@2 f3@2]/2",
  B: "[a3@3 g3@3 f3@3 e3@3 g3@3 g3@3 g3@3 g3@3 g3@3 ~ g3@2 g3@2]/2", C: "a2", D: "c3", E: "e3", F: "d3",
  G: "[a3@3 c4@3 d4@3 e4@3 a4@3 a4@3 a4@3 a4@3 a4@3 ~ a4@2 a4@2]/2",
})).s("gm_trombone").gain(0.3)

// bass · tuba · "C Tuba"
const bass_2 = note("<A@12 B C D E B C D E B C D E B C D E ~@4 A@12 ~@4 F@8 ~@8 F@12 ~@4>".pickRestart({
  A: "[a2@3 g2@3 f2@3 e2@3 d2@3 d2@3 d2@3 d2@3 d2@3 ~ d2@2 d2@2]/2", B: "d2", C: "f2", D: "a2", E: "g2",
  F: "[d2@3 e2@3 f2@3 g2@3 f2@3 e2@3 d2@3 c2@3 a1@3 ~ a1@2 c2@2]/2",
})).s("gm_tuba").gain(0.3)

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

// drums · rim
const rim = s("rim").struct(`<
  ~@3 A ~@3 A ~@3 A ~@15 A ~@3 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@7 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@2
>`.pickRestart({
  A: "~@6 x!2",
})).gain(0.45)

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

stack(clarinet, alto_sax, tenor_sax, baritone_sax, trumpet, french_horn, bass, trombone, bass_2, kick, rim, crash)