How to discover new JUCE-based applications and plugins

JUCE is a popular framework for developing audio programs and plugins. Since it is dual-licensed under either a proprietary license or the GPLv3, all authors who don't want to pay licensing fees to the owners of JUCE must comply with the copyleft requirements of the GPLv3. For this reasons, there are a lot of FLOSS JUCE-based plugins around, even ones that are sold commercially (it's always best to buy a copy or donate, if possible, even if they can be found in GeekosDAW!).

Github is a very popular hosting platform for FLOSS projects. It surely does not contain 100% of FLOSS programs but it does contain a high percentage of them, including mirrors from other platforms. It also has an API, which allows easy querying. For this reason, we can use it to discover new JUCE-based applications and plugins.

To do it, you need 2 things:

  • A Github account
  • The ripgrep package

For plugins

Here is how:

  • Generate a one-time token from Github
  • Create an empty directory and open a terminal inside of it
  • Run

curl -i -u 'USERNAME:TOKEN' -H 'Accept: application/vnd.github.v3.text-match+json' 'https://api.github.com/search/code?q=juce_add_plugin&per_page=100&page=1&sort=indexed' > 1.json

Replace USERNAME with your Github username and TOKEN with your one-time token generated earlier.

1.json will also contain the number of items in the total_count field. Divide this number by 100 and you will find how many times you will need to run the curl command, each time incrementing the number at the end to N (so page=N > N.json). You can automate this via a script but remember to make the script sleep for some minutes between requests, as Github tends to rate-limit API requests.

  • Run

rg full_name | awk '{print $3}' | tr -d '“,' | sort -u | ruby -ne 'puts “https://github.com/#{$_}”' > juce.txt

  • You will find the list in ``juce.txt``.

For standalone programs

Simply replace juce_add_plugin with juce_add_gui_app.

Tips

You only need to download the full list once. Since the curl command automatically downloads the latest indexed files, if you download just the first result (1.json) regularly you will probably find the latest programs without having to download the other pages.

This process actually has nothing to do with JUCE itself except for the two search keywords. It can be adapted to any kind of application.