Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Preset / parameteres doesn't save with project of a lot of plugins #106

Closed
keybreak opened this issue Sep 3, 2019 · 25 comments
Closed

Preset / parameteres doesn't save with project of a lot of plugins #106

keybreak opened this issue Sep 3, 2019 · 25 comments

Comments

@keybreak
Copy link

keybreak commented Sep 3, 2019

SAR Logana v1.9

Description

This is just example on this plugin, but it affects a lot of plugins, you can see here (https://keybreak.github.io/linux-vst-compatibility-list/)
I've tested them, and this doesn't happen both on Windows / Airwave.

To reproduce:

  1. Load plugin, load some preset
  2. Change some obvious parameters like Cutoff / LFO
  3. Save Renoise project
  4. Load Renoise project - it'll initialize some default sound, and preset switch won't work anymore at all, unless you reload plugin.

Sounds like serious bug.
Although i have tested all of those plugins with LinVst 2.65, so if by chance it's fixed with 2.66 please notify me 😄

Here's VST for test:
LoganA.zip

Still affected (2)

VSTi

Dev Name Version
QuikQuak Glass viper 1.42
Tek'it audio APC 1.3.1

Dependencies

strings "LoganA.dll" | grep -i '.dll'

gdiplus.dll
OLEACC.dll
WINMM.dll
KERNEL32.dll
USER32.dll
GDI32.dll
MSIMG32.dll
COMDLG32.dll
ADVAPI32.dll
SHELL32.dll
COMCTL32.dll
SHLWAPI.dll
ole32.dll
OLEAUT32.dll
IMM32.dll
se_vst.dll

Enviroments

 OS: Manjaro 18.0.4 Illyria
 Kernel: x86_64 Linux 5.2.8-1-MANJARO
 Shell: bash 5.0.7
 DE: Deepin 15.11
 WM: Deepin WM
 dm: LightDM 
 gcc v: 9.1.0 
 tk: Qt 5.13.0 
 driver: nvidia v: 430.40 
 WINE: 4.15-staging amd64

Winetricks

gdiplus
andale
arial
comicsans
courier
georgia
impact
times
trebuchet
verdana
webdings
corefonts
tahoma
wininet
fontsmooth=rgb
win7
@keybreak
Copy link
Author

keybreak commented Sep 4, 2019

If it helps, most of affected plugs are synthedit based (but not all)

@osxmidi
Copy link
Owner

osxmidi commented Sep 5, 2019

I tested the Logan presets and setting project save with Reaper without any problems .

I can't get it to show up in the Renoise that I've got, Renoise scans it ok.

btw LinVst plugins should be run with the Renoise sandbox option.

@keybreak
Copy link
Author

keybreak commented Sep 5, 2019

I can't get it to show up in the Renoise that I've got, Renoise scans it ok.

Hmmm...Weird, try to clean CachedVSTs_x64.db / CachedFailedVSTs_x64.db perhaps?
I'm testing in Renoise v3.1.1 btw, if it matters.


Luckly there's a lot of affected plugs, try this one for example:
The Interruptor Dub siren v1.4.1
Dub siren.dll.zip


btw LinVst plugins should be run with the Renoise sandbox option.

Yeah i've noticed you recommend this, but why though?
I don't see any visible difference at all 😕

@keybreak
Copy link
Author

I keep testing commercial plugins now, seems that this is universal problem for some type of plugins.
But i don't see common denominator for affected ones yet, at least from testing perspective...

For example much more complex DiscoDSP Vertigo also affected.

@osxmidi
Copy link
Owner

osxmidi commented Sep 13, 2019

Reaper is ok.

If the plugin (Dub siren) is loaded and then the presets are manually changed and parameters are manually changed then everything is ok and Renoise changes the presets and parameters ok.

When those changed settings are saved to a song and then the song is reloaded, then Renoise seems to default to the original init preset and even if the preset is then manually changed, Renoise still doesn't change the preset and that should have nothing to do with the saving/loading of the song as the presets should be able to be manually changed once the plugin is loaded via a saved song or not.

This doesn't happen with Reaper, so I assume it's something Renoise is doing.

@keybreak
Copy link
Author

keybreak commented Sep 13, 2019

@osxmidi
I don't think it's purely Renoise thing, because as mentioned above - it doesn't happen both on Windows / Airwave with exact same plugs (i've tested all of them affected).

Can't check Reaper now, as i don't have it. but assume it's having some different saving mechanisms perhaps..

btw, here's idea - we can try same Renoise song .xml saved with LinVST and airwave to compare & see what's different i'll try it soon.

@osxmidi
Copy link
Owner

osxmidi commented Sep 13, 2019

Ardour does it as well.

Reaper is ok.

Synthedit plugins can have strange bugs that might give different results between Windows Airwave and LinVst and different DAWs ie Reaper Renoise etc depending on what the bug might be.

All LinVst does is to get the (preset and parameters) chunk data from the plugin and send it to the host and then the host saves it in a project file or song file.

https://groups.io/g/synthedit/topic/32087597?p=Created,,,20,2,0,0::recentpostdate%2Fsticky,,,20,2,0,32087597

@keybreak
Copy link
Author

keybreak commented Sep 13, 2019

Methodology:

  1. Create new project
  2. Load The Interruptor Dub siren
  3. Load Zulu warrior 4 preset
  4. Change Square LFO amount to full
  5. Save project

Diff.zip

Check provided .xml files (you can extract those by renaming .xrns to zip btw) with Meld or some other diff.

<ParameterChunk><![CDATA produced by Airwave and LinVST is different.


Synthedit plugins can have strange bugs that might give different results between Windows Airwave and LinVst and different DAWs ie Reaper Renoise etc depending on what the bug might be.

Like i've said from testing a lot of commercial plugins lately - not only synthedit ones are affected.

All LinVst does is to get the (preset and parameters) chunk data from the plugin and send it to the host and then the host saves it in a project file or song file.

Yes, technically it is so, but there must be some error in there, because LinVST with those affected plugins produces completely unusable result at least in Renoise (unless you manually reload all the plugins and tweak those parameters again after loading saved projects) 😞

It is big problem.

@keybreak
Copy link
Author

keybreak commented Sep 13, 2019

Also note, that if you load project which was saved with Airwave later with LinVST plugin - it will not work as intended and still will be affected...

That should tell us something i guess 🤔

Could it be some problem while parsing this ParameterChunk with LinVST bridge perhaps?

@osxmidi
Copy link
Owner

osxmidi commented Sep 14, 2019

It seems to be ok now.

Renoise seems to need the presets loaded on the main thread for some plugins whereas Reaper doesn't.

@keybreak
Copy link
Author

keybreak commented Sep 14, 2019

Wow, that's interesting! 😄
Thanks for your work 👍

Will wait for v2.67 and test all those affected again to make sure it's gone in all cases!

@keybreak
Copy link
Author

@osxmidi
Well, i've got bad & good news!

Tested previously affected plugins with LinVST 2.7 again, here are reults:



Still affected (2)

VSTi

Dev Name Version
QuikQuak Glass viper 1.42
Tek'it audio APC 1.3.1

I've double-checked that this doesn't happen with Airwave & Windows, to make sure that it's not plugin itself...So probably it's caused by something else, judging by how many you've eliminated from this list.



Doesn't have this bug anymore (40)

VST

Dev Name Version
SAR Logana FX 1.9

VSTi

Dev Name Version
Acid milch & Honig Acid rack 2.0
de la Mancha Bassbomb 1.1
de la Mancha Dirty Harry 1.1
Elektrostudio Ocet 1.0
Krakli ADDO2 1.0
Krakli K200 1.0
Krakli Komodo 1.0
Krakli KR5 1.0
Krakli M8Rx 1.0
Krakli RGB8 1.0
Krakli StingerMax 1.0
Krakli VBox3 1.0
Memorymoon Memorymoon 1.8.10
Memorymoon Messiah 1.3.13
NOVAkILL NEOkILLER-III 1.0
NOVAkILL NitrousPD 1.1
NOVAkILL NitrousPM 1.1
Psychic modulation Dubtron 2 2.0
Rob Papen SubBoomBass 1.1.3a
Saltline Brzoza 1.0.3
Saltline Swierk 1.1.2
SAR Logana 1.9
Sugar Bytes Factory 1.0.5
Superwave D-707 1.2
Superwave D-727 1.2
Superwave D-808 1.2
Superwave D-909 1.2
Superwave P80 1.2
Superwave Performer 1.2
Superwave Professional 1.2
Superwave Tarkus 1.2
Superwave TinyPops 1.2
Superwave Trance-Pro 1.2
Superwave Ultimate 1.2
Superwave Ultimate HD 1.2
SyncerSoft Polyvoks station 2.2
The Interruptor Dub siren 1.4.1
The Interruptor TwinBass 1.2
Ugo Rez 3.0

Also i wasn't wasting time meanwhile:

P.S. Note that when i write bugs starting with d2d1 ... in absolute most cases i haven't tried overrides techniques yet (will do that later after list will be completed). If you have any questions please ask 😃


Overall - respect for outstanding work!
99 bugs out of 683 plugins, most of which are d2d1 / Wine related is a very good result so far.

@keybreak
Copy link
Author

Also those eliminated with 2.7, seems to be related to same bug.

Solved (6)

Preset doesn't change after project reload

VSTi

Dev Name Version
Elektrostudio Davosynth 1.0
Elektrostudio Micromoon 1.0
Elektrostudio ODsay 1.0
Elektrostudio Or2v 1.0
Elektrostudio SixTX mounth june 1.0
Elektrostudio Tapeotronic 1.0

@Levitanus
Copy link

within Native Instruments KONTAKT there is problem of saving big multi (I'm pretty sure the reason is in amount of persistent variables used by the scripts of instruments).
For example, linVST can handle only one instrument of CinematicStudioStrings at time, and a 6-7 instruments by the spitfire audio team.
During saving the project linVST doesn't seem wrong, but I've got exactly the same problem within carla-wine bridge, but there plugin just falls with stack overflow exception.
I think the problem is the same for linVST. Is the way to enhance amount of memory exported by plugin within the source-files edition?

@osxmidi osxmidi closed this as completed Oct 18, 2019
@osxmidi osxmidi reopened this Oct 18, 2019
@osxmidi
Copy link
Owner

osxmidi commented Oct 18, 2019

If it's a preset memory problem then try adding -DCHUNKBUF in the Makefile next to all of the -DVESTIGE entries (include some spaces between the -DCHUNKBUF and -DVESTIGE entries like it is for the other -Dxxxxxxxx entries in the Makefile).

It might also be because of system memory overload maybe?

@keybreak
Copy link
Author

keybreak commented Oct 18, 2019

@osxmidi
Also before closing this issue - was those solved?

Still affected (2)

VSTi

Dev Name Version
QuikQuak Glass viper 1.42
Tek'it audio APC 1.3.1

@Levitanus
Copy link

@osxmidi, thanks, I'll try on next days.

It might also be because of system memory overload maybe?

Don;t think so, I've many of instances and only several can't save their state

@osxmidi
Copy link
Owner

osxmidi commented Oct 19, 2019

QuikQuak Glass viper 1.42 locks Reaper up.

Usually that tends to happen with plugins that have some sort of bug like a WM_PAINT bug that overwhelms the windows message loop.

Tek'it audio APC 1.3.1 was ok with Reaper

Glass Viper uses gdiplus so maybe override that and see what happens.

I don't know if I can do much about it.

@keybreak
Copy link
Author

QuikQuak Glass viper 1.42

QuikQuak Glass viper 1.42 locks Reaper up.

By locks you mean full GUI freeze?

Glass Viper uses gdiplus so maybe override that and see what happens.

I already use it (winetricks section of OP)

I think i got what's wrong, here's comparison of LinVst and Airwave (which works and looks same as Windows project).

Problem is that LinVST saves preset, but doesn't save parameters / changes.

Methodology:

  1. Create new project
  2. Load QuikQuak Glass viper
  3. Load Bass - Growler preset
  4. Change reverb wet to 100%
  5. Save project

Here's comparison:
Diff.zip

Check provided .xml files with Meld or some other diff.
I believe it have something to do with what @Levitanus have uncovered, because Airwave (just as Windows) ParameterChunk is HUGE. Notice xml size difference:

LinVST Airwave
115,9Kb 3,9Mb

If it is the size limit problem, was there some rational thinking behind setting limits?
If nothing too hardcore - than probably you should change defaults to either extremely high or infinite...

Because saving presets / parameters is one of the most important thing in case of vst bridge, otherwise we couldn't preserve existing projects compatibility and it will be harder to test anything.


Tek'it audio APC 1.3.1

Sorry, forgot to mention - that one is REALLY weird.
It saves and plays good after loading saved project, but once you open GUI - it will clear all parameters to some default state.

I've never seen anything like that before, and not sure what to make of it, because:

  • It works in Airwave & Windows
  • It works on VM under same conditions
  • It clearly saves parameters in project and plays until GUI open...

That one is voodoo to me, maybe you'll have some ideas.


P.S. Speaking strictly from my personal experience
Reaper is really good DAW, just as many other i've tried in my Windows years, but Renoise is absolute best in terms of VST2 compatibility / performance, since i have that much plugs i can judge in general - and all of my plugins worked in Renoise (except one alpha version of unfinished one), while in other daws a lot of them haven't even fired up or had some major problem (sometimes it's counted for 10-100 out of 2500).

So while we should definitely test everywhere and report bugs to devs of those DAWs - judging LinVST just on Reaper won't be enough, because sadly even on Windows it's not most stable platform for plugins...

@osxmidi
Copy link
Owner

osxmidi commented Oct 19, 2019

LinVst is mostly concerned for Reaper Linux compatibility (as much as possible), all of the other daws are an afterthought that I'd like to be compatible with but they are not LinVst's main concern.

Airwave is mostly concerned with Bitwig compatiblity.

The preset limit is 2MB (basically for speed) and if someone wants more than that then define CHUNKBUF in the Makefile -DCHUNKBUF

Glass Viper locks up Reaper with AudioMasterGetTime which seems to me to be some sort of plugin bug that Airwave/Windows might somehow get over but not LinVst.

As I've said, LinVst works differently to Airwave and some things that work with Airwave won't work with LinVst and vice versa and I'm not altering and testing LinVst too much just to possibly cater for a few plugins that might happen to run with Airwave.

My main concern is to try and be compatible as much as possible for the standard well known plugins that most Linux users probably want to use.

Anyway, I don't guarantee compatibility with anything because Wine and Linux and LinVst can't always deliver.

@keybreak
Copy link
Author

keybreak commented Oct 19, 2019

The preset limit is 2MB (basically for speed) and if someone wants more than that then define CHUNKBUF in the Makefile -DCHUNKBUF

For speed of saving / loading projects or plugin resource consumption in working state?
What would you advice as reasonable for case like multi Kontakt or in general?
Is there a way to set infinity (at least for test purpose)?


Well...Ok it's your child after all.

Just saying, because with Reaper if you encounter bug a lot of times it's really good idea to test on real Windows, and if it fails (which a lot of times likely) report to them directly (which i do often times too).

I would like LinVST to be compatible with everything to be best goto solution, that's my personal testing aim. Because LinVST is best base for it that i know of.

So whenever i see some logic, i'll try to report it (Airwave / Windows etc are always strictly for comparison reasons, to make argument that something is possible).

Anyways, for now our main common "enemy" is d2d1 / hd2d1...
But before getting deeper into this i want to make sure that we would eliminate all possible LinVST only bugs (or at least those that looks like it).

My main concern is to try and be compatible as much as possible for the standard well known plugins that most Linux users probably want to use.

That's logical, but you never really know what end user would consider as such 😄

I suppose of course Native instruments / Waves / IK Multimedia / XFER / Arturia / Audio damage / u-he and everything that usually ends up in countless tutorials...But it always shifts.

Some of those i've already covered in my list, most of them work really good.

And this list will keep getting bigger and bigger with those industry standards names...

@Levitanus
Copy link

If it's a preset memory problem then try adding -DCHUNKBUF in the Makefile next to all of the

It worked, thanks a lot!

@osxmidi
Copy link
Owner

osxmidi commented Oct 20, 2019

The preset limit is 2MB (basically for speed) and if someone wants more than that then define CHUNKBUF in the Makefile -DCHUNKBUF

For speed of saving / loading projects or plugin resource consumption in working state?
What would you advice as reasonable for case like multi Kontakt or in general?
Is there a way to set infinity (at least for test purpose)?

Well...Ok it's your child after all.

Just saying, because with Reaper if you encounter bug a lot of times it's really good idea to test on real Windows, and if it fails (which a lot of times likely) report to them directly (which i do often times too).

I would like LinVST to be compatible with everything to be best goto solution, that's my personal testing aim. Because LinVST is best base for it that i know of.

So whenever i see some logic, i'll try to report it (Airwave / Windows etc are always strictly for comparison reasons, to make argument that something is possible).

Anyways, for now our main common "enemy" is d2d1 / hd2d1...
But before getting deeper into this i want to make sure that we would eliminate all possible LinVST only bugs (or at least those that looks like it).

My main concern is to try and be compatible as much as possible for the standard well known plugins that most Linux users probably want to use.

That's logical, but you never really know what end user would consider as such smile

I suppose of course Native instruments / Waves / IK Multimedia / XFER / Arturia / Audio damage / u-he and everything that usually ends up in countless tutorials...But it always shifts.

Some of those i've already covered in my list, most of them work really good.

And this list will keep getting bigger and bigger with those industry standards names...

Well, I'll keep these problems in mind and try various things from time to time but right now I'm working on other things.

@osxmidi
Copy link
Owner

osxmidi commented Oct 20, 2019

If it's a preset memory problem then try adding -DCHUNKBUF in the Makefile next to all of the

It worked, thanks a lot!

Thanks for letting me know.

@osxmidi osxmidi closed this as completed Oct 20, 2019
@keybreak
Copy link
Author

keybreak commented Oct 24, 2019

@osxmidi
Thx, -DCHUNKBUF helps with QuikQuak Glass viper 1.42, as expected 😄
Also i don't see performance regressions yet.

For now i've redo some tests of 10 plugins i did recently, seems they behave exactly same in terms of performance.

P.S. Oh wait, so it seems now it's default? Good call for improving overall compatibility 👍
fcd31e3


Tek'it audio APC 1.3.1

Still have this weird behavior...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants