Closed oliverstotz closed 3 years ago
Hi,
1.) Loading a .fxb or .fxp file crashes "host_i386.exe" (asynchronous loading doesn't help). BUT, i can load a preset bank from the plugin GUI itself !
Can't confirm this. Loading preset files works just fine here (Win 7, vstplugin~ 0.5.2), both when run natively on 32-bit Pd and when run in a subprocess.
Can you provide a minimal test patch that triggers the problem, together with the Oatmeal binaries you're using? Just to make sure we're using the same version.
2.) The Synth loads ok in the 32bit version, the (jbridged) 64bit version also loads but the window dimension is wrong
Dunno. At the moment, I just care that it looks correctly with my own plugin bridge :-)
(and not adjustable with the "size" messages)
The "size" message is deactivated for VST2 plugins because their UIs can't be resized programmatically. However, I see how this could be useful to "correct" wrong window dimensions. I have to think about it.
3.) Programs can be set, but the program names are not displayed. I tried "program_list" but i only see the numbers of the program, not the title.
This is a bug in the plugin. Dexed had a similar problem, but they fixed it. Apparently some plugins wouldn't show correct information unless the plugin editor has been created. When I probe new plugins, I don't create the editor, but I might change that...
here's the synth: https://klingt.org/fileservice/downloads/02919187163222714414-OATMEAL.zip
1.) Loading .fxb/.fxp works alright in general, just not on this very synth ;-(
the banks are located in "oatmeal banks" and come in 2 different formats: .omb ("oatmeals" own binary format) and .fxb. both can be loaded from the synth GUI and work as expected.
My "Testpatch" was just the vstplugin~ help patch, and i tried (after opening the plugin and switching on the dsp) to load .fxb AND .fxp files from the subpatch [pd preset]. Both ways "host_i386.exe" crashed as described.
(by the way: the [openpanel] for bank readings misses a bang in its inlet ;-))
2.) Nevermind. The 32bit version works alright so far (which is actually very cool !) 3.) I don't think this bug is at work here, as the editor has been created alright. (if i understood you correctly) As i said, the same plugin displays correct program names in MAX' [vst~] object.
Thanks for all your efforts !
Best
Oliver
here's the synth: https://klingt.org/fileservice/downloads/02919187163222714414-OATMEAL.zip
Thanks! That's actually the very same version I have. Can you send me a .fxp
file that triggers the crash?
3.) I don't think this bug is at work here, as the editor has been created alright. (if i understood you correctly)
The things is that I query the program names in a seperate process when the plugin is first detected. The info is then saved in a cache file. In this probing process, I don't create the editor because we don't really need it and plugins are supposed to work correctly without it. MAX [vst~]
probably just queries the program names whenever it loads the plugin.
OK, interesting update !
Loading the jbridged 64bit version of OATMEAL actually DOES give me the program names, but only when called with the "programs_list" message sent from [pd preset] !
([vstpresetbrowser] still produces the "numbers only" list)
Still, .fxb or .fxp files can't be loaded, but this time it's not a crash of the host, but this error message in the console:
vstplugin~: couldn't read bank file 'D:/VST_Plugins/##instruments/oatmeal banks/fxb/core_oatmeal_01_32.fxb': fxBank: too little data
What does this mean ?
Best
Oliver
vstplugin~: couldn't read bank file 'D:/VST_Plugins/##instruments/oatmeal banks/fxb/core_oatmeal_01_32.fxb': fxBank: too little data
It's not a valid FXB file (missing data). What about FXP files?
To answer the question before: Pick any .fxp file from the folder "oatmeal banks/fxp" i sent you. all of them trigger the crash oof the i386 host
Ahh, i'm always too late ;-)
.fxp files will produce this error:
vstplugin~: couldn't read program file 'D:/VST_Plugins/##instruments/oatmeal banks/fxp/Oatmeal Enjoy My Boat.fxp': fxProgram: wrong chunk size
the strange thing is, that they all work when loaded from the plug's own GUI
Best
Oliver
FWIW, REAPER also shows Init 01
, Init 02
, etc. as program names... So let's blame it on Oatmeal :-)
vstplugin~: couldn't read program file 'D:/VST_Plugins/##instruments/oatmeal banks/fxp/Oatmeal Enjoy My Boat.fxp': fxProgram: wrong chunk size
Ok, I think they are just not valid FXP/FXB files... What happens is that Oatmeal writes program/bank files in a wrong format. Oatmeal can read them, but other hosts can't. [vstplugin~]
is not the only one, REAPER can't read them, either!
When I was testing, I actually created my own presets and loaded them again - which worked fine (also between Pd and REAPER).
What you can do is load the FXP/FXB files from the Oatmeal GUI and then save them as "proper" FXP/FXB files with [program_write(
resp. [bank_write(
, so you can load them programatically with [program_read(
resp. [bank_read(
.
BTW, you found an actual bug. When I was trying to load the corrupted FXP/FXB files with a native Oatmeal, I got the corresponding error message in the console. When I was running it sandboxed/bridged, the subprocess would just crash, as you have observed. I have to fix this.
I have to fix this.
Done: b0aa9ab
Thanks, Christof ! Yes i can confirm that your suggestion works and is a good way to deal with this problem. Anyway it's an old piece of software that was left "like it is" 15 years ago ... (but it sounds so great ! ;-))
Another question, probably related: In [vstpresetbrowser] you use an extra object [vstplugin~ -n 0 0] to load the plugin a second time to get its program names. Is there a specific reason you do this ?
I noticed, that somes plugins (i tested this only with synths) , when opened in the "main" [vstplugin~] object, don't report the program names (just the numbers), but RE-LOADING the plugin the way you do in your [vstpresetbrowser] abstraction sends out the program names correctly. Can you explain this ?
Thanks a lot for all your help !
Oliver
In [vstpresetbrowser] you use an extra object [vstplugin~ -n 0 0] to load the plugin a second time to get its program names. Is there a specific reason you do this ?
You can use [vstplugin~]
without loading an actual plugin and just obtain info from the plugin dictionary. I just noticed that this isn't really documented.
The advantage is that I can query the programs without "interferring" with the actual [vstplugin~]
instance.
I noticed, that somes plugins (i tested this only with synths) , when opened in the "main" [vstplugin~] object, don't report the program names (just the numbers), but RE-LOADING the plugin the way you do in your [vstpresetbrowser] abstraction sends out the program names correctly. Can you explain this ?
One possible explanation is that you are opening a 32-bit plugin by its file name, but the resulting [open <plugin> 1(
message (sent throught the right outlet) always contains the plugin name. This message is parsed by the [vstpluginbrowser]
abstraction, which might then accidentally pick up another plugin. This can happen if you also have a (pseudo)native version installed, because that would be preferred. I guess the [open(
message should use the same symbol that you have passed to the [open(
method... I have to think about this.
Anyway, the original issue has been resolved, so I think I can close it.
I guess the [open( message should use the same symbol that you have passed to the [open( method... I have to think about this.
fa6208fb02738df636dc08c15e6fe8d21a734b4c
You can use [vstplugin~] without loading an actual plugin and just obtain info from the plugin dictionary. I just noticed that this isn't really documented.
757998fdd96968c7273f3c9c04a3e291bee81239
hi, christof ! it's maybe too esotheric to bother, but i thought i let you know, that even with the latest vstplugin~ release 0.5.2, my beloved OATMEAL synth still not works quite as expected.
The problems are "programs" and preset files (.fxb and .fxp).
1.) Loading a .fxb or .fxp file crashes "host_i386.exe" (asynchronous loading doesn't help). BUT, i can load a preset bank from the plugin GUI itself !
Here's the Windows-Error-Console Problem signature: Problem Event Name: APPCRASH Application Name: host_i386.exe Application Version: 0.0.0.0 Application Timestamp: 61487560 Fault Module Name: host_i386.exe Fault Module Version: 0.0.0.0 Fault Module Timestamp: 61487560 Exception Code: 40000015 Exception Offset: 00153ecc OS Version: 6.1.7601.2.1.0.256.48 Locale ID: 3079 Additional Information 1: 1868 Additional Information 2: 1868a8a245ffec8b520300c015c95144 Additional Information 3: f289 Additional Information 4: f289abbc55485754a339ae0672482c8d
2.) The Synth loads ok in the 32bit version, the (jbridged) 64bit version also loads but the window dimension is wrong (and not adjustable with the "size" messages) 3.) Programs can be set, but the program names are not displayed. I tried "program_list" but i only see the numbers of the program, not the title. When i try the same in MAX with its [vst~] object, names are output correctly when called.
System is Win7 (64bit), PD 0.54.1 (64bit) and vstplugin~ 0.5.2 (from deken)
=======================================================
Please don't lose sleep over it, i can make workarounds for this one synth. All my others seem to work ok so far !
Best
Oliver