DSD Playback system, DSF Player + USB DDC + DSD Amplifier

Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.
On his blog page Sunacchi released again his WAV to DSDIFF Converter that supports a direct conversion from 44.1 kHz/16 bit PCM WAV to DSD256 wav2dff.zip. The version is 1.5.
Moreover, YUKI-SAN, prepared an associated GUI program for the converter.
Wav2DffGui_015_010001.zip. The GUI program requires .NET 4.0 frame work installed in your PC.

The new version of WAV2DFF.exe enables a multi-thread processing and the use of 65536 taps in FIR calculation.

You need to put the WAV2DFF.exe, vcomp90.dll and Wav2DffGui.exe in the same folder.
 
Bunpei,
I downloaded the zipped files, extracted them and placed WAV2DFF.exe, vcomp90.dll and Wav2DffGui.exe in a new folder.

Running the programmes results in nothing but two "i" messages in what must be Japanese (I do not have Japanese character text installed in my system).

Any ideas what my mistakes are?

Cheers
David
 
The software with GUI works perfectly here. A 44k1 50MB WAV file is - after a few minutes on my 4 core computer - converted into a 760MB DSD256 file :)

There are a few options, and I do not understand most fo them:
normalise offset
Kaiser window alpha value
tap count
7th noise shaper pattern number

I used the default values.

Bunpei, thank you for sharing us the link to the software!



/S
 
Member
Joined 2009
Paid Member
The software with GUI works perfectly here. A 44k1 50MB WAV file is - after a few minutes on my 4 core computer - converted into a 760MB DSD256 file :)

There are a few options, and I do not understand most fo them:
normalise offset
Kaiser window alpha value
tap count
7th noise shaper pattern number

I used the default values.

Bunpei, thank you for sharing us the link to the software!



/S

+1 finally can use it, many thanks Bunpei & KOON3876:)
 
There are a few options, and I do not understand most fo them:
normalise offset
Kaiser window alpha value
tap count
7th noise shaper pattern number

These options are associated with internal parameters.
PCM to DSD conversion consists from two major steps.
1. Upsampling from 44.1kHz to 11.2896MHz (x 256)
Zero insertion and low pass filtering by a FIR digital filter
2. Delta-Sigma modulation

A. Tap counts
The number of taps used in the FIR digital filter
In general, the bigger number brings the better sounds. However, the longer processing time.

B. Kaiser window alpha value
The digital LPF uses a "window" function (the same term that appears in DFT(Discrete Fourier Transform))
Kaiser type window has a characteristic parameter "alpha" which determines a shape of window.

C. Normalization offset
In the FIR calculation for x 256 upsampling, a default normalization factor is 256. However, when an input sound data has a "clipping", it causes abnormality in the calculation. In order to avoid the error, an "offset" value for adjustment was introduced by Sunacchi as a work-around.
If your source contains clippings, you need to set a certain negative value, for example, -5 for this option. In this example, the effective normalization factor is 256+(-5)=251.

D. Pattern number for control parameter set
A noise shaper is a digital control circuit with a feedback. A z-transform notation is used for defining its transfer function. The noise shaper employed in the program is of 7th order. In general, the stability of the function can be estimated by the positions of "poles" and "zeros" in a Z-plane.
In this program, values of parameter zero are predefined in several sets. The pattern number is used to select one of the set.

To Koon,
If you find anything incorrect in the explanation above, please don't hesitate to point-out them.

Bunpei
 
By the way.. this is compression function I'm using now.
Code:
#include <math.h>

float sigmoid2(float input, float limit)
{
	//sigmoid function to compress input signal.
	//input signal = any range
	// 0 < limit < 1.0, compression starts from this value
	// 4.0 at gain comes from derivative of sigmoid function (at x=0 delta=gain/4.0 )
	// output is compressed between -1.0 to 1.0
	// convert_param is to convert sigmoid output(0.50 to 1.0) to (limit to 1.0) 

	double convert_param = (1.0/(1.0 - limit))/2.0;
	double gain = 4.0 * convert_param;
	double sigmoid;
	double ret;

	if (input > limit)
	{
		sigmoid = 1.0 / (1.0 + exp(-1.0 * gain * (input - limit)));
		ret = limit +  (sigmoid - 0.50) / convert_param;
		return (float)ret;
	}
	if (input < -1.0 * limit)
	{
		sigmoid = 1.0 / (1.0 + exp(-1.0 * gain * (input + limit)));
		ret = -1.0 * limit + (sigmoid - 0.50) / convert_param; 
		return (float)ret;
	}
	
	return (float)input;
}
attached plot shows input range 0.80 to 1.30 is compressed below 1.0 from value 0.90, very smooth

Compression: no effect for small signal, total dynamic range is compressed.
normalization: no effect for total dynamic range but all signal reduced
 

Attachments

  • Compression.png
    Compression.png
    7.2 KB · Views: 543
Thank you, Bunpei-san, for the explanation of the parameters!

Rather advanced software conversion algorithms must be used. I want, of course, the best sonical quality possible, and long conversion times do not scare me, but even after reading your explanations a few times, I cannot decide what gives the best sonical conversion quality except that Tap Cpunt should be as large as possible.

BTW, porting the time consuming code into CUDA code, would be great. I mostly use NVIDIA graphics cards :) Aimersoft´s video conversion software that I use, can use NVIDIA graphic cards for around 5X faster conversion for certain type of files.


Best regards,
S.

These options are associated with internal parameters.
PCM to DSD conversion consists from two major steps.
1. Upsampling from 44.1kHz to 11.2896MHz (x 256)
Zero insertion and low pass filtering by a FIR digital filter
2. Delta-Sigma modulation

A. Tap counts
The number of taps used in the FIR digital filter
In general, the bigger number brings the better sounds. However, the longer processing time.

B. Kaiser window alpha value
The digital LPF uses a "window" function (the same term that appears in DFT(Discrete Fourier Transform))
Kaiser type window has a characteristic parameter "alpha" which determines a shape of window.

C. Normalization offset
In the FIR calculation for x 256 upsampling, a default normalization factor is 256. However, when an input sound data has a "clipping", it causes abnormality in the calculation. In order to avoid the error, an "offset" value for adjustment was introduced by Sunacchi as a work-around.
If your source contains clippings, you need to set a certain negative value, for example, -5 for this option. In this example, the effective normalization factor is 256+(-5)=251.

D. Pattern number for control parameter set
A noise shaper is a digital control circuit with a feedback. A z-transform notation is used for defining its transfer function. The noise shaper employed in the program is of 7th order. In general, the stability of the function can be estimated by the positions of "poles" and "zeros" in a Z-plane.
In this program, values of parameter zero are predefined in several sets. The pattern number is used to select one of the set.

To Koon,
If you find anything incorrect in the explanation above, please don't hesitate to point-out them.

Bunpei
 
Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.