• solipp

    @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

    posted in technical issues read more
  • solipp

    little note: your filter does not resonate at the cutoff frequency.
    top: how it should be, bottom: how it is
    image.png

    Screenshot_2021-09-08_01-12-29.png

    now, solve this ;)

    posted in technical issues read more
  • solipp

    @nicnut you can do something like this:image.png

    Edit: of course, if you need to translate from signal to control rate, threshold~ is the solution.
    Edit: better use -~: image.png

    posted in technical issues read more
  • solipp

    @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.

    posted in news read more
  • solipp

    there was a short conversation about this on the mailing list:
    https://www.mail-archive.com/pd-list@iem.at/msg58775.html

    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.

    posted in technical issues read more
  • solipp

    @jameslo said:

    • 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.

    posted in news read more
  • solipp

    you could just taplay~ an array with one sample at 1

    posted in technical issues read more
  • solipp

    @Obineg said:

    aha, so they take messages when you name them? :)

    no, they take messages in general. "naming" inlet/outlet is considered bad patching style.

    if you want to connect signals and messages to an abstraction, you have to use something like [route start stop int float] inside the abstraction - the signal will come out of the "does not match" output of [route].

    I prefer the pd method; [inlet~ fwd]. It is documented in the helpfile.

    @ddw_music said:

    It appears that, when you connect nothing to [inlet~], it already holds its last value and doesn't reset. You can test that, in the sample patch above, by deleting the signal connection into the right-hand side instance of the 0529 abstraction. If it went to 0, then the right channel would be silent. Instead, it holds frequency.

    ? if I could reproduce this, i would file a bug report on github. because this would be undesirable in many situations. However, i can't reproduce it. I wonder why it works for you?

    posted in technical issues read more
  • solipp

    since pd 0.51 it is possible to set a default value for [inlet~]. So instead of zero [inlet~] can send some unreasonable value against which you can check if there is a connection:

    image.png

    posted in technical issues read more
  • solipp

    @morpheu5 you could reduce the amount of oversampling, is there a reason for oversampling by a factor of 16? And you can [X] - switch~ off grains that are not playing..

    posted in technical issues read more

Internal error.

Oops! Looks like something went wrong!