For the Max For Live devices that I have created so far, I’m going to give a simple breakdown of each one, describing how they work, what Max objects I used, and how I manipulated them to create the effects that I wanted.
Chorus Noise Maker
This device started life as a relatively normal and basic chorus. For this device, I used the ‘teeth~’ object, which is a ‘Comb filter with feed-forward and feedback delay control’. Using this object with a small depth, delay and rate, you can create a rather subtle chorus effect. But when experimenting with the parameters, I discovered if you use large depths, rates and delays, you can create an extreme modulated sound. This can be emphasised further with large feed-forward and feed-back values, which can destroy the sound entirely. To represent this destruction of sound, I called the feed-back knob ‘Death’ and coloured it red. Turning this knob up ever so slightly feed-backs the sound to the point where it becomes a loud continuous tone, which can be manipulated further by adjusting the rate and depth knobs, to change the pitch of the sound, and also the harshness of the sound. To allow the delay knob to work, I had to turn the delay time value data, into a value that can be used with the ‘teeth~’ object. To do this, I used the ‘sig~’ object, that converts numbers into audio signals. This ‘sig~’ object is also being used in conjunction with the with the Rate and Depth addition object, to make sure that the extremity of the delayed signal is controlled by the depth.
From the very beginning of my device creating journey, I wanted to create a reverb device. However, I knew this was very much out of my depth. After much research, I discovered an old Max object called [yafr] (Yet Another Free Reverb), an object that creates a spring reverb effects using many different filters in a very complex setup. [yafr] doesn’t exist in the newest version of Max 7, so I had to find the code online, and open it up in a patcher within a M4L device, which worked perfectly. I setup dials for each of the parameters that are a part of the reverb object, and adjusted them accordingly to settings that I deemed usable and pleasant in sound. This device was the first time I used a Dry/Wet dial also. I did some research into how to create a Dry/Wet setting, and used a setup created by a user on the cycling74 forums. Finally, to make this device my own, I added a filtergraph~ object. This allows the user of the device to filter the wet signal of the reverb, colouring the reverb to their specific needs.
Stereo Ring Modulator
This was the first device that I created. Originally I was trying to create a tremolo effect, but I accidentally created a ring modulator. This effect is created by modulating the input audio, using a multiply object, with a sine wave that is created with a ‘cycle~’ object. Connected to the cycle~ object is a dial that changes the frequency of the sine wave, changing the sound of the ring modulation effect. When I first created the effect, it was in mono, meaning that effect affected both the left and right channel simultaneously. To make the effect a little more interesting and creative, I duplicated the multiply and cycle objects and wired them up in a way so two different setups were affecting the left and right channel separately. This means that two different sounds can be created at once in stereo.
Rather than rely on using Ableton’s Auto Filter plugin, I decided that I would create my own simple multi-filter device. Within Max, there is an object that exists called ‘svf~’, which is a ‘State-variable filter with simultaneous outputs’. This object allows for four different types of filtering: lowpass, highpass, bandpass, and bandreject (notch) and has the ability to switch between them using the devices multiple outputs and a selector~ object. The object also allows you to control the frequency, as well as the resonance, which I control within my plugin with two dials respectfully. To switch between the different filter types in a graphical manner, I used the Max For live feature ‘live.tab’. This represents the different filter types as pictures, rather as text, showing the user directly what that specific filter does to the sound. The live.tab numerical data in regards to the pure data it outputs begins at 0 and ascends upwards. For it to work perfectly with the selector object, we need it to start at 1 rather than 0. This can be done by simply using a + object, simply adding 1 to the to live.tab output. To make the device a little more unique and visually appealing, I added an ‘spectroscope~’ object, and coloured it to my chosen aesthetic that exists across all my devices. This shows a spectrometer display of the output coming from the filter selector, showing the user what effect the filter is having on the sound in a visual and pleasing way. I also use this same idea on the ‘Wonderful Times’ device.
Broken Chip Delay
In terms of design, this device is very similar to ‘Wonderful Times’, but has a few key differences. The main one being that the delay time and the Dry/Wet value is adjustable using dials, allowing the user to set their own values for these parameters. The other key difference is that this device also has bit-crusher effecting the delayed signal, which it’s severity can be adjusted using a dial also. To create this effect, right at the end of the wet signal path, I inserted a ‘degrade~’ object (an object that reduces the bit-rate and sample rate of the audio it’s fed), with the dial connected to the sample rate parameter of the object. Like with ‘Wonderful Times’, the delay and bit-crush portions of the device exist within a patcher for the same reasons as said device. For some more interesting visual aesthetic, I implemented a custom coloured ‘scope~’ object, to show what effect the bit-crusher has on the signal visually.