Using OS X Developer Tools for DSP Experiments

Introduction

One of the best ways to understand sound waves and phase, and how we apply them to live audio, is to see signals interact in real time on an analyzer screen while listening. This is exactly what the Meyer seminars to which I’ve been have done; the instructor sends pink noise into a DSP, has the outputs of the DSP go into a console where they can be summed, and then has the output of the console and the original noise signal go into a SIM analyzer for comparison. Attendees see the effects of summing multiple signals that differ in phase and/or amplitude, or the effects of EQs and filters, at the same time as they hear them. I’d like to share with you a simple method for having the same type of educational resource entirely inside Mac OS X – no expensive external hardware required.

It requires a dual-channel software FFT analyzer (I use SMAART 7), Apple’s AU Lab, which is a part of the developer tools package that comes with every mac, and Soundflower, a utility that allows internal routing of audio signals. I am using the signal generator inside SMAART, but you can use another program if you like. The basic routing is as follows: the signal goes into AU Lab, gets routed to several busses to which different processing can be applied and that can be summed, and goes to the measurement channel of the analyzer software where it meets up with a copy of the original signal for the transfer function. A separate output routes the processed/summed signal to the computer’s speakers so that you can listen to what you’re doing at an independent level, or not.

Configuration

To breeze through the configuration, the first step is making a new aggregate device in Audio Midi Setup. From the ‘Audio’ menu, select ‘Open Aggregate Device Editor,’ and make a device that uses Soundflower and whatever output your computer speakers are using.

Next, once you’ve installed Developer Tools, open up AU Lab and make a document with one mono output for your analyzer and one stereo output for your speakers. Give it one input for your generator.

Have AU Lab use your new aggregate device. Patch output 1 to Soundflower channel 2, and patch output 2 (your stereo output) to your computer speakers. Soundflower channel 1 should be patched to the input by default.

Add some busses, route your input to them, and route them to your outputs, and you’re all set. Make sure your input is not routed directly to your outputs. Rename everything appropriately if you want it to be tidy. Save this file as your starting point.

Configure your analyzer or generator to send signal to Soundflower channels 1 and 3; channel 1 will go into AU Lab, and 3 will be used as the reference. Accordingly, make channel 2 your measurement input and channel 3 your reference input. You are now ready to play!

Experimentation

To give a few examples, you can make some lovely comb filtering by adding  delay to one of the two busses and summing them together. To do this precisely you should add the same delay plugin to the non-delayed buss and set it to 0 seconds so that the latency of the two busses is matched.

A great thing about using AU Lab is that it is compatible with any AU plugin out there, and DDMF makes a great EQ/filter called IIEQPro that I downloaded because it includes a second order APF. In another example I have applied an APF to one buss, saved traces from each buss, and then summed them:

I have also been playing with the idea of trying to nearly imitate a frequency response from a speaker array implemented in a venue, and the delays, EQs, and reverbs that AU Lab has seem to make this possible. Here I have made AU Lab generate in real time a frequency response similar to one that I saved from an actual gig. I applied EQ to it using AU Lab, and the result is a decent representation of how that EQ would effect the real array in the room:

I am really excited to hear what other people simulate with this setup.

Update 7/22/10: The file path for AU Plugins is /Library/Audio/Plug-ins/Components.

Update 7/23/10: Mauricio Ramirez has found some excellent AU plugins: a delay that is much better than the default because it uses samples or ms and has no LPF, and a much more flexible crossover plugin with various filter topologies and orders and a polarity invert switch. The links are:

http://andrewmcpherson.org/tech.html#crossoverUnit

http://www.voxengo.com/product/sounddelay/

Thanks, Magu!

10 thoughts on “Using OS X Developer Tools for DSP Experiments

  1. Hi Daniel,

    that sounds very interesting! In the past I did these measurements like my friend Magu: routing through an external crossover and sum the signals with a small analog mixer.
    I will give yout setup a try during this week and will come back later.

    Thank you very much for your advice, it seems to be very helpful without any 19″ machines!

    Kind regards
    Michael

    • Michael,

      Magu didn’t have developer tools when I sent this to him, so I’m not sure if you do. Email me if you don’t. I haven’t been able to play with it in the last week as much as I would’ve liked, but it seems stable and consistent with what I expect to see in the analyzer. Unfortunately, unlike with, for instance, Galileo, you have to manually match latency…

      I look forward to hearing what you think. Thank you for your feedback.

      Cheers,
      Daniel

  2. Daniel,
    In 2007 i took my first Sim training seminar and i was playing with a very similar experiment.
    I was working simultaneusly with Nuendo and Smaart. 2 different tracks with the same file (a 30 minutes pink noise generated in sound forge) panned one to L and the other to R. The outputs 1 and 2 plugged to inputs 1 and 2. And i inserted differents plug-ins to channel 1 leaving the second clean. That way i saw the transfer function of linear phase waves and other plugins, interesting.
    Goog job, great blog.
    Cheers.
    Matias

  3. Hi ! my Crossover Unit is not working at all …. everythings is working well with AU Lab about Routing into smaart etc .. i still can work a bit.. .
    But the cool plugin crossoverunit don’t want to work ! and i tried lot of things .. i put it in the file path : Home/Library/Audio/Plug-ins/Components
    but nothing happen … about sounddelay for ex, i used the same and it’s work … !
    Some one can help??
    my mac is :10.14.6

    • Hello Gui, sorry to hear you’re having an issue! I tried Crossover Unit today on 10.13, and it worked OK for me. Can you not see the plugin in the list at all, or do you see it, but it doesn’t work?
      Have you tried putting it in your system-wide /Library/Audio/Plug-ins/Components?

      • Hi Daniel ! Thx for your answer !
        No i don’t see it at all and, yes i put in the right file, cause others plugin are working… im not a plugin master, im just using reaper for route it into smaart and play with measurements… i’m little bit stuck here ..
        It’s a pity i don’t understand why just this one don’t wanna work

          • Nothing happen on the both software the plugin is not visible .. i found engineer filter it is a cool one but he miss some filters compared to crossover unit ..

  4. Im come back here .. i tried again to use it nothing happen, it is well placed in the right path on my mac .. Au Lab or reaper no one software can see it … i don’t know what i can do for get a solution

Leave a Comment