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] Precision of constants in generated C++

2016-04-25 Thread Aaron Heller
Thanks!  Aaron

On Sunday, April 24, 2016, Stéphane Letz <l...@grame.fr> 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 <hel...@ai.sri.com <javascript:;>>
> 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 <javascript:;>)
> > 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 <javascript:;>
> > 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 <javascript:;>
> 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


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 pierre.leco...@gadz.org
 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 pierre.leco...@gadz.org
 
 
  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


[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