From f49b8b9287648840dd690db7c56ac919efd59905 Mon Sep 17 00:00:00 2001 From: Julian Rohrhuber Date: Fri, 23 May 2003 18:33:36 +0000 Subject: [PATCH] simplified and made ready to use in patterns git-svn-id: https://supercollider.svn.sourceforge.net/svnroot/supercollider/trunk@1280 a380766d-ff14-0410-b294-a243070f3f08 --- .../SCClassLibrary/JITLib/various/SoundDef.sc | 62 +++++++++---------- 1 file changed, 30 insertions(+), 32 deletions(-) diff --git a/build/SCClassLibrary/JITLib/various/SoundDef.sc b/build/SCClassLibrary/JITLib/various/SoundDef.sc index 5885581fc0b..235a05d87b0 100644 --- a/build/SCClassLibrary/JITLib/various/SoundDef.sc +++ b/build/SCClassLibrary/JITLib/various/SoundDef.sc @@ -1,40 +1,43 @@ //globally referenceable wrapper for a SynthDef. +//keeps servers updated. SoundDef { - var servers; - *new { arg key, obj; - if(obj.isNil, { ^all.at(key) }); - ^super.newCopyArgs(obj, obj.asSynthDef).toLib(key.asSymbol) //add some preparation later + *new { arg key, func, lags, prependArgs; + var synthDef; + if(func.isNil, { ^all.at(key.asSymbol) }); + if(servers.isNil, { servers = [Server.local] }); //lazy init for now + synthDef = SynthDef(key, func, lags, prependArgs); + ^super.newCopyArgs(synthDef).toLib(key.asSymbol) //add some preparation later } - *initClass { + *initClass { all = IdentityDictionary.new; } toLib { arg key; var old, local; - if(synthDef.name.isNil,{ synthDef.name ? "soundDef_" ++ key }); - servers = IdentitySet.new; - local = Server.local; - old = this.class.at(key); - if(old.notNil, { - //keep old servers updated - old.servers.do({ arg item; this.send(item) }); - }, { - //send to local by default - if(local.serverRunning, {this.send(local)}, {this.load(local)}); - }); - this.class.all.put(key,this); - + this.send; + this.class.all.put(key, this); + //cache control names to use with patterns + controlNames = synthDef.controlNames.collect({ arg item; item.name }) } *at { arg key; ^all.at(key) } + *sendAll { + all.do({ arg item; item.send }); + } + + *loadAll { + all.do({ arg item; item.load }); + } + newMsg { arg args, target, addActionNumber=1; ^[9,synthDef.name,-1,addActionNumber,target.asTarget.nodeID]++args } @@ -42,22 +45,17 @@ SoundDef { asDefName { ^synthDef.name } - argNames { - ^obj.eventArgNames - } - - send { arg server; - if(servers.includes(server).not, { - servers.add(server); - }); - synthDef.send(server); + + send { + this.class.servers.do({ arg server; + synthDef.send(server); + }) } load { arg server; - if(servers.includes(server).not, { - servers.add(server); - }); - synthDef.load(server); + this.class.servers.do({ arg server; + synthDef.load(server); + }) } play { arg args, target;