Although I built fairly complex systems with Max software during my Ph.D., this was mainly self-taught. Joseph Butch Rovan is a noted expert so to be sitting-in on his autumn/fall 2014 ‘Real-Time Systems’ course is a fantastic opportunity. I’m trying to find time to complete the homework assignments, deliberately restricting myself to only the relevant objects/principles, some of these are documented below (needs Max to run, but there is a free runtime version available here).
The brief was to combine overdrive~ and ring modulation modules into a “multi-effects” patch and think about the overall “architecture” of the performance system. A secondary aim was to use send~/receive~ for audio connections and send/receive for control data in order to facilitate encapsulation/abstraction and a more layered approach to patching overall. I chose to experiment with matrix~ and matrixctrl as an alternative to standard mixing desk workflow (auxiliary outputs etc.). Again, it’s rushed, but is a useful starting point for more complex systems. [Ferguson_quick_matrix_multi_FX.maxpat] Also, here’s some late night and ill advised noise.
This assignment was to use buffer~ along with record~ and groove~ to sample live audio using data from a HID (human interface device). I chose a Logitech joystick and used the clocker object to set the initial recording length and update waveform~ display. Also used groove~’s ‘loop sync out’ into the trapezoid~ object to avoid clicks at loop points, which works well enough for now (need to tidy this up and turn into useful abstractions). Record, playback, speed, and start/end loop points all accessible from the Logitech. [simple_joystick_live_sampling]
This assignment was to build a patch that uses tapin~ and tapout~ to create delays and/or loops of a live input and control this from the QWERTY keyboard or MIDI controller. A suggested extension was to use ‘clocker’ object to set the delay time based on the press of a key. My response is rushed and messy, but it works: controlled from the keyboard is a four tap stereo delay, the time for which can be set via mouse control or clocker, line~ is used to avoid clicks when changing feedback and turning off/on the input to the delay (overdub). Oh, there’s also a ten tap version that uses multi-sliders to control the time of each tapout; guess I couldn’t really decide what to build. No presentation mode. Glad we get to use encapsulation/abstractions next week [Ferguson_Delay_patch.maxpat]
The first programming assignment was to build a patch that plays a number of sound files using the sfplay~ object under control of the QWERTY keyboard via ASCII codes. My response automatically chooses eight files at random from a folder of thirty self-recorded possibilities, each of which can be performed via momentary/triggers or on/off toggles. Mouse control for each channel means that playback speed (pitch) and panning can be manipulated by the cursor, incremental volume control for each channel is also accessible. Spacebar resets playback speed to normal and reverts panning to a central position [download the patch here – it’s around 50 MB due to the inclusion of audio].