Notifications
Clear all

How to use MIDI On/Off for a layer

37 Posts
10 Users
9 Likes
1,774 Views
(@ssquared)
Member
Joined: 4 years ago
Posts: 218
Topic starter  

Hi.  During today's Livestream, there was discussion on the MIDI control file.  I asked a question regarding being able to mute multiple layers at once.  Here is my situation.  As I play, I want to bring different sounds in and out at various parts of a song.  I will create multiple patches that are all somewhat the same, but vary in a few ways.  Maybe one brings in a bass synth to add some low punch.  Another adds some arps I want layered with the rest of what I'm playing.

This works, but requires nearly the same patch loaded multiple times, sometimes loading multiple samples of the same thing.  And takes longer to load my project (I use Ableton Live).  Two pieces are very important in this which I get with the MIDI On/Off feature:

  • When I want to play the sound, I don't want it to already be in the middle of playing a note (what you get with mute).
  • Similarly, when I no longer want to play the sound, I do not want it to suddenly stop.  I want to hear reverb fades and delays continuing.

The MIDI control file seems like the answer.  But I was wondering if there is a way I can have a single button on my controller turn on/off several layers at once.  A single button when playing live is quicker than having to hit multiple at once.

@getdunne You had mentioned using the macro knobs to do this.  Can you explain how I can use the macros for this?  I have tried some things, but I can't figure it out.  After you mentioned it can be done, I set up a layer with Unify in it and I tried setting the macro knob to CC 122 (MIDI local control on/off) and that didn't work.  I can't find anywhere in the macro options to control layer on/off.  I think I've done some tests a while ago, though, to see if I can use CC button values 0 and 127 to make a knob go immediately to off or on.

Ableton Live 10, Omnisphere, Native Instruments (Pianos), Spire, Hammer + Waves, Heavyocity (Ascend and Mosaic Keys), Diva, SynthMaster, Alchemy 1.55, Addictive Keys, Unify


   
Quote
(@getdunne)
Illustrious Member Admin
Joined: 4 years ago
Posts: 4367
 

@ssquared

Thanks for explaining in such detail. There are 3 answers to the points you raise:

  1. First, note that the MIDI layer on/off feature is new in Unify v1.4, so you won't be able to use it with any earlier version.
  2. To have a whole group of layers activate/deactivate together, put them into an embedded Unify instance, then [de]activate the whole Unify layer.
  3. MIDI CC#122 isn't supported in Unify. The new "midiEnable" function coming in Unify v1.4 can be added to a macro by adding some other parameter, then replacing the link text with e.g. "unify/midiEnable/3" (assuming it's layer INST3 you want to control). The layer will become active (and will receive MIDI) when the parameter value is non-zero, and inactive (not receiving MIDI, but still connected to the output mix) when the value is zero.

Approach #3 will allow you to control multiple layers at once using a macro knob, but I suggest the embedded-Unify approach (#2) will be much easier to set up and manage.


   
SSquared reacted
ReplyQuote
(@ssquared)
Member
Joined: 4 years ago
Posts: 218
Topic starter  

@getdunne. Thank you so much for explaining.  This is great.  I'll have to look into this.

Ableton Live 10, Omnisphere, Native Instruments (Pianos), Spire, Hammer + Waves, Heavyocity (Ascend and Mosaic Keys), Diva, SynthMaster, Alchemy 1.55, Addictive Keys, Unify


   
ReplyQuote
(@craigr68)
Member
Joined: 3 years ago
Posts: 204
 
Posted by: @getdunne

2. To have a whole group of layers activate/deactivate together, put them into an embedded Unify instance, then [de]activate the whole Unify layer.

Could you please remind me how you activate/deactivate a layer?  Is that thru Linked Parameters?

In my projects, I've occasionally automated layer volumes from my DAW using the macro button automation.  If I want to stop hearing a particular layer or layers, I automate the volume to 0 and automate it up when I want to hear it.  What would be the advantages of the new MIDI layer on/off feature or using activate/deactivate layer?  Assuming those are both done thru midi rather than audio, but what is better about those methods?  From my DAW, wouldn't I still have to automate sending Unify midi cc values - so how is that better?

This post was modified 3 years ago 2 times by craigr68

   
ReplyQuote
(@getdunne)
Illustrious Member Admin
Joined: 4 years ago
Posts: 4367
 

Could you please remind me how you activate/deactivate a layer?

That's a new feature coming in Unify v1.4. The linked parameter path is unify/midiEnable/<layer number>. MIDI input to the layer will be suppressed if the parameter value is zero, allowed otherwise.

What would be the advantages of the new MIDI layer on/off feature or using activate/deactivate layer? 

If you deactivate a layer, any notes, delay/reverb tails, etc. continue sounding, so the sound dies away naturally. If you just turn the layer mix-level down, or mute it, the sound will cut off immediately.


   
mj_prod reacted
ReplyQuote
(@craigr68)
Member
Joined: 3 years ago
Posts: 204
 

That'll be a nice feature.  Looking forward to it.  Does it also generate note offs and sustain pedal off to eliminate stuck notes when deactivated?


   
ReplyQuote
 zimp
(@zimp)
Eminent Member
Joined: 3 years ago
Posts: 22
 

In a program I made many years ago I did the following, it was a 2-step gate so to say:

scenario 1
whenever a layer was deactivated only note-offs were passed, and when all keys were released the gate was fully closed, so no note-offs either were passed.

scenario 2
even when a layer was deactivated, as long as one key was held OR the sustain pedal was pressed, it was still possible to play and create new note-on messages. Only when all keys AND the sustain pedal were released the gate was fully closed and no new notes were possible.


   
SSquared reacted
ReplyQuote
(@getdunne)
Illustrious Member Admin
Joined: 4 years ago
Posts: 4367
 
Posted by: @craigr68

That'll be a nice feature.  Looking forward to it.  Does it also generate note offs and sustain pedal off to eliminate stuck notes when deactivated?

Of course.


   
ReplyQuote
(@getdunne)
Illustrious Member Admin
Joined: 4 years ago
Posts: 4367
 
Posted by: @zimp

In a program I made many years ago I did the following, it was a 2-step gate so to say:

scenario 1
whenever a layer was deactivated only note-offs were passed, and when all keys were released the gate was fully closed, so no note-offs either were passed.

scenario 2
even when a layer was deactivated, as long as one key was held OR the sustain pedal was pressed, it was still possible to play and create new note-on messages. Only when all keys AND the sustain pedal were released the gate was fully closed and no new notes were possible.

VERY interesting idea; thank you. Are you still programming?


   
ReplyQuote
 zimp
(@zimp)
Eminent Member
Joined: 3 years ago
Posts: 22
 

@getdunne Yes I'm trying to work out something for you, running sequences, chordrecognition that kind of stuff 😉 


   
getdunne reacted
ReplyQuote
(@getdunne)
Illustrious Member Admin
Joined: 4 years ago
Posts: 4367
 

@zimp Haha, sorry, I didn't recognize you -- different username!

For the benefit of others confused by this: @zimp and I are also exchanging emails on a related subject.


   
mj_prod reacted
ReplyQuote
(@ssquared)
Member
Joined: 4 years ago
Posts: 218
Topic starter  

Thank you for the great discussion and input.

@zimp has put forward a really great idea.  It reminded me of a song we did several years ago.  We transitioned from a big bridge leading into a quiet chorus with just piano.  I had a lingering arp sound that I had to keep playing for another measure, and then I let off for another measure of fade out.  I ended up having to use two keyboards to accomplish this.  I try to avoid having two keyboards, though.  Yes, it can make things actually easier, but I have had it with packing/unpacking and setting it all up.  On the other hand, it often requires some very creative thinking to get everything working on a single 61 key keyboard.

Ableton Live 10, Omnisphere, Native Instruments (Pianos), Spire, Hammer + Waves, Heavyocity (Ascend and Mosaic Keys), Diva, SynthMaster, Alchemy 1.55, Addictive Keys, Unify


   
ReplyQuote
(@starbuckna)
Active Member
Joined: 4 years ago
Posts: 8
 

I use a different midi controller (SL Mixface) than Nanocontrol.  What Midi command or CC do I assign to a button to turn a specific layer on or off. John demos this in 1.4 video but I can't fin a reference to what is assigned to the buttons. I would like to program 8 buttons on my controller to each turn a layer on or off. When I switch to a new patch in the browser  I'd like to have the buttons work as well


   
ReplyQuote
(@getdunne)
Illustrious Member Admin
Joined: 4 years ago
Posts: 4367
 
Posted by: @starbuckna

What Midi command or CC do I assign to a button to turn a specific layer on or off?

Unify works the other way. You specify which CCs your controller generates, and what you want them to control.

The main method is to assign CC numbers and functions to Unify's macro controls. The CC assignments remain, but the functions change when changing patches.

For the Unify stand-alone app, there is a nascent mechanism of MIDI Controller Files which allows setting up CC and function assignments which do not change from you change patches.


   
ReplyQuote
(@starbuckna)
Active Member
Joined: 4 years ago
Posts: 8
 

Got it! Your Komplete Kontrol example didn't contain button settings, but I added #buttons line and the controller numbers from nano control examples and it works on my KK S88 controller. thanks!

Followup question - is there a way to turn layers on and off in the Unify gui with mouse or keystroke?


   
ReplyQuote
(@getdunne)
Illustrious Member Admin
Joined: 4 years ago
Posts: 4367
 
Posted by: @starbuckna

is there a way to turn layers on and off in the Unify gui with mouse or keystroke?

At the moment, no -- these features are very new, still experimental, and very raw. I guess I should add a button for this!


   
ReplyQuote
(@starbuckna)
Active Member
Joined: 4 years ago
Posts: 8
 

@getdunne - that would be good, but what be great will be when the midi layer controllers worked in the plug in version of unify


   
ReplyQuote
(@getdunne)
Illustrious Member Admin
Joined: 4 years ago
Posts: 4367
 

@starbuckna

Unify actually has three distinct MIDI control mechanisms:

  1. The option to respond to MIDI CC#7 (master volume) and CC#11 (expression) is built-in, and works in both DAW and stand-alone.
  2. Arbitrary CC numbers can be assigned to Unify's macro knobs; this also works in DAW and stand-alone.
  3. MIDI Controller Files, a new and still-experimental feature introduced in Unify v1.4.x, allow MIDI messages to be interpreted in specific ways, according to which MIDI interface they are received on. This only works in Unify stand-alone, and can only ever work that way, because in a DAW, Unify does not know the source of MIDI messages; the plug-in standards (VST, VST3, AU) have no mechanism to express this.

In Unify v1.4.x, the only way for MIDI CC messages to enable/disable layers is by adding parameter links such as unify/midiEnable/<layer#> to macro controls. It's not very nice, but it works.

Now that user feedback has clearly indicated that this is something a lot of people want to do, both stand-alone and in a DAW, we're planning further changes to make this work much better.


   
ReplyQuote
comparco
(@comparco)
Active Member
Joined: 3 years ago
Posts: 7
 

Is it worth picking up a nanoKONTROL2 when I have a Oxygen61 with many controllers on it?

I am not a MIDI expert, or even a novice.


   
ReplyQuote
(@papopap)
Estimable Member
Joined: 3 years ago
Posts: 50
 

@starbuckna

hi, here's my setup file for the SL Mixface 

I did it this week and it works great.
on my SL I first made a specific setup
then reprogrammed all the keys to send the corresponding CCs (in the file) and it works great !.
including the activation/desactivation of the layers programmed on the mute track buttons.

see attached.

 

 


   
ReplyQuote
(@starbuckna)
Active Member
Joined: 4 years ago
Posts: 8
 
Posted by: @papopap

@starbuckna

hi, here's my setup file for the SL Mixface 

I did it this week and it works great.
on my SL I first made a specific setup
then reprogrammed all the keys to send the corresponding CCs (in the file) and it works great !.
including the activation/desactivation of the layers programmed on the mute track buttons.

see attached.

 

 

Thanks so much @papopap - works perfectly.  My only changes were to not use 64 (sustain) and 65 (which my keyboard uses for sustain.


   
ReplyQuote
(@raydricker)
Active Member
Joined: 3 years ago
Posts: 7
 

@getdunne I just got the NanoKontrol2 and your instructions worked like a charm...thanks!!

 

Raymond


   
getdunne reacted
ReplyQuote
(@craigr68)
Member
Joined: 3 years ago
Posts: 204
 
Posted by: @getdunne

This only works in Unify stand-alone, and can only ever work that way, because in a DAW, Unify does not know the source of MIDI messages; the plug-in standards (VST, VST3, AU) have no mechanism to express this.

For a DAW instance, couldn't you force Unify to respond to a fixed midi device in Unify settings?  For instance force Unify to respond to nanoKontrol2 midi cc's by associating it with the file MIDI Controller Files\nanoKontrol_mix_and_enable.txt.  I'm a little confused why this won't work but Program Changes do work for a DAW instance.   


   
ReplyQuote
(@getdunne)
Illustrious Member Admin
Joined: 4 years ago
Posts: 4367
 

@craigr

The idea of MIDI Controller Files is that each file is specific to one controller, and that information is lost in a DAW.

The traditional way to tell MIDI controllers apart--which DOES work in a DAW--is to set each one to transmit on a distinct MIDI channel. That's why the MIDI standard supports channels. I will give some thought to providing better support for this in Unify.

Program Change works in a DAW because bank- and program-change messages are standard MIDI messages, which the DAW passes on to plug-ins just like other kinds of messages. I suggest you read up on MIDI messages; there's not that much to it.


   
ReplyQuote
(@craigr68)
Member
Joined: 3 years ago
Posts: 204
 

@getdunne

But aren't cc messages also transmitted with distinct MIDI channel info?  I wrote a script that sends cc info thru a virtual Midi port that works with the Unify standalone.  I'm pretty sure Cakewalk will send that info to a DAW Unify instance.  I still don't get why Unify couldn't be set to respond to that.


   
ReplyQuote
(@getdunne)
Illustrious Member Admin
Joined: 4 years ago
Posts: 4367
 
Posted by: @craigr68

But aren't cc messages also transmitted with distinct MIDI channel info?  ...  I still don't get why Unify couldn't be set to respond to that.

In Unify v1.4 and all previous versions, setting a CC assignment on a macro knob only assigns the CC number, not the channel number. This is clearly a limitation, which I will seek to address in a future update.


   
ReplyQuote
(@craigr68)
Member
Joined: 3 years ago
Posts: 204
 

Instead of, or in addition to, the current capability of doing this with Macro knobs.  How about on each layer, clicking on the concentric circle to the right, have an option for that layers midiEnable (and the other parameter paths) to be controlled by a cc?  Have it be either manually assignable or Midi Learn.  Seems like that would be more intuitive than the current indirect macro association.  Maybe there could be matching new automation parameters as well.


   
ReplyQuote
(@getdunne)
Illustrious Member Admin
Joined: 4 years ago
Posts: 4367
 

@craigr68

I'm thinking along similar lines.


   
ReplyQuote
Mark MacWhirter
(@lifeisphun)
PhunGuy
Joined: 3 years ago
Posts: 8
 
Posted by: @getdunne

@starbuckna

Unify actually has three distinct MIDI control mechanisms:

  1. The option to respond to MIDI CC#7 (master volume) and CC#11 (expression) is built-in, and works in both DAW and stand-alone.
  2. Arbitrary CC numbers can be assigned to Unify's macro knobs; this also works in DAW and stand-alone.
  3. MIDI Controller Files, a new and still-experimental feature introduced in Unify v1.4.x, allow MIDI messages to be interpreted in specific ways, according to which MIDI interface they are received on. This only works in Unify stand-alone, and can only ever work that way, because in a DAW, Unify does not know the source of MIDI messages; the plug-in standards (VST, VST3, AU) have no mechanism to express this.

In Unify v1.4.x, the only way for MIDI CC messages to enable/disable layers is by adding parameter links such as unify/midiEnable/<layer#> to macro controls. It's not very nice, but it works.

Now that user feedback has clearly indicated that this is something a lot of people want to do, both stand-alone and in a DAW, we're planning further changes to make this work much better.

3. Above..."only stand-alone, and can only ever work that way..."

+1  This an AWESOME feature for live performing, and would be great if there was a way to do this in DAW mode as well!  Using examples like STACK - 8 Layers ALIVE and jamming is great, but if you want to "record a jam" in your DAW the same features would be needed for dynamic switching between layers.

Mark


   
ReplyQuote
(@getdunne)
Illustrious Member Admin
Joined: 4 years ago
Posts: 4367
 

@lifeisphun

I hear you!

The code for switching layers on and off is still pretty embryonic, but we decided to make it available in Unify v1.4 anyway, to see if people would be interested, and it's clear that people are VERY interested. Furthermore, others agree with you that the ability to do this in a DAW is important.

This can be done now, in a clumsy way: add a junk parameter link to a macro knob, then double-click the link text and edit it to something like unify/midiEnable/2 (where "2" refers to INST2). The layer will then be enabled when the macro value is anything but zero.

This might be OK for experimentation, but it's four different kinds of clumsy:

  1. Having to manually edit the link text, and having to "just know" the required format.
  2. The link path unify/midiEnable/<layer#> is inconsistent with other paths, e.g. inst/2/midiEnable would make more sense.
  3. A knob is not even a good control to use for such an on/off parameter.
  4. Having the layer disable only when the parameter value is exactly zero is harder to use than, e.g. having a threshold of 0.5.

I'm starting to think about alternative approaches, and I hope to have some improvements in Unify 1.5.


   
ReplyQuote
Mark MacWhirter
(@lifeisphun)
PhunGuy
Joined: 3 years ago
Posts: 8
 

@getdunne

Thanx Shane!  I’ll dig in and try this out with a bunch of my midi controllers. I assume only the top-level Unify instance “eats” these messages, as a recursive Unify instance(s) embedded in an Inst Layer doesn’t respond to the midi controller actions?

Mark


   
ReplyQuote
(@getdunne)
Illustrious Member Admin
Joined: 4 years ago
Posts: 4367
 

@lifeisphun

Actually no, Unify does not "eat" (suppress) incoming CC messages which are linked to knobs.

Suppose you assign e.g. MIDI CC#14 to knob 1. When Unify receives CC#14 messages from an external controller, knob 1 will turn, and the CC#14 messages will get passed on to layers/plug-ins. If you turn knob 1 manually using the mouse, it actually generates the same CC#14 messages internally, so any plug-ins that are set to respond to CC#14 respond exactly as they would if you used the MIDI controller.

I'm not entirely happy with this behavior. In future I hope to add controls so you can switch internal CC generation on and off, and also have the option to set up (internally generated) CC messages as separate links. This would allow one knob to send multiple CC messages, with a separate response curve for each.

So much to do, so little time!


   
ReplyQuote
sonyroc
(@sonyroc)
Trusted Member
Joined: 4 years ago
Posts: 49
 
Posted by: @getdunne
Posted by: @craigr68

But aren't cc messages also transmitted with distinct MIDI channel info?  ...  I still don't get why Unify couldn't be set to respond to that.

In Unify v1.4 and all previous versions, setting a CC assignment on a macro knob only assigns the CC number, not the channel number. This is clearly a limitation, which I will seek to address in a future update.

Hello @Shane, can we hope for an X version, CC, Note and Channel assignment? I imagine that in programming, there will be work. In addition, will there not be a risk of seeing a slowdown in the functioning of Unify? On a previous thread (Behringer # post-7441), I raised the case of my APC 40 MkII controller; here is the picture showing the vertical sliders using different channels. Greetings.

This post was modified 3 years ago by sonyroc

   
ReplyQuote
(@getdunne)
Illustrious Member Admin
Joined: 4 years ago
Posts: 4367
 

@sonyroc

I've been experimenting with an MPE controller here, which sends out an absolute firehose of MIDI, and have already found some spots where I can optimize the Unify code.

I'm not sure what you mean by "X version", can you explain?


   
mj_prod reacted
ReplyQuote
sonyroc
(@sonyroc)
Trusted Member
Joined: 4 years ago
Posts: 49
 

It's great to have found leads for our sometimes too complex requests.

Sorry for "version X", I just wanted to say that I can wait for a next version near or far. Thank you for everything.


   
ReplyQuote
Mark MacWhirter
(@lifeisphun)
PhunGuy
Joined: 3 years ago
Posts: 8
 
Posted by: @getdunne

@lifeisphun

Actually no, Unify does not "eat" (suppress) incoming CC messages which are linked to knobs.

Suppose you assign e.g. MIDI CC#14 to knob 1. When Unify receives CC#14 messages from an external controller, knob 1 will turn, and the CC#14 messages will get passed on to layers/plug-ins. If you turn knob 1 manually using the mouse, it actually generates the same CC#14 messages internally, so any plug-ins that are set to respond to CC#14 respond exactly as they would if you used the MIDI controller.

I'm not entirely happy with this behavior. In future I hope to add controls so you can switch internal CC generation on and off, and also have the option to set up (internally generated) CC messages as separate links. This would allow one knob to send multiple CC messages, with a separate response curve for each.

So much to do, so little time!

@getDunne

Ooppsss...sorry, need to clarify.  What I meant was regarding the nanoKontrol (or other midi hardware controller) midi messages operating in the top-level instance of Unify, controlling for example Layer Enable/Disable, does not operate/pass-to the embedded Unify Layers (patches).

Example:  STACK - 8 Layers ALIVE Patch, double-click "INST 4: Unify : Key - Sunday Organ" to bring up the embedded patch in a "INST 4: KEY - Sunday Organ | Unify" window.  The nanoKontrol does not pass through to this window/layers is what I was trying to say earlier.

Might be cool to have a feature for nanoKontrol to pass midi messages to sub-layers if they are the current "window in focus" maybe?  Then context of the messages would be what you are looking at on-screen while you are playing.  Of course, state would have to be maintained of parent layers and when returning to a previous window...or the top-level Unify window to keep things in order.   ...complicated...but somewhat natural for the live jam.

Why?  I can imagine a Live experience where I keep multiple STACKS as layers within a top-level STACK, and enable/disable layers as I go.  The freedom of expression during a creative jam allows the artist to get out of "engineer" mode while having a simple interface to select a combination of sounds dynamically that have all been setup in advance.  Pure software recursion with state maintained in the same body of code.  Sorry if this seems blathering...but I used to create recursive UI objects that were self-state maintaining and my users loved the freedom.

Now, to quote you..."So much to do, so little time!"  I wish I were still coding these days to help out.  : - )

Mark


   
ReplyQuote
(@getdunne)
Illustrious Member Admin
Joined: 4 years ago
Posts: 4367
 

@lifeisphun

To suppress CC messages to an embedded Unify, you can put a MIDI Filter instance before it, but you can only filter out 6 CCs so you might need more than one.

Passing MIDI to the current focused window is an interesting idea, but I think what you're after would be better served by a different idea that came up here in the Forum: single-click any plug-in to change the bottom knobs area to a customized layout for that particular plug-in.


   
mj_prod reacted
ReplyQuote
Share: