SDRTRUNK vs OP25 audio quality

Status
Not open for further replies.

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).
 

wgbecks

Active Member
Joined
Jan 17, 2005
Messages
1,035
Location
NE Wisconsin
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 later
release of SDRTrunk, and is your jmbe audio library up to date?

I will mention that some PC "Sound Eenhancement" applications can adversely affect communications audio as compared to when listining
to music or other content. I found it necessary to disable Dolby on one of my Windows-10 PCs when running SDRTrunk or op25 that ran
on an Ubuntu VM on the same computer.
 
Last edited:

maus92

Member
Premium Subscriber
Joined
Jun 23, 2004
Messages
8,270
Location
The OP
I find SDR Trunk audio to be superior to OP25. I also find that SDR Trunk is a resource hog, so you need to have a decent computer to get good audio - and a good signal and SDR device. The bottom line is if your rig doesn't have the horsepower to run SDR Trunk, stick with OP25.

When I say "decent computer," here is an example. I was running SDR Trunk (0.5 Beta 5) on an i5-6600T box with 16GB ram. This CPU is a circa 2015 part that runs ~35W - a low-ish power CPU. SDR Trunk basically maxed out the CPU, using 80% + of all 4 cores and about half the RAM - but it sounded ok. I built another PC using an i7-8700K with 16 GB ram and ran SDR Trunk. It ran using considerably fewer resources but the CPU ran hot - like at 77C. This morning I resurrected OP25 and am running it now on the same i7 box: temps are ~32C (essentially idle temps,) and it's using about 3 - 4% CPU on all cores / threads.
 
Last edited:

nokoa3116

Member
Joined
Jan 12, 2017
Messages
165
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.

I am obsessed with quality, and I have hooked up an AMBE 3003 chip to SDRTrunk. I am limited on up to 3 channels decoded at one time. While the sound quality I think is much better, for most people the difference may go unnoticed, and some may even prefer the reverse engineered sound.
 

maus92

Member
Premium Subscriber
Joined
Jun 23, 2004
Messages
8,270
Location
The OP
Tell us how you rigged the AMBE 3003 chip to SDR Trunk, with some pix! Why are you limited to three channels decoded simultaneously (but that would be ok for my use case.)
 

davejl2001

Member
Joined
Jan 16, 2003
Messages
57
Here is what I’m working with.

PC: i5 2.67GHz 6GM ram Windows 7 64-bit
Java, JMBE, and SDRTrunk all on the latest versions.
 

boatbod

Member
Joined
Mar 3, 2007
Messages
3,416
Location
Talbot Co, MD
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.
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.
 

lwvmobile

DSD-FME
Joined
Apr 26, 2020
Messages
1,297
Location
Lafayette County, FL
Whether or not mbelib was derived from it is something I can't answer since I've not studied that codebase.

I 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.

Screenshot from 2022-11-07 16-02-19.png

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
 

boatbod

Member
Joined
Mar 3, 2007
Messages
3,416
Location
Talbot Co, MD
I 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
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 chk2 :ROFLMAO:

Also, op25 has two completely separate vocoders; the IMBE-only variant was I believe the original, then the IMBE/AMBE vocoder came later. At least in my version of op25 only the latter piece of code is still in use.
 
Status
Not open for further replies.
Top