Hey! So here's how I became to put together a streaming software from scratch 
In last few years I have become interested in Hi-Fi. Retro and modern. Fixing few amps, servicing old speakers etc. Just another hobby to take up.
But needed a good audio source. I like discovering new music, I like to listen albums whole, and like to know the bits and bytes of things.
So went out there got myself a reputable streamer that can play Tidal and lived with it for about a year. Sounded good, but never got used to the software and the bugs in the whole package.
Next step. Selling the streamer and buying an old Apple Mini for 1/3 of the cost. Linux, servers, audio software, and all that is no stranger to me so I put together a system based on Mopidy. Got it running fine with my semi-professional grade audio interface and was happy with it for some month. Though couldn't find any nice interface to use on the phone with Mopidy.
Here where the real hacking starts
Though, ok why don't I create an interface for Mopidy one I like. Been working in web industry for over 25 years, from design to programming, so how hard can it be right
? Did that for a little while realising there's certain features that can't be done just writing an interface layer. Ditched the idea after a week and went on to build a fully dedicated streamer software.
Few goals I wanted to achieve:
1. Web interface easily accessible in local network on any device
2. Tidal streaming
3. Internet radio
4. Podcast library
5. As clean as possible path from stream/file to DAC and real time feedback on it
6. DAC hardware volume control - I'm often running DAC directly to the power amp
7. EQ curves and variable loudness - 90% of time I'm listening around 50db SPL, so loudness is very helpful
8. Multipoint bluetooth where if I play a source it pauses the other
9. Later added NAS and cloud drives connectivity and files indexing
Even played around with AI altering EQ by user prompt but for now that proved to be gimmicky at best. It did give some starting points going by room description or simply asking to reduce muddiness, add air or something, but eventually it felt like doing more harm than good. Sure was an interesting exercise.
Another thing came to be in process was Bluetooth volume control. I can connect a bluetooth device like laptop or TV to control selected volume controller but opt the device itself out of intercepting audio. In short my TV remote or volume buttons on MacBook can act as volume control while streaming music.
Now about 3 month in, I have software that runs on Raspberry Pi 5 with my USB interface connected to it. It sure still has quirks in it, and there's room for improvement.
But must say I'm pretty happy with it. I have found the interface encourages me to listen whole albums with less distraction and less clicking around. I can take my Pi with me and hook it up headless anywhere with the WiFi available.
It's rather rewarding doing things this way. Especially for the learning aspects of it. Learned a lot about Linux audio handling, Gstreamer, Bluetooth, headless setups, build automation, etc.
Anyway, I have packaged the thing into software called Miliza. There's no real plan with it, not for now at least.
It remains as a hobby project, but thought I share the experience and the thing itself. Even created a website
https://miliza.eu
In last few years I have become interested in Hi-Fi. Retro and modern. Fixing few amps, servicing old speakers etc. Just another hobby to take up.
But needed a good audio source. I like discovering new music, I like to listen albums whole, and like to know the bits and bytes of things.
So went out there got myself a reputable streamer that can play Tidal and lived with it for about a year. Sounded good, but never got used to the software and the bugs in the whole package.
Next step. Selling the streamer and buying an old Apple Mini for 1/3 of the cost. Linux, servers, audio software, and all that is no stranger to me so I put together a system based on Mopidy. Got it running fine with my semi-professional grade audio interface and was happy with it for some month. Though couldn't find any nice interface to use on the phone with Mopidy.
Here where the real hacking starts
Few goals I wanted to achieve:
1. Web interface easily accessible in local network on any device
2. Tidal streaming
3. Internet radio
4. Podcast library
5. As clean as possible path from stream/file to DAC and real time feedback on it
6. DAC hardware volume control - I'm often running DAC directly to the power amp
7. EQ curves and variable loudness - 90% of time I'm listening around 50db SPL, so loudness is very helpful
8. Multipoint bluetooth where if I play a source it pauses the other
9. Later added NAS and cloud drives connectivity and files indexing
Even played around with AI altering EQ by user prompt but for now that proved to be gimmicky at best. It did give some starting points going by room description or simply asking to reduce muddiness, add air or something, but eventually it felt like doing more harm than good. Sure was an interesting exercise.
Another thing came to be in process was Bluetooth volume control. I can connect a bluetooth device like laptop or TV to control selected volume controller but opt the device itself out of intercepting audio. In short my TV remote or volume buttons on MacBook can act as volume control while streaming music.
Now about 3 month in, I have software that runs on Raspberry Pi 5 with my USB interface connected to it. It sure still has quirks in it, and there's room for improvement.
But must say I'm pretty happy with it. I have found the interface encourages me to listen whole albums with less distraction and less clicking around. I can take my Pi with me and hook it up headless anywhere with the WiFi available.
It's rather rewarding doing things this way. Especially for the learning aspects of it. Learned a lot about Linux audio handling, Gstreamer, Bluetooth, headless setups, build automation, etc.
Anyway, I have packaged the thing into software called Miliza. There's no real plan with it, not for now at least.
It remains as a hobby project, but thought I share the experience and the thing itself. Even created a website
https://miliza.eu
Last edited: