View Issue Details

IDProjectCategoryView StatusLast Update
0002655ardourbugspublic2011-11-02 01:25
Reporterdhess Assigned Topaul  
PrioritynormalSeveritymajorReproducibilityalways
Status feedbackResolutionopen 
Product Version2.8 
Target Version2.8.12 
Summary0002655: Generic MIDI control - controllable not found in session
DescriptionA bunch of "controllables" can be bound to MIDI CC controllers and are working fine DURING the session but get ignored when RE-OPENING the project. Examples for ignored "controllables" during re-opening:
controllable name="recenable"
controllable name="Lo gain (dB)" (LADSPA plugin)
controllable name="Hi gain (dB)" (LADSPA plugin)

Actually I cannot manage to assign MIDI CC controllers to any LADSPA controller or re-enable button in a persistent way. Binding works for the duration of a session but are ignored when re-opening the project. Attached the *.ardour XML description for a small test project with just one stereo track plus master track. When opening with recent Ardour2 v2.8, following warnings appear in the log window:
WARNING]: Generic MIDI control: controllable 398 not found in session (ignored)
[WARNING]: Generic MIDI control: controllable 122 not found in session (ignored)
[WARNING]: Generic MIDI control: controllable 120 not found in session (ignored)
[WARNING]: Generic MIDI control: controllable 124 not found in session (ignored)

When saving session afterwards the related controllable entries are not longer listed in <controls> class.

In source code I can find the thrown warning in ardour-2.8/libs/surfaces/generic_midi/generic_midi_control_protocol.cc
It seems some controllable IDs cannot be identified in struct Session& s

Big limitation that bindings to external MIDI control surface are not persistent i.e. rec-enable or LADSPA controllers. Hopefully not a big deal to get it fixed soon (although I saw similar issues reported long time ago for ardour-2.0.1 or so).
Additional Information- OS: Linux beta 2.6.29.1-rt9-2-rt 0000001 SMP PREEMPT RT 2009-04-26 19:45:29 +0200 x86_64 x86_64 x86_64 GNU/Linux)
- Ardour2: v2.8 built from revision 4918
- reproducable on Linux/i586 as well
- reproducable with Ardour v2.7.1
TagsNo tags attached.

Activities

2009-05-04 20:26

 

test.ardour (9,555 bytes)

2009-07-16 00:51

 

MidiControl.patch (1,926 bytes)   
diff -cr 2.0-ongoing/gtk2_ardour/ardour_ui.cc MyArdour/gtk2_ardour/ardour_ui.cc
*** 2.0-ongoing/gtk2_ardour/ardour_ui.cc	2009-07-16 10:05:49.000000000 +1000
--- MyArdour/gtk2_ardour/ardour_ui.cc	2009-07-16 10:47:38.000000000 +1000
***************
*** 64,69 ****
--- 64,70 ----
  #include <ardour/recent_sessions.h>
  #include <ardour/port.h>
  #include <ardour/audio_track.h>
+ #include <ardour/control_protocol_manager.h>
  
  typedef uint64_t microseconds_t;
  
***************
*** 2536,2541 ****
--- 2537,2556 ----
  		goto out;
  	}
  
+ 	/* Now the session been created, add the transport controls */
+ 	new_session->add_controllable(&roll_controllable);
+ 	new_session->add_controllable(&stop_controllable);
+ 	new_session->add_controllable(&goto_start_controllable);
+ 	new_session->add_controllable(&goto_end_controllable);
+ 	new_session->add_controllable(&auto_loop_controllable);
+ 	new_session->add_controllable(&play_selection_controllable);
+ 	new_session->add_controllable(&rec_controllable);
+ 
+ 	/* Once the transport controlls have been added, the ControlProtocolManager
+ 	   is okay to instantiate the various protocols. */
+ 	BootMessage (_("Reset Control Protocols"));
+ 	ControlProtocolManager::instance().set_session (*new_session);
+ 
  	connect_to_session (new_session);
  
  	Config->set_current_owner (ConfigVariableBase::Interface);
diff -cr 2.0-ongoing/libs/ardour/session_state.cc MyArdour/libs/ardour/session_state.cc
*** 2.0-ongoing/libs/ardour/session_state.cc	2009-07-16 10:06:23.000000000 +1000
--- MyArdour/libs/ardour/session_state.cc	2009-07-16 10:47:46.000000000 +1000
***************
*** 337,346 ****
  
  	/* initial program change will be delivered later; see ::config_changed() */
  
- 	BootMessage (_("Reset Control Protocols"));
- 
- 	ControlProtocolManager::instance().set_session (*this);
- 
  	if (new_session) {
  		_end_location_is_free = true;
  	} else {
--- 337,342 ----
MidiControl.patch (1,926 bytes)   

seablade

2009-07-16 01:12

manager   ~0006434

Assigned to Paul to take a look at the patch.

paul

2010-03-26 16:42

administrator   ~0007423

patch committed (2.X - not applicable to 3.0) rev 6798. thanks.

lucus

2010-09-22 01:36

reporter   ~0009134

I think the controllable 7 (shuttle) should also be taken care of...

paul

2011-03-02 02:10

administrator   ~0010238

is this still an issue?

orlammd

2011-08-08 14:21

reporter   ~0011265

I just experienced the very same problem (no LADSPA bindings were kept after reloading the session), with Ardour 2.8.11 rev. 7387. So yes, I suppose it's always an issue.

stanislav

2011-11-02 01:25

reporter   ~0011871

Are there any changes in the version 2.8.12? This bug has this version as the target, but I have the same problem after installing the 2.8.12 version.

Thanks

Issue History

Date Modified Username Field Change
2009-05-04 20:26 dhess New Issue
2009-05-04 20:26 dhess File Added: test.ardour
2009-07-16 00:51 JackUzi File Added: MidiControl.patch
2009-07-16 01:12 seablade Status new => assigned
2009-07-16 01:12 seablade Assigned To => paul
2009-07-16 01:12 seablade Note Added: 0006434
2010-03-26 16:42 paul Note Added: 0007423
2010-04-24 10:28 cth103 Category bugs => bugs2
2010-04-24 10:29 cth103 Category bugs2 => bugs
2010-09-22 01:36 lucus Note Added: 0009134
2011-03-02 02:10 paul Note Added: 0010238
2011-03-02 02:10 paul Status assigned => feedback
2011-08-08 14:21 orlammd Note Added: 0011265
2011-08-12 16:01 cth103 cost => 0.00
2011-08-12 16:01 cth103 Target Version => 2.8.12
2011-11-02 01:25 stanislav Note Added: 0011871