@@ -5,10 +5,6 @@ | |||||
path = repos/Fundamental | path = repos/Fundamental | ||||
url = https://github.com/VCVRack/Fundamental.git | url = https://github.com/VCVRack/Fundamental.git | ||||
branch = master | branch = master | ||||
[submodule "repos/AS"] | |||||
path = repos/AS | |||||
url = https://github.com/AScustomWorks/AS | |||||
branch = master | |||||
[submodule "repos/AmalgamatedHarmonics"] | [submodule "repos/AmalgamatedHarmonics"] | ||||
path = repos/AmalgamatedHarmonics | path = repos/AmalgamatedHarmonics | ||||
url = https://github.com/jhoar/AmalgamatedHarmonics | url = https://github.com/jhoar/AmalgamatedHarmonics | ||||
@@ -125,10 +121,6 @@ | |||||
path = repos/SonusModular | path = repos/SonusModular | ||||
url = https://gitlab.com/sonusdept/sonusmodular.git | url = https://gitlab.com/sonusdept/sonusmodular.git | ||||
branch = master | branch = master | ||||
[submodule "repos/Bidoo"] | |||||
path = repos/Bidoo | |||||
url = https://github.com/sebastien-bouffier/Bidoo | |||||
branch = master | |||||
[submodule "repos/trowaSoft"] | [submodule "repos/trowaSoft"] | ||||
path = repos/trowaSoft | path = repos/trowaSoft | ||||
url = https://github.com/j4s0n-c/trowaSoft-VCV | url = https://github.com/j4s0n-c/trowaSoft-VCV | ||||
@@ -181,7 +173,7 @@ | |||||
path = repos/KoralfxVCV | path = repos/KoralfxVCV | ||||
url = https://github.com/koralfx/KoralfxVCV | url = https://github.com/koralfx/KoralfxVCV | ||||
branch = master | branch = master | ||||
[submodule "repos/mscHack"] | |||||
path = repos/mscHack | |||||
url = https://github.com/mschack/VCV-Rack-Plugins | |||||
[submodule "repos/NonLinearInstruments"] | |||||
path = repos/NonLinearInstruments | |||||
url = https://github.com/NonLinearInstruments/NLNRI_VCVRackPlugins | |||||
branch = master | branch = master |
@@ -5,23 +5,45 @@ The VCV community members are responsible for curating Rack plugins into a centr | |||||
All Rack plugins are welcome assuming they | All Rack plugins are welcome assuming they | ||||
- are not malware (i.e. harm your computer or your privacy) | - are not malware (i.e. harm your computer or your privacy) | ||||
- do not misuse intellectual property (legally or morally). | |||||
- do not misuse intellectual property (legally or morally) | |||||
## For plugin developers: Adding/updating your plugin | |||||
## For plugin developers: | |||||
To add your plugin(s) to the Plugin Manager, update its information, or inform us of new builds, create an [issue](https://github.com/VCVRack/community/issues) with the title equal to your plugin slug (or slugs, comma-separated). | |||||
If you already have an existing issue for your plugin, reuse it for additional requests. | |||||
Give us each plugin name, your desired author name, license information, relevant URLs, and anything else under the *Manifest* section below. | |||||
A Library Team member will handle your request. | |||||
Create exactly one thread in the [Issue Tracker](https://github.com/VCVRack/community/issues), with a title equal to your plugin slug (or multiple slugs, comma-separated, if you have more than one plugin). | |||||
This will be your permanent communication channel with VCV community members. | |||||
#### Adding/updating your plugin's information | |||||
Post a comment in your plugin's thread with the plugin name, license, all available URLs, and your email address if you want it to be public. | |||||
A Library team member will handle your request and post a comment when updated. | |||||
#### Adding/updating your plugin's build (for open-source plugins) | |||||
To inform us of an update to the plugin itself, make sure to increment the `VERSION` in your Makefile (e.g. from 0.6.12 to 0.6.13), and push a commit to your repository. | |||||
Post a comment in your plugin's thread with | |||||
- the new version | |||||
- the new commit hash (given by `git log` or `git rev-parse HEAD`) | |||||
- the branch of the commit. | |||||
A Review team member will handle your request and post a comment when updated. | |||||
#### Adding/updating your plugin's build (for closed-source plugins) | |||||
We are currently designing a procedure to add closed-source plugins to the Plugin Manager. | |||||
Stay tuned. | |||||
## Manifest files | ## Manifest files | ||||
The filename of each manifest should be `YourSlug.json`. | |||||
See [Fundamental.json](manifests/Fundamental.json) for an example. | |||||
The path of each manifest should be `manifests/YourSlug.json`. | |||||
See [manifest/Fundamental.json](manifests/Fundamental.json) for an example. | |||||
All properties are optional. URLs should not be redundant across different keys, meaning you must choose the most relevant key for a particular URL. | |||||
All properties are currently optional, but it is recommended to enter as much information as possible. URLs should not be redundant across different keys, e.g. you should not add a `pluginUrl` if it is the same URL as `sourceUrl`. | |||||
- **name**: Human-readable display name for your plugin. You can change this on a whim, unlike slugs. | - **name**: Human-readable display name for your plugin. You can change this on a whim, unlike slugs. | ||||
- **author**: Your name, company, alias, or GitHub username. | - **author**: Your name, company, alias, or GitHub username. | ||||
@@ -41,7 +63,7 @@ All properties are optional. URLs should not be redundant across different keys, | |||||
Clone all repos with `git submodule update --init --recursive` | Clone all repos with `git submodule update --init --recursive` | ||||
Then build all repos with `RACK_DIR=<path to Rack directory> make dist_all` | |||||
Then build all repos with `RACK_DIR=<path to Rack directory> make -j$(nproc) dist_all` | |||||
## Adding a repo | ## Adding a repo | ||||
@@ -7,5 +7,6 @@ | |||||
"sourceUrl": "https://github.com/AScustomWorks/AS", | "sourceUrl": "https://github.com/AScustomWorks/AS", | ||||
"donateUrl": "https://www.paypal.me/frederius/", | "donateUrl": "https://www.paypal.me/frederius/", | ||||
"latestVersion": "0.6.0", | "latestVersion": "0.6.0", | ||||
"repoVersion": "0.6.0.2", | |||||
"status": "available" | "status": "available" | ||||
} | |||||
} |
@@ -1,9 +1,11 @@ | |||||
{ | { | ||||
"name": "Amalgamated Harmonics", | "name": "Amalgamated Harmonics", | ||||
"author": "John Hoar", | "author": "John Hoar", | ||||
"license": "BSD 3-Clause", | |||||
"license": "BSD-3-Clause", | |||||
"manualUrl": "https://github.com/jhoar/AmalgamatedHarmonics/wiki", | "manualUrl": "https://github.com/jhoar/AmalgamatedHarmonics/wiki", | ||||
"sourceUrl": "https://github.com/jhoar/AmalgamatedHarmonics", | "sourceUrl": "https://github.com/jhoar/AmalgamatedHarmonics", | ||||
"latestVersion": "0.6.0", | |||||
"status": "available" | |||||
} | |||||
"latestVersion": "0.6.1", | |||||
"repoVersion": "0.6.1", | |||||
"status": "available", | |||||
"buildTimestamp": 1522750473 | |||||
} |
@@ -1,9 +1,11 @@ | |||||
{ | { | ||||
"name": "bid°°", | |||||
"name": "Bidoo", | |||||
"author": "Sébastien Bouffier", | "author": "Sébastien Bouffier", | ||||
"authorEmail": "sebastien.bouffier@gmail.com", | |||||
"license": "BSD-3-Clause", | "license": "BSD-3-Clause", | ||||
"manualUrl": "https://github.com/sebastien-bouffier/Bidoo/wiki", | "manualUrl": "https://github.com/sebastien-bouffier/Bidoo/wiki", | ||||
"sourceUrl": "https://github.com/sebastien-bouffier/Bidoo", | "sourceUrl": "https://github.com/sebastien-bouffier/Bidoo", | ||||
"donateUrl": "https://paypal.me/sebastienbouffier", | "donateUrl": "https://paypal.me/sebastienbouffier", | ||||
"repoVersion": "0.6.1", | |||||
"latestVersion": "0.6.0" | "latestVersion": "0.6.0" | ||||
} | } |
@@ -4,7 +4,8 @@ | |||||
"license": "BSD-3-Clause", | "license": "BSD-3-Clause", | ||||
"manualUrl": "https://github.com/bogaudio/BogaudioModules/blob/master/README.md", | "manualUrl": "https://github.com/bogaudio/BogaudioModules/blob/master/README.md", | ||||
"sourceUrl": "https://github.com/bogaudio/BogaudioModules", | "sourceUrl": "https://github.com/bogaudio/BogaudioModules", | ||||
"latestVersion": "0.6.4", | |||||
"latestVersion": "0.6.5", | |||||
"repoVersion": "0.6.5", | "repoVersion": "0.6.5", | ||||
"status": "available" | |||||
"status": "available", | |||||
"buildTimestamp": 1522781773 | |||||
} | } |
@@ -5,7 +5,8 @@ | |||||
"manualUrl": "https://github.com/almostEric/FrozenWasteland/blob/master/README.md", | "manualUrl": "https://github.com/almostEric/FrozenWasteland/blob/master/README.md", | ||||
"sourceUrl": "https://github.com/almostEric/FrozenWasteland", | "sourceUrl": "https://github.com/almostEric/FrozenWasteland", | ||||
"donateUrl": "https://paypal.me/FrozenWasteland", | "donateUrl": "https://paypal.me/FrozenWasteland", | ||||
"latestVersion": "0.6.0", | |||||
"latestVersion": "0.6.2", | |||||
"status": "available", | "status": "available", | ||||
"repoVersion": "0.6.1" | |||||
} | |||||
"repoVersion": "0.6.2", | |||||
"buildTimestamp": 1522751401 | |||||
} |
@@ -1,11 +1,12 @@ | |||||
{ | { | ||||
"name": "ImpromptuModular", | "name": "ImpromptuModular", | ||||
"author": "Marc Boulé", | |||||
"author": "Marc Boul\u00e9", | |||||
"license": "BSD-3-Clause", | "license": "BSD-3-Clause", | ||||
"authorEmail": "marc.boule@etsmtl.ca", | "authorEmail": "marc.boule@etsmtl.ca", | ||||
"manualUrl": "https://github.com/MarcBoule/ImpromptuModular/blob/master/README.md", | "manualUrl": "https://github.com/MarcBoule/ImpromptuModular/blob/master/README.md", | ||||
"sourceUrl": "https://github.com/MarcBoule/ImpromptuModular", | "sourceUrl": "https://github.com/MarcBoule/ImpromptuModular", | ||||
"latestVersion": "0.6.0", | |||||
"latestVersion": "0.6.1", | |||||
"repoVersion": "0.6.1", | "repoVersion": "0.6.1", | ||||
"status": "available" | |||||
} | |||||
"status": "available", | |||||
"buildTimestamp": 1522781789 | |||||
} |
@@ -1,7 +1,7 @@ | |||||
{ | { | ||||
"name": "JW-Modules", | "name": "JW-Modules", | ||||
"author": "Jeremy Wentworth", | "author": "Jeremy Wentworth", | ||||
"license": "BSD 3-Clause", | |||||
"license": "BSD-3-Clause", | |||||
"authorUrl": "http://jeremywentworth.com", | "authorUrl": "http://jeremywentworth.com", | ||||
"manualUrl": "https://github.com/jeremywen/JW-Modules/blob/master/README.md", | "manualUrl": "https://github.com/jeremywen/JW-Modules/blob/master/README.md", | ||||
"sourceUrl": "https://github.com/jeremywen/JW-Modules", | "sourceUrl": "https://github.com/jeremywen/JW-Modules", | ||||
@@ -1,8 +1,12 @@ | |||||
{ | { | ||||
"name": "Non Linear Instruments", | "name": "Non Linear Instruments", | ||||
"author": "Ignasi Álvarez Garriga", | |||||
"license": "BSD 3-clause", | |||||
"author": "Ignasi \u00c1lvarez Garriga", | |||||
"authorUrl": "https://www.ignasialvarez.cat", | |||||
"license": "BSD-3-Clause", | |||||
"manualUrl": "https://github.com/NonLinearInstruments/NLNRI_VCVRackPlugins/blob/master/README.md", | "manualUrl": "https://github.com/NonLinearInstruments/NLNRI_VCVRackPlugins/blob/master/README.md", | ||||
"sourceUrl": "https://github.com/NonLinearInstruments/NLNRI_VCVRackPlugins", | "sourceUrl": "https://github.com/NonLinearInstruments/NLNRI_VCVRackPlugins", | ||||
"latestVersion": "0.5.3" | |||||
} | |||||
"repoVersion": "0.6.0", | |||||
"latestVersion": "0.6.0", | |||||
"buildTimestamp": 1522751321, | |||||
"status": "available" | |||||
} |
@@ -1,11 +1,13 @@ | |||||
{ | { | ||||
"name": "Ohmer Modules", | "name": "Ohmer Modules", | ||||
"author": "Dominique Camus", | "author": "Dominique Camus", | ||||
"authorUrl": "https://github.com/DomiKamu", | |||||
"license": "BSD-3-Clause", | "license": "BSD-3-Clause", | ||||
"manualUrl": "https://github.com/DomiKamu/Ohmer-Modules/blob/WIP050/README.md", | |||||
"manualUrl": "https://github.com/DomiKamu/Ohmer-Modules/blob/master/README.md", | |||||
"sourceUrl": "https://github.com/DomiKamu/Ohmer-Modules", | "sourceUrl": "https://github.com/DomiKamu/Ohmer-Modules", | ||||
"donateUrl": "https://www.paypal.me/DominiqueCAMUS", | "donateUrl": "https://www.paypal.me/DominiqueCAMUS", | ||||
"latestVersion": "0.6.0", | |||||
"repoVersion": "0.6.1", | |||||
"status": "available" | |||||
} | |||||
"latestVersion": "0.6.2", | |||||
"repoVersion": "0.6.2", | |||||
"status": "available", | |||||
"buildTimestamp": 1522751360 | |||||
} |
@@ -1,7 +1,7 @@ | |||||
{ | { | ||||
"name": "SubmarineFree", | "name": "SubmarineFree", | ||||
"author": "David O'Rourke", | "author": "David O'Rourke", | ||||
"license": "BSD 3-Clause", | |||||
"license": "BSD-3-Clause", | |||||
"sourceUrl": "https://github.com/david-c14/SubmarineFree/", | "sourceUrl": "https://github.com/david-c14/SubmarineFree/", | ||||
"latestVersion": "0.6.0" | "latestVersion": "0.6.0" | ||||
} | } |
@@ -5,7 +5,8 @@ | |||||
"manualUrl": "https://github.com/ValleyAudio/ValleyRackFree/blob/master/README.md", | "manualUrl": "https://github.com/ValleyAudio/ValleyRackFree/blob/master/README.md", | ||||
"sourceUrl": "https://github.com/ValleyAudio/ValleyRackFree/", | "sourceUrl": "https://github.com/ValleyAudio/ValleyRackFree/", | ||||
"donateUrl": "https://www.paypal.me/valleyvcv", | "donateUrl": "https://www.paypal.me/valleyvcv", | ||||
"latestVersion": "0.6.0", | |||||
"repoVersion": "0.6.1", | |||||
"status": "available" | |||||
"latestVersion": "0.6.2", | |||||
"repoVersion": "0.6.2", | |||||
"status": "available", | |||||
"buildTimestamp": 1522752854 | |||||
} | } |
@@ -0,0 +1,6 @@ | |||||
{ | |||||
"name": "alto777 LFSR", | |||||
"author": "Robert A Moeser", | |||||
"license": "BSD-3-Clause", | |||||
"sourceUrl": "https://github.com/alto777/LFSR" | |||||
} |
@@ -1,10 +1,14 @@ | |||||
{ | { | ||||
"name": "cf", | "name": "cf", | ||||
"author": "clément foulc", | |||||
"author": "cl\u00e9ment foulc", | |||||
"authorEmail": "c.foulc@gmail.com", | "authorEmail": "c.foulc@gmail.com", | ||||
"license": "MIT", | |||||
"authorUrl": "https://www.facebook.com/clement.foulc", | "authorUrl": "https://www.facebook.com/clement.foulc", | ||||
"manualUrl": "https://github.com/cfoulc/cf/blob/master/README.md", | "manualUrl": "https://github.com/cfoulc/cf/blob/master/README.md", | ||||
"sourceUrl": "https://github.com/cfoulc/cf", | "sourceUrl": "https://github.com/cfoulc/cf", | ||||
"donateUrl": "https://www.paypal.me/cfoulc", | "donateUrl": "https://www.paypal.me/cfoulc", | ||||
"latestVersion": "0.5.16" | |||||
} | |||||
"repoVersion": "0.6.0", | |||||
"latestVersion": "0.6.0", | |||||
"buildTimestamp": 1522750550, | |||||
"status": "available" | |||||
} |
@@ -4,7 +4,8 @@ | |||||
"license": "BSD-3-Clause", | "license": "BSD-3-Clause", | ||||
"manualUrl": "https://drive.google.com/file/d/12kjCLSeyaaqXEvfS1c4HcnfrrbHeQ0ot/view", | "manualUrl": "https://drive.google.com/file/d/12kjCLSeyaaqXEvfS1c4HcnfrrbHeQ0ot/view", | ||||
"sourceUrl": "https://github.com/dllmusic/VCV_moDllz", | "sourceUrl": "https://github.com/dllmusic/VCV_moDllz", | ||||
"latestVersion": "0.6.0", | |||||
"latestVersion": "0.6.1", | |||||
"repoVersion": "0.6.1", | "repoVersion": "0.6.1", | ||||
"status": "available" | |||||
"status": "available", | |||||
"buildTimestamp": 1522750927 | |||||
} | } |
@@ -5,6 +5,8 @@ | |||||
"license": "MIT", | "license": "MIT", | ||||
"manualUrl": "https://github.com/squinkylabs/SquinkyVCV/blob/master/docs/booty-shifter.md", | "manualUrl": "https://github.com/squinkylabs/SquinkyVCV/blob/master/docs/booty-shifter.md", | ||||
"sourceUrl": "https://github.com/squinkylabs/SquinkyVCV", | "sourceUrl": "https://github.com/squinkylabs/SquinkyVCV", | ||||
"latestVersion": "0.6.0", | |||||
"repoVersion": "0.6.1" | |||||
} | |||||
"latestVersion": "0.6.1", | |||||
"repoVersion": "0.6.1", | |||||
"buildTimestamp": 1522750486, | |||||
"status": "available" | |||||
} |
@@ -1 +0,0 @@ | |||||
Subproject commit fde24b7fa209e0d24ada48f42972405087450d20 |
@@ -1 +1 @@ | |||||
Subproject commit b7e3111af18daac71f5376123a4502c9a50c541e | |||||
Subproject commit 9c46438c36069783063e162874509be7ff5101a7 |
@@ -1 +0,0 @@ | |||||
Subproject commit 8849ebc2ac199d2e62c1c28a1e9b7c6ccff01e11 |
@@ -1 +1 @@ | |||||
Subproject commit 049f2b01ae0de7ec2081b381a4f8d1be75760ae3 | |||||
Subproject commit da73489d1f7aa3dba77925777d485a3e66f8aec1 |
@@ -0,0 +1 @@ | |||||
Subproject commit 551e5f84b49849f2b472214992ee8a406791ee24 |
@@ -1 +1 @@ | |||||
Subproject commit 38842f95e4cd8fe5bafa29291888bd005def23d7 | |||||
Subproject commit 288c90847d4c61c8d09f633db6d3b0b243fa1a8c |
@@ -1 +1 @@ | |||||
Subproject commit 41432baf7607a7a356d503a8dc92b383dc6e2e1e | |||||
Subproject commit e92ce4c007a3e54b6d29ec8733e98f79d0c5165e |
@@ -1 +1 @@ | |||||
Subproject commit 72eecd78a85df9cff86a07997dd18a35ecf50cad | |||||
Subproject commit 81fac9faf08c9789b766d39d78cd988c3b8b1cde |
@@ -1 +1 @@ | |||||
Subproject commit 0bf58cdf138c55ce74b009e852d6ce5ea79b8087 | |||||
Subproject commit 10c8b362a8f207e987fa12969c1acd02cccc181b |
@@ -1 +0,0 @@ | |||||
Subproject commit 2057b6e92deb128bf87c1c71cae8d98cc7625184 |
@@ -0,0 +1,70 @@ | |||||
import glob | |||||
import json | |||||
import time | |||||
import os | |||||
def build_mac(slug): | |||||
env = f'CC=x86_64-apple-darwin15-clang CXX=x86_64-apple-darwin15-clang++-libc++ STRIP=x86_64-apple-darwin15-strip RACK_DIR=../../Rack-SDK' | |||||
make = f'{env} make -j$(nproc) -C repos/{slug}' | |||||
if os.system(f'{make} clean'): | |||||
raise Exception(f"Could not clean Mac build of {slug}") | |||||
if os.system(f'{make} dist'): | |||||
raise Exception(f"Could not make Mac build of {slug}") | |||||
def build_win(slug): | |||||
env = f'CC=x86_64-w64-mingw32-gcc CXX=x86_64-w64-mingw32-g++ STRIP=x86_64-w64-mingw32-strip RACK_DIR=../../Rack-SDK' | |||||
make = f'{env} make -j$(nproc) -C repos/{slug}' | |||||
if os.system(f'{make} clean'): | |||||
raise Exception(f"Could not clean Windows build of {slug}") | |||||
if os.system(f'{make} dist'): | |||||
raise Exception(f"Could not make Windows build of {slug}") | |||||
def build_lin(slug): | |||||
env = f'-e RACK_DIR=../../Rack-SDK' | |||||
make = f'make -j$(nproc) -C repos/{slug}' | |||||
if os.system(f'docker run --rm -v $(pwd):/mnt -u vortico {env} a0b9c87ec456 {make} clean'): | |||||
raise Exception(f"Could not clean Linux build of {slug}") | |||||
if os.system(f'docker run --rm -v $(pwd):/mnt -u vortico {env} a0b9c87ec456 {make} dist'): | |||||
raise Exception(f"Could not make Linux build of {slug}") | |||||
def move_package(slug): | |||||
os.system('mkdir -p downloads') | |||||
if os.system(f'mv repos/{slug}/dist/{slug}-*.zip downloads/'): | |||||
raise Exception(f"No package found for {slug}") | |||||
for filename in glob.glob("manifests/*"): | |||||
slug = os.path.splitext(os.path.basename(filename))[0] | |||||
with open(filename, "r") as f: | |||||
manifest = json.load(f) | |||||
# Skip if update is not needed | |||||
if 'repoVersion' not in manifest: | |||||
continue | |||||
if 'latestVersion' in manifest and manifest['latestVersion'] == manifest['repoVersion']: | |||||
continue | |||||
if not os.path.exists('repos/' + slug): | |||||
continue | |||||
try: | |||||
build_mac(slug) | |||||
move_package(slug) | |||||
build_win(slug) | |||||
move_package(slug) | |||||
build_lin(slug) | |||||
move_package(slug) | |||||
except Exception as e: | |||||
print(e) | |||||
break | |||||
# Update build information | |||||
manifest['latestVersion'] = manifest['repoVersion'] | |||||
manifest['buildTimestamp'] = round(time.time()) | |||||
manifest['status'] = "available" | |||||
with open(filename, "w") as f: | |||||
json.dump(manifest, f, indent=" ") |