You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+45-22Lines changed: 45 additions & 22 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -3,34 +3,63 @@ Plugincollider
3
3
4
4
Plugincollider is a generic (cross-platform/plugin format) wrapper that allows using a [SuperCollider](https://supercollider.github.io/) server inside a VST3 or AU plugin. The embedded server may be controlled over OSC as usual.
An external installation of [SuperCollider](https://supercollider.github.io/) is required to run the interpreted code. For now Plugincollider only acts as a server; consider this as a scsynth replacement. The classic SuperCollider UI is still used to send "synths/code" the the server that is running inside the plugin.
8
+
Now support Linux, macOS and Windows.
9
9
10
10
*Plugincollider is based on AU version of https://github.com/supercollider/SuperColliderAU*
11
11
12
-
# State of the project
12
+
##State of the project
13
13
14
14
SuperCollider is a highly modular ecosystem (sc-plugins, scsynth definitions) that needs to be adapted for each platform from the VST3/clap component. For now consider this as a vanilla scsynth implementation with no external plugins.
15
15
16
16
Latest build are available from [https://github.com/asb2m10/plugincollider/actions](https://github.com/asb2m10/plugincollider/actions)
17
17
18
-
### Known issues
18
+
## Usage - Supercollider server
19
+
Plugincollider can be used as a standard SuperCollider server by using the SC IDE (or any other sclang client). You can test the plugin by using this SC code (where Plugincollider is running at 127.0.0.1:8898) :
19
20
20
-
* Be sure to set your DAW latency size to a power of two (256, 512, 1024) otherwise some SC plugins might not work properly.
21
-
* If you are running multiple VST instances, scsynth errors messages might end up into one specific unrelated vst logs since scsynth is design to be run into one single process. Some DAWs has a "Dedicated process" runtime that might resolve the issue.
21
+
o = ServerOptions.new;
22
+
s = Server.remote(\Plugincollider, NetAddr("127.0.0.1", 8898), o);
-[ ] implement /midi and /velocity from DAW midi message
26
-
-[ ] more accurate OSC DAW timing
27
-
-[ ]*macOS* enable Plugincollider to use SuperCollider scsynth plugin that the user previously installed
28
-
-[ ] move OSC messages to realtime (dsp) thread
29
-
-[x]*Windows* bundle sndfile.dll within the plugin installation
27
+
Plugincollider can load previously compiled [SynthDefs](resources/scsyndef) (*.scsyndef) that will be saved within the DAW plugin state. No installation/usage of Supercollider afterwards is required if you want to exclusively use scsyndef files.
28
+
29
+
If the SynthDef has arguments, they will be exposed to the plugin and the user can set the lower and upper values for each arguments. The user can then easily change them from the Plugincollider UI.
30
+
31
+
### FX Mode
32
+
33
+
If there is a SynthDef loaded, the plugin can be put in "FX Mode" that will run this SynthDef on a single node every time the plugin is running. This can be useful if you want to use the plugin as an effect or a drone/noodle.
34
+
35
+
### Non-Fx Mode (Synth Mode)
36
+
37
+
In this mode (and when a SynthDef is loaded), everytime Plugincollider receives a midi node, it will trigger this synth based on those parameters:
| note-off | gate | Sends gate=0 on midi note off |
44
+
45
+
If for example your SynthDef doesn't have the gate arguments, the node will be freed once the note off is triggered.
46
+
47
+
# Known issues
48
+
49
+
* Be sure to set your DAW latency size to a power of two (256, 512, 1024) otherwise some SC plugins might not work properly.
50
+
* If you are running multiple VST instances, scsynth errors messages might end up into one specific unrelated vst logs since scsynth is design to be run into one single process. Some DAWs has a "Dedicated process" runtime that might resolve this issue.
51
+
* PluginCollider is currently built with "static" SC-plugin. It is great because you don't need any SuperCollider installation but it cannot load additional SC-plugins. This will be resolved when we will be able to package the plugin on any platform. (you can disable this by building PluginCollider with the SC_DYNAMIC_PLUGINS directive)
52
+
* On Windows, if you are using the github releases, be sure to update the [MSVC Runtime](https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170#visual-studio-2015-2017-2019-and-2022) to the latest version
53
+
54
+
# TODO
55
+
-[ ] add [CLAP](https://github.com/free-audio/clap) plugin format
-[x] implement /freq and /amp from DAW midi message
59
+
-[ ]*macOS* enable Plugincollider to use SuperCollider scsynth plugin that the user previously installed (handle notarization)
60
+
-[x]*Windows* bundle sndfile.dll within the plugin installation
61
+
-[ ] more accurate OSC DAW timing
32
62
33
-
macOS makes it harder to use shared libraries from SuperCollider to Plugincollider. It is easier to build it from your computer for now. I will check how I can do this without having to repackage everything in the plugin within the distribution.
34
63
35
64
# Interacting with SuperCollider server (scsynth) from DAW
36
65
@@ -47,13 +76,13 @@ Plugin parameters are now linked to the first 32 control buses. The SC code must
47
76
var sig = SinOsc.ar(freq);
48
77
Out.ar(sig, sig!2 * 1);
49
78
}).play(s);
50
-
79
+
51
80
b = Bus.control(s, 1);
52
81
x.map(\freq, b)
53
82
54
83
Please note that control buses are not yet read from server to DAW.
55
84
56
-
##Build instructions
85
+
# Build instructions
57
86
58
87
Be sure to install SuperCollider and JUCE dependencies; dont forget [sndfile](https://github.com/libsndfile/libsndfile) on Linux. Then clone recursivly the repository and build Plugincollider like a normal cmake project :
59
88
@@ -63,9 +92,3 @@ Be sure to install SuperCollider and JUCE dependencies; dont forget [sndfile](ht
63
92
cd build
64
93
cmake .. # add `-G Xcode` if you want to use Xcode
65
94
make
66
-
67
-
In order to test the plugin, with sclang execute this code (replace port 8898 where the server port is actually running):
68
-
69
-
o = ServerOptions.new;
70
-
s = Server.remote(\Plugincollider, NetAddr("127.0.0.1", 8898), o);
0 commit comments