Velocity Device Improvments

I quite recently discovered that there is a velocity device. (Can’t understand how I missed this). Although trying it out a bit i noticed it has a lot of flaws especially when working with sample based instruments and controlling parts of the effect chain. It works great on drums but on longer samples like pads for instance i noticed that it has some undesired effects. - Let’s say i use 3 notecolumns and use a couple of notes playing simultaneously in different velocity. I want each note to use the desired setting, not only the highest.

So fore instance. If i want to add a bit of distortion on my pad at high velocity. I still want the low velocity notes to use less distortion within that track, even if I play a higher velocity note simultaneously or after, while the first one is still playing. I have no idea how to solve this exept for using several tracks with duplicates of the effect chain, but this seems very messy and I have to use a lot of tracks to get desired results.

Would it be possible to have a checkbox option (maybe on a particular effect) to use instances of the effect chain for each note column within the track? It would use as much CPU as using different tracks but it would keep things a bit more tidy, and you would get desired results when triggering several notes at once.

Any planned updates on this? Or maybe something for the improved rni structure?

You are indeed asking for a ‘poly setting’ for internal fx devices. This has been discussed internally for upcoming RNI improvements. For internal devices this is very possible to do (you already do this with instrument filters).
Also, for full flexibility the approach of using many tracks must also being considered. This would not be so messy if you think of the instrument-pattern concept where in a instrument-pattern each track have duplicated the device chain. Then you only need a instrument setting to circle through these tracks. This gives you a fixed polyphony configuration, much like hardware synths, but with total control of each voice. You can also use vst this way by preloading how many instances you need.
For this to work renoise would also need a way to connect several parameters together (so you control all voices/tracks at once).
Expect much more info and discussion about this when we somewhen start to really work on the new xrni design.

That would be imossible, as the problem is not in the velocity device but DSP processing all together. You see, all notes you play on one track get processed through the same chain. Only way to make it work like you want is to use separate tracks. But oh, don’t worry about duplicating chains. You don’t have to, you can apply shared effects on Send Channel, and keep only distortion and velocity device in those channels.

Other way of fixing that would be if we had instrument based effects not track based. But unfortunately, we don’t have them yet. So you really have to use different channels right now.

Velocity should be attached to RNI structure not to tracks DSP chain. But you can still get some things done with this simple velocity-device.

Actually i think It would be better to keep it on the DSP chains and have a possibility to have poly option or instances. then you would’nt limit the usage of the effects and the velocity device to rni-instruments.

Using poly effects just for Rni is nice but then you couldn’t benefit from this when using VST-instruments, and that would be a bad design decission, since many people prefer using VSTi’s or both.

a Chain could could look something like this and have one inctance per notecolumn, unless there is way to have an instance per voice regardless of how many note columns.

It’s hard to addd instance per note column or voice. Specially for VST’s as they output notes in one stream.

Samples aside, I don’t see how you could do this for VSTi without using multiple VST Instrument instances per channel… this would be highly inefficient, and go against current paradigms.

I don’t see the problem? Please try to explain? (I’m not a programmer so i might not understand the basics here) To me it seems as simple as splitting the sound that is supposed to go in to the desired DSP into one of the copy of that DSP. for example

[Velosity Device 1] sends velosity data (based on what note column) to one of 4 copies of [Distortion]
[Distortion 1] applies velosity based effect based on velosity data from noteculumn#1
[Distortion 2] applies velosity based effect based on velosity data from noteculumn#2
[Distortion 3] applies velosity based effect based on velosity data from noteculumn#3
[Distortion 4] applies velosity based effect based on velosity data from noteculumn#4
Applied effect and Sound data from all distortion devices are joined together again.

That way each notecolumn woud work as it was a seperate track. Sound data is just split into four channels and processed by four copies of the same DSP wich is getting velocity data from each of the track columns then joined together again.

Similar effect could aslo be achieved using track groups “Track Groups” explained in this thread.
TrackGroup Thread

In conjunction with this i would really like to see an Envelope device. wich controlls the ammount of the desired effect using an envelope. That way you could make some really wicked sounds using envelopes that triggers on note down. Not only for sample based instruments but for VSTi instruments as well as the envelope triggers on each of the seperate sound channels. Imagine using your favorite VSTi but want to control cutoff with an external envelope rather than fiddling around in your vst synth. (seperatly of course for each notecolumn)

That would be wicked!!

For internal devices this is very possible. But you can’t just put a vsti through these devices. There is only one stream out of a single vsti. So you can’t share that stream to many devices as each device would get all the notes together from the vsti, and not single notes.
So you must have one vsti per voice.
It’s a lot of things to set up. And the vsti structure it self sux if this was to happen automatically. There is also problems controlling many instances of vst at once because if the bad structure of vsti’s it self (parameter buffers and bad stuff, taktik told me). It would also take too much time and be unstable. So a dynamical setup of external plugin devices is out of the question. You would have to preload plugins to a set number.
But insted, we could manually do all this if the instrument structure was updated as we have discussed in the RNI future thread. Then you can add as many tracks you want inside the instrument. Each track can then be set as one voice (thats done with a setting to automatically cycle through each track for each new note you press). So you set up the instrument structure as you wish and then control this instrument beast as a normal one in your pattern editor. In other words you build your instrument through devices and add them together into a friendly and controllable unit. It’s perhaps a little bit more complicated to get you started from scratch, but it means endless and creative possibilities. This is a more ‘stable’ approach I think then just enabling a poly setting in a device and that might become very unstable and even impossible if using external plugins.
But all this is up for more discussion of course.

BTW, you can already use the LFO device as a envelope device. In 2.0 you can choose the LFO reset switch as a parameter in the velocity device. It’s not a perfect envelope device, I know, but it works.

Here is simple little demonstration, a evolving vibrato using the chorus + LFO + velocity device.
Use a sustained instrument.
Change the ‘Dest Max’ slightly in velocity device to also let velocity decide the time before max vibrato.
Copy this code and paste as device chain in mixer or the DSP panel.

[code]<?xml version="1.0" encoding="UTF-8"?>




true
false
Init

0.5
Device only


1.0
Device only


0.0
Device only


0.5
Device only


1.0
Device only



true
true
Init

4.0922932624816895
Device only


0.10569106042385101
Device only


0.0
Device only


0.0
Device only


1.0
Device only


0.0
Device only


3
Device only


127
Device only


0.0
Device only



true
false
Init

1.0
Device only


0.0
Device only


0.5
Device only


-0.31300812959671021
Device only


0.48780587315559387
Device only


4
Device only


Linear
500
0.0

0,0.0
84,0.84210526943206787
133,1.0
193,0.92105263471603394
269,0.97368419170379639
322,0.93421053886413574
358,0.97368419170379639
422,0.76315790414810181
499,0.0




true
false
Init
-1
Linear
0
127

2
Device only


6
Device only


0.0
Device only


0.0
Device only




[/code]