Hi Matthew,

it is hard to follow your thoughts without studding the source code. Is it
possible that you provide a drawing?

I would also be happy if you can give some use cases for the compressor
positions.

Thank you,

Daniel



2012/7/15 Matthew Mikolay <mikol...@yahoo.com>

> Hello, all!
>
> So as some of you may know, I've been working on a compressor EngineObject
> to add to Mixxx as part of my Google Summer of Code project. I've completed
> the compressor, and after testing it thoroughly, it seems to be operating
> with no flaws. Now that the compressor has been completed, it must be
> integrated into Mixxx in the proper location. Owen, RJ, and I have
> discussed various schemes for integration, and we've concluded that it
> would be best apply a compressor to the master out mix. Additionally, we
> would like to have extra compressors applied to any channel that is linked
> to a sound device for output. For example, if the user has deck outputs
> enabled to send the individual deck signals to a mixer, each enabled deck
> will have its own compressor. The problem is that the current design of the
> SoundManager class, EngineMaster class, and a few other classes prevents a
> simple implementation of this functionality. For this reason, Owen has
> encouraged me to
>  write up a design proposal in order receive the community's feedback
> before I proceed with a specific implementation.
>
> Please note that in the future, we would like to extend compressor
> functionality a bit. It would be useful to have compressors applied to
> microphones and samplers, so the implementation needs to be open for these
> modifications.
>
> The SoundManager class handles the setup and breakdown of all sound
> devices. For this reason, this class will need modification. It would be
> great if the SoundManager could just change a boolean value for a certain
> EngineChannel, but the SoundManager does not have access to EngineChannels;
> it only has access to the buffers of the EngineChannels, as well as the
> corresponding AudioOutput objects, which basically store information
> concerning which type of device the buffer should be sent to (headphone,
> deck, microphone, etc.)
>
> An obvious solution would be to modify SoundManager to store the
> EngineChannels instead of just the buffers, but this creates another
> problem when we realize that the SoundManager never has access to certain
> EngineChannels such as EngineDeck. Processing of many channels, including
> EngineDeck, is handled by EngineMaster. For this reason, EngineMaster is
> registered with the SoundManager as the source of the deck buffers.
>
> Therefore, the implementation will need to modify both SoundManager and
> EngineMaster. Keep in mind that SoundManager has access to EngineMaster,
> but EngineMaster does not have access to the SoundManager. My proposed
> solution is as follows:
>
> -Modify EngineMaster class to return an EngineChannel for a given
> AudioOutput. This would require the addition of the following function:
>     EngineChannel* getChannel(AudioOutput output);
> -Modify EngineChannel class to signal if a channel needs compression. This
> would require the addition of the following variable:
>     bool m_needsCompression;
> -Modify SoundManager to modify this boolean for a given channel (using
> getChannel function of EngineMaster) when linking a sound device with an
> AudioOutput. This would require modification of the setupDevices() and
> closeDevices() functions.
> -Modify the process() function of EngineMaster in order to selectively
> apply compression to those EngineChannels where m_needsCompression is set
> to true. This will ideally be placed after the headphone and master outs
> are computed, in order to restrict the application of compression to the
> sound card outputs.
>
> Please let me know everyone's opinions. Constructive criticism is
> definitely welcome!
>
> Thanks!
> mattmik
>
>
>
> ------------------------------------------------------------------------------
> Live Security Virtual Conference
> Exclusive live event will cover all the ways today's security and
> threat landscape has changed and how IT managers can respond. Discussions
> will include endpoint security, mobile security and the latest in malware
> threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
> _______________________________________________
> Get Mixxx, the #1 Free MP3 DJ Mixing software Today
> http://mixxx.org
>
>
> Mixxx-devel mailing list
> Mixxx-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/mixxx-devel
>
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Get Mixxx, the #1 Free MP3 DJ Mixing software Today
http://mixxx.org


Mixxx-devel mailing list
Mixxx-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mixxx-devel

Reply via email to