On Tue, May 23, 2017 at 11:31 AM, John Ackermann N8UR <j...@febo.com> wrote:

> I'm continuing to work on a multi-channel NBFM receiver using the
> polyphase filter.  I have the basic system working, but am hung up on how
> to get audio out of the system; most of my attempts end up either with
> audio underruns, or stalls that result in overruns.
>

You're using only one RF source hardware device, correct?

Even then, *some* amount of overrun/underrun is inevitable because the RF
receiver and the audio output are not using the same clock oscillator, so
the resampling rate you've implemented is not the resampling rate you would
ideally need (which there is no way in GR to actually detect or implement).


> The relevant portion of the flowgraph is attached.  Each channel ends up
> at a 15ksps rate and is fed into a power squelch, then a mult block that's
> used to mute or unmute the audio, then NBFM demod.  The demodulated outputs
> are at 7.5ksps (though I get the same results with 15ksps) and the seven
> channels are added.  Then a rational resample to 48ksps, volume control,
> and audio sink at 48ksps.
>
> I've tried the "gate" param of the power squelch block both off and on,
> and the "OK to block" option of the audio sink in various combinations, but
> I'm not able to get clean audio.
>

"Gate" should be off. What that option does is drop samples. The problem is
that the Add block requires samples from every input to produce an output,
so if any one of the inputs drops samples then eventually your flowgraph
will not be able to make progress because some buffers are overfull and
some are empty.

Any flowgraph that has paths that split (here, polyphase channelizer) and
rejoin (here, add) MUST have exactly the same
input-samples-to-output-samples ratio on all of the paths, or it will
eventually lock up.

"OK to block" does not do very much, but in this type of application it
should be off. This means that if there is an overrun, the audio sink will
discard samples rather than the internal buffers filling up and causing the
RF source block to have to discard them instead; while this is very similar
in principle, it means a higher input-to-output latency. The time to use
"OK to block" is when your source has no clock (e.g. it is a file or an
internal signal source of some sort) so the audio sink has to be
responsible for deciding when it's time to take more samples.


> I'd appreciate any suggestions.  One thing I wonder about is the placement
> of the blocks in the stream; would a different order work better?
>

The ordering should not matter (as long as it is not incorrect in some
other way, of course).


When you have "Gate" off, which type of misbehavior do you get?

Have you confirmed that your sound card/driver actually supports 48 kHz?
What happens if you try a different sample rate?

Have you tried resampling to a rate slightly under or over 48 kHz, as
appropriate? That will help if you actually have a severe clock skew
problem.
_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to