Gull is a UDP sound machine designed to be controlled externally. It was created as a companion application to the livecoding environment ORCA.
TODO / add details / package into electron app
If you want to build Gull yourself, follow these steps:
git clone https://github.com/lctrt/gull.git
cd gull
npm install
npm start
Samples should be in wav
format.
If you build yourself you can put your samples into /samples
.
You can select a folder with File > Select Sample Folder
. This will load the samples in that folder, as well as the default.gull
file if present.
The server will hot reload when new samples are added. This got broken with the dynamic folder selection, will fix.
meta
+ arrow: fast cursor move (6 chars)
A channel is written on one line of the editor. Channels can share the same id to be triggered together.
Channels are composed by blocks, each block start with a capital letter, with associated base36 parameters under it.
A channel start with a C
block.
It's then followed by a generator:
- P(sample, start, duration): sample player block
- S(waveform): synth block (waveform not supported yet)
After that you can follow up with effect blocks:
- R(room, wet): reverb
- D(intensity, wet): distortion
- F(type, frequency, Q): filter
CPR
10I
.45
.2.
A special external channel is possible by starting with E
instead of C
. This will use external audio input, useful to chain to effects.
Gull has up to 36 channels. Commands can be sent through UDP via the port 49161
.
The play command allows you to trigger samples.
Command | Channel | Octave | Fine | Velocity |
---|---|---|---|---|
0 |
0 | 0 | 0 | |
04c |
0 | 4 | C | 64 |
04cf |
0 | 4 | C | 127 |
For the sample player, the fine setting is in 35ths of an octave. For the synth, the fine is notes (C,D,E etc)
You can edit the current code character by character remotely.
ED004
<- Will replace the character on line 0, row 0 with the character 4
.
Special thanks to Tone.js, the scope of work would be quite different without it!