FFT preringing - but only sometimes

    Max For Live

    Blair's icon
    Blair's icon
    Blair
    Jan 25 2023 | 2:37 am
    I am using a tempo-synced phasor ramp generator inside of an FFT. The reason for using FFT is because it's part of a greater patch, where the ramp down happens spectrally and can be offset per harmonic. Before I was using non-signal counter to modulate it, whilst it didn't sync as well, there was no issue. Is it possible to fix it with how I have it set up now?
    you can hear how the pre ringing only happens sometimes
    Max Patcher
    In Max, select New From Clipboard.
    Show Text
    And the fft patcher:
    Max Patcher
    In Max, select New From Clipboard.

    • 👽R∆J∆ The Resident ∆lien👽's icon
      👽R∆J∆ The Resident ∆lien👽's icon
      Is it possible to fix it with how I have it set up now?
      my first guess is 'no', because phasor~ is attempting to stay synced to the Global Transport and this falls outside the realm of the signal-vector of your pfft~, so the two will often be slightly out-of-sync unless you find a way to hard-sync the phasor~ with the bin-index of fftin~(i don't understand why: but i do get less ringing when i set my signal-vector within 'Audio Options' of Max to 64 or 128... maybe having the outer signal-vector size fall within the range of half your FFT-size helps somehow? ...but i can still hear it's a bit imprecise). but i feel like there maybe some tricks people could come up with using sah~ to sample-and-hold the incoming phasor~, or possibly reset the phasor~ using a signal at certain times synced with that bin-index outlet... (i just don't have time to come up with all these guesses for you, and i also don't know what the larger patch does nor the longer-term goal here, so it's probably better i give you this guess and you will end up learning more by searching stuff out on your own related to this...) since you're working with direct real/imaginary values(what you've created is more efficient than the equivalent using cartopol~ to translate real/imaginary into amplitude/phase ...and working with 'phase' is where you could use the phasewrap~ object to wrap within -π and π as mentioned in your other thread, but i'm not sure this is actually what you're trying to do, anyways -> it's more useful when you're trying to detect/rework specific parts of the frequency spectrum separate from magnitude/amplitude, but in your patch, it seems you're only reworking the overall magnitude by multiplying both real/imaginary by the (inversed)output of phasor~), i recommend going over these more too, particularly the first one: https://cycling74.com/tutorials/the-phase-vocoder-%E2%80%93-part-i https://cycling74.com/tutorials/the-phase-vocoder-part-ii
      my best guess: it IS possible, but it's actually both the fft-size and hop-size(defaults to 2) which will make this difficult to sync ideally to a phasor~ which is already synced to the global transport(instead of to something within the pfft~... the signal-vector size within a pfft~ is dependent on your FFT-size, outside the pfft~ it can be different). you just need to study more closely how these parameters interweave within the overall system in order to work it around what you're trying to achieve.
      also, you've probably seen this already, but just in case, there's this series that starts with more basics but still very helpful for folks of all levels of understanding, i still have to review it often: https://cycling74.com/tutorials/advanced-max-ffts-part-7
      Share
    • Blair's icon
      Blair's icon
      Blair
      Jan 26 2023 | 4:32 am
      Alright, thanks for the ideas I will have a read of those tutorials and hopefully I will understand a bit more about what you mean. Cheers