View Issue Details

IDProjectCategoryView StatusLast Update
0004110ardourbugspublic2020-04-19 20:15
Reporterthefoxbox Assigned Tocth103  
PrioritynormalSeverityminorReproducibilityalways
Status closedResolutionfixed 
Target Version3.0-beta1 
Summary0004110: lv2-persist+linuxsampler not restoring channel and instrument on session open
Descriptionsvn 9710

This was working until recently.

1. Create a MIDI track
2. Load the LinuxSampler plugin in MIDI track
3. Load an instrument into LinuxSampler
4. Save session
5. Re-open session

the rdff files are being created on save, but not restored on session open.
TagsNo tags attached.

Activities

thefoxbox

2011-06-24 04:57

reporter   ~0010939

Last edited: 2011-06-24 05:00

I have also noticed that after adding the linuxsampler plugin, assigning an instrument to the channel, and saving the session, new state files are created (plugins/159.rdff and plugins/159/linuxsamper).

When re-opening the session and saving, new state files are created with what appears to be identical information.

-- first save and exit:

Starting disk thread...OK
LSCPServer: Client connection established on socket:40.
LSCPServer: Client connection established on socket:41.
Stopping disk thread...OK
Starting disk thread...OK
Scheduling '/home/efox/Studio/Instruments/GSCWDrums-Kit-1.gig' (Index=0) to be loaded in background (if not loaded yet).
Loading gig file '/home/efox/Studio/Instruments/GSCWDrums-Kit-1.gig'...OK
Loading gig instrument ('/home/efox/Studio/Instruments/GSCWDrums-Kit-1.gig',0)...OK
Caching initial samples...OK
Saving LV2 plugin state to /home/efox/Studio/Session/DEBUG/plugins/159.rdff
Freeing gig file from memory...OK
Stopping disk thread...OK

-- re-open, save and exit:

Starting disk thread...OK
LV2 state path /home/efox/Studio/Session/DEBUG/plugins/159.rdff
Loading LV2 state from /home/efox/Studio/Session/DEBUG/plugins/159.rdff
Stopping disk thread...OK
LV2 state path /home/efox/Studio/Session/DEBUG/plugins/159.rdff
Loading LV2 state from /home/efox/Studio/Session/DEBUG/plugins/159.rdff
Saving LV2 plugin state to /home/efox/Studio/Session/DEBUG/plugins/261.rdff

NOTE: there is no client connection being made to LSCPServer on re-open

2011-06-24 04:57

 

159.rdff (160 bytes)

2011-06-24 04:57

 

linuxsampler (76 bytes)   
0.35
0 1 /home/efox/Studio/Instruments/GSCWDrums-Kit-1.gig
0 0 0 0 1 -2 GIG
linuxsampler (76 bytes)   

2011-06-24 04:58

 

261.rdff (160 bytes)

thefoxbox

2011-06-27 14:46

reporter   ~0010942

Here is the debug output when re-opening the session:

DEBUG::LV2: init
Starting disk thread...OK
LV2 state path /home/efox/Studio/Session/DEBUG/plugins/159.rdff
Loading LV2 state from /home/efox/Studio/Session/DEBUG/plugins/159.rdff
DEBUG::LV2: persist retrieve http://linuxsampler.org/schema#state-file = 0xb3ebc888 (size: 13, type: 3430)
DEBUG::LV2: absolute path linuxsampler => /home/efox/Studio/Session/DEBUG/plugins/261/linuxsampler
Stopping disk thread...OK
LV2 state path /home/efox/Studio/Session/DEBUG/plugins/159.rdff
Loading LV2 state from /home/efox/Studio/Session/DEBUG/plugins/159.rdff
DEBUG::LV2: persist retrieve http://linuxsampler.org/schema#state-file = 0xb3ebc790 (size: 13, type: 3430)
DEBUG::LV2: absolute path linuxsampler => /home/efox/Studio/Session/DEBUG/plugins/261/linuxsampler
DEBUG::LV2: LinuxSampler activate
DEBUG::LV2: LinuxSampler activate

It looks like persist is getting called a second time and the state-file address is somehow changing.

thefoxbox

2011-06-27 17:53

reporter   ~0010943

Line 527 of lv2_plugin_lilv.cc seems to be where the problem is occurring. Specifically the value of 'me->_insert_id.to_s()'. If I hard code the correct insert_id so that the absolute path is correct, the session restores the plugin properly.

thefoxbox

2011-06-28 20:06

reporter   ~0010945

attached a patch that resolves this issue and fixes a problem where PluginInsert::set_state in plugin_insert.cc did not initialize it's "_id".

2011-06-28 20:06

 

plugin_insert.cc.patch (379 bytes)   
--- libs/ardour/plugin_insert.cc	(revision 9773)
+++ libs/ardour/plugin_insert.cc	(working copy)
@@ -884,6 +884,11 @@
 
 	uint32_t count = 1;
 
+	// may not exist for legacy 3.0 sessions
+	if ((prop = node.property ("id")) != 0) {
+		_id = prop->value();
+	}
+
 	if (_plugins.empty()) {
 		/* if we are adding the first plugin, we will need to set
 		   up automatable controls.
plugin_insert.cc.patch (379 bytes)   

cth103

2011-07-04 17:36

administrator   ~0010974

Patch applied to SVN 9793. Thanks!

system

2020-04-19 20:15

developer   ~0022613

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.

Issue History

Date Modified Username Field Change
2011-06-12 00:36 thefoxbox New Issue
2011-06-12 13:12 cth103 cost => 0.00
2011-06-12 13:12 cth103 Target Version => 3.0-beta1
2011-06-24 04:57 thefoxbox Note Added: 0010939
2011-06-24 04:57 thefoxbox File Added: 159.rdff
2011-06-24 04:57 thefoxbox File Added: linuxsampler
2011-06-24 04:58 thefoxbox File Added: 261.rdff
2011-06-24 05:00 thefoxbox Note Edited: 0010939
2011-06-27 14:46 thefoxbox Note Added: 0010942
2011-06-27 17:53 thefoxbox Note Added: 0010943
2011-06-28 20:06 thefoxbox Note Added: 0010945
2011-06-28 20:06 thefoxbox File Added: plugin_insert.cc.patch
2011-07-04 17:36 cth103 Note Added: 0010974
2011-07-04 17:36 cth103 Status new => resolved
2011-07-04 17:36 cth103 Resolution open => fixed
2011-07-04 17:36 cth103 Assigned To => cth103
2020-04-19 20:15 system Note Added: 0022613
2020-04-19 20:15 system Status resolved => closed