"cd" stands for "change directory". "path/to/pd" is of course a placeholder. You have to replace it with the path to the directory you chose for the source files. Alternatively, you can use your file manager to open the directory, and then right-click -> "Open Terminal Here".
you'll need the following dependencies to compile pure data, some of them might be already installed on your system. Install with apt:
sudo apt install build-essential automake autoconf libtool gettext
sudo apt install libasound2-dev libjack-jackd2-dev
Then follow the install instructions. In a nutshell:
this compiles pd with jack support. you can check the configure options with
if make runs without errors, you can install with:
sudo make install
; pd-test obj 0 0 r bnag, obj 0 100 unsig~, connect 0 0 1 0; bnag bang
@differencetones you can just parse $0 as an argument to clone like this:
[clone myabstraction 16 $0]
To refer to $0-grain in the parent, use [tabread4~ $2-grain] inside your abstraction ($1 is the number of the clone instance)
@bocanegra http://www.willpirkle.com/Downloads/AN-4VirtualAnalogFilters.2.0.pdf is a good read. I translated the TPT laddder filter to pd in the [pp.ladder~] object in audiolab (you can download it with deken). Here is a version with an outlet for each pole and the "analog clipper" from above : TPT-ladder.pd
Another solution is [bob~] of course : https://github.com/pure-data/pure-data/blob/master/extra/bob~/bob~.c
little note: your filter does not resonate at the cutoff frequency.
top: how it should be, bottom: how it is
now, solve this
@nicnut you can do something like this:
Edit: of course, if you need to translate from signal to control rate, threshold~ is the solution.
Edit: better use -~:
@jameslo nja, i think you gave the wrong reason
if you run pd at samplerate 44100 and you upsample by 16, the samplerate of the patch is 705 600. Devide this by fft-split~'s default blocksize 1024 and you get a bin resolution of 705600/1024 ~ 689 hz.
This is like running fft-split~ with a blocksize of 64 at normal samplerate (44100/64 ~ 689). You can try, [pp.fft-split 64 4] will give you the same strange result (I'm not even sure why fft patches start to act weird when you run them with block sizes >256, maybe it actually is related to overlap...)
With block size 4096 you get 705600/4096 ~ 172hz resolution, but you probably want 705600/16384 ~ 43hz witch relates to 44100/1024 ~ 43hz.
there was a short conversation about this on the mailing list:
In general, I think questions about potential bugs or the internal workings of pd are better asked on the mailing list or as an issue on github.
- It looks like you are simply passing the bins that are below the threshold frequency to the left inverse transform, and the rest to the right (with the omitted bins on each side muted), is that correct?
yes, that's correct.
- If so, then why does the transition band sound continuous? i.e. when I output lowpass to the left and highpass to the right, as I sweep up it moves continuously from left to right around the threshold frequency.
that is the result of spectral smearing i guess https://en.wikipedia.org/wiki/Spectral_leakage
the slopes of the lowpass/highpass are not perfectly steep
- I struggled to make a test to see what phase distortions occur near the threshold frequency, and there don't appear to be any. Could that be true? (I'm not confident I tested properly)
there shouldn't be any phase distortion. essentially it's a linear phase FIR filter.
@tungee thanks for the links!
I made this pp.ladder~ filter to get an idea about the concept of "zero delay filters". So I kind of mapped it out as a pd patch to get an overview (not that i fully understand it now...)
However, it makes much more sense to create externals (instead of vanilla abstractions) of this filters. Pure data is really not efficient in processing patches with one sample dsp blocks.
you could just taplay~ an array with one sample at 1