Problem statement: Out of the box ShoutCast does provide a “now playing” feature. How nice would it be to log the data that feature provides and extend it somehow to, for example, provide history months or even years back? Maybe even form the basis of a table that in-turn provides the tracklisting of the entire album with directions to the band’s site? Comments or personal notes/reviews? The list goes on. A list, by the way, whose possibilities are limited only by one’s curiosity, vision, and willingness to dive deep into how things work in furtherance of repurposing and retooling already existing things to accommodate one’s imagination – for the fun of it; a tendency itself shared in common by humanity’s most exemplary specimens: hackers and children.
Preliminary remarks: This attitude which pervades here with this project and its documentation is, as always here at DigitalValhalla (in stark contrast to attitudes exhibited by yours truly elsewhere), one of philomathy. The love of learning. One learns by doing and also by explaining. Leave debate and pedantry to the philosophers. Additionally, programming is an interesting occupation in that, although it rests squarely under the umbrella of engineering with its affinity for mathematical precision and rigor, it is also highly creative and in many ways, an art in the truest sense of the word. What all this suggests is that, from the outset, as an artistic expression, the idea of “the best” way to go about something is an objective fiction. Such notions are, as it goes with the arts in general, more reflective of stylistic preferences only. In some ways programming is an occult science of the highest order: dealing in cryptic symbols and invocation of incorporeal objects. The new alchemy. Both science and art. Affecting change in accordance with one’s will, and so on.
That said, one should, especially in this sphere as elsewhere ‘never let the perfect be the enemy of the good‘. ‘A good plan violently executed now is better than a perfect plan executed next week’. There is an uncountable number of ways to achieve the end documented here. This is simply a way of doing it, and an interesting one at that. It is important not to get so wrapped up in theory and planning and efficiency that it prevents one from doing the actual work – a pit-fall far too many coders wander into. Better approaches will occur even mid-stream. This is par for the course and an essential part of the learning process. Keep working anyhow. Start with what one has, progress toward what one would like to see. A to B. Always forward. Never back.
To start, some background. There is a ShoutCast station associated with this website, DigitalValhalla https://www.radionomy.com/en/radio/digitalvalhalla which is largely in the exploration phase of its lifecycle. It bears mentioning that the exploration phase is a surprisingly over-looked and underestimated aspect of systems engineering. One which involves essentially acquiring a new piece of technology and literally just tooling around with it. Its scope is simply to deploy it and actively use it in a live environment to see what happens. Get comfortable using it. See what it can and cannot do. Tinker with configurations. Test things out. See if any other potential uses make themselves apparent in the process of exploration. Play with it and hope it doesn’t fall off. Presently, it’s playing a selection of the finest Dark Ambient, Ritual, Drone, and Neo-classical music between spoken word segments. It sets the atmosphere quite nicely so far. This may or may not change as the exploration phase progresses. Time will tell.
ShoutCast provides an Auto-DJ configuration interface wherein one uploads their mp3s and such, schedules them, and lets it run. This feature is underwhelming for two reasons: first, the ability to live-stream a talk segment is locked out when active. They must be pre-recorded and uploaded. The ability to interrupt a play list with commentary or an ad-hoc live-stream is, for your’s truly, Thisself, the main-selling point! Without that, why bother? Secondly, it really is an incredibly tedious interface to work with.
Alternatively, one can run a live stream directly from a PC using WinAmp and a plugin “ShoutCast Source DSP” that facilitates streaming to ShoutCast while providing the ability to toggle inputs via either the soundcard with its various peripheral hardware inputs or whatever’s playing on WinAmp
So great! An in and an out. WinAmp outputs to the ShoutCast servers input in ~realtime.
One can now leave a playlist running in the background on their PC and interrupt with live commentary or rants on a whim from the comfort of home without having to mess with the rigidly limiting interface provided by ShoutCast’s Auto-DJ.
Supposing one does not want to be stuck listening to their own radio stream 24/7 and doesn’t have the luxury of a dedicated box to set aside exclusively for this purpose? What then?
On Windows 10 one can open sound settings, select Advanced sound options
Then turn the volume down on a specific app WinAmp, in this case.
The network stream will still keep trucking along in the background for as long as WinAmp is up and running while the operator is free to enjoy audio from any other application as they normally would. The operator (i.e. you) can interrupt the stream at their leisure to talk, read, rant, host a live podcast, etc using the ShoutCast Source DSP to route their PC’s audio or peripheral hardware accordingly.
ShoutCast also provides an HTML 5 player that can be embedded within a web page. This, in itself, is not half-bad.
For a fair number of those so-inclined to do anything at all similar to this, this fits the bill adequately as-is. This, for us, is only the preliminary. At this stage, we’ve just established the ins and the outs which are, in summary:
PC with audio harware / mixer / mic / line in -> Winamp -> ShoutCast Servers -> HTML 5 Plugin -> WordPress or other website.
Effective in and of itself, but Thisself wants more!
In the next section will be discussed the process of taking this already functioning system of ins and outs, digging further into what makes them function, and repurposing or extending them. Here, as throughout this series, the level of complexity will increment gradually.
In the next installment, we move away from the sphere of intermediate operating system users to delve into the murky world of reverse engineering software to get-at and appropriate its features in new and novel ways.
Listen-in and see where all this is leading up to at https://digitalvalhalla.com/streaming-aural/