Fr/Idea: Negative Values To Delay Column

Maybe I’m missing something, but I still don’t see the big problem here :)
Yes this means you can make overlapping/colliding notes.

You can already do that now btw:

00 C-4 FF 0D05 01 E-4 -- ----  
  

One more simple “real world” usage of negative delay:

Some simple hihats you wanna humanize:

without negative delay the result look like this:   
  
00 C-4 03  
01 C-4 E9  
02 --- --  
03 --- --  
04 C-4 02  
05 C-4 F4  
06 --- --  
07 C-4 FE  
08 --- --  
09 C-4 F6  
10 --- --  
11 --- --  
12 C-4 03  
  

Hard to tell what kind of hihat rhythm that is…

On the other hand it’s crystal clear when you see this with negative delays:

00 C-4 03  
01 --- --  
02 C-4 -07  
03 --- --  
04 C-4 02  
05 --- --  
06 C-4 -0B  
07 --- --  
08 C-4 -02  
09 --- --  
10 C-4 -09  
11 --- --  
12 C-4 03  

I’m not sure what you meant about the 50% thing? Why can’t you negative delay more then 50%?
The only thing I can see we need for this is a setting for live recording where you determine the threshold for when notes should be recorded with negative delay or positive delay.

When you record chords etc you also get the notes spread on different lines, while you musically meant them to be shown as a notes side by side on the same line. Again negative delay would be great.

I also always wanted that start offset as someone suggested in the sample editor. Sometimes you wanna start a sample many lines before where you enter the note. Often resulting in that it should start in the end of previous pattern.
This is a constant problem with the pattern system. You change a pattern, and suddenly you have shaved off all the samples that have a slower attack starting in the previous pattern. Negative triggering of samples would help a lot in these cases.

(((Even a new pattern command delaying a note several lines before (negative and positive) could be useful.
For instance 0Dxy could be used for this:
D00 to D0F delay ticks.
D10 to D1F delay up to 15 lines positive.
D20 ti D2F delay up to 15 lines negative.
You need more lines, then duplicate fx, or we could split the entire D10-DFF range into larger positive/negative quantities, but before we do that we really do realize we need to redesign all the pattern commands before making more voodoo pattern command stuff…)))

If it for some reason confuses you , then don’t use negative delays in the first place…

IMO it just makes more musical sense to have the note stored in the “correct” pattern with negative delay (sample trigger), then to store it in the previous pattern that you might change later on. No more notes suddenly disappearing, or hacking in notes to patterns they really do not belong to.

We already can calculate/buffer sample seek, and automation etc. I’m sure we could do something with negative sample triggering as well…

For the recording it won’t matter much indeed, i was aiming towards NNA treatment as a confusional matter, how would NNA have to deal with overlaps?
It would logically swap the notes during the process but visually that is very confusing.
Considering delay values going back a lot of lines this is even more confusing.

The only reason i would somehow consider the use of a function like that is when i don’t want to create an extra notecolumn to have a specific note being initiated somewhere on the same line as another.
But that would make me lazy and after a while it would make songs hard to interpret if you have to edit these again (even if you know what you are doing).
So you can make your stuff messy with these kind of solutions, that does not necessarily mean everybody will do that, but if one doesn’t know what one is doing in Renoise in the first place, one shouldn’t touch that stuff at all :)

It is already very easy to come across situations where this will happen and having the Delay of a line offset back by half a line does not make it any more or less to happen under any circumstances!

If you are talking more about converting current projects the only way I could see to really do it would be to use Note Cut command, but again that is still not different to current if you want a note of less than a line in length (unless it is only less than a line as it is played delayed and Note Off is on the next line.)

I totally second that.
It would make MIDI recording much more efficient.

Given the difficulties of displaying the values in the delay column I think the least bad solution is to give Renoise a new column with the name “Advance”. The position of the note would be calculated with delayvalue-advancevalue. Note cutoffs et c should be handled just the way they would be if the notes were entered in the same way they are being played.

If a new column is too obtrusive, an alternative is to have some kind of toggle as a pattern effect command to make the delaycolumn behave as a negative. Personally I think an advance feature is so elementary and important that it justifies a new column.

Also more food for confusion though, another column with positive values.
The best solution would simply be adding a minus sign for any value till 7f. This however would mean that the delay column won’t go further than from 00 to 7F and 00 to -7F.
This is technically very illogical to program a placing algorithm for, because above 7F the note should be placed on the next row with a minus value while on playing level: the note should be played as if it had a delay-value above 7F and was placed on the former line. This is really crap to maintain and debug, not even speaking about how all the other routines regarding delay effects etc. should be adapted to house this behavior.
I personally, don’t mind the current manner of used delay and for me this kind of suggestion is a luxury problem.
Another thing is:For me personally a delay can never be negative because the word “delay” doesn’t mean “back into time” at all.

I guess this sums your opinion. Some people find this elementary and some don’t. The mission for the former group is to suggest a solution that is transparent enough not to be confusing or obtrusive, and for the devs to understand the importance of the feature of course ;)

Another suggestion in line with this reasoning:

  1. Make the data variable signed, meaning it can be +127 to -128.
  2. Make a keyboard shortcut for the user to toggle the delay mode between - and + on a particular line.
  3. Rename the column from “delay” to “delay/advance” - Dly/Adv.
  4. Give advance values/mode a different color than delay values/mode.

Tools or native shortcuts can be made to make the user interaction intuitive - and it’s invisible to people not needing it.

This situation reminds me of how trackers have no flats. Neither of these things make a lot of sense musically, but trackers are bluntly logical. How can brutal logic result in a sort of nonsense? Talk to an autistic person. Am i saying trackers are autistic? Well, not really. What I’m saying is how would renoise know if you are intending to play the next beat early or the current beat late? Maybe this only applies to sequencing with pattern follow on, but, ya know, a lot of people do that. Would be nice, though. I would use it.

What about Taktik’s Pattern Rotate? Would that not assist somehow?

Why is everyone making this so complicated? There shouldn’t be a note overlap problem, just center the offsets on the beat instead of at the beginning of the beat (and adjust metronome playback accordingly). What’s all this mumbo jumbo about buffering and overlapping notes?

It’s not crazy- this is how both Geist and Flstudio work and is definitely more musical. Different sounds have different attack phases and composing/performing/editing with these in mind is a pretty important aspect of rhythm.

I really think we need that pattern zooming now, would decrease the delay column its functionality to an informational level only.