Entrypoints, the audio entrance to Roon, made the move to HiRes!

Got this setup encoding and streaming at 192/16 sounds pretty damn good. 24bit would be the icing on the cake as I think thatw where the real advatages are over the sample rate. But this works really well.

@Jan_Koudijs I wonder if the issue with using ffmpeg is similar to that of liquidsoap. You can get ffmpeg to output a stream to icecast easily and this supports higher bit depths but it seems to max out the cpu, looking at top whilst is capturing it at 100% and suffers from alsa buffer xruns and drops out all the time even though the stream is consistent. I cant find anything online to get arounf why its so high.

ffmpeg -ac 2 -f alsa -thread_queue_size 1024 -i hw:0,0 -acodec flac -ac 2 -content_type audio/ogg -f ogg icecast://source:hackme@192.168.1.203:8000/entrypoint-audio-DietPi

1 Like

Great to hear that the higher sample frequencies are now also working in your setup.

(TL:DR Iā€™m not a troll, I promise!)
Hello Jan. This is going to sound like itā€™s from way out in left field so Iā€™ll start by apologizing for being totally ignorant of Roon until I just read all the comments in this thread, along with your GitHub wiki. But I ran across your amazing-sounding extension here and thought it would be an amazing complement to what I just developed. I took a pair of 300-disc Pioneer CD changers and wrote a Pi-based Python app to remote-control the changers, using a MySQL database of CD info, cross-referenced to disc slot number in the changers, so that a web browser (and eventually an Alexa voice interface) can load the desired CD and control playback ā€“ basically, anything the changerā€™s IR remote can do.

So, Iā€™m thinking I can now tie this into your work and stream the result, using your Audio Device input interface. My question (finally ;-): Do you think I could hack your web interface such that I could incorporate my own controls for disc selection, selecting titles from my database, and player controls? And as a side note, and separate need ā€“ I havenā€™t yet loaded my 600+ discs into my database. Do you have any suggestions on how to capture that metadata into a local database without going thru the laborious and time-consuming ripping process?

1 Like

Jim, you donā€™t actually have to rip the CDs to get the metadata, but the fastest way to do it is to put each of them into a CD drive to look them up in an online DB. Python Audio Tools, for instance, has a program ā€œtrackinfoā€, which will list all the metadata for the tracks of a CD.

Dear Jan

Success! Sorry that I have not responded sooner, I have not had time to try V0.2.0 until this weekend. Anyway after update I was forced to choose a soundcard, I choose ā€˜Codec USB Audioā€™ as that is all that was shown as an option. It then informed me that no audio was being played, so gave it a source, confirmed it was playing in Icecast2 server browser window. Then setup Radio station as per your instructions and itā€™s all working!

I am very pleased, thank you so much for you support and help :slight_smile: :grinning:

1 Like

So if I understand you correctly you want to convert the output of the cd changer into a web stream without any Roon integration. If that is the case I suggest that you look into Icecast and Liquidsoap as that are the 3th party components I use for the actual web streaming, links are in this post.

Thanks, Bill, for the suggestion ā€“ I hadnā€™t seen this one. Every tool Iā€™ve found for this also rips by default & I havenā€™t found a way to just grab the info without first having a file created & then extracting its properties. I canā€™t wait to try this trackinfo program ā€“ thanks again!

Jan, actually no ā€“ I thought I would be integrating my CD changers into Roon. I just wanted to also include my disc selection and playback controls in the integration, since Roon wouldnā€™t be able to control my hardware. But if you donā€™t think I should or need to use Roon then Iā€™ll look into these programs you mentioned. Thanks.

Thatā€™s very good news. It probably means that any USB soundcard, with an analog or digital input, that has ALSA support can be used. It is always good to have options to choose from :slight_smile:

Thanks for the report!

Actually, Jim, I misled you. trackinfo only works on a ripped file. What you need to do is to use Python Audio Tools to write a bit of code. Hereā€™s a start (/dev/sr1 is my CD drive):

#!/usr/bin/env python3

from audiotools import MUSICBRAINZ_SERVER, MUSICBRAINZ_PORT
from audiotools.cdio import CDDAReader
from audiotools.musicbrainz import DiscID, perform_lookup

reader = CDDAReader("/dev/sr1")
discid = DiscID.from_cddareader(reader)
metadata = perform_lookup(discid, MUSICBRAINZ_SERVER, MUSICBRAINZ_PORT)
# lookup may return multiple hits for each discid, because multiple people contributed metadata
# Thus 'metadata' is a generator of hits, each of which is a list of Metadata objects
for x in metadata:
        print(x[0].album_name, x[0].artist_name, *[t.track_name for t in x])

Once you have that working, you can then take the Metadata objects and write them to your database.

Thanks so much for this, Bill. I should have come back here many hours ago. :wink: I spent the day going thru the Audio Tools documentation and then the code but everything I read seemed to imply that the CD had already been ripped. Hmmā€¦ Then I went back to MusicBrainz & found the same thing. Iā€™ll try your code ā€“ thanks again!

1 Like

Maybe you can reach your goals this way:

  • Connect an input HAT to the Pi and run the Audio Entrypoint on it
  • Connect the output of the CD changer to the input of the Pi
  • Use the Roon (browse) API in your Python app to select the Audio Entrypoint radio station after a CD has been selected

The Roon API is written in JavaScript but there is also a 3th party Python variant available.

I wish I knew how to choose which ā€˜hitā€™ to use. I guess just use the first one?

Yeah, I can do that! With a browse api under the covers I could combine whatever I want on my webpage. Thanks! This is looking good now.

And btw, in case youā€™re wondering why I donā€™t simply rip the CDs ā€“ itā€™s just a sort of retro jukebox kind of thing Iā€™m building. Iā€™m even putting a couple Pi cams inside, to display the revolving carousel on the webpage when the disc is selected. Just some Covid-downtime silliness, mostly. Thanks again.

2 Likes

How do you associate a given disc with a record in the DB? Do they have unique IDs? Do you paste labels on them?

For my prototype Iā€™ve done everything manually, typing into the db album titles, artist & track names, genre, etc., while auto-generating a slot number. I then printed out the db & used that listing to insert each named album/CD into its assigned slot. Since I already have several hundred of the CDs already ripped, Iā€™ll use a Win Powershell script to read the directory structure of my music folders, writing out all the info to the db which again will generate and assign one of the 600 slot numbers to each disc. Itā€™s those remaining few hundred that I havenā€™t ripped yet that I was hoping to retrieve metadata for without going through the whole ripping effort. Hope that all made senseā€¦

1 Like

BT Entrypoint v0.1.0 is now available

There is a new kid on the Entrypoints block, the BT (Bluetooth) Entrypoint. The details have been added to the Installation and User Guide found on the Wiki. You get to the Wiki via the link in the first post. Here is the summary from the Wiki Home:

The BT Entrypoint gets music from a phone, tablet or laptop via a Bluetooth connection. This provides an easy way to play music brought in by family and friends on your Roon system. From the connected devices you select the one that has ā€œthe floorā€ via the BT Entrypoint Settings in Roon.

I tested this with a Raspberry Pi 3B+ using the onboard Bluetooth. Although it might work with a USB Bluetooth dongle this hasnā€™t been tested.

How to Install

It is critical that you follow Step 7 of the Installation Guide if you run this on the recommended Raspberry Pi / DietPi combination.

Update the Extension Manager to version 0.11.8 and the Extension Repository to version 0.3.17. You find the BT Entrypoint in the Entrypoints category.

1 Like

Hello Jeffrey,

Weā€™ve spoken before and shared some notes on maybe measurement mics , Earthworks?

I purchased HQPlayer for my iMac and have ADC to get my phono preamp into the mac! Can I learn from you how you configure HQPlayer to get the rest of it working?
We can go off line, this would be aGreat help

Thanks Carl /

Hi Carl, er, @Badbruno. Weā€™ve shared notes over on the Audiolense forum. Iā€™m a Windows guy and know literally nothing about macs, but happy to give it a go to help on HQP setup. Send me a PM and weā€™ll take it from there. Cheers. JCR

Hi @Jan_Koudijs

Thank you for all your work on the extension manager and the various extensions. I am using several of them to good effect!

I am having a problem with the installation of the Entrypoint Gateway extension however and I hoped you may be able to offer some support?

I am running a new install of DietPi on an RPi4. The extension manager and various extensions are already successfully installed. I also installed Docker as directed in the extension manager setup instructions.

Despite this I am seeing the following error when attempting to install the Entrypoint Gateway;

-> CONTINUE 1 Changed {"message":"Installation failed: entrypoint-gateway","is_error":true} No image available for "arm64" architecture

My familiarity with Linux is limited so that is about as far as I have got with it! Any help you can offer would be appreciated.