Total Headless operation possible?

First, thanks for keeping the 90’s alive for me with Renoise! Computers stopped being fun after my A500 days, but Renoise helps a lot.

Ok, this is probably an odd question, and I have been all over the manual and other forum posts.
What I am trying to do is run Renoise completely headless on a dedicated PC placed inside some custom hardware (already built).

I need Renoise to do only the following…

  • Load up to 256 samples into PC RAM. Samples up to 16 seconds in length, most much shorter.
  • Trigger up to 8 (prefer 16) of those samples via midi or the OSC option. Low lag needed.

So really, I just need it to replace the 16 channel sample player I built using a lot of hardware a few years back. 16 dedicated 12 bit dacs, each on its own custom phase accumulator circuit. Much like a Fairlight.

The PC (good spec) will be running windoze and have everything stripped to the minimum for max performance. The PC will boot, launch Renoise and then listen on the USB port for external commands from my custom hardware through a driver I have already written.

Since I wrote the hardware interface, I can have it control Renoise via midi or OSC (whatever seems most logical). I even considered using a mouse and keyboard control hack if needed. Since the PC will do nothing else, I have total control to make this work.

So, what do you think? Can Renoise be made into a headless sample player?
My other option is to spend 2 years learning how to write a dedicated WASAPI player, but I am not really wanting to spend that much time.

Cheers!

2 Likes

Might have to bug the devs for that Renoise CLI :smiley:

I like your spirit, though. Do update us if you get a solution up and running. Projects like these are the spice of life

1 Like

You can already save a template xrns that will load automatically when starting Renoise. This is the most basic “solution”.

Do you need to be able to browse samples from disk? Or just by switching instruments in a pre-made .xrns? The complexity depends on the exact needs. If it turns out you need something more magic, there is nothing preventing running a renoise script upon startup to “bridge” whatever you need to control. The Lua API is quite capable.

It seems to me the least trivial is to minimize any latencies :slight_smile:

1 Like

Thanks for the responses.

I did forget to mention that my software (running on the same PC) must be able to load and remove samples to Renoise. So I really am just looking to remote control Renoise, having it act as a basic 16 channel sample player with low (<10ms) latency.

I don’t have photos of my current hardware yet, but it is based on this huge breadboard circuit. Actuallt this is just ONE channel of the 16 I now have wired up. My circuit is now using both boards and has over 400 ICs on it…

The “user interface” is powered by a Teensy4.1 (arm SBC) that connects to a custom 88 keyboard I made along with various encoders and switches. I also have my own video hardware that drives an NTSC monitor.

So the little Intel i.7 PC running Renoise is just hidden in the system, acting as a replacement for my old DIY sample server. It’s only job is to play up to 16 simultaneous samples from a loaded bank of at least 256 samples.

My tracker lives in the external hardware and is bare metal stuff, connected to my keyboard and video controller. This is all working great, and I don’t want to replace any of it.

It’s almost difficult to explain what I need here, but basically none of the tracker part of Renoise, just the ability to respond to external control and serve up 16 samples with zero latency. Perhaps there is other software designed just for this task, but I have not been able to find any.

Also note that the little PC will never have a monitor attached, so once it starts up, renoise has to be completely remote controlled by whatever solution I code in visual studio (call that the driver). This driver has already been completed to the point that it can read all the user input data via 48mb USB link, so it should be trivial to send OSC commands to renoise.

The documentation on OSC is a bit thin though, so I am not sure if I can remote control the functions I need to…

  • Load / unload a bunch of samples to RAM
  • Trigger instant playback of 16 of these samples instantly

I know using Renoise just for this is kind of like driving a Ferrari to the grocery story, but it does have a well written sample player with no lag. I can only imagine how many late nights I would need to invest in order to write my own WASAPI sample player.

Cheers!
Brad

2 Likes

That’s the first I’ve ever seen a setup like that. What an obvious Labour of love. Kudos. I hope you can wrangle renoise to do what you need mate :+1:

2 Likes

Brad, you’re an unsung hero! Projects like these are the best. Seriously cool stuff! Other than what joule already mentioned I’ve got nothing to add that would help you.

Thanks so mush for these kind comments.

I will post a link to this project when I have time to put it on my site.
There is so much more to it now, even a hacked Korg weighted 88 keyboard and DIY spring reverb unit.

I think my best path would be to use a library like NAudio and just force myself into a 3 night programming session to get what I want.

Funny, I did the 16 channel hardware using mostly logic components available in 1980, but I am banging my head trying to make a 4ghz 7 core modern PC playback 16 short samples!

Could be a sign… stay with the original hardware!

Brad

1 Like

The only way I can think of to do a sophisticated headless operation would be to use the Lua API (write a tool that does everything you want, controlled via OSC or MIDI) or just plain OSC.

The default Renoise OSC interface has a `/renoise/evaluate’ command with a string parameter that is Lua code.
This Lua code can control anything that the Renoise Lua API can control.

Either way, as a tool or via /renoise/evaluate, it would be quite a bit of work as you’d have to write everything you wanted to do in Lua.


See GitHub - renoise/xrnx: The official Renoise Lua Scripting repository for Lua scripting in Renoise
and Open Sound Control - Renoise User Manual for the default Renoise OSC.

3 Likes

In principle, does this mean that live coding by lua to Renoise is already possible with vscode, neovim, etc.?

I imagine the following operation.

  • ctrl+enter: execute current line
  • shift+enter: execute current paragraph
  • alt+enter: execute selection
  • ctrl+shift+enter: Execute the entire file