summing one signal with himself delayed ... remove odd partial ?
because each odd partial cancels itself out with phase cancellation. Halfway through the wave, every odd partial (sine wave) will also be halfway through a cycle. Therefore, since the sine wave would be negative in the second half of its wave, adding it to the positive part from the beginning of the wave cancels it out. This works for different starting phases also, because whatever phase the partial started at, halfway through the wave will still be the opposite polarity
It's helpful to picture it: picture 3 cycles of a sine wave. Cut them in half, and you will see that there are 1 1/2 cycles in each half, and the second half of the overall wave starts on a negative half of a sine wave
Guitar to MIDI using band pass filters
Hello again, I've had a couple of failed goes at making a software only polyphonic guitar synth and came to the conclusion you can't really.
So this is my latest attempt, which to my amazement kind of works quite well. It's just for the first 5 frets and only one velocity so far. I've added a synth from my 'stamp album' project for instant sound. The project also outputs to the standard midi out .
You will need to tweak the onset level for your input. I've set it at 54 for my guitar and tweaked lower as the strings get lighter, and a well tuned guitar of course.
This is purely WIP test piece and any comment/improvement would be welcome as usual.
The file is g-syn-2.pd in the g-syn folder
Cheers
Balwyn
Implementing a low-pass filter
Well first, to be clear, the part inside the square brackets is just the Blackmann window. The fraction to the left (without K) is the sinc function.
Secondly, for sin(x), x itself is not a frequency and therefore should not go in the frequency inlet of [osc~]. It's more like a phase input, if you were treating sin() as an oscillator (which it isn't in this case). If you wanted to use dsp object to make this, you'd be better suited using [expr~ sin($v1)]. You could also use [cos~] but it expects a normalized phase, not radians, and needs a phase offset to make it act like sin().
Since FIR filters like these use convolution and tend to have long kernels, implementing it with vanilla objects can be a nightmare. You could probably use the FFT objects to do it, but since the overlap is based on the kernel size you might be restricted on what sizes you can use (I'm not entirely sure about that, though, never tried it).
I used to use [iemlib/FIR~] for it, but it doesn't seem to be working on 64-bit systems. You can use [bsaylor/partconv~], though. It does partitioned convolution and is meant for long IRs, but it works just fine for FIR filters as well. The annoying thing is that whenever you update the kernel you have to resend it to [partconv~] and you get some clicks and messages in the console when you do that.
Attached is an implementation. M is variable, between 3 and 255. As you can see, M doesn't actually need to be even. Odd values for M just place a zero at the Nyquist frequency, so the roll-off at high frequencies is different for even and odd values. I just used [until] to generate the kernel, so no dsp objects needed.
Swept sine deconvolution
@bassik said:
Sumidero wrote: "I saw, many years ago, a PC-XP based ISA card for acoustic measurement of loudspeakers that instead of using a sine sweep it sent short trains of frequency fixed sines, opening the record just when the wave train was passing through the microphone."
is this system you are referring to?
IF yes, MLS (Maximum Lenght Signal) measurement system have been the industry standard until the sweep sine method comes out (expecially the log swept sine).
According to my knowledge, It is a very good way of measuring IRs but it has some problems in handling the non-linearities of the reproduction and recording chain.
Yes, I think it was it. It was shown on an old CGA monitor but it looks very similar.
I think that one of the main drawbacks of that method might be the influence of the transients in each sine train. If you don't cut them out they would introduce artifacts in the spectra. At the time I did my home measurements, I checked these transients throughout the frequency spectrum and made an algorithm to slice them out before doing dB calculi. I wander where that Octave code has gone to...
I wish you all a good week.
sumidero
Meditation background generator
Thank you all for your replies, I didn't expect such feedback.
Especially thanks jamesmcn - everything was described well, I just have something to add:
1 and 2. The top section performs two functions - it's smth. like "probability generator" (leftmost part), which, in accordance with LFO, defines how often droplet sound is being generated at the moment, and (rightmost one) an array containing tones, at which [vcf~]s of certain droplets resonate (0,2,3,5,7,8,10 in it mean C-minor scale). And every 5 seconds [route] picks these tones (notes) up from the array randomly and sends them to [vcf~] objects after [stream~] abstractions. These tones are transformed into frequencies in Hz to control bandpass filters.
3. Yes, the [stream~] is the meat of the synthesis, but it is not "very carefully" filtered noise, although should be.
I just tried to make it sound like water droplets, and made some variations in cutoff frequency (first creation argument) and stream density (2nd creation argument) to make droplets sound more diverse. The stream~.pd itself is actually a very simple noise generator, and this is the oldest part of the patch itself. I wanted to make something like a rain noise, made this abstraction, and put it off until it came into play.
4 and 5. You know, if you delete the mixer/processor section (except reverb), you may not notice much difference: it just makes left and right channel slightly different from time to time - for merciless freezeverb to mix up left and right channels in one stream anyway. Buy the way - [freezeverb] is just an enhanced version of that you can see in help -> browser -> G08.reverb.pd. The only serious difference is that it uses delay_time_counter.pd, which calculates the times for delay lines in accordance with this formula: t = t1/2^(n/numlines)-t1/2, where t1 = the largest early reflection delay time value, numlines = total delay lines number (28 here), and n = current delay number (starting from 0). I found this algorithm here: http://musicdsp.org/archive.php?classid=4#44 but changed it a bit (actually, added "-t1/2" to make echoes appear earlier. I still don't understand completely how [freezeverb~] works. To be more precise, I don't understand what actually does [early_reflection_delay_line] do - but Miller Puckette in his example applied similar [reverb-echo-del] abstraction, and it works well! It makes a "power-preserving" mix, very useful thing in recirculating reverbs.
6. Two sine wave oscillators take their frequencies from two first randomly picked up notes from an array (see item 1 and 2). There are also two frequency modulators, 1846 Hz and 4 Hz sine waves, to saturate their spectrum. So it sounds a bit like noise, mainly because there are already too much sine waves from the [stream~] abstraction, and I thought it worth adding something at higher frequencies. And reverb smoothes these oversaturated sine waves, making them sound noisy.
7. How reverb similar to [freezeverb] works is described in help browser, I just can't understand why power preserving mix works. Also I tried to make one stereo reverb based on Miller Puckette's model, but a couple of experimental ones failed. This one is my best reverb ever.
8. Yes, and [master] abstraction is just a place where volume control, or spectrum analysis, are handy to perform from. Something to put all the wires at, and to listen to its output.
Trigonometric functions on audio?
Hi - here is a partial answer to your first question. I'm just working through this myself so if anyone can add to this, please do. First, if you are not quite sure on the math here is a link -
. And second, the sine and cosine functions are used to generate sine waves. Sine waves can be used for all sorts of things - supposedly any sound, or a lot of sounds, can be created by combining sine waves. The attached patch should demonstrate how a sine wave is created using trig functions and then how different waveforms can be generated using multiples of a single sine wave.I hope this helps.
Simon
that's a crummy sounding sine wave in my patch, but it should give you the basic idea
Big buzz - additive synthesis
hi all,
i want to build a big big buzz with many many sine waves. i found this yet
http://www.mail-archive.com/pd-list@iem.at/msg28073.html
but
if I want to sum for example 200 sine waves for my extra big buzz, i have to type a lot and copy and paste and so on. isn't there a faster way to build this up?
preferably with sine waves, to control the harmonics better.
i actually dont need different volumes for each sine wave.
can anyone help me? thanks a lot!
White Noise to Sine Wave?
i missed this thread the first time round, and it looks like there are some great suggestions,
but to turn white noise into a sine wave, you could turn the problem on its head.
first, start with a sine wave. then apply modulations to bash it up and turn it into noise.
whatever process you followed, then reverse, and you will turn the noise back into a sine wave.
not tried this in practice, but i guess it would probably work. hardest thing is going to be getting really white noise from a sine wave.
Problem with 8in 8out multichannel installation
Hi, I'm having some trouble with this patch I'm making for an installation.
what should be happening
there are 4 zones, each with 2 microphones and 2 speakers. when moving through the zones your audio is recorded and played back the next zone like this
enter zone 1
record mic 1 + 2
enter zone 2
record mic 3+4
playback recording from 1+2 over speaker 3+4
enter zone 3
record mic 4+5
playback recording from 3+4 over speaker 5+6
etc
the recording is going more or less fine but no sound is being played back..
could anyone take a look at this patch ( you need audio card with 8in and 8out to test) and tell me what I'm doing wrong? maybe not waiting long enough before playing back the recorded files?
Gridflow \# object can't be create
Hi,
I work on PD since a few month. I need to use gridflow but #object can't be create, does someone know how to make them work ?
But perhaps it must have an alternative; I need to locate a man position with a camera.
I want do divide my screen in 9 zone (like a grid). Each zone is waiting for someone coming and when the man is locate on a zone, it trigger a video.
I don't know where to start.
I was thinking that i can make the virtual grid with picking coordonates of my screen;
for example : -4 -3 for X & 4 for Y is my first zone.( in open GL)
Don't hesitate to ask me more infos if you don't understand my need.
Thanks a lot
Nico



