Question about muliple arrays in one graph
I decided to redesign the thing, taking a different approach. Rather than try to display two arrays in the same graph, I defined one array (named "$1-array"), the only one which actually gets displayed, using the Put menu. Then I defined two other arrays (named "$1-velocity" and "$1-duration") using [array define], and a horizontal radio button to allow the user to select which of the two arrays to display. When the user clicks on one of the radio button selections, it saves the current contents of $1-array and then copies the contents of the selected array into $1-array.
It works the first time I open the patch, but when I go to close it, PD asks me if I want to save my changes (even though I didn't make any changes, except to the data in the arrays. I don't have "Save contents" checked either. If I say "No", I can open the patch again and it still works. But if I say "Yes", it replaces the original name of the displayed array ("$1-array") with the actual number (for example, "1150-array", as in the screen print below) inside the patch. I'm not sure why it's doing this, or if it's expected behaviour. It doesn't over-write the names of the other two arrays ($1-velocity and $1-duration) inside the patch, though. Any ideas?
The whole thing is getting a little complicated, so I've uploaded the parent patch ("test-array-abs.pd") and the abstraction containing the arrays ("array-abs.pd"). This is the line in "array-abs.pd" that gets changed if I say "Yes". Of course, I could try to remember never to say "Yes", but that's a bit much to ask of the user, I think. And it's kind of annoying to have to answer in the first place.
Before:
#X array \$1-array 32 float 2;
After:
#X array 1161-array 32 float 2;
How to make a slider have a limit and change direction?
Obineg says: "and while GUI objects might be able to understand a message to set new min and max values, it is not good practice to use this feature to perform math operations"
I'd absolutely agree with this. Program logic should be program logic. GUIs should be for input or display. GUIs should not be performing program logic!
For that matter, sliders' min/max limits don't apply to values coming in:
The slider has set a limit max = 127. I sent in the number 150, and the slider sent out the number... 150. Not clipped to 127.
So you cannot use the GUI to enforce numeric limits at all. That is, the title of this thread is already leading in the wrong direction. A slider having a limit is irrelevant to what you're trying to do.
It seems like you're looking for an increment/decrement behavior that stops once it reaches a certain value (and then maybe triggers a different increment/decrement -- though this is unclear in your description because you say both "and change direction" and "once it hits the limit stays at that value until I press stop").
So, first, increment and decrement. You have the right idea with the float box. You don't need both a [+] and a [-] box because you can set the second operand: you can [+ 0.01] or [+ -0.01] using the same object.
Then, you need something that will decide whether the number is in range or out of range, i.e., you need numeric comparisons. I like [moses] for this but you could also use [>], [<] if you wanted.
So the way I would design "increment or decrement, and stop when the value goes out of range" might be like this.
Both buttons set the same initial value and start the metronome. The third outlet of the [t b b b] objects sets the up or down direction. Remember [t] outputs right to left, so the order is: 1/ set direction, 2/ set counter initial value, 3/ run the [metro].
At the top right is the "stop" signal (triggered by a too-low or too-high value). If you wanted to trigger some other action, you could put that here.
hjh
PS (edit) Actually the initializer could have slightly fewer crossing wires by splitting the [t] objects:
Raspberry Pi Audio Output Crackling when Mic enabled
Hello,
I have a USB audio interface (3D Sound Audio Interface see below) plugged into a raspberry pi. When I have it selected for audio input (port audio seems to be the only one that works) along with audio output via the speaker on the GPIO pins I get crackling as if PD can't handle the processing of audio input while outputting on raspberry pi. NOTE: if I turn off audio input the output sounds perfect.
Anyone else encounter this issue?
FYI, I hooked up a nice little speaker to make the Raspberry Pi more portable via the I2S Amp on connected and powered by the GPIO pins (see this link for details
[bob~]
Here are all available Pure Data Filters collected as automatonism modules in action:
In your Boca Ladder abstraction i mixed the normal tanh with the analog clipper,which in my opinion gives the best results. If in exp~ the quotient is ==5 , only analog clipping is used via switch. if both mixed are together the sounds gets some superb irregular resonances. the bite parameter in the module amplifies the resonance:
i also spent a oversampling switcher for 2/4 *oversampling, where with 4 OS the snapping of modulation sources sounds greater
imho.
Here is the test-file
Battle of the filters Vol.zip
Contribute to better Pd Documentation
As a Puredata teacher in a fine art school since 10years (and many workshops in China) the only solution for me to make pd "usable" by my students, was to distributed my own puredata version modified with translated help files from an "computer-scientist" to an "artist" point of view, and with many extra things.
@whale-av said:
Maybe adding a "Documentation" link to the console help menu would be a good first move....?
I agree, if only clickable link could be added to console.
The doc subfolder names are not enticing..... "3.audio.examples" really could be "3.digital.audio.tutorial" for example.
I don't think there is even a link to it in the "HTML Manual" which becomes "PD Documentation" when it is opened.
All very confusing though as the Pd.doc folder is mostly a patching tutorial that complements the Floss manual.
I agree, the documentation could a bit more explicit and well organised. I simply don't use it and added mine.
Finally, Here is an example of my pd version that I throw to students now to have a chance to keep them in the game:
-
I am using ceammc a lot, and added some objets and a simple theme:
-
I added a template for every new patches and some personnal icons to ceammc bar:
-
Here is my Intro-help.pd (accessible from any right clic in a patch)
-
I added my own fast prototyping ofelia abstractions:
-
The right click show all the objects (also have auto-completion of course)
I think right-click on objects should propose "Online Reference" that lead to an online up-to-date documentation... or wiki.
Question about Pure Data and decoding a Dx7 sysex patch file....
Hey Seb!
I appreciate the feedback
The routing I am not so concerned about, I already made a nice table based preset system, following pretty strict rules for send/recives for parameter values. So in theory I "just" need to get the data into a table. That side of it I am not so concerned about, I am sure I will find a way.
For me it's more the decoding of the sysex string that I need to research and think a lot about. It's a bit more complicated than the sysex I used for Blofeld.
The 32 voice dump confuses me a bit. I mean most single part(not multitimbral) synths has the same parameter settings for all voices, so I think I can probably do with just decoding 1 voice and send that data to all 16 voices of the synth? The only reason I see one would need to send different data to each voice is if the synth is multitimbral and you can use for example voice 1-8 for part 1, 9-16 for part 2, 17-24 for part 3, 24-32 for part 4. As an example....... Then you would need to set different values for the different voices. I have no plan to make it multitimbral, as it's already pretty heavy on the cpu. Or am I misunderstanding what they mean with voices here?
Blofeld:
What I did for Blofeld was to make an editor, so I can control the synth from Pure Data. Blofeld only has 4 knobs, and 100's of parameters for each part.... And there are 16 parts... So thousand + parameters and only 4 knobs....... You get the idea
It's bit of a nightmare of menu diving, so just wanted to make something a bit more easy editable .
First I simply recorded every single sysex parameter of Blofeld(100's) into Pure data, replaced the parameter value in the parameter value and the channel in the sysex string message with a variable($1+$2), so I can send the data back to Blofeld. I got all parameters working via sysex, but one issue is, that when I change sound/preset in the Pure Data, it sends ALL parameters individually to Blofeld.... Again 100's of parameters sends at once and it does sometimes make Blofeld crash. Still needs a bit of work to be solid and I think learning how to do this decoding/coding of a sysex string can help me get the Blofeld editor working properly too.
I tried several editors for Blofeld, even paid ones and none of them actually works fully they all have different bugs in the parameter assignments or some of them only let's you edit Blofeld in single mode not in multitimbral mode. But good thingis that I actually got ALL parameters working, which is a good start. I just need to find out how to manage the data properly and send it to Blofeld in a manner that does not crash Blofeld, maybe using some smarter approach to sysex.
But anyway, here are some snapshots for the Blofeld editor:
Image of the editor as it is now. Blofeld has is 16 part multitimbral, you chose which part to edit with the top selector:
Here is how I send a single sysex parameter to Blofeld:
If I want to request a sysex dump of the current selected sound of Blofeld(sound dump) I can do this:
I can then send the sound dump to Blofeld at any times to recall the stored preset. For the sound dump, there are the rules I follow:
For the parameters it was pretty easy, I could just record one into PD and then replace the parameter and channel values with $1 & $2.
For sound dumps I had to learn a bit more, cause I couldn't just record the dump and replace values, I actually had to understand what I was doing. When you do a sysex sound dump from the Blofeld, it does not actually send back the sysex string to request the sound dump, it only sends the actual sound dump.
I am not really a programmer, so it took a while understanding it. Not saying i fully understand everything but parameters are working, hehe
So making something in Lua would be a big task, as I don't know Lua at all. I know some C++, from coding Axoloti objects and VCV rack modules, but yeah. It's a hobby/fun thing I think i would prefer to keep it all in Pure Data, as I know Pure Data decently.
So I do see this as a long term project, I need to do it in small steps at a time, learn things step by step.
I do appreciate the feedback a lot and it made me think a bit about some things I can try out. So thanks
PD/pduino patch not allowing comport to work no matter what
So I recently wanted to try connecting arduino (a potentiometer) to PD to control a slider. One of the main objects I have been seeing everyone use is the "comport" object. A week or so in and I cannot seem to call upon the abstraction "comport" and it also does not show up in my "Find externals" search results n my Help section of the PD window. However, I have tried to download the comport extension and placing it (within folders as well as directly) into the patches I am trying to work with but with no luck.
Some of the possible problems could be that its not the right pure data version (I heard it might work with extended? Not even sure what version mine is or how to check) or old version of the "Find externals" plug in (by Deken?). Or perhaps I am placing the comport abstraction in the wrong places (I have also tried placing it in the externals sub directory).
Sorry for t the long message. Any help would be amazing. THank you!
Kor'in - Advance 6-voice polyphonic synthesizer made with NoxSiren [v4.0]
Kor'in an advance example of how to create an entire synthesizer using only NoxSiren [v4.0] system. This is non-standard subtractive synthesizer model but can be modified into a hybrid complex model.
What is NoxSiren system ?? <--
https://forum.pdpatchrepo.info/topic/13122/noxsiren-modular-synthesizer-system-v4-0
Kor'in Download :
Kor'in.rar
-Kor'in Structure-
- Kor'in birds eye view
- Kor'in voice unit
- Kor'in delay unit
- Kor'in noise unit
- Kor'in SMU unit
Smooth frequency transition
you should use a logarithmic line~ object to adjust the curve as smooth as you want.
On top of that you should apply a Nyquist correction to the output of your oscillator abstraction.
So here you have some imagines how to do that. The Nyquist abstraction is used in the output of the triangle oscillator abstraction as an example. Then the final output can be controlled with a logarithmic line~ object.
OBS : If you need more then one oscillator you can apply this for each oscillator and then use a mixer and then the output of the mixer you use again the same idea. In this way you have an oscillator smooth stage control and a final mixer stage control for extra smoothness.
This is just the simple mono smooth control (no curve adjustment)
The same idea but as a stereo version
Here is with logarithmic smooth control (with curve adjustment)
Here you have a Nyquist correction abstraction
Here you have a triangle oscillator with Nyquist correction
You can also download xline~ which is an object that is doing just that :
https://forum.pdpatchrepo.info/topic/13084/xline-logarithmic-line-object
Nek'Sum - An advanced drone/texture monophonic synthesizer <- [v6.0] + // Mandarin Edition //
Nek'Sum-6 drone/texture monophonic synthesizer is compose of 5 stages :
First stage -> 3 main OSC with noise mixer option and generative synthesis support with 5 types of waves (tri,sqr,saw,supersaw,generative).
Second stage -> Filter stage with morph option and 4 filters types : Pass through, Lowpass, Highpass, Bandpass for the first stage.
Third stage -> 3 LFO (sin,tri,sqr,saw) modulators for the second stage.
Forth stage -> 3 Phasor's for the third stage.
Fifth stage -> 1 Deep Reverb with Lowpass filter for the forth stage.
It is capable of generating a large soundscape of drone/texture sounds inspired by The Doctor.
-UPDATE-
Thanks to Seven of Nine Nek'Sum is now at version [v6.0]
- Added Mandarin edition after cyber-brainstorming with Jade Chia-Jung [v6.0].
- Translation of the Ancient Egyption logo into obscure dialect of Anquietas language, thanks to Daniel Jackson [v6.0].
- Thanks to Nox cyberart society now the GUI is much better [v5.0].
- Added reset, randomization and resize for the generative synthesis [v5.0].
- Added generative synthesis support for each oscillator [v4.0].
- Added a noise mixer with 4 types of noise for each oscillator (orange,yellow,blue,pink) [v3.0].
- Added a morphing mechanism for filter stage [v3.0].
- This new version has a better GUI interface powered by a Borg-Casimir engine [v2.0].
-CYBERLOG-
Project manager : Oma Desala
Programming/UX design : Boran Robert Andrei
QA engineer : Anubis
Generative synthesis system design/Lead engineer : Seven of Nine
DSP engineering : Jade Chia-Jung, The Doctor
Testing/debugging system engineer : Lt. Colonel Samantha Carter
Language consultant : Daniel Jackson
Patch Download English Edition :
Nek'Sum 6.rar
Nek'Sum 5.rar
Nek'Sum 4.rar
Nek'Sum 3.rar
Nek'Sum2.rar
Nek'Sum.zip
Patch Download Mandarin Edition :
Nek'Sum 6 - Mandarin Edition.rar
Mandarin special edition :
Snapshots :