Unitrunker --> Trunking Recorder using VAC Distorted Audio

sonm10

Central MN Monitor
Premium Subscriber
Joined
Nov 19, 2016
Messages
974
Location
Sauk Centre, Minnesota
I have had an issue with the above setup with distorted audio. I am on the 3rd computer now trying to resolve distorted audio. All computers have plenty of resources, and likely not the issue. Current computer, my dad got was a hospital recycle machine, so he recycled it to me!

Current hardware:

OS version: Windows 10, 10.0, version 2009, build: 19045 (x64)
Hardware: CELSIUS M740, FUJITSU
BIOS: BIOS Date: 07/26/16 16:10:59 Ver: 05.0000B
CPU: GenuineIntel Intel(R) Xeon(R) CPU E5-1620 v4 @ 3.50GHz
Logical processors: 8
Processor groups: 1
Processor group size: 8
RAM: 24435 MB total


The audio is distorted when it passes through VAC, but not when speakers are selected. By looking at the VAC control panel I think I have an overflow issue, but don't know how to reduce. On a different laptop, HP with plenty of resources, when I disable firewall, seemed to help. I have gone through and allowed every app through the firewall, but does not seem to help.
I have various SDR devices being used from Airspy, Nooelec, and RTL SDR.
See attachment for pic of VAC panel


From the VAC manual:

Audio signal passed through a Virtual Cable becomes distorted.

Signal distortion (garbling, crackling, popping, static-like clicking etc.) usually occur due to buffering problems in audio applications, System Audio Engine or VAC driver itself, if buffer lengths/sizes used for audio data transfer are not enough to compensate application and/or system processing delays. In particular, this is due to non-realtime nature of Windows system, and especially its kernel.

First of all, please check if your system is suitable for real-time audio streaming. To achieve a stable streaming, all buffering times must be 1.5-2 times greater than longest internal delay. For example, if LatencyMon shows 20 ms internal system delays, you will have a stable audio streaming only with buffering lengths of 30-40 ms or greater. But it may not solve the problem because System Audio Engine usually uses 10-30 ms buffers to communicate with audio drivers. If the delays occur in kernel-mode code, it makes no sense to increase application buffers.

If the system is considered suitable, check VAC driver and Audio Repeater application stability.

If Virtual Cable is the only path between two applications (one is playing back and another is recording), try the following:

If there are other (hardware or software) devices in the path (for example, an application records from a device and plays back to Virtual Cable, or vice versa), please also check if this issue is caused by the clock rate difference.

If you are using the Trial version that adds a female voice reminder, please pay attention to how this voice reminder sounds. Because it is added by VAC driver, playback side problems cannot affect it. Therefore, if you play a signal to a Virtual Cable endpoint and hear voice reminder clear but the signal becomes distorted, it means that recording side is OK but playback side has buffering problems. If both voice reminder and useful signal are distorted, it means that buffering problems occur on recording side and/or inside VAC driver.

Additionally, look to overflow/underflow counters for the particular Virtual Cable in VAC Control Panel. If overflow counter is not increasing, or is increasing rarely, but underflow counter is increasing rapidly, it means that buffering problems occur on the playback side, and vice versa. If both underflow and overflow counters are increasing rapidly, it means a total buffering problem due to CPU overload, high disk/network load, low cable timing event period, system timer problems etc.

If you still cannot eliminate cracks and/or distortions, please try deeper investigation and tuning described here.

Overflow and/or underflow counters in VAC Control Panel are increasing continuously.

Massive buffer overflows/underflows usually occur in two situations:

  • VAC driver client (an application or System Audio Engine) fails to provide memory/data buffers in time (fast enough). In such case, you need to check your system's performance (CPU and memory speeds, CPU consumption, background disk/network activity etc.).
  • Virtual Cable pin is used by System Audio Engine in shared mode and all System Audio Engine's client streams are paused. It is a normal situation caused by System Audio Engine's behavior because VAC cannot distinguish between buffer/data absence due to a temporary client failure or such pause processing technique.
  • Packet mode is used for the stream, and VAC driver sees that its client is not processing the cyclic buffer in time. If there are no audible artifacts (clicks, pops, gaps), you can ignore these overflows/underflows. But if you need accurate data transmission, try to improve stream stability.


How do I resolve issue of distorted audio going to from Unitrunker to Trunking Recorder? Thanks in advance

EDIT: I would like to up it from 5 cables to 7 or 8 without issues also.
 

Attachments

  • Capture.JPG
    Capture.JPG
    98 KB · Views: 7

sonm10

Central MN Monitor
Premium Subscriber
Joined
Nov 19, 2016
Messages
974
Location
Sauk Centre, Minnesota
From LatencyMon:


_________________________________________________________________________________________________________
CONCLUSION
_________________________________________________________________________________________________________
Your system seems to be having difficulty handling real-time audio and other tasks. You may experience drop outs, clicks or pops due to buffer underruns. One or more DPC routines that belong to a driver running in your system appear to be executing for too long. One problem may be related to power management, disable CPU throttling settings in Control Panel and BIOS setup. Check for BIOS updates.
LatencyMon has been analyzing your system for 0:42:18 (h:mm:ss) on all processors.


_________________________________________________________________________________________________________
SYSTEM INFORMATION
_________________________________________________________________________________________________________
Computer name: DESKTOP-BIVQHH4
OS version: Windows 10, 10.0, version 2009, build: 19045 (x64)
Hardware: CELSIUS M740, FUJITSU
BIOS: BIOS Date: 07/26/16 16:10:59 Ver: 05.0000B
CPU: GenuineIntel Intel(R) Xeon(R) CPU E5-1620 v4 @ 3.50GHz
Logical processors: 8
Processor groups: 1
Processor group size: 8
RAM: 24435 MB total


_________________________________________________________________________________________________________
CPU SPEED
_________________________________________________________________________________________________________
Reported CPU speed (WMI): 3492 MHz
Reported CPU speed (registry): 3492 MHz

Note: reported execution times may be calculated based on a fixed reported CPU speed. Disable variable speed settings like Intel Speed Step and AMD Cool N Quiet in the BIOS setup for more accurate results.


_________________________________________________________________________________________________________
MEASURED INTERRUPT TO USER PROCESS LATENCIES
_________________________________________________________________________________________________________
The interrupt to process latency reflects the measured interval that a usermode process needed to respond to a hardware request from the moment the interrupt service routine started execution. This includes the scheduling and execution of a DPC routine, the signaling of an event and the waking up of a usermode thread from an idle wait state in response to that event.

Highest measured interrupt to process latency (µs): 921.90
Average measured interrupt to process latency (µs): 8.368246

Highest measured interrupt to DPC latency (µs): 915.50
Average measured interrupt to DPC latency (µs): 3.006481


_________________________________________________________________________________________________________
REPORTED ISRs
_________________________________________________________________________________________________________
Interrupt service routines are routines installed by the OS and device drivers that execute in response to a hardware interrupt signal.

Highest ISR routine execution time (µs): 631.591065
Driver with highest ISR routine execution time: dxgkrnl.sys - DirectX Graphics Kernel, Microsoft Corporation

Highest reported total ISR routine time (%): 0.059385
Driver with highest ISR total time: dxgkrnl.sys - DirectX Graphics Kernel, Microsoft Corporation

Total time spent in ISRs (%) 0.065923

ISR count (execution time <250 µs): 666797
ISR count (execution time 250-500 µs): 0
ISR count (execution time 500-1000 µs): 85
ISR count (execution time 1000-2000 µs): 0
ISR count (execution time 2000-4000 µs): 0
ISR count (execution time >=4000 µs): 0


_________________________________________________________________________________________________________
REPORTED DPCs
_________________________________________________________________________________________________________
DPC routines are part of the interrupt servicing dispatch mechanism and disable the possibility for a process to utilize the CPU while it is interrupted until the DPC has finished execution.

Highest DPC routine execution time (µs): 1042.436426
Driver with highest DPC routine execution time: dxgkrnl.sys - DirectX Graphics Kernel, Microsoft Corporation

Highest reported total DPC routine time (%): 0.040141
Driver with highest DPC total execution time: Wdf01000.sys - Kernel Mode Driver Framework Runtime, Microsoft Corporation

Total time spent in DPCs (%) 0.118998

DPC count (execution time <250 µs): 2314854
DPC count (execution time 250-500 µs): 0
DPC count (execution time 500-10000 µs): 648
DPC count (execution time 1000-2000 µs): 1
DPC count (execution time 2000-4000 µs): 0
DPC count (execution time >=4000 µs): 0


_________________________________________________________________________________________________________
REPORTED HARD PAGEFAULTS
_________________________________________________________________________________________________________
Hard pagefaults are events that get triggered by making use of virtual memory that is not resident in RAM but backed by a memory mapped file on disk. The process of resolving the hard pagefault requires reading in the memory from disk while the process is interrupted and blocked from execution.

NOTE: some processes were hit by hard pagefaults. If these were programs producing audio, they are likely to interrupt the audio stream resulting in dropouts, clicks and pops. Check the Processes tab to see which programs were hit.

Process with highest pagefault count: trunking recorder.exe

Total number of hard pagefaults 8132
Hard pagefault count of hardest hit process: 1851
Number of processes hit: 60


_________________________________________________________________________________________________________
PER CPU DATA
_________________________________________________________________________________________________________
CPU 0 Interrupt cycle time (s): 67.659018
CPU 0 ISR highest execution time (µs): 631.591065
CPU 0 ISR total execution time (s): 13.297717
CPU 0 ISR count: 592553
CPU 0 DPC highest execution time (µs): 1042.436426
CPU 0 DPC total execution time (s): 21.443953
CPU 0 DPC count: 1851887
_________________________________________________________________________________________________________
CPU 1 Interrupt cycle time (s): 8.107360
CPU 1 ISR highest execution time (µs): 28.214490
CPU 1 ISR total execution time (s): 0.005361
CPU 1 ISR count: 1564
CPU 1 DPC highest execution time (µs): 390.192440
CPU 1 DPC total execution time (s): 0.192743
CPU 1 DPC count: 21882
_________________________________________________________________________________________________________
CPU 2 Interrupt cycle time (s): 14.363544
CPU 2 ISR highest execution time (µs): 30.273769
CPU 2 ISR total execution time (s): 0.083465
CPU 2 ISR count: 72725
CPU 2 DPC highest execution time (µs): 492.004582
CPU 2 DPC total execution time (s): 0.979602
CPU 2 DPC count: 167134
_________________________________________________________________________________________________________
CPU 3 Interrupt cycle time (s): 7.780498
CPU 3 ISR highest execution time (µs): 1.576747
CPU 3 ISR total execution time (s): 0.000027
CPU 3 ISR count: 40
CPU 3 DPC highest execution time (µs): 227.060710
CPU 3 DPC total execution time (s): 0.206353
CPU 3 DPC count: 32653
_________________________________________________________________________________________________________
CPU 4 Interrupt cycle time (s): 11.040349
CPU 4 ISR highest execution time (µs): 0.0
CPU 4 ISR total execution time (s): 0.0
CPU 4 ISR count: 0
CPU 4 DPC highest execution time (µs): 454.904926
CPU 4 DPC total execution time (s): 0.529371
CPU 4 DPC count: 110676
_________________________________________________________________________________________________________
CPU 5 Interrupt cycle time (s): 7.738634
CPU 5 ISR highest execution time (µs): 0.0
CPU 5 ISR total execution time (s): 0.0
CPU 5 ISR count: 0
CPU 5 DPC highest execution time (µs): 156.551546
CPU 5 DPC total execution time (s): 0.119025
CPU 5 DPC count: 21139
_________________________________________________________________________________________________________
CPU 6 Interrupt cycle time (s): 12.166688
CPU 6 ISR highest execution time (µs): 0.0
CPU 6 ISR total execution time (s): 0.0
CPU 6 ISR count: 0
CPU 6 DPC highest execution time (µs): 454.208190
CPU 6 DPC total execution time (s): 0.588458
CPU 6 DPC count: 95900
_________________________________________________________________________________________________________
CPU 7 Interrupt cycle time (s): 7.277673
CPU 7 ISR highest execution time (µs): 0.0
CPU 7 ISR total execution time (s): 0.0
CPU 7 ISR count: 0
CPU 7 DPC highest execution time (µs): 453.750286
CPU 7 DPC total execution time (s): 0.104790
CPU 7 DPC count: 14232
_________________________________________________________________________________________________________
 
Last edited:

Pape

Member
Premium Subscriber
Joined
Feb 20, 2011
Messages
264
Location
Quebec
Hello,

I did not read the full report, but here some question to pop in mind:
  1. Is VAC single thread ?
  2. Do you have the option to use real time for the VAC application ?
  3. Maybe use a line in directly to your application instead of a VAC.
 

sonm10

Central MN Monitor
Premium Subscriber
Joined
Nov 19, 2016
Messages
974
Location
Sauk Centre, Minnesota
1. I think each cable is used by a thread
2. Control panel application allows to set priority. I have set highest priority.
 

Pape

Member
Premium Subscriber
Joined
Feb 20, 2011
Messages
264
Location
Quebec
This is usually performed under task manager, Details tab, right click , set priority
 
Top