View Issue Details
|ID||Project||Category||View Status||Date Submitted||Last Update|
|0004261||ardour||bugs||public||2011-08-12 12:42||2012-06-26 01:15|
|Platform||Intel Core2 Duo||OS||Gentoo amd64 + Pro-Audio overlay||OS Version||stable|
|Summary||0004261: Binding elements with msg and uri attributes are ignored in MIDI maps|
|Description||an Ardour MIDI map XML Binding element that uses msg and uri attributes to match a MIDI message (e.g. <Binding msg="b0 50 7f" uri="/route/solo B1"/>) does not work, while using the ctl and uri attributes for the same MIDI message (<Binding channel="1" ctl="80" uri="/route/solo B1"/>) does work. it seems as if Binding elements with the msg attribute are not processed correctly when using a uri.|
|Steps To Reproduce||create MIDI map with a Binding that uses the msg and uri attributes together:|
<Binding msg="b0 50 7f" uri="/route/solo B1"/>
|Additional Information||spoke with las about this on IRC:|
- las, 08:08 -
in0giro: its a straightforward bug, i suspect
|Tags||No tags attached.|
ok, i finally figured out what's wrong with this idea.
you're assuming that the URI references some kind of toggleable on/off switch (solo is a perfect example). but the URI field is actually describing a parameter, not a switch. the idea is that the value of the incoming controller message will set the value of the parameter in some way.
this means that if you use this format:
Binding channel="1" ctl="80" uri="/route/solo B1"
every time a message for controller 80 arrives on channel 1, we will take the controller value and use it to set the current solo status of whatever route "B1" refers to. since solo is an on/off parameter, values >= 64 will turn it on, and values below that will turn it off.
but now consider your alternative:
Binding msg="b0 50 7f" uri="/route/solo B1"
what does tell ardour to do when a MIDI message matching "b0 50 7f" arrives? it doesn't tell it to do anything at all. the idea of the msg="" format was to create bindings to specific functions that don't require value parameters. Route parameters (solo/gain/mute/rec-enable) all require value parameters, so you can't create a binding.
I think what you are imagining is that somehow the syntax above would "enable solo on track "B1"" ... the problem with this is that there would be no possible syntax to turn it off.
That's why the correct syntax would be something like:
Binding msg="b0 50 7f" function="toggle-route-solo" arg="B1"
Binding msg="b0 50 7f" uri="/route/solo B1" value="0"
I'll think about both of these.
OK, i see what you mean about URIs being parameters vs. function. however, regarding your point about there being no way to turn off soloing with my syntax: i am assuming that there would be a toggle function/Action available, as requested in http://tracker.ardour.org/view.php?id=4262. thus, the binding for this msg would in essence be calling a function that takes no parameters, for example toggleSolo(), which makes sense since as you say msg's pass no parameters. so this could be resolved just by having the necessary Actions for solo/mute state on a route available for the MIDI map.
or obviously your additional functions with arguments would work as well. let me know how it is implemented and thanks.
as we approach beta2 and beyond, i would like to submit my PCR MIDI map for inclusion. with the actions added in http://tracker.ardour.org/view.php?id=4262 i think the map is usable.
however, it could be made more useful with the possible "parameters" to bindings idea you discuss/imply above. will this be implemented for 3.0 or later or never? not a big deal, just wondering if i should wait for this feature or submit the mapping as is.
|2011-08-12 12:42||in0giro||New Issue|
|2011-08-12 15:29||paul||Note Added: 0011311|
|2011-08-12 16:01||cth103||cost||=> 0.00|
|2011-08-12 16:01||cth103||Target Version||=> 3.0-beta1|
|2011-08-12 21:46||in0giro||Note Added: 0011320|
|2011-11-15 15:13||cth103||Target Version||3.0-beta1 => 3.0|
|2011-11-21 03:43||in0giro||Note Added: 0012152|
|2012-06-26 01:15||cth103||Status||new => confirmed|