Creating dynamic library plugins for Audacity (compiled)

Hello. I’m just wondering about how you manage to create plugins for Audacity using compiled dynamic libraries (eighter *.dll for Windows or *.so for GNU/Linux).

For Windows, how I can debug and test the plugin inside Audacity using Visual Studio’s debugging session (and create the plugin using Visual Studio, too)?
How Linux debugging for Audacity compiled plugins is performed?

I’m going to create a plugin for Audacity (both for Windows and Linux) using Visual Studio on Windows and GNU programming tools on Linux, so that’s why I’m asking…

Thank you in your interest :slight_smile:

Wrong place to ask. This is the Audacity Forum. We only ship one shared library plugin (SC4 - LADSPA) and we don’t debug it. It is old and has not been updated in years. We don’t ship VST’s at all.

Have you tried searching the internet? When you have done that, then if you still need help, you can try subscribing to audacity-devel mailing list and asking there: https://lists.sourceforge.net/lists/listinfo/audacity-devel.

Have you considered Nyquist plugins instead of LADSPA/VST? Nyquist plugins are Audacity’s own format and we have experts in those.


Gale

Wait. All DLL plugins are using an obsolete and further not supported nor updated DLL core? Or how I can understand your words? I’m creating plugin, not looking for some plugin to work with. You probably misunderstood me.

I’m looking for some tutorial or a guide on creating plugins for Audacity. Google didn’t help (perhaps I asked wrong question, I’m not Google master at all), so I decided to ask here, since this is Audacity forum and perhaps somebody could help me there. Well, I registered to devel mailing list, but unfortunately I didn’t get the whole concept - where can I seek for something? Always use an archive to search or just list? Are there some general rules on using devel? Like how to form questions, how to submit plugins, etc.

If somebody adds new post to devel, I guess it will arrive in my inbox, right?

To Nyquist plugin: As Nyquist has great deal with manipulating audio data, it can create various sample tracks, various wave functions, but I actually do not get Nyquist, it’s a language I just do not understand and seems too hard to implement. Also, I heard that Nyquist does not support handling with files. That’s why I got to use Visual Studio and C# (and C++) for compiled DLL/SO dynamic linked library instead of interpreted Nyquist script. Because I practice in procedual programming and I believe that plugin should remember it’s own settings from last session. One thing is to use registers (or something similar to save system and application settings), the other is to use files to store settings. Both ways require compiled library, it’s something Nyquist can’t ever achieve. Of course I could do hybrid plugin and use Nyquist scripting to actually generate the data, but DLL and EXE for saving files and show settings window, which would use user input for generating Nyquist script call command… But then it just would be very long as I have to learn Nyquist first before using it.

Audacity supports various plug-in types. See: http://manual.audacityteam.org/man/customization.html#Plugins
See also the pages linked to from the above.
If you keep strictly to the format for any supported plug-in type, then it should work in Audacity.

This forum is primarily for “user support” rather than “developer support”.
There is some (limited) information for developers on the Audacity wiki: http://wiki.audacityteam.org/wiki/Category:For_Developers

In Audacity 2.1.3, Nyquist plug-ins do remember their last used settings. Their settings are saved in the “pluginsettings.cfg” file.

Nyquist plug-ins can read and write files, but there is currently no file browser widget, which is not very user friendly for selecting files / folders. See these plug-ins for examples:
http://manual.audacityteam.org/man/sample_data_export.html
http://manual.audacityteam.org/man/sample_data_import.html
Hopefully a file browser will be available in the future.

If you have questions specifically about Nyquist, please ask in this section of the forum: https://forum.audacityteam.org/viewforum.php?f=39

There is quite a lot of information available for developing Nyquist plug-ins as it is Audacity’s ‘native’ plug-in format. See: http://wiki.audacityteam.org/wiki/Nyquist_Plug-ins_Reference

For other plug-in formats you will need to search on-line for developer documentation. For example:
http://lv2plug.in/ns/
http://lv2plug.in/book/
http://ygrabit.steinberg.de/~ygrabit/public_html/vstgui/V2.2/doc/

Okay, thank you for your feedback :slight_smile: I’m going to study later :slight_smile:

What are you talking about there? I am saying the one DLL plugin we ship (SC4) is old. The author does not develop it further.

No I didn’t misundertand.

As I said, we almost exclusively ship only Nyquist plugins. If you don’t want to create Nyquist plugins, then the plugins you create are not only for Audacity but can also be used in other applications that support your chosen format.

Or do you want to propose a new built-in effect for Audacity? That will be LADSPA-based, programmed in C++.

Yes to search, you have to use an archive such as http://audacity.238276.n2.nabble.com/audacity-devel-f238278.html or audacity-devel Mailing List for Audacity.

There are some guidelines at Missing features - Audacity Support which are for the -users list but they apply equally to the -devel list.

I think it fair to say that we are more likely to ship a Nyquist plugin than in other formats. LADSPA is old and quite limited and has been effectively replaced by LV2, but our support for LV2 still has rough edges and omissions, especially on Windows. We would likely not directly ship VST, because suppliers of some of our third-party libraries oppose the patented format.

Yes, if you are subscribed.


Gale