TFT HiFiDuino v2!

It’s official: Version 2 of the TFT HiFiDuino controller is complete!

There is a number of changes, thus the new version:

  • New minimal display mode as default. Goes into full display when changes are to be made to parameters.
  • Full graphics support in the minimal display.
  • New proportional fonts (TrueType).
  • New IR code. Now supports a much larger range of remote manufacturers.
  • Support of MCP23008 IC to control misc devices.
  • New option to set 0db as default (power-on) volume for connection to a preamp.

The code is (and will remain) compatible with my current shield. (Hint: shield v2 is also coming up!)

New requirements:

Plus the good old UTFT library.

I am including the necessary fonts and bitmaps in the ZIP. The fonts should go into your UTFT & UTFT_DLB directories, usually found in the Windows user’s Documents folders (for example, here: c:\Users\<user name>\Documents\Arduino\libraries\UTFT_DLB\).

The bitmaps should go into your sketch’s folder.

I have included in several places in the code SerialUSB output for debugging purposes. It is commented out in this release for performance purposes. However, it is very easy to re-enable for either debugging or viewing of the IR codes sent to the Arduino. You may use these IR codes to customize the code to support your remote by changing the relevant #define statements in the Remote control definitions section.

Due to code size and performance requirements I’m afraid that from v2 onwards TFT HiFiDuino will only be compatible with the Arduino Due. Sorry, it’s the price to pay for nice graphics. Thankfully, it’s a pretty low price. 😛

You may download it here: TFT_HiFiDuino_v2.xx (14638 downloads ) (Note: As always, the code on this page may not be the current one, i.e. there may be a newer version available. The latest version is always up at the project’s official page.)

I will soon update the code’s official page to v2.

IMG_8600_resize

Deep in House Vol. 6 (December 2014)

Tis the season to be jolly!

Deep in House Vol. 6 (December 2014) by Dimitris Dimitrakoudis on Mixcloud

Tracklist:
1. Dabeull - TR-707
2. Kavinsky - Nightcall (Ardency Remix)
3. Chris Madem - Siren Calling (Original Mix)
4. Pammin-You To Me (Original Mix)
5. Majestique - Must Get There (Dubka Remix)
6. Jazmine Sullivan - Don't Make Me Wait (Deep House Remix)
7. Cristian Poow, Javier Penna - Number One (Original Mix)
8. Flight Facilities feat Jess - Foreign language (Will Saul and Tam Cooper Remix)
9. Bruno Be, Kasual, Ashibah, L.O.O.P - All We Got (Bruno Be Remix)
10. WASABI, Rob Made, Sugar Hill - She Know's (Original Mix)
11. Baby Bash - Suga Suga (Jerry Folk Remix)
12. Psychodelico - Sex On The Phone (Original Mix)
13. Redford & Kyrill feat. Ted Dade - Green & Colors Like It (Original Mix)
14. Claptone, Jaw - Amour Tjs (Original Mix)
15. Eli - Feel The Fire (Original Mix)
16. Matt Meler feat Erin Marshall - I Went Down (Extended Mix)
17. Mousse T, Chew Fu, Steve Clisby - Purple Rain (Mousse T's Home A Lone Mix)
18. Gabe, Volkoder Feat. Ester Azeredo - Sex U (Original Mix)
19. Ashibah, Vintage Culture, Earstrip feat. Ashibah - Sure Thing (Original Mix)
20. Croatia Squad - Milking (Original Mix)
21. Natema - Everybody Does (Original Mix)

Laying out a display is hard work, Part 2

A couple of weeks back I wrote that I was working on the next version of the TFT HiFiDuino code and that I was struggling with its new aesthetic.

I was considering something resembling this: 2014-12-14 21.50.50_resize

But, I did warn you that the final version would probably look nothing like this. I was right.

Two weeks have passed since then and I am very close to a v2 release. The aesthetics are 99% complete and I am just ironing out a few bugs.

This is the final look: IMG_8570_crop_res IMG_8567_crop_res

Stay tuned.. v2 will be out before the end of 2014!

New page: Hypex UcD400HG Power Amplifier

IMG_3839_resize

Back in 2011 I built a 3 channel power amplifier based on Hypex UcD400HG modules and their matching SMPS400 power supplies. It has been my favorite amplifier ever since.

Now it has its own page on my blog, filled with construction details and photos. I have also included the schematic and PCB for the custom AUX power supply that I designed for the UcD400’s input opamp.

Laying out a display is hard work..

..especially if you have almost no technical constraints in what you can implement. It’s only pixels, after all.

Yes, I am talking about a new version of the TFT HiFiDuino code with a new look and feel.

2014-12-14 21.50.50_resize

This of course is very very preliminary, and chances are the final version will look almost nothing like it, but still it will give you an idea as to where I’m going with the design.

The new version will have a minimal main display and only show the good stuff when an adjustment is to be made. The underlying code is nearly complete, but I’m struggling with the aesthetics of the thing.

But in any case, it won’t be long now. 🙂

The Raspberry Pi: Audio out through I2S

There are currently four ways to get audio out of the RPi:

  1. Use the audio out 3.5mm jack. It’s very easy to get it to work, but the sound quality is pretty bad, since it uses PWM to generate the sound. Due to that, its real resolution is in the neighbourhood of 11 bits. We have no use for that.
  2. Use the HDMI port. It works OK, but is useless to us audiophiles.
  3. Use a USB to I2S adapter, such as an Amanero or an XMOS-based device. Now we’re talking. They work quite well, and the quality of the I2S signal is dependent largely on the technology used (CPLD vs. XMOS, etc) as well as the quality of the on-board clocks. The problem is that they add another link to the audio chain, as well as increase the cost. Remember, the RPi is supposed to be a low cost solution.
  4. Use the GPIO pins of the RPi to get direct I2S output. This sounds way more interesting, right? Let’s try that!

According to several sources on the Net, this is the pin out:

Raspberry_Pi_B_Plus_I2S_out

You will probably notice that the RPi does not support MCLK output. This means in practice that your DAC will need to have its own on-board clock (or internal PLL / oscillator or whatever). We can live with that.

Luckily, my Buffalo III has its own clock (of course it does!) and thus can be connected quite easily. Let’s try that:

IMG_8297_resize

Now we have to configure the software for I2S output. For my distribution of choice, Archphile, it’s a piece of cake: http://archphile.org/howto/i2s-dacs-and-the-raspberry-pi/

Audio playback works just fine!

Well, almost fine..

You see, in theory the RPi has a bit of a problem with its I2S output. Since the only clock onboard the RPi is a 19.2MHz crystal, it should have trouble generating proper clocks for its I2S output. For example, for 44.1KHz audio, the LR Clock must be running at precisely 44.1KHz. That is not possible, since the frequency is not a multiple of 19.2MHz. Thus, the frequency can be either 19.200.000 / 435 = 44.138KHz or 19.200.000 / 436 = 44.0366KHz. This is a limitation of the Broadcom BCM2835 in conjunction with the 19.2MHz crystal and there is nothing that can be done.

In order to confirm the theory, I decided to run a few tests. I hooked up my logic analyzer to my RPi, set it up for I2S output, and fed it some 44.1KHz music.

IMG_8453_crop_resize

I took 1 sec worth of samples with my logic analyzer, configuring it for I2S signal. I got this:

logic analyzer 4

The PCM Clock is already appearing a little dodgy. Let’s zoom in:

logic analyzer 5

logic analyzer 6

As you can see, the pulses do not have the same duration. They appear to alternate between two values. So it is obvious that the signal has jitter. A lot of jitter. Since we’re here, let’s have a look at the LR Clock signal as well:

logic analyzer 7

logic analyzer 8

The duration of the pulses appears to alternate between 11.33μS and 11.38μS, giving respectively 44.12KHz and 44.04KHz, values very close to the ones I calculated previously.

So, the theory is sound and the RPi’s clock is not up to snuff by strict standards. What this means is that the RPi’s I2S output is not capable of “Hi End” audio transmission. It is essentially not bit perfect (edit: this is not correct, strictly speaking. It is in fact bit perfect, it is just not “proper”.).

In the real world, chances are that this problematic clocking will not be particularly audible under normal circumstances, say with a normal-specc’ed sound system. But an audiophile should definitely steer clear of the RPi’s I2S output, instead opting for a USB to I2S interface.

The Raspberry Pi: Low cost music streamer

Enter the Raspberry Pi B+:

Raspberry Pi B+

It features:

  • A Broadcom BCM2835 SoC processor running at 700MHz
  • 512MB of RAM
  • A Micro SD slot for storage
  • A 10/100Mbps Ethernet port
  • 4 x USB2.0 ports
  • An HDMI output port
  • An analog audio / composite video output port
  • A 40-pin expansion header, exposing 26 x GPIO ports
  • A camera and a display interface port

Somehow they have managed to cram all that in an almost credit-card sized PCB.

And it costs less than 40€.

It runs Linux (of course..). There is a large number of general-purpose distributions available, as well as a few custom built ones. One of them is Openelec (an XBMC Media Center distro), another one is Volumio (an audiophile music player), a third one is SqueezePlug (it emulates a number of Media Servers, like Logitech Media Server, MediaTomb, MiniDLNA, etc. It also works as a Squeezebox (client)), etc.

So far, my favorite distribution is Archphile, an audiophile linux distribution. It may not have the polished look of Volumio or play 1080p video like Openelec, but is plays music wonderfully through a USB port (or through I2S if you are more of a DIYer).

So, what am I doing with it? I wanted to put a music streamer in my kitchen. I already have two Squeezeboxes in other rooms, so for the kitchen I thought I would try something more interesting.

But along the way, I discovered that it is a lot more useful than that. A very useful (and very rare) feature it has is the ability to bitstream DSD audio (a.k.a. SACDs):

RPi outputting DSD to Buffalo DAC

Raspberry Pi B+ outputting DSD to my Buffalo DAC

So now I’m considering adding an RPi network music transport to my main system.

Synology DSM 5.1 now supports Amanero!

First, a little background info.

Synology makes great NAS products. They are user friendly, fast, and multimedia oriented.

A little known feature of said products is that they support direct connection to USB enabled DACs. All you have to do is connect your DAC to your NAS with a USB cable, fire up Audio Station and tick the box for USB Speakers:

USB-Audio-out-1

Now you have a new output device, called USB Speakers:

USB-Audio-out-2

You just select that and now your Synology plays through your USB DAC. It’s that simple.

Now, this feature has been available for quite some time, so why am I making such a fuss about it now? It’s simple: Synology just started supporting my favorite USB-to-I2S interfacing board, the Amanero.

So, if you have an Amanero and a Synology NAS, just upgrade your DSM to 5.1 and enjoy full compatibility!

DS211j with Buffalo DAC

Deep in House Vol. 5 (October 2014)

Though it may be autumn, the weather is still fine, so here is another uplifting mix. Enjoy!

Deep in House Vol. 5 (October 2014) by Dimitris Dimitrakoudis on Mixcloud

Tracklist:
1. Feder feat. Lyse - Goodbye (Original Mix)
2. Disciples - They Don't Know (Original Mix)
3. Hodgson - Babylon System (Original Mix)
4. Grades - Owe It To Yourself
5. Kadebostany - Castle In The Snow (Hector Extended Remix)
6. Matvey Emerson Ft. Leusin - Fall For Your Type (Original Mix)
7. Paul Richmond - Commitment (Original Mix)
8. Touch & Go - Opposites Attract (Original Mix)
9. Giom feat. Apple Rochez - Dr Zapp (Original Mix)
10. Matvey Emerson - Run Away (Original mix)
11. Edu Imbernon, Los Suruba, Daniel Wilde - Leopard (Boy Next Door Remix)
12. Eli And Fur - You're So High (Original Mix)
13. Mahmut Orhan, Deeperise - It's Time Tonight (Tosel & Hale Remix)
14. Patrick Podage - Take Me There (Original Mix)
15. Emma Hewitt - Crucify (Bentley Grey Nu Disco Remix)
16. Tosel - Miles Away (Mark Lower Remix)
17. Artem Rubtsov, JetLoud feat. Cotry - All I See Is You (Aerobatics Remix)

@ the Beach Bar, Vol. 5

And hot on the heels of @ the Beach Bar, Vol. 4, this is Volume 5!

Enjoy..

@ the Beach Bar Vol. 5 (August 2014) by Dimitris Dimitrakoudis on Mixcloud

Tracklist:
1. Rufus - Sundream (Claptone Remix)
2. Gorgon City ft. Liv - No More (Original mix)
3. Kovary - Tear It Down (Original Mix)
4. U2 - Ordinary Love (Pretty Pink Remix)
5. Nick Kech feat. Madilyn Bailey - The Moment (Bootleg Edit)
6. Crocy Feat. Ashley Berndt - Cry
7. Klaxons - There Is No Other Time
8. Mike Metro ft. Simon Milan - The Revelator (Original Mix)
9. Gorgon City - Ready For You Love (Club Mix)
10. Croatia Squad - Pop Your Pussy (Original Mix)
11. Destructo feat. YG - Party Up (Extended Edit)
12. Klingande - Jubel (Kant Remix)
13. Pharrell Williams - Happy (Pretty Pink Remix)
14. Dino MFU & Slick Beats Feat. Justin Taylor - Little Girl Eyes (Original Mix)
15. Lilly Wood & The Prick - Prayer In C (Robin Schulz Remix)
16. Samuele Sartini - You're No Good for Me (Original Mix)
17. Pao, Saccao - Come Back Home feat. JazzyFunk (Vintage Culture Remix)
18. Krono feat. VanJess - Redlight (Pretty Pink Remix)
19. Roger Sanchez - Lost (D-Trax & Dimitri Valeff Remix)
20. FAUL - Changes (Pretty Pink Remix)
21. Robin Schulz - Sunset (Original Mix)
22. Christos Fourkis - Live Before I Leave