Program Description

  • This program generates a random drum beat using the default General MIDI Drum Kit.
  • The patcher combines the code of two previous tutorial patchers: 10b_GM_Drums & 07c_Weighted_Random_Rhythm.
  • Tempo and Pulse:
    • The tempo is 108 b.p.m. and the default pulse is set to the 1/16 note via optional arguments (tempo 108 1 16).
    • I discovered these tempo and pulse settings through many real-time interactive trial and error runs of the program.
    • My artistic goal was to find a set of percussion instruments, tempo, and pulse that established a convincing “groove”.
  • Instrument Selection:
    • The random and sel objects work together to map the six possible random outcomes (0-5) to six carefully chosen percussion instruments.
  • Percussion Instruments:
    • Via the sel object, here is how the pseudorandom outcomes map:
      • 0, 1 & 2 map to low (43), middle (47) and high (50) toms, respectively.
      • 3 maps to Side Stick/Rim Shot (37).
      • 4 & 5 map to high (60) and low(61) bongos, respectively
    • To create a convincing groove, I used a relatively small number of related percussion instrument groups. Also note that the timbral groups have probabilities: toms (50%), bongos (33%), and 1 other timbre (8%).
  • Humanized Velocity
    • I created a subpatcher called humanize that randomly varies the default velocity 90 by about 36% above and below 90. The resulting velocity range 58-122 provides a sense of percussive accent and wider palette of timbral variation with the six instruments.
  • Weighted Random Rhythm
    • To change the default isochronous pulse coming out of tempo into a rhythm, I used another random/sel object pair to create four possible pulse durational outcomes: 1/8, 1/16, 1/16 & 1/16. 75% of the time, the duration will be a 1/16 note. 25% of the time, the durational will be an 1/8. This results in a relatively steady stream of 1/16th notes that will have an 1/8th syncopation on occasion.
    • By using durations based on powers of 2 – that is, 1/16 = 1/(2^4); 1/8 = 1/(2^3)) – I created a very traditional-sounding rhythm. But you may choose any numbers you like. There is an infinite world of rhythmic proportions waiting for you to explore them!

Object Reference

Updated: 10/21/23