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
+18-20Lines changed: 18 additions & 20 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,7 @@
1
1
This repository a series of examples demonstrating how to write UGens for [SuperCollider](https://github.com/supercollider/supercollider) (not to be confused with quarks, which are libraries for the language). The [Writing Unit Generators](http://doc.sccode.org/Guides/WritingUGens.html) helpfile is a comprehensive tutorial. Chapter 25 of [the SuperCollider Book](http://www.supercolliderbook.net/) is also a useful resource, although the build instructions are outdated.
2
2
3
+
There is a lot of conflicting material out there for UGen building. This is the official repository and should be the most up to date.
4
+
3
5
Beyond this repository, the reader is encouraged to look at [sc3-plugins](https://github.com/supercollider/sc3-plugins) for more complex, real-world examples.
4
6
5
7
## Directory
@@ -11,42 +13,38 @@ Beyond this repository, the reader is encouraged to look at [sc3-plugins](https:
11
13
12
14
## Compiling
13
15
14
-
Make a directory for the `cmake` build files:
16
+
This is how you build one of the examples in this directory. The examples are kept separate with duplicated code so that you can simply copy out a directory to start your own ugen. **Currently, this build system is missing two things: Windows and supernova. Sorry, we're working on it.**
17
+
18
+
CMake dumps a lot of files into your working directory, so you should always start by creating the `build/` directory:
Here, `/path/to/sc3source/` is the path to a directory of the SuperCollider *source code*. The source code version should match your SuperCollider app version. Slight differences will probably be tolerated, but if they're too far apart you will get an "API version mismatch" error when you boot the server.
25
+
Next, we run CMake and tell it where the SuperCollider headers are to be found:
The path should contain a file at `include/plugin_interface/SC_PlugIn.h`. If you get a warning that `SC_PlugIn.h` could not be found, then `SC_PATH` is not set correctly.
31
+
Here, `/path/to/sc3source/` is the path to a directory of the SuperCollider *source code* (NOT the app itself). The source code version should match your SuperCollider app version. Slight differences will probably be tolerated, but if they're too far apart you will get an "API version mismatch" error when you boot the server.
24
32
25
-
If no `SC_PATH` is provided, the build system assumes the SuperCollider include files in `/usr/include/SuperCollider/`.
33
+
The path should contain a file at `include/plugin_interface/SC_PlugIn.h`. If you get a warning that `SC_PlugIn.h` could not be found, then `SC_PATH` is not set correctly. If no `SC_PATH` is provided, the build system assumes the SuperCollider include files in `/usr/include/SuperCollider/`.
26
34
27
-
After setting `SC_PATH`, simply build using `make`:
35
+
CMake will remember your `SC_PATH`, so you only need to run that once. After that, simply build using `make`:
28
36
29
37
```shell
30
-
plugin-example/01-BoringMixer/build/$ make
38
+
example-plugins/01-BoringMixer/build/$ make
31
39
```
32
40
33
-
If compilation succeeds, on OSX this will produce a "shared library" file ending in `.scx`, and on Linux`.so`.
41
+
This will produce a "shared library" file ending in `.scx`. On Linux, the extension is`.so`.
34
42
35
43
## Installing
36
44
37
45
You can install each folder -- or the entire repository -- as you would a quark: `Quarks.gui` => `Install a folder`.
38
46
39
-
Alternatively, you can copy, move, or symbolic link the folder into your Extensions folder. You can find out which one that is by evaluating
40
-
41
-
```
42
-
Platform.userExtensionDir
43
-
```
44
-
45
-
from within SuperCollider. Alternatively, you may install the plugin(s) system-wide by copying to
46
-
47
-
```
48
-
Platform.systemExtensionDir
49
-
```
47
+
Alternatively, you can copy, move, or symbolic link the folder into your Extensions folder. You can find out which one that is by evaluating `Platform.userExtensionDir` in sclang. You can install the plugin(s) system-wide by copying to `Platform.systemExtensionDir`.
0 commit comments