User Tools

Site Tools


multi-channel_file_mixing

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
multi-channel_file_mixing [2012/01/27 14:43]
pegasus Change stuff to work with frames
multi-channel_file_mixing [2012/01/27 14:54] (current)
pegasus [Overview of required changes]
Line 25: Line 25:
       * CachingReader       * CachingReader
     * EngineObject API needs to be changed to support the passing of frames of arbitrary size between EngineObjects (currently hard-coded to stereo buffers of audio) ​     * EngineObject API needs to be changed to support the passing of frames of arbitrary size between EngineObjects (currently hard-coded to stereo buffers of audio) ​
-    * Extend CachingReader to cache frames of arbitrary size. (Right now it is hard-coded to stereo.) +    * Extend CachingReader to cache frames of arbitrary size. (Right now it is hard-coded to stereo.) ​It also needs to get the stem information from ContentSource and pass it along to EngineBuffer. 
-    * Modify EngineBuffer and EngineBufferScale* classes to read and scale N frames (instead of N stereo samples as currently.) +    * Modify EngineBuffer and EngineBufferScale* classes to read and scale N frames (instead of N stereo samples as currently.) ​They also need to pass the stem information to EngineMixdown. 
-    * Build a new EngineObject,​ let's call it EngineMixdown ​for now, that sits in the audio rendering path for EngineDeck. This will take the available scaled channels provided by EngineBuffer,​ group them by stem (needs to ask ContentSource for the stem info,) and mix them according to ControlObjects exposed to the rest of Mixxx (e.g. keyboard, GUI, MIDI). EngineFilterBlock is an example of this kind of merging of 3 paths of audio.+    * Build a new EngineObject,​ let's call it EngineMixdown,​ that sits in the audio rendering path for EngineDeck. This will take the available scaled channels provided by EngineBuffer,​ group them by stem (getting ​the stem info from EngineBuffer above,) and mix them according to ControlObjects exposed to the rest of Mixxx (e.g. keyboard, GUI, MIDI). EngineFilterBlock is an example of this kind of merging of 3 paths of audio.
       * EngineMixdown should expose Mute, Solo and Volume controls for each stem of the track.       * EngineMixdown should expose Mute, Solo and Volume controls for each stem of the track.
       * In process(), EngineMixdown will mix together all of the stems given the values of the control parameters and pass the resulting down-mixed stereo audio on to EngineMaster.       * In process(), EngineMixdown will mix together all of the stems given the values of the control parameters and pass the resulting down-mixed stereo audio on to EngineMaster.
multi-channel_file_mixing.txt · Last modified: 2012/01/27 14:54 by pegasus