Sunday, 13 July 2014

Havoxicon

I want to not just talk about my own work here, but also highlight interesting tools by other Max users which might be of interest in a sound design context. Max user and composer jvkr, who is based in the Netherlands has released an interesting device called the Havoxicon. It is built around an unusual process derived from a hardware module called the Rungler, designed by Rob Hordijk:


The nice thing about this is the story behind the device from jvkr's blog, and that you can download the device for free (for Mac), contribute a few dollars if you find it useful, but then also poke around inside the Gen code which has been shared to the C74 forum. 

In use the Havoxicon is one of those devices which you learn through experimentation and feedback. Even though you may not understand how the process at the core works, you quickly get a sense of what the controls do, but it always has the capacity to surprise - I challenge you to download it and not spend at least an hour twiddling the knobs! In terms of output, the sound is very electronic, potentially useful for creating all sorts of GUI sounds or machine noises. Here is a composition from jvkr which should give you an idea of the sounds possible:


Thanks to jvkr for sharing this.

Tuesday, 8 July 2014

Endjinn



Babbage Engine

Endjinn is a granular synthesis module designed to function with BEAP (Berklee Electro Acoustic Pedagogy) a modular synthesis environment built with Max.



I’ve just started tinkering with BEAP and am really excited by the possibilities. While Max is great for building things from the ground up or for creating complete devices, it’s not so conducive to making sounds quickly. BEAP adds a functional level of modularity to Max where you can sketch ideas down and make sounds fast. When you save a BEAP patch it also saves all your settings, so you can create useful patches to make specific sounds and then come back to them easily.



I’ve always thought that granular synthesis is especially useful for sound designers; as we tend to have extensive sound collections, we also have plenty of audio to use as source material for granulation. Building Endjinn was partly just a learning experience for me as I had used many granular synths before and had a  good grasp of how the process worked, but had never designed one from scratch. But I was also curious to try and create a device which differs from those already out there. Of great influence was the Monolake Granulator which I believe is one of the best sounding granulators around. I’ve also used the grainstretch~ external within Max quite a bit – it is also very flexible and also has some nice features. There are also a whole bunch of other synths, tutorials and other influences here (especially from the C74 forums – thanks to those who routinely share their knowledge there). 

Thinking of those two very different granulators, the Monolake Granulator is really a chromatic keyboard instrument; it is designed to be played, with other instruments, or at least other pitched sounds. Grainstretch~ is more a time stretching or pitch shifting tool. Both have their uses, and both use the same process at their core, but it’s how they are put together which makes them unique. With Endjinn I wanted to make a granulator that was somewhere in-between the two, where you could scan over a sound very precisely, but could also synchronise and control harmony and pitch closely. This was the result!:






Endjinn




Endjinn is a synchronous four oscillator granular synthesiser, each generating between 1-4 overlapping grain streams. CV (control voltage) from any of the BEAP devices can be used to scan grain playback over a sound file in any pattern or direction. CV can also control grain rate and a pitch multiplier for all oscillators. The usual granular parameters are present – random pitch, position and volume per grain. Unusually for a granulator, grain rate can also be very slow – down to 0.1hz and through to 100hz, so you can effectively create slowly cross-faded soundscapes. Phase distortion can be applied to the playback of individual grains, with user-defined shapes. Similarly, the grain envelope can be designed within the synth or loaded in as a separate sound file. Pitch and rate parameters can be ganged together for fast tweaking and setting at precision increments.

An overview of the controls:

Global Controls 

  • Position - Starting position of grain playback
  • Scan Range - Defines the range over which signal from the CV input affects the start position of each grain
  • Pitch - Adjusts the pitch of all oscillators (via playback rate, so -12 will play back all grains at half speed)



Randomisation

  • Panning – ­Panning randomisation for each grain, for stereo sources this effectively mixes the left and right channels together, 50% allows a maximum of a 50/50 mix of both channels on either side, 100% allows for a full swap of the left and right channels, with every possible value in between.
  •  Volume – Volume randomisation per grain, 0% means that all grains will play at 100% volume, 100% means that each grain will play somewhere between 0-100% volume, 50% and grains will play between 50-100% volume.
  • Pitch – Randomisation of pitch per grain, either up or down up to one octave.
  • Position Variation – Adds a random value to the start position of each grain, set in milliseconds. 



Oscillator Controls

  • Frequency - Frequency of grain generation, between 0.1hz – 100hz.
  • Pitch by Grain Rate - Pitch control by varying grain playback rate, this does not affect the grain length. A value of 0.5 will play the grain back at half speed (ie half the pitch, or one octave down). A value of 2 will play the grain back at twice the base rate, or an octave up.
  • Pitch by Grain Length - Pitch control by varying length of the sample taken by each grain. A value of 0.5 will decrease the length of sound sampled by 50% for each grain, effectively reducing the pitch by half. A value of 2 will increase the length of sound sampled by 100%, effectively doubling the pitch.
  • Offset – Adds a +/- offset to the grain start position, allowing the oscillators to play from different points of the sample.
  • Grain Streams – Defines the number of grain streams used by each oscillator. These overlap as shown in the diagram below, Visual feedback of this process is displayed on the grain position bar.





  •  Parameter Link - This feature allows control of all oscillator values as a ‘cascade’ across the oscillators from Osc1 – Osc4. When the link is active, values will either add or multiply down through the oscillators dependent on the ratio. This was implemented for easy harmonisation and control of all oscillator values. So if the ratio is set to 1, the control for Osc1 will set the same parameter value for all oscillators. If the ratio is set to 1.5 and the multiplier set o ‘add’ the 0.5 will be added down through the oscillators eg 1,1.5,2,2.5 but if the multiplier is set to ‘multiply’ then each value will be multiplied by 1.5 down the oscillators eg 1,1.5,2.25,3.375
  • Waveform Display - The waveform display shows left and right channels of the loaded sound file. The red indicator displays the scan start position, blue shows the end position and green the current position. The file name is displayed in the lower right-hand corner.
  • Grain Position Display - Displays the playback position of each grain. The display will adjust to the amount of streams in use for each oscillator.
  • CV Modulation - Inputs 2-4 provide CV control (-5v through till +5v) over multipliers affecting grain rate, pitch by grain playback rate and pitch by length of sound sampled per grain. For example, if you connect a 1hz triangle LFO to inlet 3 and change the CV multiplier to min:0.5 max:1.0, then the pitch will fluctuate between 50% - 100% and back again, as the LFO moves through its cycle.
  • Grain Phase Distortion - It is possible to distort the linear ramp that controls grain playback, affecting the pitch and harmonics present in each grain. There are a selection of presets which show some basic behaviour here; preset one is set to linear playback forwards, two for backwards playback, three is a decelerating ramp, four a rough triangle, five and six are more complex shapes. Custom shapes can be defined using the breakpoint generator (Shift-click removes points, alt-click-drag adjusts curves in curve mode) or through loading a sound file to be used as a transfer function.
  • Grain Envelope - Defines the shape of envelope applied to each grain. The default shape is half a cycles of a sine wave that should provide smooth playback. As with the phase distortion, user specified shapes can be used or sound files can be loaded and used as grain envelopes.
  • Output Stage - Each oscillator has two outputs at the bottom of the device, one left and one right.   

So hopefully you are now desperately eager to try the device out?! Well first you should install BEAP from here:

https://github.com/stretta/BEAP

Endjinn will actually run without all the BEAP stuff, but it is designed to function with the BEAP system, so if you install BEAP first you can then expand on Endjinn with all the cool BEAP modules.

Here are the patches:

Endjinn 1.1

One is just the patch itself, this is called Enjinn 1.1.maxpat, the other is Endjinn with a BEAP output and some LFO modules - you should start there. 

I'm might do a video tutorial for this later if people are interested, as there are some odd functions of this synth that might need explanation. A few quick tips though:

- Enjinn does smooth granular textures well, try four streams per oscillator and grain rates of 4-8hz, then add some random panning and a bit of position variation. This works well on pitched sounds (eg bells)
- Unusual 'scan' effects can be acheived by using an LFO to scan the waveform with harmonically pitched oscillators.
- Glitchy sounds can be achieved with custom envelopes and user defined phase distortion shapes.

And finally here is a quick composition of my own created with Endjinn and some sounds made by Resonate:



After posting my email on the page for Resonate I had a few people get in touch with their thoughts and feedback. It's actually really nice to hear that these things are useful, so please get in touch:

<pre><code>
----------begin_max5_patcher----------
242.3ocUPFrZCCCDD8rBj+AgN6ZraCtI8T62QoTVqnlnDKIy50ASC8euRqrM
sWzvN6SrCy8saDp1vjYPIeQ9tTHtGcDrWxQrXHTNXR2ACLnRGbNimTEyKIyD
wKb.ds73HdFbuhA8UC4.aWYjeksGH8Yq+zmnQS4y97gxpBYcy9jrq9PVJqje
r7ouvSsI1p3pYK+ny56LDmn5UvfmFreaRlO8e5vHsfW8WbO3Xb0anE5Vyo8H
aFZu7viJ16msaRZTxASA882L3fM34xhqpXEbIfo4lh7r0mmyYTgla1kuLi.X
rQnXcLh4jL0rKcR9fwmeAvp6gsO
-----------end_max5_patcher-----------
</code></pre>


Enjoy!