Browse Source

Update builds

v1
Andrew Belt 6 years ago
parent
commit
41f5d99a8a
11 changed files with 489 additions and 496 deletions
  1. +0
    -70
      manifests/Befaco.json
  2. +123
    -0
      manifests/CharredDesert.json
  3. +87
    -0
      manifests/DrumKit.json
  4. +0
    -137
      manifests/FrozenWasteland.json
  5. +0
    -173
      manifests/Fundamental.json
  6. +128
    -0
      manifests/SynthKit.json
  7. +0
    -21
      manifests/VCV-Recorder.json
  8. +0
    -94
      manifests/rcm.json
  9. +0
    -1
      repos/FrankBussFormula
  10. +74
    -0
      scripts/build.py
  11. +77
    -0
      scripts/update_builds.py

+ 0
- 70
manifests/Befaco.json View File

@@ -1,70 +0,0 @@
{
"slug": "Befaco",
"name": "Befaco",
"author": "Befaco",
"license": "BSD-3-Clause",
"authorEmail": "contact@vcvrack.com",
"pluginUrl": "https://vcvrack.com/Befaco.html",
"authorUrl": "https://vcvrack.com/",
"sourceUrl": "https://github.com/VCVRack/Befaco",
"version": "1.0.0",
"modules": [
{
"slug": "EvenVCO",
"name": "EvenVCO",
"tags": [
"VCO"
]
},
{
"slug": "Rampage",
"name": "Rampage",
"tags": [
"Function Generator",
"Logic",
"Slew Limiter",
"Envelope Follower",
"Dual"
]
},
{
"slug": "ABC",
"name": "A*B+C",
"tags": [
"Ring Modulator",
"Attenuator",
"Dual"
]
},
{
"slug": "SpringReverb",
"name": "Spring Reverb",
"tags": [
"Reverb"
]
},
{
"slug": "Mixer",
"name": "Mixer",
"tags": [
"Mixer"
]
},
{
"slug": "SlewLimiter",
"name": "Slew Limiter",
"tags": [
"Slew Limiter",
"Envelope Follower"
]
},
{
"slug": "DualAtenuverter",
"name": "Dual Atenuverter",
"tags": [
"Attenuator",
"Dual"
]
}
]
}

+ 123
- 0
manifests/CharredDesert.json View File

@@ -0,0 +1,123 @@
{
"slug": "CharredDesert",
"name": "CharredDesert",
"version": "1.0.0",
"license": "CC0-1.0",
"author": "Jerry Sievert",
"authorEmail": "rack@legitimatesounding.com",
"authorUrl": "https://legitimatesounding.com/",
"pluginUrl": "https://github.com/JerrySievert/CharredDesert",
"manualUrl": "https://github.com/JerrySievert/CharredDesert/blob/master/docs/README.md",
"sourceUrl": "https://github.com/JerrySievert/CharredDesert",
"donateUrl": "https://paypal.me/JerrySievert",
"modules": [
{
"slug": "DTMF",
"name": "DTMF",
"description": "DTMF Tone Generator",
"tags": [
"Envelope generator"
]
},
{
"slug": "Noise",
"name": "Noise",
"description": "White and Pink Noise Generator",
"tags": [
"Envelope generator",
"Noise"
]
},
{
"slug": "CVSequencer",
"name": "CV Sequencer",
"description": "CV Sequencer",
"tags": [
"Logic",
"Sequencer"
]
},
{
"slug": "Not",
"name": "Not",
"description": "CV and Voltage Inverter",
"tags": [
"Logic"
]
},
{
"slug": "Pan",
"name": "Pan",
"description": "Stereo Panner",
"tags": [
"Panning"
]
},
{
"slug": "Shift",
"name": "Shift",
"description": "CV and Waveform Shifter/Attenuator",
"tags": [
"Logic",
"Attenuator"
]
},
{
"slug": "Oscar2",
"name": "Oscar^2",
"description": "Oscillator Madness",
"tags": [
"VCO",
"Waveshaper"
]
},
{
"slug": "Eq",
"name": "Eq",
"description": "CV Controlled Equalizer",
"tags": [
"Equalizer"
]
},
{
"slug": "Carbon",
"name": "Carbon",
"description": "Moog-like Filter",
"tags": [
"VCF"
]
},
{
"slug": "Mixer",
"name": "Mixer",
"description": "8 Channel Stereo Mixer",
"tags": [
"Mixer"
]
},
{
"slug": "MixerCV",
"name": "Mixer CV",
"description": "CV Controlled 8 Channel Mixer",
"tags": [
"Mixer"
]
},
{
"slug": "CV",
"name": "CV",
"description": "Simple CV Manipulator",
"tags": [
"Logic"
]
},
{
"slug": "M",
"name": "M",
"description": "Mini 2 Channel Mixer",
"tags": [
"Mixer"
]
}
]
}

+ 87
- 0
manifests/DrumKit.json View File

@@ -0,0 +1,87 @@
{
"slug": "DrumKit",
"name": "DrumKit",
"version": "1.0.0",
"license": "CC0-1.0",
"author": "Jerry Sievert",
"authorEmail": "rack@legitimatesounding.com",
"authorUrl": "https://legitimatesounding.com/",
"pluginUrl": "https://github.com/JerrySievert/DrumKit",
"manualUrl": "https://github.com/JerrySievert/DrumKit/blob/master/README.md",
"sourceUrl": "https://github.com/JerrySievert/DrumKit",
"donateUrl": "https://paypal.me/JerrySievert",
"modules": [
{
"slug": "BassDrum9",
"name": "Bass Drum 9",
"description": "Bass Drum Kit based on 909",
"tags": [
"Drum"
]
},
{
"slug": "ClosedHiHat",
"name": "Closed HiHat",
"description": "HiHat Module",
"tags": [
"DRUM"
]
},
{
"slug": "CR78",
"name": "CR78",
"description": "CompuRhythm 78 Kit",
"tags": [
"DRUM"
]
},
{
"slug": "CR78mk2",
"name": "CR78 mk2",
"description": "CompuRhythm 78 Kit, mk 2",
"tags": [
"Drum"
]
},
{
"slug": "DMX",
"name": "DMX",
"description": "DMX Drum Kit",
"tags": [
"Drum"
]
},
{
"slug": "DMXmk2",
"name": "DMX mk2",
"description": "DMX Drum Kit mk 2",
"tags": [
"Drum"
]
},
{
"slug": "OpenHiHat",
"name": "Open HiHat",
"description": "HiHat Module",
"tags": [
"Drum"
]
},
{
"slug": "SyntheticBassDrum",
"name": "Synthetic Bass Drum",
"description": "Synthetic Bass Drum",
"tags": [
"Drum"
]
},
{
"slug": "SnareDrumN",
"name": "Snare Drum N",
"description": "Snare Drum Kit based on Novation Drumstation",
"tags": [
"Drum"
]
}
]
}

+ 0
- 137
manifests/FrozenWasteland.json View File

@@ -1,137 +0,0 @@
{
"slug": "FrozenWasteland",
"name": "Frozen Wasteland",
"version": "1.0.0",
"author": "Eric Sterling",
"license": "CC0-1.0",
"authorEmail": "e.sterling@comcast.net",
"pluginUrl": "https://github.com/almostEric/FrozenWasteland/blob/master/README.md",
"authorUrl": "https://vcvrack.com/",
"manualUrl": "https://github.com/almostEric/FrozenWasteland/blob/master/README.md",
"sourceUrl": "https://github.com/almostEric/FrozenWasteland",
"donateUrl": "https://paypal.me/FrozenWasteland",
"modules": [
{
"slug": "BPMLFO",
"name": "BPM LFO",
"tags": [
"LFO"
]
},
{
"slug": "BPMLFO2",
"name": "BPM LFO 2",
"tags": [
"LFO"
]
},
{
"slug": "CDCSeriouslySlowLFO",
"name": "CDC Seriously Slow LFO",
"tags": [
"LFO"
]
},
{
"slug": "DamianLillard",
"name": "Damian Lillard",
"tags": [
"VCA"
]
},
{
"slug": "EverlastingGlottalStopper",
"name": "Everlasting Glottal Stopper",
"tags": [
"VCO"
]
},
{
"slug": "HairPick",
"name": "Hair Pick",
"tags": [
"VCF"
]
},
{
"slug": "LissajousLFO",
"name": "Lissajous LFO",
"tags": [
"LFO"
]
},
{
"slug": "MrBlueSky",
"name": "Mr. Blue Sky",
"tags": [
"Vocoder"
]
},
{
"slug": "PhasedLockedLoop",
"name": "Phased Locked Loop",
"tags": [
"VCO"
]
},
{
"slug": "PortlandWeather",
"name": "Portland Weather",
"tags": [
"Delay",
"Granular",
"VCF"
]
},
{
"slug": "QuadAlgorithmicRhythm",
"name": "Quad Algorithmic Rhythm Generator",
"tags": [
"Sequencer"
]
},
{
"slug": "QuadRhythmExpander",
"name": "Quad Rhythm Expander",
"tags": [
"Sequencer",
"Expander"
]
},
{
"slug": "QuantussyCell",
"name": "Quantussy Cell",
"tags": [
"Logic"
]
},
{
"slug": "RouletteLFO",
"name": "Roulette LFO",
"tags": [
"LFO"
]
},
{
"slug": "SeriouslySlowLFO",
"name": "Seriously Slow LFO",
"tags": [
"LFO"
]
},
{
"slug": "TheOneRingModulator",
"name": "The One Ring Modulator",
"tags": [
"Ring Modulator"
]
},
{
"slug": "VoxInhumana",
"name": "Vox Inhumana",
"tags": [
"VCF"
]
}
]
}

+ 0
- 173
manifests/Fundamental.json View File

@@ -1,173 +0,0 @@
{
"slug": "Fundamental",
"name": "Fundamental",
"author": "VCV",
"license": "BSD-3-Clause",
"authorEmail": "contact@vcvrack.com",
"pluginUrl": "https://vcvrack.com/Fundamental.html",
"authorUrl": "https://vcvrack.com/",
"manualUrl": "https://vcvrack.com/Fundamental.html#manual",
"sourceUrl": "https://github.com/VCVRack/Fundamental",
"version": "1.0.0",
"modules": [
{
"slug": "VCO",
"name": "VCO-1",
"tags": [
"VCO"
]
},
{
"slug": "VCO2",
"name": "VCO-2",
"tags": [
"VCO"
]
},
{
"slug": "VCF",
"name": "VCF",
"tags": [
"VCF"
]
},
{
"slug": "VCA-1",
"name": "VCA-1",
"tags": [
"VCA"
]
},
{
"slug": "VCA",
"name": "VCA-2",
"tags": [
"VCA",
"Dual"
]
},
{
"slug": "LFO",
"name": "LFO-1",
"tags": [
"LFO"
]
},
{
"slug": "LFO2",
"name": "LFO-2",
"tags": [
"LFO"
]
},
{
"slug": "Delay",
"name": "Delay",
"tags": [
"Delay"
]
},
{
"slug": "ADSR",
"name": "ADSR",
"tags": [
"Envelope Generator"
]
},
{
"slug": "VCMixer",
"name": "Mixer",
"tags": [
"Mixer",
"VCA"
]
},
{
"slug": "8vert",
"name": "8vert",
"tags": [
"Attenuator"
]
},
{
"slug": "Unity",
"name": "Unity",
"tags": [
"Mixer",
"Utility",
"Dual"
]
},
{
"slug": "Mutes",
"name": "Mutes",
"tags": [
"Switch"
]
},
{
"slug": "Scope",
"name": "Scope",
"tags": [
"Visual"
]
},
{
"slug": "SEQ3",
"name": "SEQ-3",
"tags": [
"Sequencer"
]
},
{
"slug": "SequentialSwitch1",
"name": "Sequential Switch 1",
"tags": [
"Utility"
]
},
{
"slug": "SequentialSwitch2",
"name": "Sequential Switch 2",
"tags": [
"Utility"
]
},
{
"slug": "Split",
"name": "Split",
"description": "Splits a polyphonic cable into multiple monophonic cables",
"tags": [
"Poly",
"Utility"
]
},
{
"slug": "Merge",
"name": "Merge",
"description": "Combines multiple monophonic cables into a polyphonic cable",
"tags": [
"Poly",
"Utility"
]
},
{
"slug": "Sum",
"name": "Sum",
"description": "Sums all channels in a polyphonic cable",
"tags": [
"Poly",
"Utility"
]
},
{
"slug": "Viz",
"name": "Viz",
"description": "Visualizes all channels of a polyphonic cable",
"tags": [
"Poly",
"Visual"
]
}
]
}

+ 128
- 0
manifests/SynthKit.json View File

@@ -0,0 +1,128 @@
{
"slug": "SynthKit",
"name": "SynthKit",
"version": "1.0.0",
"license": "CC0-1.0",
"author": "Jerry Sievert",
"authorEmail": "rack@legitimatesounding.com",
"authorUrl": "https://legitimatesounding.com/",
"pluginUrl": "https://github.com/jerrysievert/synthkit/",
"manualUrl": "https://github.com/JerrySievert/SynthKit/blob/master/docs/README.md",
"sourceUrl": "https://github.com/jerrysievert/synthkit/",
"donateUrl": "https://paypal.me/JerrySievert",
"modules": [
{
"slug": "1x8Splitter",
"name": "1x8 Splitter",
"description": "1 in 8 out",
"tags": [
"Clock modulator",
"Logic"
]
},
{
"slug": "1x8SplitterCV",
"name": "1x8 Splitter (CV)",
"description": "CV Controlled 1x8 Splitter",
"tags": [
"Clock modulator",
"Logic"
]
},
{
"slug": "Addition",
"name": "Addition",
"description": "Simple value addition",
"tags": [
"Logic"
]
},
{
"slug": "Subtraction",
"name": "Subtraction",
"description": "Simple value subtraction",
"tags": [
"Logic"
]
},
{
"slug": "ClockDivider",
"name": "Clock Divider",
"description": "Clock Divider",
"tags": [
"Clock modulator",
"Logic"
]
},
{
"slug": "And",
"name": "And",
"description": "Logical Bitwise And",
"tags": [
"Utility",
"Logic"
]
},
{
"slug": "Or",
"name": "Or",
"description": "Logical Bitwise Or",
"tags": [
"Utility",
"Logic"
]
},
{
"slug": "FibonacciClockDivider",
"name": "Fibonacci Clock Divider",
"description": "Fibonacci Clock Divider",
"tags": [
"Clock modulator",
"Logic"
]
},
{
"slug": "PrimeClockDivider",
"name": "PrimeClock Divider",
"description": "Prime Clock Divider",
"tags": [
"Clock modulator",
"Logic"
]
},
{
"slug": "RotatingClockDivider",
"name": "Rotating Clock Divider",
"description": "Rotating Clock Divider",
"tags": [
"Clock modulator",
"Logic"
]
},
{
"slug": "ShiftingClockDividerCV",
"name": "Shifting Clock Divider",
"description": "Shifting Clock Divider",
"tags": [
"Clock modulator",
"Logic"
]
},
{
"slug": "4-StepSequencer",
"name": "4-Step Sequencer",
"description": "4-Step Sequencer",
"tags": [
"Sequencer"
]
},
{
"slug": "8-StepSequencer",
"name": "8-Step Sequencer",
"description": "8-Step Sequencer",
"tags": [
"Sequencer"
]
}
]
}

+ 0
- 21
manifests/VCV-Recorder.json View File

@@ -1,21 +0,0 @@
{
"slug": "VCV-Recorder",
"name": "Recorder",
"author": "VCV",
"license": "BSD-3-Clause",
"authorEmail": "contact@vcvrack.com",
"authorUrl": "https://vcvrack.com/",
"sourceUrl": "https://github.com/VCVRack/VCV-Recorder",
"version": "1.0.0",
"modules": [
{
"slug": "Recorder",
"name": "Recorder",
"description": "Records stereo audio and video from Rack screen a file",
"tags": [
"Recording",
"Visual"
]
}
]
}

+ 0
- 94
manifests/rcm.json View File

@@ -1,94 +0,0 @@
{
"slug": "rcm",
"name": "RCM",
"brand": "RCM",
"version": "1.0.0",
"license": "GPL-2.0-or-later",
"author": "RCM",
"authorEmail": "",
"authorUrl": "https://github.com/Rcomian",
"pluginUrl": "https://github.com/Rcomian/rcm-modules",
"manualUrl": "https://github.com/Rcomian/rcm-modules/blob/v0.6/README.md",
"sourceUrl": "https://github.com/Rcomian/rcm-modules",
"donateUrl": "",
"modules": [
{
"slug": "rcm-CVTgl",
"name": "CV Toggle",
"description": "A labelled toggle switch, outputs 0V or 10V",
"tags": []
},
{
"slug": "rcm-CVMmt",
"name": "CV Momentary",
"description": "A labelled button, outputs 0V or 10V",
"tags": []
},
{
"slug": "rcm-CVS0to10",
"name": "CV Sliders 0 to 10",
"description": "4 CV sliders, outputs 0V to 10V",
"tags": []
},
{
"slug": "rcm-CV5to5",
"name": "CV Knob -5 to 5",
"description": "CV knob, outputs -5V to 5V",
"tags": []
},
{
"slug": "rcm-CV0to10",
"name": "CV Knob 0 to 10",
"description": "CV knob, outputs 0V to 10V",
"tags": []
},
{
"slug": "rcm-gverb",
"name": "GVerb",
"description": "Dirty unstable reverb",
"tags": [
"reverb"
]
},
{
"slug": "rcm-duck",
"name": "Duck",
"description": "Basic audio ducking",
"tags": [
"dynamics"
]
},
{
"slug": "rcm-seq-adapter",
"name": "SEQ Adapter",
"description": "Nord style reset for syncing simple sequencers",
"tags": [
"seq"
]
},
{
"slug": "rcm-sync",
"name": "Sync",
"description": "Simplified Nord style reset for syncing simple sequencers",
"tags": [
"seq"
]
},
{
"slug": "rcm-pianoroll",
"name": "Piano Roll",
"description": "Simple Piano Roll for sequencing",
"tags": [
"seq"
]
},
{
"slug": "AudioInterface16",
"name": "Audio Interface 16",
"description": "A reskin of the Audio16 Interface (only kept for backwards compat)",
"tags": [
"audio"
]
}
]
}

+ 0
- 1
repos/FrankBussFormula

@@ -1 +0,0 @@
Subproject commit 6638244558048824ac505f385fd5cda70a795cd6

+ 74
- 0
scripts/build.py View File

@@ -0,0 +1,74 @@
import os
import sys


RACK_SDK = os.path.abspath("Rack-SDK")
STAGE_DIR = "stage"
PACKAGE_DIR = "../packages"


def system(cmd):
err = os.system(cmd)
if err:
raise Exception(f"Command failed with error {err}: {cmd}")


def stage_package(plugin_dir):
system(f'mkdir -p {STAGE_DIR}')
system(f'mv {plugin_dir}/dist/*.zip {STAGE_DIR}/')


def move_stage():
system(f'mv -vi {STAGE_DIR}/* {PACKAGE_DIR}/')


def delete_stage():
system(f'rm -rf {STAGE_DIR}')


def build_mac(plugin_dir):
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 {plugin_dir}'
system(f'{make} clean')
system(f'{make} dist')
stage_package(plugin_dir)
system(f'{make} clean')


def build_win(plugin_dir):
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 {plugin_dir}'
system(f'{make} clean')
system(f'{make} dist')
stage_package(plugin_dir)
system(f'{make} clean')


def build_lin(plugin_dir):
make = f'make -j$(nproc)'
plugin_abs = os.path.abspath(plugin_dir)
# TODO Make this Docker image publicly available
# It's essentially just Ubuntu 16.04 with plugin build dependencies installed, the workdir, and a user account set up so it matches my own machine's UID to solve file permissions issues.
docker = f'docker run --rm -v {RACK_SDK}:/Rack-SDK -v {plugin_abs}:/workdir -w /workdir -u vortico -e RACK_DIR=/Rack-SDK rackplugin:1'
system(f'{docker} {make} clean')
system(f'{docker} {make} dist')
stage_package(plugin_dir)
system(f'{docker} {make} clean')


def build(plugin_dir):
try:
build_lin(plugin_dir)
build_win(plugin_dir)
build_mac(plugin_dir)
move_stage()
finally:
delete_stage()


if __name__ == "__main__":
plugin_dir = sys.argv[1]
if not plugin_dir:
raise "No plugin_dir given"
build(plugin_dir)


+ 77
- 0
scripts/update_builds.py View File

@@ -0,0 +1,77 @@
import sys
import os
import glob
import json
import time
import build


build.system("git pull")
build.system("git submodule update --init --recursive")


plugin_dirs = sys.argv[1:]

if not plugin_dirs:
plugin_dirs = glob.glob("repos/*")

built_slugs = []

for plugin_dir in plugin_dirs:
manifest_filename = f"{plugin_dir}/plugin.json"
try:
with open(manifest_filename, "r") as f:
manifest = json.load(f)
except IOError:
# Skip plugins without plugin.json
continue

slug = manifest['slug']
library_manifest_filename = f"manifests/{slug}.json"
library_manifest = None
try:
with open(library_manifest_filename, "r") as f:
library_manifest = json.load(f)
except IOError:
pass

# Check if the build is up to date
if library_manifest and manifest['version'] == library_manifest['version']:
continue

# Build repo
print()
print(f"Building {slug}")
try:
build.build(plugin_dir)
except Exception as e:
print(e)
print(f"{slug} build failed")
input()
continue

# Copy manifest
with open(library_manifest_filename, "w") as f:
json.dump(manifest, f, indent=" ")

built_slugs.append(slug)
# Open plugin issue thread
os.system(f"qutebrowser \"https://github.com/VCVRack/library/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+{slug}\" &")


if not built_slugs:
raise Exception("Nothing to build")

raise Exception("finished")

# Upload packages
build.system("cd ../packages && make upload")

# Commit repository
build.system("git add manifests")
build.system("git commit -m 'Update builds'")
build.system("git push")


print()
print("Built " + ", ".join(built_slugs))

Loading…
Cancel
Save