Concept: Zoomable Pattern Editor

This zooming out and clips… yeah… I’m modest so I’ll just say +1. Having a sense of overview of a song and being able to just swap a pattern of snares out for another one is what I like about, for instance, FL studio.

Not sure I’ve quite got my head round zoomable patterns but if it means this:

I’m working at 4LPB, each line is a 16th note, zoom in one level and each line is a 32nd and so forth?

+1, big time.

The clip idea is also great, as long as it’s unobtrusive…

I don’t need this.

Cool idea, someday maybe but I don’t see it being worth the effort.

I think the ability to resize the upper and lower parts of the screen should be of a higher priority if enhancing the usability of renoise’s interface is the goal.

I would go for complete removal of the pattern borders and store note data inside clips only. Clips will be displayed in the arranger (former Pattern-matrix) as vertical tracks of unlimited length so there we need this "Zoomable Pattern Editor feature"for (only Patterns are not applicable anymore).

THE SOLUTION IS A COMBINATION OF ALL THESE PINNED TOPICS! :panic:

On a slight tangent here but, for anyone familiar MS excel (yes the spreadsheet program!) there is a feature of that where you can hide rows or columns in a spreadsheet, these rows/columns are still active but are hidden.

I think this feature would be really useful for the pattern editor.

For example say if you wanted to work at 8 (or 16) LPB but wanted to get the overview of 4 LPB without the crazy fast scrolling, you could hide the rows that give the higher resolution.

All the devs would have to do is add the ‘hide row’ feature and make it available as part of the API.

Tool developers could then develop whatever various different zoom tools they wanted and these could be used to inform the development of core pattern zoom functions in later versions.

I mentioned working with poly fluctuating bpm’s at the Brainstorming: Audio Tracks thread: post#205

And the more I experiment with it, the more I believe it belongs in this thread instead because what is primal for me is the creation of the wav file itself through editable patterns and automations.

And although it is possible to have poly fluctuating bpm’s running at the same time via shared bpm, it is a lengthy process and an even lengthier one if you start messing around with automations for several instruments and track dsp’s.

Plus I came across a problem for which I cannot figure out at the moment, rendering a selection with delay values both from the beginning and the end will not account for the delay values. I’m sure there is a workaround or adjusting some steps but I figure I’ll mention it in this thread as well in hopes that someone might have an answer, a resolution.

More unresolved thoughts…

A current list of time palettes I like or would like to work with.

Standard or Beats: BPM dependant such as 1/256; 1/128; 1/64; 1/32; 1/16; 1/8; 1/4; 1/2; 1/1

Time or Minutes: Miliseconds, seconds (I don’t use this as much as I would like to, perhaps this method is more appropriate when working with films or videos in general, film and video being the dominant time holder whilst audio playing the supporting role)

Samples or Fractions: I find the Slices to Pattern tool more flexible than the Fractional Notes tool

Technically Pattern Zoom somewhat exists, if you compose in the Sample Editor with the Slices to Pattern tool, not exactly straightforward ?
but it has been an available alternative option since both implementations have gone public.
It was the inspiration for the “Snap To Selection In The Sample Editor” suggestion.
If it was going in that direction and further developed, then I would also suggest an auto mark/slice an automated BPM with a chosen beat such as 64th notes or 16th notes

I would go for a bit more, “zoom out,” on the arrangement side…

WOW! Dat Pianoroll! :yeah:

Currently I’m using 32 LPB as my compositional standard.

I needed a “collapsed view” of the pattern editor.

The following is a description and cut down version of what I’m experimenting with.

First we have a rhythmic palette view, inspired by gearing systems in motorcycles as well as the piano keyboard itself.

This rhythmic palette view is organized from fastest to slowest, slowest being at the very bottom and tagged with the number 01.

In this example we have a total of 06, 06 being the fastest at 3/32nd notes which means at 32LPB is 12 lines.

06 --03 --32 --12  
05 --01 --08 --16  
04 --03 --16 --24  
03 --01 --04 --32  
02 --15 --32 --60  
01 --09 --08 -144  

Next we have the collapsed view, expressed with an event counter, loop point, and rhythmic palette.

Note: “loop point” in rhytmic terms I guess could be also described as aliases but for this experiment I didn’t use aliases in this way.

So it looks like this…

Each bracket is a track, in this exmample, we have three tracks.

A grouped percussion track with 04 total instruments and 02 melodic harmonic tracks.

Events are expressed in sequenced numbers, the percussion track has a total of 20 events for example.

Sequenced grouped instruments are next to the number of events.

Loop points are expressed as “o” and “|”.

Rhythmic palettes are expressed as “------”. 6 horizontal lines being the total rhythmic intervals mentioned above.

============= =========== ===========  
Percussion... Melodic.... Melodic....  
============= =========== ===========  
[0101o---4--] [01o----5-] [--.------]  
[...........] [02|--3---] [01o1-----]  
[0201|-----6] [--.------] [--.------]  
[0303|-----6] [--.------] [--.------]  
[0402|-----6] [03|-2----] [--.------]  
[0504|-----6] [--.------] [--.------]  
[0601o---4--] [--.------] [--.------]  
[0701|-----6] [--.------] [--.------]  
[0803|-----6] [04|---4--] [--.------]  
[0902|-----6] [--.------] [--.------]  
[1004|-----X] [05|-----X] [--.------]  
[1101o---4--] [06o----5-] [--.------]  
[...........] [07|--3---] [02o1-----]  
[1201|-----6] [--.------] [--.------]  
[1303|-----6] [--.------] [--.------]  
[1402|-----6] [08|-2----] [--.------]  
[1504|-----6] [--.------] [--.------]  
[1601o---4--] [--.------] [--.------]  
[1701|-----6] [--.------] [--.------]  
[1803|-----6] [09|---4--] [--.------]  
[1902|-----6] [--.------] [--.------]  
[2004|-----X] [10|-----X] [--.------]  

A closer look at the percussion track and its first 5 events.

=============  
Percussion...  
=============  
[0101o---4--] event 01, instrument 01, start of loop expressed as "o", a value of 24 lines expressed as "---4--"  
[...........] "..........." means there is an event here but located at a different track  
[0201|-----6] event 02, instrument 01, part of loop expressed as "|", a value of 12 lines expressed as "-----6"  
[0303|-----6] event 03, instrument 03, part of loop expressed as "|", a value of 12 lines expressed as "-----6"  
[0402|-----6] event 04, instrument 02, part of loop expressed as "|", a value of 12 lines expressed as "-----6"  
[0504|-----6] event 05, instrument 04, part of loop expressed as "|", a value of 12 lines expressed as "-----6"  
  

A closer look at shared rhythms.

============= =========== ===========  
Percussion... Melodic.... Melodic....  
============= =========== ===========  
[1004|-----X] [05|-----X] [--.------] event 10 for Percussion and event 05 for Melodic share the same rhythm, a value of 12 lines expressed as "-----X"  

What the above description sounds like. Warning: no deep mixing, bass heavy, watch out for your speakers or head phones.

@00.1: So you are suggesting a textual view of musical events, order-of-arrival? I’m not exactly sure what constitutes “an event”, but I am guessing that we are talking about things that could go into the pattern editor (fx commands, notes being triggered, etc.). Also not sure what the looping thing means - you imagine a new feature, something a bit like the clip arranger?

Just to twist this concept a bit further, I have been toying with a similar concept…Basically, imagine that whenever you tweak some parameter in a song, you have a special view that can display detailed information about the parameter?
You can then tell Renoise that the parameter belong to a “parameter collection”, and you can display this, and the other parameters, side by side. Perhaps even add (timed) comments of your own, etc.
Personally, I tend to work on a song detail for a while, getting quite absorbed by it. And often, this detail is not in some specific parameter but maybe two, or three, spread across various tracks and at various stages in the song. So, while a feature (or tool) that could “document” these things wouldn’t really add anything substantially new to Renoise, I still think it could be beneficial - especially when doing collaborations.

Order-of-arrival, yes. A compact view of the Pattern Editor.

Yes, perhaps this could be user defineable or like a show/hide fx commands, notes being triggered, etc. I’m mainly using notes being triggered as an example.

Yes, something like the clip arranger. Not that I have a problem with the current aliases feature but I can’t define what is an alias.

For example, same rhythm pattern different notes. I cannot alias the rhythm pattern alone.

The rhythmic clip pattern maybe short and looped but the notes are changing and never the same for a period of time.

Yes, I have had similar imaginations but haven’t gone down that far in the rabbit hole yet. My current method of documenting instrument parameters is a bit primitive at the moment. I also tend to get immersive, wanting to literally see every step of the way.

Just wanted to describe further what loop point meant in my descriptions.

This is what the description above looks like at 8LPB instead of 32LPB. The percussion track’s rhythmic “loops” are shorter than both melody’s rhythmic “loops”.

============= =========== ===========  
Percussion... Melodic.... Melodic....  
============= =========== ===========  
[0101o---4--] [01o----5-] [--.------]  
[...........] [02|--3---] [01o1-----]  
[0201|-----6] [--.------] [--.------]  
[0303|-----6] [--.------] [--.------]  
[0402|-----6] [03|-2----] [--.------]  
[0504|-----6] [--.------] [--.------]  
[0601o---4--] [--.------] [--.------]  
[0701|-----6] [--.------] [--.------]  
[0803|-----6] [04|---4--] [--.------]  
[0902|-----6] [--.------] [--.------]  
[1004|-----X] [05|-----X] [--.------]  
[1101o---4--] [06o----5-] [--.------]  
[...........] [07|--3---] [02o1-----]  
[1201|-----6] [--.------] [--.------]  
[1303|-----6] [--.------] [--.------]  
[1402|-----6] [08|-2----] [--.------]  
[1504|-----6] [--.------] [--.------]  
[1601o---4--] [--.------] [--.------]  
[1701|-----6] [--.------] [--.------]  
[1803|-----6] [09|---4--] [--.------]  
[1902|-----6] [--.------] [--.------]  
[2004|-----X] [10|-----X] [--.------]  

I’ve been thinking more about this question and I thought the answers I gave were valid but I wanted to give a bit more credit to the current method of aliases.

It is possible to organize a pool of clips with aliases, one way to do this with rhythms for example is to

fist create an alias section in the Pattern Matrix and max its pattern length to 200,

then create another section for your rhythms. These two are going to be linked.

The thing with clips is that it is user definable, so that means what the beginning and end for one composer maybe different for another composer.

In the example above I have a percussive loop…

begin clip [3/16 3/32 3/32 3/32 3/32] end clip

however, since other instruments and rhythms are involved, you could also save the clip as…

begin clip [3/16 3/32 3/32 3/32 3/32] [3/16 3/32 3/32 3/32 3/32] [3/16 3/32 3/32 3/32 3/32] [3/16 3/32 3/32 3/32 3/32] end clip

I would consider the latter more of a phrase, the former being the root of the phrase.

So if I wanted to save just the root of the phrase, I would save it on the first column of a track, mute it and keep the phrase on the second column.

With the alias section I created before, I now have an exact copy which I can unalias later and just save the roots for other songs.

Here is another short composition with the same concept of in order of appearance.

I spent more time composing with “loop point” thing in mind and another way to look at it is “render point”.

For example, a render point for a dry drum loop may be shorter than one with effects.

I didn’t document the effects rhythms for this however. But as stated a few sentences above, I have started to treat “loop point” as “render point”.

In this example I’ve rendered synths with effects once for percussion and once for melody.

So with those “loop point” markers, I can place the trigger points for the rendered percussion and melody.

All this may be a bit off topic to post here but the concept of zoomable reminds me of birds eye view of predators such as hawks who zero in on their prey.

In this case, zeroing on significant points of interest.

07.. --03 --32 --12  
06.. --01 --08 --16  
05.. --03 --16 --24  
04.. --01 --04 --32  
03.. --03 --08 --48  
02.. --15 --32 --60  
01.. --09 --08 -144  
============= ===========  
Percussion... Melody.....  
============= ===========  
|0101o----5-- |..........  
|0201|------7 |01o----5--  
|0304|----5-- |..........  
|.............|02|----5--  
|0401|------7 |..........  
|0504|----5-- |03|--3----  
|0101o----5-- |..........  
|0201|------7 |04|----5--  
|0304|----5-- |..........  
|.............|05|------7  
|0401|------7 |06|-2-----  
|0504|----5-- |..........  

Yeah, slightly offtopic perhaps but not entirely. It’s good to exchange ideas - how we perceive music is deeply subjective stuff :D

Speaking of compact representation of the music, here is something I made to see just how much a pattern could be squeezed:

We could still have a “zoomable view” of the pattern, but for a native solution, it should probably be less fashionable, more “straight to the point”.

It was suggested that the zoom level should be synced with edit-step, and I strongly think that is the way to go.
Then you would have a pattern which, when zoomed, was always edited “line by line” (the lines in between simply being hidden).

Cool, it looks like DNA. The mock up does point out a couple of immediate visual references regarding music theory that the Pattern Matrix does not.

The five species in counterpoint writing. A quick rundown of the five species:

Counterpoint is “The production of beautiful harmony by a combination of well-characterized melodies.”
In other words, write one melody, then another melody over it and so on.
This technique was invented before chords, and I think it was the precursor of chords.
The five species are like basic building blocks, something I think we naturally do when composing.

In this example, we have two lanes, which could represent as bass and lead.

01 01 Species one: add one note for one note.  
  
01 -- Species two: add two notes for one note.  
-- 01  
-- 02  
-- --  
  
01 01 Species three: add three or more notes for one note.  
-- 02  
-- 03  
-- --  
  
01 -- Species four: suspend one note onto the next.  
-- 01  
-- ||  
-- ||  
02 ||  
-- ||  
-- --  
-- --  
  
Species five is combining all if not most of them.  
  
For Species four, although currently there is no visual reference as to the actual length of a note trigger, I don't think this is a deal breaker.  

The mock up could also point out the concept of rise, fall, and drone (repeating notes), which is applicable both for rhythms and notes.

If I used three columns, I could express

a continuously “falling” note on column 1
a “droning” note on column 2
a “rising” note on column 3

========== ==========  
percussion melody.... These are rhythmic palettes, percussion for example has two unique rhythmic lengths, 12 lines and 24 lines.  
========== ==========  
02 0332.12 04 0332.12  
01 0316.24 03 0316.24  
-- ----.-- 02 0308.48  
-- ----.-- 01 1532.60  
========== ==========  
|01 1 - -| |-- - - -|  
|02 - - 2| |01 - - 3| melody event 01 is using number 03 out of 04 unique rhythmic events  
|03 1 - -| |-- - - -|  
|-- - - -| |02 - 3 -| melody event 02 is using number 03 out of 04 unique rhythmic events, placed on the "droning" column.  
|04 - 1 -| |-- - - -|  
|-- - - -| |03 2 - -| melody event 03 is using number 02 out of 04 unique rhythmic events, placed on the "falling" column.  
|05 - - 2| |-- - - -|  
|01 1 - -| |-- - - -|  
|02 - - 2| |04 - - 3| melody event 04 is using number 03 out of 04 unique rhythmic events, placed on the "rising" column.  
|-- 1 - -| |-- - - -|  
|03 - - -| |-- - - -|  
|-- - 1 -| |05 - - 4| melody event 05 is using number 04 out of 04 unique rhythmic events  
|04 - - -| |06 1 - -| melody event 06 is using number 01 out of 04 unique rhythmic events  
|05 - - 2| |-- - - -|  

I wrote this tune for a rekkerd contest, theme was about moving, so I thought it would be nice to move from electronic instruments to organic instruments. This was Renoise version released with comb filters.

I wrote it with Ledger’s Ticky Roll tool which had a collapsed view option and with dblue’s slices to pattern for odd rhythms.

Ticky Roll’s compact view was great because I could extend and evolve multiple melodies while keeping track of the entire sequence of events.

However, I must admit that I mentally broke just about when I was going to write for the organic instruments part, it just became way too chaotic and hard to keep track of what was going on at that point.

I’m placing this track here as an example of a musical result of “compact view”.

http://soundcloud.com/daemonarmada/renoise-suggestion02

If audio/automation tracks get added then maybe something like this would be good, using a key + scroll-wheel combo, zoom slider and buttons as options to zoom.

I imagine “parameter collection” would be less confusing than a “wire connection” view,

because with “parameter collection” at least it could be collected and sorted, section by section of the entire musical piece.

Whereas “wire connection” would just be a web, however that could still be useful…

I’m still trying to figure a different suggestion other than a “wire connection” - better visual cues on control flows: meta-devices, pattern commands, automations, combinations.

The 2.8.1 mixer view is pretty pimped out. It’s my home view sort of speak, probably because to me, its a distilled view of everything.

Track groups and track colors go a long way in telling me what I’ve done and what I will do.

In theory, one could do a limited version of this using Tools. Create an external “zoom editor”, limit 8 notes per line, etc.