Jump to content

Feature Request: MIDI Learn on-the-fly


FantomXR
 Share

Recommended Posts

Hey all!

 

As I'm working as a live musician I know the instruments of NORD very well. What I like most is the learn-function. It works like this:

On top of the keyboard you have three buttons which are labeled with "Wheel", "A.Touch" and "CTRLPED". Let's say that the cutoff of the synth is at 50% and the volume is at 100%. What you want now is to change the cutoff to 100% and the volume to 80% (cause the sounds get's louder if you turn up the cutoff) by moving the modulation wheel. What you do is, press the button "Wheel" and while you keep it pressed you turn the volume down and the cutoff up. By releasing the button, the parameters are assigned and you are finished.

 

This function is very nice to have and gives the user the chance to change multiple parameters in one move. 

 

It seems not that easy to implement. But maybe you have a nice idea to do so :)

Anyway: We see us next year!

 

Thanks,

Chris

Link to comment
Share on other sites

Hi Chris,

 

a MIDI learn mode is implemented, did you already try it out?

It can be enabled from the SCS menu, or alternatively with a meta event assigned to a dedicated button.

See also http://www.ucapps.de/midibox_ng_manual_ngc.html, search for "MidiLearn"

 

It learns the CC (or optionally a NRPN) + the value range - as suggested.

It doesn't allow to learn multiple MIDI events for the same control element, instead the first assignment will be replaced by the learnt one.

 

If learning multiple events is mandatory, we've to think about the best strategy how to do this.

 

Best Regards, Thorsten.

Link to comment
Share on other sites

Hey TK,

 

at first: Happy new year!

I already read about the MIDI learn function, which is already implemented. But from the NGC-Manual it's not really clear to me, what it does exactly.

 

Let's break it down: We have one encoder, one wheel and one button. The button is for MIDI learn the wheel (same like on the nord I explained above). How would I now change the value of the encoder with the wheel in conjunction with NG?

 

//edit: okay. I read the SCS manual, which explains it in more detail. So... it seems to be what I'm looking for but I need to do some testing in the next days. 

Anyway: It would be absolutely awesome if it would be possible to do this for more than one events / control more values with one controller. Any chances to do so?

 

//edit2: I just thought again about the already integrated MIDI learn function. If I get it right I set MIDI learn to "on", send a CC to the midibox for example via MIOSStudio and then touch the controller to assign it. But in my suggested case it's different because the CC which should be learned is not send by a software, but from the controller itself. 

Edited by FantomXR
Link to comment
Share on other sites

During a long walk in the snow I got following idea - hope that it's matching with yours:

 

Let's assume all learnable MIDI messages are already defined as EVENTs and assigned to control elements.

Then they could be "remote controlled" from another EVENT within a specified range with a new meta command.

Since it's possible to assign multiple meta commands to a single EVENT, this would also allow to remote control multiple EVENTs from one.

 

If this mechanism would help, I could also provide a "MetaLearn" command which has to be assigned to a dedicated button.

Press the button to start learning, move all controllers which should be assigned to the "meta controller" within the desired range. Release the button -> done.

 

More concrete usage example (based on yours)

You've one EVENT which sends the CC for CutOff, another one which sends the CC for volume. Both are assigned to encoders.

Another EVENT assigned to the ModWheel.

 

Prepare the CutOff and Volume encoders for the start position which is sent when ModWheel is at 0%

Then press the MetaLearn button.

Move CutOff and Volume to the end position, the values are sent when ModWheel is at 100%

Release the MetaLearn button.

 

Now you could remote-control the CutOff and Volume encoder with the ModWheel within the range that you entered during MetaLearn.

 

Would this solve your request?

I find it useful  :smile:

 

Best Regards, Thorsten.

Link to comment
Share on other sites

Hey Thorsten,

 

you got it! Yes, this would absolutely solve it! 

 
How about saving? Let's say I have made a whole setup with several of those meta events (so we would need more than one button to assign more controllers than just the ModWheel). Now I want to save it and recall it later. Is this possible with snapshots (btw. naming the snapshots is not possible at all right?)?
Edited by FantomXR
Link to comment
Share on other sites

The assigned (learnt) events will be part of the EVENT_* definition of the ModWheel, hence they are not part of a snapshot.
Instead they are part of the configuration (.ngc)

So: in the SCS Disk menu you could store the configuration to a new .ngc file, and restore it later.
This also allows to give each configuration a name.

However, each .NGC file will result into a dedicated snapshot, .NGR and .NGL file - that's probably not what you want, but this is the way how the MBNG firmware architecture is constructed.


The "SendEvent" meta command is implemented now, it allows to send multiple events from a single controller.
-> http://www.ucapps.de/mios32/midibox_ng_v1_033_pre3.zip

Here a configuration example which I've used for testing:
http://svnmios.midibox.org/filedetails.php?repname=svn.mios32&path=%2Ftrunk%2Fapps%2Fcontrollers%2Fmidibox_ng_v1%2Fcfg%2Ftests%2Fmetalrn.ngc

Encoder #1 sends CCs of Encoder 3/4/5/6 in different ranges and directions
Encoder #2 sends CCs of Encoder 7/8/9/10 in different ranges and directions

LED rings and LCD messages are correctly updated -> seems to work! :-)

The learn function isn't implemented yet - this was only a proof of concept.

Best Regards, Thorsten.

Link to comment
Share on other sites

Hi TK,

 

I took a look into the code cause I have no parts for a test setup.

So, is there a reason, why you did define already meta-events to the encoders? 

 

If I get you explanations right in the ngc this should work:

 

Press button:2002 (start MIDI Learn)

Send CC#8 from MIOSStudio to NG

Move ENC:3

Press button:2002 again (stop MIDI Learn)

Set ENC:3 to 50%

 

Press button:2000

Move ENC:3 to 100%
Press button:2000 again (could this work in momentary-mode?)

 

If I now adjust the ENC:1 it should "simulate" ENC:3 but only in range 64:127. Is this correct? :smile:

Man... I really need to have a little setup here, where I can test those things faster....

Edited by FantomXR
Link to comment
Share on other sites

Hi,

 

 

So, is there a reason, why you did define already meta-events to the encoders? 

 

Because I wanted to test predefined SendEvent commands.

LearnEvent will also work without pre-definitions.

 

Yes, the described scenario is almost correct.

But the button is working in momentary mode.

Means: learning is active as long as the button is pushed, and will be finished once the button has been released.

 

Best Regards, Thorsten.

Link to comment
Share on other sites

  • 1 month later...

Wow! I just checked that! What a great feature! ;-)

 

Just one thing: To meta-learn a controller it's now necessary to send a value from the computer to the midibox (via mios-studio or a host). Is there a chance to have it independent working from a computer?
Let's say we want to control a hardware-synth. It's not common (as far as I know), that synths send controller data out but they receive them. So it would be great, if there would be an option to let the midibox listens to itself (without creating a midi-loop of course). This could be useful, if I have one potentiometer for resonance and another one for cutoff and I want to control both values at a time with another encoder f.e.

 

What do you think about it?

Edited by FantomXR
Link to comment
Share on other sites

would be an option to let the midibox listens to itself (without creating a midi-loop of course). This could be useful, if I have one potentiometer for resonance and another one for cutoff and I want to control both values at a time with another encoder f.e.

 

This is actually possible with the "LearnEvent" meta event (which is not officially released yet, and therefore not documented. But you can read the details in this posting)

 

Did you try "MidiLearn" (which is matching with your observations) or "LearnEvent" (which is matching with your request)

 

Best Regards, Thorsten.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

×
×
  • Create New...