Question on Chunks

DSP, Plugin and Host development discussion.
Post Reply New Topic
RELATED
PRODUCTS

Post

Hi there,

I am encountering a strange problem with Reaper. Not sure whether it is reaper specific or more general.

I am currently experimenting with a preset system, where I expose only one programme to the host, and handle everything else internally. I want to store state and bank information as chunks.

Even though I inform the host that I am using chunks

#define PLUG_DOES_STATE_CHUNKS 1

in WDL-OL, reaper does not call effSetChunk (or effGetChunk) in the dispatcher, but rather reads out and restores the parameters, effectively overriding the chunks setting.

If I use a larger number of programs in the bank, I get the expected chunk-related calls.

Is that common practice in hosts, to ignore the chunk settings, when the bank only contains one program?


Cheers,
Martin


Edit: Problem solved. I had a bug which gave rise to an invalid chunk.

Post

Hi,

it seems I need to revive this thread, as I stumbled about the same problem again.
I though that I had found the bug and fixed it, but it seems there was just some co-incidence.

Again, I am having the same problem that effGetChunk is not called. This time, it seems that it works fine in reaper, but it does not work in SaviHost.

Could anybody (aracula??) give me some more information on how the host decides to call this function (send this opcode to the plugin's dispatcher). Apart from having set

Code: Select all

mAEffect.flags |= effFlagsProgramChunks
are there any other conditions which have to be fulfilled, or are there any things during the lifetime of a plugin, which prevent the host from calling this function?

Any help would be greatly appreciated.

Cheers,
Martin

Post

The flag should be enough. I'd try running Savihost in debugger to make sure it's not catching any exceptions (eg. memory errors) silently.

Post

OK. I found it. Really stupid mistake. It had nothing to do with my plugin.
In the configuration of my Visual C++, I passed the command line arguments
"/noload /nosave /noft /noexc" to savihost. I must have added them ages ago to the debug configuration, and forgot to take them out again (at least the saving related options).

Now, it works as expected.


Cheers,
Martin

Post

Another tip, if you are using a compiler that's new enough - make sure you add the "override" keyword to your method declarations. That way, the compiler will complain if you accidentally have the wrong signature (int vs. unsigned int is enough), instead of silently treating it as a new overload. That one crept up on occasion before, but has never happened to me again ever since I started using override.
Cakewalk by Bandlab / FL Studio
Squire Stratocaster / Chapman ML3 Modern V2 / Fender Precision Bass

Formerly known as arke, VladimirDimitrievich, bslf, and ctmg. Yep, those bans were deserved.

Post

Chris Walton wrote:Another tip, if you are using a compiler that's new enough - make sure you add the "override" keyword to your method declarations. That way, the compiler will complain if you accidentally have the wrong signature (int vs. unsigned int is enough), instead of silently treating it as a new overload. That one crept up on occasion before, but has never happened to me again ever since I started using override.
While this is a good idea .. if it works in one host, then it's not a virtual override problem. :)

Post

mystran wrote:
Chris Walton wrote:Another tip, if you are using a compiler that's new enough - make sure you add the "override" keyword to your method declarations. That way, the compiler will complain if you accidentally have the wrong signature (int vs. unsigned int is enough), instead of silently treating it as a new overload. That one crept up on occasion before, but has never happened to me again ever since I started using override.
While this is a good idea .. if it works in one host, then it's not a virtual override problem. :)
Oh yeah, that's absolutely true - it was just the first thought I had before I saw that it happened only in one host and not the other.
Cakewalk by Bandlab / FL Studio
Squire Stratocaster / Chapman ML3 Modern V2 / Fender Precision Bass

Formerly known as arke, VladimirDimitrievich, bslf, and ctmg. Yep, those bans were deserved.

Post Reply

Return to “DSP and Plugin Development”