| @@ -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" | |||||
| ] | |||||
| } | |||||
| ] | |||||
| } | |||||
| @@ -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" | |||||
| ] | |||||
| } | |||||
| ] | |||||
| } | |||||
| @@ -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" | |||||
| ] | |||||
| } | |||||
| ] | |||||
| } | |||||
| @@ -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" | |||||
| ] | |||||
| } | |||||
| ] | |||||
| } | |||||
| @@ -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" | |||||
| ] | |||||
| } | |||||
| ] | |||||
| } | |||||
| @@ -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" | |||||
| ] | |||||
| } | |||||
| ] | |||||
| } | |||||
| @@ -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" | |||||
| ] | |||||
| } | |||||
| ] | |||||
| } | |||||
| @@ -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" | |||||
| ] | |||||
| } | |||||
| ] | |||||
| } | |||||
| @@ -1 +0,0 @@ | |||||
| Subproject commit 6638244558048824ac505f385fd5cda70a795cd6 | |||||
| @@ -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) | |||||
| @@ -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)) | |||||