Randy the new RPi streamer and player on the block

Hi All,

Sharing this side project of mine which has been my daily workhorse streamer for the past few years.

Please welcome Randy to this busy and wonderful neighbourhood of RPI/SBCs music streamers :)

randy_screen.png


Randy is built with minimalism and user experience in mind.
It's probably the first RPI streamer that's not using MPD and instead using a powerful media streamer called MPV with lot's of tweaks to get good quality sound.

I am releasing it as an early version to get more feedback and see if there is interest to push it forward and therefore at this stage some things are kept minimal.

What you get right now:
  • Beautiful and responsive streamer player
  • Awesome sound quality with no filters or manipulation
  • Plug any USB drives to add your music collection
  • Play web radios and lots of streaming sites like soundcloud, mixcloud
  • Always playing playlist
  • Save things to favourites or just easily search for them
  • Should work on all RPI models and ubuntu/debian based systems
What makes it still an initial release:
  • The installation is right now done on top of Ubuntu or Raspberry PI OS Lite with some commands
  • It's currently set for USB DACs, but you can follow instructions to set up an i2s DAC instead
  • NAS instructions here and in this thread
  • I've left out things like Spotify connect, Tidal, UPNP etc..
Randy has been successfully installed on:
  • SBCs such as RPI, Orange pi Zero
  • Thin clients such as Intel NUC, HP T-520 Thin client and Dell 3040 mini
Links and instructions:
Website: https://randy.typedream.app/
Github project page: https://github.com/PapaSimons/Randy
Wiki: https://github.com/PapaSimons/Randy/wiki

Why should you try it?
For the same reason we DiyAudio folks try different capacitors and opamps..

How can you help?
Try it out and post about how you find it, hows the sound, any improvements, ideas etc..
I also have limited hardware and time to test things out, my RPI3b just died a couple of weeks ago so it's right now playing nicely on my sons' RPI zero 2w.
If you do have new hardware like RPI models, DACs and it works then drop a note. If it doesn't work drop a note and we can try to figure out how to get it to work.

Enjoy!
 
Last edited:
  • Like
Reactions: 3 users
Member
Joined 2005
Paid Member
It's nice to see a new kid on the block. Reading your description it seems Randy is made specifically for RPi computers. Why is this? Linux and USB DACs will work with just about any computer, and it would be great if Randy worked equally well on just about any hardware that runs Linux and has a USB port. Just think of using a tablet or a laptop as your streamer hardware.
 
  • Like
Reactions: 1 user
It's nice to see a new kid on the block. Reading your description it seems Randy is made specifically for RPi computers. Why is this? Linux and USB DACs will work with just about any computer, and it would be great if Randy worked equally well on just about any hardware that runs Linux and has a USB port. Just think of using a tablet or a laptop as your streamer hardware.
Totally agree mrbrennwa, and thanks for your good comment!
You are right, It should work well on other linux + usb combinations, I am actually developing it and testing it on my mac.

So far, I created an installation flow for RPI with some RPI specific things, which can be adapted to other hardwares and distros.
If you are keen to test it out on other hardware/distro let me know and I can maybe try to create another adapted installation script, I may not have a local machine to test it out.
 
  • Like
Reactions: 1 user
Member
Joined 2005
Paid Member
In my experience, the trick to get users to adopt such a software package is to make installation universally easy. I'd recommend using custom scripts and step-by-step instructions to run certain commands. Use standard tools for package management instead. A good old DEB package will work on many Linux systems, and is not too difficult to make. I have no experience with the other package types out there, but I am sure they are similar. Getting the grips with making such packages takes a bit of time, but is totally worth it!
 
  • Like
Reactions: 1 users
This look like a fun project to try. I have an Orange Pi Zero and an USB DAC/HPA.
If it works I will order an Orange Pi R1 Plus LTS in a simple/nice metal housing.

The install.sh downloads a number of packages, is there anything I should install on my old (November 2021), blank OPI Z DietPI image, before running your install script?
Thanks @PjVervoorn! I am excited to see if you can get it running with Orange PI Zero with this cool looking DAC :)

If I remember correctly, then Dietpi is also Debian based + should have an easy way to get your DAC set up if the installation script doesn't work.
In any case, you can try the installation script as is and maybe comment out the first command 'raspi-config --expand-rootfs' thought it will probably skip it anyways.

The dependencies that I am guessing Dietpi already has should roughly be: Alsa + alsautils, curl, tar, systemd, apt, apt-get

If we get it working well, I can add the new script and instructions to the repo!!
 
In my experience, the trick to get users to adopt such a software package is to make installation universally easy. I'd recommend NOT using custom scripts and step-by-step instructions to run certain commands. Use standard tools for package management instead. A good old DEB package will work on many Linux systems, and is not too difficult to make. I have no experience with the other package types out there, but I am sure they are similar. Getting the grips with making such packages takes a bit of time, but is totally worth it!
@mbrennwa - yup its on my todo list to look at ways to make it easier to install.
For it to run as an always on streamer that you can run on a standalone device like a RPI and control over the network it has some magic to keep it running such as daemons, automounting usb drives etc.. It can technically also run locally as a normal music player but that brings another set of things to look at.

So I've been checking out different ways to package it, for RPI there is a project called rpi-gen which let's you package it as an os image and for others I am thinking of something linux packages like you suggest and something like electronjs for desktop apps. But I want to get a feeling if people like it as well :)

--
@TNT - thanks for your sharp catch :) - fixed USD -> USB. I wonder how USD DACs sound like...

Very nice. MPV (unlike many other players) has a perfect supprot for CDDA. Very few "integrated" streamers implement proper CDDA support these days, often due to them being based on MPD.
Yeah MPV is a beast! similar to VLC it does pipe things to ffmpeg/libav so there is amazing support for almost everything you can imagine + it's directly integrated with yt-dlp which means you can play streaming content off of a lot of websites.
For example in Randy you can paste urls from mixcloud into the search bar and if it finds a stream in it, it will just play it.
 
Installation went fine, rebooted as instructed and unable to connect to the web interface.
Repeated installation and again it completed without errors. Still not accessible from either http://randy or the Pi ip address.
I can ssh in via ethernet but guessing that the only access to the web page is over wifi. Not hugely useful when no wifi.
 
  • Like
Reactions: 1 user
Hmm not the wifi but looking with top I don't see any activity other than what I would expect from the base raspberry lite so perhaps randy isn't starting on boot ?
Whilst logged in I ran ./install.sh and again it completed with no errors and requested reboot. Still no connectivity.
Swapped out the uSD card for others and there is no touble connecting to Volumio, MoOde, R-Audio, PCP all with the same hardware and network that fails with randy.

RPi 3B+ browser Firefox 113.0.1 (64-bit) on Ubuntu.

Any suggestions ?
 
@DRONE7 - Thanks for testing it out, I hope we are just a few steps from the Enlightenment that you seek!

A couple of things you can try:
1. In SSH, run the following: sudo systemctl status randy-node , this should give some info if the daemon is working or not.
the command for starting it is - sudo systemctl start randy-node , if this starts Randy and it shows up in the browser then like you said it's maybe an issue with it starting on boot which is wierd.

2. If the daemon is running you can also check the log here - journalctl -f -u randy-node

3. small thing, but check if on your browser it asks you to accept access to a non - https page

Gideon
 
Hi Gideon and thanks for the diagnostics !

Here is the output from those (hope there is something there that helps !) Firefox tries first for the http address and if not found upgrades to https. In settings>security I can clear the cache and restart trying http. So far this has not found randy. The logs seem to show that randy is not starting or fails and closes.
Code:
blonk@randy:~ $ sudo systemctl status randy-node
● randy-node.service - Randy nodejs application daemon
     Loaded: loaded (/etc/systemd/system/randy-node.service; enabled; vendor pr>
     Active: failed (Result: exit-code) since Mon 2023-05-15 04:24:44 BST; 3h 2>
    Process: 607 ExecStart=/usr/bin/node /home/pi/Randy/index.js (code=exited, >
   Main PID: 607 (code=exited, status=1/FAILURE)
        CPU: 305ms

May 15 04:24:44 randy systemd[1]: randy-node.service: Scheduled restart job, re>
May 15 04:24:44 randy systemd[1]: Stopped Randy nodejs application daemon.
May 15 04:24:44 randy systemd[1]: randy-node.service: Start request repeated to>
May 15 04:24:44 randy systemd[1]: randy-node.service: Failed with result 'exit->
May 15 04:24:44 randy systemd[1]: Failed to start Randy nodejs application daem>

blonk@randy:~ $ sudo systemctl start randy-node


blonk@randy:~ $ sudo systemctl status randy-node
● randy-node.service - Randy nodejs application daemon
     Loaded: loaded (/etc/systemd/system/randy-node.service; enabled; vendor pr>
     Active: failed (Result: exit-code) since Mon 2023-05-15 07:48:07 BST; 1min>
    Process: 1420 ExecStart=/usr/bin/node /home/pi/Randy/index.js (code=exited,>
   Main PID: 1420 (code=exited, status=1/FAILURE)
        CPU: 303ms

May 15 07:48:07 randy systemd[1]: randy-node.service: Scheduled restart job, re>
May 15 07:48:07 randy systemd[1]: Stopped Randy nodejs application daemon.
May 15 07:48:07 randy systemd[1]: randy-node.service: Start request repeated to>
May 15 07:48:07 randy systemd[1]: randy-node.service: Failed with result 'exit->
May 15 07:48:07 randy systemd[1]: Failed to start Randy nodejs application daem>
lines 1-12/12 (END)

blonk@randy:~ $ journalctl -f -u randy-node
-- Journal begins at Wed 2023-05-03 04:11:24 BST. --
May 15 07:48:07 randy randy-node[1420]:   requireStack: []
May 15 07:48:07 randy randy-node[1420]: }
May 15 07:48:07 randy randy-node[1420]: Node.js v20.1.0
May 15 07:48:07 randy systemd[1]: randy-node.service: Main process exited, code=exited, status=1/FAILURE
May 15 07:48:07 randy systemd[1]: randy-node.service: Failed with result 'exit-code'.
May 15 07:48:07 randy systemd[1]: randy-node.service: Scheduled restart job, restart counter is at 5.
May 15 07:48:07 randy systemd[1]: Stopped Randy nodejs application daemon.
May 15 07:48:07 randy systemd[1]: randy-node.service: Start request repeated too quickly.
May 15 07:48:07 randy systemd[1]: randy-node.service: Failed with result 'exit-code'.
May 15 07:48:07 randy systemd[1]: Failed to start Randy nodejs application daemo


Just a heads up...the word "randy" has some mildly lewd connotations in some cultures and perhaps you might wish to consider other naming....Randolph ?

Cheers
Bob
 
Code:
blonk@randy:~ $ sudo systemctl reset-failed randy-node.service
blonk@randy:~ $ sudo systemctl start randy-node.service
blonk@randy:~ $ systemctl status randy-node.service
● randy-node.service - Randy nodejs application daemon
     Loaded: loaded (/etc/systemd/system/randy-node.service; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Mon 2023-05-15 09:41:42 BST; 24s ago
    Process: 1787 ExecStart=/usr/bin/node /home/pi/Randy/index.js (code=exited, status=1/FAILURE)
   Main PID: 1787 (code=exited, status=1/FAILURE)
        CPU: 141ms

May 15 09:41:42 randy systemd[1]: randy-node.service: Scheduled restart job, restart counter is at 5.
May 15 09:41:42 randy systemd[1]: Stopped Randy nodejs application daemon.
May 15 09:41:42 randy systemd[1]: randy-node.service: Start request repeated too quickly.
May 15 09:41:42 randy systemd[1]: randy-node.service: Failed with result 'exit-code'.
May 15 09:41:42 randy systemd[1]: Failed to start Randy nodejs application daemon.
blonk@randy:~ $