Home > Arduino, Code, DIY HiFi, USB AUDIO > Musiland 03 I2S to Buffalo II DAC: Playing 352.8Khz Music

Musiland 03 I2S to Buffalo II DAC: Playing 352.8Khz Music

Hurray! I can pass 352.8K Music to the Buffalo II DAC.  Even with the limitations of the older 80MHz Buffalo II, I was able to hear super clean music by optimizing some of the parameters in the DAC. Here is proof:

Downloaded a 24bit/352.8K file from 2L

(Photo of artists taken from: http://www.flickr.com/photos/arvola/5692730311/in/photostream)

Played the file with MusicBee (to allow automatic switching of sample rates through WASAPI exclusive mode). Notice that the sample rate is measured to be exactly 352,800 hertz.

CLICKS and NOISE with 352.8Khz FILES

There is absolutely no underlying noise when playing the track, except there is an occasional “click” sound. The clicks are very short, low volume, sort of like a static “click”. Reminds me of the clicks when playing analog LPs. This was somewhat due to the wiring configuration I used. When I twisted the LRCK and DATA lines together (in addition to having previously twisted the BCK and GND lines), the clicks were largely reduced. In the above track I couldn’t hear them. In another  solo piano track, the clicks were also gone.

The other factors in getting rid of the clicks are the settings for the DAC. I used the slow FIR filter and 8-bit true differential in the quantizer setting.

Strange noise: when the track is paused, stopped or during the gap between songs with the sample rate remaining at the high rate (352.8K), the DAC will emit a loud hissing sound. The level and tone of this hissing sound changes with the DAC digital volume setting with some setting giving more volume than other settings but not related to the amount of volume attenuation. In addition, FIR sharp filter results in a louder noise than the slow filter. The quantizer bit depth also changes the amount of noise coming from the DAC. The IIR filter and the notch delay don’t seem to have any effect.

The situation can be replicated if you digital reduce the volume to zero using the volume control of the application, the OS or the device driver. If the volume is reduced to near zero, clicks and cracks noise will emerge.

The situation can be further replicated if you play a silence track. The problem has also been reported if using an ExaDevices EXAU21 USB interface.

Because of some of these issues related to rendering  ultra high sample rate files, The Buffalo II DAC was upgraded to 100 MHz clock.

JITTER

Unfortunately I was not able to get drop-free play with the DPLL setting at “lowest”. The level of jitter (as determined by the DPLL setting) seems equal to the modded Musiland MINI.  Keep in mind that I disabled the power to the analog section and replaced the regulators with low noise types in the MINI. The Musiland 03 is in stock form with the analog power section intact. So overall, there could be some improvements with regards to jitter.

Although disappointing, this level of jitter is expected as the FPGA has an inherent minimum amount of jitter when processing the clocks. Similar levels (as indicated by DPLL setting) have been reported with different USB interfaces.

Personally, this “quest” for lowest DPLL setting is pretty much “academic diy” as I hear no differences in sound with the different DPLL settings. In addition, one of my goals is to keep the headphone amp so removing the power to the analog section is out of the question.

Note: for 352.8KHz material I set the DPLL to “BEST”

SAMPLE RATE PRECISION

As seen in the display above, the sample rate generated by the FPGA is pretty much exact. The Musiland MINI had a variation of 4-5 Hz for 44.1K material. This is probably due to the fact that  24Mhz oscillator is used instead of the 24Mhz crystal that was used in the older models.

WIRING

I paired BCK with GND and twisted the wires to provide some shielding. The Buffalo locks to BCK

The wires are probably much longer than they need to be in this first iteration. LRCK and DATA are just single wires with no shielding. Even with this “rudimentary” setup, I did not experience any noticeable problems such as noise or dropouts.

Update: I also twisted the LRCK and DATA lines together and the occasional “clicks” went away…

SUMMARY

Al in all I am very happy with this device. Just as the Buffalo II sets a price/performance benchmark for high-end DACs, so does the Musiland 03US set a price/performance benchmark for high-end USB audio interfaces. On top of that, you also get a good headphone amplifier and another DAC

About these ads
  1. 2011/08/17 at 19:17

    Did you order a BIII? I did, and will be attempting to mate the hifiduino controller with it… would you be interested in helping me work through any problems I encounter and getting the information together for other users?

    • BlogGeanDo
      2011/08/18 at 00:00

      No, I have not. Still having fun with the BII. Certainly I can help you with using it in BIII. The main thing are the selections you want implemented. For example if you are using the built-in spdif mux, then you need to select the appropriate spdif input. In BII it is hardwired to spdif #1. The other issue is the configuration of the inputs. BII again have them hard wired again.

      The best thing to do is to figure out what features you wish to implement in BIII and then figure out what to do in the code. For example, If you plan to use BIII in stereo mode, with spdif #1, then there is just one change in the code for the input configuration.

      • 2011/08/18 at 01:52

        My plan is to use the exaU2I to send 8-channel I2S to the BIII. At the same time, I need to build a switch that will handle the exaU2I and the S/PDIF switcher. There will be 5 IVY boards in total: 4 to handle the 8-channel sound in mutli-channel mode, and a fifth IVY board to handle just balanced stereo out.
        So basically, I need to build some controls for both the inputs and outputs, but I’m waiting for the manual for the BIII to be released…

      • BlogGeanDo
        2011/08/18 at 16:28

        Here is a suggestion:

        For the input:
        There are 8 inputs in BIII. The last 3 are not used by I2S (because one I2S signal is two channels). Thus you can leave the I2S connected and the spdif connected at all times. Use the controller to switch between the 8-channel I2S input and (up to 3) spdif inputs

        For the output:
        Here you need to switch between 8 channel outputs and stereo output (summing 4 channels into one channel). You could use 4 quad-pole double-throw relays similar to what TPA used for their products. Each relay handles two differential channels with the gnd connection always connected. On 8 channel, the outputs go to each input of the 4 IVYs. On stereo the outputs are summed into a single IVY. Because of the different current drive between 8 channel and 2 channel, you will need a separate IVY for the stereo mode. For the output, the controller will be controlling the relays. Since the relays are actuated equally and at the same time, a single pin from arduino will allow you to select one or the other output.

        Additional concerns: Mute the DACs when switching sources and then unmute (I think I’ll implement this in the code. It is good practice anyways. Also the input to the IVYs may need a pull down resistor to ground them when they are floating (maybe they are already there or maybe not needed. Ask Russ…)

        Some restrictions on settings: In 8-channel mode you can only use 6-bit and 7-bit quantizer because of internal signal routing (see this post: http://hifiduino.wordpress.com/2011/06/10/effect-of-quantizer-setting/). The current version of HIFIDUINO allows you to handle this situation: Each input selection remembers the settings for all the supported parameters.

  2. 2011/08/18 at 17:30

    Absolutely wonderful news, about being able to connect the 8-channel exaU2I and 3 S/PDIF connections all at once! That eliminates one stage of switching. However, are there any switches on the BIII that will need to be changed as well?

    I will indeed have 5 IVY boards to handle the 8-channel vs combined channels into stereo. And I will build a relay board that is controlled by the Arduino. I would like to have an additional push-button switch that switches between 8-channel and 2-channel… that way 2-channel USB signal can still be sent into the BIII and interpreted as stereo. Or is there a smart way to have the Arduino auto-detect an 8-channel signal coming from USB as opposed to a 2-channel? This would be ideal, and perhaps either some LEDs or the LC D would display 2-4-8-channel status. Although I kinda like the idea of a LED doing it :)

    I’ll try drawing up an idea of how to make the relay board and show you. Are the relays opto-isolators, or mechanical? I’m wondering if an opto-isolated relay would produce too much jitter, and would we have to worry about S/W debouncing of the mechanical relays?

  3. 2011/08/18 at 18:04

    I’m trying to understand the 4PDT relay… wouldn’t I want to use 4 DPDT latching relays?

  4. BlogGeanDo
    2011/08/18 at 19:19

    Latching relays come with one or two coils. Single coils require that you apply a reverse voltage to switch to the other pole (that would require some additional circuitry to apply the reverse voltage). Double coils allow you to power one coil or the other coil to switch to the other pole. For this you will need two signal pins from the Arduino

    If you use DPDT switches, then you need 8 of those as each output (each channel) of the BIII is balanced (+V, gnd and -V).

    I did a little big of digging and concluded that dual coils latching are the best for this kind of applications.

    I did purchase some 4PDT dual coil latching relays in ebay but I don’t see them anymore. I am thinking of doing a 4-way I2S/spdif mux but haven’t got the time to do it….

    Regarding switching in the BIII DAC, I believe the on-board switches are read by the on-board uP. If you use an external uP, then those switches will not have any effect.

    For the 8-channel vs 2-channel there’s probably a few of ways of doing that:

    – The EXA may be able to send the same information to all 8 channels.
    – The quantizer setting in the DAC can switch off 6 of the channels and replicate the signal in the first 2 channels
    – There is also internal routing where half of inputs can be routed to the other half (giving you 4 channels). You will still need some h/w input switching but only for half the wires.

  5. 2011/08/18 at 19:44

    So a 4PDT dual-latching relay will handle two outputs (2 sets of +V, GND and -V), aka L & R stereo for an output, correct? And in that case I would only need four 4PDT instead of 8 DPDT.

    Is the idea that when switching to stereo, all of the outputs are combined together into two outputs (L&R)? Or are the additional outputs simply ignored?

    And with inputs, it’s simply a case of telling the BIII which incoming data lines to use. This would require managing the DIP switches on the BIII to switch between stereo and 8-channel configuration.

    I don’t understand the quantizer stuff so well just yet, but if I understand correctly these settings will be handled in the Arduino code.

    Does that all sound correct so far?

    • BlogGeanDo
      2011/08/18 at 19:57

      Yes 4 4PDT or 8 2PDT.
      The advantage of combining outputs is to give you higher snr. Doubling the outputs gives you additional 3 db snr so from 8 to 2, (8 to 4 and 4 to 2) gives you 6 db increased snr. So yes you have to tie the outputs together of you want to take advantage of increased snr (or you could just use the first two channels and you won’t even need the 5th IVY)
      If you use the on-board uP in BIII, then yes, the dip switches tells the DAC how to configure the inputs. If you use Arduino, then the dip switches won’t matter. If you use Arduino, all configurations for the DAC will be handled in the code.

      • 2011/08/18 at 21:04

        So in that case I won’t need to worry about configuring DIP switches on the BIII, since the Arduino will be handling that stuff through the code. Sounds good!

        I’ll look into designing a 4x 4PDT latching dual-coil relay board.

  6. 2011/08/19 at 15:10
    • BlogGeanDo
      2011/08/19 at 17:08

      I see you are Takaji in diyaudio. I took me a while to figure out that guy buying 5 IVYs was you :-)
      I’ll have to look more closely on the diagram. Here is a source for those dual coil latching relays: http://www.memotronics.com/product?pid=1096 They also sell on ebay.
      Regarding your posts in diyaudio, the current code uses manual selection of spdif (automatic disabled)

      • 2011/08/19 at 17:28

        I assume you are referring to the current Arduino code. That is fine, since I would expect to need to press a button to select which S/PDIF source I want.

        So the Arduino code will allow me to control between I2S and S/PDIF input, for one thing, and will also allow me to control whether output is 2-channel or more. And of course, all the other features of the code too. I envision the front panel of the DAC having an LCD display, perhaps one size larger than the 4-line one (if they exist) to show more info… the button on the roatry encoder will do that auto-mute function, and perhaps there will be two extra push-buttons… one to select which input (when pressed, the button will cycle between LEDs beside text indicating the source) and the other button will do the same thing, except choose between 2-4-6-8 channel output.

        I just checked the tracking, and I received my BIII today! I will look at it when I get home. Now I just hope the manual is released soon… I am close to putting in a big parts order for everything I need :P

        What is your username on diyaudio? Might be easier to contact you there.

      • BlogGeanDo
        2011/08/19 at 21:16

        I am glt at diyaudio. The 4×20 LCD is probably the largest you can get. I haven’t see text LCDs with 5 lines. The way the code works now is one single rotary encoder controls everything (except for mute. The mute is in the remote). Normally the rotary encoder controls volume. When you press the switch in the encoder, it enters the “select” mode and turning the encoder makes the selection. While in the select mode, every click of the switch moves you to the next parameter for selection of that parameter. after 4 seconds of inactivity the controller reverts to volume mode.
        You can configure with minor changes in the code, “unlimited” number of inputs. Each input has a name and specific parameters. Once you have configured the inputs they are always remembered in eeprom. So you can create one input called 8-channel, another 2-channel spdif, anoter 8-channel spdif and so on….

    • BlogGeanDo
      2011/08/21 at 00:22

      I took a closer look at the diagram. Very nice!

      • 2011/08/22 at 21:57

        The BIII unofficial guide was just released… I need to read over that and make a “road map” of how everything will be connected now :)

      • BlogGeanDo
        2011/08/23 at 17:12

        Yeah, very good work by Mr LeonBV. Seeing there is a setting for DPLL multiplier, I’ve added that option into my code as well :-).

      • 2011/08/23 at 18:44

        So I am trying to understand… the Arduino code will be a replacement firmware for the BIII, correct? Does this mean that I will need to remove the firmware chip from the BIII board?

        Also it seems that if I leave the BIII in automatic input mode, then the only thing that needs to be switched is the physical input. Is that correct? I assume that the Arduino code will figure out whether to perform the H/W switch first or the S/W switch first.

      • BlogGeanDo
        2011/08/23 at 21:03

        Yes, the Arduino (and code) replaces the uP in the board. In automatic mode you need completely switch in or switch out the signals. With Arduino, you could play some tricks and have more “options” for switching…

  7. 2A3SET
    2011/08/23 at 15:23

    Have you tried sync clock from Musiland instead of 80M onboard clock in Buffalo?

    • BlogGeanDo
      2011/08/23 at 17:04

      No, I have not tried that. In order to do that you need to remove the power to the on-board clock and then feed the Musiland clock (MCK) to the Sabre32 chip (pin 24 I believe). My feeling is that the MCK from the Musiland will not be fast enough to take advantage of the chip oversampling (according to the datasheet, it needs to be > 192fs)
      I think it would be more beneficial to upgrade the clock to 100 Mhz in order to take full advantage of the Sabre chip.

  1. 2011/08/29 at 17:15
  2. 2012/01/30 at 16:45

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

Join 201 other followers