Just looking to flesh out a discussion on the topic of streaming Music (not voice chat) through domains to the domain visitors as @Judas and I kind of touched on it in another thread.
For those who used SL, you will be aware of the feature to stream audio directly to your viewer (which is essential for live music, playing shoutcast streams etc)
In theory it shouldn’t be hard to do in terms of the Interface and Server model…
- Server receives an instruction to change the audio stream in either the entire domain, or (future proof) a sub-section/parcel/
- Server sends message to all those inside domain to adjust audio stream source subsequently.
- Interface connects to stream (MP3, OGG) and feeds it through the audio driver of the end-user’s computer.
Hosting a Shoutcast/Icecast server of course is another topic that is separate to High Fidelity altogether.
Thoughts/Suggestions on how best to implement this? Even from a programming perspective it should be relatively easy to put as it wouldn’t really affect the core code apart from the GUI where a feature to start/stop should be added.
Summary of Specification
- Provide ability to stream and play multiple formats (i.e. Ogg, FLAC, Wave) - which most audio SDKs (i.e. FMOD) provide the ability to do regardless. This allows for multiple sources of audio (Icecast etc)
- End-User must be able to enable/disable the music stream, either in the form of a Menu Item, or a Tool bar Icon.
- Stream source to be determined by the server, and in future, be controlled by scripts (when permission system becomes available to ensure only authorised entities [owned by the server admin?] can adjust the source).
- Ability (future proof) to have different streams for different zones.
Design Model Proposal
Domain Stack Control Panel Option
Implementing in to Interface Source (Example using FMOD as the sound API)
To explore an example of how it could be implemented programmatically, if we take FMOD as an example API for the audio (since FMOD is amazing, and can handle playing streams from remote sources natively);
You would essentially only have to wrap the FMOD native methods to interface it with the rest of the interface;