I was commiserating with my friend and colleague R. on the phone this week about the difficulty of laying intelligeable voice over a huge, thick, turgid bed of audio oatmeal, courtesy of an unnamed artist who provides some incidental music. R. was interested in looking into spectral ducking as a way to solve his problem.

My first suggestion was that he use Soundhack for the purpose. In case you’re not familiar with it, fire up a copy of Soundhack and try this:

  1. Open an audio file
  2. Select “Spectral Dynamics” from the Hack menu
  3. Check the “Use soundfile for thresholds” box at bottom
  4. Click on the button to choose a source file.

Presto.
But how about doing something using MSP? After a little cruise through the MSP tutorials, and some fun with the tutorial and help example patches, it was starting to take shape. In addition to problems being
the irritants which can be used to produce pearls, they’re also an opportunity to chat with friends. And who better to touch base with but Richard Frigyes Fülöp Tivadar Dudas, Cycling ’74 gourmand, bon vivant, and–as his initials might imply–precisely the sort of person you’d wish to be in touch with. Some discussion, some rumination, and some time yields the following Max patch and accompanying pfft~ subpatcher which (alone or in combination with further tweaking) should make for some fun. Just cut and paste the following text into two MSP patches:

Here’s the top-level patch, ducking_it

max v2;
#N vpatcher 10 59 635 654;
#P toggle 158 25 15 0;
#P user ezdac~ 74 317 118 350 0;
#P window setfont “Sans Serif” 9.;
#P flonum 147 253 35 9 0. 1. 3 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P newex 117 283 40 196617 *~ 0.2;
#P toggle 219 52 15 0;
#P message 219 75 55 196617 $1 , loop 1;
#P message 184 75 29 196617 open;
#N sfplay~  1 120960 0 ;
#P newobj 219 104 43 196617 sfplay~;
#P toggle 74 52 15 0;
#P message 74 75 55 196617 $1 , loop 1;
#P message 39 75 29 196617 open;
#N sfplay~  1 120960 0 ;
#P newobj 74 104 43 196617 sfplay~;
#P newex 74 283 40 196617 *~ 0.2;
#P newex 74 192 155 196617 pfft~ spectralduck_pfft 1024 2;
#P connect 13 0 5 0;
#P connect 5 0 4 0;
#P connect 3 0 2 0;
#P connect 4 0 2 0;
#P connect 2 0 0 0;
#P connect 0 0 1 0;
#P connect 1 0 12 0;
#P connect 11 0 1 1;
#P connect 10 0 12 1;
#P connect 0 0 10 0;
#P connect 11 0 10 1;
#P connect 13 0 9 0;
#P connect 9 0 8 0;
#P connect 7 0 6 0;
#P connect 8 0 6 0;
#P connect 6 0 0 1;
#P pop;

And here’s the pfft~ subpatch, spectralduck_pfft:

max v2;
#N vpatcher 75 291 675 691;
#P window setfont “Sans Serif” 9.;
#P newex 89 157 27 196617 *~;
#P newex 50 134 27 196617 <~;
#P newex 33 236 52 196617 poltocar~;
#P newex 33 157 27 196617 *~;
#P newex 106 134 27 196617 >=~;
#P newex 33 261 52 196617 fftout~ 1;
#P newex 33 91 52 196617 cartopol~;
#P newex 89 91 52 196617 cartopol~;
#P newex 89 60 44 196617 fftin~ 2;
#P newex 33 60 44 196617 fftin~ 1;
#P connect 0 0 3 0;
#P connect 3 0 6 0;
#P connect 6 0 7 0;
#P connect 9 0 7 0;
#P connect 7 0 4 0;
#P connect 3 0 8 0;
#P connect 8 0 6 1;
#P connect 2 0 8 1;
#P connect 0 1 3 1;
#P connect 3 1 7 1;
#P connect 7 1 4 1;
#P connect 1 0 2 0;
#P connect 2 0 9 0;
#P connect 3 0 5 0;
#P connect 5 0 9 1;
#P connect 2 0 5 1;
#P connect 1 1 2 1;
#P pop;

Of course, there’s plenty of fun to be had beyond this simple outline (thanks again for your help, Richard!). For example, I’ve spent some pleasant time using a variant of this patch to process a file and to duck it using the same source material, delayed by a selectable amount. See what you can do with it.

just ducky, thanks

No replies yet.

You must be logged in to reply to this topic.