Strudelify

Here We Are

Toby Fox

KeyA majorTempo110 bpm
0:00/0:00
// Here We Are — Toby Fox
// 110 bpm, 5/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (5/4 at bar 1, 6/4 at bar 16, 5/4 at bar 18, 6/4 at bar 46) are rendered on a constant 5/4 grid of one bar per cycle
// note: duplicate parts dropped: ch 2 "Voice" choir aahs (copy of ch 1 "Voice" choir aahs); ch 4 "Voice" choir aahs (copy of ch 3 "Voice" choir aahs)
// note: Transcription provider: pdmx. https://musescore.com/score/2361456; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 47 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(110/5)

// 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.

// chords · piano
const piano = note("<~@17 A B C D A B C D A B C D A B C D E F E G E F E G H ~@5>".pickRestart({
  A: "[a2,e3]@3 ~@3 d3@3 ~ g3@3 a3@3 d3@3 ~@3 e3@3 ~@4 f3@3, c4@9 ~@23, ~@3 e3@6 ~ [f#3,d4]@9 [g#3,e4]@6 ~ [a3,f4]@6", // A5 D C#m Dm
  B: "~@3 c4@3 a3@3 ~@4 g3@3 a3@3 e3@3 d4@3 ~@4 c4@3, g4@15 ~, b3@10 b3@16 b3@5 ~",
  C: "[a2,e3]@3 ~@3 d3@3 ~ g3@3 a3@3 d3@3 ~@3 f#3@3 ~@4 c4@3, c4@9 ~@10 [a#3,f#4]@6 ~ [b3,g4]@6, ~@3 e3@6 ~ [f#3,d4]@9 ~@13", // A5 D#m Em D
  D: "~@3 d4@3 b3@3 ~@4 a3@3 b3@3 f#3@3 e4@3 ~@4 d4@3, a4@15 ~, c#4@10 c#4@16 c#4@5 ~",
  E: "a3@3 e4@3 d4@3 ~ g#3@3 d#4@3 c#4@3 a3@3 a#3@3 ~ b3@3 c4@3",
  F: "a3@3 e4@3 d4@3 ~ g#3@3 d#4@3 c#4@3 a3@3 b3@3 ~ g#3@3 a#3@3",
  G: "a3@3 e4@3 d4@3 ~ g#3@3 d#4@3 c#4@3 f#3@3 c#4@3 ~ g#3@3 d#4@3", H: "[c4,d#4,g4]@3 ~",
})).s("gm_piano").gain(0.72)

// bass · electric bass finger · "5-str. Electric Bass"
const bass = note("<~@17 A B C D A B C D A B C D A B C D ~@14>".pickRestart({
  A: "a1@3 e2@3 a2@3 ~ b1@3 f#2@3 b2@3 c#2@3 [g#2,c#3]@3 ~ d2@3 [a2,d3]@3", // C#5 D5
  B: "e2@3 [b2,e3]@3 g2@3 ~ e2@3 b1@3 g1@3 e1@3 b2@3 ~ g2@3 e2@3", // E5
  C: "a1@3 e2@3 a2@3 ~ b1@3 f#2@3 b2@3 c#2@3 [g#2,c#3]@3 ~ e2@3 [b2,e3]@3", // C#5 E5
  D: "f#2@3 [c#3,f#3]@3 a2@3 ~ f#2@3 c#2@3 a1@3 f#1@3 c#3@3 ~ a2@3 f#2@3", // F#5
})).s("gm_electric_bass_finger").gain(0.45)

// drums · kick
const kick = s("bd").struct("<~@8 A B C D E F G H I J@24 K@4 L ~>".pickRestart({
  A: "~@13 x ~@9 x ~@8", B: "~ x ~@6 x ~@6 x ~@9 x ~@6", C: "~@3 x ~@5 x ~@6 x ~@9 x ~@5",
  D: "~@4 x ~@6 x ~@6 x ~@9 x ~@3", E: "~@6 x ~@5 x ~@6 x ~@9 x ~@2", F: "~@7 x ~@6 x ~@6 x ~@9 x",
  G: "~@9 x ~@6 x ~@5 x ~@9", H: "x ~@9 x ~@6 x ~@6 x ~@7", I: "~ x ~@4 x ~@9",
  J: "x ~@4 x ~@4 x ~@3 x ~@4 x ~@6 x ~@5", K: "x ~@2 x ~@6 x ~@2 x ~@5 x ~@2 x ~@3 x ~@2 x ~@2",
  L: "x ~@9 x ~@8 x ~@12",
})).gain(0.4)

// drums · snare
const snare = s("sd").struct("<~@8 A B C D E F G H I J@27 K@2 ~>".pickRestart({
  A: "~@10 x ~@4 x", B: "~@21 x ~@9 x", C: "~@23 x ~@8", D: "~ x ~@22 x ~@7", E: "~ x ~@11 x ~@2",
  F: "~@4 x ~@22 x ~@4", G: "~@5 x ~@23 x ~@2", H: "~@7 x ~@22 x ~", I: "~@9 x ~@15 x ~@6",
  J: "~@6 x ~@9 x ~@5 x ~@6 x ~@2", K: "~@3 x ~@4 x ~@7",
})).gain(0.4)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@16 [~@15 x!5 ~@12] ~@28 [~@22 x!5 ~@5] x>").gain(0.2)

// drums · hihat
const hihat = s("hh").struct("<~@8 A B C D E F G H I J@24 K@4 L ~>".pickRestart({
  A: "~@16 x ~@10 x ~@4", B: "~@5 x ~@5 x ~@6 x ~@9 x ~@3", C: "~@6 x ~@6 x ~@6 x ~@9 x ~",
  D: "~@8 x ~@5 x ~@6 x ~@9 x", E: "~@9 x ~@6 x ~@6 x ~@8", F: "~ x ~@9 x ~@5 x ~@6 x ~@7",
  G: "~@2 x ~@9 x ~@6 x ~@6 x ~@5", H: "~@4 x ~@9 x ~@5 x ~@6 x ~@4", I: "~@5 x ~@26",
  J: "~@2 x!2 ~ x!2 ~@3 x!2 ~ x!2 ~ x ~@2 x ~ x ~@2 x ~ x!2 ~@2 x ~",
  K: "~@2 x ~@2 x ~@5 x ~@2 x ~@6 x ~@2 x ~@2 x ~@2 x ~", L: "~@3 x ~@9 x ~@18",
})).gain(0.4)

// drums · crash
const crash = s("cr").struct("<~@17 x!25 ~ x ~@3>").gain(0.45)

stack(piano, bass, kick, snare, snare_soft, hihat, crash)

More by Toby Fox