Skip to content

Instantly share code, notes, and snippets.

View scztt's full-sized avatar

scott carver scztt

  • Berlin
View GitHub Profile
PparStream : Stream {
var <>initStreamAction, <>endStreamAction;
var priorityQ, <now;
var <injectFunc, pausedStreams;
*forkPatterns {
|pattern|
var event, outerEvent, recursionLevel, instrument, embeddingLevel, freq, rest;
var args, defaults, timingOffset, sustain, gatePattern;
var size, newPatterns = [];
@scztt
scztt / Gdef.sc
Created December 19, 2023 21:41
Gdef : Singleton {
classvar <groupOrder, rebuildBundle, <nodeMap;
var <group, <afterList, <beforeList, <server, <>permanent=true;
classvar blockUpdate=false, updateCount=0;
*initClass {
[Event, EventTypesWithCleanup].do(Class.initClassTree(_));
groupOrder = LinkedList();
nodeMap = IdentityDictionary();
// XMP parsing requires:
// Quarks.install("XML"); [in supercollider]
// brew install exiftool [in terminal]
+SoundFile {
exiftoolPath {
^"/usr/local/bin/exiftool"
}
extractMarkers {
+Object {
|> {
|other|
^other.value(this)
}
+> {
|other, adverb|
^(this +.(adverb) other.value(this))
}

Mole recipe

  • ~10-15 dried chiles
  • 1 big handful of pumpkin seeds/almonds
  • 1 small handful of sesame seeds
  • 1 big handful of raisins or similar
  • 1 tbsp of tomato paste
  • 1 small handful of animal crackers or similar
(
var guiFunc;
var ampMin = -70;
var ampMax = 36;
var numberBoxHeight = 22;
var compressFunc = {
|isSynth, amp, aboveRatio, belowRatio, ratioScale, aboveThreshold, belowThreshold, knee, curve, expandMax, plot=false|
var compressAmt, expandAmt;
~folderDependencies = ();
~invertedDependencies = ();
~addDependency = {
|folder, dependsOnFolder, description|
~folderDependencies[folder] = ~folderDependencies[folder] ?? { () };
~folderDependencies[folder][dependsOnFolder] = ~folderDependencies[folder][dependsOnFolder] ?? { () };
~folderDependencies[folder][dependsOnFolder] = ~folderDependencies[folder][dependsOnFolder].add(description);
~invertedDependencies[dependsOnFolder] = ~invertedDependencies[dependsOnFolder] ?? { () };
~invertedDependencies[dependsOnFolder][folder] = ~invertedDependencies[dependsOnFolder][folder] ?? { () };
PlimitSum : ListPattern {
var <>limit;
*new { arg list, limit=16, repeats=inf;
if (list.isKindOf(Array).not) {
list = [list]
};
^super.new(list, repeats).limit_(limit)
}

( Event.partialEvents[\nodeObjectEvent] = ( nodeObject: { |self| self.use { var nodeObj = ~id.asArray.collect { |id| switch (~type, \note, { Synth.basicNew(~instrument, ~server, id).isRunning_(true);

+Object {
assertChannels {
|...args|
if (this.asArray.shape != args) {
Exception("Expected array of shape % (array is %)".format(args, this.shape)).throw;
}
}
}