Live data from Hacker News

Elementary Audio: a modern platform for writing high performance audio software

elementary.audio

101–110 of 110 posts

Re: Elementary Audio: a modern platform for writing high performance audio software

#101

Earlier quoted context omitted.

If that seems "quite different" to you, then good luck! Personally speaking, SC's approach seems more amenable to composition (in the programming, not the musical sense). Collapsing everything down to core.render() puts the emphasis in the wrong place IMO. The oscillator is better considered to be an independent entity, and the "render" step really ought to be implicit. But to each, their own!

It really depends on your angle. for example, "1 + 1" in FP is different from "1 + 1" in OOP. In FP, everything is func. 1 is func; + is a combinator. In OOP, 1 is an obj, + is the method of that obj that takes another obj. It looks like you really enjoy SC's syntax. It's great. But essentially, the language is just one part of SuperCollider. SuperCollider = sclang + scsynth sclang -> OSC msg -> scsynth The scsynth i…

> In FP, everything is func. 1 is func; + is a combinator.

In Clojure we use RP notation, so + can be a n-ary function: (+ 1 1 1 1)

Re: Elementary Audio: a modern platform for writing high performance audio software

#104
post #75

Earlier quoted context omitted.

Exactly. Any product you produce must include full source code, at which point anyone can legally post all your code on the internet. So - very difficult to build a commercial software product with it.

This is a bad faith argument and is effectively FUD. The list of open source projects that people use in a commercial setting is long. Linux, Apache, Nginx, mysql/postgres/SQLite, Redis, Git, nearly every major programming language (C, PHP, Go, Python, Node), Firefox/Chromium, to name a tiny fraction. Businesses that have libre/free/open source as their core product are also numerous: SQLite, Gitlab (open core), Red…

> This is a bad faith argument and is effectively FUD.

As the one who made the argument, I can assure you that it was not made in bad faith.

I'm a big fan of open formats, open source, and libre software, and have made small contributions to various projects for a number of years (usually code contributions and bug reports, but occasionally financial donations too).

The argument was made from my sincere belief that, difficult as it is to make a sustainable software business (which I've seen up close, having participated in multiple failed startups), it's much harder to make a successful business with an open source product.

I would love to find out my belief is wrong, but it's still the one I've got until persuaded otherwise.

Accusing me of bad faith added nothing to your argument and violated the site's guidelines. Maybe skip that next time?

> The list of open source projects that people use in a commercial setting is long. Linux, Apache, Nginx, mysql/postgres/SQLite, Redis, Git, nearly every major programming language (C, PHP, Go, Python, Node), Firefox/Chromium, to name a tiny fraction.

Yep, OSS is everywhere and used for commercial purposes all the time. Large swaths of what you've listed above aren't commercial products, though, AFAIK.

I think most commercial software products use open source tools somewhere in their stack.

I should have been more specific with my claim - I think if the core components that form your software's value proposition are OSS, it's very hard to make a sustainable business out of selling that software.

The fact that open core products are a popular and successful way of monetizing OSS tools suggests as much, as there's some proprietary "secret sauce" that the users pay to get access to.

Open hardware works much better, I think, because people instinctively understand they've got to pay for someone to build the physical artifacts. Somehow, even developers seem to undervalue the effort it takes to build and maintain a useful piece of software.

> but to say that it kills the opportunity is flat out incorrect.

I don't believe I said it kills the opportunity. Just that it makes it much more difficult.

Re: Elementary Audio: a modern platform for writing high performance audio software

#105

Earlier quoted context omitted.

This is a bad faith argument and is effectively FUD. The list of open source projects that people use in a commercial setting is long. Linux, Apache, Nginx, mysql/postgres/SQLite, Redis, Git, nearly every major programming language (C, PHP, Go, Python, Node), Firefox/Chromium, to name a tiny fraction. Businesses that have libre/free/open source as their core product are also numerous: SQLite, Gitlab (open core), Red…

> This is a bad faith argument and is effectively FUD. As the one who made the argument, I can assure you that it was not made in bad faith. I'm a big fan of open formats, open source, and libre software, and have made small contributions to various projects for a number of years (usually code contributions and bug reports, but occasionally financial donations too). The argument was made from my sincere belief that,…

> Accusing me of bad faith added nothing to your argument and violated the site's guidelines. Maybe skip that next time?

I called out bad faith argument then steel-manned your argument and responded in good faith. In this case I felt calling out a bad faith argument and FUD was concisely pointing out part of your argument, which I take to be part of being a critical reader. I assume good faith until evidence suggests otherwise, which it did in this case.

> Large swaths of what you've listed above aren't commercial products, though, AFAIK.

I point out that there are many open source projects that fuel businesses and then go on to explicitly list businesses that have as their core product a piece of open source software. You conveniently left out the line directly underneath it listing those businesses. I qualified each of the sentences correctly.

> I don't believe I said it kills the opportunity. Just that it makes it much more difficult.

This is the original sentence you wrote:

""" SuperCollider's license effectively stops you from designing commercial products. Even the free version of Elementary allows that. """

---

You continue to argue in bad faith. Me pointing it out highlights that you are engaging in behavior that is undermining constructive debate.

Re: Elementary Audio: a modern platform for writing high performance audio software

#106

Earlier quoted context omitted.

And even when we set it, we don't get it, because we blithely read a "latency" label in a GUI instead of measuring the round-trip latency on the specific device in question.

That wouldn't be correct either, at least half the time. Problem is that "latency" is used with different meanings, at least two: 1. time from an acoustic pressure wave reaching a transducer (microphone), being converted to a digital representation, being processed by a computer, being converted back to an analog representation and finally causing a new acoustic pressure wave care of another transducer (speaker). 2.…

How do you measure playback latency? Is there a way that an end user can do it as easily as measuring rountrip latency?

Edit: clarification.

Also, is there some measurement being done to come up with the latency given in the following dialog?

https://qjackctl.sourceforge.io/qjackctl-screenshots.html

Or is that just the result of arithmetic for the given configuration options above it?

Re: Elementary Audio: a modern platform for writing high performance audio software

#107

Earlier quoted context omitted.

> This is a bad faith argument and is effectively FUD. As the one who made the argument, I can assure you that it was not made in bad faith. I'm a big fan of open formats, open source, and libre software, and have made small contributions to various projects for a number of years (usually code contributions and bug reports, but occasionally financial donations too). The argument was made from my sincere belief that,…

> Accusing me of bad faith added nothing to your argument and violated the site's guidelines. Maybe skip that next time? I called out bad faith argument then steel-manned your argument and responded in good faith. In this case I felt calling out a bad faith argument and FUD was concisely pointing out part of your argument, which I take to be part of being a critical reader. I assume good faith until evidence suggests…

> This is the original sentence you wrote: """ SuperCollider's license effectively stops you from designing commercial products. Even the free version of Elementary allows that. """

I did not write that.

Here is my comment you responded to:

https://news.ycombinator.com/item?id=30998118

You're thinking of Archit3ch's post here:

https://news.ycombinator.com/item?id=30995834

Maybe you should check identities before levelling accusations at people.

Re: Elementary Audio: a modern platform for writing high performance audio software

#108

Earlier quoted context omitted.

> Accusing me of bad faith added nothing to your argument and violated the site's guidelines. Maybe skip that next time? I called out bad faith argument then steel-manned your argument and responded in good faith. In this case I felt calling out a bad faith argument and FUD was concisely pointing out part of your argument, which I take to be part of being a critical reader. I assume good faith until evidence suggests…

> This is the original sentence you wrote: """ SuperCollider's license effectively stops you from designing commercial products. Even the free version of Elementary allows that. """ I did not write that. Here is my comment you responded to: https://news.ycombinator.com/item?id=30998118 You're thinking of Archit3ch's post here: https://news.ycombinator.com/item?id=30995834 Maybe you should check identities before leve…

Yikes, my apologies.

Some of what I said still stands but that's a big enough mistake on my part that I just need to apologize and back off.

Re: Elementary Audio: a modern platform for writing high performance audio software

#109
Hey all, Nick from Elementary Audio here. I spent some time in the discussion below yesterday and coming back to it again now I can see this continued to get way more attention than I expected! Thanks for all of your thoughts.

There's a lot of discussion here, and although I'd love to visit every comment in specific I think it makes sense to speak in summary to a few of the major themes/underlying questions here. In general, the discussion here surrounds totally valid concerns that I'll try to cover, and I understand after this thread that my messaging needs some serious work to speak to those concerns.

Before I get to those questions, I want to start with some of the things that Elementary is _not_ well suited for, or some areas where Elementary currently has some limitations.

* It's a young project; there are plenty of standard library features that are not implemented yet (oversampling, several more filter topologies, iFFT, etc). That might mean Elementary is currently ill-suited for your project

* It uses a generalized, block-based graph rendering algorithm. If you have hard performance requirements or need highly specific and hand tuned DSP optimizations, Elementary is currently not ready for you.

* Because of the current rendering algorithm, you cannot specify signal flow graphs that have 1-sample feedback loops.

With that out of the way, let's talk through some of the questions here that seem to underly many of the comments.

1. Why JavaScript?

* It's inarguably one of the most widely used languages in the world

* It's more than fast enough for the role that it plays in Elementary

* It's the language of the web; which isn't going anywhere any time soon, and at the same time the industry is showing us demand for audio software that runs in the web.

* JavaScript/web tech has pioneered the way that we write app UIs over the last decade, and continues to do so

* JavaScript/web tech has pioneered oen of the best developer experience/workflows in software development

2. How can JavaScript possibly be fast enough for this?

* Elementary uses JavaScript only to _describe_ audio processes, not execute them

* All of the actual audio processing is handled in the underlying C++ audio engine

* This engine is compiled to native, platform-specific targets in the appropriate cases (i.e. plugins, cli), and only compiled to WASM when appropriate for running in the browser

* The description of the audio process is done with an extremely lightweight virtual representation for which JavaScript is more than fast enough, and for which garbage collection and seamless integration with application logic and user interface programming is desirable

3. What about latency?

* The core audio engine adds no audio latency overhead whatsoever; if you're running a platform/native target, you're running with the same latency that your drivers/plugin host are delivering to Elementary. Until, of course, you describe an audio graph which introduces new latency; that's on you.

* When compiled to WASM to run in the browser, of course there's additional implications here, but that's a reality of targeting the web in the first place. Elementary doesn't force you to the web, or force you to wasm, but if you want to run in the web, accepting the latency implications yourself for your own apps, Elementary can go there with you

4. What about bottom line performance? Professional, commercial software??

* Elementary will not make the claim that for executing a static graph it will outperform native C/C++ hand-tailored to the application demands. That would be crazy; it's probably fair to say that highly specialized code can always outperform generalized algorithms.

* Elementary will make the claim that for plenty of applications, generalized graph processing is surely fast enough.

* The generalized graph processing algorithm is fast enough because the audio processing is purely native (or compiled to wasm); we do not execute any JavaScript itself on the audio processing thread

5. What about Faust/SuperCollider/PureData/ChucK/Max...?

* I have direct experience with many of these languages, and have reviewed almost all of the others in detail. I think they're excellent pieces of software for prototyping and exploring. I also think they're generally weaker for shipping complete applications.

* Of course you can use Faust/Max Gen or similar to generate C++ and then bolt on your own application harness, and I'd encourage you to try. For non-trivial applications, interfacing between the UI and the DSP becomes cumbersome. Elementary aims to provide a better experience here.

6. Why do any of this at all?

The current dev process and workflow for writing audio software has stagnated; it takes so much time to turn a prototype into a product and we regularly accept complexities and limitations that for so many types of apps we no longer need to accept. Elementary offers a new way of prototyping and shipping those apps more easily and more quickly.

Thanks again for all the discussion, I hope this clears up some of the details.

Cheers, Nick

Re: Elementary Audio: a modern platform for writing high performance audio software

#110

Earlier quoted context omitted.

> This is the original sentence you wrote: """ SuperCollider's license effectively stops you from designing commercial products. Even the free version of Elementary allows that. """ I did not write that. Here is my comment you responded to: https://news.ycombinator.com/item?id=30998118 You're thinking of Archit3ch's post here: https://news.ycombinator.com/item?id=30995834 Maybe you should check identities before leve…

Yikes, my apologies. Some of what I said still stands but that's a big enough mistake on my part that I just need to apologize and back off.

I forgive you, and appreciate the apology and recognition that you needed to step away and take a breather.

I do think you make a decent case for open source being a viable way to make a profitable business. There are certainly businesses that achieve that, and I would love to see more of them.

I wasn't trying to give a blow-by-blow rebuttal to everything you wrote, so it's certainly fair to say I was cherrypicking.

I was just trying to explain some of why I think making a business's core product open source ticks the difficulty level up a notch. I believe AWS has made a practice of snagging OSS systems and making them effectively their own, thus undercutting the original developers' attempts at running a business. I may be mistaken about that, though.

As I said, though, you make a number of good points (most of which I already agree with). There are a number of ways to make it work, and I may well have overstated the difficulty of building businesses with GPL software.

Post reply on HN