Cabbage Logo
Back to Cabbage Site

Updating dlls safely? (aka: "I've made a horrible mistake")

A few months back I decided to update cabbage on my DAW machine, which I normally NEVER touch… but there were just too many new features I had to have, so I gave in. At first when I loaded my exported cabbage plugins into a new project they crashed the DAW (Sonar X3). I opened each .csd for the dlls and re-exported them with the new version of cabbage. For the packaged examples I exported the newest versions included. All were exported files with the same .dll filenames as before, in the same path.

This seemed to work, they loaded just fine into a new project… but this is where I messed up. I didn’t open any older projects that had used these plugins. Now, months later, when I tried open these older projects the plugins aren’t recognized as being loaded in the DAW, even tho I can add the same plugin to the project and have it function fine. In other words, it doesn’t recognize these new plugins as the same plugins from before.

I had file backups at one point, but thinking the conversion had worked (mistakenly based on new files), I no longer have the .dll backups… tho I suspect without installing the old version of cabbage I’d be out of luck anyway.

I still have the installer from my previous cabbage version. If all else fails, that might be my plan.

Is there any good way to fix this? =\

edit: suggestions for how to properly update these in the future are also appreciated.

You shouldn’t have to update, but the problem is that every API bump made to Csound will break older plugins. There was a bump at Csound version 6.03, another at 6.05 I think and there was recently another. It’s a pain but there is nothing we can really do about it.

Just to clarify, you can open your .csd files, re-pexport and all works fine? Are you saying that you only have the .vst files left? The .csd files are contained within them. I’m confused about the dll issue, I thought you were exclusively OSX?

I do exclusively write my plugins on an OSX laptop, but most of my heavy DAW work is on a windows machine. It was a little painful, but I don’t mind re-exporting plugins to maintain the api levels, but I’m concerned about the DAW no longer considering them the same plugins. It basically destroys projects.

I’ll summarize what happened.

  • I update to new cabbage (v1.0 pre)
  • Adding exported cabbage plugins caused instant crashes
  • I opened the .csd files associated with the .dlls in the new cabbage, re-exported the .dlls to the same folder and filenames
  • Adding exported plugins to new projects now works fine, but older sonar projects don’t see the freshly exported plugins to be the same as the ones from before

So basically, any sonar projects I had made prior to the cabbage 1.0 pre install lost all cabbage effects and synths.

On Windows there is a batch convert option that is very useful. If you keep all your Cabbage plugins in the same folder, you can simply delete the dlls, and batch process all the .csd files in one go. I never got around to implementing it on OSX because no one ever requested it. But it can be useful in these situations.

Abut batch updating, honestly so many of the pre-packaged example effects and synths had been updated since then too, so it was just as well that I re-exported by hand rather than batch updating.

This still seems like a big deal tho. There should be a way to update cabbage when using a DAW without “corrupting” older projects. Is this only an issue for windows users? Or maybe only Sonar?

For a workaround, hypothetically, would it be possible to have multiple csound libraries available at a time, and have the dll’s know which they should use? That would allow older plugins to load the csound library they were created with, and theoretically keep running exactly as they were forever.

In general, I’d like to think that being able to pull up a project from a year ago should be as drama free as possible :wink:

You can’t tell the dlls which version of Csound to use. They just find the one that matches the name of the one they were compiled against. The only failsafe way to do it is to export fully standalone plugins every time. You’d need to package them in such as way that the plugins always looks for the Csound library in the current dir. It would need a bit of work.

I agree that it is a pita. Another options would be to use a unique Csound library name for each Cabbage release. This would be fine on Windows where I build my own Csound, but it would be a pain to maintain on OSX.