Formant synthesizer possible in PD?
Hello to who might ever read this post!
We are a group of linguistics students with no prior knowledge in PD.
Our goal for the project is to achieve a sort of game that the participants can try out: They listen to a prerecorded audio sample of a vowel (from any language, doesn´t have to be English or German), and their job is to match what they are hearing on the synthesizer. Ideally, they get some sort of visual interface where they can manipulate three parameters, which correspond to F1, F2 and F3 respectively (basically a simulation of the vowel map). As part of the game they get a set number of tries to "find" a spot on the simulated vowel map that matches what they heard from the recording. After their tries are up we can compare their result to what the ideal result would have been, possibly showing spectrograms and explaining the parameters / formants. So our idea is a game for the participants which results in a small educational part on our topic.
Has anyone ever done this or something similar in PD? Is what we are planning to do even possible?
RMS slow human
this is not a precise imitation and i'm not sure if it can be done more efficiently - but it works quite well by smoothing the graph value updates, effectively low-passing them by only adding a fraction of the difference (i'm also differentiating between rising and falling values - the rising ones are less filtered):
this could be done in vanilla - but the tab_*
objects of the iem_tab
library are certainly a lot faster.
for smoothing the graph itself, i use convolution (tab_conv
) with a small smoothing kernel. another option there is tabreceive~ -> lop~ -> tabsend~. the result looks ok as well, but it's obviously not symmetrically smoothed then.
not sure if these explanations make sense. but since i was working on some spectrogram stuff today, this question resonated and made me try to respond.
EDIT: btw., the signal in the video is just pink noise on/off.
Audio visualizer patches?
i just uploaded a spectrogram built with Gem. It's not very efficient and i might give it another try with shaders doing the drawing and logarithmic mapping. but anyway - seemed like an appropriate contribution to this thread:
https://github.com/ben-wes/pd-spectro_tilde
Audio visualizer patches?
Hi,
what are the best patches for pd (on linux) regarding audio visualization (from spectrogram to any other diagram) or audio reaction (of any type, even fantasy)?
Thank you,
a.
Karplus strong and strange issues with fexpr~
these are some pictures with the pd patch and below a spectrogram so you can see what I mean
Aliasing line ~ ?
imo this is a weird usage of [cos~]
. why not just feed a single frequency into [osc~]
? anywaways if you are set on doing it this way you could try using [vline~]
and see if it's any better because [vline~]
uses doubles. you could also try using [wrap~]
before [cos~]
.
but you might also be getting artifacts in the spectrogram from a sudden change in frequency (to 0)...
edit: basically it's not recommended to use large numbers to drive [cos~]
but I forget if [wrap~]
helps or not. the error might be present at that point already..
edit2: personally I use my own sine tables if I want really clean sine waves because the ones pd uses internally still sound a bit gritty to me sometimes, I think they use 512 points and I usually end up using tables that use 2048 or 4096 points
x/y data from excel into PD and then transform into sound
Hello PD community!
As part of a personal project, I need to transform columns of data (two variables) to sound. My variables are "x": distance and "y": height, so I would like the transformation to be to "x": time and "y" :frequency (hz). I tried several methods like first plotting the data and then entering it into software like AudioPaint or Coagula, but the result when looking at the spectrogram in software like Audacity leaves a lot to be desired, it's very messy. I tried a software called SIGVIEW and it's not neat enough either.
Three days ago I started with Pure Data, and this is what I have learned playing with the software:
First I need to create a frequency modulated synthesis, where the carrier would be my "x" values, and the modulator would be my "y" values. This I was able to do already.
I have to export my data from excel in .csv or .txt format.
What I know and I don't know how to do it:
input the .csv or .txt data to Pd (I have read and seen several patch models, but I am far from understanding how they work). For example when I look at the Pd browser and the instructions tell me to create a message object that says |open .txt|, I understand the logic. But I also understand that I can't open any .txt as I haven't created any. Sorry for being a newbie
Assign my "x" data to the carrier and assign my "y" data to the modulator.
I know this isn't the first time someone has asked this question, but the answers I've found have given me little clarification and even left me more confused.
I would really appreciate any tips you can give me!
Regards!
Passing ftt values to Android app
Thanks for your reply, bocanegra. Eventually, I found out Android allowed me to use a samplerate of 8000Hz and that was low enough to allow me to create a wideband spectrogram (125Hz per band). Thanks to everyone for your replies.
Passing ftt values to Android app
@MDobleZ said:
I'm trying to create a wide-band spectrogram app for Android.
@MDobleZ said:
Apparently, it cannot be done, since you can neither force the sampling frequency to be low enough nor the blocksize to be high enough to get a narrow-band spectrogram.
Wide? Narrow?
There are numerous ways of representing a spectrum graphically with or without [rfft] . Most have been covered within PD vanilla (libpd compatible) over the years.
If [rfft] doesnt cut it because you want detailed info on formants between 300 to 1500 Hz, you can use [sigmund~] to single out frequencies/peaks on a bandlimited signal
Passing ftt values to Android app
Apparently, it cannot be done, since you can neither force the sampling frequency to be low enough nor the blocksize to be high enough to get a narrow-band spectrogram.