• jameslo

    @jpitz You can see a manual link if you open Help->Browser->Pure Data, but that's the same as Help->HTML Manual.... Maybe you could start at Help->Browser->Pure Data->2.control.examples/
    Screenshot 2021-07-23 040449.png

    posted in tutorials read more
  • jameslo

    @lacuna I replaced those IEM filters in [ups~] with [pp.fft-split~] and I'm getting more stable results for sine waves. ups~.pd That said, I don't really understand the arithmetic you are performing in the lower left corner of the main patch. Can you please explain?

    Here's another approach that doesn't depend on knowing how the upper harmonic strengths in the upsampled version relate to the aliasing in the normal version. Using both fft-split~ as well as the 3 pole 3 zero Butterworth filter shown in J07.oversampling, measure how much signal has been removed. That should be close to the amount of aliasing that has been removed provided the frequency and rolloff of the filters are appropriate. I'm more confident in this measurement because it uses an established anti-aliasing technique and performs the measurement in the non-upsampled environment. What do you think?
    measure alias filtering.pd
    measure alias filtering.png

    posted in technical issues read more
  • jameslo

    @solipp I was wondering if fft-split~ could be used as an upsampled anti-aliasing filter but I'm not getting the results I expected. Things seem to change radically depending on the oversampling factor. What am I misunderstanding?
    fft-split~ as antialias filter.pd fft-split~ as antialias filter.png

    EDIT: NEVERMIND
    It appears that Pd doesn't perform the 4X overlapped FFT windowing as expected if the FFT's block size is smaller than 4X the block size of the enclosing patch. When I change fft-split~'s block size to 4096, things are fine. But let me know if I've given the wrong reason.

    posted in news read more
  • jameslo

    @lacuna Oh yeah, sorry, here it is: oddHarmonic~.pd . It's not so important I think--I was just verifying that an additive synth approximation of a square wave was "alias-free" by this measure.

    No, I don't think so, as niquist reflects before upsampling. Even when using some upsampling filter, as in [inlet~]'s help, you can't un-alias an aliasing signal by upsampling !?

    Agreed. I would probably appear to be smarter if I didn't speculate in public :)

    but don't know how to tweak it for different sample rates and with fairly precise cuttoff frequency, yet.

    I'll look at Audiolab's fft-split~ tomorrow and try to incorporate it into your patch. The thing is you're filtering at a bucket boundary in the upsampled domain, so that seems perfect for its brand of FFT bucket moses.

    posted in technical issues read more
  • jameslo

    @lacuna Ha ha, it turns out I did "solve" it using FFTs, but I had to study my year-old code for a while to see it. You can see in this snapshot that I'm measuring a lot less upper harmonic energy in oversampled sinewaves than you are, and I'm wording it that way (and putting "solve" in quotes) because I'm not convinced that this is a useful measure of aliasing at the normal sample rate. I also can't say that I understand my results for noise and for the impulse function--I thought the latter would have even more energy above Nyquist. I have another idea to try, but I have a plumbing issue to address first :( I'm still interested in your thoughts though.
    measure aliasing (static vector).pd

    measure aliasing (static vector).png

    posted in technical issues read more
  • jameslo

    @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

    posted in technical issues read more
  • jameslo

    @lacuna Thanks, that's really interesting. I don't think I solved this using FFTs because I didn't understand how to add the bins to get a meaningful measure of signal strength (among many other things). Looking over the code I wrote I can see it's gonna take a while before I understand what I was trying to do, but in the meantime maybe we can discuss your test and possibly poke holes in my original assumptions.

    In my limited experience the filters in Pd do strange things when set to frequencies outside of the musical pitch range, so I would wonder if lp10_bess~ works properly at Nyquist. But I really don't know either way. And what does it mean to low pass filter a signal at Nyquist, since the filter itself is subject to the Nyquist limit? Or maybe you have other reasons to do so?

    I'm still not convinced that comparing a signal with its upsampled version is meaningful. How do we know that the upper harmonics in the upsampled version are present and aliasing at the normal sample rate? My understanding is that upsampling just gives us more frequency headroom in which to filter out frequencies above Nyquist. But for measurement I wonder whether we should be instead passing the normal signal to an upsampled subpatch and then measuring how much energy is above 22050. Then again, that signal would look like a stepped signal in the upsampled environment, and that seems like it would have a lot of additional high frequency energy, so maybe that's a terrible idea.

    I'm obviously more confused now than when I originally asked the question.

    That said, I can't believe that there is an audible aliasing problem with plain sine waves. If you want I'd be happy to write you a double-blind listening test based on the Lady Tasting Tea experiment. Let me know and we'll work out what it should contain.

    But assuming your method is valid, maybe you should try fft-split~ from Audiolab instead of the IEM filters. If I can understand my old code then maybe I'll have something more constructive to contribute later.

    posted in technical issues read more
  • jameslo

    @JOO I'm no Mac power user (and I know nothing about RPi), but the way I connect Pd's MIDI output to a software synth is via one of the IAC busses I created in AudioMIDI setup. I configure Pd to use one of the busses as its output device and the software synth to use that same bus as its MIDI source. If there's another way please let me know!

    posted in technical issues read more
  • jameslo

    @bocanegra Fun, I didn't know there was a name for that. Cyclone has tanh~ and overdrive~ in case you weren't aware.

    I made something similar 5 years ago when I was experimenting with wavefolding. It's sort of like fractional recursion of the second half of cosine, if that makes any sense :)
    deformPhasor~.pd
    deformPhasor~ show.pd

    Screenshot 2021-07-12 141521.png

    Here's another one based on [log~]: logShaper~.pd

    logShaper~.png

    posted in abstract~ read more
  • jameslo

    @oid because $0 in [pack] refers to the local identifier of the current patch, whereas we want the literal "$o" to be inserted into the send string of the vslider, so that the vslider uses the local identifier of whatever patch it gets copied into.

    Screenshot 2021-07-10 174322.png

    posted in technical issues read more

Internal error.

Oops! Looks like something went wrong!