ELSE 1.0-0 RC12 with Live Electronics Tutorial Released
Hi, it's been a while, here we go:
RELEASE NOTES:
Hi, it's been almost 8 months without an update and I never took this long!!! So there's a lot of new stuff to cover, because it's not like I've been just sleeping around 
The reason for the delay is that I'm trying to pair up with the release cycles of PlugData and we're having trouble syncing up. PlugData 0.9.0 came out recently after a delay of 6 months and we couldn't really sync and pair up then... we had no luck in syncing for a new update now, so now I'm just releasing it up cause enough is enough, and hopefully in the next plugdata release we can sync and offer the same version.
As usual, the development pace is always quite busy and I'm just arbitrarily wrapping things up in the middle of adding more and more things that will just have to wait.
First, I had promised support for double precision. I made changes so we can build for it, but it's not really working yet when I uploaded to deken and tested it. So, next time?
And now for the biggest announcement: - I'm finally and officially releasing a new pack as a submodule, which is a set of abstractions inspired by EuroRack Modules, so I'm thinking of VCV like things but into the Pd paradigm. Some similar stuff has been made for Pd over the years, most notably and famously "Automatonism", but I'm really proud of what I'm offering. I'm not trying to pretend Pd is a modular rack and I'm taking advantage of being in Pd. I'm naming this submodule "Modular EuroRacks Dancing Along" (💩 M.E.R.D.A 💩) and I've been working on it for a year and a half now (amongst many other things I do). PlugData has been offering this for a while now, by the way. Not really fully in sync though.
MERDA modules are polyphonic, thanks to multichannel connections introduced in Pd 0.54! There are 20 modules so far and some are quite high level. I'm offering a PLAITS module based on the Mutable Instruments version. I have a 6-Op Phase Modulation module. A "Gendyn" module which is pretty cool. I'm also including an "extra" module that is not really quite a modular thing at all but fits well called "brane", which was a vanilla patch I first wrote like 15 years ago and is a cool granular live sampler and harmonizer. You'll also find the basics, like oscillators, filters, ADSR envelope and stuff I'm still working on. Lastly, a cool thing is that it has a nice presets system that still needs more work but is doing the job so far.
There are ideas and plans to add hundreds more MERDA modules, let's see when and if I can. People can collaborate and help me and create modules that follow the template by the way 
Thanks to Tim Schoen, [play.file~] is now a compiled object instead of an abstraction and it supports MP3, FLAC, WAV, AIF, AAC, OGG & OPUS audio file extensions. A new [sfload] object can import these files into arrays (but still needs lots of more work). There are many other player objects in ELSE that can load and play samples but these don't yet support these new formats (hang in there for the next version update).
Tim also worked on new [pdlink] and [pdlink~] objects, which send control and signal data to/from Pd instances, versions and even forks of Pure Data (it's like [send]/[receive] and [send~]/[receive~], all you need is a symbol, no complicated network or OSC configuration!). And yes, it works via UDP between different computers on the same network. And hell yeah, [pdlink~] has multichannel connections support! By the way, you can also communicate to a [pd~] subprocess. This will be part of ELSE and PlugData of course, and will allow easy communication between PlugData and Pd-Vanilla for instance.
The great pd-lib-build system has been replaced for a 'cmake' build process called 'pd.build' by Pierre Guillot. This was supposed to simplify things. Also, the [sfont~] object was a nightmare to build and with several dependencies that was simply hell to manage, now we have a new and much simpler system and NO DEPENDENCIES AT ALL!!! Some very rare file formats with obscure and seldom sound file extensions may not work though... (and I don't care, most and the 'sane' ones will work). The object now also dumps all preset information with a new message and backwards compatibility broke a bit 
I'm now back to offering a modified version of [pdlua] as part of ELSE, which has recently seen major upgrades by Tim to support graphics and signals! This is currently needed in ELSE to provide a new version of [circle] that needed to be rewritten in lua so it'd look the same in PlugData. Ideally I'd hope I could only offer compiled GUI objects, but... things are not ideal 
The lua loader works by just loading the ELSE library, no need for anything "else". I'm not providing the actual [pdlua] and [pdluax] objects as they are not necessary, and this is basically the only modification. Since PlugData provides support for externals in lua, if you load ELSE you can make use of stuff made for PlugData with lua without the need to install [pdlua] in Pd-Vanilla.
For next, we're working on a [lua] object that will allow inline scripting and will also work for audio signals (again, wait for the next version)! Also for the next version, I'm saving Ben Wesch's nice 3d oscilloscope made in lua (it'll be called [scope3d~]). There's a lot going on with the lua development, which is very exciting.
As for more actual new objects I'm including, we have [vcf2~] and [damp.osc~]. The first is a complex one pole resonant filter that provides a damping oscillation for a ringing time you can set, the next is an oscillator based on it. There's also the new [velvet~] object, a cool and multichannel velvet noise generator that you can also adjust to morph into white noise.
I wasn't able to add multichannel capabilities to many existing objects in ELSE in this one, just a couple of them ([cosine~] and [pimp~]). Total number of objects that are multichannel aware now are: 92! This is almost a third of the number of audio objects in ELSE. I think that a bit over half might be a reasonably desired target. More multichannel support for existing objects to come in the next releases.
Total number of objects in the ELSE library is now 551!
As for the Live Electronics tutorial, as usual, there are new examples for new objects, and I made a good revision of the advanced filter section, where I added many examples to better explain how [slop~] works, with equivalent [fexpr~] implementations.
Total number of examples in the Live Electronics Tutorial is now 528!
There are more details of course, and breaking changes as usual, but these are the highlights! For a full changelog, check https://github.com/porres/pd-else/releases/tag/v.1.0-rc12 (or below at this post).
As mentioned, unfortunately, ELSE RC12 is not yet fully merged, paired up and 100% synced in PlugData. PlugData is now at version 0.9.1, reaching the 1.0 version soon. Since ELSE is currently so tightly synced to the development of PlugData, the idea is to finally offer a final 1.0 version of ELSE when PlugData 1.0 is out. Hence, it's getting closer than ever
Hopefully we will have a 100% synced ELSE/PlugData release when 0.9.2 is out (with a RC 13 maybe?).
Please support me on Patreon https://www.patreon.com/porres
You can follow me on instagram as well if you like... I'm always posting Pd development stuff over there https://www.instagram.com/alexandre.torres.porres/
cheers
ps. Binaries for mac/linux/windows are available via deken. I needed help for raspberry pi
CHANGELOG:
LIBRARY:
Breaking changes:
- [oscope~] renamed to [scope~]
- [plaits~] changed inlet order of modulation inputs and some method/flags name. If a MIDI pitch of 0 or less input is given, it becomes a '0hz'.
- [gbman~] changed signal output range, it is now filtered to remove DC and rescaled to a sane -1 to 1 audio range.
- [dust~] and [dust2~] go now up to the sample rate and become white noise (removed restriction that forced actual impulses, that is, no conscutive non zero values)
- [cmul~] object removed (this was only used in the old conv~ abstraction to try and reduce a bit the terrible CPU load)
- [findfile] object removed (use vanilla's [file which] now that it has been updated in Pd 0.55-0)
- [voices] swapped retrig modes 0 and 1, 'voices' renamed to 'n', now it always changes voice number by default as in [poly] (this was already happening unintentionally as a bug when one voice was already taken). The 'split' mode was removed (just use [route], will you?)
- [voices~] was also affected by changes in [voices] of course, such as 'voices' message being renamed to 'n'.
- [sr~]/[nyquist] changed output loading time to 'init' bang
- [sample~] object was significantly redesigned and lots of stuff changed, new messages and flags, added support for 64-bit audio files (Pd 0.55 in double precision and ELSE compiled for 64 bits is required for this). Info outlet now also outputs values for lenght in ms and bit depth.
- [sfont~] uses now a simpler build system and this might not load very very rare and unusual sound formats.
Enhancements/fixes/other changes:
- builds for double precision is now supposedly supported, by the way, the build system was changed from pd-lib-builder to pd.build by Pierre Guillot.
- [play.file~] is now a compiled object instead of an abstraction thanks to Tim Schoen, and it supports MP3, FLAC, WAV, AIF, AAC, OGG & OPUS file extensions.
- Support for double precision compilation was improved and should be working for all objects (not yet providing binaries and fully tested yet by the way).
- The ELSE binary now loads a modified version of [pdlua], but no [pdlua] and [pdluax] objects are provided.
- added signal to 2nd inlet of [rm~].
- fixed 'glide' message for [mono~].
- fixed [voices] consistency check bug in rightmost outlet and other minor bugs, added flags for 'n', 'steal' and offset.
- [gain~] and [gain2~] changed learn/forget shortcut
- [knob] fixed sending messages to 'empty' when it shouldn't, ignore nan/inf, prevent a tcl/tk error if lower and upper values are the same; added "learn/forget" messages and shortcut for a midi learn mechanism.
- [mpe.in] now outputs port number and you can select which port to listen to.
- Other MIDI in objects now deal with port number encoded to channel as native Pd objects. Objects affected are [midi.learn], [midi.in], [note.in], [ctl.in], [bend.in], [pgm.in], [touch.in] and [ptouch.in].
- [pi]/[e] now takes a value name argument.
- [sr~]/[nyquist~] take clicks now and a value name argument.
- fixed phase modulation issues with [impulse~] and [pimp~].
- [cosine~] fixed sync input.
- added multichannel features to [cosine~] and [pimp~].
- [plaits~] added a new 'transp' message and a functionality to allow MIDI input to supersede signal connections (needed for the 'merda' version [see below]), fixed MIDI velocity.
- [pluck~] added a new functionality to allow MIDI input to supersede signal connections (needed for the 'merda' version [see below]).
- 26 new objects, [velvet~], [vcf2~], [damp.osc~], [sfload], [pdlink] and [pdlink~], plus abstractions from a newly included submodule called "Modular Euro Racks Dancing Along" (M.E.R.D.A)! Warning, this is all just very very experimental still, the object are: [adsr.m~], [brane.m~], [chorus.m~], [delay.m~], [drive.m~], [flanger.m~], [gendyn.m~], [lfo.m~], [phaser.m~], [plaits.m~], [plate.rev.m~], [pluck.m~], [pm6.m~], [presets.m], [rm.m~], [seq8.m~], [sig.m~], [vca.m~], [vcf.m~] and [vco.m~] (6 of these are multichannel aware).
Objects count: total of 551 (307 signal objects [92 of which are MC aware] and 244 control objects)!
- 311 coded objects (203 signal objects / 108 control objects
- 240 abstractions (104 signal objects / 136 control objects)
TUTORIAL:
- New examples and revisions to add the new objects, features and breaking changes in ELSE.
- Added a couple of examples for network communication via FUDI and [pdlink]/[pdlink~]
- Section 36-Filters(Advanced) revised, added more examples and details on how [slop~] works.
- Total number of examples is now 528!
looking for velvet noise generator
I will announce when I officially include this object, I might squeeze this one in for the next upcoming release in a week or so
Pd version 0.55-0 released
Miller Puckette to Pd-announce: "Pd version 0.55-0 is available from https://msp.ucsd.edu/software.htm or (source only) via github: https://github.com/pure-data/pure-data
cheers
Miller"
Release notes:
------------------ 0.55-0 ------------------------------
The [osc~], [cos~] and [vcf~] objects now rely on a 2048 points cosine table. The table size used to be 512-point for fast, approximate calculations, which was adequate for most "computer music" applications in the 90s when this was decided (and at that time there could be a serious performance penalty for using larger tables). To get the original 512-point tables you can run Pd with compatiblity level 0.54. Also, in systems with very tight memory constraints (such as Espressif ESP32), Pd can be recompiled with the C preprocessor variable COSTABLESIZE set to 512 to get the old memory footprint.
Many bug fixes and code-level updates and improvements, notably to libpd and for emscripten support thanks to Claude Heiland-Allen and IOhannes, Dan, and Christof. The emscripten support, in particular, should someday allow Pd to run in a web browser.
Also thanks to Christof, you can now use just 'set' to unset [receive~] and [throw~] objects, plus a much improved audio interfacing and related scheduler updates.
Many documentation updates, thanks to Alexandre Porres, Ben Wesch, and others. Most notably several updates and edits were made to Pd's HTML manual, specially a new section on 'advanced editing techniques' (aka 'intelligent patching').
The [oscparse] object was updated by Porres to allow numeric addresses via a new '-n' flag and a right outlet was added to output split point between address and message.
Minor improvements to the [file] object by IOhannes, such as properly expanding '~' to home directory and allowing [file which] to also search paths relative to the parent patch.
64-bit soundfile reading and writing support by Dan Wilcox for [readsf~], [writesf~] and [soundfiler].
Updates to language support.
GEM replaced Ofelia in Plugdata
@Aliam.Sigsaly the maintainer of pdlua is Albert Gräf. The way open source software works is that one person can use the code from other projects (provided the licenses are compatible). This is called a 'fork' and it doesn't imply that the original project is being 'taken over' or 'annexed' by the fork.
Afaik there are feature request github and discord forums/channels for plug data if you want to discuss the direction of the project (though I suppose this could also be an appropriate venue).
Imo your expectations for an announcement on arbitrary channels for a certain library version not being supported anymore are slightly unreasonable.. I would say that if you want to be informed of plug data or development about a certain version of ophelia there are places to follow in order to do so.
I also don't think it's productive to talk about how superior m4L is unless you're making specific feature suggestions for the project you want to use in a productive and collaborative way.
edit: also, a great thing about open source is that if you don't like the direction of a project you are free to make your own fork and add or remove whatever aspects you wish. The maintainers have a right to include or omit features and library for whatever reason though you are of course free to make criticisms or suggestions (though I have to say your tone did come across as somewhat entitled, rather than collaborative.. for instance you could enquire why something might not be maintained anymore before catastrophizing). But if you want a certain feature without doing the work to implement it that can come across as expecting free labor or agreement on aesthetics.
edit2: personally I disagree with alexandre's "everything in 1 lib" philosophy for else (personally I like using many different established libraries that already have equivalent objects) but he does work hard on it and those aspects have driven its adoption in plug data and many other projects. Also he probably (would have been) open to improvements for it in general if you considered them to be lacking and had made pull requests to improve it or at least given suggestions or feature requests instead of/before complaining..
[vstplugin~] 0.5.2 released!
Hi,
I am happy to announce a new bug fix release for [vstplugin~] - a Pd external for hosting VST2 and VST3 plugins on Windows, macOS and Linux.
It is available on Deken (search for "vstplugin~").
Here is the full change log: https://git.iem.at/pd/vstplugin/-/releases
Please report any issues at https://git.iem.at/pd/vstplugin/-/issues
Have fun!
Christof
ELSE 1.0 beta 43 with Live Electronics Tutorial is out!
Hey; It's been many releases without an announce here! We have some cool stuff in this update. We have a new gaussian oscillator and gaussian envelopes; Some filter tools that people really liked (conversion from biquad coefficients to poles and zeros, a z-plane plot GUI); and my favorite: [pimpmul~], a phase multiplier/divider that also sends impulses (game changer for me). Of course there's more. My Live Electronics Tutorial had also some important revisions and new additions to reflect the new objects and there's also a pretty cool example that shows how moving average filters work. Details and downloads are here: https://github.com/porres/pd-else/releases/tag/v1.0-beta43
But get it also directly from Pd itself.
Total number of objects is now 431, total number of examples in the tutorial is now 440!
I need to thank my buddy Matt Barber again with his great help teaching me about the math behind the gaussian function 
Cheers
Can I assign an IP address to a Pure Data patch?
@jameslo Multicast is an address that all hosts on the network will listen to if they have joined a group.
So they listen for messages sent to their specific IP and also those sent to a multicast IP.
Multicast addresses are in a specific range and the host receiving has to join the multicast group.
There are also broadcast addresses for which no group has to be joined.
They are used mainly to say "hello..... I am here"..... to announce their presence on the network.
David.
Logarithmic glissando
I think using the built-in objects should be slightly more efficient for the basic cpu usage at least (dunno about memory usage or how that might influence cpu usage tho) since [expr] implements its own call stack and uses a switch/case for every operator in every computation (whereas the single-function objects follow pointers to functions in classes). not sure how much more or less efficient that is.. of course [expr] is also far more convenient and clean from a language perspective.
tho btw, there is also a JIT expr compiler/external that should be just as fast if not faster than the vanilla many-objects approach
https://www.mail-archive.com/pd-announce@lists.iem.at/msg00234.html https://github.com/x37v/jit-expr
@bocanegra I thought that expr could be included in libpd and such now since the author permitted a license change. also since [expr] is in vanilla those functions will be loaded no matter what (the expr class owns those functions, not the object. And the class is loaded when pd starts)
edit: after testing it seems like the equivalent objects are 1 1/2 - 2 times faster than [expr]
[vstplugin~] v0.5.0
I'm happy to announce the final release of [vstplugin~] v0.5.0 - a Pd external to load VST plugins on Windows, macOS and Linux!
Binaries are available on Deken or can be downloaded here: https://git.iem.at/pd/vstplugin/-/releases
If possible, please report any issues at https://git.iem.at/pd/vstplugin/issues or leave a comment here.
Big thanks to all my beta testers!
Change log overview:
-
support for multiple input/output busses (VST3 only)
-
[offline(method for better offline processing support -
Linux: allow to run 32-bit and 64-bit Windows plugins (via Wine)
-
improve UI handling on all platforms
-
[size(method to resize plugin UI (if supported) -
Linux: fix VST3 editor
-
fix some race conditions (= better stability)
-
fix broken transport methods for multi-threading
-
fix bugs in VST3 preset reading/writing
-
new
-x(= exlude path) and-t(= timeout) flags for[search(method
See the release page for the full change log.
Have fun!
Christof
[ANN] Scheme for Pure Data 0.1 - script and live-code Pd with Lisp
Hi everyone, I'm excited to announce that Scheme for Pd (aka s4pd) is now code complete for version 0.1 and ready for people to use, though it does still require building from source at the moment. This should "just work" with the Makefile, let me know if not.
Scheme for Pd is an open-source external for live-coding and scripting Pd with an embedded s7 Scheme Lisp interpreter. It is a port of most of Scheme for Max, also by me, for Max/MSP. s7 is an embeddable minimal Scheme implementation by Bill Schottstaedt at CCRMA, with many nice features for algorithmic composition and embedding. It's the Scheme engine used in the Common Music algorithmic composition toolkit and the Snd audio editor, and has keywords, Common Lisp style macros, first-class environments, thread safety, applicative syntax, and a very straight forward FFI (foreign function interface).
Features in beta 0.1:
-
run code from files, and hot reload files during playback
-
evaluate scheme code from Pd messages live with a REPL
-
keeps on playing fine when you go into edit mode
-
output numbers, symbols, lists, vectors (as Pd lists)
-
basic array i/o
-
send messages to named receivers
-
schedule functions with delay, using the Pd scheduler
The GitHub project page is here. Please file issues there if you find bugs or the help is unclear. I'm sure there are still some issues!
https://github.com/iainctduncan/scheme-for-pd
If you've not used Scheme before, I've written a crash course for Scheme for Max which should almost all apply here:
https://iainctduncan.github.io/learn-scheme-for-max/introduction.html
There are various videos on the youtube channel demoing things you can do with the Max version, which might be of interest, as they should mostly port over without issue. I will be making Pd specific ones in the future.
https://www.youtube.com/channel/UC6ftX7yuEi5uUFkRVJbJyWA
If you can help with testing and making builds on Windows and Linux, please let me know. I think this version should be ready for a binary release now.
Enjoy,
iain


