New Tool: Instrument Chainer (Experimental)

Maybe change “com.renoise” to “com.homermobile” for stuff that isn’t explicitly approved by Taktik?

hi Vv

do you know if its possible?i think i need something like this to work with my chords tool idea too,but dont know if its possible yet?

I’ve been playing some more with this script meanwhile…
One question though:if notes are placed underneath eachother:do you happen to use the midi-device that you also have assigned as the Midi-in device?
This is the only way i can get similar results.
Best not to use the same midi-device as you configured as midi-in device in the preferences, or set it to none.

The latest version has an addition that allows you to send the instrument values to the master-track (redownload the attached tool in the first post).
This is necessary when you would be using a virtual Midicable to record your stuff.
Recording with a Midi cable is the better option to do, it gives the best results but virtual midi adapters unfortunately also miss a note-off or two in a while.
There is no real good way to do this properly with the script as Taktik also was hinting about.

For offline recording it can make some sense, for realtime, better not try to support that this way and wait for Xrni 2.0

i just tried it again,both with the same midi device,and with the midi device set to none,and now i couldnt get it to work,will check later if i did something wrong though

Also something has changed in B3 to prevent Renoise from crashin in a certain event when catching multiple notes at the same time.

What i also find strange is that the script seems to receive double note-on’s per key i hit and double note-offs…

The cause seems to be that i predefine the midi device in the device-list, this somehow seems to create the device twice…
If i set it to none in the first place, i only see nicely one message being registered.

Updated the tool in the first post again.

Opening up the updated script, gave me:

[i]"‘C:\Users\plugexpert\AppData\Roaming\Renoise\V2.6.0\Scripts\Tools\com.renoise.InstrumentChainer.xrnx’ failed to execute in one of its menu entry functions.

Please contact the author (Unknown author) for assistance…

std::logic_error: ‘remove notifier: the given notifier function was not added.’
stack traceback:
[C]: in function ‘remove_notifier’
main.lua:462: in function ‘connect_to_server’
main.lua:53: in function ‘initialize’
main.lua:19: in function main.lua:18"[/i]

Oops, seems like I received this error on udp, instead of setting it up on tcp, like should have been done.
Changing this in the preferences removes the error notice and all seems to work, though playing 2 vsti at the same time with my lpk midi keyboard results in the keys being hold forever.

Releasing the keys doesn’t send note-offs.

The notifier issue should no longer pose a problem

The note-offs problem may be over with the new version (in my case note-offs didn’t appeared with the virtual midi cable drivers only though…)
The LoopBE driver is a pretty dangerous midi driver… better not have instruments linked when selecting it, it sometimes bursts a stream of messages in one go…

With the internal midi device this problem does not occur but i have different problem-scenario here…
Renoise its internal routine only counts on the fact that only one instrument can be addressed, which means that when recordig into the pattern, the next note-column is based upon the offset of the note of the first instrument. The other linked instruments will then be pasted to the last one.

Now when i manually hold a note-key and manually move my cursor to the last note-column containing a note (if you have linked two instruments this will be the second column) and then press another note-key, the next set of notes are aligned in empty note-columns.

With this little routine, i automate this manual column switch process:

  
 if o_message ~= nil then  
 client:send(o_message)  
  
 count = count + 1  
 if count == last_instrument and song.transport.edit_mode == true and   
 song.tracks[note_map_dialog_vb.views.trackindex.value].type == TYPE_TRACK then  
 local n_delay = os.clock()  
 repeat  
 until os.clock() > n_delay + 0.02  
  
 if song.tracks[track+1].visible_note_columns < (song.selected_note_column_index + (count-1)) and   
 (song.selected_note_column_index + (count-1)) <= 12 then  
 song.tracks[track+1].visible_note_columns = song.selected_note_column_index + (count-1)  
 song.selected_note_column_index = song.selected_note_column_index + (count-1)  
 end  
  
 end  
 end  
  
  

I have attempted to add a little delay to allow it to wait until the notes are processed by the OSC server, but if you link more than two instruments, the reliability only goes further down.
There is not much reliability having two instruments posted behind eachother in the first place with this script.
If there will ever be made an attempt to natively support this for Xrni 2 features… that will probably cause a few headaches here and there.

Is it possible, for a future update, you can define the track where each instrument gets played? So you can have the first instrument playing in track 1 and the second in track 2.

That was next on my experimental implementation list.
Yes it is possible, but have not tested the outcome yet.
Either way, the selected track in this mode will then be the offset track rather than the only target track.

Inserted now. (first post file updated again)
Instruments are not linkable to specific tracks, so if you link 3 or 4 instruments, you have to take care you have 3 or 4 empty tracks next to eachother (or simply shift them around).