-
Nitrooo
Hey, I just wanted to share this patch I made.
I need to measure the delay in samples between two points in my patches, so I came up with this. I should say "blockwise" though, because the result is always multiple of the block size. Lowering the block size leads to less precise results, at least on my pc.
Even though I think it's enough for my purpose, do you think it could be improved?
Does exist an external that can do that?http://www.pdpatchrepo.info/hurleur/samplewise-delay-meter.pd
-
Nitrooo
I'm trying to patch a four-band compressor in pd. I'm new to pd, to DSP and I have little theoretical background, so please be patient. :D
I'm trying to emulate the multiband compressor from Adobe Audition (http://images.digitalmedianet.com/2007/Week_25/0ra7bf9i/story/multiband%20compressor.jpg) because I'm developing a sound toy for Android and I'm exploring the effects I want to produce on the device on my pc.
This is what I came up with proceeding by intuition, for the most part, since I don't really know how to design such a filter. I've also used a couple of patches I found on this forum (and I thank you all). Yeah, it's probably very naive and simple... and a bit messy too. The crossover frequencies are fixed for the moment, but that's ok.
Now a couple of questions. Since I'm using a different number of filters for the four bands (1 or 2 filters per band), do I need to add some delay where I use just one (first and fourth band)? In other words, do lp and hp introduce delay? I'm using the filters from iemlib.
What do I need for the limiter part? Can somebody help me with that? I'd prefer to use vanilla objects since I'm using libpd, and externals are not always guaranteed to work with it.Any other general thought/advice/improvement?
Thank you!
-
Nitrooo
Hi all,
I'm a general programmer, currently focusing on Android mobile development.
I'd like to realize an app that records a short voice message and lets you hear it back with different distorsion effects applied on.
I just need classic filters (reverb, multiband compression, pitch shifting...), but since I have no theory background on signal processing, I've been looking for a library with prebuilt effects or a way to design them in pure java in a relatively easy way (I mean, without reading 30 books on DSP).
Now, why I'm writing this post? Well, in my search for such library I came across pd and I found it amazing, especially because I'm fascinated by generative software and art and I see great potential in that sense, maybe in future projects. I've read most of this book http://www.pd-tutorial.com and other tutorials and played around with pd. So I decided to figure a solution for my problem through pd even if it doesn't fit my needs so well because I essentially need non-realtime batch processing. On the other hand it looks like I would be able to find all the filters I need, ready to use, apart from little adjustments (and, in particular, lurking this forum for a couple of days was very helpful, you guys are great!).
So, that's what I need to do:
| -> filter chain 1 -> "wet" sound 1 in array_1
| -> filter chain 2 -> "wet" sound 2 in array_2
Android mic -> original snd in array | -> ...
| -> ...
| -> filter chain n -> "wet" sound n in array_nThen the user of the app would be able to play each of the processed sounds by tapping different buttons and save them to disk.
Currently, my only concern is about processing speed. Since, as far as I learnt in the past days, pd is intended for realtime processing, its speed is limited by the sampling rate, but I want to process the original sound as fast as possible, I want CPU speed to be the limit. I've read on this forum about upsampling to speed up things, but it looks like it could introduce glitches, jumps and may require tweaks. It seems a bit dirty, plus it's not completely clear to me yet.
What do you think about that? Do you think I can make an "instantaneous" processing in an effective way using libpd and pd patches on a mobile device... or maybe it's a naive idea?I'm sorry for the length of my post and for my English.
Ideas/suggestions are welcome!
Thanks in advance! -
Nitrooo
Thanks for your help, I'm using this patch and it's working fine, but now I'm facing a problem. I've just introduced in my libpd project the possibility to change the recording and pure data sampling rate and now at low values I'm getting weird squeaks/whistles when I'm processing the recording through this patch.
I've identified the object causing these squeaks and it is the lp2_butt~ filter.
When the cutoff frequency of the filter is higher than or lower but close to the sampling rate I get the squeaks. So, especially at 11025Hz and 8000Hz I'm getting distortion. I'm not much into the math behind DSP, but I know that for the Nyquist–Shannon sampling theorem maybe it doesn't make much sense to apply a low pass filter with a 7khz cut off frequency to a 8khz sample rate signal, but for simplicity I just didn't care about that and I thought it wouldn't have hurt anyway.
Now what's going on here? Do I need to apply a coefficient to the cutoff frequency depending on the sampling rate? I tried googling about that and I found something about "normalized cutoff frequency for butterworth filters", but I don't know if that's what I need.Edit:
I found these links:
http://www.dsprelated.com/showmessage/97866/1.php
http://www.wescottdesign.com/articles/Sampling/sampling.pdfand yeah, actually it looks like it's not a clever idea to use lp filters like that.
So, what's the best thing I could do in terms of sound similarity with the higher sampling rates processed signals? I could use the [samplerate~] object to get the sample rate and just bypass my filters at the loadbang if the cutoff frequency is higher than half the samplerate. Does it make sense? -
Nitrooo
You trollin'? :D
Just connect a cable from the oscillator to the second inlet of the dac~, which is the "right speaker" inlet. You need just one dac~. -
Nitrooo
@mod said:
i've never had success with it....
Hmmm... encouraging!
What were you exactly trying to achieve?
Were you working with libpd?
What went wrong?