I’ve just had a nifty little tool idea, but not time and energy to carry it out at all. It struck me that it might be useful for others, so I decided to share. Maybe it can inspire someone.
I’ve already seen some tools that can generate samples from an UI. My idea goes one step further: why not create a tool GUI, that resembles some classical synth interfaces, i.e. osc 1,2,3 subosc, filter, envelopes, lfo, effects. But with starting the UI and dialing sounds you don’t create samples, but actual renoise native instruments that you control from the synth UI. Next step would be to assign mod/bend/macros from the tool UI, so they can be used from renoise.
I think of it like the created native instruments do not need the tool to work, they are just created with it with a classic look&feel. For example a classic 2 osc filter synth you would create 2 wavecylce samples and put them through a modset resembling the filtering options. Then as you dial the UI, the parameters must be adjusted.
Other kinds of synths than substractive are also possible, i.e. with ring mod/comb filter effects or additive by creating wavecycles and blending them between each other.
What do you think - is this possible from lua? Do we have enough lua access to create whole instruments and manipulate i.e. mod set envelopes somehow?
I took a look at the API and it does look like this would be possible, at least for modulation devices which is all I quickly looked into. It seems possible to add modulation devices and to control them. I assume that the same may be possible for effects in an instrument chain.
I would imagine that a tool like that would have a sample generator that creates samples based off some synthesis algorithm, and lays them out in some sort of multilayered instrument based on note range selected in the tool, and sets proper looping for each sample, similar to the native instrument sampling option. Then I would imagine that the tool would create the instrument with a basic set of modulation, and the modulation device parameters would be accessible through the tool itself.
I think the hardest part for this project would be how to represent an “oscillator” or groups of them as a Renoise instrument. So if the tool provides 2 oscillators and a sub oscillator, one would have to consider how to map that as a multilayered sample, i.e. how to represent when one oscillator is louder than another, and if a user wants to change the level of any of those oscillators, how is that going to be mapped in a Renoise instrument to achieve that.
It’s an interesting project. I would be interested in giving a go, but definitely not now. Hopefully someone else may tag along with your vision.
Yeah only problem I’ve seen after a look at the API is the lack of means to control macro setup. Maybe I’ve looked at the wrong place, but there seems to be no command or non read only variable where you could add a mapping?
As for the oscillator section, I think one could just add several samples/keyzones overlapping, and make different mod sets with the same filter for each one. Then you can control the volume individually, or put the oscs through different envelopes.
About the sounds not going through the same filter module, this would be no gain at all afaik because renoise filters are polyphonic and seem to be per sample and not per mod set? So it would only be an emulation and a fun/easier way to set up sounds, having that drawback.
There is no problem to use a macro to control gui elements,
I tried it once and dropped it and didn’t develop it further. Here.
But it has to be worked around a bit, because if there is no mapping the macros don’t work. And Mapping, as far as I know, cannot be done via API.
But Raul will know more about it, I saw the best use in SMC.
Yeah, you can read out the macros from lua, that is no problem. But you cannot generate mappings from your code, and that is a problem for my tool idea. I thought that within the synth ui you would set up macro controls i.e. for filter, lfo depth, whatever, so you could use the resulting instruments from renoise. Without that feature it wouldn’t work