• Gobochul

    So here is my project. The goal is to create a patch that is capable of translating frequency-domain graphs into sound. It still isnt perfect though, has a few issues:

    First issue is that the [tabplay~] object for some reason seems to ignore the first few values in the array it plays. My guess is that the metronome that operates it doesnt send the bang precisely every N samples as it should, because the ms-to-samples conversion isnt perfect as it should be, possibly because of rounding (?) (N is the blocksize here). How can i send a bang precisely every N samples?

    The second issue is more complicated. My code sets the phases of each frequency at the beginning of each block. If all phases are set to zero, this makes a large pulse at the beginning of each block, which can be even heard if the blocksize is larger. The way to prevent this would be to calculate the new phases for each frequency for each block, so there arent any phase-jumps in between blocks. this seems quite a task to me though. Can anyone think of a simpler way around this? Setting all phases randomly makes the sound smoother but its still far from perfect.

    Any thoughts?

    http://www.pdpatchrepo.info/hurleur/rifft_synth.pd

    posted in technical issues read more
  • Gobochul

    Hi. Im also new to this and i registered to this forum the same day as you, because i had the same issue as you. Are you me?
    Anyways here is what i can understand about this so far:
    The [rfft~] object takes each block of the incoming signal and transforms it into a complex frequency domain signal. Each block of this frequency domain signal contains information about every frequency from 0 to half the sampling frequency. I would think that this information is the amplitude of each frequency, but these values can be larger than 1 so im not sure how this works. You can get the amplitude of the complex signal by taking the root mean square of it, but to be able to completely reconstruct the signal, you also need the phase for each frequency, which is tan(im/re) "im" being the imaginary, "re" being the real part of the complex signal.
    You can get the original complex frequency domain signal from amplitude and phase values for each frequency like this: re=Amplitude*cos(phase) and im=Amplitude*sin(phase). You need to feed these to the [rifft~] object.
    Thats what i think about this anyways, dont take this for granted im just trying to figure this out myself. im not getting good results so far, i must be missing something in my code

    posted in technical issues read more

Internal error.

Oops! Looks like something went wrong!