New Tool (2.8): Midi Management Console


Some tool i have been working on for a while.
It is the sequel to the instrument chainer, though this time it simply changes the native controls for you to make the chains.
Features:
-Solo and chain instruments, checkboxes are midimappable.
-When solo is turned on, solo option follows if selecting instruments in the native Renoise list. (also after the tool has been hidden)
-Rename instruments (click on the name in the tool-list to get an input field)
-Show 5 to 50 instruments
-Scrolling list using keyboard buttons (sorry, no scroll-wheel option here)
-Basic Midi in and midi out properties in one view (toggable), quickly programmable as well.
-Synchronized changes between Renoise and tool (Renoise OSC Device currently doesnā€™t work yet)
-Change recorded note content on one track and propagate the track to the other chained tracks (Multitrack edit mode, I guess a lot of folks that want to layer instruments would be glad to have this one)

Feature lists in the instrument list context menu.
You can assign a keyboard activation shortcut to it in the Global -> tools -> Midi Management Console

Notes of awareness:
Because the midi instrument is changed dynamically, it can sometimes take a while before you get a response. If you get any visual erratic behavior or instruments not being toggled of settings properly, you can use the reset buttons below the columns to reset different instrument settings for all instruments. I have not been successful to track down why certain triggers donā€™t really respond other than that i think it is due to the switching of the midi device. In that case i canā€™t think of any solution here.

Edit:Propagate button changed to the desired multi-track edit mode. It also has a shortcut key to toggle it (Global->Tools->Midi_management_console_multitrack_edit_toggle). It works, but before you do stuff like clearing a pattern or copying a pattern, toggle it off :)
Edit 2: Pattern change processing is now optimized, huge changes including huge undo actions are ignored.

Edit 3:The following options are automatically saved and loaded: Solo/Chain device and channel, midi-in and midi-out panel states, visible instruments.

Edit 4:Fixed problems with track assignments (false track visualisation, app crashes on browsing)

Getting the visuals and settings cross-synced was the worst part of the job. If you get a tool-crash, please be so nice to write steps of reproduction. If it is regarding devices, supply what position the device had in the list.

Have fun (or irritation if stuff doesnā€™t work)

Download from the tool page:
http://www.renoise.com/tools/midi-management-console

will try at once! looks very handy, thanks

Nice, this should be an interesting tool to play around with :slight_smile:

You are aware of pattern:has_line_notifier(), pattern:add_line_notifier(), right?
Iā€™ve used those to monitor patterns/tracks in real-time on some occasions. Special care should be taken to avoid calling a processing method directly, as a simple action like deleting a patternā€™s content will invoke these notifiers hundreds of times (one for each track-line being cleared).

Thanks for reminding me about that, i totally forgot about thoseā€¦ (were only filtering the API txt for ā€œobservableā€ instead of ā€œnotifierā€)
There are definately some security barriers needed. Like if record mode is on or if the pattern is currently playing etc.

Attempt made. Functions involved:
pattern_line_notifier()
idle_handler()
duplicate_track_actions()

Updated the first post with a new version.

I buffer changes into a queue and the queue is emptied every idle moment through the idle_handler. I remove the notifiers to both pattern_line_notifier and idle_handler when applying changes to the tracks, so the smaller changes donā€™t clog up the behavior.
Yet it is still very intensive when you would clean a whole pattern using ctrl-F3.
Something like a pos.action in which it defines the type of action done could also help me out preventing stuff from being done unnecessarily:
pos.action.pattern_delete, pos.action.track_delete, pos.action.cell_delete, pos.action.undo, pos.action.paste_pattern, pos.action.paste_track, pos.action.paste_selection

But all in all it works quite nicely, even actions with selections work fine this way.
Iā€™m going to try to optimize this a little further.

Updated first post again, the optimization was very simple.
updated routine has been done in the idle_handler and checks if more tracks exist in the queue. If so, we know we deal with a mass amount of changes outside one specific track so in that case the changes are ignored.

Last update (see first post for attachment):
Some preferences are now automatically saved and loaded.
Fixed a bug where removing or inserting tracks did not updated the track lists (and could cause an out of bounds error).

I think iā€™ve done enough for this weekend again, time for that beer that i wanted so badly last friday night.

Woah, some pretty nice additions. Iā€™ll especially be looking forward to trying out the propagate feature :slight_smile:

+1

First redownload the tool.
I had to fix something on the propagate area that seemd flawlessly working.
Sometimes i did minor additions to areas that i thought were unrelated incompletely, but somehow i managed to mess up the irrelevant area procedure in major way.

I have an improved Xrnx, but cannot attach it anylonger due to the website change.
No new additions, but the following bugfix:
Fixed bug where track assignment went wrong (and could also cause app errors when scrolling up/down the instrument list, either in the tool or the instrument list)

New update attached to the first post.

App crash errors still can happen yet my current problem in most of these situations is: replication seems impossible after reloading the tool.
So if you get a crash and you can replicate after reloading, explain the steps. Reporting the error and lines involved is ofcourse always welcome, i can then at least attach debug info to it.

vV thanks for this great tool, is it possible to trigger two VSTs at once from the PC keyboard using it, to ā€˜layerā€™ them?

If you load VST A in instrument 00 and VST B in instrument 01, check the chain boxes on instrument 00 and 01 and set the track for each instrument where you want the instrument to route through and record in. (donā€™t forget to choose the midi device in the upper device dropdown which you want to use to control the instruments). If you keep all instrument routings to ā€œcurrent trackā€, the instruments will still be layered and recorded, but the multi-edit option doesnā€™t work and each track is limited to 12 notecolumns which get filled up quite quickly if you layer multiple instruments together and hitting chords on your midi device.

Hi vV, Iā€™ve tried that, but it doesnā€™t seem to work, this is how Iā€™ve set it up:

Is that correct?

Try setting instrument 01 to ā€œtrack 02ā€ and check that the midi channel you set to 1 is also set on the midi device, usually you can leave this to ā€œanyā€ unless your device supports broadcasting extra control switches on a different channel which you donā€™t want to have broadcasted to your instruments.

If that still doesnā€™t work, then check on each instrument if the midi-in settings correspond to the values that you have set in the midi management console (the MMC is only relaying and retreiving the settings to and from this panel for each instrument):
http://tutorials.renā€¦ings#MIDI_Input

This is looking to be a very promising tool. I use Renoise live, and itā€™s looking like I might be able to essentially ā€œmuteā€ certain VSTs that are connected to the same MIDI device when I am not using them. On a given tune, I might have up to 5 or 6 VSTs mapped to the same controller and the only way to ā€œmuteā€ them is to automate the volume or a Gainer to go to 0. This works, but the VSTs are still processing in the background creating high CPU.

The ability to to left click the chain box on MMC and create a pattern command would make all my wildest dreams true!! :dribble:

i am not good at english, but its true that this tool is about midi chanels routng to diferent instruments or layring some instrumnets?
if so, could it apear one very simple future - keyboard zone (from key to key)? So you can even split keyboard with different instrumentsā€¦
it could be great for live performance

It supports both, if you donā€™t chain or solo any instrument, it will route your specific settings to each individual instrument, so if you set specific channels, you can split by channel.

It is possible with an OSC hack, but you will experience so many delay factors during recording that it isnā€™t worth the hassle now (perhaps if the lua angine is replaced by the LuaJIT and more direct processing functions come available through the API i might consider). This tool currently now only is setting the midi-in properties of the instruments using Renoise its own internal layering.

How can I setup VST layering? The explanation a few posts earlier shows that you have to have some MIDI devices to route through but my MIDI devices list is empty (I donā€™t have any external MIDI devices connected).

You need a midi input device. If you donā€™t have external hardware, you can use a virtual device instead.
Get this virtual midi keyboard:
http://sourceforge.nā€¦cts/vmpk/files/

Download this virtual midi cable software:
http://www.copperlanā€¦an-package-copy

After installing everything, restart Renoise so it can detect the virtual VMidi inputs.
In the Virtual midi piano keyboard, click edit - midi connections.
Select VMidi 1 or whichever you desire.
In Copperlan, connect VMidi 1 to VMidi 2 in the connector

Now you can also select the VMidi ports in the Midi Management console. Logically, select the VMidi port that you connected in the copperlan connector (in my example VMidi 2) for each instrument that you want to layer.
To use the computer keyboard as input for the virtual keyboard, simply focus on the virtual keyboard and press the keys as you usually would in Renoise.

A real device makes life a lot easier, but the above solution will do as well.