sonify matrix through pfft, please clarify
I decided to finally tackle one of my long standing synthesis blind spots: FFT. I took Tadej Droljc great Sonographic Sound Processing suit (http://cycling74.com/forums/topic/share-sonographic-sound-processing-diss/) as starting point and I’m trying to strip out the basics to achieve something that might be useful in a project of mine: sonify realtime openGL rendered textures.
What I’m running up against is that all the examples I’ve found (in Tadej’s work or elsewhere) start with an audio signal, which is converted into frequency domain, processed, then back to audio. I don’t have a signal to start with. I start with a matrix that I want to interpret as frequency domain right away. One of my questions is how to deal with the phase plane in such a case.
Attached is my trial so far. It does produce sound but not as expected. The phasor doesn’t seem to function as ‘play head’. When connecting the number~ box instead of the phasor I’d expect to be able to step through and ‘freeze’ the frames but it doesn’t do that.
Also, after 30 seconds or so it just stops playing. And sometimes it only starts sounding after stopping and starting DAC a couple of times.
I’m surely missing a couple of basic points here. Can someone give me some pointers?
whoops, seems the loadbang to jit.bfg doesn’t work. be sure to give it a bang.
so…is this question too silly or too hard?
I’m afraid I don’t have the answer, as this is also one of my weak areas. But, I’m not getting any sound whatsoever from your example. Windows 7 6.12. No errors in the Max window. Tried everything likely, re-triggered loadbang.. nothing.
Hmm strange, also not when you toggle DSP off and on and play around with the jit.bfg settings (activate the metro when you do)? Anyway, my problem indeed is that i don’t understand everything that is (or should be) going on…
i have no previous experience with pfft, but i took your post as a starting point to deal a little bit with it and downloaded jfc’s spectral tutorials. when i sent your jit.bfg to one of the matrixes in these tuts (f.e. newspectrum in tutorial 7) it seemed to work fine… then i saw that you have a typo: you named your first matrix "audiotex", but inside pfft you peek "audioTex" :-). After changing that seemed to work stable…
omg… just a fr*cking typo… tanx for spotting that!
now I’m still curious about how to deal with the phase plane. tips/ideas/strategies?
gonna check that tutorial you mention!
yeah, the tutorial is really great… don’t forget to download the essay that refers to the patches. This makes stft much clearer to me now…
"A Tutorial on Spectral Sound Processing Using Max/MSP and Jitter":
"Phase information is important for the quality
of resynthesized sounds. The choice to apply a
treatment to amplitude and phase difference or only
to amplitude, or to apply a different treatment to
the phase-difference plane, is easily implemented
whether in jit.expr or with jit.pack and
jit.unpack objects. This choice depends on the
particular situation and must generally be made
after experimenting. "
Sorry DTR for such a late reply. I missed your topic…
First of all I haven’t checked you patch, since you’ve done some recent changes/corrections, as I can see from last posts. So I will give you only the answer about the phase plane. Or you can post your new patch again…
In your case, phase plane is totally arbitrary. You can use a plane that has the same size as amplitude plane, but all values set be 0. Or any randomness between 0 and PI.
You can check the "lock to grid" (or something similar) patch from my dissertation for a feeling, what a 0 phase plane does to a resynthesized sound. In that case all the amplitude energy is distributed evenly across the harmonic FFT grid (N x FFT fundamental). That means that the frequency for each FFT bin will be static across all FT frames. In case you will use "random" phase plane, the frequency for certain FFT bin will vary across all FFT frames. That means you will get even more noisy results.
Hope that helped,
Thanks T, will check that out!
I asked a related question in this new thread: