Some time ago I wrote a subsonic server, cause I wanted to stream my own music database. Since I own a small ARM-based NAS that has relatively small memory I did not want to run java, which is the official server implementation.
The protocol is relatively simple so I went ahead and wrote a small naive implementation that can be found at https://github.com/davidgfnet/supersonic. It uses python and it’s relatively simple, although a bit slow and uses webpy which is not great also.
Not satisfied with it I reimplemented it again in C++ which is more efficient and also not too complicated. The implementation is a bit dodgy in the sense that it’s poorly documented, uses some custom libraries (from github) and it’s a bit adhoc in general. That said it works wonderfully, very stable it can run for weeks without problems. It features:
I tipically use Clementine (which has native Subsonic support) on PCs and Ultrasonic on Android. I sent some patches and fixes to both clients, since they had minor issues or lacking some features.
You can find the repo here: https://github.com/davidgfnet/supersonic-cpp