davejl2001
Member
- Joined
- Jan 16, 2003
- Messages
- 57
Is there an adjustment to improve the audio quality in SDRTRUNK? Compared to OP25 SDRTRUNK sounds very (tinny).
I have been running OP25 an SDRTrunk for a number of years now and find the audio quality very comperable. Are you running a laterIs there an adjustment to improve the audio quality in SDRTRUNK? Compared to OP25 SDRTRUNK sounds very (tinny).
Op25 has always had it's own vocoder . Whether or not mbelib was derived from it is something I can't answer since I've not studied that codebase.OP25 utilizes MBELib I believe, and SDRTrunk uses its own vocoder, JMBE. Both use concepts that are reverse engineered, or based on P25 Half Rate standard documents. Both are not perfect, and are not as good as the official AMBE 2+ vocoder, but get quite close, free, and run directly on your computer without a limit as to how many channels you can process at one time.
Whether or not mbelib was derived from it is something I can't answer since I've not studied that codebase.
I was not the original author of the op25 phase 2 vocoder/mbelib (I wonder which came first?) but I was responsible for adding tone decoding so that's my handywork with the variable names bit chk1 and bit chk2I went down this road recently with FME playing Phase 2 audio, looking into why it was sounding a bit rough. As far as I can tell, the AMBE vocoder in OP25 is virtually identical to the one from MBElib, right down to the mbelib Author's copyright. The OP25 ambe.c file has cleverly combined dstar and dmr/p2/nxdn ambe+2 handling into a single file though, compared to the seperation in mbelib, and also added the dequantizeAmbeTone function, which is lacking in the original MBElib (which I intend to borrow). It also hilariously has one of the best variable names I've ever seen before.
View attachment 130656
I do believe OP25 has an entirely different IMBE vocoder however, but since it works extremely well for me as is, I've never even looked at it.
Another thing to consider when it comes to the audio isn't always necesarily the vocoder by itself. Its the post-processing that happens to the audio after its turned into an AMBE/IMBE frame and before it hits your speakers. FME for example, has a very rudimentary triangle interpolation and smoothing when it has to upsample from 8k mono to 24k stereo and its not very crisp, if I understood audio better, or took time to do the research, I'd probably look at using a more robust method of making the output audio sound better.
In the end though, I figured out my Phase 2 audio issues weren't anything to do with MBElib, it was simply that I messed up the 2V/4V deinterleave, and left one bit out of C0 and 4 bits out of the tail end of the de-interleave. Oops. Hey, it sounds pretty good now though, but if I hadn't messed that up, I wouldn't have went on the journey that I did.
--end ramble