Re: [Faudiostream-users] Faust HTTP speed

2023-01-03 Thread Aaron Heller
Hi Stephane,
Sorry, it's 10ms to update a parameter... math error on my part.

As I said, it takes about 30 seconds to update a Faust jack client with
3136 (=49*64) parameters, which is roughly 10 ms per parameter.  This was
with jack, the jack client written in Faust, and the Python script
performing the update, all running on my MacBook Pro.  There are two
versions of the Python, one that opens a new connection for each update and
one that keeps the connection open; the timing for both is the same.  I
also tried it with jack and the Faust jaxk client running on a RPi4 and the
Python running on my MBP, with the same ~10ms/update result.

The 49x64 parameter matrix corresponds to playing sixth-order ambisonics
over a 64 speaker array, which is the situation at the Stage at CCRMA.  The
decoder has two matrices, high and low frequencies, so about a minute to
update.  I'm looking for a solution that would be at least 10x faster.

Thanks...

Aaron

On Tue, Jan 3, 2023 at 12:44 AM Stéphane Letz  wrote:

> How do you measure this « 100 ms to update » delay?
>
> Stéphane
>
> > Le 3 janv. 2023 à 02:12, Aaron Heller  a écrit :
> >
> > As a warmup exercise for the next version of my ambisonic decoder
> engine, I made a matrix mixer in Faust and compiled it with httpd support.
> You can see the code and the Python program I wrote to control it in the
> repo --- mmd.dsp and mmd_control.py, respectively:
> >
> https://bitbucket.org/ambidecodertoolbox/adt_evaluation/src/AES153/faust/
> >
> > It looks like it takes ~100 ms to update a single entry, so I assume
> it's processing one request per slow-time loop.  In my application, these
> matrices could have thousands of entries, so, for example, a 49x64 matrix
> takes over 30 seconds to update.  Is there a way to speed this up?  Are
> there better ways to update the coefficients of an array?  Over the network
> is convenient, but loading from a local file would be fine too.
> >
> > Thanks...
> >
> > Aaron Heller
> > Menlo Park, CA  US
> >
> > ___
> > Faudiostream-users mailing list
> > Faudiostream-users@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/faudiostream-users
>
>
___
Faudiostream-users mailing list
Faudiostream-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/faudiostream-users


[Faudiostream-users] Faust HTTP speed

2023-01-02 Thread Aaron Heller
As a warmup exercise for the next version of my ambisonic decoder engine, I
made a matrix mixer in Faust and compiled it with httpd support. You can
see the code and the Python program I wrote to control it in the repo ---
mmd.dsp and mmd_control.py, respectively:
  https://bitbucket.org/ambidecodertoolbox/adt_evaluation/src/AES153/faust/

It looks like it takes ~100 ms to update a single entry, so I assume it's
processing one request per slow-time loop.  In my application, these
matrices could have thousands of entries, so, for example, a 49x64 matrix
takes over 30 seconds to update.  Is there a way to speed this up?  Are
there better ways to update the coefficients of an array?  Over the network
is convenient, but loading from a local file would be fine too.

Thanks...

Aaron Heller
Menlo Park, CA  US
___
Faudiostream-users mailing list
Faudiostream-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/faudiostream-users


[Faudiostream-users] Online FAUST compiler and MacOS Monterey quarantine -- a solution

2023-01-02 Thread Aaron Heller
I'm sending this along in case someone else encounters it and this saves
them 30+ minutes of head scratching and online searching.

MacOS Monterey adds the extended attribute "com.apple.quarantine" to any
files that are downloaded from the internet. Even if you've download a zip
file, the contents get marked when it is unzipped. So when I use the FAUST
online compiler (a wonderful resource, by the way) to make a VST or AU
plugin, host programs like Plogue Bidule will refuse to load it, throwing
an error about unsigned binaries.

Apple is trying to protect you from running malware, so use this only if
you trust the source of the file.  A better fix would be if the online
FAUST compiler signed the binaries it produced, but here's what you can do
for now:

In a terminal, xattr shows the extended attribute:

heller% xattr -r CMAP8c8s4c3h3vacnn3dvienna.vst
CMAP8c8s4c3h3vacnn3dvienna.vst/Contents/MacOS/CMAP8c8s4c3h3vacnn3dvienna:
com.apple.quarantine
CMAP8c8s4c3h3vacnn3dvienna.vst/Contents/MacOS: com.apple.quarantine
CMAP8c8s4c3h3vacnn3dvienna.vst/Contents/Info.plist: com.apple.quarantine
CMAP8c8s4c3h3vacnn3dvienna.vst/Contents/PkgInfo: com.apple.quarantine
CMAP8c8s4c3h3vacnn3dvienna.vst/Contents: com.apple.quarantine
CMAP8c8s4c3h3vacnn3dvienna.vst: com.apple.quarantine


The fix is to remove the attribute:

heller% xattr -dr com.apple.quarantine CMAP8c8s4c3h3vacnn3dvienna.vst
heller% xattr -r CMAP8c8s4c3h3vacnn3dvienna.vst

[no output]



Aaron Heller
Menlo Park, CA  US
___
Faudiostream-users mailing list
Faudiostream-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/faudiostream-users


[Faudiostream-users] Cross-compiling Win64 VSTs on MacOS 12.6.2, missing dll

2023-01-02 Thread Aaron Heller
I'm trying to compile a FAUST dsp file to VST for Win64 Plogue Bidule as
the host.  This worked fine before I upgraded to Monterey and reinstalled
MacPorts.

Using faust2faustvst on my Mac produces a VST that works fine in Bidule on
my Mac (Intel processor).

Using faust2w64vst on MacOS, produces a VST DLL that results in an Error
126 when Bidule on Win64 tries to load it (calls "LoadLibrary").  The
online Faust compiler produces a DLL that loads without error.

Looking at the two DLLs in a Win64 dependencies checker (dependancies.exe),
I see that the one compiled on my Mac needs libwinpthread-1.dll and the one
compiled online does not.  Note that the dependency checker stops at the
first missing file, so there may be others.

I'm using mingw-w64 version 10.0.0 from MacPorts as the cross-compiler
toolchain on my Mac, which includes gcc version 12.2. What version of mingw
does the online compiler use?  Ubuntu 22.04LTS (jammy) uses mingw-w64
8.0.0.

I'll note that when linking, I get the warning:
  x86_64-w64-mingw32-dllwrap: WARNING: x86_64-w64-mingw32-dllwrap is
deprecated, use gcc -shared or ld -shared instead
Simply substituting "ld -shared" for dllwrap results in the error:
  x86_64-w64-mingw32-ld: unrecognized option '--target=x86_64-w64-mingw32'

Looks like a pretty mature port
   https://ports.macports.org/port/mingw-w64/details/

Thanks for any help with this...

Aaron Heller
Menlo Park, CA  US
___
Faudiostream-users mailing list
Faudiostream-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/faudiostream-users


Re: [Faudiostream-users] Compile error message with ADT

2019-11-13 Thread Aaron Heller
I've removed the now-conflicting definition of "route" from the ADT decoder
and pushed it to the ADT repo.
https://bitbucket.org/ambidecodertoolbox/adt/src/master/
As Henrik noted, it was not used in the implementation, so an easy fix!

Thanks... Aaron

On Mon, Oct 28, 2019 at 8:05 AM Stéphane Letz  wrote:

>
> > Le 28 oct. 2019 à 15:40, Henrik Frisk  a écrit :
> >
> > Thank you Stéphane for the swift response!
>
> The point is that  « route »  is now a language primitive, so any code
> that was defining the symbol will possibly break. If the code was initially
> generated by « Ambisonic Decoder Toolkit », then ADT will need to be
> updated.
>
> >
> > I will consider upgrading to Master dev. Are there any things that are
> not funktional in dev?
> >
> > Henrik
> >
>
> Nothing I am aware of  ((-;
>
> Stéphane
>
> ___
> Faudiostream-users mailing list
> Faudiostream-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/faudiostream-users
>
___
Faudiostream-users mailing list
Faudiostream-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/faudiostream-users


Re: [Faudiostream-users] Precision of constants in generated C++

2016-04-25 Thread Aaron Heller
Thanks!  Aaron

On Sunday, April 24, 2016, Stéphane Letz  wrote:

> Fixed on GIT for 'float' and ‘double'. Note the ‘quad’ handling is not yet
> fully implemented as deferent places in the compiler.
>
> Stéphane
>
>
> > Le 24 avr. 2016 à 03:43, Aaron Heller >
> a écrit :
> >
> > Looking over the C++ that Faust generates, it seems that constants are
> always single precision, regardless of the translation options.  I
> appreciate that the input and output samples are aways going to be single
> precision, but there are times when it would be useful to have greater
> precision internally, say the coefficients in a biquad IIR filter when the
> cutoff frequency is much lower than the sample rate.
> >
> > To illustrate, the program:
> >
> > process = _: *(1/9) :_;
> >
> > with no options compiles to:
> >
> > output0[i] = FAUSTFLOAT((0.11f * float(input0[i])));
> >
> > with -double compiles to:
> >
> > output0[i] = FAUSTFLOAT((0.11 * double(input0[i])));
> >
> > and -quad
> >
> > output0[i] = FAUSTFLOAT((0.11 * quad(input0[i])));
> >
> > so the samples are getting converted, but the representation of 1/9
> remains single precision.  I'd expect to see a lot more digits in double
> and quad.   I'm using this version of Faust currently:
> >
> > bash-3.2$ faust -v
> > FAUST : DSP to C, C++, JAVA, JavaScript/ASMJavaScript, WebAssembly, LLVM
> IR version 2.0.a42
> > Copyright (C) 2002-2016, GRAME - Centre National de Creation Musicale.
> All rights reserved.
> >
> >
> > Thanks for any feedback or advice...
> >
> > Aaron Heller (hel...@ai.sri.com )
> > Menlo Park, CA  US
> >
> --
> > Find and fix application performance issues faster with Applications
> Manager
> > Applications Manager provides deep performance insights into multiple
> tiers of
> > your business applications. It resolves application problems quickly and
> > reduces your MTTR. Get your free trial!
> >
> https://ad.doubleclick.net/ddm/clk/302982198;130105516;z___
> > Faudiostream-users mailing list
> > Faudiostream-users@lists.sourceforge.net 
> > https://lists.sourceforge.net/lists/listinfo/faudiostream-users
>
>
>
> --
> Find and fix application performance issues faster with Applications
> Manager
> Applications Manager provides deep performance insights into multiple
> tiers of
> your business applications. It resolves application problems quickly and
> reduces your MTTR. Get your free trial!
> https://ad.doubleclick.net/ddm/clk/302982198;130105516;z
> ___
> Faudiostream-users mailing list
> Faudiostream-users@lists.sourceforge.net 
> https://lists.sourceforge.net/lists/listinfo/faudiostream-users
>
--
Find and fix application performance issues faster with Applications Manager
Applications Manager provides deep performance insights into multiple tiers of
your business applications. It resolves application problems quickly and
reduces your MTTR. Get your free trial!
https://ad.doubleclick.net/ddm/clk/302982198;130105516;z___
Faudiostream-users mailing list
Faudiostream-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/faudiostream-users


[Faudiostream-users] Precision of constants in generated C++

2016-04-23 Thread Aaron Heller
Looking over the C++ that Faust generates, it seems that constants are
always single precision, regardless of the translation options.  I
appreciate that the input and output samples are aways going to be single
precision, but there are times when it would be useful to have greater
precision internally, say the coefficients in a biquad IIR filter when the
cutoff frequency is much lower than the sample rate.

To illustrate, the program:

process = _: *(1/9) :_;


with no options compiles to:

output0[i] = FAUSTFLOAT((0.11f * float(input0[i])));


with -double compiles to:

output0[i] = FAUSTFLOAT((0.11 * double(input0[i])));


and -quad

output0[i] = FAUSTFLOAT((0.11 * quad(input0[i])));


so the samples are getting converted, but the representation of 1/9 remains
single precision.  I'd expect to see a lot more digits in double and quad.
  I'm using this version of Faust currently:

bash-3.2$ faust -v
FAUST : DSP to C, C++, JAVA, JavaScript/ASMJavaScript, WebAssembly, LLVM IR
version 2.0.a42
Copyright (C) 2002-2016, GRAME - Centre National de Creation Musicale. All
rights reserved.



Thanks for any feedback or advice...

Aaron Heller (hel...@ai.sri.com)
Menlo Park, CA  US
--
Find and fix application performance issues faster with Applications Manager
Applications Manager provides deep performance insights into multiple tiers of
your business applications. It resolves application problems quickly and
reduces your MTTR. Get your free trial!
https://ad.doubleclick.net/ddm/clk/302982198;130105516;z___
Faudiostream-users mailing list
Faudiostream-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/faudiostream-users


Re: [Faudiostream-users] Matrix multiplication

2014-10-10 Thread Aaron Heller
Hi Pierre,

I took a 25x32 matrix of random numbers between -1 and +1 and made a VST
plugin using this code.  On my MacBook with Plogue Bidule as the host, it
uses about 3% of the CPU.  Perhaps you can describe your application a bit.

Aaron



On Fri, Oct 10, 2014 at 1:42 PM, Pierre Lecomte 
 wrote:

> Thank you for your solution !
> It's working for small matrix dimensions.
> I tried with a big matrix (32 inputs, 25 outputs) but unfortunately it's
> killing the CPU, lots of xruns, and no sound..
> Maybe an alternate solutions for big matrix .. ?
>
> Thanks
> Pierre
>
> > Pierre,
> >
> > There's probably a better way, but this works for what I need.
> >
> >
> > // bus with gains
> > gain(c) = R(c) with {
> >   R((c,cl)) = R(c),R(cl);
> >   R(1)  = _;
> >   R(0)  = !;
> >   //R(0)  = !:0; // if you need to preserve the number of outputs
> >   R(float(0)) = R(0);
> >   R(float(1)) = R(1);
> >   R(c)  = *(c);
> > };
> >
> > // n = number of inputs
> > // m = number of output
> > matrix(n,m) = par(i,n,_) <: par(i,m,gain(a(i)):>_);
> >
> > a(0) = (0.5, -0.5, 1.1, 1.2,0);
> > a(1) = (1,2,3,4,-1);
> > a(2) = (0.5,0.5,0,0.25,1/3);
> > a(3) = (0,0,0,.1, sqrt(2));
> >
> > process = matrix(5,4);
> >
> > Aaron (hel...@ai.sri.com)
> > Menlo Park, CA  US
> >
> >
> > On Mon, Sep 22, 2014 at 8:12 AM, Pierre Lecomte  >
> >
> > wrote:
> > > Hello,
> > >
> > > I would like to know if there is a easy-way to perform matrix
> > > multiplication in FAUST :
> > >
> > > More precisely, I would like to multiply N input audio streams by a
> > > constant matrix (M x N) to obtain M output audio streams :
> > >
> > > a0 a1 a2  in1out1
> > > a3 a4 a5  X  in2=  out2
> > >
> > >in3
> > >
> > > I would like to avoid to explicitely write the matrix operation :
> > > out1 = a0 in1 + a1 in2 + a2 in3, etc.
> > >
> > > Thank you for your help
> > >
> > > Pierre
>
--
Meet PCI DSS 3.0 Compliance Requirements with EventLog Analyzer
Achieve PCI DSS 3.0 Compliant Status with Out-of-the-box PCI DSS Reports
Are you Audit-Ready for PCI DSS 3.0 Compliance? Download White paper
Comply to PCI DSS 3.0 Requirement 10 and 11.5 with EventLog Analyzer
http://p.sf.net/sfu/Zoho___
Faudiostream-users mailing list
Faudiostream-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/faudiostream-users


Re: [Faudiostream-users] Matrix multiplication

2014-09-24 Thread Aaron Heller
Pierre,

There's probably a better way, but this works for what I need.


// bus with gains
gain(c) = R(c) with {
  R((c,cl)) = R(c),R(cl);
  R(1)  = _;
  R(0)  = !;
  //R(0)  = !:0; // if you need to preserve the number of outputs
  R(float(0)) = R(0);
  R(float(1)) = R(1);
  R(c)  = *(c);
};

// n = number of inputs
// m = number of output
matrix(n,m) = par(i,n,_) <: par(i,m,gain(a(i)):>_);

a(0) = (0.5, -0.5, 1.1, 1.2,0);
a(1) = (1,2,3,4,-1);
a(2) = (0.5,0.5,0,0.25,1/3);
a(3) = (0,0,0,.1, sqrt(2));

process = matrix(5,4);

Aaron (hel...@ai.sri.com)
Menlo Park, CA  US


On Mon, Sep 22, 2014 at 8:12 AM, Pierre Lecomte 
wrote:

> Hello,
>
> I would like to know if there is a easy-way to perform matrix
> multiplication in FAUST :
>
> More precisely, I would like to multiply N input audio streams by a
> constant matrix (M x N) to obtain M output audio streams :
>
> a0 a1 a2  in1out1
> a3 a4 a5  X  in2=  out2
>in3
>
> I would like to avoid to explicitely write the matrix operation :
> out1 = a0 in1 + a1 in2 + a2 in3, etc.
>
> Thank you for your help
>
> Pierre
>
>
> --
> Meet PCI DSS 3.0 Compliance Requirements with EventLog Analyzer
> Achieve PCI DSS 3.0 Compliant Status with Out-of-the-box PCI DSS Reports
> Are you Audit-Ready for PCI DSS 3.0 Compliance? Download White paper
> Comply to PCI DSS 3.0 Requirement 10 and 11.5 with EventLog Analyzer
>
> http://pubads.g.doubleclick.net/gampad/clk?id=154622311&iu=/4140/ostg.clktrk
> ___
> Faudiostream-users mailing list
> Faudiostream-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/faudiostream-users
>
>
--
Meet PCI DSS 3.0 Compliance Requirements with EventLog Analyzer
Achieve PCI DSS 3.0 Compliant Status with Out-of-the-box PCI DSS Reports
Are you Audit-Ready for PCI DSS 3.0 Compliance? Download White paper
Comply to PCI DSS 3.0 Requirement 10 and 11.5 with EventLog Analyzer
http://pubads.g.doubleclick.net/gampad/clk?id=154622311&iu=/4140/ostg.clktrk___
Faudiostream-users mailing list
Faudiostream-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/faudiostream-users


Re: [Faudiostream-users] recursive structures

2014-04-05 Thread Aaron Heller
Hi Geoffrey,

I found recursive composition the most difficult part of Faust to master.
One think to keep in mind is that the ~ operator has the highest precedence
of all the operators, so when you write A ~ B, the output of B is split
into two signals, one will be connected to the first input of A, the other
is an output.  In your case, where you want to send it to an earlier
operator, you need to add parentheses to override the precedence.  I think
this does what you want:

  process = ((*(1),*(2) :+) ~ *(3)) ~ *(4) ;
or
  process = (*(1),*(2) :>_) ~ (_<: *(3), *(4)) ;

I did it as a number of small steps, using faust2firefox at each step to
confirm

process = *(1),*(2);  // two wires with gain

process = *(1),*(2) :+ ;   // sum them

process = (*(1),*(2) :+) ;   // group to override ~ precidence

process = (*(1),*(2) :+) ~ *(3) ;   // first recursive loop, uses first
input of +

process = ((*(1),*(2) :+) ~ *(3)) ;   // group again

process = ((*(1),*(2) :+) ~ *(3)) ~ *(4) ;   // second recursive loop, uses
second input of +

// reduce to one recursive composition,  the   A ~ B  structure is clearer

process = (*(1),*(2) :+) ~ (_<: *(3), *(4)) ;

// for complete symmetry, replace + with merge

process = (*(1),*(2) :>_) ~ (_<: *(3), *(4)) ;

I hope that helps,

Aaron Heller (hel...@ai.sri.com)
Menlo Park, CA  US




On Sat, Apr 5, 2014 at 4:01 AM, Geoffrey Barton  wrote:

> Firstly, not having posted before, I should like to express my admiration
> for the creators of Faust. It has a way to go but already shows a better
> way of writing signal processing code!
>
>
> Is there any way of getting a feedback structure such as:-
>
> process=_,_: (*(x1),*(x2)): + ~ (*(y1),*(y2));
>
>
> so that the input gain x1 sums with the feedback gain path y1 and the
> input gain x2 to the feedback path y2?
>
> I have tried all kinds of re-arrangement but, being a beginner at Faust,
> it either does not compile or ends up with the same block diagram as before!
>
> Geoffrey
>
>
> --
>
> ___
> Faudiostream-users mailing list
> Faudiostream-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/faudiostream-users
>
>
--
___
Faudiostream-users mailing list
Faudiostream-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/faudiostream-users


Re: [Faudiostream-users] Issue with latest version of Faust and Max/MSP plug-in generation

2013-11-06 Thread Aaron Heller
Hi Orlarey,

I can add a few details.  As near as I can tell, the problem is with the
faust2msp script, as I can copy the dsp file to the faust/examples
directory and then 'make msp'  will create mxo files with a bundle in
Contents/MacOS.  (I don't have a copy of MaxMSP to confirm it works
correctly).

Andrew has upgraded to Maverick, but I'm still on Mountain Lion.   The
faust2msp script started failing when I upgraded to Xcode version 5.0.1,
which was released concurrently with the Maverick upgrade.   faust2vst and
faust2au are working correctly.

Thanks…

Aaron


On Wed, Nov 6, 2013 at 11:26 AM, Orlarey Yann  wrote:

> Hi Andrew,
>
> Have you the same problem with other architectures ? Is the generated C++
> code correct ?
>
> Cheers
>
> Yann
>
>
> Le 06/11/13 19:22, Andrew Kimpel a écrit :
> > Hi Faust forum.
> >
> > I've been using Faust in conjunction with Aaron Heller's Ambisonic
> Decoder Toolkit (ADT)
> > and have come across an issue with trying to generate Max/MSP plugins
> from Faust .dsp
> > files. The issue occurs both with my local version of Faust (under Mac
> OS 10.9) and with
> > the online compiler.
> >
> > What i'm seeing is that the actual Max/MSP executable file seems to be
> missing / stripped
> > out from the .mxo external, i.e when i go and open the 'Package
> Contents' of the .mxo file
> > and look under [Contents | MacOS] the folder is empty. Both the .cpp and
> .dsp files are
> > present however.
> >
> > Is anyone else seeing this or am i just doing something stupid? I've
> been using Aaron's
> > toolkit to generate custom Ambisonic decoders for installations and
> haven't had any
> > problems up until now.
> >
> > Any feedback / suggestions are appreciated.
> >
> > best,
> > -Andrew
> >
> >
> >
> >
> >
> >
> --
> > November Webinars for C, C++, Fortran Developers
> > Accelerate application performance with scalable programming models.
> Explore
> > techniques for threading, error checking, porting, and tuning. Get the
> most
> > from the latest Intel processors and coprocessors. See abstracts and
> register
> >
> http://pubads.g.doubleclick.net/gampad/clk?id=60136231&iu=/4140/ostg.clktrk
> >
> >
> >
> > ___
> > Faudiostream-users mailing list
> > Faudiostream-users@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/faudiostream-users
> >
>
>
>
> --
> November Webinars for C, C++, Fortran Developers
> Accelerate application performance with scalable programming models.
> Explore
> techniques for threading, error checking, porting, and tuning. Get the most
> from the latest Intel processors and coprocessors. See abstracts and
> register
> http://pubads.g.doubleclick.net/gampad/clk?id=60136231&iu=/4140/ostg.clktrk
> ___
> Faudiostream-users mailing list
> Faudiostream-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/faudiostream-users
>
--
November Webinars for C, C++, Fortran Developers
Accelerate application performance with scalable programming models. Explore
techniques for threading, error checking, porting, and tuning. Get the most 
from the latest Intel processors and coprocessors. See abstracts and register
http://pubads.g.doubleclick.net/gampad/clk?id=60136231&iu=/4140/ostg.clktrk___
Faudiostream-users mailing list
Faudiostream-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/faudiostream-users


Re: [Faudiostream-users] Linear phase EQ?

2013-06-23 Thread Aaron Heller
Hi Marc,

I recognize your name from the sursound list, so I assume you're interested
in shelf filters for ambisonic(ish) decoders.   I've been implementing a
Faust backend for my Ambisonic decoder toolbox.  The full implementation is
not quite ready, but I have finished the phase-matched band-splitting
filters as shown in the Appendix of our paper "Is My Decoder Ambisonic?"
(aka BLaH3), as well as a state-variable realization of the the bessel
filters used for near-field correction. I'm glad to share what I have,
if that's useful.

Aaron Heller (hel...@ai.sri.com)
Menlo Park, CA  US



On Sun, Jun 23, 2013 at 7:11 AM, Marc Lavallée  wrote:

>
> Bonjour!
>
> I'm new to the list, and to the Faust software; I tried it yesterday,
> and like doctor Faust I'm ready to give my soul... But I need some
> help, since I'm not a specialist in signal processing.
>
> I want to build a special stereo decoder, and part of the recipe
> requires two Linear Phase EQs (one low-shelf and one-high shelf). It is
> something easy to do with Faust? It is already available in some
> library?
>
> Merci!
> --
> Marc
>
>
> --
> This SF.net email is sponsored by Windows:
>
> Build for Windows Store.
>
> http://p.sf.net/sfu/windows-dev2dev
> ___
> Faudiostream-users mailing list
> Faudiostream-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/faudiostream-users
>
--
This SF.net email is sponsored by Windows:

Build for Windows Store.

http://p.sf.net/sfu/windows-dev2dev___
Faudiostream-users mailing list
Faudiostream-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/faudiostream-users


Re: [Faudiostream-users] Regalia-Mitra filter bank in FAUST

2013-05-09 Thread Aaron Heller
In general, I've found that the combination of 'par' and 'sum' with 'take'
triggers long translation times, because take is O(n) in the number of
graph nodes generated, so the overall behavior is O(n^2).

I was trying to implement a hilbert transformer (512 length FIR) with the
definition of 'fir' in filter.lib and getting compilations that timed out
at 500s (I didn't have the patience to wait 60 min).  I made a new
definition of fir that avoids sum and take (and has some other special case
rules) and now get translation times around 0.5 sec.   Looking at the
'light' case, both generate the same C++ code.

I put a copy of the full file at  http://www.ai.sri.com/ajh/hilbert.dsp


// light  length = 33
//process = firx(hilbert_light_coeffs);  //real 0m0.033s user 0m0.016s sys
0m0.013s
//process = fir(hilbert_light_coeffs);   //real 0m0.068s user 0m0.048s sys
0m0.016s

// medium length = 257
//process = firx(hilbert_medium_coeffs); //real 0m0.116s user 0m0.096s sys
0m0.017s
//process = fir(hilbert_medium_coeffs);  // abort at 500s

// heavy length = 513
process = firx(hilbert_heavy_coeffs);//real 0m0.516s user 0m0.492s sys
0m0.022s
//process = fir(hilbert_heavy_coeffs);   // abort at 500s

firx(coeffs) = fir_cell(coeffs):>_ with
  {
fir_cell(0) = !;
fir_cell(float(0)) = fir_cell(0);
fir_cell(1) = _;
fir_cell(float(1)) = fir_cell(1);

fir_cell((0,(coeffs))) = (mem:fir_cell(coeffs));
fir_cell((float(0),(coeffs))) = fir_cell((0,coeffs));

fir_cell((c,0)) = fir_cell(c);
fir_cell((c,float(0))) = fir_cell((c,0));

fir_cell((c,(coeffs))) = _<:fir_cell(c),(mem:fir_cell(coeffs));

fir_cell(c) = *(c);
  };


Best...

Aaron Heller (hel...@ai.sri.com)
Menlo Park, CA  US
--
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and 
their applications. This 200-page book is written by three acclaimed 
leaders in the field. The early access version is available now. 
Download your free book today! http://p.sf.net/sfu/neotech_d2d_may___
Faudiostream-users mailing list
Faudiostream-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/faudiostream-users


[Faudiostream-users] VST unique IDs and lables

2013-04-22 Thread Aaron Heller
Hi...

I've been having a lot of fun writing Faust programs and generating VST
plugins to use in Plogue Bidule.

One problem is that many of the programs have the same set of GUI items or
no GUI at all, so they get the same 'unique ID' and Bidule flags them as an
error.  My workaround is to make a do-almost-nothing control with a unique
name.  (it has to do something or else it gets optimized out of the
graph).Is there a better way to deal with this?   Perhaps specify the
ID in the declarations.  Or include the plugin name and author strings in
the hash.

Also, is there a way to set the labels on the plugin inputs and outputs?

I'd be happy to work on the VST architecture files with a bit of guidance.

Thanks...

Aaron Heller (hel...@ai.sri.com)
Menlo Park, CA  US
--
Precog is a next-generation analytics platform capable of advanced
analytics on semi-structured data. The platform includes APIs for building
apps and a phenomenal toolset for data science. Developers can use
our toolset for easy data analysis & visualization. Get a free account!
http://www2.precog.com/precogplatform/slashdotnewsletter___
Faudiostream-users mailing list
Faudiostream-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/faudiostream-users