praxworld.com Electronics, music, electronic music! general geekery

24Jan/112

Free Max for Live Psychoacoustic Spatializing Modifier!!!

Haasenfeffer was inspired by the Haas effect (http://en.wikipedia.org/wiki/Haas_effect). You can use Haasenfeffer to add subtle adjustments to the perceived "space" of stereo or mono sound sources. Delay times can be panned, or set independently for each channel. The filter frequency is adjusted around a center value, and each filter can be linked or panned as well. The X-Y pad approximates a sonic space by adjusting the balance of delay times and filter levels.

While playing around with this effect, I decided it would be beneficial to have two modes for how the filters interact in the X-Y display. One mode has the L/R frequencies linked, the other mode has them "pan" so that they go in sort of opposite directions. I may add LFOs to the X-Y pad in future versions, but these can be easily automated by some other great Max for Live devices available at http://www.maxforlive.com/.

Download Haasenfeffer 0.5

Filed under: Uncategorized 2 Comments
30Dec/100

Free M4L Delay Effect

Update! See below for the JavaScript file, and a Max abstraction that you can plug into any Max4Live patch and convert a time signature to milliseconds based on the current tempo. Hot stuff!!

I just finished my first attempt at reverse-engineering the Lexicon PCM42/PSP42 delay unit. You can download it here: http://www.maxforlive.com/library/device.php?id=518. I have found that reverse-engineering things is a great way to learn about MaxMSP, and get ideas for crazy ways to do things too. The end result came out fairly well:

As with all successful Max projects (well for me anyway), my efforts also yielded a number of abstractions that I may be able to re-use. Most notable in the recyclable abstraction department is a JavaScript that I found here. Its function is to take a time signature and output the corresponding value in milliseconds based on the current tempo. This was necessary since the tapout~ object requires time input value to be in milliseconds. Adapting it for use within Live was pretty straightforward.

Along the way I discovered that using an LFO to shift the delay time resulted in clicks. I put in a line object, but that had the effect of "softening" the effect of the LFO, so all of the waveforms kind of seem like a sine wave. Another befuddling aspect of the PCM42 is the apparent ability to crossfade between LFO waveforms. After implementing the feature and playing around with it, I couldn't really tell much difference. It doesn't seem like the ideal application for something like that. At least I got a handy little signal crossfading abstraction out of the deal though. Anyway, if you're looking for a funky delay effect based on a cool old-school rackmount (and its superb VST counterpart by PSP Audio), download this one and give it a try!

UPDATE: Here is the adapted JavaScript source. Copy it and save it as converter.js anyplace in your Max path:

var tempo = 0;
var msv = 0;
var sDivU = 0;
var sDivL = 0;
var div = .25;

function list()
{
var a = arrayfromargs(arguments);
tempo = a[0];
sDivU = a[1];
sDivL = a[2];
//post(a[0] + ", " + a[1] + ", " + a[2] /n);

calculateTime();
}

function calculateTime(){
if(!tempo || !div || !sDivU || !sDivL)return;
var dTime=(60.0*1000.0*parseFloat(sDivU))/(parseFloat(tempo)*div*parseFloat(sDivL))
dTime=roundOff(dTime,2)
msv=dTime
bang();
}

function roundOff(x,nrDec){
fact=Math.pow(10,nrDec)
x=Math.round(x*fact)
return(x/fact)
}

function calcTuplet(myForm){
var tuplet=myForm.selectTuplet[myForm.selectTuplet.selectedIndex].value
var nr=myForm.number[myForm.number.selectedIndex].value
var noemer=tuplet.substring(tuplet.indexOf("/")+1,tuplet.length)
myForm.subdivisionLower.value=noemer
myForm.subdivisionUpper.value=nr
myForm.division.options[2].selected=true
calculateTime(myForm)
}

function bang() {
outlet(0, msv);
}

UPDATE: To accompany the above JavaScript, here is a handy abstraction that you can use in your patches. it converts a time signature to milliseconds based on the current tempo set in Ableton Live:

Copy this code to your clipboard, and from within Max go to File, New from Clipboard. Boom!

19Dec/100

New Online Store

Hey, take a look at our new online store. It's a bit fancier than it was before, and soon alongside our faceplates there will be a nice selection of new products including the upcoming monome enclosure kit, and spacing plates for projects using the SparkFun button pads (they reduce button height a bit).

Filed under: Uncategorized No Comments
14Dec/100

Monome Faceplates – Now in Black

Here is a photo of our latest monome faceplate in black anodized aluminum. The photo really doesn't do it justice.
monome 64 faceplate in black anodized aluminum.

Filed under: Uncategorized No Comments
25Nov/100

Tasty Simpler Pad

I was messing with my favorite synth u-he Ace, and totally getting into this one pad patch I made. Unfortunately even my powerful quad-core computer was brought to its knees by the magnitude of all those stacked voices and shimmering polyphonic glory. When you want to add on voices and bump up the playback quality you have to pay a price for that super awesome sound. One option is freezing tracks. For a little more effort you can sample it and have a nice patch that you can actually jam with, and share with your friends!

I went ahead and sampled some notes, put together a little patch in Ableton Sampler, and put some granular pitch shifting and stuff at the end. It came out great so here it is. I converted it to Simpler format so any Ableton Live user can use it. With this particular patch under Ace even one note consumes around 30% CPU, chords can easily max out the CPU. In Simpler it remains around 1% CPU. Dang I love sampling. It is saved in Ableton Live Pack (.alp) format. I am probably making another version this time with the voices all near the same pitch (this pad is in fifths).

Filed under: Uncategorized No Comments