JITModular

Tools to help use a JITLib ProxySpace as a monophonic modular synth

JITModular

JITModular is a usage pattern of the JITLib live-coding dialect of SuperCollider for monophonic, modular synthesis. It is a flexible way to play freely with synthesis designs, particularly complex designs with lots of controls.

JITLib represents signals by NodeProxies. In JITModular, each NodeProxy represents a synthesis module. Modules may be patched and repatched freely and modules' contents may be replaced at any time, using standard JITLib features. See the code example below.

Extensions

Because JITModular distributes the processing for a single musical event among multiple modules, it is difficult to sequence "notes" using standard SuperCollider features. The extensions in this repository add two features to assist:

  • A new event type, \psSet, that uses an Event's data to set all relevant control inputs of any NodeProxy within the given ProxySpace.

  • A new "proxy role," also called \psSet, that produces \psSet-type events from a Pbind-style pattern and sequences them. The code example demonstrates the proxy role.

Installation

  1. Place the JITModular/ folder into your user extension directory. If you don't know the user extension directory, run the instruction Platform.userExtensionDir within SC.

  2. Add the following to your startup file. (In the SuperCollider IDE, use File -> Open startup file).

(Platform.userExtensionDir +/+ "JITModular/psSet-event-type.scd").load;

  1. Recompile the class library.

If you want to verify installation, the following instruction should return PatternControl. If it returns nil, then the file psSet-event-type.scd is not in the expected location.

AbstractPlayControl.proxyControlClasses[\psSet];

Code example

``` s.boot; p = ProxySpace.new.push;

// a stable output location, // connected (by .play) to the hardware output ~out = { \in.ar(0!2) }; ~out.play;

// a sawtooth oscillator ~osc = { |freq = 60, amp = 0.1| Saw.ar(freq, amp).dup };

// connect to output ~osc <>> ~out;

// detune it ~osc = { |freq = 60, amp = 0.1, detun = 1.006| Mix(Saw.ar(freq * [1, detun], amp)).dup };

// a filter -- \in.ar(0!2) defines an audio input ~lpf = { |ffreq = 800, rq = 1| RLPF.ar(\in.ar(0!2), ffreq, rq) };

// repatch ~osc <>> ~lpf <>> ~out;

// amp envelope ~eg = { |gt = 1| \in.ar(0!2) * EnvGen.kr( Env.adsr(0.01, 0.1, 0.6, 0.1), gt ) }; ~lpf <>> ~eg <>> ~out;

// now too quiet ~osc.set(\amp, 0.2);

// run some notes TempoClock.tempo = 124/60;

~player = \psSet -> Pbind( \skipArgs, [\amp], \midinote, Pseq([Pn(36, { rrand(3, 8) }), 39], inf), \dur, Pwrand([0.25, 0.5], [0.9, 0.1], inf) );

// filter eg ~ffreq = 400; ~feg = { |t_trig = 1, freqMul = 25| var eg = EnvGen.kr( Env.perc(0.01, 0.1, level: freqMul), t_trig, levelBias: 1 ); (~ffreq.kr(1) * eg).clip(20, 20000) };

// patch the filter envelope to the filter's frequency input

~lpf.set(\ffreq, ~feg);

~feg.set(\freqMul, 40); ~lpf.set(\rq, 0.1);

// change the pattern to accent only some notes ~player = \psSet -> Pbind( \skipArgs, [\amp], \midinote, Pseq([Pn(36, { rrand(3, 8) }), 39], inf), \dur, Pwrand([0.25, 0.5], [0.9, 0.1], inf), \t_trig, Pwrand([0, 1], [0.7, 0.3], inf) );

// we're done, remove everything p.clear; p.pop; ```

License

Please follow Creative Commons CC-NC-BY-SA licensing guidelines: You may make a derivative project based on this code, provided that you:

  • Credit me (H. James Harkins);
  • Share your project with a similar or more permissive license;
  • Do not import the code directly into a commercial project, without explicit permission from me.
AbstractIn
Project
Source file
Extension
✓
Superclass:
✗
AbstractPlayControl
Extension
✓
Superclass:
✗
AudioControl
Project
Source file
Extension
✓
Superclass:
✗
BinaryOpPlug
Extension
✓
Superclass:
✗
BinaryOpUGen
Project
Source file
Extension
✓
Superclass:
✗
BufRd
Project
Source file
Extension
✓
Superclass:
✗
Control
Project
Source file
Extension
✓
Superclass:
✗
DUGen
Project
Source file
Extension
✓
Superclass:
✗
DiskIn
Project
Source file
Extension
✓
Superclass:
✗
Dpoll
Project
Source file
Extension
✓
Superclass:
✗
Duty
Project
Source file
Extension
✓
Superclass:
✗
Dwrand
Project
Source file
Extension
✓
Superclass:
✗
EnvGen
Project
Source file
Extension
✓
Superclass:
✗
GrainBuf
Project
Source file
Extension
✓
Superclass:
✗
GrainFM
Project
Source file
Extension
✓
Superclass:
✗
GrainIn
Project
Source file
Extension
✓
Superclass:
✗
GrainSin
Project
Source file
Extension
✓
Superclass:
✗
IFFT
Project
Source file
Extension
✓
Superclass:
✗
InfoUGenBase
Project
Source file
Extension
✓
Superclass:
✗
JITModConnection
Project
Source file
Extension
✗
Superclass:
✗
JITModPatch
Project
Source file
Extension
✗
Superclass:
✗
JITModPatchGui
Project
Source file
Extension
✗
Superclass:
✗
JMBuf
Project
Source file
Extension
✗
Superclass:
Buffer
JMBufferRef
Project
Source file
Extension
✗
Superclass:
✗
JMBufferSet
Project
Source file
Extension
✗
Superclass:
✗
JMBufferView
Project
Source file
Extension
✗
Superclass:
SCViewHolder
JMDecompiler
Project
Source file
Extension
✗
Superclass:
✗
JMInput
Project
Source file
Extension
✗
Superclass:
✗
JMLocalMap
Project
Source file
Extension
✗
Superclass:
✗
JMMIDI
Project
Source file
Extension
✗
Superclass:
✗
JMMIDI_OSCBridge
Project
Source file
Extension
✗
Superclass:
✗
JMMapString
Project
Source file
Extension
✗
Superclass:
✗
JMMidiCtlView
Project
Source file
Extension
✗
Superclass:
SCViewHolder
JMMidiView
Project
Source file
Extension
✗
Superclass:
SCViewHolder
JMModulation
Project
Source file
Extension
✗
Superclass:
✗
JMProxyIO
Project
Source file
Extension
✗
Superclass:
✗
Klang
Project
Source file
Extension
✓
Superclass:
✗
Klank
Project
Source file
Extension
✓
Superclass:
✗
Line
Project
Source file
Extension
✓
Superclass:
✗
ListDUGen
Project
Source file
Extension
✓
Superclass:
✗
LocalBuf
Project
Source file
Extension
✓
Superclass:
✗
LocalOut
Project
Source file
Extension
✓
Superclass:
✗
MaxLocalBufs
Project
Source file
Extension
✓
Superclass:
✗
MulAdd
Project
Source file
Extension
✓
Superclass:
✗
Nil
Project
Source file
Extension
✓
Superclass:
✗
NodeProxy
Project
Source file
Extension
✓
Superclass:
✗
Object
Project
Source file
Extension
✓
Superclass:
✗
OutputProxy
Project
Source file
Extension
✓
Superclass:
✗
PV_ChainUGen
Project
Source file
Extension
✓
Superclass:
✗
PanAz
Project
Source file
Extension
✓
Superclass:
✗
PlayBuf
Project
Source file
Extension
✓
Superclass:
✗
Poll
Project
Source file
Extension
✓
Superclass:
✗
ProxyMixer
Extension
✓
Superclass:
✗
ProxyNodeMap
Extension
✓
Superclass:
✗
ProxySpace
Extension
✓
Superclass:
✗
Select
Project
Source file
Extension
✓
Superclass:
✗
SendPeakRMS
Project
Source file
Extension
✓
Superclass:
✗
SendReply
Project
Source file
Extension
✓
Superclass:
✗
SequenceableCollection
Project
Source file
Extension
✓
Superclass:
✗
StereoNodeProxy
Project
Source file
Extension
✗
Superclass:
NodeProxy
StereoProxySpace
Project
Source file
Extension
✗
Superclass:
ProxySpace
StereoProxySynthDef
Project
Source file
Extension
✗
Superclass:
SynthDef
StereoSynthDefControl
Project
Source file
Extension
✗
Superclass:
SynthDefControl
Extension
✓
Superclass:
✗
TGrains
Project
Source file
Extension
✓
Superclass:
✗
UGen
Project
Source file
Extension
✓
Superclass:
✗
UnaryOpPlug
Extension
✓
Superclass:
✗
UnaryOpUGen
Project
Source file
Extension
✓
Superclass:
✗
VDiskIn
Project
Source file
Extension
✓
Superclass:
✗
XLine
Project
Source file
Extension
✓
Superclass:
✗

Found no docs

Found no versions tagged via git

Installation

Repository

URL

https://github.com/jamshark70/JITModular

Since

2016-12-28

Last update

2025-04-02

Current version

0.1

Quark info

url

http://www.dewdrop-world.net/sc3

name

JITModular

path

JITModular

author

James Harkins

summary

Tools to help use a JITLib ProxySpace as a monophonic modular synth

version

0.1

dependencies

['JITLibExtensions']

Possible dependcies

JITLibExtensions

Possible dependants