Re: [Faudiostream-users] Faust HTTP speed
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
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
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
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++
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
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
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