Hi, Jonas, please give me more details on pattern order. What the code does is duplicate the current row N-1 times. These appear below the current, and should be ordered correctly based on the structure of the original pattern.
If you are seeing behavior that doesn’t conform to this and are getting patterns split in a way that reorders note data, please show me some screen caps or PM additional details so I can fix it. I am hoping to get this fairly rock solid before I post to the Tools page. I will address performance improvements AFTER a stable version of this is finished. Thanks!
bleego
PS: Thanks for the suggestions and enhancement ideas. Please keep them coming. Not sure when I will get to them (I’m working on a cross pattern interpolater, which is a bit more daunting of a project), but I’d like to keep track of them for future updates.
I don’t mean a wrong ordering of notes/pattern content after splitting, but about the numbering in the ‘arranger’. Splitting a 64 length pattern in 4 automatically numbers the patterns in the arranger in the following order: 0, 3, 2, 1, while I expect it to be 0, 1, 2, 3.
Ahh! I see what you’re saying. I suppose I never really care too much about the actual numbering of my patterns (I tend to use the name column on the right side a bit more). I can address this for a future update. Thanks.
Yes, the new project is going to be a much bigger affair, I don’t expect to have much to share for a few weeks. Unless the interpolation algorithms in Renoise are accessible via the API, I’m going to have to rewrite all of them. I am thinking this may be to my advantage, though, as there are a lot of ways to improve upon the minimal “logarithmic” “linear” and “exponential” options for interpolating.
If you or anyone else is interested in collaborating, I have a good high level idea of what is needed and can break down some of the tasks.
Not exactly… I need to redefine functions for interpolating values between a start point and end point. For instance, if you want to interpolate a volume fade in Renoise, you select the volume column, supply a ‘00’ at the top, and ‘80’ (or whatever value you like) at the end of the column. Then you right click, and go to Column->Interpolate Linear, Logarithmic, Exponential. This will set all of the empty rows in between with values that gradually transition from the start point to the end point. Linear implies a linear transition, where the rate of change remains constant. Logarithmic applies a logarithmic change (a logarithmic curve) and exponential applies an exponential change. This is fantastic and quite powerful, but here is what I am planning:
Basic feature:
The ability to set start/end points in different patterns
The ability to choose how many lines at a time to interpolate (currently it places a value on every line, I will make this a config setting)
Flexibility in use: If start point is after end point, switch points and then interpolate. Interpolate column the cursor is located, or define a default, or define multiple columns in the config. If only an endpoint is defined, define first pattern line 1 as start point, etc.
Pie in the sky stuff (for post-v1 releases):
The ability to interpolate note values (this combined with custom interpolation functions below would potentially be a cool alternative to the arpeggiator)
The ability to tweak or supply custom functions for interpolation (not quite sure about the UI for this yet, but if I can get the below idea working this could be EXTREMELY powerful)
As part of the above, possibly integrate UI for defining envelope automation as a way to define your interpolation function.
Defining multiple start, end points and saving them in a table so that you could apply on the fly updates to multiple patterns at a time by simply applying a keystroke, possibly in a live setting, or to ease song creation.
Ultimately this fixes a fundamental issue I have with Renoise: The automation envelopes and current selection functionality is tightly coupled to patterns. For a lot of what I do, envelope changes, fades, etc occur over many patterns and are often subtle. It is tedious to do manually calculate interpolation values for each block that I want to adjust. If the pattern length wasn’t limited to 512, then this would be a bit better since I could merge a LOT of patterns, make my envelope or interpolate a column, and then split them back up using the new splitter here.
I have a feeling a number of others would benefit from a feature like this, especially those who like higher LPB settings like 16.
This would definitely be a pie in the sky type feature, but yes, absolutely. This sort of thing goes under the programmable envelope idea for custom interpolation. Instead of setting the note values in the column you would set them where you define your function for interpolation, or the envelope.
Once the basic feature is implemented, doing exactly what you have described above actually would not be hard to do, and could be added down road.
I think once I have the basic functionality down, I will come back here for enhancement suggestions, because I really like your idea above. But first thing’s first… gotta get the foundation laid down.
bleego
Edit: BTW, Jonas, I have fixed the weird pattern ordering issue you brought up with the pattern split. I will upload a newer version later tonight or tomorrow, and consider it a release candidate for the tools page.
Please don’t download the top file, grab the 2nd one I’ve posted. The original has a nasty bug that replicates note data in tracks with empty space. I’ve noticed more people grabbing the original file, and it’s very alpha/buggy. The one below it is better.
I will publish a semi-final version this week that fixes all major gripes.
Update: I have posted the version above, 0.93, to the tools page. I fixed the pattern ordering weirdness mentioned by Jonas.
I also have been working on and successfully implemented Jalex’s suggestion, but ran into an API bug which I started a thread for in the other forum. Ultimately, modifications to the transport loop are not undone when you try to undo the actions of the pattern splitter. This creates some issues where the loop could get pushed beyond the sequencer end point, and some odd things happen afterwards when executing the pattern split again.
I chose to keep these changes from the initial release, but I will eventually post it here in the forums. For now, the transport loop will remain unaffected by this tool.
Thanks again for all your suggestions and input! This was my first attempt at making a tool, and I feel a successful one. The API is well structured, and the lua was relatively easy to figure out in the process. I have a couple other tools in mind (see above) and definitely looking forward to sharing the results here later.
Waiting for a new hard drive so can’t test but think I remember Renoise behaving fairly strange like this in general and I have mentioned it in the past.
If highlight a few patterns in the sequencer and clone I think all the original plus cloned before highlighted. Say you clones 4 patterns you would have 8 highlighted after cloning. Undoing you still have 8 highlighted, rather than just the original 4. I’m not sure what happens if you try this at the end of the sequence (also may be remembering incorrectly as currently can’t test.)
if you need it right now you can do it yourself, you’ll first have to activate some stuff:
Than go to ‘tools’ in the top of the Renoise gui, open ‘scripting terminal and editor’, expand ‘tools’ in it and search for the pattern splitter plus tool. Click the + icon and double click ‘manifest’, change ‘api version’ from 1.0 to 2.0 and press ‘execute’ in the bottom right of the window. Should work now, maybe you need to restart Renoise first?