DIY2 - Effects, Sample players, Synths and Sound Synthesis.
MarioMey, have a search on this forum for 'formant', there have definitely been some good ones posted here. I think maelstorm did some nice vowel filters perhaps.
looking at your patch, here's what i'd suggest:
instead of just using the formant and the delay feedback in series, i think you might be better off designing a new patch with a delay that goes back through the formant filter.
also, think about putting control for wet/dry. at the moment your dry signal is always 100%, but it might be cool to be able to have only the filtered signal as output sometimes.
and one more thing,
that delay feedback doesn't include any type of protection against signals greater than amplitude 1, so i'd suggest putting a [tanh~] object between the input signal and the [delwrite~]. That way, it will never go over amplitude of 1.
DIY2 - Effects, Sample players, Synths and Sound Synthesis.
I'm using these FXs A LOT in my project. They are really useful to me. When I have more FXs working in my system, I'll post another WIP post (http://puredata.hurleur.com/viewtopic.php?pid=37430)
Now, I'm trying to emulate a KP3 FX, called "Talk Filter". As the KP3 has a X-Y pad, the manual says that X is for the 1st Formant and Y, the 2nd Formant. I don't think that it really works like that.
It has a feedback delay and, for me, X is a formant modifier, but Y controls the main gain.
Anyway, I'm using a DIY2 st-delayfb and st-material (in "china") to emulate this FX. It sounds very similar. But, when X is at 0, the material change and sounds more "throgh a tube".
Please, hear the mp3 with only that X-Y position and, if you know, tell me how can I modify st-material to get that sound, what are the formants frequencies. I tried by myself, but I couldn't get it.
Or maybe I have to use another filter?
ZIP contains: the mp3, a test version of the FX ("MAIN-fx-talk-filter") with st-material.pd and st-delayfb-modified.pd (only sounds the delay, not the input) and a linear-equation-converter abstract. It uses adc~ and dac~. Be carefull with materials glass1, glass2 and metal... because of the feedback!
Speech Formant Synthesizer (With bonus Turkish vowels pack :P)
the thread has been quiet for some time but thought Id also like to thank you for the formant sample pd files..really useful and hopefully once I get back into the pd interface I can make proper use of them. One question I have about jimqode's example is I seem to get some clipping artifacts when changing vowels and was wondering if there is a way to remove it? I added a little lop~ which seems to help a little but only with lower frequency settings. I'm running on asio drivers and so at least I hope I can rule out my soundcard (LYNX).
I'm working on a kind of random vowel generator so getting the vowels to flow in a speechy way but not understandable is what im heading for.
FFT Normalization with different block sizes
Did you try the dividing I suggested? Raising from 128 bins to 1024 means you have 8 times as many bins, and if you're interpolating, that energy is not being evenly spread out across the bins. Your just adding more energy to the new bins. I think that is the problem. You need to make up for that extra energy.
Same thing with the downsampled one that is two quiet. You're getting rid of energy there, so you need to make up for that lost energy.
FFT Normalization with different block sizes
FFT normalization factor depends on FFT frame size (which is equal to blocksize for fft~ & Co.), overlap, and window type.
In my experience you can normalize where ever you want: in time domain before FFT, in frequency domain, or in time domain after FFT. It is also possible to normalize in two steps, each of sqrt(normalization-factor), for example when you want the bin content normalized for certain processing or analysis jobs. Then you do one step before processing and the second after processing.
In frequency domain, you can either normalize amplitude of polar coefficients, or real and imaginary part of rectangular coefficients. This has no consequence for normalization factor.
If you would do normalization outside the reblocked subpatch, that is also possible, before or after FFT patch. But you must still consider blocksize and overlap.
You can verify all these possibilities by tweaking mentioned patch. The fact that normalization factor does not depend on the point in the process where you apply it, is convenient. However, for analysis or processing, that point of normalization does matter sometimes.
Consider for example a single-sample click: it's energy is spread over all frequency bins. With no normalization before spectral analysis, magnitude would be 1 for each bin. Next, consider a perfectly white noise, or a complex linear chirp over the full spectrum. With sqrt(normalization-factor) before analysis, the magnitude is 1 for each bin. Next, consider a pure sinusoid. With full normalization before analysis, the magnitude is 1 for a single bin, or the leaked equivalent of that.
You see, it depends on signal type how spectral magnitude can be shown independent of FFT size. Probably, the signals you want to process resemble a white noise rather than single pulses or full-scale pure sinusoids. So my guess is, that you would opt for the two-step normalization if you want to mix spectral data of different FFT sizes.
0mms delay time in pd is it a dream?
you know some thing like http://www.symbolicsound.com/cgi-bin/bin/view/Products/Pacarana this but with a lot less money and with less latency I can link to any daw
If pd and max/msp made some thing like this I would buy it
I can see how you pd and max/map has the power to do all that the Pacarana can do. (visual tracker thank you)
Mm it just needs to be planed out .
Will I have the idea but who can I talk to to get i done?
I am not playing around if you are a software engineer email me
Problems or missing understanding with send and receive
you are very close with your understanding of how pack works.
it will only output when a value is input to its left inlet. this is a basic pd standard, followed by most objects. (there are exceptions, such as [timer])
so, actually you can throw away most of those [f ] objects you created, and just leave 1 for the y-abs value, that can be triggered by doCalcAbs bang.
the other receives (ymax, ymin, xabs, etc) can be plugged directly into [pack f f f f f f ] where they will be stored until the left inlet gets a value.
actually, you can make it even simpler by just sending directly from the number boxes into the [pack f f f f f] object.
be careful though. there is one big 'mistake' in your patch. you have two bangs: getValues and doCalcSlope. It is not 'wrong' to send many patch cables from one bang (or any other object), but the order in which the messages are sent is only decided by which order the patch cables are created. If you do any sort of cut and paste or something like that, the order may change, and you will have know way of knowing what order the bang messages go. In general, it is a good idea NEVER to send more than one patch cable from one outlet of any object. Even if the order doesn't matter, it is still good practice and safer to use [t b b b b b b] or something like that to force the order. have a look at the help file for [trigger] ( [t ] ) and you will hopefully understand.
In your patch, the order DOES matter, because you need to send the value to the left inlet of [pack f f f f f f] LAST, so that it triggers properly.
Pitch creation for inharmonic signal
Sent this to the list, but thought I'd possibly pick some more brains.
I’m looking for a way to impose a harmonic spectrum on a non-harmonic
signal in real-time. I tried cross-synthesis with a harmonic signal, which is ok, but
what I’m actually trying to do is to “tune” a field recording, in a way,
so it can have harmonic relations to a live instrument.
I played with the pvtune~ object from fftease which is nice, but the
results end up sounding a bit autotune-ish. And I also tried driving a few
vcf~ filters whose frequencies are set by bfcc~ from timbreID and relative to a fundamental tracked by fiddle~/sigmund~; also nice, But this still sound like imposing the harmonic characteristic on an existing spectrum, while I think I am looking to arrive at harmonicity through something like moving the frequencies of the partials into their closest values according to the harmonic series (so moving from bins=>partials).
Can this be done? it would entail changing the frequency of each bin
Wishart describes in his book a technique he calls spectral focusing,
which relies on lpc. He says that lpc can be set to generate a filter bank
which is distributed evenly with respect to pitch, but I’m not sure I
understand what he means and how it can be done in PD. lpc seems to output
a set of amplitudes for the coefficients. Can I set the filters to
frequencies of my choice?
Any help whatsoever with this would be greatly appreciated,
GEM alternative for Tk GUIs?
start C:\Programme\pd\bin\pd.exe -noaudio D:\koffa_root\camera\gui.pd
start C:\Programme\pd\bin\pd.exe -nogui D:\koffa_root\camera\audioplayer.pd
That's a good idea to start a -noaudio Pd for the GEM GUI.
OSX does not like to start two instances of a process, but there is a syntax to do it from a single terminal window. As a script (example):
/Applications/Pd-extended.app/Contents/Resources/bin/pd /Users/katja/pd/Slicejockey/SliceJockey.pd &
/Applications/Pd-extended.app/Contents/Resources/bin/pd -noaudio /Users/katja/pd/GEMdingen/draggable-guis/1WaveRefinery.pd
The '&' option does it.
Now you would need a different script for each OS, and even for each user because paths are always different. I'm thinking of ways how to make this user friendly so the patches can be shared without the user selecting and rewriting the correct script.
Say you first open the audio patch in a Pd with gui and audio. On that patch is [ggee/getdir] to find the working directory and the GUI patch. Now it would be great to open a second Pd with -noaudio and load the GUI patch, from *within* the first Pd. There is a variety of shell objects for Pd:
[motex/system], [ggee/shell], [flatspace/open] and [moonlib/open]. They all work different and it's easier to crash Pd with them than get anything useful done, like starting a second Pd. I have not yet succeeded in this. Further, to make it work for everybody, the path to the Pd executable should be somehow found in runtime. I have the feeling that these things can be solved.