Strudelify

Gravity Falls Theme

Brad Breeck

KeyD minorTempo82 bpm
0:00/0:00
// Gravity Falls Theme — Brad Breeck
// 82 bpm, 2/2, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Transcription provider: pdmx. https://musescore.com/score/1427121; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 14 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(82/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.

// chords · piano
const piano = note("<~@2 A B C D E@6 F@2>".pickRestart({
  A: "d2 d3 d2 d3 d2 d3 d2 d3 d2 d3 d2 d3 d2 d3 d2 d3, d4@3 e4 f4@4",
  B: "f2 f3 f2 f3 f2 f3 f2 f3 f2 f3 f2 f3 f2 f3 f2 f3, a4@3 g4@3 a4@2 c4@8",
  C: "[bb2,c4] bb1 bb2 bb1 bb2 bb1 bb2 bb1 bb2 bb1 bb2 bb1 bb2 bb1 bb2 bb1, d4@3 e4 f4@2 e4@2", // Bbsus2
  D: "c3 c2 c3 c2 c3 c2 c3 c2 c3 c2 c3 c2 c3 c2 c3 c2, g4 a4 g4 f4",
  E: "[d2 d3 d2 d3 d2 d3 d2 d3 d2 d3 d2 d3 d2 d3 d2 d3 f2 f3 f2 f3 f2 f3 f2 f3 f2 f3 f2 f3 f2 f3 f2 f3 bb2 bb1 bb2 bb1 bb2 bb1 bb2 bb1 bb2 bb1 bb2 bb1 bb2 bb1 bb2 bb1 a2 a3 a2 a3 a2 a3 a2 a3 db3 db4 db3 db4 db3 db4 db3 db4 d2 d3 d2 d3 d2 d3 d2 d3 d2 d3 d2 d3 d2 d3 d2 d3 bb3 bb2 bb3 bb2 bb3 bb2 bb3 bb2 g3 g2 g3 g2 g3 g2 g3 g2, ~ f4!3 a4!2 g4 f4@2 a4!3 g4 a4 g4 f4@2 f4!3 a4!2 g4 f4@2 a4!2 a4@2 db5!2 db5@2 f4!3 a4!2 g4 f4@2 bb4!3 g4@2 c5@2]/6",
  F: "[a3 a2 a3 a2 a3 a2 a3 a2 ~@7 db5 d5@4 [d4,d5,d6,d7] ~@11, a4 db5 [d3,d4]@3 ~@3, ~@8 f5@4 db5 e5 g5@2 ~@16, ~@9 d5@2 d5@5 ~@16, ~@5 a4@3 ~@8]/2", // D
})).s("gm_piano").gain(0.45)

// chords · piano · soft notes · F D A D F D A D …
const piano_soft = note(`<
  [[f4,f5] [d4,d5] [a3,a4] [d4,d5] [f4,f5] [d4,d5] [a3,a4] [d4,d5] [f4,f5] [c4,c5] [a3,a4] [c4,c5] [f4,f5] [c4,c5] [a3,a4] [c4,c5]]
  [[e4,e5] [db4,db5] [a3,a4] [db4,db5] [e4,e5] [db4,db5] [a3,a4] [db4,db5] [e4,e5] [db4,db5] [a3,a4] [db4,db5] [e4,e5] [db4,db5] [a3,a4] [db4,db5]]
  ~@12
>`).s("gm_piano").gain(0.25)

// bass · fretless bass · "Fretless Electric Bass"
const bass = note("<~@2 A B C D A B C E A F G@2>".pickRestart({
  A: "d2 d3 d2 d3 d2 d3 d2 d3 d2 d3 d2 d3 d2 d3 d2 d3", B: "f2 f3 f2 f3 f2 f3 f2 f3 f2 f3 f2 f3 f2 f3 f2 f3",
  C: "bb2 bb1 bb2 bb1 bb2 bb1 bb2 bb1 bb2 bb1 bb2 bb1 bb2 bb1 bb2 bb1",
  D: "c3 c2 c3 c2 c3 c2 c3 c2 c3 c2 c3 c2 c3 c2 c3 c2", E: "a1 a2 a1 a2 a1 a2 a1 a2 db2 db3 db2 db3 db2 db3 db2 db3",
  F: "bb2 bb1 bb2 bb1 bb2 bb1 bb2 bb1 g2 g1 g2 g1 g2 g1 g2 g1", G: "[a2 a1 a2 a1 a2 a1 a2 a1 [d2,d3]@12 ~@12]/2",
})).s("gm_fretless_bass").gain(0.25)

// other · glockenspiel
const glockenspiel = note("<~@5 A B@6 C ~>".pickRestart({
  A: "g6 a6 g6 f6",
  B: "[~ f6!3 a6!2 g6 f6@2 a6!3 g6 a6 g6 f6@2 f6!3 a6!2 g6 f6@2 a6!2 a6@2 db7!2 db7@2 f6!3 a6!2 g6 f6@2 bb6!3 g6@2 c7@2]/6",
  C: "a6 db7 ~@2",
})).s("gm_glockenspiel").gain(0.45)

// other · glockenspiel · soft notes
const glockenspiel_soft = note("<~@4 [d6@3 e6 f6@2 e6@2] ~@9>").s("gm_glockenspiel").gain(0.25)

// drums · kick
const kick = s("bd").struct(`<
  ~@2
  [x ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x]!3
  [x ~@2 x!2 ~@2 x ~@8]
  [x ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x]!3
  [~@3 x!2 ~@2 x ~@8]
  [x ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x]!2
  [x ~@2 x ~@12]
  ~
>`).gain(0.2)

// drums · rim
const rim = s("rim").struct("<[~@5 x ~@7 x ~@2] [~@5 x ~@10] [x!16]!10 [x!8 ~@8] ~>").gain(0.25)

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

// drums · clap
const clap = s("cp").struct("<[x ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x]!2 [x!16]!10 [x!9 ~@7] ~>").gain(0.15)

// drums · mid tom
const mid_tom = s("mt").struct("<~@9 [~@4 x!4] ~@4>").gain(0.3)

// drums · mid tom · soft notes
const mid_tom_soft = s("mt").struct("<~@5 [~@4 x!4] ~@8>").gain(0.15)

// drums · crash
const crash = s("cr").struct("<~ [~@15 x] x ~@6 [x ~@7 x!8] ~@2 [~ x] ~>").gain(0.3)

// drums · crash · soft notes
const crash_soft = s("cr").struct("<~@5 [~@8 x!8] x ~@7>").gain(0.15)

stack(
  piano, piano_soft, bass, glockenspiel, glockenspiel_soft, kick, rim, snare, clap, mid_tom, mid_tom_soft, crash,
  crash_soft
)

More by Brad Breeck