Scripting A Synth Controller (With Duplex)

I’m fairly new to scripting for Renoise but not that new to scripting. So I was having a shot at scripting a synth controller via Duplex so that I wouldn’t need to touch the synth anymore and create a better workflow. I have skimmed through a bunch of readme files but did not find my questions adressed so I was hoping you guys could be of some help.

A bunch of questions:

- Wouldn’t it be functional to make a duplex device available in the Renoise effects device chain?
This would make it possible to automate the duplex device (and thus the synth). In a sense this would allow one to make native ‘vst’-controllers for your own synth. The midi CC-controller device is insufficient as it does not allow all the synth parameters to be included in one device which is annoying.

- What application type do I need to create (e.g. mixer/effect) to create a duplex application which sole purpose is to communicate with the synth (and vice-versa) and not Renoise itself?
I don’t want the duplex application to affect track volumes or settings. I just want it to control the synth and I want to see hands-on changes on the synth back in the controller application. This already works when the application type is ‘Mixer’ but this unfortunately affects track settings in Renoise which is unwanted. Setting the application type to ‘Effect’ stops all effective communication between the synth and my premature duplex application.

Which synth? I started making a Virus B controller in Duplex (with some success, it has to be said), but it was a dirty hack and Duplex really isn’t the right tool for the job.

I wanted exactly the same as you, so I checked out the Ctrlr project (hardware synth controllers as VSTi or standalone exe). Lots of synths are supported, but since mine wasn’t I’ve painstakingly made my own…which I can use across various DAWs (more to the point, which other people can bugtest regardless of whether they use Renoise) and expose very easily to MIDI automation. I can even sync the Virus’ LCD screen contrast to a Renoise LFO ;)

Anyway, even if you don’t fancy messing around with C++ and Juce, the guy who writes the core engine is working on a system that’ll let people create Ctrlrs just with a bit of XML and LUA (sound familiar?). Before too long, I hope we also have full patch librarian (sysex etc) stuff implemented, and eventually it should plug most of the big MIDI-related workflow holes that persist in Renoise.

EDIT: Oh, if it’s for your Nord Rack, there are Nord Lead 2 and 3 Ctrlrs up there, one of which may work. If it’s for your Virus CK, my Ctrlr should work fine for it. I’ve been testing on my B, but the CC and sysex parameter charts are almost identical and I’ve just finished adding the C’s EQ section (the only significant difference between the C and the B, apart from DSP voice count). No idea if it works yet, but there’s no reason why it shouldn’t. I’ll post again when it’s available for testing.

Othree - a Virus build for Windows is online and you can grab it here: http://ctrlr.org/page.php?p=download

Hmm I though I posted a reply already. Thanks for your help! I wanted to program an interface for the Nord initially and after that possibly the Virus. Unfortunately Duplex might not be the right tool for the job (right now).

I’m looking at your Nord control plugin right now and another problem comes to surface I’m afraid. Renoise initializes the midi resources available which in turn prevents the plugins from using my midi interface. I think it’s relatively easy to overcome by changing the Renoise config xml or turning off the interface while starting Renoise. Problem is I can’t be arsed. I built everything with the sole purpose to work in the box hassle-free and now I have to disable my midi-interface.

Any ideas? :slight_smile:

Nice about duplex is that it overcomes the aforementioned problem and allows me to use my midi-interface because it is in use by Renoise. That causes other trouble though, obviously I wouldn’t be here otherwise.

I wish I would be able to program C or a similar language but I have a background more or less limited to internet-related programming and no time to make myself comfortable with a new language right now…

Syphus is of course right. Duplex has a specific purpose, which is is Renoise plug and play, taking control of the program. Controlling synth parameters, on the other hand, is in no way limited to Renoise, so why should the solution be limited to Renoise?

That sounds strange. You need to turn of the device before starting Renoise, then turning it back on in order to use the CTRL plugin? Would it not be sufficient to make sure the device is not listed in preferences > MIDI devices…

Othree - to clarify, I’ve only made the Virus ctrlr, while the Nord one was done by the main Ctrlr dev (atom). But yes, the issue is universal to ctrlr devices. I’ve got about four different MIDI I/O devices so it hasn’t been an issue for me, but if you don’t need to use your interface in Renoise for other stuff - or the output, at least, since Ctrlr can share inputs via the ‘use VST input’ option - you should just be able to deselect in preferences like danoise suggests.

Have a fiddle around with that in mind; I’ll do my best to help you get it working :)

@danoise: The way I’ve set up my little home studio is meant to provide flexibility without requiring any change in wiring of whatever sort. I’m fully committed to getting everything to work inside the box.

Yea, I guess I’m running out of options here. I’d prefer to keep my midi interface (have only one 8x8 unit) plugged in all the time, especially since the Virus KC is also my only midi keyboard. This is exactly the reason why I’d love to make synth control panels with Duplex, I can use the panel to control the synth and still use it as a midi controller too. The VST’s do not provide that flexibility.

For the Virus specifically I have the Rekon plugin. However this needs the vst to be able to output to a specific midi channel via the host which Renoise doesn’t support. You can already control the plugin by setting a midi input on the Rekon instrument. But because the vst output can’t be configured to a midi one it’s not possible to control the Virus from within Renoise.

Maybe the quick solution is to go for the Virus TI. I’m also considering stepping back to a simple midi controller and selling the synths… We’ll see. :)

I just sold my TI Snow, actually. I’d only had it a month and lost a few hundred quid for my trouble, but the only way to know for sure whether it’s right for you is to try it out. There are SO many nightmares with sync and sample-timing that it was better for my general mental health to drop back to the B, with a few fewer features and a lower polyphony count (though a higher multitimbrality count and four extra analogue outputs). I don’t mean total, disastrous issues, but (possibly even more irritating) small niggles which build up and culminate in a sense that you’ve got a great synth that’s crippled by a software control paradigm that just doesn’t do what it says on the box. Be very wary…

As for the Ctrlr/Renoise problems you’re having, yup - I recognise that totally. That’s one of Renoise’s various gaps in MIDI functionality that causes problems…

Well. As far as I recall (which isn’t that reliable), when I made my Duplex hack just a few days after the first 2.6b was released, I used a Mixer device - but that didn’t matter, because I created a new device type - Sysex Controller. At least I must have done, because that’s what I’m looking at right now in the Duplex config dropdown :P The Duplex device is basically a couple of knobs which control Virus parameters via sysex and that’s it. A childless smidgin of sysex was present in the Duplex code and I just made it useful by making sure it would parse a formatted string from the XML. I think I shared my code on here (search my posts - it was a few months ago but I don’t post a great deal) but perhaps I’ll look at it again when I get a moment.

If you, or somebody else, pursued this, it’d be a nice solution to a niche but very legitimate problem - one that I also have on my portable/live setup (laptop, X-Station, Virus).

Duplex is open software, so of course anyone can hack it, and when I have the time I’m happy to assist. Hotelsinus just PM’d me with regard to a Waldorf Blofeld control-surface - synth control is quite the popular topic on this board. Let’s discuss how it could all fit into Duplex then.

One of the obstacles seems to be how to develop an actual application? Because, every LED light, every motorized fader movement and CC value that’s transmitted (back) to the device is a result of the application logic. And for a synth, this is what we want, right? We don’t need the additional control of Renoise parameters.

Here’s how I would like to see the scope of a synth controller: keep it as a “pure” application, don’t require any modification to the control-maps.
For example, if we wrote an application that exposed basic synth parameters like “waveform”, we would save this as our “synth application”. It would contain everything that’s synth-specific, like sysex codes. And because it’s an application, you can run it off any controller, all that’s needed is to add an entry in the device configuration. It makes the design process (the UI design) a lot harder, because then you suddenly have to think about all the various controllers instead of focusing on just one, but hey - that’s Duplex, baby.

In order to get started, try to learn as much as possible about how to use the various UIComponents, because this is the raw material from which you create your user interface from: should these buttons toggle on and off, or trigger something? Should these buttons act as a switch? Should this slider output a different range than the next? Once you’ve understood what the various UIComponents do (or even how to write your own ones!), you’re ready to design the application. It helps to think about the design process in it’s most simple terms - like, buttons are pixels turning on and off, and sliders/dials are values that can go up and down…

this topic’s not dead yet.

Has anyone here been able to make any more progress usingduplex to control outboard gear?

ctrlr was a promising find for me, I think I can use that to handle controlling synth parameters from renoise which might not have it’s own specific knob dedicated (MicrowaveXT for instance has dozens of parameters only controllable via MIDI)

syphus - any luck or progress with the sysex patch librarian you’re referring to early in this thread? were you working this directly into ctrlr???

I would like to:
Be able to send patch dumps from my synths to renoise, have them saved in, say a pattern at the beginning of song that acts as header to the send the sysex to the synths for the patches used in the renoise song. . . much like most any other outboard gear user who would like to be able to save midi programs in a song in renoise like we were doing in cakewalk 15 years ago. =)

This last item is paramount. . . any one else on this thread have thoughts or ideas on this topic?

Necromancy!

I’m afraid I haven’t touched any Renoise scripting since looking to Ctrlr as a solution. Ctrlr is currently in the midst of a gargantuan overhaul which probably will have sysex librarian capabilities. atom (main dev) is asking for feature requests to be put in the issue tracking system, so it’s a good idea to remind him it’s a priority.

Probably the next thing you should do is check out the current state of Ctrlr (lots of new threads about it on http://ctrlr.org) and appraise the situation. I want this functionality too, and because Renoise can’t fulfill my DAW requirements in various other ways, I have to use a combination of Renoise, Ableton Live and Reaper; as a result, I’d rather see a VSTi-based cross-host solution. It’ll be tricky to implement, but the crucial thing is good feature design - again, the best way to ensure that, especially if you like the way Cakewalk used to do it back in the day (I have no idea about this because I was using Protracker and Fasttracker back then), is to get involved and start shouting :)

… and this is what I’ve been doing minus the shouting, of course but atom has certainly been implementing a hell of a lot of my feature requests into ctrlr since I’ve been playing with it for the past month. I’ve had a freaking b l a s t building a fully functional microwave XT ctrlr, I’m calling it the monstrumWaveXT :)

here’s the actual synth:

here’s the ctrlr I’ve built for it…

I’ve been actively posting bug reports and feature requests since I’ve been playing with this for the past month and ctrlr really has come a long way in just that short period of time…