I’ve got a 7 bit [0-127] MIDI CC assigned to a Hydra Input and the Hydra output is assigned to a Send’s Receiver parameter. There are 128 send tracks.
Here’s is the mapping I’m getting:
CC: 0, 1, 2, 3, 4, … 127
Percent: 0, 0.787, 1.575, 2.362, 3.15, … 100
Track: S1, S1, S2, S4, S4, … S128
Is there a way I can use the formula device and/or other map modes(Relative Signed bit, Relative signed bit 2, etc) to get an arithmetic sequence for the send receiver, to match the MIDI value?
I think you are asking why you are getting those Track values in the Send Receiver when you set the Hydra Min/Max range to 0 and 127? Just out of my own curiosity: do you get a more consistent result if you set the Min/Max range in Hydra to Min:0 and Max:128?
4Tey, your table is exactly what Renoise is producing.
I think the order in which I created send tracks may have affected which ones were assigned(I was hoping to be able to switch through the sends, wrapping around at 128, effectively ignoring sends beyond 128 so that I could use them differently), or perhaps the Receiver list wasn’t updating…?.. So I started over and created the 128 tracks and nowHydra Min/Max range to 0 and 127 is working!
I was switching the max on the Hydra and getting the “Linked Send Track Does Not Exist” even for a track that existed, which is why I speculated that the Receiver list might not update on certain changes.
Zer0 Fly, that formula is producing the skips and repeats I was getting before.
(A*128)/256 works though. Thank you
The last part I would want to do with this is scale it down to less tracks(4 to 8) and still have it wrap around.
I would think I’d have to do some modular arithmetic, but I haven’t quite figured out what to do or how yet.
I think the order in which I created send tracks may have affected which ones were assigned(I was hoping to be able to switch through the sends, wrapping around at 128, effectively ignoring sends beyond 128 so that I could use them differently), or perhaps the Receiver list wasn’t updating…?.. So I started over and created the 128 tracks and nowHydra Min/Max range to 0 and 127 is working!
I was switching the max on the Hydra and getting the “Linked Send Track Does Not Exist” even for a track that existed, which is why I speculated that the Receiver list might not update on certain changes.
Just a bit of speculation: But I think you’ve uncovered a subtle ‘bug’ (bug is too strong a word though) Artie in Renoise due to some internal rounding error when it comes to assigning say some Hydra output to that send receiver. Let’s say it ‘skips’ send tracks with 127 assigned in max Hydra. If you momentarily increase the max value from 127 to 128, you’ll find that it probably ‘works’ (albeit with that ‘send track doesn’t exist (even though it does)’ warning. Then if you knock the max value in Hydra back down to 127, it’ll now suddenly ‘work’ more as expected. Basically you can’t fully trust Renoise here and is kinda confusing the situation. You are using a floating point value to control/select from a (integer) list. You see what you want Artie is to put in the number say integer 5 from a MIDI CC, go through Hydra with its floating point division and multiplication and scaling from 0 to 255 etc, and output the number exactly 5 to the send receiver list. Unfortunately that doesn’t fully happen, maybe sometimes you get the value 4.46543 internally, in which case it’ll probably convert to the number 4, hence the ‘skips’ and ‘repeats’. Sometimes though you can get it so that the rounding plays ball by working more evenly with numbers like 128 and 256 rather than 127 and 255. IDK Artie, but this is just some quick speculation on my part
It should produce no more skips and jumps or the like.
The problem is (x+1)/255 defines not the selected channel for the send device. It defines the thresholds between the selected states for the analog “x” floating point value. The first formula would target directly at the threshold, and generate flaky results because of rounding errors. The “0.5” factor corrects it by placing the results right in the middle between the thresholds.
Fun fact: you can make renoise have more send channels than are selectable with the send device. duh…
Edit, for your wraparound with the first 8 channels do something like:
(mod(A*127,8)-0.5)/255
for wrapping around channels 4-10 (6 channels selected starting from channel 4):