• WANTED: Happy members who like to discuss audio and other topics related to our interest. Desire to learn and share knowledge of science required. There are many reviews of audio hardware and expert members to help answer your questions. Click here to have your audio equipment measured for free!

Neutron Hifi DAC V1

I wondered why you’d not like to open source the software support for a fairly expensive device. I think I get that NConfigurator is probably built on the same framework that Neutron player is and this it will be a significant effort to open source the configuration app.

Yes, indeed. NConfigurator is based on top of the portability layer, part of the Neutron's huge code base (Player, Recorder, ...). Therefore NConfigurator was ported to many platforms, similarly to Player & Recorder apps. DAC V1 is not that expensive device if you think wider and take into account what materials are used for its production, their cost, design & manufacturing costs, technical support & web presence, firmware & NConfigurator's ongoing development, and other costs.

If so, you might consider just publishing a README for USB configuration interface or even just an open command line interface.

The best would be to call NConfigurator's console utility which would do all communication for your another app, therefore you could concentrate on added functionality. By the way, internally NConfigurator is split as GUI and console projects and GUI part is calling console core, just like I am proposing to do the same for your another app. Moreover, NConfigurator is portable app and overcame portability issues of communicating to USB devices on Windows, Linux and macOS. I have added a task to enable console mode for NConfigurator in its next update. It will be documented. In the future it can be possible to make NConfigurator as domain/server app with which you could talk from another app over the local network via some defined API.
 
Last edited:
@LoFiAudiophile the 1.6.2 update for NConfigurator was just released, so you could have a look at its console functionality. Announced on Neutron Forum.

API of console commands is provided by --help command, i.e. NConfigurator --help . If you have any comments regarding console-mode usage, lets discuss technical issues in more detail on Neutron Forum in NConfigurator thread.

Along with 1.6.2 Neutron HiFi DAC V1's firmware was updated to Firmware 43 with some advancements.
 
@LoFiAudiophile the 1.6.2 update for NConfigurator was just released, so you could have a look at its console functionality. Announced on Neutron Forum.

API of console commands is provided by --help command, i.e. NConfigurator --help . If you have any comments regarding console-mode usage, lets discuss technical issues in more detail on Neutron Forum in NConfigurator thread.

Along with 1.6.2 Neutron HiFi DAC V1's firmware was updated to Firmware 43 with some advancements.

Thank you Dmitry. Loving it so far, even though I haven’t quite de-coded the full functionality but the bits seem to be there. I’ve found two oddities so far -

1. The “—update_net_fw_query” function exits with “Unknown device model family[0] model[0]”. I ran into this because I tried to update firmware to 43 using the CLI first. I did update FW just fine using the GUI.

2. The help for dsp_mode argument is slightly incomplete. 1 is for eQ, 2 for crossfeed, but we need 0x12 for cross feed and Eq. I am using both so was initially confused if the CLI is limited yet or is the help incomplete (seems the latter).

3. I probably missed it but I can’t read the Eq values from the CLI.

Big thanks for tap sensitivity setting. I was able to reduce sensitivity using the CLI (the GUI still can only select 0 - +8, not -8 - +8. It’s great now.
 
1. The “—update_net_fw_query” function exits with “Unknown device model family[0] model[0]”. I ran into this because I tried to update firmware to 43 using the CLI first. I did update FW just fine using the GUI.

Will correct help in the next update to clarify this:

--update_net_fw_query (-unwq): Query for an updated firmware via OTA (returns a list of available versions). Must be paired with preceding --state.
--update_net_fw (-unw) VERSION_NUMBER: Update firmware via OTA to the specified VERSION_NUMBER (downloads and updates firmware automatically). Must be paired with preceding --state.

So, you need to prepend --state before --update_net_fw_query. , e.g. NConfigurator --state --update_net_fw_query. In this way tool will read DAC's version and memorize it, then update_net_fw_query command will query server with DAC's details/version.

2. The help for dsp_mode argument is slightly incomplete. 1 is for eQ, 2 for crossfeed, but we need 0x12 for cross feed and Eq.

Thank you very much for noticing it. Help will be fixed in the next update as such:

--dsp_mode (-dpm) VALUE: Activate DSP effect for PCM output.

Available values (bitmask, OR values to make DSP chain):

0 (Disable, DSP mode is OFF, bit-perfect operation)
1 (Equalizer, 10-band)
2 (Crossfeed)
9 (Equalizer, 20-band, can not be combined with other DSP effects)
16 (Frequency Response Correction, FRC)
32 (Surround, Ambiophonic R.A.C.E.)

Example:
18 (Crossfeed + FRC: 2|16 = 18)
33 (Surround + EQ, 10-band: 1|32 = 33)

Default: 0

3. I probably missed it but I can’t read the Eq values from the CLI.

Sorry, missed that fact that there is no command to get EQ filter values. GUI is currently calling a function to get EQ filter. My proposal for EQ filter output command is as follows:

--dsp_eq_filter_get (-dsp_eqf_ge): BAND_ID CHANNEL_MASK

Output format:
BAND_ID CHANNEL_MASK FILTER_ID PARAM_TYPE PARAM_VALUE FREQUENCY GAIN_DB

Filter value will be a space-delimited string which can be parsed, example for Band 0, Band 1:

0 3 pe bw 1.0000 31.2500 2.2500
1 3 pe bw 1.0000 62.5000 2.0000

Will it be suitable? I will make Beta version of NConfigurator with all these changes for you to try.

Also, I can change output of timestamp and type of the log message by allowing them with --verbose command, so that this part of the output will go away without --verbose:
[09:13:35]. Let me know if needed.
 
Will correct help in the next update to clarify this:
<snip>
[09:13:35]. Let me know if needed.

Take some rest Dmitry. You’ve already done more than what most people accomplish. No rush.

Thanks a ton for the cool gadget and the updates. It will keep me busy for now :)
 
Thanks a ton for the cool gadget and the updates. It will keep me busy for now :)

A new Firmware 44 is out paired with NConfigurator 1.6.3 which now supports getting filter from DAC V1.

For example, the following sequence of commands:
NConfigurator -b -to 200 -get_dsp_eqf 0 1 -get_dsp_eqf 0 2 -get_dsp_eqf 1 1 -get_dsp_eqf 1 2

gives such output in JSON format for each requested filter:
{"freq":31.25,"gain":2.5,"id":"pe","param":1,"ptype":"bw"}
{"freq":31.25,"gain":2.5,"id":"pe","param":1,"ptype":"bw"}
{"freq":62.5,"gain":2,"id":"pe","param":1,"ptype":"bw"}
{"freq":62.5,"gain":2,"id":"pe","param":1,"ptype":"bw"}

New switch -b turns off any logging, so only output of the get command will show up in console. New switch -to allows to set the connection timeout, e.g. in this example 200 is 200 ms of timeout, if DAC V1 is not connected then above request will result in output:
timeout

I can add more get commands in a similar way (in JSON format), just tell which you will need.
 
A new Firmware 44 is out paired with NConfigurator 1.6.3 which now supports getting filter from DAC V1.

For example, the following sequence of commands:
NConfigurator -b -to 200 -get_dsp_eqf 0 1 -get_dsp_eqf 0 2 -get_dsp_eqf 1 1 -get_dsp_eqf 1 2

gives such output in JSON format for each requested filter:
{"freq":31.25,"gain":2.5,"id":"pe","param":1,"ptype":"bw"}
{"freq":31.25,"gain":2.5,"id":"pe","param":1,"ptype":"bw"}
{"freq":62.5,"gain":2,"id":"pe","param":1,"ptype":"bw"}
{"freq":62.5,"gain":2,"id":"pe","param":1,"ptype":"bw"}

New switch -b turns off any logging, so only output of the get command will show up in console. New switch -to allows to set the connection timeout, e.g. in this example 200 is 200 ms of timeout, if DAC V1 is not connected then above request will result in output:
timeout

I can add more get commands in a similar way (in JSON format), just tell which you will need.

That’s pretty cool. I’ll give a whirl. Thanks Dmitry.
 
Firmware 44 broke DoP support by incompatible DAC mode, fixed by Firmware 45 now. Please kindly update via NConfigurator.
 
Hi Dmitry, just received this little miracle. So far so good and I'm very happy with this purchase. However, I have a question. It might sound stupid, but I still didn't figure it out. It does not have a volume control so how do you adjust it when using Tidal with sound output set to this DAC? This way it disconnects system volume control. It's not an issue using with iPhone or iPad or even using with MacBook for other applications except Tidal.
 
It does not have a volume control so how do you adjust it when using Tidal with sound output set to this DAC? This way it disconnects system volume control. It's not an issue using with iPhone or iPad or even using with MacBook for other applications except Tidal.

Maybe Tidal app has some bug? DAC V1 exposes volume control to the OS in its USB descriptor therefore you noticed that iPhone/Mac and other apps are ok. DAC V1 is app agnostic, it exposes USB descriptor to the OS and works like a sound card (from the OS's perspective). Then the rest of functionality depends on apps, including their bugs.
 
Maybe Tidal app has some bug? DAC V1 exposes volume control to the OS in its USB descriptor therefore you noticed that iPhone/Mac and other apps are ok. DAC V1 is app agnostic, it exposes USB descriptor to the OS and works like a sound card (from the OS's perspective). Then the rest of functionality depends on apps, including their bugs.
[edited] turning off Normalize volume in Tidal's settings helped. Now I can set volume to max with Tidal's volume control. The only downside is that I have to open Tidal each time I want to adjust a volume :)

I don't think it's a bug, more like a feature. Once you select any DAC as sound output device, it bypasses all system controls. You can change settings a bit and still adjust volume inside of Tidal, but with max volume set in Tidal, DAC shows only -31 db. All my previous DACs had volume control so it was not an issue. The only way to bypass it is select System default option in Tidal's Sound output menu, but this way I don't think it's a bit perfect stream from Tidal?
 

Attachments

  • Screenshot 2024-08-20 at 14.50.33.png
    Screenshot 2024-08-20 at 14.50.33.png
    62.5 KB · Views: 18
  • Screenshot 2024-08-20 at 15.00.59.png
    Screenshot 2024-08-20 at 15.00.59.png
    49.5 KB · Views: 18
Last edited:
You can change settings a bit and still adjust volume inside of Tidal, but with max volume set in Tidal, DAC shows only -31 db.

DAC V1 does what host is asking to do. Therefore if host asked to set -31 dB it will be done so and indication will reflect that.

If, for example, Tidal is able to talk to USB DAC directly by detaching it from the OS (like what Neutron Player is doing with Direct USB Access) then of course DAC will disappear from the OS as audio device and none associated volume controls will be available because OS does not see device anymore - it is detached from the OS. On Windows it can happen only if app is acquiring USB DAC using USB API (Neutron's Direct USB Access option). Then app which did it has to provide own volume controlling method (via its own UI and etc). According to your description it is what is happening with Tidal in your case and it looks like a correct behavior to me, the same is happening with Neutron Player -> Direct USB Access = On in Win32 mode.

Maybe Tidal could not acquire your other DACs in Exclusive mode and thus you still saw system-wide volume controls?

Could you please clarify platform/OS on which you are running Tidal app, I believe on Windows?
 
Last edited:
DAC V1 does what host is asking to do. Therefore if host asked to set -31 dB it will be done so and indication will reflect that.

If, for example, Tidal is able to talk to USB DAC directly by detaching it from the OS (like what Neutron Player is doing with Direct USB Access) then of course DAC will disappear from the OS as audio device and none associated volume controls will be available because OS does not see device anymore - it is detached from the OS. On Windows it can happen only if app is acquiring USB DAC using USB API (Neutron's Direct USB Access option). Then app which did it has to provide own volume controlling method (via its own UI and etc). According to your description it is what is happening with Tidal in your case and it looks like a correct behavior to me, the same is happening with Neutron Player -> Direct USB Access = On in Win32 mode.

Maybe Tidal could not acquire your other DACs in Exclusive mode and thus you still saw system-wide volume controls?

Could you please clarify platform/OS on which you are running Tidal app, I believe on Windows?
No, it's Mac OS Sonoma 14.6.1. Everything works now, so all good, I just need to figure out how to control Tidal volume with a keyboard.
 
No, it's Mac OS Sonoma 14.6.1. Everything works now, so all good, I just need to figure out how to control Tidal volume with a keyboard.

I see, ok!

It works differently from Windows then. On Windows there is also a WASAPI audio backend which allows to control audio volume of device while being in Exclusive access mode. Therefore on Windows you would be able to adjust volume using OS controls and still use hi-res bit-perfect output.

I googled a bit about system volume controls availability on macOS and got to Reddit thread where user is mentioning similar behavior - on macOS in Exclusive mode the system volume control is unavailable:
Neutron HiFi DAC V1 exposes volume control in its USB descriptor in a very generic standard way, just like many other USB DACs do it. Its USB descriptor is very similar to the XMOS controller's USB descriptor which is the most popular among DACs. Therefore it will behave similarly like many other DACs in this aspect.
 
@dmitrykos , did you park the Virtual 7.1 Surround Sound developments, I haven't read anything about it since last time I mentioned it? (Was back in June when we mentioned it last time).
 
I see, ok!

It works differently from Windows then. On Windows there is also a WASAPI audio backend which allows to control audio volume of device while being in Exclusive access mode. Therefore on Windows you would be able to adjust volume using OS controls and still use hi-res bit-perfect output.

I googled a bit about system volume controls availability on macOS and got to Reddit thread where user is mentioning similar behavior - on macOS in Exclusive mode the system volume control is unavailable:
Neutron HiFi DAC V1 exposes volume control in its USB descriptor in a very generic standard way, just like many other USB DACs do it. Its USB descriptor is very similar to the XMOS controller's USB descriptor which is the most popular among DACs. Therefore it will behave similarly like many other DACs in this aspect.
Yes, I've seen this post before. I will try to dive deeper once I have more time and will let you know if I found anything useful.
 
@dmitrykos , did you park the Virtual 7.1 Surround Sound developments, I haven't read anything about it since last time I mentioned it? (Was back in June when we mentioned it last time).

This task sits in to-do, it wasn't parked but higher priority tasks delayed work on this subject. Remember our conversation and will approach it soon.
 
Back
Top Bottom