Pattern Matrix: Linked/referenced Matrices?

Long time Renoise user here. First of all I want to say fantastic job with 2.5 - I’m really loving it. I think the interface changes are great; definitely a wiser use of space even if it’s subtle. All of the new features are so good, but the one I’m most excited about and have been waiting the longest for is the pattern matrix. Thank you, thank you, thank you!

However I have one suggestion (forgive me if it’s possible and I somehow missed it). I think it would really be beneficial to be able to create blocks in the matrix that “reference” eachother. What I mean by this is the ability to link boxes in the matrix together and to specify they are the same chunk of track data, appearing in various parts of the pattern sequencer. Think of it like how a pointer is used in programming.

The reason I suggest this is that the power of the pattern matrix concept is the ability to build up songs and progressions from smaller, reusable pieces instead of just single patterns. As I write music I may create many musical “themes” such as a particular melody line for the chorus of the song. The chorus may appear in several places in the song. My intention is that everywhere the chorus appears, it is the same musical theme. Now let’s say I decide I want to modify the chorus slightly. It would be nice if I could edit it once, in one place, and everywhere else it appeared in the matrix would be linked, so they would all update too.

I think that adding this one feature would really allow the pattern matrix to take sequencing songs in Renoise to the next level.

Thanks for such a great product.

I suspect this won’t appear for some time; currently the pattern matrix is basically just another way of presenting and interacting with existing data, whereas the true arranger features like instancing or variable block lengths require changes to the underlying data structures.

as mmrn said, this would be available if we were able to use multiple patterns at the same time, then you could have your melody written in one pattern, and you would only add that pattern to the rest of the song, same, you could write your drums in a separate patterns etc, i think for drums this would be most usefull

I have an idea how it might work, the pattern as it is now I would call “master pattern” where all the tracks are playing together… then you could make new tracks and assign them to “sub patterns” let’s say you want track 3 for kickdrum, track 4 for snare, and track 5 for hihats… now you would create a sub pattern “DRUMS” and assign tracks 3,4,5 to it… the new created subpattern would appear next to the “master” pattern in pattern sequencer as it is now - but you would be able to add sequence for drum subpattern now as well (but in reality it would still be just one master pattern, only filtered - the selected tracks would be shown , other would be hidden) you could assign other tracks to other subpatterns too if you would want and they would all appear next to the original master pattern.

Now how would master pattern work ? … it would show all tracks the same way it does now… all including subpattern ones ! but it would somehow work as a “filter” where it would check what subpattern is asigned in the sequence, and depending on that, it would show the correct notes.

  • except for the subpattern aligned tracks, it would behave the same way it does now, but it would loose direct control over the aligned ones… meaning - if you change something in subpatterns, the subpattern is changed not the master pattern…

In case the subpatterns and master pattern all have the same number of rows, there is no reason why it shouldn’t work “right now” nothing would really need to be changed in the mechanism renoise works now, all that would need to be added is more tracks for pattern sequence

i’ve thought of this too. would be a great feature imo.

Yeah I suspect your right. Being able to do varying length “blocks” of pattern data would probably warrant a pretty hefty rewrite of the underlying pattern storage and playback mechanisms. I think you could get away with a “cheap” version of this idea though if you put most of the task on the code that handles editing in Renoise as opposed to changing anything underlying, and avoided varying length blocks.

It would work something like this:

-No new data structures or playback programming is implemented

-Tracks behave as they currently do - if it is used in a pattern that is shorter, it is truncated - if it is used in one longer than itself, it stops playing at its last note

-Used a common XML attribute in the underlying XML data of the track to “link” tracks together - this would be the only data change to facilitate this technique - otherwise in reality they are all their own tracks as far as Renoise is concerned

-Alter the code in Renoise that captures entered/recorded notes and on each new note or track edit scan the underlying data/XML to see if a track with a matching “link” attribute exists, if so copy the changes to every one that is found.

I’m sure that might lead to problems with the undo/redo stack and other things I’m not thinking about - but it seems like a cheap way to make it happen without having to rewrite too much of how Renoise works in fundamental ways.

maybe thqts something you would be able to do with the scripting stuff?

As far as I know there is no way to actually script logic inside of Renoise itself, you can only manipulate the XML data that represents the song outside of Renoise - then bring it back in. The scripting that exists is based on libraries built outside of Renoise that just manipulate the song data as XML. So until we can have external code being called in reaction to Renoise application events this unfortunately wouldn’t work. But you are right, if this capability did exist, it is something that could be created as more of a “plugin”.

Speaking of which I would eventually love some sort of plugin architecture for Renoise (hint hint). Then the community can help make Renoise even better with techniques like the above suggestion :P Just start by giving us some hooks to editor events… But seriously all in good time, the Renoise team is already fast as hell and very good at what they do.

Here are a few words taken directly from taktik’s 2.5 beta announcement thread:

Ahh dblue that just made my day! My fault for not being more active on the forums and with the in progress stuff for Renoise. I should have known; the Renoise team never fails to deliver! Thanks for bringing that info to my attention. Also very nice work on glitch, what a fantastic plugin! I’m sure you get that a lot, but wanted to say it while I had the chance :P

Man Renoise with scripting and plugin architecture - Renoise is about to level up in a major way. You guys rock!

I promise once this capability exists I will add the plugin I spoke of to “link” tracks together for simultaneous editing ;)