Dirty pitch control knob
Thank you everyone for spending time on this.
Just to clarify, I use VSTHost by Hermann Seib (instead of a DAW) to summon virtual synths and effects, something like this:
MIDI in (MIDI keyboard) - Synth - Reverb - MIDI out
And this is what I would like to achieve:
MIDI in - Dirty Pitch - Synth - Reverb - MIDI out
The Dirty Pitch is not intended to produce any sound, just static random pitch bend MIDI messages for the virtual synth to produce an ANTI autotune effect controllable by the user.
So the Dirty Pitch PlugData script, would need to be converted/compiled (or whatever) into a VST3 Plugin format.
Dave S.
[mimba] physical modelling synth
The mimba synth is heavy on the computer cpu because a large part of the sound production happens in a subpatch with blocksize 1, so sample per sample . On my older (linux) laptop the audio production wasn't reliable and started 'cracking' with 3 or 4 voices. On a more recent (linux) laptop it works well with 8 to 10 voices. So I guess that the crackling sound is related to your laptop performance (and the fact that my synth is so cpu-heavy)...
The error message 'expr divide by zero detected' doesn't relate to the performance of the patch. I also get this message, but my patch and synth work fine. This zero division only happens with the first 10 notes that you play, because mimba has 10-voice polyphony... I guess the zero division is related to a wrong or missing initial value somewhere in the patch.
Working Through "Pure Data programming fundamentals, Vol 1," by Maurizio Di Berardino
I use Facebook groups a lot for posting questions about synths and that sort of thing. However, the Pure Data group on Facebook looks to have fallen out of use.
Pure Data has been on my radar for a while, years actually, but I have tried a couple of times and found it to be a little too much past my level of knowledge when it comes to synths and computers. I think I have become comfortable enough with all the things that provide a good base for learning Pd aside from a good knowledge of programming in tradtionally typed languages. I have been dabbling in Raspberry Pi for years, spent some time using a Ubuntu Studio PC with Waveform and mostly hardware synths, and currently use mainly a Mac for my computing needs.
In this time I tried Patchblocks a couple of times and finally buckled down and actually figured them out. Too bad it was well after they sold their tech to another company and they are no longer widely used. It took me a while to learn enough about synth terminology and their use to become comfortable with that programming system too.
I suppose all the back and forth between different synths and some platforms that are not quite mainstream, (I would include Pd among those), I am finally figuring out the tutorials presented on Pd that I find.
As mentioned in the title of this post, I am working through that book. I had seen that some externals are available on GitHub and decided to give that a go and am posting the patches I make there for others to have a look at if they are interested. Here is that link:
https://github.com/playinmyblues/Working-Through-Pure-Data-Programming-Fundamentals-Vol-1
I also posted the link to that repository on the Facebook group (https://www.facebook.com/groups/puredata). If anybody reads this post that is an admin there, would you mind having a look at my post for approval?
I see that there are a fair number of people whom have joined that group recently so it might still get some traffic and use if it gets some posts.
Just to get the feel of what people are using, what is your preferred way of interacting with people interested in Pure Data? Where do you like to browse for ideas people have, post questions, answer questions, post music, etc.? Thanks.
send values to abstraction inside clone
You can prefix the number of the cloned synth in a message to that synth eg 2 cutoff $1 then within the cloned synth and route the cutoff value and pass it on polyphonically with all cutoff $1
clone-project.zip

ELSE 1.0-0 with Live Electronics Tutorial Release Candidate #9 is out!
Hi! This has gotta be the biggest update ever. geez... there's too much stuff, and I just decided to stop arbitrarily cause there's still lots of stuff to do. Ok, here goes the highlights!
This is the 1st multichannel (MC) aware release of ELSE (so it needs Pd 0.54-0 or later)! There are many many many objects were updated to become MC aware: 42 of them to be exact. There are also many many new objects, and many of them are MC capable, 20 out of 33! Som in total I have 62 objects that deal with MC... that's a good start. More to come later!
Note that 4 of these new ones were just me being lazy and creating new mc oscillators with [clone], I might delete them and just make the original objects MC aware... so basically these new MC objects bring actual new functionalities and many are tools to deal with MC in many ways, like splitting, merging, etc...
With 33 new objects, this is the first release to reach and exceed the mark of 500 externals, what a milestone! (This actually scares me). We now have 509 objects and for the first time ever I have reached the number of examples in the Tutorial, which is also 509 now! But I guess eventually the tutorial will grow larger than the number of externals again...
Since the last release, ELSE comes with an object browser plugin, I have improved it and also included a browser for Vanilla objects. I think it's silly to carry these under ELSE and I hope I can bring this to Vanilla's core. see https://github.com/pure-data/pure-data/pull/1917
A very exciting new object is [sfz~], which is a SFZ player based on 'SFIZZ'. This is more versatile than other externals out there and pretty pretty cool (thanks alex mitchell for the help)!
I have created a rather questionable object called [synth~] which wraps around [clone] and [voices]/[mono], but I think it will be quite interesting to newbies. It loads synth abstractions in a particular template and makes things a bit more convenient. It also allows you to load different abstraction patches with dynamic patching magic.
[plaits~] has been updated to include new 8 synth engines with the latest firmware. Modular people are happy... (thanks amy for doing this)
One cool new object for MC is [voices~], which is a polyphonic voice manager that outputs the different voices in different channels. If you have MC aware oscillators and stuff this allows you to manage polyphonic patches without the need of [clone] at all. This is kinda like VCV works and it opens the door for me to start designing modular inspired abstractions, something I mentioned before and might come next and soon! So much being done, so much to do... What an exciting year for Pd with the incredibly nice MC feature!
There's lots more stuff and details, but I'l just shut up and link to the full changelog here https://github.com/porres/pd-else/releases/tag/v1.0-rc9
You can get ELSE from deken as well. It's up there for macOS, Windows 64 bits, Linux 64 bits and raspberry pi. Please test and tell me if there's something funny.
Cheers!
Chees.
Interviews
Hi, my name is Kane Lister and I am currently studying for my MSc in Audio Engineering and I'm looking to gather some primary research through interviews with members of the PureData community for my case study.
Question will include what different functions do you include in your PureData Synths, what's Synths you like and have you have based any of your synths off of existing synths, etc...
I will be extremely grateful for anyone who participates, thank you.
Basic MIDI setup problem
@JOO What software synth are you using? In my case I think Mohave didn't come with a GM synth installed (like Windows 10 does), so I had to install SimpleSynth and configure it to read from the bus.
I feel so foolish answering Mac set up questions because I'm usually the one asking them
Here is someone who had the same problem 10 years ago: https://forum.pdpatchrepo.info/topic/4119/general-midi-au-dls-synth-where-oh-where
Demonstration of the 5 Basic Synthesizer Modulation Types
UPDATE: 2023-01-11:
I just noticed the zip was missing the needed [sc] abstraction to play the tester. Have updated the zip below to include it. Please, accept my apologies for the deficiency. -PTS-LTM, s
the5basicmodulation-synth-types-2(w-missing-sc).zip
(no other changes)

Before I built Jass~(Gemini) I first had to spend a lot of time gathering together all the information I could about all the basic synth types.
This patch consolidates all 5 of the basic types (additive, frequency, phase, pulse, and amplitude) under one heading so that they may be more quickly, easily, and readily comprehended.
It includes selectors for the carrier and modulator wave types, as well as, the two basic controls for each type, and an array so you can both see and hear how those basic types look, feel, and sound.
It's also just sort of cool to listen to.
I hope it may make it easier for you to digest the (what may initially seem complex ideas) more readily and conveniently.
Note: the floss-manuals have a lot to say about it, but leave off some stuff. And the audio-examples -help files are spread out across a lot of space and leave off the viable ranges for each control/parameter.
Good luck! Happy PD-ing. Stay healthy and
Peace through Music and Love through sharing.
p.s. if you find something that is "wrong" about the patches, in terms of how that type of mod is suppose to work, please, let me know, as I did have to guess about a lot of stuff and would love to learn.
How control the same parameter with poly and clone object?
Hi everybody,
I'm trying to build a polyphonic synth which let me control many parameters with midi cc.
First I create a synth. Then I use the object clone to multiply it.
Then I used the objects poly to have many voices of polyphony and it works well, but apparently poly use only note and velocity informations.
So I tried to create a second inlet on my clone object to control one of the synth's parameters. The result seems to be random and it affect only one synth's instances.
I'm blocked at this point.
Can someone show me the way?
Thanks
Paradigms useful for teaching Pd
It's not at all difficult to think of a case where this would break: say, a chord player where the chords may be 3, 4, 5, or 6 notes, to be played as block chords.
In that case the user would just copy-pasta a solution for max = 6 notes, probably with a sentinel value like a negative number to mean "this voice isn't used this time." Ah, I see you mentioned this already. Anyway, the limitation can be abstracted away. That is, the user sends a variable length list <= 6 to the interface, and inside the implementation [unpack] is used to distribute the list to its outlets. The implementation could simply initialize the chord to be all "-1" values, and the incoming list replaces the necessary slots.
Just to spitball-- I think the paradigm of specifying and rigorously testing the max number of "things" is an important and overlooked paradigm for Pd. E.g., if you want to handle up to 6-note polyphony, make an interface that has a slot to specify "6" as the max polyphony in there. Then in the implementation, actually compute the maximum number of things you gave it, and discard the ones you don't need at the last possible moment. (E.g., multiply the signal for that unused voice by "0" before outputting it.)
This way the user will spend all their time testing the maximum amount of time it takes the program to do its work. The user will then get a much better idea of how stable the patch is for realtime use.
If instead you optimize for average use-- say [switch~]ing off unused voices in a piece where you have 4-note polyphony for 15 minutes and 32-note polyphony for 10 seconds-- you do probably 100x fewer tests of the realtime readiness of the 10 seconds of 32-note polyphony. And that's probably the climax of the piece!
Edit: just to be clear-- if you turn on some fancy CPU-hungry filter during the 4-note polyphony and turn it off for the 32-note polyphony, the analysis and design obviously changes.



