Hacker Newsnew | past | comments | ask | show | jobs | submit | p0nce's commentslogin

Well I need both float and double, so cannot even start using it.


The whole audio plugin field is on X11 for formats reason


Agile (or rather modern management) converts human capital into capital as fast as possible. Considering the endless supply of developers and lack of accountability there is no downsides to doing that, you are an externality.


Where can you get an endless supply of (good) developers from?


If you only hire young, there will be new yield every year.


There's a new yield of 40 year olds every year, too.

That doesn't make it endless.


Green cards


There's an endless supply of green cards?


Weka.IO https://www.weka.io/ has its main product built with D.

I use it for everything in: https://www.auburnsounds.com/ (free audio plug-ins, VST)

https://aspect.bildhuus.com/

https://dlang.org/orgs-using-d.html


> it is a very bad model for real time audio plugins and audio host support

COM is just 3 predefined calls in the virtual table. CLAP gives you a bunch of pointers to functions, which is similar.


> COM is just 3 predefined calls in the virtual table.

COM can be as simple as that implementation side, at least if your platforms vtable ABI matches COM's perfectly, but it also allows far more complicated implementations where every implemented interface queried will allocate a new distinct object, etc.

I.E. even if you know for sure that the object is implemented in c++, and your platforms' vtable ABI matches COM's perfectly, and you know exactly what interfaces the object you have implements, you cannot legally use dynamic_cast, as there is no requirement that one class inherits from both interfaces. The conceptual "COM object" could instead be implemented as one class per interface, each likely containing a pointer to some shared data class.

This is also why you need to do the ref counting with respect to each distinct interface, since while it is legal from an implementation side to just share one ref count for it all, that is in no way required.


Note that VST3 doesn't implement the COM vtable layout, their COM-like FUnknown really is just 3 virtual methods and a bunch of GUIDs. They rely on the platform's C++ ABI not breaking.

You're right that QueryInterface can return a different object, but that doesn't make it significantly more complicated, assuming you're not managing the ref-counts manually.


Yes, ironically the COM in AAX and COM in VST3 have slightly different layouts.


Yes but. How would you express NaN or infinities or even precise floating-point (the reason hex float exist) in this format? That breaks interchange if you cannot save/restore floating-point as in the save.


4 lanes of SIMD (like in say SSE) is not necessarily 4x faster because of the memory access, sometimes it's better than that (and often it's less).

PSHUFB wins in case of unpredictable access patterns. Though I don't remember how much it typically wins.

PMOVMSKB can replace several conditionals (up to 16 in SSE2 for byte operands) with only one, winning in terms of branch prediction.

PMADDWD is in SSE2, and does 8 byte multiplies not 4. SSE4.1 FP rounding that doesn't require changing the rounding mode, etc. The weird string functions in SSE4.2. Non-temporal moves and prefetching in some cases.

The cool thing with SIMD is that it's a lot less stress for the CPU access prediction and branch prediction, not only ALU. So when you optimize it will help unrelated parts of your code to go faster.


They said it in the Epic vs Apple litigation, something along the lines of "we create the entire App Store market", like the 3rd party developers aren't.


Most of the content in this space is paid for.


Well it could also self-improve increasingly slowly.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: