GithubHelp home page GithubHelp logo

dropsnorz / owlplug Goto Github PK

View Code? Open in Web Editor NEW
254.0 8.0 11.0 4.35 MB

Audio plugin manager. Small tool to manage VST / AU / LV2 plugins on Windows, MacOS and Linux.

Home Page: https://owlplug.com

License: GNU General Public License v3.0

Java 95.04% CSS 1.50% Batchfile 0.09% C 0.94% C++ 1.48% Objective-C++ 0.29% Shell 0.60% ANTLR 0.06%
audio-plugin manager vst audio-unit java javafx juce lv2

owlplug's Introduction

OwlPlug is an audio plugin manager. It provides a complete view of your plugin setup and simple tools to manage it.


Owlplug Main Codacy Badge Last Pre release Discord Donate

Overview

owlplug-demo

About OwlPlug

๐ŸŒ OwlPlug Website | ๐Ÿ“Œ Roadmap | ๐Ÿ“„ Documentation

Why I have created OwlPlug ?

OwlPlug came from my hate of installing and managing audio plugins. The process is very annoying. I always wanted something simple that looks like dependency managers or online content store. I've started this just for fun... But because it was so simple to install plugins, I've discovered dozens of cool plugins just by using my own tool. So I realized this is not just a different way to install plugins, it's a real opportunity to share and discover awesome free and open sourced plugins developed by the community.

All kinds of feedbacks are greatly welcomed.

Installation

Direct download (latest version)

Requirements: Windows 7 (64 bit) or later, macOS High Sierra or later.

  1. Browse binaries from the release section
  2. Download and run the OwlPlug installer for your platform
    • .msi installer on Windows
    • .dmg file on macOS
    • .deb file on Linux
  3. Run OwlPlug application

โš ๏ธ Mac users, depending on your OS version, you may face an error mentioning that OwlPlug is damaged. You can fix this problem using a single command described on the wiki page.

Package managers

Windows

winget install owlplug

How to help

Download and Install OwlPlug, configure it, download plugins, etc... Report any kind of problems by opening an issue on this repository. Feel free to use the discussions tab to ask questions, report suggestions and feedback about features and potential improvements.

Features

Plugins discovery

OwlPlug can discover VST2, VST3 and AU Plugins. OwlPlug is compatible with all previously installed plugins as long as they are all in a specific root directory, for example C:/AudioPlugins. Additional directories can be configured if your plugin setup is fragmented on the filesystem.

After downloading Owlplug, you can still organize (add, move, delete, ...) your plugins with a file explorer or with your favorite DAW without breaking anything.

Links creation

A Link allows you to create and manage symlinks across your filesystem and plugin directories. With Links, you can access directories anywhere on your filesystem (Hard drive, USB keys, custom directories...) through a single root plugin directory. For example, you can configure a link named usb-drive in C:/AudioPlugins to target your usb hard drive D:/myPlugins. All plugins in D:/myPlugins will be accessible using C:/AudioPlugins/usb-drive. This feature may be useful for DAW that scans plugins from predefined or limited number directories. On some Windows version, symlinks creation may require admin privileges.

DAW Projects analysis

OwlPlug can scan DAW projects to extract referenced plugins. Plugins references in project files are compared to plugins installed in configured directories. This way, users can quickly identify missing plugins required to open projects.

The list of compatible DAWs is available in the documentation

Explore and download Plugins

OwlPlug can be connected to several remote sources to download plugins. A Remote Source is a collection of downloadable plugins that can be installed locally. OwlPlug can be configured to use any compatible third-party store in Explore Tab > Sources > Add a new source....

Here are some recommended compatible sources.

OwlPlug Registry โญ

OwlPlug official plugin registry for Free or Open Source plugins

  • kind: registry
  • url: https://registry.owlplug.com/registry.min.json

StudioRack Registry โญ

Studiorack registry plugins for OwlPlug.

  • kind: registry
  • url: https://owlplug.github.io/owlplug-studiorack-registry/registry.min.json

Discover more plugin sources in this wiki page.

How to distribute my plugins on OwlPlug ?

  • (Recommended) Distribute your plugins using on the official OwlPlug Registry. You can find more information on how to proceed in the registry github repository.

  • Setup and host a custom remote source to distribute multiple plugins, following the registry specification.

  • (Deprecated) Setup and host a custom remote source to distribute multiple plugins, following the store specification. The store specification is not actively maintained, you should use the registry spec instead.

Development

Stack

  • Spring boot
  • JavaFx
  • Hibernate & H2
  • Maven
  • Juce

Development Setup

  1. Clone or download project sources
  2. Run following commands
# Install dependencies
mvn clean install
# Move to owlplug client folder
cd owlplug-client
# (Optional) Create the runnable JAR file in /target/ folder
mvn clean install spring-boot:repackage
# Run owlplug
mvn spring-boot:run

License

FOSSA Status

owlplug's People

Contributors

dependabot[bot] avatar dropsnorz avatar kmturley avatar the-simian avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

owlplug's Issues

Suggestion: Allow installing all VSTs of an author

When installing VSTs from Vst4free, I often want to install ALL VTSs from an author.
Please add these features:

  1. Viewing an author's page in the UI
  2. Placing a link on each VST to the author's page
  3. On each author page, show a button to install all their VSTs

If it's too much work to introduce author pages, or if you don't want to make this software too specific to Vst4Free, please add this button ("Install all VSTs by this author") to each individual Vst instead.

Support for multiple directories?

Most of my VST plugins are under a single directory, but some of them have installers which don't allow reconfiguring the directory or are in other places for various reasons.

Is there some way I can specify multiple VST2 and VST3 directories to scan?

Audio Unit (AU) support

As OwlPlug OSX version is more and more stable, Audio Unit support should be considered. It's a widely-used format in music industry.

AU support steps:

  • Audio Units configuration in Option panel: enabled, auDirectory
  • Collect AudioUnits during plugin discovery
  • Custom icon for Audio Units
  • Add AU variants in OwlPlug Central.

It doesn't install GGrain

Thanks for this VST manager. Something like this is very useful.
Unfortunately, I ran into an issue:

I tried to install GGrain 32 bit, it said "extracting" forever, it created the folder owl\GGrain but it stayed empty :/

Any idea how to make it work? :)

Get Dunne stores do not work

This might not be the place to open this, but I wanted to at least let you know, since I used the stores in the readme

I usually get one of two errors

  1. zip END header not found
  2. can't write file on disk

image
image
image

Allow Plugins, when they are installed to be grouped by their Creator

This is a PR to address item 1 of this comment here: #53 (comment)

I think there's at least some utility in configuring how the plugins are nested and folded. Specifically, it is useful to group plugins by a certain manufacturer in a folder. I don't think this would put additional labor on the manufacturer.

Imagine this sort of layout of your final plugin folder:

๐Ÿ—€VST
    ๐Ÿ—€discoDSP/
        ๐Ÿ—€OB-Xd/
            ๐Ÿ—Ž thing.dll
            ๐Ÿ—€ presets/
                 ๐Ÿ—Ž one.patch
                 ๐Ÿ—Ž two.patch
             ๐Ÿ—Ž manual.pdf 
    ๐Ÿ—€Socalabs/
        ๐Ÿ—€SN76489
            ๐Ÿ—Ž SN76489_32b.dll
            ๐Ÿ—Ž SN76489_64b.dll
        ๐Ÿ—€SocalabsSampleDelay
            ๐Ÿ—Ž SampleDelay.dll
            ๐Ÿ—Ž SampleDelay_32b.dll

Since you already possess the name of the creator, this is just a matter of your file writer, and possibly something you could toggle if you preferred a flat look. Consider that in some editors like Ableton, they more-or-less just straight up preserve the folder shape, so this is a way to really help with organization, a core goal of the program.

This would also make it much more like how many manufacturers actually already organize their plugins and how they use their base installers

In order for this to work correctly, this needs to be

  • clearly communicate in the UI what the output will be like, as the optional subdirectory does.
  • work correctly with the base directory in the options
  • toggleable. So you can opt-in or opt-out

Suggestion: Store installed VSTs in user account, to sync multiple computers

VCV Rack does this, it's a nice feature:
It stores each user's installed plugins in a user account, and syncs all computers of this user that have VCV Rack installed.
They are using a server to store user accounts, but it could be done via dropbox/gdrive, too.
(A more general solution would allow having multiple installation profiles per user, in case they don't want every computer to sync to the same set of installed VSTs. AFAIK VCV will support this in the future..)

Use separate process or thread for plugin scanning?

I have a pretty large plugin library, and have experienced at least 10 crashes so far trying to complete the initial scan. I realize this is hard to avoid because any plugin issues can crash the host. However, many IDEs separate the process which hosts the plugins to a separate thread so that if it crashes it can be restarted without affecting the rest of the host application. Would something like that be possible in OwlPlug's case?

MSI installer keeps outdated jars after an update

On Windows, when the MSI installer is used to update OwlPlug, old jars are not replaced because the owlplug version number is in the filename. There is no side effects, but outdated files are retained on the filesystem.

We should update maven build to produce a unique jar filename or create a task to rename the jar during the MSI packaging.

Download fails for some plugins

Hi, I'm getting the following error message when downloading some plugins (for example Sitala via VST4Free):

An error occured during plugin install: zip END header not found.

Plugin bundles (.vst3 directories) can't be removed from UI

Version: 0.8.0

PluginRemoveTask uses File.delete() which work for directories only if they are emtpy.

Possible solutions:

  • Merge tasks PluginRemoveTask and DirectoryRemoveTask
  • Check file type (directory, file or symlink) on the PluginRemoveTask

Refresh path placeholder on CreateLinkView

When plugin path changes on OptionView, path suggestions list is not up to date on CreateLinkView.
Suggestion list should also be displayed when the text field is focused.

Suggestion: Allow filtering to only 32 or 64 bit

I'm still on 32-bit, because most free VSTs are 32-bit only.

It would be great if I could set a global filter to only show results in 32 or 64 bit (two checkboxes), and to always only install the versions that match this global filter.

Fix owlpack type detection for bundled archives

OwlPlug have to handle owlpack structures that directly contains environment folders.
The following structure is detected as DIRECT but should be ENV.

owlpack.zip
โ”œโ”€โ”€ win (folder)
โ””โ”€โ”€ osx (folder)

Improve error messages when install task fails

As pointed by #19, error messages must be more explicit if a downloaded product can't be installed (wrong filetype, etc...)
Maybe, filetype can be checked before the download step to directly reject installation.

OwlPlug crash | Trend Micro antivirus software detects OwlPlug processes as malware

You will need to clear your application with antivirus vendors such as Trend Micro or users will encounter numerous issues like this.

Steps to reproduce:

  1. Have a Trend Micro antivirus product installed.
  2. Have Accusonus VST2 plugins installed.
  3. Run OwlPlug.
  4. Select VST2 location.
  5. OwlPlug starts scanning plugins.
  6. When OwlPlug scans Accusonus plugins (such as Beatformer or ERA-D), the system considers OwlPlug to be modifying the lock.mdb and data.mdb files.
  7. Trend Micro halts OwlPlug, and OwlPlug crashes.
  8. The below warning messages are shown.

image

image

Crash on Scanning SSL Plugins

OwlPlug crashes whilst scanning - when it crashes the last plugin I see it scaning is by SSL, it was too fast for me to read, but I only have Drum Strip and the Bus Compressor from them. macOS Catalina 10.15.5.

Error installing plugin in system folders on windows

On Windows, OwlPlug must be started with admin rights to install plugins in Program / System folders.

Not an issue with OwlPlug but error messages should be more explicit:

Invalid installation directory
Error moving files

Owl Plug App Feedback

I love the idea of this application and I want to help make it better, so I've compiled some more things that I think will greatly improve the application:
If this is the wrong place to post this let me know
First, if you didn't see, I posted 5 things I think that are very important, and that post is here: #51 (comment)

Here's the feedback in no particular order (and recently edited to include a bit more detail)

  • Mark which Items have already been installed in the UI. The waveform vs 'effect' icon is really nice, maybe on the other side of the title, put like a check or change the background of the title. Something obvious.

  • The 'mortar' effect is visually interesting and fun, but it's actually really difficult to navigate in most situations. A standard listview or card-view would actually be better. You can certainly do all of the above, and I am not underestimating the visual interest of this being a dashboard/lander layout. The ability to toggle views would be most practical. Think about the NI installer or Steam. The list can just be tabular, with more information and another view can be cards that scroll side-to-side in groups by topic. Think about like how Netflix has 'cards' for 'horror' why not 'cards' for "subtractive" or "chiptunes". As for a tabular view, just go for a canonical high-utility table with sortable columns and a clean pager. I feel like working on this matters a lot. You have the data and the ability to group things effectively, and the presentation of it could take this app to the next level.

  • You need to allow the end-user to filter by things already installed. This is very important.

  • Make the 'user', 'type', and 'tags' interactive on the right-hand side. If you click one it adds it to the multi-search input. So if I click 'Socalabs' it is as if I had typed it in the search.

  • A better pager control than "load more". Something with numbers, and the ability to move in a canonical way. I feel like the UI is designed more like a 'feed' than a thing you can truly search, sort, and navigate. In my own work most user feedback in any situation excluding a 'scrolling feed' has been considered undesirable after earnest A/B testing. In a feed, you want to auto-load like twitter (and also scroll virtually so there's not a performance penalty for long sessions). For nearly any other situation with canonical records management (which I feel like this certainly fits that from an engineering perspective), a traditional pager is very much desired. There is a plentitude of these on the internet, in various js frameworks but here's a common enough example: https://material-ui.com/components/data-grid/
    Edit: I can see you are using JFoenix: http://www.jfoenix.com/documentation.html#TreeTableView would be the right tool I believe

  • I still am not clear on what 'Native Discovery' really does, can you put a tooltip or something that clearly expresses what that is? It sounds like you're somehow introspecting the VSTs for more tag information, because it is an option for already installed items, but I'm not sure how that could work. It was difficult enough for me to solve the problem of what arch platform a plugin was (32 v 64 bit). I could not figure out a way to get the manufacturer (which I really would like to manage my stuff). What's really happening here?

  • Can you add descriptions in the Options that explain the difference between the cache and the user data? I suspect that one is just the plugin manifest and another is your credentials for G+.. is that it? I think you need some copy here to really explain which does what. That or have a way to itemize the cached data and the user can pick exactly what, not unlike how browsers or windows does it.

  • Can you add more about what the G+ Authentication truly does? You could just add some copy in the G+ account popup that describes what the app will do, and why it needs the permissions it is asking for, which are pretty elevated.

File not found, and unexpected Plugin install locations from Owl Central

Hello, love the idea behind this project, its really interesting!
When trying to install any plugin from the Owl Central repo I get a v 0.14.1
File not found error:
image

Here are the full list of issues I had testing the Owl Central Plugins

  1. Tunefish puts both he VST3 and 2 VSTs in the same folder unexpectedly (can't select just one)
  2. Wobbleizer installs both 32 and 64 bit in the same folder unexpectedly (can't select just one)
  3. synister install both 32 and 64 bit in the same folder unexpectedly (can't select just one)
  4. Dexed cannot find File
  5. Helm Cannot find File

OwlPlug could not be started / Failed to launch JVM

I installed on Windows 10 Pro and ran OwlPlug received the following popups:

owlplug error1

owlplug error2

Here are the details of Java that's installed on my system:

java

java2

I can't seem to find any logging in the C:\Program Files\OwlPlug directory - how do I troubleshoot this issue? Java is up to date on my system.

Synister on OwlCentral The creator should not be a url

Possible attribution could be -
"The Quality and Usability Lab of TU-Berlin" or when I have used the installer it was installed as
"QULab"
"QUL of TU-Berlin" seems succinct and not-bad

the attribution at the bottom is QUL
image

If it helps also the Teacher was https://github.com/mahal-tu and it was made by his students there so possibly also attribute Marc Halbrรผgge

Linux version?

Could a Linux version possibly be a thing in the future?

First-launch UI is outdated

The first time you are using OwlPlug / WelcomeView is outdated.
We can now configure different directories for each supported plugin format.

Feature Request: Enable/Disable plugin

Would be nice feature to be able to enable or disable a plugin. Not sure how this could be done, maybe amending the extension to something like ".vst-disabled" so the simply DAW skips them over.

Memory leaks in StoreView MasonryPane

OwlPlug memory footprint increase when store products are displayed.
Its a known issue with JFXMasonryPane which keeps removed childs references.

JFoenix dependency must be updated with the actual fix.

Download Projucer from trustworthy source

In your script Projucer is downloaded from an external source (https://projucer.rabien.com):

PROJUCER_URL=$(curl -s -S "https://projucer.rabien.com/get_projucer.php?hash=$HASH&os=$OS")

It's seems possible to download Projucer from the Github JUCE library releases directly:

curl -L https://github.com/juce-framework/JUCE/releases/download/6.0.8/juce-6.0.8-osx.zip --output jucesdk.zip
unzip jucesdk.zip
./JUCE/Projucer --resave example.jucer

https://github.com/maxmarsc/raciderry/blob/2372764e970ef62a3df6b703cf59c53fb37d0cac/.github/workflows/unittests.yml#L21

This reduces the dependency on an external source and may even provide performance benefits!

Disable native discovery for specific plugins

Native plugin discovery can be disabled globally in Options.

While #27 is not implemented and allows scan error recovery, it might be interesting to disable native discovery for specific plugins only.

Sandboxing native plugin scans to avoid app crashes

Sandboxing by subprocessing native plugin scans can solve lots of frustrating crashes. For now, if something wrong happen on the native library callled by JNI, the entire OwlPlug JVM crashes.

Here is a naive way to handle this:

  • [JAVA Owlplug-core] Start analysis for a new plugin
  • [JAVA Owlplug-core] Create a new process
    • How about cross-platform?
    • Antivirus behavior?
  • [NATIVE Juce] Load plugin metadata from native code and return it to stdout
  • [JAVA Owlplug-core] Parse the stdout and scan the next plugin

Some points to take into account:
Process communication best practices? Async or Sync pool management, performance, alternatives, etc...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.