Multiedit : Multi Columns & Multi Tracks

i dont actually really understand what this means?
(edit)
while i can kinda understand FF/Notecolumn amount, that doesn’t really bring me any closer to, well, getting numbers out to it and getting it to place them in the pattern editor, maybe even by simle brute force, so they’re autogenerated (this could really work, you know)…

sure, maybe a notifier, but that would get confused with other pattern-input-based-scripts. (such as my sampler, which after recording a sample, places a note in the selected_track_index, which will start playing during playback.

so these would be mutually destructive, unless if there was some method of ditching a notifier.

i just don’t get notifiers, i’m not entirely sure if i ever really will. luckily there’s lots of other possibilities for scripting, which don’t require a notifier. so i can kinda do some things vaguely, and not know much about the pattern iterator or notifiers.

i suspect what vizion is after is the pattern iterator stuff - i’ve kind of looked at it with my grep method and didn’t really see much i could make use of (translates to : i didn’t really understand anyofit)

My assumption was based on you want your tool to pretty much do sub-line Edit Steps, so each step is equal. Beyond that I went as far as assuming a simple way to decide amount of sub-divisions would be equal to the number of visible note columns in a track.

Each line has 256 possible values of Delay.
#note_columns = number of visible note columns
note_column = current note column.

Delay value per column would be: (note_column-1)*#note_column/256

I can’t claim to really understand Notifiers all that well myself but I do know you should be removing them when they’re not in use. This option you already said would be a Toggle, so only if you have two tools/pieces of script active at a time which may be looking for the same types of actions should you get conflicts.

I finally figured out what this picture is about. and I agree! This would be amazing. press ‘4’, and your pc keyboard input, gets mapped, based on “editstep”, to 4 note columns.

If I understand this correctly it would automatically cycle through the note columns within a track after each note entered?

If so, this could be scripted:

Hook into the pattern track change notifier and each time a new note is added, increment selected_note_column (wrapping around by the number of note columns)

The tool could also set the number of note columns when activated.

it’s probably not

renoise.song().patterns.tracks.is_empty, _observable

is it?

or
renoise.song().selected_track_observable ?

I don’t think so.

I’m not infront of Renoise at the moment so this is all from memory/untested, but my thinking was as follows:

  • Start the tool by a keycombo/menu/midi etc
  • Enabling the tool hooks into renoise.song().selected_pattern_track_observable (notify on pattern track changes)
  • Store renoise.song().transport.edit_pos.line
  • Store renoise.song().selected_track_index
  • Let Renoise add the note and change line
  • selected_pattern_track_observable should fire
  • Check if a new note was entered - edit_pos.line will have changed (if edit step > 0)
  • If renoise.song().selected_note_column_index is not nil (note column selected), increment it mod renoise.song().selected_track.visible_note_columns
  • Stop the tool by a keycombo/menu/midi etc
  • If renoise.song().selected_track_index has changed, stop the tool (new track selected)

Anyway, I hope this gets the idea across.

editeD

Hi dBlue, it’s totally fair.
What I believe our french friend is describing is this: However-many notecolumns are displayed in the track of your choice - when you are in that track, with say, 12 note columns visible, your edit_step changes into a “note column edit step”. So everytime you press say Q on row 00 notecolumn 1, and your editstep is 2, you are taken to row 02 notecolumn 2, where if you press another key, you are then transported to row04 notecolumn 3 and so on and so forth.

The objective is to enable the user to quickly create high-density twirls of notes, and to have the editstep affect their behaviour. as you went pretty deep with your pattern resizer/shrinker thing, you’ll know that one could go to editstep=0 and start traversing into say, 10 note columns, all of which automatically have the correct delay values in the delay column, which would allow one to use edistep=0 recording to actually access “below row” resolution automatically.

I’ve now got a simple notecolumn opener / scroller for 1 to 12 notecolumns, but it is simply a shortcut run to traverse to the next notecolumn, doesn’t take editstep into consideration.

and to refer back to your FT2/MilkyTracker things, I think it’s valid that someone who requests an old feature from an old tracker provide a video of the old tracker doing it. That would at least make sense. No-one expects anyone to load FT2 in. So back to the original poster: some effort would be appreciated.

s[/s]

well, the notifiers keep shooting errors when they really shouldn’t, so i’m not sure how to progress with this so that i can come up with the goods. i guess it’s all down to how to use notifiers with keyboard shortcuts that toggle a notifier on and notifier off.

There are also moments where you have to turn off the notifiers to prevent loopback errors from happening if you are processing/changing the pattern contents from within the routine that has been fired by the notifier that detected pattern changes.

  
function noteadded()  
 renoise.song().selected_pattern_track_observable:remove_notifier(noteadded)  
 ...Do your stuff...  
 renoise.song().selected_pattern_track_observable:add_notifier(noteadded)  
  

Hmm! So my whole process was wrong. What im actually supposed to do is call noteadded from the keyshortcut directly and let it do its magick.

s[/s]

s[/s]

you know, i think i saw some mates of mine who used ft2, use something like this. it seemed pretty interesting and useful. not sure what the name of it is.

well, i got a shortcut to do this, which was nice, so made 12 :) and then 8 more.
function displayNoteColumn(number) local rs=renoise.song() rs.tracks[rs.selected_track_index].visible_note_columns=number end
function displayEffectColumn(number) local rs=renoise.song() rs.tracks[rs.selected_track_index].visible_effect_columns=number end

nice to be able to set the amount of note and effect columns up on the fly.

I think he is referring to the good old keyjazz. This requires you to select what tracks to be cycled (right clicking in track scopes for milkytracker). Personally I don’t need this with Renoise as i use either monophonic note cut or polyphonic NNA. But a tool to enable column cycling could be useful to some people, for sure.

columncycling keyjazz sounds pretty cool :w00t: . easiest to explain what it does and what he’s looking for.
i keep traversing this route of first having a keyboard shortcut that makes x amount of notecolumns visible, and that keyboard shortcut changes you to the next note column from the one you are in now, and then when reaching the x amount of visible notecolumns, switches to the first notecolumn. it either has editstep or doesn’t have editstep, but one has to press it after every time the user inputs a note on the keyboard.

im not entirely sure how that is in any way related to a notifier being caught, i really do not know. feels a bit interesting to, on the other hand, be able to set notecolumns amount x visible and set your cursor to the specific notecolumn that’s the next notecolumn, yet being unable to make it into something that would be triggered on and off automatically from a shortcut that says “now you are in 4 notecolumn cycle keyjazz mode, and now you are not”.
i’m starting to wonder if they are not actually galaxies apart from eachother, a shortcut that sets something like that, and a shortcut that sets a notifier that goes for that

To create something like this you attach a notifier to the pattern_track.
You would need a dialog with at least a setting of how many notecolumns to generate at max.
Then a shortcut to toggle the behavior on/off.
When it is on, you simply fetch the cursorlocation and then move it to the next column.
I know you can fetch the cursorlocation:
-renoise.song().selected_line_index
-renoise.song().selected_track_index
-renoise.song().selected_note_column_index

should not be too hard to move the cursor position using the same elements.

so, this:
renoise.song().selected_pattern_track, _observable

is what the notifier should be attached to, and that shoots the “cycle column/advance by editstep” kinda thing?