We want to have a non-real time mixdown function for our little application. By mixdown I mean recording the sound to the disk with the effect applied on it (like Cubase does or Abbleton Live).
I don’t see an easy way of doing that. I know that I can use system::setOutput(FMOD_OUTPUTTYPE_WAVWRITER_NRT), but that needs to be called before system::init() or after system::release().
So I want to create a second system, with the same set-up as the first one, but it takes a lot of work. So I was wondering if anyone has ideas.
Also, I done some testing, and it doesn’t seem possible to pass FMOD::DSP * (pointers) in between systems. It almost works, but the result is not good at all, why there is no function DSP::setSystem() ?
Would it be possible in future release to make the function system::setOuput() accessible after system::init() ? 😆
- Steph asked 10 years ago
There wont be any possibility of changing the output after init, that doesnt really make sense. Its part of the initialization.
If you want to do a mix down, just play 2 sounds and capture the result, or use channelgroups or the system object to put the effect on. Have you looked at any of the examples such as submixing?
Thanks for the fast reply
I already had a look at the submixing example. Also, I know that I can place a DSP effect on the system and capture the data from there. That’s easy to do.
The part where it gets interresting is if I don’t want to wait for a whole song to play, that’s why I want to use FMOD_OUTPUTTYPE_WAVWRITER_NRT.
So without changing the output of system, would it be possible to stop the output of the system so the system would behave like FMOD_OUTPUTTYPE_NOSOUND_NRT for a moment. Then do the mixdown in non-real time. Finally, reset the sytem to output data to the sound card.
I know that you have a zillion feature requests per week… but this feature would be really nice for our project. Is is not critical for now, because we can do that stuff in real-time, but I don’t like to make a user wait for 4 minutes, while he could be waiting for only 30 seconds.
Let say that we have created two system: systemA (real-time), systemB (non-real time). SystemA and systemB have the same format, same bitdepth, same sampling rate…
I tried to create a DSP effect on systemA and then I used it on systemB. It seems to works fine.
To solve my problem I though about disconnecting "master channel group DSPunit" of systemA and plug it in the systemB "system DSPhead". Is it a bad technique?
Otherwise, I would have to copy the whole DSP tree of systemA to systemB to achieve what I want to do.
Please login first to submit.