So, the decoder now does IMBE decoding (you need to turn it on, its switched off by default) and this can be used to get audio in real-time.
I experienced an unexpected surprise in that I discovered output sinks are rate-limiting (like the USRP or the file throttle) and now understand how this works with the decoder block's forecast() method. Our block receives 4800 symbols/s and produces 8000s/s so forecast should return an estimate of 3/5 of the required output for its input. Trouble is, there is overhead of HDU/TDU, a need to synchronize and so on so I am going to make that factor 1. In the short term I've dropped the file throttle because that means IMBE decoding works properly but it does screw up the GUI (the flow graph runs faster than the GUI blocks would like). As soon as I get some time I'll address that but I thought you'd prefer to play just now. If you want the old behaviour just comment out the "if 0:" line in the receiver and leave IMBE alone.
-- The highest human happiness is not the exploitation of the present but the preparation of the future.