View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0007181 | ardour | features | public | 2016-12-19 08:36 | 2020-04-19 20:18 |
Reporter | .onkel. | Assigned To | ovenwerks | ||
Priority | normal | Severity | minor | Reproducibility | N/A |
Status | closed | Resolution | fixed | ||
Product Version | 5.5 | ||||
Summary | 0007181: OSC unable to determine master strip ID | ||||
Description | While improvement of my Android app I ran in an issue regarding strip addressing. On startup I request the current strip list via /strip/list and weakly assign the remote ID of the master strip as max-strip-id + 1. So in case of hidden strips, this calculation leads in a faulty value. Even if most master controls are accessible via /master/xxxx messages, plugins and sends are not available. Some deeper investigation didn't result in a robust way to determine the correct ID. If you have an idea on how to work around this behavior, please let me know. My suggestion would be to add the master strip information to the end of "/strip/list" result (see attached patch file). | ||||
Tags | No tags attached. | ||||
Users sponsoring this issue | ||
Sponsors List |
Total Sponsorship = US$ 5 2017-01-12 07:06: .onkel. (US$ 5) |
---|
|
master_strip.patch (903 bytes)
--- 5.5.214/ardour/libs/surfaces/osc/osc.cc 2016-12-19 09:05:10.635417393 +0100 +++ 5.5/ardour/libs/surfaces/osc/osc.cc 2016-12-19 09:27:58.299191682 +0100 @@ -1206,6 +1206,20 @@ } } + // send master strip + boost::shared_ptr<Route> master = boost::dynamic_pointer_cast<Route>(session->master_out()); + if (master) { + lo_message mreply = lo_message_new (); + lo_message_add_string (mreply, "M"); + lo_message_add_string (mreply, master->name().c_str()); + lo_message_add_int32 (mreply, master->n_inputs().n_audio()); + lo_message_add_int32 (mreply, master->n_outputs().n_audio()); + lo_message_add_int32 (mreply, master->muted()); + lo_message_add_int32 (mreply, 0); // soloed + lo_message_add_int32 (mreply, get_sid (master, get_address (msg))); + lo_send_message (get_address (msg), "#reply", mreply); + } + // Send end of listing message lo_message reply = lo_message_new (); |
|
"On startup I request the current strip list via /strip/list and weakly assign the remote ID of the master strip as max-strip-id + 1. So in case of hidden strips, this calculation leads in a faulty value." Should not be true if the strip_types is set right. If strip types is set to allow master but not hidden, master should always be the last strip. (unless monitor is in use). If I set strip_types to 191 and then do a /strip/list, with the current session I get: #reply ssiiiiii "AT" "Audio 1" 1 2 0 0 1 0 #reply ssiiiiii "AT" "Audio 2" 1 2 0 0 2 1 #reply ssiiiiii "AT" "Audio 3" 1 2 0 0 3 0 #reply ssiiiii "B" "Bus 1" 1 2 0 0 4 #reply ssiiiii "B" "Bus 2" 1 2 0 0 5 #reply ssiiiii "B" "Bus 3" 1 2 0 0 6 #reply ssiiiii "B" "Bus 4" 1 2 0 0 7 #reply ssiiiii "B" "Bus 5" 1 2 0 0 8 #reply ssiiiii "B" "Bus 6" 1 2 0 0 9 #reply ssiiiii "B" "Bus 7" 1 2 0 0 10 #reply ssiiiii "B" "Bus 8" 1 2 0 0 11 #reply siiiii "Master" 2 2 0 0 12 #reply shhi "end_route_list" 48000 32968063 1 Hmm, that is not quite right, I think Master should include the "B" for bus as well. Anyway, does this work for you? |
|
Using either the GUI to set strip types to include master or the /set_surface/strip_types OSC command to 191 to include master (or 255 to include monitor as well) should solve you problem. I have added MA and MO as strip types for master and monitor so when I send /strip/types I get: #reply ssiiiiii "AT" "Audio 1" 1 2 0 0 1 0 #reply ssiiiiii "AT" "Audio 2" 1 2 0 0 2 1 #reply ssiiiiii "AT" "Audio 3" 1 2 0 0 3 0 #reply ssiiiii "B" "Bus 1" 1 2 0 0 4 #reply ssiiiii "B" "Bus 2" 1 2 0 0 5 #reply ssiiiii "B" "Bus 3" 1 2 0 0 6 #reply ssiiiii "B" "Bus 4" 1 2 0 0 7 #reply ssiiiii "B" "Bus 5" 1 2 0 0 8 #reply ssiiiii "B" "Bus 6" 1 2 0 0 9 #reply ssiiiii "B" "Bus 7" 1 2 0 0 10 #reply ssiiiii "B" "Bus 8" 1 2 0 0 11 #reply ssiiiii "MA" "Master" 2 2 0 0 12 #reply ssiiiii "MO" "Monitor" 2 2 0 0 13 #reply shhi "end_route_list" 48000 32968063 1 Please note that while the selected strip is included in the above set of strips, hidden strips are not. However, they can be included if the strip types bitset includes the bit for hidden (add 512 to your strip types value) is set. The ssid numbers are recalculated any time the strip types value is changed or a strip is added, moved or removed... Ardour will send a strip/list to the surface in such cases as an indication the surface should send it's own /strip/list and reset it's own list of strips. |
|
Issue has been closed automatically, by Trigger Close Plugin. Feel free to re-open with additional information if you think the issue is not resolved. |
Date Modified | Username | Field | Change |
---|---|---|---|
2016-12-19 08:36 | .onkel. | New Issue | |
2016-12-19 08:36 | .onkel. | File Added: master_strip.patch | |
2017-01-12 07:06 | .onkel. | Sponsorship Added | .onkel.: US$ 5 |
2017-01-12 07:06 | .onkel. | Sponsorship Total | 0 => 5 |
2017-07-01 17:57 | ovenwerks | Note Added: 0019853 | |
2017-07-01 17:57 | ovenwerks | Status | new => feedback |
2017-07-01 18:35 | ovenwerks | Note Added: 0019855 | |
2017-07-01 18:35 | ovenwerks | Status | feedback => resolved |
2017-07-01 18:35 | ovenwerks | Resolution | open => fixed |
2017-07-01 18:35 | ovenwerks | Assigned To | => ovenwerks |
2020-04-19 20:18 | system | Note Added: 0023697 | |
2020-04-19 20:18 | system | Status | resolved => closed |