schwinn / khtool

Tool to query or change settings of Neumann KH DSP speakers
MIT License
10 stars 2 forks source link

Support: Setting the output delay #4

Closed andyg5000 closed 5 months ago

andyg5000 commented 5 months ago

Hey @schwinn

Thanks a ton for creating this. I've struggled with the capabilities of the neumann apps and wish I would have found this sooner.

I have a set of monitors behind the KH750 with their own DSP and associated latency (~46ms). In your help prompt I see you can set delay from 0 to 3360 at 48k. Based on my calculations, I need an output delay on out5 (the sub) to be 2208 samples. However, when I submit that, the delay returns the following {"audio":{"out5":{"delay":1000}}}

It seems like 1000 samples is the max. Does that sound correct? Also, where did you find the documentation related to the delay being based on 48k and samples?

Either way, this utility is great and I can now build myself the software based monitor controller I've always wanted 😄

schwinn commented 5 months ago

The limit is 1000 samples for the KH750. Therefore the maximum delay is 20.8 ms. My KH 80 shows a limit of 3360 samples.

Here's the command to query the limit:

./khtool.py -i en1 -t 2 --expert '{"osc":{"limits":[{"audio":{"out5":{"delay":null}}}]}}'
Used Device:  Left Subwoofer
IPv6 address: fe80::2a36:38ff:fe60:xxxx
{"osc":{"limits":[{"audio":{"out5":{"delay":[{"type":"Number","desc":"ToF delay","units":"1/48kHz","max":1000,"min":0,"subscr":true}]}}}]}}

In the answer you can see that the unit for the value is 1/48kHz.

schwinn commented 5 months ago

Please have a look on the diagramm. If your monitors are not connected to the subwoofer, you can also use the "input" delay. This delay is active also on the monitor outputs. The maximum delay here is 100ms.

./khtool.py -i en1 -t 2 --expert '{"osc":{"limits":[{"audio":{"in":{"delay":null}}}]}}'
Used Device:  Left Subwoofer
IPv6 address: fe80::2a36:38ff:fe60:xxxx
{"osc":{"limits":[{"audio":{"in":{"delay":[{"type":"Number","desc":"lipsync delay","units":"1/48kHz","max":4800,"min":0,"subscr":true}]}}}]}}

You can set the delay with this command.

./khtool.py -i en1 -t 2 --expert '{"audio":{"in":{"delay":4800}}}'
Used Device:  Left Subwoofer
IPv6 address: fe80::2a36:38ff:fe60:xxxx
{"osc":{"limits":[{"audio":{"in":{"delay":[{"type":"Number","desc":"lipsync delay","units":"1/48kHz","max":4800,"min":0,"subscr":true}]}}}]}}

KH-750-DSP_Block-Diagram-Detailed

andyg5000 commented 5 months ago

Awesome, thanks for the feedback.

andyg5000 commented 5 months ago

Do you know which command will enable/disable bass management? I'm able to mute the sub, but am not seeing a proprety specifically related to on/off for bass management.

schwinn commented 5 months ago

It's not just a single command. Here are the changes.

Enable bass managment

{"audio":{"out1":{"eq2":{"enabled":[true,true,true,true,true,true,true,true,true,true]}}}}
{"audio":{"out2":{"eq2":{"enabled":[true,true,true,true,true,true,true,true,true,true]}}}}
{"audio":{"out3":{"eq2":{"enabled":[true,true,true,true,true,true,true,true,true,true]}}}}
{"audio":{"out4":{"eq2":{"enabled":[true,true,true,true,true,true,true,true,true,true]}}}}
{"audio":{"out5":{"mixer":{"levels":[0.0,0.0]}}}}

Disable Bass Management

{"audio":{"out1":{"eq2":{"enabled":[false,false,false,false,false,false,false,false,false,false]}}}}
{"audio":{"out2":{"eq2":{"enabled":[false,false,false,false,false,false,false,false,false,false]}}}}
{"audio":{"out3":{"eq2":{"enabled":[false,false,false,false,false,false,false,false,false,false]}}}}
{"audio":{"out4":{"eq2":{"enabled":[false,false,false,false,false,false,false,false,false,false]}}}}
{"audio":{"out5":{"mixer":{"levels":[-100.0,-100.0]}}}}
andyg5000 commented 5 months ago

You're the jam, thanks!