Interesting point, Marcus.  I'll post the complete flowgraph tomorrow when I am 
at my development machine.  I did revert the audio rate out of the demod to 
15ksps and that helped somewhat.  So maybe that can go further.

On May 23, 2017, 7:18 PM, at 7:18 PM, "Marcus Müller" 
<marcus.muel...@ettus.com> wrote:
>Hi John,
>
>3 to 5 seconds doesn't sound all that much considering that you're
>doing
>stuff at a nominal 7.5 kS/s – compare [1]; the typical buffer size
>between two blocks is 8 kB, and with floats (i.e. 32 b = 4 B), that's
>2000 S, and at 7.5 kS/s, that's 2/7.5 s = 0.26667 seconds for the
>buffers between NBFM demod and add, and between add and resampler. In
>fact, NBFM demod internally is a hier block (might have more low-rate
>buffers); so, that's half a second for these two buffers alone...
>
>In your very specific use case, using a higher sampling rate might make
>the problem more manageable. If you'd share the first half of your flow
>graph, we could discuss options for that!
>
>Best regards,
>
>Marcus
>
>[1] http://gnuradio.org/blog/buffers
>
>
>On 23.05.2017 22:04, John Ackermann N8UR wrote:
>> Hi Marcus and Kevin, and thanks for the info.
>>
>> I've set all squelch gates off.  In that case, I get good audio if
>"OK
>> to block" in the audio sink is set to "yes" but the latency is awful
>> -- 3 to 5 seconds!  If "OK to block" is "no", then I get lots of aU
>> and unusable audio.
>>
>> If setting the squelch gates off means that samples are continuously
>> sent through the adder to the sink, I don't understand why blocking
>> makes the difference, or why the latency builds up so fast.  I'd try
>> using 44.1ksps on the sink, but the dropdown doesn't allow that
>choice.
>>
>> John
>> ----
>> On 05/23/2017 02:51 PM, Kevin Reid wrote:
>>> On Tue, May 23, 2017 at 11:31 AM, John Ackermann N8UR <j...@febo.com
>>> <mailto: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
>
>
>_______________________________________________
>Discuss-gnuradio mailing list
>Discuss-gnuradio@gnu.org
>https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to