Monday, 1 December 2014

FM Synthesis with Beap

Here is another Beap sketch with Max 7, this time using the FM oscillators with lots of options for modulation. There are two control options: a standard keyboard and a function for controlled sweeps.

These are some sound design examples showing the range of tones achievable from just these few modules. I've focused more on electronic sfx type sounds, but the usual FM keyboard sounds are also possible.

I was going to include the preset file, but then changed my mind - discovering sounds for yourself is the fun bit! The preset system should work though.

Download the patch here.

Sunday, 16 November 2014

A Quick Beap Sketch

Here is a quick sketch I put together with Beap and Max 7(!)

It sounds like this:

You can download it here.

Tuesday, 11 November 2014

[*~ ]

I was looking through some old sounds I'd archived created by some Max patches I made a few years ago. At the time I was playing around with ring modulation in Max, seeing how far I could push it. Here are a few sounds from that period, chosen for their spectrogram. I love the way the frequencies collide, split and multiply...



Thursday, 6 November 2014

Sound Design Toolbox Part 3: Random Slice Container

This is my favourite of the toolbox players so far. As the name suggests, instead of playing complete sounds from start to finish the container plays a slice from a random point in the file. Further controls can randomly adjust pitch and the length of slice played along with a few other options. What excites me about this device is how useful it is for creating a non-linear or generative system for aiding the design process. In short: designing the system to design the sound rather than designing the sound itself.

This patch is based on an old idea I started to develop a few years ago - a machine which would take a bunch of sounds and combine them together in new ways. I got quite far with its development, then Twisted Tools released the S-Layer instrument that was basically the device I was working on, finished and better than anything I thought I could make! Looking back, this wasn’t really a good reason to stop, but I ended up working on other projects and that all got stuffed in the ‘half finished things’ folder. Thinking again about the concept now though, I can see new life for the idea if it is part of a modular system. So instead of creating a finished device I’m now aiming for small modules that can be strung together by the user to create more complex architectures.

In its basic state, the patch implements one of the most simple sound design techniques of them all: combining more than one sound to create a new sound. This is still the most fundamental process we have, and it is still often a manual process: loading up a DAW, browsing libraries, combining sound on multiple tracks, making adjustments in pitch, position etc. Because of their complexity, some sounds require more layers and the process can become very time consuming. This tool comes in useful is when you have many sounds to combine but there is no specific combination necessary, so it works well for abstract sounds or layers such as impacts or sweeteners.

The patch itself is delightfully simple to use:

1.     Drop a folder of sounds into it.

2.     Set polyphony to whatever seems sensible

3.     Choose envelope shape

4.     Set slice size parameters

5.     Set pitch variation and reverse chance

6.     Trigger with a bang in the left inlet or trigger with Uzi to fire off combinations of multiple sounds

Here are the patches:

Random Slice Container 0.9

Polyphony is set on the dial at a maximum of 64, but this can be changed in the patch itself if you need more voices. Polybuffer~ is at the heart of this patch, I’m finding it such a useful object for sample based work like this. The patch itself is fairly well annotated so it should be fairly easy to understand what is happening.

To give you a flavour of how I’m using this I've put together some example sounds thrown together very quickly during the testing phase. I tend to find some settings I like, set the patch running with a metro and then record out a string of those sounds. 

Please let me know if you have any problems or suggestions, these patches are still a work in progress and are likely to change before I call them finished.

These patches are licensed under: 

This license lets others remix, tweak, and build upon your work non-commercially, as long as they credit you and license their new creations under the identical terms.

Sunday, 21 September 2014

Sound Design Toolbox pt2 - XFade Container

Following on from the random container in part one, part two in this series is a different sample playback module. This is a player designed to easily create seamless looping sections with variable cross fade length. 

Part of my sound design process is creating long sections of sound which I record out of patches or programs as audio files. This is often from live manipulation of patches, controlled randomisation or other similar processes which produce interesting modulation or variation in sounds. I wanted a way to throw some of these sounds together quickly without having to worry about editing the files beforehand to make them work together. This container is designed with that in mind. Driven by a phasor~, it lets you choose a part of the file to play, adjust the pitch and length of the section being played back and seamlessly cross-fades back to the start position without any clicks. At its core is a slightly modified version of the wavefade example in the max examples (Extras (drop-down menu)>Examples overview >MSP >Sampling). 

The best way to get a feel for what it does is to try it out:

XFade Container 0.9

The is the most basic way to get it working is to load it into a bpatcher and check the box 'Embed patcher in parent' in the bpatcher inspector, this will then save the path of any files you load in.

Connect it up using a phasor~ like so:

The patch needs the frequency of the phasor~ as a float in its right inlet, so be sure to also connect that too.

Things get more interesting when you connect several up like so:

Try having several instances connected to the same phasor~, but with different settings for their individual rate multipliers. This creates interesting phase relationships between the sounds, so they connect up together like a series of tape loops. You can also use several instances with the same sound and adjust the pitch to create chords.

As with the previous device, this is a work in progress so is a bit untested. Please use it and report back any problems. 

This is part of a set of modules I'm intending to build, so when they are all at this stage I'll probably put some effort into making them look a little nicer! I'll also post some proper example patches.

Licensed under:

This license lets others remix, tweak, and build upon your work non-commercially, as long as they credit you and license their new creations under the identical terms.

Thursday, 28 August 2014

Sound Design Toolbox pt1 - Random Container

I've been inspired by this excellent article at Designing Sound to create a small range of modules designed to replicate the functionality of sample players used by game audio engines/middleware. The idea is to create a modular toolkit within Max aimed at opening up some non-linear sound design techniques.

This could be useful for:
  • Prototyping elements before they are implemented in-game
  • Using in any games created with max itself (I do hear of the odd one on the forums)
  • Designing sounds in a real-time live way, with plenty of options for control within Max (Quneo, Leap, Kinect etc)
  • General sample playback where looping and/or randomisation are needed
  • Potentially discovering components which max already has that may be useful for use in other environments
  • Experimenting using live models to design sounds for linear media

First up, I’ve created a random container for use in max:

The general idea is that you dump a folder full of samples in it, then a bang in the left inlet triggers a random sample. You can choose to have the last X samples not play, so to avoid people noticing any repetition. Then there's randomisable pitch amounts, global tuning, randomised reverse playback and variable polyphony. The second inlet will take an int to play a specified sample. 

As with Endjinn, this will remember file locations and re-load your sample as long as you embed the patcher so do this in the inspector every time you use one.

Some looping containers are coming next. I might also re-design the interface a bit for this one when they are all finished.

Here it is:

Random Container 0.9

Load it into a Bpatcher 

Licensed under:

This license lets others remix, tweak, and build upon your work non-commercially, as long as they credit you and license their new creations under the identical terms.


Sunday, 13 July 2014


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.