Home > Arduino, Code > Code compatible with Arduino 1.0

Code compatible with Arduino 1.0

I’ve updated the Buffalo Code to make it compatible with Arduino 1.0. Check the code section

NEW SETTINGS

Preceding the sample rate number there is an oversampling indicator

  • Oversampling: (^)
  • Oversampling bypass: (.)

Next to the DPLL setting there is a “mode” indicator

  • Normal: DPLL setting is x1: (NOR)
  • Multiplier: DPLL bandwidth is x128: (MUL)
  • Jitter Eliminator is off: (OFF)

These setting are probably only useful if you use the DAC in synchronous mode (feeding an external clock that is synchronous with the data).

OVERSAMPLING BYPASS ON 80MHZ BUFFALO II

Based on previous experimentation and also as suggested by others, I attempted to turn off oversampling in order to play 352KHz material without the noise problem. I added code to automatically turn off oversampling when high sample rate was detected.

Unfortunately, it didn’t work. Oversampling bypass works 0nly if the incoming sample rate is 384KHz. I simulated this by having the Musiland o3 USB interface do the upsampling (it could have been Quicktime doing it but all I had to do is set the sample rate in the Musiland control panel to 384KHz), and I confirmed the sample rate in the Arduino display.

With incoming sample rate below 384KHz, the following was observed:

  • DPLL locks if there is no music playing. The measured frequency is 64x smaller
  • DPLL is unable to lock if music is playing. When the SR is 352K, it can intermittently lock (very rapid lock/unlock). When the sample rate is 192K or below, there is no music output.

GUI SUMMARY

DISPLAY MODE

The normal mode of operation is the “display mode”. In this mode, moving the rotary encoder only changes the volume level: clockwise increase volume (decreases attenuation); ccw: decreases volume (increases attenuation)

SELECT MODE

To enter select mode, you press down on the rotary encoder (to activate the switch in the rotary encoder). If there is no activity within 4 seconds (adjustable in the code), the code reverts to normal mode.

In select mode, a right pointing arrow indicates which parameter may be changed. Every click of the switch of the rotary encoder switch moves the arrow one position; to change the parameter, rotate the rotary encoder. In this mode the sample rate is NOT updated.

REMOTE CONTROL

  • Button 1: Increase volume
  • Button  3: Decrease volume
  • Button 5: Mute/unmute

The mute function is implemented to kill the volume instantly but softly restore the volume level to the previous setting.

Advertisement
  1. 2012/01/09 at 15:14 | #1

    Thanks so very much for such a quick update! Looking forward to testing it and reporting back :)

  2. Bunpei
    2012/01/11 at 09:25 | #2

    As for OSF Bypass on BII/80MHz, I remember my experience.
    There was no similar problem when I connected I2S output of SDTrans though my experiment was limited to 44.1 – 352.8 kHz.

    • BlogGeanDo
      2012/01/11 at 17:13 | #3

      Hi Bunpei, thanks for your comment. I am not sure what is going on. I’ve tried tweaking other registers such as the turning dpll off, manual relocking the signal and changing to I2S-24bit, but there is no improvement. I wouldn’t think it would be a jitter problem since it plays fine when the sample frequency is 384KHz. The only other factor is that the Musiland sends 32 bit of real data to the DAC…

  3. Bunpei
    2012/01/11 at 22:16 | #4

    How about setting for “I2S” and “S/PDIF Auto-detect”?
    I think explicit setting for I2S, 32bit and disabling “S/PDIF Auto-detect” might be necessary.

    • BlogGeanDo
      2012/01/13 at 06:30 | #5

      I rechecked the register programming and that is how select I2S. Still, no sound. The really strange part is that if sample rate is 384k (Using the OS/Driver upsampler) I get music…

  4. Rodrigo Rocha
    2012/01/12 at 03:24 | #6

    The Hifiduino is compatible with the Buffalo III?

    • BlogGeanDo
      2012/01/12 at 06:24 | #7

      Yes, but you need to know how you are configuring the inputs and outputs because the code assume that the inputs are wired like BII.

  5. Michele
    2012/01/12 at 08:13 | #8

    Hi GLT, which part of code should be modified to use a 2×20 instead 4×20 display?

    • BlogGeanDo
      2012/01/12 at 17:12 | #9

      More code is dedicated to the user interface than to programming the chip. Moving to a 2×20 display will involve a lot of changing.

  1. No trackbacks yet.

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 )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

Join 31 other followers