midiassign.txt explained Part I

Official support for: u-he.com
Post Reply New Topic
RELATED
PRODUCTS

Post

Caution - Geek Factor! :shock:

As you all know, we've been improving the MIDI Learr thing under the hood, and it's all for the best. It just lacks a decent editor and representation on the user interface, which makes using it a bit tricky.

Now, with right-click and "MIDI Learn" you can just teach pretty much any knob to react to a MIDI Control Change. Like earlier days, this is global for the plug-in and saved in a text file, such as com.u-he.Diva.midiassign.txt

Unfortunately this is where most of the documentation stops, unless you read the manual and find the drop down on the edit display that lets you choose various assignment modes and what not. There's talk about pages, controller types and various ways of interpreting a controller. That's all mostly out of focus.

What people often ask is, how to use different MIDI Channels in order to assign more than 120+ controllers. And this is where I want to start here first:

#---

If you assign a few knobs in the very default setting and you close your host/DAW, any modern day u-he plug-in writes that com.u-he.xxx.midiassign.txt into the Support directory, or ~/Library/App Support/u-he folder. Opening it in Textpad or Textedit reveals lines like this:

1:21=VCF1:Freq, normal, 0, Continuous7bit, No //VCF1:Frequency

This means, Controller 21 on MIDI Channel 1 is assigned to the Cutoff Frequency Parameter of VCF1. The interpretation mode is "normal", so twisting the knob from left to right runs once through the range of the cutoff parameter. It sits on Page 0 (no page at all). It's a normal 7 bit continuous MIDI controller, and it doesn't respond to any page selection (quite logically, as it isn't related to any).

The scheme is as follows:

Channel:CC=Parameter, Mode, Page, Type, onPageOnly // remark

Channel is the MIDI Channel, 0 = All, 1-16 = channel 1-16

CC is the MIDI CC number

Parameters are specified by a module name and a parameter name separated by a colon, such as

VCF1:Cutoff (or similar, same as in .h2p preset files)

Mode is normal/integer/fine/octaves etc. as described in the manual (superficially, see recent betas)

Page is usually 0. Pages can so far only be be enabled in ACE and are used to reuse the same controllers for different parts of the synth. We'll do a lot of this in the future, but it takes a bit to explain it in depth.

Type refers to Continuous7bit, Encoder127 etc.

onPageOnly is usually set to No. If it's set to "Yes" then a parameter can only be controlled in conjunction with pages (onPageOnly doesn't do anything if Page is 0)

#---

Now, to change MIDI channels all you need to do is to go through that midiassign file and swap the first number on each line for the channel you want. Don't forget to do so with your DAW closed, otherwise our plugs may overwrite your changes once you do close any open instance.

I'll try to get more info out if need be, I hope this one is a bit of a starting point (also for myself, because that comfortable editor is long due)

- Urs

Post

Thanks for the writeup, Urs. Especially the clue about pages only working with ACE is useful, it had me confused a bit earlier. Will definitely give that a bit of testing. Can we also switch between pages using a MIDI CC#?

Post

Ch00rD wrote:Thanks for the writeup, Urs. Especially the clue about pages only working with ACE is useful, it had me confused a bit earlier. Will definitely give that a bit of testing. Can we also switch between pages using a MIDI CC#?
Yes. If onPageOnly is No and Page is 1 or higher, the a parameter will select that Page. We did a highly interactive controller for Diva that way, but I haven't ever finished the dedicated GUI theme with the corresponding page layout.

Pages need to be arranged in the GUI first (ACE has this) and then described in the midiassign text. There was a thread about this a few months ago.

Post

Urs wrote:
Ch00rD wrote:Thanks for the writeup, Urs. Especially the clue about pages only working with ACE is useful, it had me confused a bit earlier. Will definitely give that a bit of testing. Can we also switch between pages using a MIDI CC#?
Yes. If onPageOnly is No and Page is 1 or higher, the a parameter will select that Page. We did a highly interactive controller for Diva that way, but I haven't ever finished the dedicated GUI theme with the corresponding page layout.

Pages need to be arranged in the GUI first (ACE has this) and then described in the midiassign text. There was a thread about this a few months ago.
Ah, cool. :) Did you mean this post? (The "geeky stuff" reference seems to confirm. ;) )

Post

Ch00rD wrote:Did you mean this post? (The "geeky stuff" reference seems to confirm. ;) )
Yup, that one!

First TB is alive and kicking in the studio... gotta be strong to not lose focus on developments ;)

Post

Urs wrote:
Ch00rD wrote:Did you mean this post? (The "geeky stuff" reference seems to confirm. ;) )
Yup, that one!

First TB is alive and kicking in the studio... gotta be strong to not lose focus on developments ;)
Hehe, good luck fighting the amazing power of acid. :) I'm not betting on your strength, this one time. Enjoy the fight! ;)

Post

Another small question that is perhaps good to have answered here:

In the same folder as the file

Code: Select all

com.u-he.ACE.midiassign.txt
there's also a file named

Code: Select all

com.u-he.ACE.midimap.txt
which also has the comment:
// Global MidiCC Map
What is the conceptual relation between these files?

Post

Ch00rD wrote:What is the conceptual relation between these files?
midiassign.txt is actually used, and midimap.txt has been deprecated, at least for the latest few public betas.

Possibly useful if anyone's digging into this: I have all parameters listed, organized by page, most knobs with integer and fine mapping assignments in this file:
https://www.box.com/s/cot5ziixj7m972x641h0

When ACE actually loads this many //comments and blank lines are removed (why I didn't name it midiassign.txt :hihi:)

Disclaiming ... Could contain a few errors, functional though. CC#s are of course arbitrary and unlikely to match anyone's controller. I also changed the paging, it'll browse 4 chains of related modules than up/down/left/right, the same sequence of key-presses ends up at the same module every time. Bit lazy to post the original paging, default might already be in midiassign.txt

Post

xh3rv wrote:
Ch00rD wrote:What is the conceptual relation between these files?
midiassign.txt is actually used, and midimap.txt has been deprecated, at least for the latest few public betas.

Possibly useful if anyone's digging into this: I have all parameters listed, organized by page, most knobs with integer and fine mapping assignments in this file:
https://www.box.com/s/cot5ziixj7m972x641h0

When ACE actually loads this many //comments and blank lines are removed (why I didn't name it midiassign.txt :hihi:)

Disclaiming ... Could contain a few errors, functional though. CC#s are of course arbitrary and unlikely to match anyone's controller. I also changed the paging, it'll browse 4 chains of related modules than up/down/left/right, the same sequence of key-presses ends up at the same module every time. Bit lazy to post the original paging, default might already be in midiassign.txt
Thanks xh3rv, both for the answer and sharing your annotated mappings. :)

Changing the paging layout seems to make sense, as I don't like the idea of following the GUI layout for navigation much - it should work well without seeing any GUI at all. Will have to try various approaches and lay-outs a bit in practice to find out what works best for me, I guess.

Post

Hello.
I'm using Live 9 with OSX 10.7.5
I have opened and found the com.u-he.Zebra2.midiassign.txt file and have tried to change the first # (midi channel) of different params. Live seems to revert everything back to the same midi channel.

IE- I erased all info from midiassign.txt > closed text editor> opened LIVE to an INIT patch with 3 separate OSC > assigned OSC1 wavewarp to 1/26> closed LIVE> opened midiassign.txt> copy/paste OSC1 assignment, but changed to 2/26 for OSC2, 3/26 for OSC3>saved/closed text editor> open LIVE to same patch and cc26 on any of those channels only controls OSC1

Very confused. Any help or advice would be greatly appreciated.

Post

What is encoder64 and encoder128 as types? (as opposed to Continuous7bit) (NRPN?)

Continuous14bit, is this using CC n = MSB + CC n+32 = LSB ?

Thanks for your help

Post Reply

Return to “u-he”