Strudelify

Bass Guitar Sight Reading Landmark Spaces Keyc

MDS

KeyC majorTempo46 bpm
0:00/0:00
// Bass Guitar Sight Reading Landmark Spaces Keyc — MDS
// 46 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5941389; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 52 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(46/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// bass · electric bass pick · "Bass Guitar"
const bass = note(`<
  A B C D E F G H I J H K L M N O L M N O P Q R S T U V W X Y Z AA X Y Z AA AB AC AD AE AF AG AH AI AF AG AH AI AJ AK AL
  AM
>`.pickRestart({
  A: "g2 e2", B: "b2 c2", C: "a1 c2 f1!2", D: "a1 c2!2 g2", E: "g2 b2!2 g2", F: "e2@4 c2!2 c2@2",
  G: "e2!2 c2!2 a1!2 c2!2", H: "f1@2 f1!2 c2!2 c2@2", I: "a1@2 c2!2 e2@2 e2@2", J: "c2!2 a1@2 a1@4",
  K: "e2!2 e2@4 c2!2", L: "g2@2 g2!2 e2@2 e2!2", M: "c2@2 c2!2 a1@4", N: "a1!2 f1@2 f1!2 c2!2",
  O: "a1!2 e2!2 g2!2 c2@2", P: "e2@2 e2@2 e2!4", Q: "c2!2 c2@2 a1!4", R: "g2!4 e2@2 e2!2", S: "b2@2 b2@2 b2@2 g2!2",
  T: "g2!2 g2@4 e2!2", U: "c2!2 c2@2 e2!2 e2@2", V: "a1!4 e2@4", W: "a1!2 a1@2 c2!4", X: "c2!4 e2@2 e2@2",
  Y: "a1!2 a1@2 a1@2 c2!2", Z: "f1@4 a1!4", AA: "c2@2 c2!2 e2!2 e2@2", AB: "g2 e2 e2@4 g2@2", AC: "g2 e2 g2 e2 e2@4",
  AD: "c2 e2 e2@2 c2@2 a1@2", AE: "c2@4 c2 a1 c2 a1", AF: "e2 g2 e2@2 b2@4", AG: "b2 g2 b2 g2 e2@2 c2!2",
  AH: "a1@2 a1 c2 a1 c2 e2@2", AI: "g2@4 e2 g2 e2@2", AJ: "e2@2 e2 c2!2 e2 c2@2", AK: "c2@2 e2 c2 c2@4",
  AL: "a1 c2 f1@2 c2@2 a1 c2", AM: "e2 c2 a1@2 g2 e2 c2@2",
})).s("gm_electric_bass_pick").gain(0.08)

// drums · kick
const kick = s("bd").struct("<~ [x!2]!4 [x ~@3 x ~ x!2]!4 [x!2]!15 [x ~@3 x ~ x!2]!4 [x!2]!20 [x ~@3 x ~ x!2]!3 [x!2]>")
  .gain(0.3)

// drums · rim
const rim = s("rim").struct("<[x!4] ~@19 [x!4] ~@15 [x!4] ~@15>").gain(0.3)

// drums · snare
const snare = s("sd").struct("<~ [~ x ~ x]!19 ~ [~ x ~ x]!15 ~ [~ x ~ x]!15>").gain(0.3)

// drums · hihat
const hihat = s("hh").struct("<~ A@4 B C@3 A@11 ~ A@3 B C@3 A@8 ~ A@11 B C@2 A>".pickRestart({
  A: "x!2 ~ x!3 ~ x", B: "x!4 ~ x ~ x", C: "x!2 ~ x ~ x ~ x",
})).gain(0.3)

// drums · ride bell
const ride_bell = s("rd").struct("<~@5 [~ x]!4 ~@15 [~ x]!4 ~@20 [~ x]!3 ~>").gain(0.3)

stack(bass, kick, rim, snare, hihat, ride_bell)