11 ms·
Soul – A language and IDE for audio coding
- iafrikan 8y agoThis soup is great but need to understand a bit more. Does it allow for manipulation of audio using code? Use case examples?
- iafrikan 8y ago*This is great
- ryanfchase 8y agoThe soup is also great.
- pvg 8y agoYou can edit the comment still, if not the soup.
- ttoinou 8y agoYes it does; it's only the beginning of this project / infrastructure / ecosystem. It will allow to easily build VST plugins with the interface coded with web technologies à-la-electron / nwjs and the core audio coded in SOUL
- cesaref 8y agoIndeed, that's exactly what it's for. The examples include some audio manipulation processors (like gain, reverb, compression etc) and some generators, from a cheeky little beep through to an analog style polysynth. The target use is to unify DSP development across different platforms, whether you are developing web based audio, or gaming, or pro audio, you should be able to write your algorithm in SOUL and get it up and running.
- tomduncalf 8y agoFor anyone looking for more context see https://github.com/soul-lang/SOUL/blob/master/docs/SOUL_Overview.md https://github.com/soul-lang/SOUL/blob/master/docs/SOUL_Over... and https://github.com/soul-lang/SOUL/blob/master/docs/SOUL_FAQ.md https://github.com/soul-lang/SOUL/blob/master/docs/SOUL_FAQ.... To quote the overview: "The SOUL platform is a language and an API. The language is a small, carefully crafted DSL for writing the real-time parts of an audio algorithm. The API is designed to deploy that SOUL code to heterogeneous CPUs and DSPs, both locally and remotely."
- ttoinou 8y agoExciting! The team behind it is partly from the JUCE team, it looks serious enough
- tomduncalf 8y agoHeh yeah, I have the pleasure of working with them, it’s pretty serious :)
- ttoinou 8y agoLucky :D
- jarmitage 8y agoMore background: https://www.youtube.com/watch?v=-GhleKNaPdk https://www.youtube.com/watch?v=-GhleKNaPdk
- julesrms 8y agoHello HN - thanks for giving our website a proper stress-test! I'm the developer of SOUL - happy to answer any questions you guys have.. :)
- ttoinou 8y agoHi Jules, I posted this here; I'm so eager about your project moving forward ! Is there going to be a marketplace for professional SOUL-based VST plugins ? A way to browse all open source SOUL scripts and share modules so that the community will be able to build on top of previous scripts (without copy pasting all the time) ? Will all SOUL scripts be runnable in the browser like Shadertoy.com, if no what will be the separate features between web / desktop / hardware ? How are you going to handle the diversity of situation where one could use SOUL ? Thanks (-: Side note : http://soul.dev/ http://soul.dev/ doesn't have https ?
- julesrms 8y agoOur long-term goal with plugins is to make them much easier to write in SOUL without needing to actually compile anything natively.. as for a marketplace to deliver them, we'd certainly love to be able to offer one of those, and will see how things go. Yep, we'd love to make soul.dev into a place where you can browse snippets of code, search for people's implementations of various DSP algorithms and try them out and put them together - that's all definitely in the plan! And as far as cross-platform-ness goes, I don't currently foresee a situation where any SOUL code wouldn't run on all platforms.. Running it as WASM in a browser may not be particularly quick compared to the same code running via LLVM JIT or on a DSP, but it should still work. (And yes... soul.dev certainly uses HTTPS.. maybe whoever posted this story typed it without that)
- ttoinou 8y agoThanks for the reply. Suggestion for the name of the marketplace or community : "Soulfly" sounds good (and probably need to separate it from the "infrastructure" / dev project ?)
- 52-6F-62 8y agoI'm not sure if this is just related to my machine, but I couldn't get it to compile. POST https://media.noise.fm/soul net::ERR_CERT_AUTHORITY_INVALID (this looks very cool and I want to try it out)
- ttoinou 8y agoTry http. Also try Chrome; I think it doesn't work on my Firefox
- sigil 8y agoStrange, our media.noise.fm ssl cert is issued by AWS, I'd assume you would have the necessary roots for that. I'll look into it further! What browser and OS are you using?
- 52-6F-62 8y ago(Editied with resolution at the bottom) Yeah AWS should work just fine. I'm on macOS 10.14.4, and tried with the current version of Firefox, Safari, and Chrome. Different reasons, but same result for all. That error came from Chrome and was the most descriptive. Firefox threw a CORS request blocking error. Edit: Yeah and Safari is also throwing a cert error: [Error] Failed to load resource: The certificate for this server is invalid. You might be connecting to a server that is pretending to be “media.noise.fm” which could put your confidential information at risk. (out.wasm, line 0) Edit again!: RESOLVED I simply won't be able to access this from work. I can't see the noise.fm root path as the corporate routers here are blocking it due to "Domain Parking". (eyeroll) I'll check this out at home later on! Thanks for checking in.
- billfruit 8y agoI think csound is mature system for programmatic generation of sound/music. How is this different from what csound is offering?
- julesrms 8y agoThis is about building a cross-platform infrastructure that would sit below things like csound, Faust, and many other similar front-ends, and allow them to emit code that'd run optimally on hardware platforms other than just a desktop CPU, to get better latency and performance. ...and without wanting to "throw shade" at csound or anyone else, we think the SOUL syntax is much nicer to write of course :)
- deltron3030 8y agoHow are the relationships with Ableton who are also in the Web Audio space and users of Juce? They've built a Music Learning platform with Elm (afaik): https://learningmusic.ableton.com/ https://learningmusic.ableton.com/ Elm wants to target WebAssembly, wouldn't it be able to compile to Soul too in theory?
- julesrms 8y agoI've not seen the Ableton platform, but the Faust guys have already released Faust-to-SOUL support, and we're hoping it'll make a really good back-end for that kind of thing (of which there are many examples)
- gugagore 8y agoI hope there's some benefit to other domains that rely on real-time signal processing, like control systems. I would like to have something like this for robotics.
- julesrms 8y agoWe come from an audio background, but all the way through developing the project, we've been saying "...I bet this is useful for some other domain that we know nothing about.." so have been careful to make it about signal processing in general, not for only audio. Yes, could be that it works really well for machine control, robotics, etc. Hopefully as it gets more established, people from those worlds will get involved and see what happens.
- _pmf_ 8y agoThere's also ChucK: https://chuck.cs.princeton.edu https://chuck.cs.princeton.edu
- mleonard 8y agoThanks. Just clicked through to the ChucK site. For anyone interested apparently there's a free MOOC in may: https://www.kadenze.com/courses/introduction-to-programming-for-musicians-and-digital-artists/info https://www.kadenze.com/courses/introduction-to-programming-... And a TED talk: https://www.ted.com/talks/ge_wang_the_diy_orchestra_of_the_future#t-63324 https://www.ted.com/talks/ge_wang_the_diy_orchestra_of_the_f...
- laurentoget 8y agochuck was really interesting but has been pretty much abandoned, as far as i know...
- cozzyd 8y agohttps://github.com/ccrma/chuck https://github.com/ccrma/chuck doesn't look super abandoned to me...
- majkinetor 8y agoJust for the sake of completeness and for those new to the topic, here are some mainstream audio programming languages people might also want to take look at: - Csound This is one of the first ones, a little bit dated now but there is ton of material and nice books - Pure Data (max/msp) Graphical audio language, also popular and very nice for beginners - Supercollider Object oriented platform for audio synthesis (smalltalk) - Overtone Functional audio synthesis platform using Clojure (totally awesome)
- ivarv 8y agoSam Aaron (original dev behind Overtone) has been focused on building out Sonic Pi ( https://sonic-pi.net/ https://sonic-pi.net/ ) for a few years now and it's an amazing tool aimed at simplicity (literally aimed at ten year olds) and power (used for gigging).
- majkinetor 8y agoVery nice, thanks for the great info.
- soperj 8y ago>Sam Aaron (original dev behind Overtone) Was he actually the original dev? I get that he contributed a lot to the project, but overtone isn't dead, and I don't think he was the original dev.
- jcelerier 8y agoAlso Faust (the doc is totally awesome : https://faust.grame.fr/doc/manual/index.html#quick-start https://faust.grame.fr/doc/manual/index.html#quick-start) and - shameless plug, a project I work on : https://ossia.io https://ossia.io which is a merge of the sequencer & dataflow paradigms
- cesaref 8y agoAnother one to add to the list is Faust (https://faust.grame.fr/ https://faust.grame.fr/) which has great support for cross compiling to other languages (C, Java, wasm etc)
- sagichmal 8y agoThis is cool. Can I have it against CoreAudio or Pulse or anything other than WebAudio?
- julesrms 8y agoHave a read of the FAQ and overview docs, or watch the talk: https://github.com/soul-lang/SOUL https://github.com/soul-lang/SOUL The browser-based stuff is just a demo to let people explore the language and learn about what we're trying to do. The actual goal is to create the fastest, lowest-latency infrastructure for audio on all platforms.
- jchook 8y agoAny info on the motivation for making an entire language instead of a library for an existing language (e.g. for C, Python, or Go)? Especially if the syntax mimics C-like languages, what important advantages do we get?
- tomduncalf 8y agoThe overview at https://github.com/soul-lang/SOUL/blob/master/docs/SOUL_Overview.md https://github.com/soul-lang/SOUL/blob/master/docs/SOUL_Over... should help explain the motivation. I’m sure Jules can elaborate further :)
- julesrms 8y agoWe pre-emptively answered this inevitable question in the overview doc: https://github.com/soul-lang/SOUL/blob/master/docs/SOUL_Overview.md https://github.com/soul-lang/SOUL/blob/master/docs/SOUL_Over... The main TL;DRs are: - this needs to get JITed to compete with C++ performance, so dynamic and interpreted languages are out. - it needs to stop people doing anything which is real-time unsafe, so any language which involves a heap or GC is out - it needs to be secure enough to not pose a security risk if deployed to an embedded bare-metal device, so C is out. - it needs to be super-easy to learn for all programmers, and especially for grizzled old C/C++/Javascript/C# people who aren't into any of that fancy functional nonsense - it needs to strongly enforce and represent a graph structure at a syntactic level, so.. pretty much all existing languages are out.
- deleted 8y ago[deleted]
- jcelerier 8y ago> - it needs to strongly enforce and represent a graph structure at a syntactic level, so.. pretty much all existing languages are out. ... except languages designed for real-time signal processing based on dataflow graphs such as Kronos (https://www.mitpressjournals.org/doi/pdfplus/10.1162/COMJ_a_00330 https://www.mitpressjournals.org/doi/pdfplus/10.1162/COMJ_a_...), Céu (http://www.ceu-lang.org/chico/ceumedia_webmedia16_pre.pdf http://www.ceu-lang.org/chico/ceumedia_webmedia16_pre.pdf), Antescofo (https://hal.inria.fr/hal-01585489 https://hal.inria.fr/hal-01585489) and the oldies such as SIGNAL, Lustre, Esterel, etc... :p
- yellowapple 8y agoI recall seeing Soul pop up on HN before, and at the time I was critical of it for being announced way too early (no working examples or even any indication of what the code might look like). This is much better, and it's good to see that it's actually progressing instead of being yet another case of vaporware. That said, still disappointing that there doesn't appear to be any info on an actual compiler or runtime or however this is supposed to be used in actual projects; the editor configs and code samples are a start, but kinda useless if the only way to actually put 'em to use is to use a buggy web app :) And speaking of "buggy web app", mousewheel-scrolling in the playground seems to be entirely broken on Firefox on Linux. Apparently this is true of all instances of Microsoft's web-based "Monaco" editor widget (on which the Soul playground appears to be built). What the hell, Microsoft?
- cesaref 8y agoThanks for the spot of the monaco bug - that's a regression that we'd previously fixed. It's been patched and re-deployed and should work now.
- yellowapple 8y agoConfirmed; still doesn't scroll smoothly (or at least as smoothly as most other things in Firefox), but it at least does scroll now, so that's good enough for me. Thanks!
- julesrms 8y agoThere'll actually be many ways of using it.. Javascript in a browser is just one of those ways. The real API is written in C++ and we'll be offering a C binding in many languages, which you'll use in a pretty similar way to how you'd use the openGL API to run a shader. We'll publish that C API soon-ish, hopefully within a few months.
- yellowapple 8y agoOkay, but what about the stuff behind that API? If OpenGL is the model, then is the expectation that audio device/driver vendors implement their own Soul backends? Will there be a reference implementation? Is that reference implementation going to be released under a free software license?
- lukejduncan 8y agoDumb question -- but what exactly is an audio programming language? Google seems to be failing me. I can make some guesses by looking at the example in OPs link. But what is the primary goal of an audio programming language? Who's using it? How? Alternatives? Genuinely curious.
- detaro 8y agoA programming language specializing into generating audio. Where environments like Processing or the languages used for GPU shaders are designed to generate pixels (the former at a high level, the latter at a very low level, targeting specialized hardware), these languages are for making music and sounds.
- Bjartr 8y ago> what exactly is an audio programming language Simply put, it's a language designed to make creating and processing high-quality audio quickly more straightforward than a general purpose language would make it.
- pierrec 8y agoI'm excited that audio-programming-in-the-browser is becoming a thing. It means more people are likely to fall down this exquisite rabbit hole. I'm totally in this field so I'll list a few websites that let you program music in the browser, and my rough opinion on them: - http://wavepot.com/ http://wavepot.com/ is just built on top of Javascript. The code tends to be long since the library is pretty bare-bones right now, but it's really well executed. - https://gibber.cc/ https://gibber.cc/ is also JS-based. The library and functions provided make for some pretty terse yet readable code, though focused on somewhat traditional synthesis methods (and I still don't think JS is ideal for this...) - http://ctford.github.io/klangmeister/ http://ctford.github.io/klangmeister/ is based on Clojurescript, which is a safe choice since Overtone has long demonstrated that Lisp is great for music programming. Right now there's not much of a library to go with it, though. - http://faust.grame.fr/editor/ http://faust.grame.fr/editor/ - Faust is one of the greatest music programming languages, and it also runs in the browser, but I think they haven't sufficiently polished the browser experience in a way that lets a novice learn the language in the browser. - https://audiomasher.org/browse https://audiomasher.org/browse - I'm biased on that one since I made it. An obvious weakness is that the language is a little frightening at first glance, but there's a tutorial. It's terse yet open-ended, and the built-in library is pretty extensive. For SOUL, it seems running in the browser is just a little demo, and the language is meant to be used in other situations. In fact, most of the above projects have grander aspirations than running in the browser - it's generally just a way of getting people to try out the language or system. But I still wish more projects would take the extra step and create a community-style website where anyone can upload and play with each other's code, otherwise the web experience just seems like a proof-of-concept.
- ris 8y agoBut is a browser-based audio environment ever going to have the low latency and robustness requirements for something like live performance?
- julesrms 8y agoWASM will probably start catching up with natively-compiled C++ eventually, but we're working on the hypothesis that even natively-compiled C++ can't quite get the best performance out of audio hardware, because running it on the CPU in a normal OS is the wrong place for a realtime task like that. Something we do want to create will be network-attached SOUL audio i/o devices which can run the code using native JIT engines. Then, Javascript in a browser can send its SOUL code to be compiled + executed directly on these bare-metal devices and get super-low latency.
- julesrms 8y agoThis has been a great thread, thanks for all the comments! One final note I'd like to add is that we've also been running a closed early-adopter group for industry insiders, where we're sharing some other non-web tools including our LLVM JIT engine and C++ generator, and discussing partnerships etc. If you represent a company that think should join this group, ping me and let me know..
- sletz 8y agoConcerning Faust-to-SOUL support, it is still reserved for people not afraid of installing and compiling Faust from github: https://github.com/grame-cncm/faust https://github.com/grame-cncm/faust Then a faust2soul script can be used to directly compile Faust DSP to SOUL source code: https://github.com/grame-cncm/faust/tree/master-dev/architecture/soul https://github.com/grame-cncm/faust/tree/master-dev/architec... To be tested, the generated SOUL code can then simply be copy/pasted in the SOUL playground.