• These commercial threads are for private transactions. diyAudio.com provides these forums for the convenience of our members, but makes no warranty nor assumes any responsibility. We do not vet any members, use of this facility is at your own risk. Customers can post any issues in those threads as long as it is done in a civil manner. All diyAudio rules about conduct apply and will be enforced.

USB to I2S 384Khz - DSD Converter

Yes, but I want other inputs than just Amanero. I have implemented a controller prior to getting this board and just trying to integrate it fully....

I use an Arduino to I2C control the registers in the ES9008 within my Buffalo24. The Amanero Board also connects to the same I2C network. The I2C network is at 3.3V as the Amanero Board is not theoretically 5V I2C tolerant. The Arduino acts as both a Master (in communicating with the ES9008) as well as a Slave in receiving information from the Amanero Board. Your pic controller could probably be a "Master" and a "Slave" at the same time but you would need to investigate this with whatever controller you are using.:)
I basically use the Frequency events (44k,96k etc) and the PCM/DSD events and indicate them on the LCD display as the ES9008 does not have the "Status" registers that the ES9018 has - there are only the first 15 registers of the ES9018 in the ES9008.

Ray - You probably don't need the I2C multiplexer - just configure your Arduino to be a slave as well as a master.
 
Last edited:
I use an Arduino to I2C control the registers in the ES9008 within my Buffalo24. The Amanero Board also connects to the same I2C network. The I2C network is at 3.3V as the Amanero Board is not theoretically 5V I2C tolerant. The Arduino acts as both a Master (in communicating with the ES9008) as well as a Slave in receiving information from the Amanero Board. Your pic controller could probably be a "Master" and a "Slave" at the same time but you would need to investigate this with whatever controller you are using.:)

From my limited knowledge I2C is designed to operate with a single master on a bus and all the work I've done is based with this in mind. It may well be the case that Arduino can operate as both master & slave - I need to investigate further - but it will surely add interesting problems, for instance what happens when both masters want to send at the same time? Could get messy :)

When i first saw that the Amanero had I2C capabilities I assumed it would be as a slave device with registers that could be read to detect its status, similar to DAC chips. Hence my question asking about this earlier. I do however fully appreciate why Domenico has taken the master approach and can see the advantages for those looking for a simple integrated approach.

I look forward to seeing what Ray comes up with his Arduino. I really like the idea of being able to control the DAC volume (and other settings) via the usb interface - I had been thinking of doing something similar (but probably using ethernet and setting up a local web service to control the DAC).

Thanks for all the input - much food for thought.
 
Last edited:
From my limited knowledge I2C is designed to operate with a single master on a bus and all the work I've done is based with this in mind. It may well be the case that Arduino can operate as both master & slave - I need to investigate further - but it will surely add interesting problems, for instance what happens when both masters want to send at the same time? Could get messy :)
.

Multiple masters on the I2C bus proven and working with an Arduino! In fact I have not even removed the original TPA "master" pic controller on the Buffalo24 Board - just delayed the the Arduino connecting to the I2C bus until after the original pic controller has been put into "sleep" mode by its original programme. Off course it all needs to be "engineered" to work.
I am also interested in Ray's method so looking forward to the details in due course.:)
 
Trying to understand what you are saying here Ray. Does this mean that in my Buffalo24 because I can use the software volume control with DSD input, the DAC is actually converting native DSD to PCM? i.e that is the way DSD works in this DAC chip by converting to PCM?:confused:

If you use (control) the volume by programming the DAC chip registers there are no extra conversion involved, but if you use the volume control in the player app then it most possibly must convert DSD to PCM and send PCM data to the DAC.

Hi, themystical,

I'd like to supply additional information based on my experiences.

A volume control on DSD (1 bit delta-sigma modulated) data always requires a multi-bit mathematical operation. When a volume control function is implemented somewhere in your system, the original DSD data is essentially converted into multi-bit data somewhere. Please remember the word "multi-bit data" which is not equivalent to PCM is used here.

1. in players ?
I just know HQPlayer & JRiver Media Center 18 cases.
In those players running under ASIO 2.1 DSD streaming mode, volume control function is unconditionally disabled for a DSD source because those players send native DSD streaming data to ASIO driver side.

2. in DAC ?
It is DAC architecture dependent.
As for ES9018, it employs 6 bit delta-sigma modulation and DSD data is volume controllable. I imagine that DSD data might be decimated into 6 bit delta-sigma data through its digital FIR filtering process. In the process, its volume control functionality must be implemented.
As for TI BB XXX179x DACs (for example, DSD1794A, PCM1795) of Advanced Segment architecture, input DSD data is only processed by a simple analog like FIR filtering through the Advanced Segment so as to get a final analog signal. No volume control function is provided for a DSD input on this architecture. FN1242A made by Niigata Seimitsu must be similar. Because of the simple internal mechanism, these DACs can be used even for playing DSD256 and DSD512 though it is not explicitly specified nor guaranteed in their datasheets. (In some worst cases, you may have noises on these DACs for the high sampling DSD data.)

Bunpei
 
Multiple masters on the I2C bus proven and working with an Arduino! In fact I have not even removed the original TPA "master" pic controller on the Buffalo24 Board - just delayed the the Arduino connecting to the I2C bus until after the original pic controller has been put into "sleep" mode by its original programme. Off course it all needs to be "engineered" to work.

That's good to know - thanks.

I need to dig out my Arduino again and have a play :)
 
How many sources of DSD256/DSD512 music are there?

When we think of sources originally recorded at those sampling rates and widely available, as far as I know;
DSD256: Only one from 1 bit Consortium web site
DSD512: None
(Therefore, in my own case and in the cases of the most of users in Japan those who have tried the high sampling rates they craft DSD256 and DSD512 sources by themselves. The technique will be shown later.)

As some professional level ADC devices support a DSD256 output, there must be more sources in the professional studio world.
 
Hi, dickiegeorge,

I'd like to supply additional information for I2C control.

As "themystical" has already shown in his post, multiple masters are ok on a single I2C bus. I2C specification is designed to allow a multi-master configuration employing a arbitration mechanism.
http://www.nxp.com/documents/other/39340011.pdf
A possible cause of problems in a multi-master environment might be a problem of implementation of multi-master support on individual programs.
The following discussion might be interesting for you,
Arduino I2C Multi Master design - Arduino Forum

The device, Raymond showed, is to be used for multiple devices in a single application domain to have fixed identical duplicated addresses. For example, if you have four ES9018 DAC chips on one board, the use of the multiplexer/switching device must be effective. The application of the multiplexer device is nothing to with the case of multiple masters in a single I2C bus.

Bunpei
 
Hi, dickiegeorge,

I'd like to supply additional information for I2C control.

As "themystical" has already shown in his post, multiple masters are ok on a single I2C bus. I2C specification is designed to allow a multi-master configuration employing a arbitration mechanism.
http://www.nxp.com/documents/other/39340011.pdf
A possible cause of problems in a multi-master environment might be a problem of implementation of multi-master support on individual programs.
The following discussion might be interesting for you,
Arduino I2C Multi Master design - Arduino Forum

The device, Raymond showed, is to be used for multiple devices in a single application domain to have fixed identical duplicated addresses. For example, if you have four ES9018 DAC chips on one board, the use of the multiplexer/switching device must be effective. The application of the multiplexer device is nothing to with the case of multiple masters in a single I2C bus.

Bunpei

Thank you Bunpei and themystical.

It seems, with some work, I may therefore be able to make use of the Amanero I2C data after all. If I can get the PIC to receive the data and then decide how best to send it on to the 9018 this could open lots of very useful possibilities, like volume control from the PC, etc.

Seems my project has just got bigger again :)
 
Hi, merlin el mago, dickiegeorge and to those who are interested in creating DSD256, DSD512 source files,

I'd like to explain briefly a method to get DSD256, DSD512 files from your own existing sources.
Key messages are;
1. Sound quaility of resultant DSD sources depend on the software you use
Some Japanese audiophiles favor the most complicated and time consuming method.

2. For creating a DSD256 of DSDIFF format by converting an original 44.1 kHz/16 bit PCM WAV file, the most easy way is to use sunacchi's direct conversion program "PCM - DSD Converter V1.5 "
http://ama-audio.up.seesaa.net/image/wav2dff.zip
with its GUI front-end program "Wave to Dsdiff Converter - Version1.5 - GUI" by YUKI-san.
Wav2DffGui_015_010001.zip
The sunacchi's program is based on Koon's pioneering original source,"Wav2DSFconverter01_20111129.cpp" shown here.
https://sites.google.com/site/koonaudioprojects/dsd-playback-system


3. Essential steps to get DSD256, DSD512 files
A. Upsampling original 44.1 kHz/ 16 bit PCM WAV source to 176.4 kHz or 352.8 kHz/ 24 bit PCM WAV
(If you use original WAV files of 176.4 kHz or 352.8 kHz, you can omit this step.)
B. Re-write a sampling frequency dependent field values in a WAV header to those of 44.1 kHz
C. Apply delta-sigma modulation to the 44.1 kHz file by using Korg AudioGate, Sony DSD Direct, Weiss SARACON etc. [WAV-> DSDIFF or DSF file conversion]
D. Re-write a sampling frequency field value of DSDIFF header to that of DSD256 or DSD512

For assisting these steps, sunacchi provides a set of useful tools.
http://ama-audio.up.seesaa.net/image/create256dff.zip
chfsWav441.exe --- drag & drop capable program for B
chfsDff256.exe --- drag & drop capable program for D (DSD256 only)

Bunpei uses FUSE program for initial upsampling, SONY DSD Direct for delta-sigma modulation and Korg Audio Gate for DSF -> DSDIFF format conversion. When DSD64 or DSD128 sources are to be upsampled, Bunpei uses Korg AudioGate for initial DSD -> PCM conversion.

The number of taps in FIR employed for initial upsampling has a significant effect on sound quality of final DSD sources.

For 48kHz series data, a direct application of the tools explained above is not effective.


4. Cautions
sunacchi's "wav2dff" program terminates at the middle of processing when a upsampled data clips. In the case, please adjust the offset parameter to remove the clipping.

The options in the sunacchi's "wav2dff" program are associated with internal parameters.
PCM to DSD conversion consists from two major steps.
i. Upsampling from 44.1kHz to 11.2896MHz (x 256)
Zero insertion and low pass filtering by a FIR digital filter
ii. 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.


5. Disclaimer
Bunpei, sunacchi and YUKI-SAN are not responsible for the resultant damaged or lost data you may suffer in your processing. In order to avoid those unexpected damages, please keep backup of your original data or please apply programs introduced above to your copy data.
Sound quality of resultant sources heavily depend on your PC and DAC environment. Bunpei gives no guarantee for your satisfaction.
 
Last edited: