close-circle
Close
0%
0%

BeagleBone Multi-Channel Audio Card - CTAG face2|4

Open Source audio system based on BeagleBone and AD1938 audio codec with 2 stereo inputs and 4 stereo outputs (24ch BEAST coming soon)

Similar projects worth following
close
Open platform for DIY audio projects, such as effect devices for musicians. The audio system offers 2 x 24 Bit stereo ADCs, 4 x 24 Bit stereo DACs with sample rates up to 192 kHz. First production series has started. A new version (CTAG Beast) offering 24 channels (8 in / 16 Out) in total is coming soon! For more information about production and other topics, please check out the project logs or send me a private message on Hackaday.

Features:

  • 2 stereo ADCs and 4 stereo DACs
  • Up to 96 kHz sampling rate with 8 audio channels (up to 192 kHz with 4 channels)
  • 24 Bit word width
  • Separate interfaces to ADCs and DACs
  • Asynchronous sampling rates for playback and capture (in new version only synchronous)
  • Up to 3,2 ms round-trip-time (measured with oscilloscope)
  • Mobile usage (the Beaglebone Green and the CTAG face2|4 Audio Card both are supplied with 5V supply voltage)

Project Components / Source Locations:

  • CTAG face 2|4 at Github, I2S sound card based on AD1938 audio codec by Analog Devices Inc. and designed by CTAG FH-Kiel (repo contains hardware design files, docs and device tree overlays)
  • BeagleBoard Linux (soundcard drivers were merged in upstream BeagleBoard kernel => included in official BeagleBoard SD card images by default)
  • Adapter card “bbg-cape” to connect the BeagleBone Black/Green with I2S sound card, see Github repo above (not needed for new version)
  • Adapter card “con-cape” with stereo jacks and headphone amplifier, not yet published due to some bugs (not needed for new version)
  • BASH script for automatic evaluation of latency, THD, THD+N, DNR, crosstalk and plot of magnitude spectrum using GNU Octave (included in SD-Card image and available on GitHub)
  • Surround-Delay audio effect for demonstration based on C++ Library DSPatch
  • Debian Wheezy SD card image for BeagleBone Green, including evaluation script, demos and several audio tools (e.g. JACK, Pure Data, SuperCollider, ...)
  • Documentation / Thesis (German)

Applications:

  • Mobile sound studio (simultaneously record several inputs with different audio effects applied and preview them on different outputs in real time)
  • Effect device for various music instruments
  • Open platform for DIY audio projects
  • DIY Eurorack modules

The full website article with detailed audio system characteristics is published here.

Anybody who's interested in the first boards available for shipping, please send me a private message. Questions and feedback is welcome!

  • 1 × AD1938 Audio Codec by Analog Devices Inc.
  • 1 × BeagleBone Black/Green Single Board Computer based on TI AM335X single core SoC

  • First production series started!

    Henrik Langer04/04/2017 at 10:45 0 comments

    We just started our first production series in small quantities. Due to still remaining issues with the Beast (prototypes work fine, but newer versions still have bugs), we decided to produce the face2|4 only at first. The face2|4 can be directly stacked on the BBB or BBG without any additional hardware. The drivers are already merged in the BeagleBoard.org kernel and are included in the default debian images for BeagleBone. Please send me a message with your name and desired units, if you are interested.

  • Upcoming: The Beast - Massive 24 Channel Audio

    Henrik Langer02/01/2017 at 16:20 0 comments

    After some hard work of board redesign and driver modifications, we finally got our 24 channel modular BEAST to work. The system offers 8 input channels and 16 output channels by daisy chaining two AD1938 audio codecs. The soundcard was shrunk to the same form factor as the BeagleBone Black/Green, thus can be directly stacked as cape on the BBB/BBG without needing an additional adapter board. Moreover the soundcard can still be used only with 8 output channels and 4 input channels like the old version. Currently, we are in the final phase of hardware design and driver development fixing the last bugs for stable operation. An image is given in the project pictures. Driver development takes place here (still experimental). In the future we want to produce a small series of the CTAG Beast. If you are interested in the first series, feel free to write me a personal message, so we can better estimate the units. More information coming soon!

  • Google Summer of Code participation to improve CTAG face2|4 Audio System

    Henrik Langer08/22/2016 at 13:12 0 comments

    This year I participated in Google Summer of Code to improve our audio system. The CTAG face2|4 Audio Card driver has been successfully ported to BeagleBoard-X15 (dual core TI AM5728) and is backwards compatible with BeagleBone Black/Green. Moreover an user-space library has been created to offload typical signal operations (FFT, IFFT, filter) to C66x DSPs (integrated in AM5728). The full project documentation is available on GitHub.

  • Updated SD-Card Image

    Henrik Langer03/06/2016 at 00:10 0 comments

    The new SD-Card image includes the most recent version of JACK and SuperCollider.

    Moreover we've created a script to automatically start JACK and SCSYNTH (SuperCollider server).

    -> You can create your own synthesizers or effects with SuperCollider on your local PC and run them on our audio system via network.

  • More powerful SBC

    Henrik Langer02/16/2016 at 13:33 2 comments

    We're looking for a low cost SBC with a more powerful CPU and multichannel I2S port (e.g. Freescale i.MX series or TI AM5728) to achieve a lower latency and implement more complex audio effects or synthesizers. The Allwinner SoCs seem to be a good choice, too. Unfortunately the ASoC platform driver for the Enhanced Serial Audio Interface (ESAI) of Allwinner SoCs only support 2 audio channels. We appreciate any suggestions.

  • Linux USB audio gadget (please help!)

    Henrik Langer02/16/2016 at 12:23 2 comments

    Currently, I'm trying to use the Linux built-in USB audio gadget kernel module. If it works, the audio system could be used as an external USB audio device on several operating systems as well. If anybody has experience with this subject, I appreciate your support:)

View all 6 project logs

  • 1
    Step 1

    Build instructions can be found here.

View all instructions

Enjoy this project?

Share

Discussions

Chris wrote 03/25/2017 at 02:32 point

This project is really well done, congrats!  I was going to try it out but it looks like the AD1938 is getting harder to find, Mouser has stopped stocking it altogether and Digikey only has 25.  The AD1939 has nearly identical specs and pins but has a different footprint.  Do you think that would work without driver modification?

  Are you sure? yes | no

Henrik Langer wrote 05/16/2017 at 15:39 point

Hi Chris,

Thanks! Yes, it should work without any driver modifications.

  Are you sure? yes | no

pablo_f_7 wrote 01/28/2017 at 16:01 point

Hi Henrik:

I'm working in a very similar project for my degree thesis, with a mini DAW application for multitrack recording running in beaglebone black, with PCM3168 codec. The problem i'm having is that the whole system has too much latency. From input to output i measure arround 27ms. Did you have to do some extra configuration in linux kernel to achieve low latency?

Thanks 

  Are you sure? yes | no

Henrik Langer wrote 02/02/2017 at 09:11 point

Hi Pablo, no, we use the official BeagleBoard kernel with realtime patch. We achieved a latency under stress about 5ms.

  Are you sure? yes | no

pablo_f_7 wrote 04/08/2017 at 23:11 point

Hi Henrik:

I've already presented my project, but i could not manage to achieve that low latency. That may be because i used buildroot instead of official OS. I didn't want to change it before because i feared something would stop working... Now i'm ready to do it! Could you tell me where to download the real time patch you used for the project? Selecting preemptive kernel from menuconfig seems not beeing enough..

Thanks in advance

  Are you sure? yes | no

Henrik Langer wrote 04/10/2017 at 09:21 point

Hi Pablo,

You can use the official BeagleBoard Debian SD card images. The driver is already included and the kernel uses PREEMPT_RT scheduler mode by default.

  Are you sure? yes | no

Andrius Sidaravicius wrote 01/16/2017 at 13:57 point

Hi Henrik.

Project interesting.

It is very difficult to adapt drivers for another ADC converter to work with beaglebone black?
I want use stereo HQ ADC with 24/192 sample rate. 

Thank you.

  Are you sure? yes | no

Henrik Langer wrote 02/02/2017 at 09:12 point

Hi Andrius, if you want to user another codec, you have to write a new driver.

  Are you sure? yes | no

Alessandro Ferri wrote 12/14/2016 at 18:16 point

Hi Henrik,

I have designed a soundcard with ad1938 chip on the base of a HAT for Raspberry. I would use it on a raspberry Pi2 or Pi3 and I would ask for your help to build the driver for device-tree-overlays for raspberry with RASPBIAN JESSIE, if is it possible. Please can you help me, I have not found anything about it.

  Are you sure? yes | no

Guy Sherman wrote 11/08/2016 at 21:28 point

Is this system full duplex? Also, I assume that if JACK works then netjack will work as well?

  Are you sure? yes | no

Henrik Langer wrote 02/02/2017 at 09:08 point

Hi Guy Sherman, yes, the system is fully duplex and netjack works as well.

  Are you sure? yes | no

Alessandro Ferri wrote 10/27/2016 at 18:03 point

Hi Henrik,

after searching for so long, finally I found a ADC project very promising. I use a Raspberry with a Cirrus Logic Audio Card. I must say that it works very well, but I would like to try your soundcard CTAG face2|4. The CTAG face2|4 works well with a raspberry RPi3? and  has never been tested?
I would like to hear your response.

  Are you sure? yes | no

Henrik Langer wrote 10/28/2016 at 05:32 point

Hi Alessandro, 

do you use the CS4272 codec? Unfortunately the digital audio interface of all RPis only supports 2 audio channels due to hardware restrictions (no TDM mode). Therefore our sound card can only be used with 2 active audio channels on the RPi (tested).

  Are you sure? yes | no

Alessandro Ferri wrote 10/29/2016 at 11:14 point

Thank you for your answer. I mean, you tell me better. Right now I use only the Cirrus Logic Audio Card to an audio input on two channels on the input 3.5mm  jack. I do not use it as a DAC, but only as an ADC. What is different about your sound card, to use that interests me?

  Are you sure? yes | no

Henrik Langer wrote 11/01/2016 at 12:12 point

Hi Alessandro, what do you mean with difference? You use a audio card which is connected to the digital (PCM) audio interface of RPi. Our audio card is connected to the PCM interface as well. The PCM interface of RPi only supports two audio channels (see BCM2835 peripherals datasheet p. 119  (https://github.com/raspberrypi/documentation/blob/master/hardware/raspberrypi/bcm2835/BCM2835-ARM-Peripherals.pdf)). So you can use only two audio channels simultaneously (in and out).

  Are you sure? yes | no

Thorsten Kluss wrote 03/15/2016 at 17:52 point

I am currently working on a sensor system to monitor beehives. For this, I need 4 audio channels (since I am using a spatial acoustic model for the evaluation). Ì don't need any output channels. Would a version of your system with only 4 Audio Inputs in general work with a raspberry pi? 

  Are you sure? yes | no

Henrik Langer wrote 03/15/2016 at 19:21 point

Unfortunately the Raspberry Pi only supports 2 audio channels due to its digital audio interface (I2S / PCM). We've created a driver for it, but it only supports stereo i/o.

  Are you sure? yes | no

Thorsten Kluss wrote 03/16/2016 at 11:03 point

Thanks a lot for the quick reply. That's what I suspected.

  Are you sure? yes | no

Thorsten Kluss wrote 03/16/2016 at 11:06 point

Anyway, your multichannel audio system is supercool. I will definitely use one at home! Thanks!

  Are you sure? yes | no

xnor wrote 03/01/2016 at 23:50 point

I'm curious if these are AC or DC coupled? DC coupled would let me use them for CV i/o as well...

  Are you sure? yes | no

Adam Avramov wrote 02/15/2016 at 11:23 point

Does this work with JACK Audio Connection Kit?

  Are you sure? yes | no

Henrik Langer wrote 02/15/2016 at 12:13 point

We haven't tested JACK yet, but there's a step-by-step guide how to compile JACK and SuperCollider on the BeagleBone Black/Green: https://supercollider.github.io/development/building-beagleboneblack.html

Our soundcard can be interfaced as an usual ALSA soundcard with 1 subdevice and 4 input/8 output channels, so it should work.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates