( // code below loads 16 samples into first kit ~loadKit.value( 0, // kit index. four kits, indexed 0 to 3, are available ( root: "/path/to/samples", // root path for samples samples: [ // an array of up to 16 samples "kick1.wav", "kick2.wav", "snare.wav",
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// This is a step sequencer with 8 tracks and 8 steps. The sequencer triggers playback of one sample per | |
// track. Sequencer tempo and swing amount is variable. | |
// The code below is split in two main sections (core + monome and arc UI) followed by an example of | |
// loading samples for the tracks, a pattern and tempo and swing amount setting. | |
( | |
// Section 1: Define the core step sequencer functionality. All step sequencer functionality is available | |
// using the exported functions. | |
var num_samples = 8, num_pattern_steps = 8, pattern_beats = 2, default_tempo = 100, default_swing_amount = 50; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Hello World | |
a=GRMonome64.new; // create a monome | |
b=GRButton(a, 0@0); // a 1x1 button placed at top left key | |
b.action = { |view, value| (value.if("Hello", "Goodbye") + "World").postln }; // an action triggered when the button is pressed | |
// A tour of widgets... | |
b.remove; // remove the button created above |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Grrr for SuperCollider: an UI library for grid based controllers | |
// Grrr classes are loosely based on SuperCollider GUI classes. GRControllers are similar to Windows, GRView and its subclasses are similar to View and its subclasses. Like GUI classes a parent is typically passed to a GRView upon instantiation to indicate which controller or view the view will become a child of. Instead of GUI bounds (a Rect supplied to GUI Views) arguments origin (a Point), numCols and numRows designate where on the parent view or controller a Grrr widget is added and how large it is supposed to be. | |
a=GRScreenGrid.new; // A GRScreenGrid is a virtual grid with configurable size that defaults to 8x8 | |
b=GRButton(a, 0@0, 2, 2); // a button spanning 2x2 keys is placed at top left key on the virtual grid | |
b.action = { |view, value| (value.if("Hello", "Goodbye") + "World").postln }; // pressing the top-leftmost 2x2 grid keys will now post a message to the Post Window and toggle button value which in turn toggles led state | |
b.value |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
( | |
s.boot; | |
s.latency = 0.02; | |
~grid=GRMonome64.new; | |
~grid.spawnGui; | |
~playpos=GRHToggle.newDecoupled(~grid, 0@7, 8, 1, nillable: true).value_(nil); | |
~pages=GRSwitcher(~grid, 0@1, 8, 6); | |
~pageselect=GRHToggle(~grid, 0@0, 4, 1).action_({ |view, value| ~pages.value = value }); | |
~transport=GRHToggle(~grid, 6@0, 2, 1); | |
~transport.action = { |view, value| if (value == 1) { ~player.play } { ~player.stop } }; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
( | |
var plotpath, update, plotxy, position, size, alpha; | |
plotpath = { |to| | |
var steps = 5; | |
var delta = (to - position) / steps; | |
fork { | |
steps.do { | |
position = position + delta; | |
update.(); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
( | |
var app = \toggle; | |
var state; | |
var update; | |
var client; | |
~disposeApp.(); | |
state=Ref(Archive.global.at(\apps, app, \value) ? true); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
( | |
var app = \bulb; | |
var position, size, alpha; | |
var plotpath, update; | |
var client; | |
Archive.global.at(\apps, app).isNil.if { | |
Archive.global.put(\apps, app, \position, `([email protected]))); | |
Archive.global.put(\apps, app, \size, `50); | |
Archive.global.put(\apps, app, \alpha, `0); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'socket' | |
require 'tempfile' | |
file = Tempfile.new('foo') | |
# note: using pd netreceive is unsafe, only do this if you know what you're doing | |
lines =<<-PATCH | |
#N canvas 87 360 450 300 10; | |
#X obj 24 25 netreceive 2000 1; | |
#X obj 24 51 s pd-#{File.basename(file.path)}; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'tempfile' | |
# pure data patching dsl for ruby hack | |
file = Tempfile.new | |
begin | |
my_patch = patch # 1. create patch | |
my_patch + 'declare -stdpath creb' # 2. add object | |
mod = my_patch + 'loadbang' >> 'list 200 10000' >> 'line~' >> 'osc~ 2' >> '*~ 800' >> '+~ 1000' # 3. connect | |
sine = mod >> 'osc~ 429' >> '*~ 0.5' |
OlderNewer