This post is about an addon I’ve made titled WebAudio that adds a serverside class that allows you to interact with IGmodAudioChannel streams serverside efficiently and securely for both the server and its clients. The Lua api attached with this is mainly used for an E2 Extension.
Getting out of the specifics, I made this to replace streamcore, which you may know as the addon that adds audio streaming from the web to E2. The reason why I made this was because of many massive problems with streamcore, which I mostly address in the readme of the repo.
These are that:
- Is that it has no whitelist, so you can get people’s IPs or force them to download bad crap.
- It has no net limits. You can lag or even crash everyone on the server.
The owner has not really shown any willingness to fix it at all, as the addon does not have a github to report or fix any issues, and it took them 4 years to add an option to disable streamcore, only after people were tired of being earraped and having their ip stolen.
WebAudio fixes these with
- A customizable serverside & clientside whitelist for all URLs
- Proper net limits
- Custom clientside & serverside volume, radius, etc limits
It also features
- Pausing & Playing streams
- Getting the FFT of a stream
- Looping a stream
- Setting the position of a stream
- Parenting a stream relative to an entity, maintaining the local position
- Setting the playback rate of a stream (Speed)
- Getting the current playback time of the stream (Calculated serverside, since Partial serverside BASS support · Issue #439 · Facepunch/garrysmod-requests · GitHub hasn’t happened)
Depending on if I get all of the issues done, this may also be merged into wiremod to just stop the problem at its root, but it depends on the developers and when I feel this is really done. So for now I advise you, if you have streamcore, please get rid of it, or get your developer to properly make sure it can’t dox people, at least…) Thanks.
(Also, if you’re a lua developer, the repo is MIT, so you can just copy the autorun files as they’re used in the addon if you just want to use the serverside bass api without the E2 extension. PRs and Issues are always welcome)