Pure Data as a plugin, with a new GUI
github.com
github.com
You can also live coding Glicol code as scripts inside a VST plugin:
Pd is one of the most famous MPL and I have been referring to and reflecting on its design from the first day I design Glicol. I have been teaching it to students, and one issue I found is that when the projects get a little complex, the code becomes very difficult to read even with comments. Essentially I think it's determined by the philosophy of the language. So I wouldn't complain about the fact that you need to start from scratch. That's exactly the elegancy from pd. Have a look on the "counter" example in Pd; it will give you a new understanding for "programming".
But from this perspective, I would be interested to see how people will design VST with PD from scratch. Maybe the opposite would be more practical, to use VST in PD (https://youtu.be/Cs0NPime0kU), considering they are both GUI-based tools. PD is also great for algorithmic composition (https://youtu.be/I9_3CfRm8GE).
Also to make project in real world some batteries like the else lib would be great and it's great that the PlugData has included that. Also check this Erbe reverb pd patches: http://tre.ucsd.edu/wordpress/?p=625
You should also look at some hardware in the future such as Bela and Daisy where you can also run Pd and Glicol.
https://github.com/enzienaudio/hvcc
The heavy hvcc compiler for Pure Data patches. Very useful for working with embedded devices, which is also my current focus.
I get that you went for a compact syntax that is fast to write (maybe like a shell scripting for music programming), but it's also too hard to read / too sigil heavy IMO
In special, the use of ` is very confusing and could probably be replaced by braces { }
Next week, I travel to Bali to focus on developing a data flow based visual music synth. I can't understate how big an influence that Puckette's work has been on my thinking.
The other advantage is because these things were implemented in the 80s when real time audio was a really big ask for computers, they are very computationally efficient.
Pd was developed in the mid 90s
> they are very computationally efficient
Not as efficient as it could be, though. For example, instead of proper SIMD instructions, the DSP perform routines only use manual loop unrolling, praying that the compiler will auto-vectorize it.
Finally, everything is single-threaded, leaving lots of performance on the table. FWIW, I have a PR for an asynchronous task API (https://github.com/pure-data/pure-data/pull/1357) and also a branch for multi-threaded DSP (https://github.com/Spacechild1/pure-data/tree/multi-threadin...).
https://rust-lang.github.io/async-book/
There are some good gui tools in Rust as well:
https://www.egui.rs/ https://github.com/setzer22/egui_node_graph
"Async" in languages like Rust are meant for an entire different problem domain (mostly networking).
In my post above I'm talking about dispatching commands from the audio thread to a helper thread (pool) - and back. This has to be done in a realtime safe manner, so a general async framework won't be appropriate.
> There are some good gui tools in Rust as well:
I don't think GUI programming is exactly one of Rust's strengths :-)
Fair enough. Life was still pretty computationally constrained until the mid 00s mind you, so there's still an efficiency dividend here.
Nice work on the patchsets by the way - well beyond my abilities :)
With that said, my Pure Data is very rusty but this seems like a great excuse to get back into it.
PHONK https://phonk.app/
I think Max and m4l are well worth the price if it’s something you do all the time, but as a more casual user something with a lower cost of entry would be highly welcomed.
This will be handy for some things that overlap with what M4L can do. But there's lots of things people do with M4L in Ableton Live that you will not be able to do with PlugData in any plugin host.
It's here in case anyone is curious. It's the Pd cousin of my Scheme for Max project. https://github.com/iainctduncan/scheme-for-pd
Demo video here: https://www.youtube.com/watch?v=NW_KxEK_k2M&ab_channel=Music...
I'm curious to see how it will fare in plugdata!
I could fantasize even further. A PureData plug-in could kickstart a VCVRack type effort - an open source library of interconnected audio processing modules.
[1] https://github.com/algomusic/Live-Coding-Toolkit-for-Pure-Da... [2] https://www.youtube.com/user/QCGInteractiveMusic
The fact that it's paid might be a turn off for some, but I've found it to be really useful, and it works really well inside of Ableton. Can't speak for other DAWs but having been using it for the past 6 months or so, it's been fantastic.
Does anyone know of good resources for folks who want to develop their own modules for VCV rack?
In terms of the dev resources:
1. Here is a basic official tutorial: https://vcvrack.com/manual/PluginDevelopmentTutorial
2. A pretty good video tutorial: https://www.youtube.com/watch?v=d670AFZKGnw
M4L and PD allow you to open the patch ("patch" as in MaxMSP patch, not a Eurorack patch) and edit its source code. Which is a completely different level of sound manipulation and synthesis.
You can also run PD as a plugin inside Rack to get "the best of both worlds".
If I am not mistaken, there is even no primitive for modulating frequency of one oscillator with another.
The filters are very primitive and limited. The user is expected to learn the theory themselves. As far as I remember, there is no filter that can be modulated with audio frequency (without artifacts) and it is difficult to find information how to create one. Does anybody know how to do it, by chance?
You can read Miller's book: The Theory and Technique of Electronic Music
It's free online.
Also these two tutorials are very helpful: https://archive.flossmanuals.net/pure-data/ http://www.pd-tutorial.com/
PlugData seems to be much more extensive and flexible, though!
The big advantage of that is that we can change the way the UI looks without modifying any Pd source code. PlugData actually works on top of an unmodified pd-vanilla, which saves me a lot of maintenance work.
The only limitation with this is that dynamic patching (using messages to pd to modify the patch, like a meta-patch) doesn't work yet.
https://puredata.info/docs/wiki_doc_Images/StartHere/oscMult...
Personally, my main problem with the current Tcl/Tk GUI is that it's also painfully slow...