I've been hard at work on improving the audio capabilities of Play, toward the end of allowing various DSP manipulations on the audio before it is passed to the hardware for output. I have written a proof-of-concept application that uses an AUGraph to render output through a chain of AudioUnits. I've also written some UI code to allow the editing of each AudioUnit's parameters, with support for saving and restoring presets:

I'm at the point where I need to design how the user will (optionally of course) string all the AudioUnits together to make their custom DSP graph. There are two approaches that come to mind, but there are probably others I haven't thought of.

Approach one is the simplest, but least flexible. The editor window would have a list of available AudioUnits in it, and a list of the AudioUnits in the current graph. The order of the units in the list would determine the order the DSP is applied.

Approach two is considerably more complex, but also more flexible. The editor window would still have a list of available AudioUnits, but the list of current AudioUnits would be replaced by a graphical representation of the DSP graph. The inputs and outputs to each AU could then be set graphically, with the same result as above.

I say that approach two is more flexible, because at some point it could allow for multiple inputs and outputs from each AU, things like sidechains feeding compressors, or anything else people could come up with. The logical question for me is this: does an audio player really need those kind of DSP capabilities? Shouldn't a simple graph of one input to one output suffice? Is there a compelling reason to allow more complicated processing?

You may want to have an audio unit which decodes matrix surround sound. This would need stereo input and 5 outputs (Left, Centre, Right, Surround, Sub).

I can't think of any other non 1-1 processing that I'd want to do in a home setting. If you do want to do more complex processing then you can route the audio out of Play and into AuLab using Sound Flower http://www.cycling74.com/products/soundflower for processing. Then output it to the sound hardware.

RonaldPR wrote:I doubt there are many users who want or need this. I have not the slightest idea what all the different settings are or do and, frankly, I am not even interested to learn what the settings do.

Yes, is it really the Most Wanted Feature ? My personal preference would be for Play to be able to handle FLAC files containing a full album with cue, and to play the individual tracks...

RonaldPR wrote:I doubt there are many users who want or need this. I have not the slightest idea what all the different settings are or do and, frankly, I am not even interested to learn what the settings do.

The common usage for this would be a 10 or 31 band graphic equalizer, and possibly a parametric equalizer. The screenshot I posted was to illustrate the Audio Unit parameter editing window, not that particular Audio Unit.

I believe this can be handled with 1 input and 1 output on an AudioUnit. My first post was a bit misleading- I should have said input bus or output bus, because each input and output can have an arbitrary number of channels.

I believe this can be handled with 1 input and 1 output on an AudioUnit. My first post was a bit misleading- I should have said input bus or output bus, because each input and output can have an arbitrary number of channels.

Hmm, I'd say number two, maybe not put the function as a top priority, but I'm sure there are some people that will find it useful. And more control to the users is very rarely a bad thing
Am I right in figuring it to be something like http://kxproject.lugosoft.com s DSP in the drivers?

Ibis wrote:Hmm, I'd say number two, maybe not put the function as a top priority, but I'm sure there are some people that will find it useful. And more control to the users is very rarely a bad thing
Am I right in figuring it to be something like http://kxproject.lugosoft.com s DSP in the drivers?

No, Play uses Audio Units for the DSP effects, so there are many to choose from and they are integrated with Core Audio.

I like the DSP plugins! Especially those for playing with the dynamics.

A few questions:

* I miss a 'reset to defaults' feature, for when you really messed up the settings. If I'm not mistaken, the only option now is to remove the plugin and re-add it.

* Could you rename the plugins? At least remove the 'AU' in front of them. It sounds too technical for the ordinary user. They do not need to know it is an Apple Audio Unit. Or would this cause issues with translations?

Maurits wrote:I like the DSP plugins! Especially those for playing with the dynamics.

I also enjoy playing with these- especially the matrix reverb for some reason.

* I miss a 'reset to defaults' feature, for when you really messed up the settings. If I'm not mistaken, the only option now is to remove the plugin and re-add it.

I will add this- you are correct that the only way to do this currently is to remove and re-add the effect.

* Could you rename the plugins? At least remove the 'AU' in front of them. It sounds too technical for the ordinary user. They do not need to know it is an Apple Audio Unit. Or would this cause issues with translations?

The names come directly from the OS- I'm not sure how other Audio Unit hosts handle this issue. Each AU reports its name (such as AUMatrixReverb) and a description (such as Apple's Matrix Reverb Unit). Programatically I don't have access to any other information on the AU besides an icon. I will investigate a little and see what other applications do with this. I know that AULab shows the names the same way.

* I miss a 'reset to defaults' feature, for when you really messed up the settings. If I'm not mistaken, the only option now is to remove the plugin and re-add it.

I will add this- you are correct that the only way to do this currently is to remove and re-add the effect.

Nice, thanks. Something else, did you choose the default settings yourself? It seems a bit more logical to have default settings equivalent to a pass-thru, adding a plugin won't alter the sound until you move sliders etc. It's not a big deal and perhaps impossible for some effects but it may be something worth considering.

* Could you rename the plugins? At least remove the 'AU' in front of them. It sounds too technical for the ordinary user. They do not need to know it is an Apple Audio Unit. Or would this cause issues with translations?

The names come directly from the OS- I'm not sure how other Audio Unit hosts handle this issue. Each AU reports its name (such as AUMatrixReverb) and a description (such as Apple's Matrix Reverb Unit). Programatically I don't have access to any other information on the AU besides an icon. I will investigate a little and see what other applications do with this. I know that AULab shows the names the same way.

Perhaps you could work with a table that maps internal names (AU MatrixReverb) to external names (Matrix Reverb)? Would solve possible translation issues as well.

The Eq alone has a choice of 10-48 bands.
Plus, in addition to the 'pre-sets' it arrives with, the user can add their own (based on the above mods) so one can apply settings to the specific 'player' or the room or headphones.
No, it is not free. But for around $40 US (and considering it can be used with multiple players?) It's a deal!

Oh, as I only have a 400Mhz machine I especially like how play is stingy w/my resources.
Cog is fine but still not as efficient as Play & most players push my CPU to the brink.
I just DL'd the new version of Play & hope it doesn't demand more juice as I was happy enough.

So, w/OS3D you'll be able to 'tweak' the output in several players in more ways than you can imagine. Actually it takes some time deciding 'which' features to apply.
(NO - - - - I am not on their payroll & I'm not sure they claim they support all the players. But it works for me & I probably consider it essential to getting the 'best' out of any player.)