New Tool "Sync All Notes In Group"

Now Up on Tools Page:

http://www.renoise.c…-notes-in-group

This is a tool to make doubling/tripling… tracks in your song a lot easier.

for changes see end of post and new screenshots.



multiple tracks with different instruments, same notes all kept in sync


How to Use:

-MANUALLY:

If you want to sync all the notes in a grouped track, simply choose one of the tracks in the group. Now choose “Sync All Notes In Group” from the tool menu under “Ledger`s Scripts” . Tracks will be synced left to right.
There is also an assignable keyboard shortcut with the same name.

-AUTOMATICALLY:

  1. From the tool menu under “Ledger`s Scripts” enable the option “Auto Sync all notes in (*) Groups Enabled”
  2. choose the track you want to double, go to the instrument list and choose the new target instrument you want on that track. Right-click to get the instrument list menu it and choose the “Create Synced Track” option.
    A new track will be added to the right of the original track. Both of these tracks will be added to a new group with a name like *Group2. If you want to bypass a group you can delete the star manually. A star can also be added to any other groups you already have to make them automatically sync, left to right.

–ALTERNATIVE UNDO

As this is a realtime tool writing to the pattern editor, there is some unwanted native undo behaviour, unfortunately. To cope with this I have added a new undo shortcut that can be mapped to ctrl z that should not have these problems:

"Sync All Notes, Alternative Undo"

–COLLAPSE SYNCED TRACKS

To help keep things tidy there is a menu entry for “Collapse All Synced Tracks”. This will collapse the destination tracks in * groups but not the source tracks in your song. Keyboard shortcut under the same name available.


As of v1.1 a lot of menu entries have been moved to the tools menu under Ledger`s scripts


The “Create synced track” entry is still in the instrument list menu:

changelog

changelog

v1.1
-Moved the pattern menu options to the tools menu, under ‘Ledger`s scripts’ for tidyness.
-Added “Collapse All Synced Tracks” menu entry
-Added “Sync Fx Columns Enabled” – if you disable this fx columns are no longer synced, the syncing will be slower however.
1.09
Fixed bug where two group tracks were added instead on intended one on “create synced track”
1.08
– Added a shortcut for “Collapse All Synced Tracks”
This collapses all the destination tracks in groups marked with a “*”. The source track is left in it`s current state expanded/collapsed
–Now the destination tracks will mirror the same Vol/Pan/Delay - i.e. if these columns are visible or not
1.07
– added keyboard shortcut for “Create Synced Track”
1.06
– Fixed a bug where Autosync would not work until a new song was created. i.e. appeared broken at the very first install of the tool.
– added keyboard shortcut for create synced track
1.05
–small bug fix for tool crash on some new songs
1.04
–Auto Sync mode added
–Create new synced track in instrument list menu
–new Alternative Undo shortcut for pattern editor

1 Like

The last few times I have used Renoise I could of done with this, I will give it a try. Thanks!

Maybe because I clicked on the group, clicking track it worked:

'C:\Documents and Settings\Ian\Application Data\Renoise\V2.8.1\Scripts\Tools\ledger.scripts.SyncAllNotesInGroup.xrnx\' failed to execute in one of its menu entry functions.  
  
Please contact the author (scripts) for assistance...  
  
main.lua:170: attempt to index field '?' (a nil value)  
stack traceback:  
 main.lua:170: in function 'num__parent_groups'  
 main.lua:203: in function 'all_in_group_in_song'  
 main.lua:9: in function <9><br>```

<br>
<br>
Could this tool be adapted so it would only copy the specified note/notes? would be useful for extracting a kick or snare out of a sliced up drum break.</9>

V1.01 (first post) should not give an error now, but you will still need to click on the tracks, not the groups for it to work

This tool from Fladd does these sort of operations :):
http://www.renoise.c…separate-tracks

If you steal some techniques from this tool (note the multitrack edit option), one doesn’t need to run the tool again, but notes will be synchronised always, regardless wich track is altered ;)

That would be awesome!

I see you`ve used

:add_line_notifier()  

I thought about this but was averse to using it as it gets triggered for every single modification to the pattern doesn’t it? Therefore if I’ve got multiple of these groups I have to check and re-run code on all of them as I don`t know where/ what the pattern_line change was? I couldn’t find a pattern_track notifier in the docs which I would have tried.

Very tidy code there BTW, will have to have a spring clean in some of my tools I think

It does, but does not do much if the multi track edit is not on or the cursor is in none of the linked tracks.
The key part here is to perform stuff based on minimum criterias.
Keep those to global stuff like tracks.Then start narrowing it down to compare changes like note values and instrument numbers.
The less processing, the faster the routine acts and the less you notice.

I can see filtering by cursor position could help but then cutting (Ctrl x) some selections will be missed if cursor is not on relevant track.
Maybe I`ll play around with it and see if I can get something reliable enough.

You might perhaps also be able to pull it off by only using the idle handler.
In that case every 10msecs changes (or set a timer and wait for a larger time-scale to check changes) are synchronized if they have occured.

Yes, could be the best way currently.

I`ve also made a request in the API thread for —renoise.song().patterns.track:add_line_notifier(func[, obj]) which would be the best solution

Auto mode now added, please see new alpha in first post.

It seems to work reasonably well

Yeah, i had this problem as well, this is where the pattern_line_notifier came into play that carefully checked if multiple changes were done in one go (in that case, no synchronisations were done)…
You also have these problems when copying selections that spans two or more tracks in that group.

  
 for x = 1,#change_queue.track do  
 if change_queue.track[x] ~= start_track then  
 --if more than one track is processed, user probably did a pattern clean or copy or undo  
 --in all these cases this trick works fine!  
 change_queue.pattern = {}  
 change_queue.track = {}  
 change_queue.line = {}   
 return  
 end   
 end  
  

In your case, when changing notes on the other tracks than the main one, they are not propagated but restored.
You might want to consider an algorithm that checks if there were only differences noticed in one track compared to the other tracks in the group. (this includes shift-F3, to clear the track or clear selected ranges in that track)

thanks for the code, i’ll take a look and see if I can get native undo working with it as expected

I find in workflow this is ok, as long as you know to edit the left most track theres no problem. Maybe i’ll try it out though as it may be neater when you don’t collapse group tracks.

Nice tool! Very useful, thanks…

I wonder if you can make it so that some some synced tracks can be an octave higher or lower than the master track. Say I have the master track with a starting note of C-4, it would be cool if I put a C-6 as the first note in the synced track then the synced pattern data would be two octaves higher. Essentially the first note you enter controls the behaviour of the synced track, you could even have 5ths, 7ths depending on what note you enter.

For this I have been transposing the instruments directly in the instrument properties tab. Would there be much advantage to adding this functionality into the pattern? I am aiming with this tool is to keep things as simple as possible i.e. the copies matching the original pattern data to save confusion.

I see your point and I’m all for simplicity, the problem I was having was that if auto sync was on then if I transposed a synced track it would revert back to the master track. The only way to transpose was to disable track sync and then transpose which seemed long winded. So if you could transpose while tracks are synced that would do the job. Or maybe I’m not using it correctly?

I guess you want to just transpose a track in one pattern? Yes currently the tool is designed to make exact copies. The danger of disabling it and re-enabling so you can add differences in the synced track is that they will be over-written again.
The solution could be to add another sync track and you can then use pattern_track mutes (middle click the scopes) to disable what you don`t want in the synced tracks. The second synced instrument could be a transposed version.

I think whatever the solution it will involve a little work if you want different settings/notes for different patterns.

If you want the whole track transposed the easiest way is still the Instrument properties:

pic in case not clear where I mean to transpose:
4016 Inst props.PNG

Yeah, instrument properties is how I am doing it at the moment, it’s good enough for now… the tool even as it is saves me loads of time, so its all good. Cheers :)

Glad it`s useful!

I do think it’s wise with this one to keep the concept simple and reliable so a synced track always has the same notes. Pattern automation on the other hand I may de-couple from the copies as each track has it`s own fx.

1.06 update please see first post

http://forum.renoise…post__p__294458

– Fixed a bug where Autosync would not work until a new song was created. i.e. appeared broken at the very first install of the tool.
– added keyboard shortcut for create synced track