Norns as a headless browser with a basic UI for webSDR

Hi friends,

Someone in the “Today’s Discovery” thread recently pointed us to this web based software defined radio: http://websdr.ewi.utwente.nl:8901/?fbclid=IwAR3HG8z0sXMZ6mv47r2Fh4kzG1V4oyol1vrRQU4wH-KoUR-yXCgYOJiGuQU which makes for some wonderful surfing experiences and could be an endless source of sampling gold.

My initial thought upon visiting this website, was “I want this on Norns.”

My question is: Would it be possible to make a script that is essentially a headless browser of a single website? To some extent, I know @infinitedigits has done this with the norns.online script, but I also realize that the website in question here involves a lot of java based UI which I’m not sure how Norns could interface with. Is it at all possible to make a norns script that would:

1.) load the website that this radio is hosted on?
2.) interface with that websites controls via norns UI. Ie. the button “start audio” which runs “soundapplet.audioresume()”>" when it is clicked could instead somehow send that command to the website when say k3 is pressed?
3.) Get the website’s audio running out to jack?

Any insight into these mysteries is appreciated.

EDIT: @xmacex I see that you have kind of done something like this with freesoundoftheday. Do you have any resources or insights into how one might approach this?

7 Likes

There’s Pirate Radio script pirate radio and while I’m not familiar with the technical implementation could maybe offer a bit of insight into what you’re describing.

1 Like

definitely possible. what resources would the norns need from the website you couldnt do with a normal script? why do this?

1 Like

Good question. I might be a bit unfamiliar yet with this webSDR magicianry, but it seems there is a server somewhere that is running the software and is also accessing the radio’s antenna. The website is set as the interface for users to manipulate the parameters of the software—to scan frequencies, define am/fm modes, etc. @eigen mentioned in discord that this is going to be quite difficult, but not totally impossible. Anyhow, it feels potentially above my pay grade right now. I’ve been attempting to seize on an idea that can guide my development in learning Norns and thought this one could do it, but I might need to go more simple before tackling such a thing.

If you were to tackle this would you approach it via a headless browser and if so do you have any recommendations of ones to look at?

2 Likes

20 characters of this would be incredible

2 Likes

have you done the studies yet?

I went through them quite some time ago. My thought is that I will do them again once I have an idea of something I’m committed to seeing through to the finish. Then I hope to better master the concepts through being more relevant to what I am trying to accomplish.

4 Likes

Great idea! I wonder if using a popular SDR-dongle would be possible (eg. RTL-SDR Blog -dongle seems well documented). Using Norns standalone as a receiver for satellite etc. bleeps would make it interstellar. It would be great to hijack samples into a beat live.

4 Likes

the most low-tech solution is rpitx (just a simple wire in a single GPIO header).

… but unfortunately that won’t work on a shield unless using a GPIO breakout board and even less so on a regular norns.

so the dongle-life seems to be the way to go.

3 Likes

As the (co)creator of the Receiver mod, I pondered about this before- but deemed it very difficult and definitely over my head… The above gives some nice ideas how to tackle this… don’t have the time rn but great to look into it together :slight_smile:

3 Likes

What a fun source of… sounds, thanks for linking to it and bringing it to my attention. I was never into listening to radio like this, but this might just have changed :wink:

:radio: :radio: :radio:

I would approach it like this

  1. Feasibility study, reverse-engineering and sketching
    1. to try to decode the protocol the existing web interface uses to make requests. I would use the browser developer tools to try to see what each of the buttons do
    2. try to simulate the web UI actions first in browser, and then from Python (which is the code sketching language I’m personally most dexterous with)
    3. try to hook the audio stream to Alsa on norns, see the Receiver mod (@maaark linked it above) and @infintedigits’s norns.online and mpv. It’s some HTML5 thing, it seems.
  2. If all of the above was more or less successful and I decided to move forward toward a norns script, I would then contact the people in Twente who are running the website and the radio, and ask for their blessing, linking here, and also saying a few nice words about sick and fun sounds their radio is providing
  3. If they would be ok with it
    1. I’d make a hierarchy of which features of the existing web UI to implement first in a norns UI. Maybe the FM scanning?
    2. Think about how to reconstruct (parts) of the waterfall in a norns UI
    3. Iterate back to 5.1
  4. Make future reminders for myself to update the current operators in Twente about the progress of the project, at least at publishing time, and maybe some time later if the llllllllines community picks it up as an audio source.
  5. Sculpt otherworldly sonic landscapes
8 Likes

Here’s a Gist of someone who’s been trying to do the same: Effort to Reverse Engineer WebSDR @ Twente · GitHub

Seems hard indeed!

3 Likes

My understanding is that the person that runs the website is not interested in supporting third party clients because he fears this would create unpredictable and uncontrollable traffic patterns that he wouldn’t be able to support financially. Keeping it in the website gives him better visibility into who is using it and when and makes usage more predictable, is how I understand his view.

4 Likes

That makes my heart sink a little. I have started trying to figure this out via the puppeteer headless browser which in that case would be accessing the Twente WebSDR via the actual website and would maintain the owner’s ability to monitor usage in the way you describe so hopefully they are cool with it. If I get very far with the project, I will certainly reach out to them as a courtesy.

2 Likes

I’m going to risk throwing some personal experience into this fire. At one point in my professional career I had to choose whether to open up a web-based offering to API usage. Eventually we decided that while the user community for most features was wide (many users) but shallow (used only few features that weren’t computationally expensive even when used often [cacheable]), the community for a few features was small (few users) but deep (much more expensive, but infrequent usage). To keep a handle on the latter, we asked them to register for API keys, which we generated and sent them for their individual use.

I would certainly pay some $ as a subscription for access to a webSDR via norns.

2 Likes

While it’s an admirable idea that I’d love to see implemented, it would require administration and that doesn’t come without overhead. I get why someone might want to cut that train of thought off at the start.

Here’s where I read about this:

1 Like