-
bocanegra
@ddw_music said:
Just last week I made a lincurve~ abstraction, http://github.com/jamshark70/hjh-abs (if I'm writing the address correctly from memory).
yes, I remember. I use similar concoctions of my own.
Btw the gymnastics at the top could be simplified a bit by [swap], no?
Yes, but for didactic reasons I think the trigger is more appropriate (transparent).
-
bocanegra
@chrisby you are welcome. I am just happy I didn't blow up your speakers with my first attempt
On a side note, this ADSR is pretty basic and lacking in features. Among other things it would be preferable to have exponential curves on each segment like most analog synths...
-
bocanegra
Adding to it: The benefits of in-synth EQ is that you can make it relative to the midi key pressed. Think of the HPF on a Juno. It's a simple 6db high pass filter with 4 settings: 0,1,2,3 corresponding to octaves relative to the note playing.
-
bocanegra
Ok so, my mash-up has some serious flaws. First of all the sustain part does not account the magnitude for the midi controller being > 1 most of the time >.<
Second, as is, you can only set attack/decay/release times to midi numbers ranging from 0 to 127 (ms). So here's a fix for that:
The [MinMax] module is a small abstraction included in the .zip. You could add any kind of math where the scaling is done. For example some sort of log-ish bending of the midi input might be useful, and since all controller values are now normalized, this should trivial.
Apologies for not getting it right the first time
-
bocanegra
Here's the simplest ADSR routine I could come up with in a hurry:
-
bocanegra
@Tombot7 It works like a traditional attack/release envelope. The gate inlet controls the on/off stages with 1 for on and 0 for off. The following two inlets set attack and release time.
The [cos~] object when receiving a straight line going from 0.5 to 1 produces half a sine wave going from -1 to 1 so it's output is scaled to be between 0 and 1.
The release stage uses some simple math to mimic the exponential decay of an RC filter. If you want hanning fades on the release part as well, the patch could be simplified drastically:
AttackRelease2.pd
AttackRelease.pd (fixed mentioned mistake)Here is what their outputs look like:
-
bocanegra
You can use [cos~] for the "hanning" attack curve. Example:
-
bocanegra
Random thoughts:
Aliasing can theoretically spread all the way to the lower mid range.
In a mix, most instruments / tracks benefit from some EQ
Especially FM synths benefit from low cuts
In practice I equip most synths with a final low cut but I think more specific EQ-ing is better done with a dedicated plugin relative to the mix I am working on. -
bocanegra
I was gonna suggest using [text] but didn't get as far as to implement it before @whale-av posted :D
As a footnote to his suggestion, be aware that [list-drip] is from the list-abs library (all vanilla abstractions) -> https://github.com/pd-externals/list-abs -
bocanegra
@fred_dev said:
I can use $ to add a float or integer, but when I need to use a string I cannot get it to work (or understand how to make it work).
I think [symbol] might be what you are looking for (?). Consider the following:
Also check out [makefilename] for string (symbol) manipulation inside PD
-
bocanegra
Yes because the graphics are told to update with every DSP block. Try something like this instead:
-
bocanegra
@MDobleZ it is unclear what you are trying to do. There is no [pb~] object in neither vanilla nor extended (that I know of).
For continuous reading/writing from/to an array (FFT bins or other) no bangs needed, [tabreceive~] and [tabsend~] are your friends. Look at the FFT examples in the help browser to see how it is done, or read up on FFT ops here: http://www.pd-tutorial.com/english/ch03s08.html
-
bocanegra
The value of $0 is relative to the patch/abstraction. As [shepvoice] is an abstraction, $0 will have a different value in each instance. A way of circumventing this is to pass $0 in the abstractions arguments and invoking it inside the abstraction as $2 (or whichever # argument you reserve for it). Concrete example: [shepvoice 500 $0] and inside [shepvoice]: [r $2-pitch], [r $2-dropoff] etc
-
bocanegra
@jameslo said:
for completeness I suppose one should mention using MIDI and audio loopback software,
@parisgraphics said:
I have access to PD on Linux
In that case Jack server is your friend. Get QjackCtl for easy setup and patching. I do such things as control pd patches from my DAW via midi through jack to PD, translate midi messages from my keyboard in PD and route them to my DAW through jack, route audio from my DAW to PD for processing and back again through jack, the possibilities are endless...
DAW's that work for these kinds of setups on linux (that I have worked with): Ardour, Qtractor, Reaper. Rosegarden - there are probably more. For the time being I prefer reaper
@jameslo said:
the flexible MIDI and audio routing capabilities in Reaper seem to make them unnecessary.
I haven't been using reaper for a more than a couple of months, but at least on linux all external routing has to be patched through jack server
-
bocanegra
@raynovich we have no chance of knowing what is up or down in your patch without you sharing it. Soundfiler causing glitches upon loading is a well known "bug". It's not actually a bug. It's akin to [bang]->[until $1] where $1 is the number of samples in the file you are loading. PD wont do anything else until it has processed the entire file. You can make up for this by calculating how long your patch will be "offline" (something something buffer size / samplerate +/- cpu mubo jumbo) or have all samples loaded at startup in one huge file as @whale-av suggested.
-
bocanegra
@whale-av my example does account for upper or lower pitch, but it assumes that the inputs are already ordered as left neighbour, peak, right neighbour. So a smarter way of doing the presorting would be to identify the one loudest peak, then pair it up with it's two neighbours regardless of their 'loudness' before sending them to [example]
-
bocanegra
@jj37592 said:
Let's say my finger applies the highest pressure somewhere between column A, B and C. - Could your patch determine the exact location and pressure applied between those 3 columns?
i.e.
crosspoint A1 = 75 pressure
crosspoint B1 = 91 pressure
crosspoint C1 = 83 pressureClearly the highest pressure measured is at B1. But also the three values together indicate, that the actual point the highest pressure is applied lies "a bit further" from B1, in the direction of C1.
This is what i think needs to be calculated in order to get a continuous pitch modulation, without steps (midi not 82, 83 etc.)You will want to keep your calculations "midi" (not stepped) all the way until your oscillator so as to keep all calculations linear. From your example here (3 points) you can measure which point is closest to the peak and how close (You can use the [min] object for this). Equal to peak should bend half a semi tone. And you need to set a threshold for how far apart in pressure they should be for no bend at all (half of peak?).
Something like this maybe? example.pd
-
bocanegra
The colored diagram for guitar fingering is really neat! But aren't trigonometric calculations overkill? Moving one "degree" clockwise in the spiral is going up one semitone (adding 1). Computing the full set of one key is just adding 12 until you reach > 127. Transposing a scale x semitiones is just adding x (whole numbers) to it. Maybe I am missing something?
-
bocanegra
@Nullstrahler said:
@bocanegra said:
You can get the latest .deb files from debians website: https://packages.debian.org/search?keywords=puredata but that means you gotta figure out dependencies yourself
Thanks. That is where problems start, as I do not understand exactly what this means or how to do this.
I went over it some 6 months ago in another thread: https://forum.pdpatchrepo.info/topic/13499/couldn-t-create-sigmund/2
Basically, you download all the packages named puredata something and run them with software center / synaptic or whatever
" cd path/to/pd'
"path/to/pd" is a generic placeholder and is meant ot be substituted with the actual path you installed pd to
If there was any hints regarding the installation of pd 51-4 or some clearance where I am on the wrong path I still would be interested.
THANKS!
See the thread I linked to above. Otherwise there are repositories you can add manually: https://puredata.info/docs/faq/debian - the debian stable repo should work (same packages I am running on xubuntu 20.04)
Adding apt.puredata.info manually
You can either add this line to the bottom of /etc/apt/sources.list Or you can add it in the GUI administration program Synaptic (in the Settings -> Repositories menu, then the Third-Party Software tab). Choose the line for your version of Debian or Ubuntu from the options below:#Debian/stable deb http://apt.puredata.info/releases stable main
After adding this repo and doing
sudo apt update
you should be able to install puredata 51.4 with apt install -
bocanegra
@Nullstrahler said:
Just did this on another system; worked fine, but still it is pd 50.2 coming with studio 20.04.
I guess if I really would like to install pd 51.4 it is not working by running sudo apt install pure data , is it?You can get the latest .deb files from debians website: https://packages.debian.org/search?keywords=puredata but that means you gotta figure out dependencies yourself