3 ms·
Disclaimer: I work for a manufacturer of headphones and microphones. If you’re into Pro Audio, you have undoubtedly heard of or used our products, which are in
by MomsAVoxell 1y ago
Disclaimer: I work for a manufacturer of headphones and microphones. If you’re into Pro Audio, you have undoubtedly heard of or used our products, which are in widespread use throughout the industry. I spend my days in the lab with DSP engineers who are responsible for noise cancellation and other algorithms some of you may even be using right now, in fact. I myself work on plugins related to post-processing features to support our microphones, which are in wide use throughout the industry, on stage and in the studio, by amateurs and pros alike.
I found a lot wanting in this article. The emphasis on a lack of tooling seems very ill conceived. The #1 DSP tool in use in this industry is .. Matlab.
Yet, it’s not even mentioned.
Here’s how it goes: Matlab is used to model and test everything. Algorithms are developed, refined, tested and evaluated in Matlab, which has ample capabilities to do realtime audio with high performance. Once the algorithm has been demonstrated and proven, it is ported from Matlab to C, and then core parts are implemented in assembly.
This does not take years. It takes months and in some cases, with a great DSP team, even just weeks. Matlab has plenty of tools for doing this properly .. from visual tools, to optimization functions. There are very, very few professional DSP engineers who don’t work with Matlab in this way.
So this article really just felt a bit more like marketing copy designed to sell their product .. and as I got to the bottom of the article to see the mention of the JS event loop and the browser, I felt like the article was intentionally being disingenuous about the real issues. (The real issue with embedded DSP development is that hardware vendors are terrible compiler developers; but this has had the side effect of making great DSP guys into great assembly programmers. You absolutely must use assembly; but you must also absolutely use Matlab.)
And then, there is JUCE. JUCE is rapidly becoming THE tool to use for high performance audio - it dominates the desktop plugin market - but, as it matures, it has become more and more embeddable. There are devs out there who have made millions with JUCE plugins and are now porting their JUCE code to hardware and embedded platforms with a great deal of ease.
If you want to do embedded DSP properly, start with Matlab, get your ideas implemented, port to C++, integrate into JUCE, and then port your JUCE code to embedded, if your BOM budget supports a decent processor - or, port your processBlock() to assembly, if it doesn’t. This is the future of DSP platform development. Meanwhile, Matlab->C->Assembly is a very well refined workflow, and it is quite productive. One of the best reasons to keep those assembly language programming chops sharp.
- flogoe 1y agoVery interesting. I work for a large (for the industry at least) company that builds audio effect plugins and virtual instruments. Me and most of my collegues have not touched Matlab since we left uni and when talking to devs from other companies I got the same impression. For prototyping and algorithm development we mainly use python, sometimes domain specific languages like Faust or CMajor but most of the time we go with C++ right away.
- MomsAVoxell 1y agoThat’s also a perfectly reasonable way to do things if you have the right kinds of competency with the compiler, but we have found that Matlab enables very rapid prototyping, development, and most important of all: validation and testing of the results. Of course, there are valid reasons for why there is a difference in approaches taken by audio effects plugins/software/virtual instruments developers, and pro audio hardware manufacturers. We are targeting DSP’s designed very specifically for audio-related tasks - you (I assume, correct me if I’m wrong) are targeting the vast array of platforms which the audio plugin/virtual instrument market demand be supported. There is somewhat of a gap between these worlds - whereas we have dedicated DSP’s which only run our hand-crafted, carefully designed and tested code, you have to target a vast array of different systems (differing DAW’s, different plugin formats, different CPU architectures) and therefore take a different approach to solving similar problems. It’s no surprise that you don’t have exposure to Matlab in that context - it’s more important, I would wager, for your devs to know the differences between compilers and plugin architectures. That being said, our DSP engineers definitely write C++ code too - just that for the embedded DSP use cases, it’s not as productive, nor as necessary to do so. C++-based audio algorithms enable a great deal of mobility in terms of platform ports; using Matlab to refine DSP algorithms prior to final implementations in DSP-based assembly (and C code) is more feasible because we control, in its entirety, the nature of our hardware platform. There’s no VST vs. AU vs AAX requirements in our specs - but there are many of these kinds of thorny issues in your specs, I’d wager.