[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[sc-dev] SF.net SVN: supercollider:[8107] trunk/build/SCClassLibrary/Common/Audio
Revision: 8107
http://supercollider.svn.sourceforge.net/supercollider/?rev=8107&view=rev
Author: jrhb
Date: 2008-12-11 19:44:34 +0000 (Thu, 11 Dec 2008)
Log Message:
-----------
add some n-ary operator support for demand ugens
Modified Paths:
--------------
trunk/build/SCClassLibrary/Common/Audio/Demand.sc
trunk/build/SCClassLibrary/Common/Audio/UGen.sc
Modified: trunk/build/SCClassLibrary/Common/Audio/Demand.sc
===================================================================
--- trunk/build/SCClassLibrary/Common/Audio/Demand.sc 2008-12-11 19:17:34 UTC (rev 8106)
+++ trunk/build/SCClassLibrary/Common/Audio/Demand.sc 2008-12-11 19:44:34 UTC (rev 8107)
@@ -76,6 +76,27 @@
}
forceAudioRateInputsIntoUGenGraph {
inputs.do { |in| if(in.rate == \audio) { in <! 0 } }; }
+
+ // some n-ary op special cases
+
+ linlin { arg inMin, inMax, outMin, outMax, clip=\minmax;
+ ^((this.prune(inMin, inMax, clip)-inMin)/(inMax-inMin) * (outMax-outMin) + outMin);
+ }
+
+ linexp { arg inMin, inMax, outMin, outMax, clip=\minmax;
+ ^(pow(outMax/outMin, (this-inMin)/(inMax-inMin)) * outMin)
+ .prune(inMin, inMax, clip);
+ }
+
+ explin { arg inMin, inMax, outMin, outMax, clip=\minmax;
+ ^(log(this.prune(inMin, inMax, clip)/inMin))
+ / (log(inMax/inMin)) * (outMax-outMin) + outMin
+ }
+
+ expexp { arg inMin, inMax, outMin, outMax, clip=\minmax;
+ ^pow(outMax/outMin, log(this.prune(inMin, inMax, clip/inMin) / log(inMax/inMin)) * outMin)
+ }
+
}
Dseries : DUGen {
Modified: trunk/build/SCClassLibrary/Common/Audio/UGen.sc
===================================================================
--- trunk/build/SCClassLibrary/Common/Audio/UGen.sc 2008-12-11 19:17:34 UTC (rev 8106)
+++ trunk/build/SCClassLibrary/Common/Audio/UGen.sc 2008-12-11 19:44:34 UTC (rev 8107)
@@ -65,11 +65,11 @@
}
exprange { arg lo = 0.01, hi = 1.0;
var rate = if(this.rate == \audio) { \audio } { \control };
- if (this.signalRange == \bipolar, {
- ^LinExp.multiNew(rate, this, -1, 1, lo, hi)
- },{
- ^LinExp.multiNew(rate, this, 0, 1, lo, hi)
- });
+ ^if (this.signalRange == \bipolar) {
+ this.linexp(-1, 1, lo, hi)
+ } {
+ this.linexp(0, 1, lo, hi)
+ };
}
unipolar { arg mul = 1;
@@ -81,24 +81,37 @@
}
clip { arg lo,hi;
- if(rate == \audio) {
- ^Clip.ar(this, lo, hi)
+ ^if(rate == \audio) {
+ Clip.ar(this, lo, hi)
}{
- ^Clip.kr(this, lo, hi)
+ if(rate == \demand) {
+ max(lo, min(hi, this))
+ } {
+ Clip.kr(this, lo, hi)
+ }
}
}
+
fold { arg lo,hi;
- if(rate == \audio) {
- ^Fold.ar(this, lo, hi)
+ ^if(rate == \audio) {
+ Fold.ar(this, lo, hi)
}{
- ^Fold.kr(this, lo, hi)
+ if(rate == \demand) {
+ this.notYetImplemented(thisMethod)
+ } {
+ Fold.kr(this, lo, hi)
+ }
}
}
wrap { arg lo,hi;
- if(rate == \audio) {
- ^Wrap.ar(this, lo, hi)
+ ^if(rate == \audio) {
+ Wrap.ar(this, lo, hi)
}{
- ^Wrap.kr(this, lo, hi)
+ if(rate == \demand) {
+ this.notYetImplemented(thisMethod)
+ } {
+ Wrap.kr(this, lo, hi)
+ }
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
_______________________________________________
sc-dev mailing list
info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: https://listarc.bham.ac.uk/marchives/sc-dev/
search: https://listarc.bham.ac.uk/lists/sc-dev/search/