The Raspberry Pi and Teensy 3 both have I2S interfaces, and that means these boards can be used to play very high quality audio. A codec and an I2S interface is one thing, but turning that digital stream into a quality analog output is another thing entirely. You need only look at audiophile forums for enough mis- and disinformation for that evidence.
For his Hackaday Prize entry [William Hollender] is building an audio board for the Teensy 3.x. It features very high-end opamps, the right filters, and the correct topology to turn a digital audio stream into an analog signal that would please the most temperamental ear.
The Teensy Super Audio Board uses the Cirrus CS4272 audio codec chip, a high quality chip that can handle sample rates of up to 192kHz at 24 bit depth. This chip doesn’t include the analog input and output buffers, and this means [William] has quite a build in front of him. This means using high quality opamps, low noise power supplies, and knowing how to build a circuit and measure its noise.
So far, the tests revealed incredible dynamic range, flatness, and frequency response of this tiny little board. It also works with the Raspberry Pi. Now it’s just a matter of getting a few more of these boards put together for the Best Product part of the Hackaday Prize.
[Pat]’s friend got a Pono for Christmas, a digital audio player that prides itself on having the highest fidelity of any music player. It’s a digital audio device designed in hand with [Neil Young], a device that had a six million dollar Kickstarter, and is probably the highest-spec audio device that will be released for the foreseeable future.
The Pono is an interesting device. Where CDs have 16-bit, 44.1 kHz audio, the Pono can play modern lossless formats – up to 24-bit, 192 kHz audio. There will undoubtedly be audiophiles arguing over the merits of higher sampling rates and more bits, but there is one way to make all those arguments moot: building an MP3 player out of an oscilloscope.
Digital audio players are limited by the consumer market; there’s no economical way to put gigasamples per second into a device that will ultimately sell for a few thousand dollars. Oscilloscopes are not built for the consumer market, though, and the ADCs and DACs in a medium-range scope will always be above what a simple audio player can manage.
[Pat] figured the Tektronicx MDO3000 series scope sitting on his bench would be a great way to capture and play music and extremely high bit rates. He recorded a song to memory at a ‘lazy’ 1 Megasample per second through analog channel one. From there, a press of the button made this sample ready for playback (into a cheap, battery-powered speaker, of course).
Of course this entire experiment means nothing. the FLAC format can only handle a sampling rate of up to 655 kilosamples per second. While digital audio formats could theoretically record up to 2.5 Gigasamples per second, the question of ‘why’ would inevitably enter into the minds of audio engineers and anyone with an ounce of sense. Short of recording music from the master tapes or another analog source directly into an oscilloscope, there’s no way to obtain music at this high of a bit rate. It’s just a dumb demonstration, but it is the most expensive MP3 player you can buy.
More and more clubs are going digital. When you go out to hear a band, they’re plugging into an ADC (analog-to-digital converter) box on stage, and the digitized audio data is transmitted to the mixing console over Ethernet. This saves the venue having to run many audio cables over long distances, but it’s a lot harder to hack on. So [Michael] trained popular network analysis tools on his ProCo Momentum gear to see just what the data looks like.
[Michael]’s writeup of the process is a little sparse, but he name-drops all the components you’d need to get the job done. First, he simply looks at the raw data using Wireshark. Once he figured out how the eight channels were split up, he used the command-line version (tshark) and a standard Unix command-line tool (cut) to pull the data apart. Now he’s got a text representation for eight channels of audio data.
Using xxd to convert the data from text to binary, he then played it using sox to see what it sounded like. No dice, yet. After a bit more trial and error, he realized that the data was unsigned, big-endian integers. He tried again, and everything sounded good. Success!
While this is not a complete reverse-engineering tutorial like this one, we think that it hits the high points: using a bunch of the right tools and some good hunches to figure out an obscure protocol.
When it comes to audio effects, you have your delay, reverb, chorus, phasing, and the rest that were derived from strictly analog processes. Compared to the traditional way of doing things, digital audio is relatively new, and there is still untapped potential for new processes and effects. One of those is the bit crusher, an effect that turns 8- or 16-bit audio into mush. [Electronoob] wanted to experiment with bitcrushing, and couldn’t find what he wanted. Undeterred, he built his own.
There are two major effects that are purely in the digital domain. The first is the sample rate reducer. This has a few interesting applications. Because [Shannon] and [Nyquist] say we can only reproduce audio signals less than half of the sample rate; if you run some audio through a sample rate reducer set to 1kHz, it’ll sound like crap, but you’ll also only get bass.
The bitcrusher is a little different. Instead of recording samples of 256 values for 8-bit audio or ~65000 values for 16-bit audio, a one-bit bitcrusher only records one value – on or off. Play it through a speaker at a decent sample rate, and you can still hear it. It sounds like a robotic nightmare, but it’s still there.
[Electronoob] created his bitcrusher purely in software, sending the resulting bitcrushed and much smaller file to an Arduino for playback. Interestingly, he’s also included the ability to downsample audio, giving is project both pure digital effects for the price of one. 1-bit audio is a bit rough on the ears, but 2, 3, and 4-bit audio starts to sound pretty cool, and something that would feel at home in some genres of music.
1994 was twenty years ago. There are people eligible to vote who vaguely remember only one Bush presidency. You can have a conversation with someone born after the millennium, and they think a 3.5 inch disk is called a save icon. Starting to feel old? Don’t worry, all the trinkets of your youth have now become shells for MP3 players, the cassette tape included.
[Britt] is aware you can pick up one of these cassette tape MP3 players through the usual channels, but she wanted her build to be a little different. She’s using ar real, vintage cassette tape for starters, and from the outside, looks pretty much like any other cassette tape: there’s a thin strip of tape at the bottom, and the clear plastic window shows the tape is at the beginning of side A.
Outside appearances are just that; inside, there is a small, repurposed MP3 player, with tact switches wired up to the old buttons, actuated by moving the spools back and forth. Yes, you actually play, pause, rewind and fast forward by sticking a pencil in the spool and moving it back and forth. Amazing.
It’s a great build, and considering both cassette tapes and cheap MP3 players can be found in the trash these days, it’s something that should be hard to replicate.
If you look around a few electronic music forums, you’ll see a lot of confusion over the difference between a bitcrusher – a filter that reduces the bit depth of an audio signal – and a sample rate reducer – a filter that does exactly what its name implies. With the popularization of 8-bit and retro synth music, this difference is obviously of grave import of concern to saints and kings alike. [Michael] is more than happy to walk us through the difference with real-time sample and bit rate adjustment with his audio hacker board.
The audio hacker board is an Arduino shield with a 12-bit DAC and a 12-bit ADC. With two 1/8″ jacks and a pair of pots, [Michael] was easily able to whip up a sketch that is able to adjust the sample rate and bit depth of an audio signal in real-time.
Contrary to nearly everyone’s opinion of what ‘8-bit’ music is, it’s actually the sample rate that makes music sound like a cassette deck jury rigged into a Nintendo Entertainment System. Reducing the bitrate just makes any audio source sound louder and worse.
Check out the excellent demo video of the effect of bitcrushers and sample rate reducers below.
Whether it’s a Furby or Buzz Lightyear’s button that plays, ‘To infinity and beyond’, most digital audio applications inside toys are actually simple affairs. There’s no Arduino and wave shield, and there’s certainly no Raspi streaming audio from the Internet. No, the audio inside most toys are one or two chip devices capable of storing about a minute or so of audio. [makapuf] built an electronic board game for his kids, and in the process decided to add some digital audio. The result is very similar to what you would find in an actual engineered product, and is simple enough to be replicated by just about anyone.
[makapuf]’s game is based on Game of the Goose, only brought into the modern world with electronic talking dice. An ATtiny2313 was chosen for the microcontroller and an AT45D 4 Megabit Flash module provided the storage for 8 bit/8khz audio.
The electronic portion of the game has a few functions. The first is calling out numbers, which is done by playing recordings of [makapuf] reading, ‘one’, ‘two’, ‘three’, … ‘twelve’, ‘thir-‘, ‘teen’ and so on. This data is pumped out over a pin on the ATtiny through a small amplifier and into a speaker. After that, the code is a simple matter of keeping track of where the players are on the board, keeping score, and generating randomish numbers.
It’s an exceptional exercise in engineering, making a quite complicated game with a bare minimum of parts. [makapuf] estimated he spent under $4 in parts, so if you’re looking to add digital audio to a project on the cheap, we can’t imagine doing better.
You can see a video of [makapuf]’s project after the break.