Hello, I am working on a Teamspeak 3 plugin for ArmA2 and I was wondering if its possible with a channel object to split that into multiple channels, so that you can apply DSP effects to each one individually, but their source is the same?
For example, I am implementing direct voice communications between players which takes their 3D position into account and the voice rolls off with distance. The player can also have one or more radio devices, for that the channel placement would only need to be left or right or center, but the quality of the sound would be affected by distance and other things our terrain model takes into account. For that I would want to apply DSP effects for distortion and probably add a noise osc to generate radio static.
This would come into play where you might be hearing them speak, but also hearing them on radio at the same time.
Is this possible with channel objects?
- Nou asked 8 years ago
Hi Nou, welcome to the FMOD forums!
A channel is effectively an instance of an FMOD::Sound, rather than splitting into multiple channels it would be easier to create multiple channels from the initial Sound object. Is there a reason why you wouldn’t do it that way?
Thanks, I actually came to that conclusion yesterday, but haven’t tried it. Found out we can’t use the plugin SDK in TS3 to get to the FMOD objects so we have to go with our own client, so I haven’t been able to test yet.
I saw that you can get the system object from the channel, and just create a new channel off of that original channels sound object.
Related to TS3 again we found that the standalone client SDK does not work with official TS3 servers so we are back to the plugin or nothing at all. We did find out though that we can open our own custom playback device via the plugin, which takes an FMOD system object.
We still can not access the creation of channels though via the plugin. Is there a way to monitor from the System object when channels are created and to get those channels so we can begin to affect them with our needed effects?
I think the easiest way to monitor channel creation would be to create a thin wrapper for System::playSound which also fires a callback, set it to be the userdata of your System object. You can then retrieve that userdata from the system object in your plugin.
Thanks again Peter, I was trying another way too where I was monitoring the TS3 client speaking status and then getting the most recently created channel, but that was providing to be inconclusive…
No worries though, the TS3 devs are awesome folks as well and they are exporting the rest of the FMOD event handlers to their plugin SDK! 😀
Thank you for providing an awesome sound framework. We hope to do some pretty interesting stuff with it for the ArmA2 community! 😀
Please login first to submit.