As I have been refining my expectations for this project, I recently evaluated my audio options for my bartop cabinet. Having gone through a few different configurations, I found that there were various pros and cons to each setup that I tried. Even as recently as this week, my plans for how I will deliver audio has changed, yet again. It is worth going over what I had considered as my options, and determining what is actually the best solution for the purpose of this cabinet.
Looking at the Available Options
Out of the box, the Raspberry Pi 3 has two native audio options. The first is digital audio over HDMI, which is fairly standard and a common approach for a lot of people. On the other hand, there is also a 3.5mm audio jack onboard to be considered. Additionally, those looking for other alternatives, can find a large number of solutions, with popular options being USB Audio and Hardware Attached on Top (HATs). Either through completeness or indecisiveness, I have at least tried all of these approaches.
One of the main reasons that HDMI audio is popular is because it just works. There is no fiddling to be had, and there is a clear digital audio signal sent along with the video out. Generally, any attached computer monitor which has speakers will be able to pick up the audio signal. Of the available built-in audio options, HDMI audio has superior quality and the fewest number of external moving parts.
For my project, I only used traditional HDMI audio while I was doing initial setup and before I started using my Dell 1908FB. That monitor does not have HDMI input, so that option fell off of the table rather quickly – at least for a short while.
Pros: Built-in with clear digital audio.
Cons: Requires either a monitor or television with HDMI audio capabilities or an adapter to split the audio out of the signal.
3.5mm Stereo Output
While the Raspberry Pi does have a 3.5mm stereo output (piggybacked with video output), it is the lesser of the two on-board audio options. Like HDMI audio, it works quite well, in terms of ease of use. Unfortunately, though, it suffers greatly in terms of quality. It falls victim to a large amount of interference, presumably from the board, itself. Apart from cracking and popping, an open audio channel will usually provide audible hiss. For the most part, people will search out other options, if HDMI audio does not fit into his or her project over using the 3.5mm stereo output.
Prior to arriving at my final solution, I had used 3.5mm stereo output with both active speakers and open-air headphones. The results were the same in both cases, being that there was a very noticeably lack of quality and, with so much noise present in the output, I would tend to run with the volume turned all the way down. Perhaps the quality is better when using a component out, to go along with the video output. I did not feel compelled to order a specific adapter to just try it out, considering that I already had better options available.
Pros: At least is was free.
Cons: To be avoided, at all costs. The quality is so poor that it makes using this output for any duration of time to become grating.
Raspbian has pretty good support for USB audio, with little to no configuration. The quality falls somewhere between the 3.5mm stereo output and the HDMI output, favoring the higher end of the two. There are some potential issues with audio sync when running a USB audio adapter, but they are exceedingly uncommon. In their most common configurations, most of the USB audio adapters will draw all of their power from a USB port, and offer a 3.5mm stereo output and usually provides a line input for microphone usage.
For a short period of time, I did use a Sabrent USB adapter which I already had on-hand. After plugging in and rebooting, it immediately showed up in alsamixer. Hooking the same active speakers or open air headphones to the 3.5mm of the adapter yielded a listening experience that was very close to the HDMI quality, which is to say that it is entirely adequate for powering active speakers for an arcade cabinet.
Pros: Affordable, easy to configure, and near-HDMI sound quality.
Cons: Loss of a USB port may force usage of a miniature hub.
Source: Amazon · Sabrent USB External Stereo Sound Adapter ($6.99 USD)
The most advanced option would be using a DAC (Digital Audio Encoder). There are several manufacturers of such high-quality HATs, such as IQaudIO, HiFiBerry, and JustBoom. Features will vary, but some HATs will also have built-in amplifiers, as well as extensive pin-outs for adding additional audio components, live volume pots, tone controls, IR receivers, etc. DACs are aimed more at people building personal audio devices, such as portable hi-fi players. For the most part, reputable brands will provide uncompromising audio quality.
My original “final plan” involved using an IQaudIO Pi-DAC+ with an external low-power 2-channel amplifier. Again, setup was extraordinarily easy. The required drivers are a part of the main Raspbian distrobution. Following the very detailed instructions that were available, I disabled my on-board audio, so that only my IQaudIO Pi-DAC+ was visible. This card has both left and right RCA outputs, plus a switched 3.5mm headphone jack. Testing first with my active speakers and open-air headphones provided a very high-end listening experience. Hooking up my amplifier to the HAT provided outstanding sound. With this HAT, in particular, you do lose access to some GPIO pins, as they are reserved for usage by the card. A simple right-angled 2×15 2.54mm pitch pin header can be soldered on to this card to regain access to the remaining GPIO pins.
Pros: Likely, the highest quality audio that can be achieved.
Cons: More expensive and will usually limit the number of remaining GPIO pins available (varying by manufacturer and product, of course). Amplifier required for RCA output, although models with 3.5mm output can use active speakers.
Source: IQaudIO · IQaudIO Pi-DAC+ ($31 USD)
Putting It All Together
From the beginning, my plan was to go with a DAC HAT. The quality of the sound and reasonable price, coupled with not using a speaker with built-in audio made it seem like it would be the best option for my build. I was completely satisfied with the solution, and paired it with an inexpensive amplifier and 3.5″ two-way speakers. It was a bit overkill, in hindsight, but if playing music in the cabinet, it provides a very solid listening experience.
What caused me to change direction was actually due to the fact that I had to find an alternative HDMI to VGA converter, to accommodate for a couple of lemons that I had gotten. In the previous article, Adding a Scanline Generator, I had come up with a solution that I refer to as my “Frankencable”. The HDMI to VGA converter that I ended up going with features 3.5mm audio, culled directly from the HDMI source. Doing a side by side comparison, between the Pi-DAC+ and the UGREEN Active HDMI to VGA Converter hooked up to my amplifier an speakers, the difference between the two was only slight. This has nothing to do with the quality of the Pi-DAC+, but rather that I am pushing audio through a small amplifier and smaller speakers. Another upside to this approach is that I wanted to use a PowerBlock with my Raspberry Pi, so that I could provide a clean power-down/power-up solution. That HAT has a requirement to take the first six pins on the header, which would not have been available to me with the Pi-DAC+. Now that I have freed up those pins, I can easily use that HAT. I will do a write-up on the PowerBlock, once it makes its way to me from Germany.
The one downside to this setup, apart from having a non-utilized Pi-DAC+, is that there is currently a 5V micro USB (Type B) power requirement to push audio out of the HDMI to VGA converter. Right now, this means that I need to either scavenge power from a USB port on the Raspberry Pi or I need to supply power with another power adapter. This problem will eventually rectify itself, however. Since I am planning on using switching power supplies in an enclosure, for both the Raspberry Pi and for the amplifier, I should have adequate power from the 5V rail that will power the Raspberry Pi, itself. All that should be required is that I need to ensure that I can provide proper amperage to provide stability to the Raspberry Pi, on top of the draw that is required by the converter. Unfortunately, I have not been able to find documentation on what the draw is on the converter, as of yet, and have an inquiry in with the manufacturer.
For completeness, the following selections are what I have chosen to go with for my amplifier and speakers, respectively.
- Amplifier: Amazon · Kinter MA-170 2-Channel Handover HI-FI Mini Amplifier ($12.99 USD)
- Speakers: Amazon · Pioneer TS-A878 3-1/2″ 2-Way Speakers ($35 USD)
Now that I have figured out most of the components that will be actively drawing power, up next is most likely going to be the process of starting to figure out the total power utilization of the system, running all components, in an effort to determine what type of power supplies I am going to use and that they safely draw enough current to share common 5V DC, 12V DC, and 120V AC rails, powered by a single circuit. I have no doubt that it will, as the components are already drawing as much power as they will be, through a single surge protector. Of course, whenever dealing with electricity, there is no such thing as “too safe”.