Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/davidgranstrom/NanoKontrol2
SuperCollider interface for NanoKONTROL2
https://github.com/davidgranstrom/NanoKontrol2
Last synced: about 1 month ago
JSON representation
SuperCollider interface for NanoKONTROL2
- Host: GitHub
- URL: https://github.com/davidgranstrom/NanoKontrol2
- Owner: davidgranstrom
- Created: 2015-07-26T12:02:02.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2021-01-02T02:02:05.000Z (over 3 years ago)
- Last Synced: 2024-02-15T01:35:03.339Z (5 months ago)
- Language: SuperCollider
- Homepage:
- Size: 9.77 KB
- Stars: 16
- Watchers: 7
- Forks: 5
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Lists
- awesome-supercollider - NanoKontrol2 - Interface for using Korg NanoKontrol2 (Quarks and extensions / Controllers)
README
NanoKontrol2
============Interface for using Korg NanoKONTROL2 with SuperCollider.
Basic usage
-----------```
n = NanoKontrol2();// register a function to be evaluted when fader1 is changed
n.fader1.onChange = {|val| (val/127).postln; }// overwrite the previous assignment
n.fader1.onChange = {|val| val.linexp(0, 127, 20, 20000).postln; }n.sBtn1.onPress = { "Hello, ".post; };
n.sBtn1.onRelease = { "NanoKONTROL2!".postln; };
```Incremental assignment
----------------------It is possible to incrementally assign faders, knobs, and the s/m/r buttons.
```
n = NanoKontrol2();(
n.faders.do {|fader, i|
fader.onChange = {|val|
"This is fader % its value is %\n".postf(i+1, val);
}
};n.knobs.do {|knob, i|
knob.onChange = {|val|
"This is knob % its value is %\n".postf(i+1, val);
}
};n.rBtns.do {|rBtn, i|
rBtn.onChange = {|val|
"This is rBtn % its value is %\n".postf(i+1, val);
}
};
)```
Or just a selection of controls
```
// assign faders 1 .. 4
n.faders[..3].do {|fader, i|
fader.onChange = {|val|
"This is fader % its value is %\n".postf(i+1, val);
}
};
```External LED control
--------------------Button LEDs can be controlled using MIDI if NanoKontrol2 is set to "external mode" in the Korg Kontrol Editor.
```
(
// Use \external to enable LED control.
// Remember to set "LED mode" in Korg Kontrol Editor to "external"
n = NanoKontrol2(\external);// turn on leds
n.rBtns.do {|btn|
btn.ledState = 1;
};n.mBtns.do {|btn|
btn.ledState = 1;
};n.sBtns.do {|btn|
btn.ledState = 1;
};
)n.ledsOff; // turn leds off
// the button is passed as an argument for `onPress` and `onRelease`
n.rBtn1.onPress = {|val, btn|
btn.ledState = 1;
};
```Interface
---------### Methods
`onChange` all controls (faders/knobs/buttons) can register a function using this method
`onPress` only register press on buttons
`onRelease` only register release on buttons
`free` unregisters a MIDI responder
`freeAll` unregisters all MIDI responders
`ledsOff` turn off all LEDs
*Note: `Cmd-.` removes all MIDI responders by default in SuperCollider*
### Controller names
All controls on the NanoKONTROL2 are supported, see list of names below.
#### Faders/Knobs
* `fader1 .. 8`
* `knob1 .. 8`#### Buttons
* `sBtn1 .. 8`
* `mBtn1 .. 8`
* `rBtn1 .. 8`#### Transport buttons
* `bwBtn`
* `fwdBtn`
* `stopBtn`
* `playBtn`
* `recBtn`
* `markerSetBtn`
* `markerBwBtn`
* `markerFwdBtn`
* `trackBwBtn`
* `trackFwdBtn`
* `cycleBtn`#### Collections
* `faders`
* `knobs`
* `sBtns`
* `mBtns`
* `rBtns`## Credits
Based on `NanoKontrol.sc` by [jesusgollonet](https://github.com/jesusgollonet/NanoKontrol.sc)