<div dir="auto"><div><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Den sön 1 sep. 2019 21:22 Richie Burnett <<a href="mailto:rburnett@richieburnett.co.uk">rburnett@richieburnett.co.uk</a>> skrev:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">One way to control the spectral broadening due to the amplitude modulation <br>
is obviously to band-limit the VCA's control signals. I guess most VCA CV's <br>
have a faster attack than release, so it's mostly limiting the attack speed <br>
that we're talking about here. High order LPFs applied to the VCA CVs give <br>
a more favourable trade-off between settling time and residual ripple.<br></blockquote></div></div><div dir="auto"><br></div><div dir="auto">Yes, and it's possible that a simple RC link after the ordinary envelope follower is sufficient.</div><div dir="auto"><br></div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Another way to control the spectral broadening due to amplitude modulation <br>
in the VCA, and stop it bleeding into the adjacent bands, is to put the VCAs <br>
in-between the filter stages that make up each of the synthesis band <br>
filters. This is what Roland did in their SVC-350 Vocoder. It was probably <br>
done as much to filter out the PWM carrier frequency, but putting some of <br>
the vocoder's synthesis band filtering after the VCA helps to control <br>
out-of-band leakage caused by any fast VCA modulation.<br></blockquote></div></div><div dir="auto"><br></div><div dir="auto">Sennheiser VSM-201 did the same, IIRC.</div><div dir="auto"><br></div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On a related note, the conundrum I always face when thinking about Vocoder <br>
analysis and synthesis filter banks is how to deal with the bottom few <br>
bands... The job of the analysis filter bank is to determine the spectral <br>
profile of the speech at any particular instant in time. So ideally I want <br>
shed loads of closely spaced bands so that I get a fine-resolution picture <br>
of what the spectral profile is doing across the full speech range. For <br>
instance, I might choose to use 24 bands spaced 1/4 octave exponentially to <br>
cover the 6 octave range from 80Hz up to 5.12 kHz. This seems sensible as <br>
there probably aren't many vocal tract resonances outside this range that <br>
noticeably affect speech intelligibility. However a problem arises with the <br>
bottom few bands. All of the bands have the same Q and the same fractional <br>
bandwidth, however the actual bandwidth of the lower bands becomes only a <br>
handful of Hertz. For example the bottom bands in my setup would be:<br>
<br>
80-95Hz,<br>
95-113Hz,<br>
113Hz-135Hz,<br>
135Hz-160Hz,<br>
160-190Hz, *<br>
190-226Hz,<br>
226-269Hz,<br>
269-320Hz,<br>
320-381Hz, *<br>
381-453Hz,<br>
453-538Hz,<br>
538-640Hz, *<br>
etc...<br>
<br>
This can lead to the frustrating situation where harmonics of the speech <br>
signal only fall into certain analysis bands at the low-frequency end of the <br>
speech range. For example a female voice might easily have a fundamental <br>
frequency of 180Hz. This would only put energy into the analysis bands <br>
centred around 180, 360, 540, 720 Hz, etc. marked with the stars above, <br>
with nothing in the intervening bands. This situation persists until <br>
eventually we get to a point where more than one harmonic of the voice <br>
signal starts to fit into each analysis band at some higher frequency. Then <br>
the holes in the analysis spectrum disappear.<br>
<br>
Clearly the analogue filter bank in this example is doing a poor job of <br>
estimating the spectral shaping of the vocal tract when the bands are made <br>
too narrow because they start to resolve the actual discrete spectral <br>
harmonics of the vocal signal. This then leads to the situation where the <br>
output signal from the vocoder is very quiet unless the pitches of the voice <br>
and carrier inputs are related, so that harmonics of the speech and carrier <br>
inputs both land in the same frequency bands (>.<) This isn't right.<br>
<br>
The problem is that I don't know the best way around this. </blockquote></div></div><div dir="auto"><br></div><div dir="auto">Frequency tracking of the voice signal, controlling a blending of the lower bands in order to avoid the gaps?</div><div dir="auto"><br></div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I could make the <br>
analysis and synthesis bands wider and use less bands, but that seems a <br>
waste when modern DSPs have got enough grunt to run 40 bands easily. Or I <br>
could make the lower frequency bands wider in an attempt to make sure that <br>
some harmonics of a given voice signal end up in every band at the lower end <br>
of the spectrum. This is what Sennheiser seem to have done in at least one <br>
of their Vocoders</blockquote></div></div><div dir="auto"><br></div><div dir="auto">Did they make more models?</div><div dir="auto"><br></div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> and it makes sense. However, I liked the idea of having </blockquote></div></div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
filter bands that are evenly spaced in octaves because I can then shift <br>
formants up or down easily by routing the outputs from analysis bands to <br>
adjacent synthesis bands across the audio range. This isn't as simple if I <br>
alter the fractional bandwidths of the filters across the audio spectrum. <br>
The only other idea I had was to try to come up with some sort of <br>
interpolation algorithm to work around the "holes" in the spectral at the <br>
bottom end generated by the analysis filter bank which are particularly bad <br>
with voices that have a relatively high fundamental.<br>
<br>
I guess ultimately I need to accept that the analogue analysis filter-bank <br>
paradigm is a compromise. Ultimately the best way to estimate the vocal <br>
tract resonances is probably to window one complete pitch period of the <br>
speech signal and then FFT it to get the spectrum. That way you get a <br>
continuous spectrum, instead of a line spectrum out of the analysis process.<br>
<br>
Any thoughts and comments welcome.<br></blockquote></div></div><div dir="auto"><br></div><div dir="auto">Thanks for some interesting discussion.</div><div dir="auto"><br></div><div dir="auto">/mr</div><div dir="auto"><br></div><div dir="auto"> </div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
-Richie,<br>
<br>
<br>
<br>
-----Original Message----- <br>
From: Mattias Rickardsson<br>
Sent: Sunday, September 01, 2019 4:54 PM<br>
To: David G Dixon<br>
Cc: Synth DIY<br>
Subject: Re: [sdiy] vocoder filters<br>
<br>
<br>
The next level is to ponder on the unwanted higher-frequency AM effects from <br>
controlling a vocoder band VCA with the "best" (fastest) envelope follower, <br>
and whether a slower response could be more optimal. So much fun! :-)<br>
<br>
/mr<br>
<br>
<br>
<br>
Den lör 31 aug. 2019 23:23David G Dixon <<a href="mailto:dixon@mail.ubc.ca" target="_blank" rel="noreferrer">dixon@mail.ubc.ca</a>> skrev:<br>
<br>
<br>
Not really. It’s a full-wave rectifier followed by a standard LP filter <br>
stage tuned to about 1/4 of the expected incoming frequency followed by a <br>
notch filter tuned to twice the incoming frequency. I also use a full wave <br>
rectifier instead of the normal half wave rectifier, because I figure this <br>
gives faster integration. This is why the ripple is at twice the incoming <br>
frequency, and a notch filter knocks it out nicely. Through the judicious <br>
choice of gain at the LP filter, the envelope follows the waveform tops more <br>
or less exactly, and comes up to full strength within two periods of the <br>
incoming waveform, with ripple which is inconsequential. For a 10Vpp <br>
waveform coming in, the envelope rides at 5V, which will turn on my favored <br>
linearized 2164 VCA design to unity gain.<br>
<br>
<br>
<br>
<br>
<br>
From: David Moylan [mailto:<a href="mailto:dave@expeditionelectronics.com" target="_blank" rel="noreferrer">dave@expeditionelectronics.com</a>]<br>
Sent: Saturday, August 31, 2019 5:26 AM<br>
To: David G Dixon<br>
Cc: <a href="mailto:synth-diy@synth-diy.org" target="_blank" rel="noreferrer">synth-diy@synth-diy.org</a><br>
Subject: Re: [sdiy] vocoder filters<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
Curious about this envelope follower you mention. Trade secret?<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
On Aug 31, 2019 03:48, David G Dixon <<a href="mailto:dixon@mail.ubc.ca" target="_blank" rel="noreferrer">dixon@mail.ubc.ca</a>> wrote:<br>
<br>
<br>
<br>
Well, I know that the higher-Q filters have a longer delay, so that they <br>
take longer to respond to the incoming waveform. I’m thinking that a Q of <br>
about 3 is probably about right, and with that, only a 4-pole filter is <br>
required.<br>
<br>
<br>
<br>
I’ve got a nice design for an envelope follower which responds quickly and <br>
has little or no ripple, so that’s not a problem.<br>
<br>
<br>
<br>
On a related note, does anyone here have problems getting the Bode plotter <br>
in Multisim to work consistently? I am finding with this simulation that <br>
sometimes if I change the component values, the Bode plotter doesn’t work at <br>
all. Also, for some simulations, changing the component values doesn’t <br>
change the filter response at all. Multisim is sure glitchy. It’s very <br>
frustrating. I can sometimes fix it if I erase all of the passive <br>
components and load new ones with the new values, rather than just changing <br>
them, but that sort of thing is just complete bullshit. Multisim is a sad <br>
excuse for a professional program. There must be something better out there <br>
(?).<br>
<br>
<br>
<br>
<br>
<br>
From: Paul Perry [mailto:<a href="mailto:paulfrancisperry@gmail.com" target="_blank" rel="noreferrer">paulfrancisperry@gmail.com</a>]<br>
Sent: Friday, August 30, 2019 10:22 PM<br>
To: David G Dixon<br>
Subject: Re: [sdiy] vocoder filters<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
I don't think there is a "right" answer. To my mind, it depends on what one <br>
wants to do with the unit. Think about what will happen when a single swept <br>
tone is used to modify white noise. The low pass filter on the VCAs probably <br>
has a significant effect as well.<br>
<br>
<br>
<br>
paul perry Melbourne Australia<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
On Sat, 31 Aug 2019 at 14:50, David G Dixon <<a href="mailto:dixon@mail.ubc.ca" target="_blank" rel="noreferrer">dixon@mail.ubc.ca</a>> wrote:<br>
<br>
<br>
<br>
Well, I think I might have answered my own question. Looking again at the <br>
JH Living Vocoder, since Jurgen Haible’s filter responses overlap at about <br>
the 8dB mark, it really should not matter at all what’s going on around the <br>
skirt of the response, and higher-Q filters with two 2-pole stages should <br>
give very similar results to low-Q filters with four 4-pole stages (and be <br>
much much cheaper to build).<br>
<br>
<br>
<br>
I’d still appreciate if anyone has any specific insights into this problem. <br>
Cheers.<br>
<br>
<br>
<br>
<br>
<br>
From: Synth-diy [mailto:<a href="mailto:synth-diy-bounces@synth-diy.org" target="_blank" rel="noreferrer">synth-diy-bounces@synth-diy.org</a>] On Behalf Of David <br>
G Dixon<br>
Sent: Friday, August 30, 2019 9:05 PM<br>
To: <a href="mailto:synth-diy@synth-diy.org" target="_blank" rel="noreferrer">synth-diy@synth-diy.org</a><br>
Subject: [sdiy] vocoder filters<br>
<br>
<br>
<br>
<br>
<br>
Hey SDIY Team!<br>
<br>
<br>
<br>
I’m thinking about building a vocoder, and I have a general question about <br>
the bandpass filters.<br>
<br>
<br>
<br>
I’ve looked at Jurgen Haible’s Living Vocoder, and he used 8-pole filters <br>
with low Q. These give a reasonably broad band with fairly steep slopes. <br>
He makes the filters from two pairs of LP and HP.<br>
<br>
<br>
<br>
I was thinking about using BP filter sections, but just 4-pole, and with <br>
higher Q (around 10). This gives a somewhat narrower band, and the slope is <br>
steep near the corner, but fairly shallow around the skirt. This idea uses <br>
a lot fewer components (about half as many).<br>
<br>
<br>
<br>
What I’m asking is, does anybody here have any insight into what the <br>
“proper” approach to vocoder filters would be? What is the design goal? <br>
Do you want significant overlap from one band to the next, or should they be <br>
fairly distinct? I guess I’m just looking for some general guidelines and <br>
conventional wisdom.<br>
<br>
<br>
<br>
Cheers,<br>
<br>
Dave Dixon<br>
<br>
<br>
<br>
_______________________________________________<br>
Synth-diy mailing list<br>
<a href="mailto:Synth-diy@synth-diy.org" target="_blank" rel="noreferrer">Synth-diy@synth-diy.org</a><br>
<a href="http://synth-diy.org/mailman/listinfo/synth-diy" rel="noreferrer noreferrer" target="_blank">http://synth-diy.org/mailman/listinfo/synth-diy</a><br>
<br>
<br>
<br>
<br>
<br>
_______________________________________________<br>
Synth-diy mailing list<br>
<a href="mailto:Synth-diy@synth-diy.org" target="_blank" rel="noreferrer">Synth-diy@synth-diy.org</a><br>
<a href="http://synth-diy.org/mailman/listinfo/synth-diy" rel="noreferrer noreferrer" target="_blank">http://synth-diy.org/mailman/listinfo/synth-diy</a><br>
<br>
<br>
Virus-free. <a href="http://www.avg.com" rel="noreferrer noreferrer" target="_blank">www.avg.com</a><br>
<br>
<br>
<br>
<br>
<br>
_______________________________________________<br>
Synth-diy mailing list<br>
<a href="mailto:Synth-diy@synth-diy.org" target="_blank" rel="noreferrer">Synth-diy@synth-diy.org</a><br>
<a href="http://synth-diy.org/mailman/listinfo/synth-diy" rel="noreferrer noreferrer" target="_blank">http://synth-diy.org/mailman/listinfo/synth-diy</a> <br>
<br>
</blockquote></div></div></div>