Forums > MaxMSP

delay lines


f.e
November 27, 2006 | 3:24 pm

Hello,

i’m working on delays and, before understanding all the pitfalls of
building one in C, i made one in max patching. To have a multitap delay,
the workaround i found is to remove/redraw a tapout~ object by scripting
(have to say how many taps, and what are their times…) Is there any
better solution ?

best

f.e

f.e chanfrault | aka | personal computer music
> >>>>>> http://www.personal-computer-music.com
> >>>>>> |sublime music for a desperate people|


November 27, 2006 | 11:43 pm

Hi f.e.-

You have noticed that one tapout~ can take multiple arguments, and be a multitap delay, yes?

mz

Quote: f.e wrote on Mon, 27 November 2006 07:24
—————————————————-
> Hello,
>
> i’m working on delays and, before understanding all the pitfalls of
> building one in C, i made one in max patching. To have a multitap delay,
> the workaround i found is to remove/redraw a tapout~ object by scripting
> (have to say how many taps, and what are their times…) Is there any
> better solution ?
>
> best
>
> f.e
> —
> f.e chanfrault | aka | personal computer music
> > >>>>>> http://www.personal-computer-music.com
> > >>>>>> |sublime music for a desperate people|
>
—————————————————-


November 27, 2006 | 11:59 pm

use [poly~]
one tapout~ inside of each instance, change the times from outside the poly~ with the |target $1|
message and mute those you don’t use if you want to have a dinamic amount of delays.
note this way you don’t change the dsp chain each time you change a parameter, and that means no
interrution in sound processing!

//yac

> Hello,
>
> i’m working on delays and, before understanding all the pitfalls of
> building one in C, i made one in max patching. To have a multitap delay,
> the workaround i found is to remove/redraw a tapout~ object by scripting
> (have to say how many taps, and what are their times…) Is there any
> better solution ?
>
> best
>
> f.e
> –
> f.e chanfrault | aka | personal computer music
>> >>>>>> http://www.personal-computer-music.com
>> >>>>>> |sublime music for a desperate people|
>


November 28, 2006 | 12:08 am

I don’t know about f-e but did learn somthing today!
//yac
>
> Hi f.e.-
>
> You have noticed that one tapout~ can take multiple arguments, and be a multitap delay, yes?
>
> mz
>
>
> Quote: f.e wrote on Mon, 27 November 2006 07:24
> —————————————————-
>> Hello,
>>
>> i’m working on delays and, before understanding all the pitfalls of
>> building one in C, i made one in max patching. To have a multitap delay,
>> the workaround i found is to remove/redraw a tapout~ object by scripting
>> (have to say how many taps, and what are their times…) Is there any
>> better solution ?
>>
>> best
>>
>> f.e
>> –
>> f.e chanfrault | aka | personal computer music
>> > >>>>>> http://www.personal-computer-music.com
>> > >>>>>> |sublime music for a desperate people|
>>
> —————————————————-
>
>
> –
> || michael f. zbyszynski — molecular gastronimist
> || mzed@cnmat.berkeley.edu — +1.510.643.9990×314
> || http://www.cnmat.berkeley.edu/
> || http://www.piratelemur.com/
>
>
>
>


November 28, 2006 | 12:23 am

And you can have multiple tapout~ objects from one tapin~ object, as
well…

On Nov 27, 2006, at 4:43 PM, mzed wrote:

>
> Hi f.e.-
>
> You have noticed that one tapout~ can take multiple arguments, and
> be a multitap delay, yes?
>
> mz
>
>
> Quote: f.e wrote on Mon, 27 November 2006 07:24
> —————————————————-
>> Hello,
>>
>> i’m working on delays and, before understanding all the pitfalls of
>> building one in C, i made one in max patching. To have a multitap
>> delay,
>> the workaround i found is to remove/redraw a tapout~ object by
>> scripting
>> (have to say how many taps, and what are their times…) Is there any
>> better solution ?
>>
>> best
>>
>> f.e
>> —
>> f.e chanfrault | aka | personal computer music
>>>>>>>>> http://www.personal-computer-music.com
>>>>>>>>> |sublime music for a desperate people|
>>

—-
Steven M. Miller

Associate Professor of Contemporary Music
College of Santa Fe
Contemporary Music Program
1600 St. Michaels Drive
Santa Fe NM 87505
http://pubweb.csf.edu/~smill
(505) 473-6197

SFIFEM Atrium Sound Space OVOS
http://sfifem.csf.edu http://atrium.csf.edu http://pubweb.csf.edu/
~smill/ovos.html



f.e
November 28, 2006 | 8:00 am

Yes, i know that tapout~ can take multiple arguments. But only since a
few days when, looking for how to achieve a bouncing ball delay, i
re-read the docs. Because there’s not a shadow of this in the help
files… Anyway, i erase/rewrote the tapout~ each time i need to change
the number of taps, but i still wonder if there was something more sexy
around.

f.e

Steven Miller wrote:
> And you can have multiple tapout~ objects from one tapin~ object, as
> well…
>
>
> On Nov 27, 2006, at 4:43 PM, mzed wrote:
>
>>
>> Hi f.e.-
>>
>> You have noticed that one tapout~ can take multiple arguments, and be
>> a multitap delay, yes?
>>
>> mz
>>
>>
>> Quote: f.e wrote on Mon, 27 November 2006 07:24
>> —————————————————-
>>> Hello,
>>>
>>> i’m working on delays and, before understanding all the pitfalls of
>>> building one in C, i made one in max patching. To have a multitap delay,
>>> the workaround i found is to remove/redraw a tapout~ object by scripting
>>> (have to say how many taps, and what are their times…) Is there any
>>> better solution ?
>>>
>>> best
>>>
>>> f.e
>>> —
>>> f.e chanfrault | aka | personal computer music
>>>>>>>>>> http://www.personal-computer-music.com
>>>>>>>>>> |sublime music for a desperate people|
>>>
>
> —-
> Steven M. Miller
>
> Associate Professor of Contemporary Music
> College of Santa Fe
> Contemporary Music Program
> 1600 St. Michaels Drive
> Santa Fe NM 87505
> http://pubweb.csf.edu/~smill < http://pubweb.csf.edu/%7Esmill>
> (505) 473-6197
>
> SFIFEM Atrium Sound Space OVOS
>
http://sfifem.csf.edu http://atrium.csf.edu
> http://pubweb.csf.edu/~smill/ovos.html
> < http://pubweb.csf.edu/%7Esmill/ovos.html>
>
>
> ————————————————————————
>
>


f.e chanfrault | aka | personal computer music
> >>>>>>
http://www.personal-computer-music.com
> >>>>>> |sublime music for a desperate people|


November 28, 2006 | 1:19 pm

IIRC the minimum delay time for tapin~/tapout~ (at least with feedback) can be no smaller than the MaxMSP vector size. This restriction can be circumvented in a custom designed external, so a multitap interpolating delay line object with internal feedback would be most useful.

Eric


November 28, 2006 | 4:03 pm

> Yes, i know that tapout~ can take multiple arguments. But only since a
> few days when, looking for how to achieve a bouncing ball delay, i
> re-read the docs. Because there’s not a shadow of this in the help
> files… Anyway, i erase/rewrote the tapout~ each time i need to change
> the number of taps, but i still wonder if there was something more sexy
> around.
>
> f.e

if the use of poly~ isnt sexy enough for you, then it is
hard to suggest something which you will like.

almost everything is sexier than the use of scripting
for DSP objects!


November 28, 2006 | 4:22 pm

Quote: Eric Lyon wrote on Tue, 28 November 2006 14:19
—————————————————-
> IIRC the minimum delay time for tapin~/tapout~ (at least with feedback) can be no smaller than the MaxMSP vector size. This restriction can be circumvented in a custom designed external, so a multitap interpolating delay line object with internal feedback would be most useful.
>
> Eric
—————————————————-

Isn’t teeth~ supposed to be that?
Mattijs



f.e
November 28, 2006 | 4:45 pm

right :-)

But, tell me if i’m wrong, changing the number of voices in a poly is
not much handy ’cause you got glitches, do we ?

f.e

Roman Thilenius wrote:
>
>> Yes, i know that tapout~ can take multiple arguments. But only since a
>> few days when, looking for how to achieve a bouncing ball delay, i
>> re-read the docs. Because there’s not a shadow of this in the help
>> files… Anyway, i erase/rewrote the tapout~ each time i need to change
>> the number of taps, but i still wonder if there was something more sexy
>> around.
>>
>> f.e
>>
>
>
> if the use of poly~ isnt sexy enough for you, then it is
> hard to suggest something which you will like.
>
> almost everything is sexier than the use of scripting
> for DSP objects!
>
>
>


f.e chanfrault | aka | personal computer music
> >>>>>> http://www.personal-computer-music.com
> >>>>>> |sublime music for a desperate people|


November 28, 2006 | 7:37 pm

Quote: f.e wrote on Tue, 28 November 2006 09:45
—————————————————-
> right :-)
>
> But, tell me if i’m wrong, changing the number of voices in a poly is
> not much handy ’cause you got glitches, do we ?
>
> f.e

nah, not voices, building blocks.
just make 10 copies of [fe.10-tap.~mxb] so that you can turn
70 tapouts (and all the connections from and to them) off if
you only need 30 taps for the current "preset" of your bouncing
delay DSP.

and about glitches: nothing makes more glitches than
scripting, which can in some cases just chrash the runtime
or the hw driver. :)

-nothing but 110


November 28, 2006 | 8:39 pm

Do you have an example of a script which will work in Max, but crash
the runtime? Im not trying to be pedantic, as Im trying to hunt down
a few potential bugs.

v a d e //

http://www.vade.info
abstrakt.vade.info

On Nov 28, 2006, at 2:37 PM, Roman Thilenius wrote:

> scripting, which can in some cases just chrash the runtime


November 28, 2006 | 8:52 pm

> nah, not voices, building blocks.

btw, i have a whole set of poly "objects" around tapping
delays. i would share it, but it is not "final" enough yet.

why i am telling you about it is this: it is possible to
create _poly~s containing the tapouts – but connect them
all to only one tapin in the _root level of the patch.

-110


November 28, 2006 | 10:48 pm

f.e wrote:
> i’m working on delays and, before understanding all the pitfalls of
> building one in C, i made one in max patching. To have a multitap delay,
> the workaround i found is to remove/redraw a tapout~ object by scripting
> (have to say how many taps, and what are their times…) Is there any
> better solution ?

As scripting will always interupt audio, its better to use a poly~…

Stefan


Stefan Tiedje————x——-
–_____———–|————–
–(_|_ —-|—–|—–()——-
– _|_)—-|—–()————–
———-()——–www.ccmix.com


November 28, 2006 | 11:28 pm

Quote: Mattijs wrote on Tue, 28 November 2006 16:22
—————————————————-
> Quote: Eric Lyon wrote on Tue, 28 November 2006 14:19
> —————————————————-
> > IIRC the minimum delay time for tapin~/tapout~ (at least with feedback) can be no smaller than the MaxMSP vector size. This restriction can be circumvented in a custom designed external, so a multitap interpolating delay line object with internal feedback would be most useful.
> >
> > Eric
> —————————————————-
>
> Isn’t teeth~ supposed to be that?
> Mattijs
>
—————————————————-

Except that it’s not multitap.

Eric


November 29, 2006 | 10:05 am

Quote: Eric Lyon wrote on Wed, 29 November 2006 00:28
—————————————————-
> > Isn’t teeth~ supposed to be that?
> > Mattijs
> >
> Except that it’s not multitap.
>
> Eric
>

Ah, that’s right.


November 29, 2006 | 10:24 am

Eric Lyon wrote:
> Except that it’s not multitap.

But for shorter than the vectorsize, the word multitap is already
missleading. For the asked use, tapin~/tapout~ within a poly should be
able to do whatever one could ever need…

I place a receive object inside the poly~ for the tapin~ connection and
have a standard fadein/out to prevent clicks for switching on/off voices…
For communication I use midinote with the delaytime as note value…
Works as a charm…

Stefan


Stefan Tiedje————x——-
–_____———–|————–
–(_|_ —-|—–|—–()——-
– _|_)—-|—–()————–
———-()——–www.ccmix.com


November 29, 2006 | 12:38 pm

Quote: vade wrote on Tue, 28 November 2006 13:39
—————————————————-
> Do you have an example of a script which will work in Max, but crash
> the runtime? Im not trying to be pedantic, as Im trying to hunt down
> a few potential bugs.

anything which disconnects and connects signal cables,
especially when more thann 1 or 2 at a time.

but i assume it widely depends on operating system, I/O
hardware, and audio settings (I/O vector size and stuff)


November 29, 2006 | 2:44 pm

>>> IIRC the minimum delay time for tapin~/tapout~ (at least with
>>> feedback) can be no smaller than the MaxMSP vector size. This
>>> restriction can be circumvented in a custom designed external, so
>>> a multitap interpolating delay line object with internal feedback
>>> would be most useful.
>>>
>>> Eric
>> —————————————————-
>>
>> Isn’t teeth~ supposed to be that?
>> Mattijs
>>
> —————————————————-
>
>
> Except that it’s not multitap.

An alternative might be a bank of delay~ objects. Feed the same
signal into each delay~ but set them to different delay lengths.

————– http://www.bek.no/~pcastine/Litter/ ————-
Peter Castine +–> Litter Power & Litter Bundle for Jitter
Universal Binaries on the way
iCE: Sequencing, Recording &
Interface Building for |home | chez nous|
Max/MSP Extremely cool |bei uns | i nostri|
http://www.dspaudio.com/ http://www.castine.de



f.e
November 29, 2006 | 3:16 pm

Yes, but without feedback…

Peter Castine wrote:
>>>> IIRC the minimum delay time for tapin~/tapout~ (at least with
>>>> feedback) can be no smaller than the MaxMSP vector size. This
>>>> restriction can be circumvented in a custom designed external, so a
>>>> multitap interpolating delay line object with internal feedback
>>>> would be most useful.
>>>>
>>>> Eric
>>> —————————————————-
>>>
>>> Isn’t teeth~ supposed to be that?
>>> Mattijs
>>>
>> —————————————————-
>>
>>
>> Except that it’s not multitap.
>
> An alternative might be a bank of delay~ objects. Feed the same signal
> into each delay~ but set them to different delay lengths.
>
> ————– http://www.bek.no/~pcastine/Litter/ ————-
> Peter Castine +–> Litter Power & Litter Bundle for Jitter
> Universal Binaries on the way
> iCE: Sequencing, Recording &
> Interface Building for |home | chez nous|
> Max/MSP Extremely cool |bei uns | i nostri|
> http://www.dspaudio.com/ http://www.castine.de
>
>
>


f.e chanfrault | aka | personal computer music
> >>>>>> http://www.personal-computer-music.com
> >>>>>> |sublime music for a desperate people|



f.e
November 29, 2006 | 7:05 pm

Hello Roman,

i’ve done this, but got few strange results :

- first, the [in 1] seems to receive messages adressed to [in~1] (i got
an error gnagnghgngaga "flonum (connected to the [in 1] ): doesn’t
understand "tapconnect" when nobody talks to it).

- Then the out~ 1 & 2 don’t seem to output what they’re supposed to.
Having an [out~ 1] & an [out~ 2], i have to create a message [out 3]
(instead of simply say [out 1]) for the second msp outlet to let a
signal pass thru (!!).

- i send a list of ‘target n, ‘ (‘target 1, 1000′ then ‘target 2,
1500′, and so on) to specify different delays for the tapout~s inside,
and the only signal i got is a fucking 0ms undelayed one (i mean, when i
send a signal, it plays it like a bloody sfplay~, in time, with no delay
at all…).

f**k (not you of course, the poly~ object which i still hate to the end
of times).

f.e

Roman Thilenius wrote:
>
>> nah, not voices, building blocks.
>>
>
>
> btw, i have a whole set of poly "objects" around tapping
> delays. i would share it, but it is not "final" enough yet.
>
> why i am telling you about it is this: it is possible to
> create _poly~s containing the tapouts – but connect them
> all to only one tapin in the _root level of the patch.
>
>
> -110
> –
> http://vst-mac.info/
>
>


f.e chanfrault | aka | personal computer music
> >>>>>> http://www.personal-computer-music.com
> >>>>>> |sublime music for a desperate people|


November 29, 2006 | 7:23 pm

If the signal vector delay of feedback is a problem for your needs, I
would suggest you use poly~ with a signal vector size of 1. Then
tapin/tapout will work for you without a larger signal vector of
latency in the feedback. This will be more CPU intensive, but won’t
require you learning how to program DSP in C (your question on the
dev list suggests you could benefit from reading some DSP programming
books, or walking through more DSP code. For example for your needs,
have you checked out the taptools tap.multitap~?)

-Joshua



f.e
November 29, 2006 | 7:28 pm

Problem : the output of tapin~ outside the poly~ doesn’t seem to be
treated as a signal inside the poly~. The only instance receiving it is
the first one, not all instances as it use to be with signals in
poly~… At the end, max crashes… Any help ?

Roman Thilenius wrote:
>
>> nah, not voices, building blocks.
>>
>
>
> btw, i have a whole set of poly "objects" around tapping
> delays. i would share it, but it is not "final" enough yet.
>
> why i am telling you about it is this: it is possible to
> create _poly~s containing the tapouts – but connect them
> all to only one tapin in the _root level of the patch.
>
>
> -110
> –
> http://vst-mac.info/
>
>


f.e chanfrault | aka | personal computer music
> >>>>>> http://www.personal-computer-music.com
> >>>>>> |sublime music for a desperate people|


November 29, 2006 | 8:03 pm

Quote: Stefan Tiedje wrote on Wed, 29 November 2006 10:24
—————————————————-
> Eric Lyon wrote:
> > Except that it’s not multitap.
>
> But for shorter than the vectorsize, the word multitap is already
> missleading. For the asked use, tapin~/tapout~ within a poly should be
> able to do whatever one could ever need…
>
> I place a receive object inside the poly~ for the tapin~ connection and
> have a standard fadein/out to prevent clicks for switching on/off voices…
> For communication I use midinote with the delaytime as note value…
> Works as a charm…
>
> Stefan
>
>

I wonder if you could post this solution. I’d be interested to see it, especially if you can get a delaytime as short as 1 sample in your poly~ subpatch. But even if that is the case, I still argue that a standalone external would be better, because it saves you all that patching hassle, and would probably be more efficient on CPU too. Just don’t expect me to write one; I’m guessing that f.e may beat us to it :)

Eric


November 30, 2006 | 7:06 am

Roman Thilenius wrote:
> anything which disconnects and connects signal cables,
> especially when more thann 1 or 2 at a time.
>
> but i assume it widely depends on operating system, I/O
> hardware, and audio settings (I/O vector size and stuff)

It also depends on object versions. I remember there was an issue with
poly~ which would crash when closed/changed with audio on. This is
fixed, and some unanalyzed crashes might remain in the brain. If you
avoid scripting in general, you wouldn’t notice that the problem resolved…

Nontheless, scripting audio objects sucks for other reasons…

Stefan


Stefan Tiedje————x——-
–_____———–|————–
–(_|_ —-|—–|—–()——-
– _|_)—-|—–()————–
———-()——–www.ccmix.com



f.e
November 30, 2006 | 4:49 pm

I received this one too late… 90% of my needed answers here. Thanks again.

cheers

f.e

Stefan Tiedje wrote:
> Eric Lyon wrote:
>> Except that it’s not multitap.
>
> But for shorter than the vectorsize, the word multitap is already
> missleading. For the asked use, tapin~/tapout~ within a poly should be
> able to do whatever one could ever need…
>
> I place a receive object inside the poly~ for the tapin~ connection
> and have a standard fadein/out to prevent clicks for switching on/off
> voices…
> For communication I use midinote with the delaytime as note value…
> Works as a charm…
>
> Stefan
>


f.e chanfrault | aka | personal computer music
> >>>>>> http://www.personal-computer-music.com
> >>>>>> |sublime music for a desperate people|


November 30, 2006 | 10:52 pm

Eric Lyon wrote:
> I wonder if you could post this solution. I’d be interested to see
> it, especially if you can get a delaytime as short as 1 sample in
> your poly~ subpatch.

I don’t, I am interested in audible delays, usually at least 50 ms…

These are very rudimentary quick hacks…
I spacialize the delays to 8 outputs, but you can skip the gate~ in the
poly~…

Save this as St.apoly~ :

#P window setfont "Sans Serif" 9.;
#P window linecount 1;
#N vpatcher 20 74 620 474;
#P inlet 195 51 15 0;
#P window setfont "Sans Serif" 9.;
#P window linecount 1;
#P newex 276 138 35 196617 * 0.5;
#P newex 276 105 35 196617 dbtoa;
#N coll Fadercurve;
#P newobj 195 105 79 196617 coll Fadercurve;
#P newex 195 73 91 196617 route int;
#P newex 87 50 63 196617 patcherargs;
#P window linecount 2;
#P newex 156 272 43 196617 prepend mute;
#P window linecount 1;
#P newex 128 245 38 196617 t 0 1;
#P newex 69 73 106 196617 route int float list;
#P newex 187 138 51 196617 zl slice 1;
#P newex 101 105 89 196617 sel 0 1;
#P newex 69 268 42 196617 *~ 0.5;
#P newex 69 245 42 196617 +~ 1;
#P newex 101 126 37 196617 t 0.5 1;
#P newex 140 126 42 196617 t 0. 0 1;
#P newex 101 166 88 196617 pack 0. 300.;
#P newex 101 198 56 196617 line~ 0.5;
#P newex 128 223 29 196617 gate;
#P newex 50 291 29 196617 *~;
#P newex 69 222 42 196617 cycle~;
#P newex 191 166 63 196617 pack 0. 300.;
#P inlet 69 53 15 0;
#P outlet 156 310 15 0;
#P outlet 50 313 15 0;
#P fasten 15 3 5 0 170 95 55 95;
#P connect 5 0 0 0;
#P fasten 18 0 15 0 92 70 74 70;
#P connect 2 0 15 0;
#P connect 4 0 11 0;
#P connect 11 0 12 0;
#P connect 12 0 5 1;
#P connect 15 1 13 0;
#P fasten 15 0 13 0 74 100 106 100;
#P connect 13 0 10 0;
#P connect 10 0 8 0;
#P fasten 3 0 7 0 196 191 106 191;
#P connect 8 0 7 0;
#P connect 7 0 4 1;
#P fasten 22 0 12 1 281 265 106 265;
#P fasten 9 1 6 0 161 151 133 151;
#P connect 10 1 6 0;
#P connect 6 0 16 0;
#P connect 13 1 9 0;
#P connect 7 1 6 1;
#P connect 16 1 17 0;
#P connect 9 1 17 0;
#P fasten 16 0 1 0 133 304 161 304;
#P fasten 9 2 1 0 177 304 161 304;
#P connect 17 0 1 0;
#P connect 13 2 8 1;
#P connect 14 1 8 1;
#P fasten 15 2 14 0 138 101 192 101;
#P connect 9 0 3 0;
#P connect 23 0 19 0;
#P connect 19 0 20 0;
#P fasten 13 2 3 1 184 133 249 133;
#P fasten 14 0 3 1 192 160 249 160;
#P connect 19 1 21 0;
#P fasten 20 0 22 0 200 128 281 128;
#P connect 21 0 22 0;
#P pop;
#P newobj 46 204 62 196617 p St.env~;
#P newex 116 160 23 196617 > 0;
#P newex 156 226 38 196617 + 1;
#P newex 156 182 50 196617 random 8;
#P newex 156 160 58 196617 sel 0;
#P newex 116 139 50 196617 zl slice 1;
#P newex 22 284 206 196617 gate~ 8 1;
#P window linecount 2;
#N out~ 8;
#P newobj 218 306 26 196617 out~ 8;
#P objectname out[8];
#N out~ 7;
#P newobj 190 306 26 196617 out~ 7;
#P objectname out[7];
#N out~ 6;
#P newobj 162 306 26 196617 out~ 6;
#P objectname out[6];
#N out~ 5;
#P newobj 134 306 26 196617 out~ 5;
#P objectname out[5];
#N out~ 4;
#P newobj 106 306 26 196617 out~ 4;
#P objectname out[4];
#N out~ 3;
#P newobj 78 306 26 196617 out~ 3;
#P objectname out[3];
#N out~ 2;
#P newobj 50 306 26 196617 out~ 2;
#P objectname out[2];
#P message 10 76 34 196617 set tapout;
#P window linecount 1;
#P newex 10 55 46 196617 route 0;
#P newex 46 76 60 196617 prepend set;
#P newex 10 34 92 196617 loadmess $1;
#P toggle 138 254 15 0;
#P newex 111 204 83 196617 loadmess mute 1;
#P newex 76 118 50 196617 zl slice 1;
#P newex 98 230 50 196617 thispoly~;
#P window linecount 2;
#N out~ 1;
#P newobj 22 306 26 196617 out~ 1;
#P objectname out[1];
#P window linecount 1;
#N in 1;
#P newobj 76 96 25 196617 in 1;
#P newex 46 160 68 196617 tapout~ 1000;
#P newex 46 118 17 196617 r;
#P connect 1 0 25 0;
#P connect 24 0 25 0;
#P connect 25 1 4 0;
#P fasten 25 0 19 1 51 278 223 278;
#P connect 19 7 18 0;
#P connect 19 6 17 0;
#P connect 19 5 16 0;
#P connect 22 0 23 0;
#P connect 21 0 22 0;
#P connect 20 1 21 0;
#P connect 4 1 7 0;
#P connect 19 4 15 0;
#P connect 20 0 24 0;
#P connect 5 1 20 0;
#P connect 19 3 14 0;
#P connect 6 0 4 0;
#P connect 19 2 13 0;
#P connect 2 0 5 0;
#P connect 19 1 12 0;
#P connect 5 0 1 0;
#P connect 0 0 1 0;
#P connect 9 0 0 0;
#P fasten 11 0 0 0 15 110 51 110;
#P connect 10 1 9 0;
#P connect 19 0 3 0;
#P fasten 21 1 19 0 209 273 27 273;
#P fasten 23 0 19 0 161 273 27 273;
#P connect 10 0 11 0;
#P connect 8 0 10 0;
#P window clipboard copycount 26;

and this as St.apoly~.help

#P window setfont "Sans Serif" 9.;
#P window linecount 1;
#P newex 254 124 66 196617 flush;
#P button 225 26 15 0;
#P newex 328 95 36 196617 t b i b;
#P number 453 149 38 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P number 327 54 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P newex 327 74 50 196617 !/ 60000;
#P number 419 171 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P message 419 193 50 196617 open $1;
#P newex 254 75 26 196617 + 1;
#P newex 254 168 122 196617 pack 0 0 0;
#P newex 254 146 97 196617 * 500;
#P newex 254 54 66 196617 unpack 0 0 0;
#P user matrixctrl 254 32 386 18 MatrixDefaultCell.pct
MatrixDefaultBkgnd.pct 386 18 16 16 24 1 16 16 1 1 48 2 5120 0;
#P user meter~ 359 235 372 301 50 0 168 0 103 103 103 255 153 0 255 0 0
217 217 0 153 186 0 12 3 3 3 3;
#P user meter~ 344 235 357 301 50 0 168 0 103 103 103 255 153 0 255 0 0
217 217 0 153 186 0 12 3 3 3 3;
#P user meter~ 329 235 342 301 50 0 168 0 103 103 103 255 153 0 255 0 0
217 217 0 153 186 0 12 3 3 3 3;
#P user meter~ 314 235 327 301 50 0 168 0 103 103 103 255 153 0 255 0 0
217 217 0 153 186 0 12 3 3 3 3;
#P user meter~ 299 235 312 301 50 0 168 0 103 103 103 255 153 0 255 0 0
217 217 0 153 186 0 12 3 3 3 3;
#P user meter~ 284 235 297 301 50 0 168 0 103 103 103 255 153 0 255 0 0
217 217 0 153 186 0 12 3 3 3 3;
#P user meter~ 269 235 282 301 50 0 168 0 103 103 103 255 153 0 255 0 0
217 217 0 153 186 0 12 3 3 3 3;
#P newex 254 191 86 196617 prepend midinote;
#P user meter~ 254 235 267 301 50 0 168 0 103 103 103 255 153 0 255 0 0
217 217 0 153 186 0 12 3 3 3 3;
#P user ezdac~ 466 250 510 283 0;
#P user meter~ 40 159 120 172 50 0 168 0 103 103 103 255 153 0 255 0 0
217 217 0 153 186 0 12 3 3 3 3;
#P newex 50 105 60 196617 prepend set;
#P user multiSlider 50 30 173 69 -1. 1. 512 2937 15 1 0 2 0 0 0;
#M frgb 86 45 84;
#M brgb 255 255 255;
#M rgb2 127 127 127;
#M rgb3 0 0 0;
#M rgb4 37 52 91;
#M rgb5 74 105 182;
#M rgb6 112 158 18;
#M rgb7 149 211 110;
#M rgb8 187 9 201;
#M rgb9 224 62 37;
#M rgb10 7 114 128;
#P button 27 102 20 0;
#P newex 27 134 35 196617 click~;
#B color 5;
#P newex 27 210 50 196617 s tapout;
#P newex 27 180 70 196617 tapin~ 60000;
#P newex 254 212 115 196617 poly~ St.apoly~ 16;
#P message 207 125 43 196617 1000 0;
#P message 162 125 43 196617 1000 1;
#P comment 366 54 38 196617 BPM;
#P comment 654 37 122 196617 < - switch on delays here;
#P fasten 32 0 22 0 333 123 646 123 646 27 259 27;
#P connect 33 0 22 0;
#P connect 22 0 23 0;
#P connect 29 0 32 0;
#P connect 29 0 31 0;
#P connect 28 0 27 0;
#P connect 4 7 21 0;
#P connect 4 6 20 0;
#P connect 32 1 24 1;
#P connect 4 5 19 0;
#P connect 30 0 29 0;
#P connect 4 4 18 0;
#P connect 34 1 25 1;
#P connect 23 2 34 1;
#P connect 4 3 17 0;
#P connect 4 2 16 0;
#P connect 4 1 15 0;
#P connect 4 0 13 0;
#P fasten 27 0 4 0 424 212 259 212;
#P connect 14 0 4 0;
#P connect 2 0 14 0;
#P connect 3 0 14 0;
#P connect 25 0 14 0;
#P connect 24 0 25 0;
#P connect 34 0 24 0;
#P connect 26 0 34 0;
#P fasten 32 2 34 0 359 117 259 117;
#P connect 23 0 26 0;
#P connect 9 0 10 0;
#P connect 7 0 5 0;
#P connect 7 0 11 0;
#P connect 5 0 6 0;
#P connect 8 0 7 0;
#P connect 10 0 7 0;
#P window clipboard copycount 35;


Stefan Tiedje————x——-
–_____———–|————–
–(_|_ —-|—–|—–()——-
– _|_)—-|—–()————–
———-()——–www.ccmix.com



f.e
December 1, 2006 | 8:24 am

Great. Thanks for the sharing.

nb: we have to save the [p st.env~] inside as [st.env~]. Stefan nicely
thought about missing objects so this one was made as a patcher and its
patcherargs inside doesn’t like it .-)

- What does your ‘loadmess 0′ & ‘set tapout’ mechanism stand for ?
- What for did you use st.env~ ? (BTW, FaderCurve is not there)

best

f.e

Stefan Tiedje wrote:
> Eric Lyon wrote:
>> I wonder if you could post this solution. I’d be interested to see
>> it, especially if you can get a delaytime as short as 1 sample in
>> your poly~ subpatch.
>
> I don’t, I am interested in audible delays, usually at least 50 ms…
>
> These are very rudimentary quick hacks…
> I spacialize the delays to 8 outputs, but you can skip the gate~ in
> the poly~…
>
> Save this as St.apoly~ :
>
> #P window setfont "Sans Serif" 9.;
> #P window linecount 1;
> #N vpatcher 20 74 620 474;
> #P inlet 195 51 15 0;
> #P window setfont "Sans Serif" 9.;
> #P window linecount 1;
> #P newex 276 138 35 196617 * 0.5;
> #P newex 276 105 35 196617 dbtoa;
> #N coll Fadercurve;
> #P newobj 195 105 79 196617 coll Fadercurve;
> #P newex 195 73 91 196617 route int;
> #P newex 87 50 63 196617 patcherargs;
> #P window linecount 2;
> #P newex 156 272 43 196617 prepend mute;
> #P window linecount 1;
> #P newex 128 245 38 196617 t 0 1;
> #P newex 69 73 106 196617 route int float list;
> #P newex 187 138 51 196617 zl slice 1;
> #P newex 101 105 89 196617 sel 0 1;
> #P newex 69 268 42 196617 *~ 0.5;
> #P newex 69 245 42 196617 +~ 1;
> #P newex 101 126 37 196617 t 0.5 1;
> #P newex 140 126 42 196617 t 0. 0 1;
> #P newex 101 166 88 196617 pack 0. 300.;
> #P newex 101 198 56 196617 line~ 0.5;
> #P newex 128 223 29 196617 gate;
> #P newex 50 291 29 196617 *~;
> #P newex 69 222 42 196617 cycle~;
> #P newex 191 166 63 196617 pack 0. 300.;
> #P inlet 69 53 15 0;
> #P outlet 156 310 15 0;
> #P outlet 50 313 15 0;
> #P fasten 15 3 5 0 170 95 55 95;
> #P connect 5 0 0 0;
> #P fasten 18 0 15 0 92 70 74 70;
> #P connect 2 0 15 0;
> #P connect 4 0 11 0;
> #P connect 11 0 12 0;
> #P connect 12 0 5 1;
> #P connect 15 1 13 0;
> #P fasten 15 0 13 0 74 100 106 100;
> #P connect 13 0 10 0;
> #P connect 10 0 8 0;
> #P fasten 3 0 7 0 196 191 106 191;
> #P connect 8 0 7 0;
> #P connect 7 0 4 1;
> #P fasten 22 0 12 1 281 265 106 265;
> #P fasten 9 1 6 0 161 151 133 151;
> #P connect 10 1 6 0;
> #P connect 6 0 16 0;
> #P connect 13 1 9 0;
> #P connect 7 1 6 1;
> #P connect 16 1 17 0;
> #P connect 9 1 17 0;
> #P fasten 16 0 1 0 133 304 161 304;
> #P fasten 9 2 1 0 177 304 161 304;
> #P connect 17 0 1 0;
> #P connect 13 2 8 1;
> #P connect 14 1 8 1;
> #P fasten 15 2 14 0 138 101 192 101;
> #P connect 9 0 3 0;
> #P connect 23 0 19 0;
> #P connect 19 0 20 0;
> #P fasten 13 2 3 1 184 133 249 133;
> #P fasten 14 0 3 1 192 160 249 160;
> #P connect 19 1 21 0;
> #P fasten 20 0 22 0 200 128 281 128;
> #P connect 21 0 22 0;
> #P pop;
> #P newobj 46 204 62 196617 p St.env~;
> #P newex 116 160 23 196617 > 0;
> #P newex 156 226 38 196617 + 1;
> #P newex 156 182 50 196617 random 8;
> #P newex 156 160 58 196617 sel 0;
> #P newex 116 139 50 196617 zl slice 1;
> #P newex 22 284 206 196617 gate~ 8 1;
> #P window linecount 2;
> #N out~ 8;
> #P newobj 218 306 26 196617 out~ 8;
> #P objectname out[8];
> #N out~ 7;
> #P newobj 190 306 26 196617 out~ 7;
> #P objectname out[7];
> #N out~ 6;
> #P newobj 162 306 26 196617 out~ 6;
> #P objectname out[6];
> #N out~ 5;
> #P newobj 134 306 26 196617 out~ 5;
> #P objectname out[5];
> #N out~ 4;
> #P newobj 106 306 26 196617 out~ 4;
> #P objectname out[4];
> #N out~ 3;
> #P newobj 78 306 26 196617 out~ 3;
> #P objectname out[3];
> #N out~ 2;
> #P newobj 50 306 26 196617 out~ 2;
> #P objectname out[2];
> #P message 10 76 34 196617 set tapout;
> #P window linecount 1;
> #P newex 10 55 46 196617 route 0;
> #P newex 46 76 60 196617 prepend set;
> #P newex 10 34 92 196617 loadmess $1;
> #P toggle 138 254 15 0;
> #P newex 111 204 83 196617 loadmess mute 1;
> #P newex 76 118 50 196617 zl slice 1;
> #P newex 98 230 50 196617 thispoly~;
> #P window linecount 2;
> #N out~ 1;
> #P newobj 22 306 26 196617 out~ 1;
> #P objectname out[1];
> #P window linecount 1;
> #N in 1;
> #P newobj 76 96 25 196617 in 1;
> #P newex 46 160 68 196617 tapout~ 1000;
> #P newex 46 118 17 196617 r;
> #P connect 1 0 25 0;
> #P connect 24 0 25 0;
> #P connect 25 1 4 0;
> #P fasten 25 0 19 1 51 278 223 278;
> #P connect 19 7 18 0;
> #P connect 19 6 17 0;
> #P connect 19 5 16 0;
> #P connect 22 0 23 0;
> #P connect 21 0 22 0;
> #P connect 20 1 21 0;
> #P connect 4 1 7 0;
> #P connect 19 4 15 0;
> #P connect 20 0 24 0;
> #P connect 5 1 20 0;
> #P connect 19 3 14 0;
> #P connect 6 0 4 0;
> #P connect 19 2 13 0;
> #P connect 2 0 5 0;
> #P connect 19 1 12 0;
> #P connect 5 0 1 0;
> #P connect 0 0 1 0;
> #P connect 9 0 0 0;
> #P fasten 11 0 0 0 15 110 51 110;
> #P connect 10 1 9 0;
> #P connect 19 0 3 0;
> #P fasten 21 1 19 0 209 273 27 273;
> #P fasten 23 0 19 0 161 273 27 273;
> #P connect 10 0 11 0;
> #P connect 8 0 10 0;
> #P window clipboard copycount 26;
>
>
>
> and this as St.apoly~.help
>
> #P window setfont "Sans Serif" 9.;
> #P window linecount 1;
> #P newex 254 124 66 196617 flush;
> #P button 225 26 15 0;
> #P newex 328 95 36 196617 t b i b;
> #P number 453 149 38 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
> #P number 327 54 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
> #P newex 327 74 50 196617 !/ 60000;
> #P number 419 171 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
> #P message 419 193 50 196617 open $1;
> #P newex 254 75 26 196617 + 1;
> #P newex 254 168 122 196617 pack 0 0 0;
> #P newex 254 146 97 196617 * 500;
> #P newex 254 54 66 196617 unpack 0 0 0;
> #P user matrixctrl 254 32 386 18 MatrixDefaultCell.pct
> MatrixDefaultBkgnd.pct 386 18 16 16 24 1 16 16 1 1 48 2 5120 0;
> #P user meter~ 359 235 372 301 50 0 168 0 103 103 103 255 153 0 255 0
> 0 217 217 0 153 186 0 12 3 3 3 3;
> #P user meter~ 344 235 357 301 50 0 168 0 103 103 103 255 153 0 255 0
> 0 217 217 0 153 186 0 12 3 3 3 3;
> #P user meter~ 329 235 342 301 50 0 168 0 103 103 103 255 153 0 255 0
> 0 217 217 0 153 186 0 12 3 3 3 3;
> #P user meter~ 314 235 327 301 50 0 168 0 103 103 103 255 153 0 255 0
> 0 217 217 0 153 186 0 12 3 3 3 3;
> #P user meter~ 299 235 312 301 50 0 168 0 103 103 103 255 153 0 255 0
> 0 217 217 0 153 186 0 12 3 3 3 3;
> #P user meter~ 284 235 297 301 50 0 168 0 103 103 103 255 153 0 255 0
> 0 217 217 0 153 186 0 12 3 3 3 3;
> #P user meter~ 269 235 282 301 50 0 168 0 103 103 103 255 153 0 255 0
> 0 217 217 0 153 186 0 12 3 3 3 3;
> #P newex 254 191 86 196617 prepend midinote;
> #P user meter~ 254 235 267 301 50 0 168 0 103 103 103 255 153 0 255 0
> 0 217 217 0 153 186 0 12 3 3 3 3;
> #P user ezdac~ 466 250 510 283 0;
> #P user meter~ 40 159 120 172 50 0 168 0 103 103 103 255 153 0 255 0 0
> 217 217 0 153 186 0 12 3 3 3 3;
> #P newex 50 105 60 196617 prepend set;
> #P user multiSlider 50 30 173 69 -1. 1. 512 2937 15 1 0 2 0 0 0;
> #M frgb 86 45 84;
> #M brgb 255 255 255;
> #M rgb2 127 127 127;
> #M rgb3 0 0 0;
> #M rgb4 37 52 91;
> #M rgb5 74 105 182;
> #M rgb6 112 158 18;
> #M rgb7 149 211 110;
> #M rgb8 187 9 201;
> #M rgb9 224 62 37;
> #M rgb10 7 114 128;
> #P button 27 102 20 0;
> #P newex 27 134 35 196617 click~;
> #B color 5;
> #P newex 27 210 50 196617 s tapout;
> #P newex 27 180 70 196617 tapin~ 60000;
> #P newex 254 212 115 196617 poly~ St.apoly~ 16;
> #P message 207 125 43 196617 1000 0;
> #P message 162 125 43 196617 1000 1;
> #P comment 366 54 38 196617 BPM;
> #P comment 654 37 122 196617 < - switch on delays here;
> #P fasten 32 0 22 0 333 123 646 123 646 27 259 27;
> #P connect 33 0 22 0;
> #P connect 22 0 23 0;
> #P connect 29 0 32 0;
> #P connect 29 0 31 0;
> #P connect 28 0 27 0;
> #P connect 4 7 21 0;
> #P connect 4 6 20 0;
> #P connect 32 1 24 1;
> #P connect 4 5 19 0;
> #P connect 30 0 29 0;
> #P connect 4 4 18 0;
> #P connect 34 1 25 1;
> #P connect 23 2 34 1;
> #P connect 4 3 17 0;
> #P connect 4 2 16 0;
> #P connect 4 1 15 0;
> #P connect 4 0 13 0;
> #P fasten 27 0 4 0 424 212 259 212;
> #P connect 14 0 4 0;
> #P connect 2 0 14 0;
> #P connect 3 0 14 0;
> #P connect 25 0 14 0;
> #P connect 24 0 25 0;
> #P connect 34 0 24 0;
> #P connect 26 0 34 0;
> #P fasten 32 2 34 0 359 117 259 117;
> #P connect 23 0 26 0;
> #P connect 9 0 10 0;
> #P connect 7 0 5 0;
> #P connect 7 0 11 0;
> #P connect 5 0 6 0;
> #P connect 8 0 7 0;
> #P connect 10 0 7 0;
> #P window clipboard copycount 35;
>
>
>
>


f.e chanfrault | aka | personal computer music
> >>>>>> http://www.personal-computer-music.com
> >>>>>> |sublime music for a desperate people|


December 1, 2006 | 6:01 pm

Hi Stefan,

Thanks for sharing. The multislider into the click bit is quite stylish. However as it the patch does not address the very small delay problem I decided to give it a shot myself. Joshua’s suggestion to make a poly~ with vector size 1 almost works, except that attempting to set a poly~ to vs 1 got me an error message. The lowest size I could set was vs 2, which is probably sufficient for most things except for feedback filters (which, come to think of it, this is). The patches below are intended to recreate the demo patch for my external vdp~. The poly~ version is somewhat more CPU intensive, but not unreasonably so.

Eric

save as el.vdpoly.pat

#P window setfont "Sans Serif" 9.;
#P window linecount 1;
#P hidden newex 256 108 69 196617 loadmess 0.5;
#P newex 165 89 41 196617 *~ 0.5;
#P flonum 165 42 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P newex 235 88 46 196617 +~ 10.;
#P newex 235 66 41 196617 *~ 9.9;
#P newex 235 44 55 196617 cycle~ 0.1;
#P newex 165 64 61 196617 phasor~ 96;
#P flonum 243 132 35 9 -0.99 0.99 3 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P comment 282 133 71 196617 feedback amt.;
#P comment 287 91 55 196617 delay time;
#P newex 44 74 74 196617 loadmess vs 2;
#P newex 165 154 88 196617 poly~ el.vdpoly 1;
#P hidden connect 11 0 4 0;
#P connect 4 0 0 2;
#P connect 7 0 8 0;
#P connect 6 0 7 0;
#P fasten 8 0 0 1 240 129 209 129;
#P connect 10 0 0 0;
#P fasten 1 0 0 0 49 124 170 124;
#P connect 5 0 10 0;
#P connect 9 0 5 0;
#P window clipboard copycount 12;

save as use-el.vdpoly.pat

#P window setfont "Sans Serif" 9.;
#P window linecount 1;
#P hidden newex 256 108 69 196617 loadmess 0.5;
#P user ezdac~ 165 327 209 360 0;
#P user gain~ 165 190 24 100 158 0 1.071519 7.94321 10.;
#P newex 165 89 41 196617 *~ 0.5;
#P flonum 165 42 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P newex 235 88 46 196617 +~ 10.;
#P newex 235 66 41 196617 *~ 9.9;
#P newex 235 44 55 196617 cycle~ 0.1;
#P newex 165 64 61 196617 phasor~ 96;
#P flonum 243 132 35 9 -0.99 0.99 3 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P comment 282 133 71 196617 feedback amt.;
#P comment 287 91 55 196617 delay time;
#P newex 44 74 74 196617 loadmess vs 2;
#P newex 165 154 88 196617 poly~ el.vdpoly 1;
#P connect 4 0 0 2;
#P hidden connect 13 0 4 0;
#P connect 7 0 8 0;
#P connect 6 0 7 0;
#P fasten 8 0 0 1 240 129 209 129;
#P fasten 11 0 12 1 170 319 204 319;
#P connect 11 0 12 0;
#P connect 10 0 0 0;
#P fasten 10 0 11 0 170 134 125 134 125 177 170 177;
#P connect 0 0 11 0;
#P fasten 1 0 0 0 49 124 170 124;
#P connect 5 0 10 0;
#P connect 9 0 5 0;
#P window clipboard copycount 14;


December 1, 2006 | 10:52 pm

> Problem : the output of tapin~ outside the poly~ doesn’t seem to be
> treated as a signal inside the poly~. The only instance receiving it is
> the first one, not all instances as it use to be with signals in
> poly~… At the end, max crashes… Any help ?
>

so lets see … i am missing something here.

why do you exspect it to be a signal? the connection between
tapin and tapout is never a signal :)

now before i am telling you something wrong, lets see how i
connected it.

*opens MAX*

ah yes. you must use a message-only [in] in the poly to
avoid confusion. if there are audio ins too, eventually
make dummy inlets so that you an use non audio inputs
for the tap connection.

so, then your other question about [in 2] recieving stuff
from [in~ 2].
dont worry, this is normal. this ishow ins work in poly.
when i used it the first time i thought MAXMSP is fucking
with me, but it makes sense. just accept it and build you
poly stuff according to this rule.
[in~ 2] contains [in 2] – so if you do not want to use [in 2]
for a message, use an [in 3] of which there is no audio input
in the patch.
i needed 3 days to understand that, butmaybe you are faster.

[110.po.tap2~] demo in the attachment.

(very basic 2-channel and poly version of tapin~.
OS 9 users and some OS X users might have to remove
the extensions from the filenames.)

-110


December 1, 2006 | 11:24 pm


December 2, 2006 | 12:19 am

>> Joshua’s suggestion to make a poly~ with vector
>> size 1 almost works, except that attempting to set a poly~
>> to vs 1 got me an error message. The lowest size I could
>> set was vs 2, which is probably sufficient for most things
>> except for feedback filters

Oops. Sorry for the bad advice. This limitation should no longer be
necessary and we’ll look to removing the minimum vs of 2 for poly in
the future.

Thanks,
Joshua


December 2, 2006 | 9:05 am

>
>Oops. Sorry for the bad advice. This limitation should no longer be necessary and we’ll look to removing the minimum vs of 2 for poly in the future.
>

AMEN! I asked for this a year ago but never got feedback ;)

In the meanwhile a solution is to upsample your poly~ and use an identical vector size, f.i. [poly~ mypoly up 4 vs 4], I don’t know why "up 2 vs 2" doesn’t work in my system.
Fairly CPU hungry (but less than a global vector size 1).

m

HomePage: http://www.giri.it
Computer Music Italian Forum http://www.virtual-sound.com


December 4, 2006 | 5:50 pm

f.e wrote:
> Great. Thanks for the sharing.
>
> nb: we have to save the [p st.env~] inside as [st.env~]. Stefan nicely
> thought about missing objects so this one was made as a patcher and its
> patcherargs inside doesn’t like it .-)
>
> – What does your ‘loadmess 0′ & ‘set tapout’ mechanism stand for ?
> – What for did you use st.env~ ? (BTW, FaderCurve is not there)

My fadercurve isn’t essential in this case, its just an additional
feature to control the level, and as its initialized without the need
for it, it should still work. You’ll find the fadercurve coll within my
St.ools/abhaXions library…


Stefan Tiedje————x——-
–_____———–|————–
–(_|_ —-|—–|—–()——-
– _|_)—-|—–()————–
———-()——–www.ccmix.com


Viewing 34 posts - 1 through 34 (of 34 total)