Re: [Faudiostream-users] Stable high pass filter

2016-06-16 Thread Bart Brouns
Hi Julius,

I tried to come up with a minimal example, and came to the conclusion 
that it's not any particular piece of dsp that is at fault, but it's 
just that the compiler gets slow with elaborate constructions.

Since originally the stable filters where suspect, I tested with my 
classicVocoder.dsp, which has 2 or 3 high passes and many bandpasses.

All of them can be switched for unstable ones by setting a variable in 
lib/constants.lib  to 0 and recompiling.

In the same file, you can set the number of bands the vocoder has.
Note: Changing the nrBands only changes how many of everything we have, 
it's the same dsp.



To duplicate my experiment, do:

git clone https://github.com/magnetophon/VoiceOfFaust.git

or, if you already have it, git checkout master.

cd VoiceOfFaust
cp lib/smallConstants.lib lib/constants.lib


all testing is done with:
faust2jack -t 9 -time -osc -vec  classicVocoder.dsp


with nrBands = 4 and stableFilters 1, classicVocoder.dsp compiles in 40s
so there is no problem with stableFilters or the way it's used here.

with nrBands = 32 and stableFilters = 0, it takes 2min40,which makes sense, 
cause it's doing a lot more work.
so a high number of bands is also no problem.

with nrBands = 16 and stableFilters = 1, it takes 2min05
so no problem with medium nr of bands and stable filters either

but then:
with nrBands = 32 and stableFilters = 1, we're looking at 7min50!

to show that the problem is also not necessarily in stableFilters or high 
number of bands:
cp lib/bigConstants.lib lib/constants.lib
It has nrBands = 16, stableFilters = 0, but lot's of other features turned on, 
and takes 6min25

To give a bit of context on how big the resulting dsp's are:
with bigConstants iit takes 24% cpu at runtime, and with smallConstants 
with nrBands changed to 32 takes about the same.

Unfortunately, the version that I'd like to use, bigConstants with 16 bands and 
stableFilters, takes 3 hours and 51 minutes to compile,
even though it uses no more than 20% of my RAM.
It uses 31% CPU at runtime.

For my entry in the Faust Awards, I have 9 different of these beasts, so
it'd be nice if they could compile quicker! ;)


Many thanks,
Bart.


On Wed, Jun 15, 2016 at 04:14:08PM -0700, Julius Smith wrote:
>Hi Bart,
>
>Actually I am on the master branch.
>
>6 minutes is still very long for a compile time!  If any minimized
>example takes more than a few seconds to compile, I would like to
>drill down into that.  We need that minimized example.
>
>As I mentioned earlier, there appeared to be a circular dependency in
>the Evaluation phase for the compiler.  However, something had to have
>terminated the evaluation, so maybe infinite recursion is not a
>possible explanation?
>
>- Julius
>
>
>On Wed, Jun 15, 2016 at 1:55 AM, Bart Brouns  wrote:
>> Hi Julius,
>>
>> Looks like you are using faust 2, right?
>>
>> I built the latest faust 1 to reproduce your issue, and got 12 min compile
>> time for the stable highpass and 6 min for the regular one.
>>
>> Faust 2.0-a41 gives me a huge RAM usage and endless build time.
>>
>> I'm  unable to build Faust 2 from git because my distro only provides .so
>> libs for llvm, while Faust looks for .a libs.
>>
>> Thanks,
>> Bart.
>>
>>
>> On Tue, Jun 14, 2016 at 09:08:40PM -0700, Julius Smith wrote:
>>>
>>> I tried
>>>
>>> highpassStable(N,fc) = highpass(N,fc);
>>>
>>> and it still compiles forever
>>
>>
>>
>
>
>
>-- 
>Julius O. Smith III 
>Professor of Music and, by courtesy, Electrical Engineering
>CCRMA, Stanford University
>http://ccrma.stanford.edu/~jos/

--
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are 
consuming the most bandwidth. Provides multi-vendor support for NetFlow, 
J-Flow, sFlow and other flows. Make informed decisions using capacity planning
reports. http://sdm.link/zohomanageengine
___
Faudiostream-users mailing list
Faudiostream-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/faudiostream-users


Re: [Faudiostream-users] Inputs outputs composition

2016-06-16 Thread Pierre Lecomte
That was it, 
Thank you !

Pierre

> Hi Pierre,
> 
> You're looking for:
> interleave(3,2)
> 
> Cheers,
> Bart
> 
> On Thu, Jun 16, 2016 at 11:33:50AM -0400, Pierre Lecomte wrote:
> >Hello,
> >
> >I'm wondering if it's possible to do some merge or split composition
> >between A and B when the numbers of outputs of A is equal to number of
> >inputs of B
> >
> >For example : A has (2*3 = 6 outputs) and B has (3*2) = 6 inputs
> >
> >When I do A<:B, or A>:B or A:B I've got this connection diagram
> >
> >A(0) => B(0)
> >A(1) => B(1)
> >A(2) => B(2)
> >A(3) => B(3)
> >A(4) => B(4)
> >A(5) => B(5)
> >
> >I would like to implement an operation like merge or split but with the
> >following result :
> >
> >A(0) => B(0)
> >A(1) => B(2)
> >A(2) => B(4)
> >
> >A(3)=> B(1)
> >A(4)=> B(3)
> >A(5)=> B(5)
> >
> >
> >Any ideas ?
> >Pierre
> >
> >
> >---
> >--- What NetFlow Analyzer can do for you? Monitors network bandwidth and
> >traffic patterns at an interface-level. Reveals which users, apps, and
> >protocols are consuming the most bandwidth. Provides multi-vendor support
> >for NetFlow, J-Flow, sFlow and other flows. Make informed decisions using
> >capacity planning reports. http://sdm.link/zohomanageengine
> >___
> >Faudiostream-users mailing list
> >Faudiostream-users@lists.sourceforge.net
> >https://lists.sourceforge.net/lists/listinfo/faudiostream-users


--
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are 
consuming the most bandwidth. Provides multi-vendor support for NetFlow, 
J-Flow, sFlow and other flows. Make informed decisions using capacity planning
reports. http://sdm.link/zohomanageengine
___
Faudiostream-users mailing list
Faudiostream-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/faudiostream-users


Re: [Faudiostream-users] Inputs outputs composition

2016-06-16 Thread Bart Brouns
Hi Pierre,

You're looking for:
interleave(3,2)

Cheers,
Bart

On Thu, Jun 16, 2016 at 11:33:50AM -0400, Pierre Lecomte wrote:
>Hello,
>
>I'm wondering if it's possible to do some merge or split composition between A
>and B when the numbers of outputs of A is equal to number of inputs of B
>
>For example : A has (2*3 = 6 outputs) and B has (3*2) = 6 inputs
>
>When I do A<:B, or A>:B or A:B I've got this connection diagram
>
>A(0) => B(0)
>A(1) => B(1)
>A(2) => B(2)
>A(3) => B(3)
>A(4) => B(4)
>A(5) => B(5)
>
>I would like to implement an operation like merge or split but with the
>following result :
>
>A(0) => B(0)
>A(1) => B(2)
>A(2) => B(4)
>
>A(3)=> B(1)
>A(4)=> B(3)
>A(5)=> B(5)
>
>
>Any ideas ?
>Pierre
>
>
>--
>What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
>patterns at an interface-level. Reveals which users, apps, and protocols are
>consuming the most bandwidth. Provides multi-vendor support for NetFlow,
>J-Flow, sFlow and other flows. Make informed decisions using capacity planning
>reports. http://sdm.link/zohomanageengine
>___
>Faudiostream-users mailing list
>Faudiostream-users@lists.sourceforge.net
>https://lists.sourceforge.net/lists/listinfo/faudiostream-users

--
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are 
consuming the most bandwidth. Provides multi-vendor support for NetFlow, 
J-Flow, sFlow and other flows. Make informed decisions using capacity planning
reports. http://sdm.link/zohomanageengine
___
Faudiostream-users mailing list
Faudiostream-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/faudiostream-users


[Faudiostream-users] Inputs outputs composition

2016-06-16 Thread Pierre Lecomte
Hello,

I'm wondering if it's possible to do some merge or split composition between A 
and B when the numbers of outputs of A is equal to number of inputs of B

For example : A has (2*3 = 6 outputs) and B has (3*2) = 6 inputs

When I do A<:B, or A>:B or A:B I've got this connection diagram

A(0) => B(0)
A(1) => B(1)
A(2) => B(2)
A(3) => B(3)
A(4) => B(4)
A(5) => B(5)

I would like to implement an operation like merge or split but with the 
following result :

A(0) => B(0)
A(1) => B(2)
A(2) => B(4)

A(3)=> B(1)
A(4)=> B(3)
A(5)=> B(5)


Any ideas ?
Pierre


--
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are 
consuming the most bandwidth. Provides multi-vendor support for NetFlow, 
J-Flow, sFlow and other flows. Make informed decisions using capacity planning
reports. http://sdm.link/zohomanageengine
___
Faudiostream-users mailing list
Faudiostream-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/faudiostream-users


Re: [Faudiostream-users] Staccato: Help

2016-06-16 Thread Yann Orlarey
Hi Nycholas,

Here is a simple attack-release envelop generator.

//--- `ar(a,r,t)` ---
// Simple attack-release envelop generator
//
// Where:
// * `a` = attack time in samples (a>0)
// * `r` = release time in samples (r>0)
// * `t` = trig signal, restart the envelop when not 0
//
// Example:
//
//  process = button("play") : ar(100,1) *
library("music.lib").osc(440);
//
ar(a,r,t) = rec~(_,_):!,_
  with {
  // n is the time position in the envelop
  // v is the value of the envelop
  rec(n,v) = (n+1)*(t==0),
  max(0, v*(t==0) + (n=a)/r);
  };


Cheers

Yann



2016-06-16 8:55 GMT+02:00 Albert Graef :

> Yes, I see (or rather hear) what you mean. The adsr from the library
> doesn't properly deal with zero sustains. Sorry, I don't have a ready-made
> solution for this. Any dsp buff here who knows how to do an envelop which
> enters the release phase immediately after attack (i.e., like ASR, but
> without the S)? This shouldn't be too hard to do, but I can't wrap my head
> around it at this time in the morning. ;-)
>
> On Thu, Jun 16, 2016 at 2:36 AM, Nycholas Maia  wrote:
>
>> Hi Albert,
>>
>> Thank you for your quick response.
>> Now the ADSR envelop start to work, but I can't get the staccato sound *(very
>> fast/short sound)...like a percussive musical instrument.*
>> If I press and sustain a MIDI keyboard DOWN, the FL play a continuos
>> sound. And I don't want it now.
>> Could you help me?
>>
>> Here is my simple code just to test the ADSR envelop and percussive
>> sound:
>> ===
>> import("music.lib");
>> import("instrument.lib");
>>
>> freq = nentry("freq", 440, 20, 2, 1);
>> gain = nentry("gain", 1, 0, 10, 0.01);
>> gate = button("gate");
>>
>> sine = osc(freq) * gain;
>>
>> Attack = hslider("Attack (ms)", 100, 0, 200, 1);
>> Decay = hslider("Decay (ms)", 100, 0, 200, 1);
>> Sustain = hslider("Sustain (percent)", 10, 0, 100, 1);
>> Release = hslider("Release (ms)", 100, 0, 200, 1);
>>
>> // Convert to milliseconds:
>> ADSR_env = adsr(Attack/1000, Decay/1000, 90, Release/1000, gate);
>>
>> process = (sine * ADSR_env) <: _, _;
>> ==
>>
>> Thank you for your patience.
>>
>> Kind regards!
>> Nyck
>>
>> On Wed, Jun 15, 2016 at 3:52 PM, Albert Graef  wrote:
>>
>>> Hi Nycholas,
>>>
>>> AFAICT from a quick glance, you've got two problems in your code:
>>>
>>> - gate must be a 0/1 signal if you want to use it to trigger asr/adsr.
>>> That doesn't work if you pipe it through the smoothing filter.
>>>
>>> - you only multiply the signal by the envelop, not by envelop *and* gate
>>>
>>> On Wed, Jun 15, 2016 at 5:00 AM, Nycholas Maia 
>>> wrote:
>>>
 gate = button("gate") : smooth(0.999); // 0/1

>>>
>>> Remove ' : smooth(0.999)' here.
>>>
>>> process = (sine * ASR_env) * gate <: _, _;
 //process = (sine * ADSR_env) * gate <: _, _;

>>>
>>> Remove ' * gate' here.
>>>
>>> --
>>> Dr. Albert Gr"af
>>> Computer Music Research Group, JGU Mainz, Germany
>>> Email:  aggr...@gmail.com
>>> WWW:https://plus.google.com/+AlbertGraef
>>>
>>
>>
>
>
> --
> Dr. Albert Gr"af
> Computer Music Research Group, JGU Mainz, Germany
> Email:  aggr...@gmail.com
> WWW:https://plus.google.com/+AlbertGraef
>
>
> --
> What NetFlow Analyzer can do for you? Monitors network bandwidth and
> traffic
> patterns at an interface-level. Reveals which users, apps, and protocols
> are
> consuming the most bandwidth. Provides multi-vendor support for NetFlow,
> J-Flow, sFlow and other flows. Make informed decisions using capacity
> planning
> reports.
> http://pubads.g.doubleclick.net/gampad/clk?id=1444514421=/41014381
> ___
> Faudiostream-users mailing list
> Faudiostream-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/faudiostream-users
>
>
--
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are 
consuming the most bandwidth. Provides multi-vendor support for NetFlow, 
J-Flow, sFlow and other flows. Make informed decisions using capacity planning
reports. http://pubads.g.doubleclick.net/gampad/clk?id=1444514421=/41014381___
Faudiostream-users mailing list
Faudiostream-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/faudiostream-users


Re: [Faudiostream-users] Staccato: Help

2016-06-16 Thread Albert Graef
Yes, I see (or rather hear) what you mean. The adsr from the library
doesn't properly deal with zero sustains. Sorry, I don't have a ready-made
solution for this. Any dsp buff here who knows how to do an envelop which
enters the release phase immediately after attack (i.e., like ASR, but
without the S)? This shouldn't be too hard to do, but I can't wrap my head
around it at this time in the morning. ;-)

On Thu, Jun 16, 2016 at 2:36 AM, Nycholas Maia  wrote:

> Hi Albert,
>
> Thank you for your quick response.
> Now the ADSR envelop start to work, but I can't get the staccato sound *(very
> fast/short sound)...like a percussive musical instrument.*
> If I press and sustain a MIDI keyboard DOWN, the FL play a continuos
> sound. And I don't want it now.
> Could you help me?
>
> Here is my simple code just to test the ADSR envelop and percussive sound:
> ===
> import("music.lib");
> import("instrument.lib");
>
> freq = nentry("freq", 440, 20, 2, 1);
> gain = nentry("gain", 1, 0, 10, 0.01);
> gate = button("gate");
>
> sine = osc(freq) * gain;
>
> Attack = hslider("Attack (ms)", 100, 0, 200, 1);
> Decay = hslider("Decay (ms)", 100, 0, 200, 1);
> Sustain = hslider("Sustain (percent)", 10, 0, 100, 1);
> Release = hslider("Release (ms)", 100, 0, 200, 1);
>
> // Convert to milliseconds:
> ADSR_env = adsr(Attack/1000, Decay/1000, 90, Release/1000, gate);
>
> process = (sine * ADSR_env) <: _, _;
> ==
>
> Thank you for your patience.
>
> Kind regards!
> Nyck
>
> On Wed, Jun 15, 2016 at 3:52 PM, Albert Graef  wrote:
>
>> Hi Nycholas,
>>
>> AFAICT from a quick glance, you've got two problems in your code:
>>
>> - gate must be a 0/1 signal if you want to use it to trigger asr/adsr.
>> That doesn't work if you pipe it through the smoothing filter.
>>
>> - you only multiply the signal by the envelop, not by envelop *and* gate
>>
>> On Wed, Jun 15, 2016 at 5:00 AM, Nycholas Maia 
>> wrote:
>>
>>> gate = button("gate") : smooth(0.999); // 0/1
>>>
>>
>> Remove ' : smooth(0.999)' here.
>>
>> process = (sine * ASR_env) * gate <: _, _;
>>> //process = (sine * ADSR_env) * gate <: _, _;
>>>
>>
>> Remove ' * gate' here.
>>
>> --
>> Dr. Albert Gr"af
>> Computer Music Research Group, JGU Mainz, Germany
>> Email:  aggr...@gmail.com
>> WWW:https://plus.google.com/+AlbertGraef
>>
>
>


-- 
Dr. Albert Gr"af
Computer Music Research Group, JGU Mainz, Germany
Email:  aggr...@gmail.com
WWW:https://plus.google.com/+AlbertGraef
--
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are 
consuming the most bandwidth. Provides multi-vendor support for NetFlow, 
J-Flow, sFlow and other flows. Make informed decisions using capacity planning
reports. http://pubads.g.doubleclick.net/gampad/clk?id=1444514421=/41014381___
Faudiostream-users mailing list
Faudiostream-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/faudiostream-users


Re: [Faudiostream-users] [Faudiostream-devel] SR now a float

2016-06-16 Thread Yann Orlarey
Hi Julius,

You can. Actually the fSamplingFreq field is still an int and still
accessible. In the definition of SR it is converted to float or double
according to the floating point size option of the Faust compiler. Is it
enough ?

Cheers,
Yann

Yann Orlarey

Directeur scientifique
www.grame.fr



2016-06-14 23:43 GMT+02:00 Julius Smith :

> Hi guys,
>
> Making SR a float is great, but can we make it double?  A 32-bit float can
> specify a quartz clock frequency to only about 1% accuracy.
>
> - Julius
>
>
> On Tue, Jun 14, 2016 at 11:40 AM Albert Graef  wrote:
>
>> Hi Yann,
>>
>>
>> On Tue, Jun 14, 2016 at 7:40 PM, Yann Orlarey  wrote:
>>
>>> But you know that I would not make you such a bad thing, right ?
>>>
>>
>> Really? BTW, talking about high blood pressure, I'm still waiting for
>> that LAC17 proposal to show up on lac-team some time... Touché. ;-)
>>
>>
>>> Concerning a test suite, you can use the one in tools/faust2appls/test.
>>> It tests all the faust2xxx scripts.
>>>
>>
>> Ah yes, I think I remember that now. Thanks for the reminder!
>>
>> Cheers,
>> Albert
>>
>> --
>> Dr. Albert Gr"af
>> Computer Music Research Group, JGU Mainz, Germany
>> Email:  aggr...@gmail.com
>> WWW:https://plus.google.com/+AlbertGraef
>>
>> --
>> What NetFlow Analyzer can do for you? Monitors network bandwidth and
>> traffic
>> patterns at an interface-level. Reveals which users, apps, and protocols
>> are
>> consuming the most bandwidth. Provides multi-vendor support for NetFlow,
>> J-Flow, sFlow and other flows. Make informed decisions using capacity
>> planning
>> reports.
>> http://pubads.g.doubleclick.net/gampad/clk?id=1444514421=/41014381
>> ___
>> Faudiostream-devel mailing list
>> faudiostream-de...@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/faudiostream-devel
>>
>
--
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are 
consuming the most bandwidth. Provides multi-vendor support for NetFlow, 
J-Flow, sFlow and other flows. Make informed decisions using capacity planning
reports. http://pubads.g.doubleclick.net/gampad/clk?id=1444514421=/41014381___
Faudiostream-users mailing list
Faudiostream-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/faudiostream-users