Multichannel Audio DSP Field Mixer Recorder

USBmidi, bluetooth app controll 8 chan portable DSP mixer.balanced audio IO,phantom power,flexible routing,ISO recording. networked Timecode

Public Chat
Similar projects worth following
Multichannel Professional Balanced Audio IO and Digital 196khz 24bit Field Recorder fully, waterproof & Backpackable!

It will include balanced audio IO on XLR and miniXLR with phantom power.
flexible routing from 8 or more pre-amp inputs
Digital Audio IO

4 channel Balanced Master outputs
2 x Stereo Headphone outputs ( individual mix bus )

The mixer will have no screen or knobs.
USB midi knob controller interface.
Bluetooth controlls preamp gains DSP fx mixing ( routing )

Record individual ISO tracks and mixed tracks.
VU / ppm meters of each track and mix on low power screen or glasses??
EPROM to store learned control suface maps / templates
GPS UTC time and LTC timecode share over wifi
SDR multichannel radio mic reciever and uplink to cameras.

List of things that will hopefully never be included !

Complex menu system / screen for operation
extra weight.

Version 2 parts soldered :)

more powerful DSP and ARM + memory ( underside )

ADC and DAC cards are now plugin BUSA & BUSB

On board ARM debugger on underside of board.

only 1 x uSD card because I ran out of DMA capable pins on the STM32F7

but have since discovered if I use a different revision of the chip without DSI

there are more pins available for second uSD card for recording redundancy.


SPI is for analogue pre-amp control

BT for BT module

I am now working on DSP mixer design for new DSP chip & firmware

to be done:

redesign analogue back plane for pre amps and driver cards

design the AES3 IO card option

think about what kind of file system I should use for recording. currently FAT


PROTOTYPE 1 below here....

Its Alive !!! here's the 1st test recording :)

Its just 48khz 16bit stereo WAV. There are jumps from incorrect clock timing and there is noise !!

BUT its the 1st recording :):):)

Soon it will be 8 channel WAV poly and 4 stereo mix tracks recording !!!

The bluetooth App does a lot more now also.

Need to get the LIBltc in there soon and try and add timecode.

I've moved on to using cards now on a back plane.

these pictures should speak for themselves :)

rev 1

messy box of wires !

rev 1power use for 6 channels , don't forget its +/5v so double this figure

8 channel differntial analogue IO

16 digital audio channel serial I2S TDM IO


8 channel digitally controlled Pre Amp with Phantom power

2 x high end headphone monitoring outputs on individual mix bus.

DSP mixing, mix routing and soft knee compression filters EQ filters and effects etc.

All pre and post mix faders controlled over Arduino USB midi and blutooth app.

Shared Master clock over fanout buffer ( low jitter )

Its working :)

To be Done:

Multi channel audio recording on Arduino Due from I2S / DSD or TDM from DSP.

Timecode IO ports to the Arduino Due codec ( still to be working in my other Timecode project.

External Bluetooth controlled app and Glasses integration. ( This mixer will not have a screen )

Testing here the 4 channel digital controlled preamp pcb with Arduino USB midi control.

Also Testing of:

8 channel DAC controlled with the Novation Lauch Control USBmidi control surface.

code is here

I used the example software controled wiring diagram in the CS4385 datasheet and the DAC is very quiet adter boot. I need to figure out mutec pins etc ..

I use digital PIN 2 on arduino to make RST pin high to initialize the DAC.

the DAC takes the 5v from arduino or 3.3v from DUE etc just supply correct voltage to digital interface power on DAC.

I used these libraryss for USBhost and USBmidi.

the required USBhost version 2.0 library

the required USBH_midi library by Yuuichi

  • 1 × ADAU1467 Semiconductors and Integrated Circuits / Misc. Semiconductors and Integrated Circuits
  • 1 × ARM STM32F7
  • 1 × Fan out Buffer
  • 1 × 24.576mhz oscilator
  • 1 × CS4385 Audio ICs / Audio Digital to Analog Converters (DACs)

View all 9 components

  • new 4 layer mainboard

    ben biles11/20/2018 at 17:18 0 comments

    Version 2 parts soldered :)

    more powerful DSP and ARM + memory ( underside )

    ADC and DAC cards are now plugin BUSA & BUSB

    On board ARM debugger on underside of board.

    only 1 x uSD card because I ran out of DMA capable pins on the STM32F7

    but have since discovered if I use a different revision of the chip without DSI

    there are more pins available for second uSD card for recording redundancy.


    SPI is for analogue pre-amp control

    BT for BT module

    I am now working on DSP mixer design for new DSP chip & firmware

    to be done:

    redesign analogue back plane for pre amps and driver cards

    design the AES3 IO card option

    think about what kind of file system I should use for recording. currently FAT

  • new digital board arived :)

    ben biles09/04/2018 at 08:03 0 comments

    Just got my new 4 layer board and 2 layer daughter cards. I need to make a new analogue IO board to but will have to use

    my old one for now.

    I decided to be brave and add the stm32f7 micro and programmer on the underside. I also included DRAM !

    I'm not sure I'll use the JTAG or not. I have a micro usb port hooked up to an STM style serial programmer.

    There should be 2 x uSD cards slots but I didn't appear to have DMA capable pins left on the micro to accommodate that.

    I have broken all the spare micro pins out so maybe i will find a way to make the redundant file storage work.

    I didn't bother with a usb host controller to simplify the design.

    I kept all the parts to 0603 and avoided BGA

    The DSP and QSPI flash are QFN style though.

    I'm using a 10 channel fan out clock buffer U5 for 24.576mhz. the ARM micro can generate this but using the external clock

    I can hopefully keep clock jitter to a minimum.

    As you can probably see in pic there a ton of vias ! The DRAM chip is under the micro and there seams to be no good

    way to wire up RAM to a stm32f7 !

    Each trace has only 1 via from micro to dram. Its not running to fast so hopefully it will work.

    The Daughter boards are spit plane and analogue power / GND will come from the analogue connector IO side

    I don't really need 32 channels of balanced analogue audio IO !

    I may well make BUSIO_B a digital IO board !

    I was thinking of AES3 or maybe even something like DANTE

    There's a bluetooth module header and SPI header that runs to the analogue board for digital gain etc.

    I've ordered the parts. the NOR flash qspi chip was near impossible to get , I got some samples on way. 20 week lead time!

    Might need to try and change that part to something less difficult to obtain on the next revision.

    I should have enough power for all the IC's including the digital side of the ADC's and DAC's.

    Lets hope I haven't made to many mistakes and its usable :) I'll be happy to bin the old proto board that didn't even have

    power or ground planes :)

  • 8 channels looking good

    ben biles07/24/2018 at 10:51 0 comments

    Its just all the same microphone signal coming through the DSP at slightly different mix levels.

    Its not perfect , a couple of really small glitches near the beginning of the recording.

    Going for perfect here so will have to find out what that is ! The TDM8 clk 12.288mhz and FS are just going down

    jumper wires and are patched into a scope , so probably not helping at all!

    I scrapped the TS screen now and start recording with the bluetooth app.

    after i finish 24bit & 32bit  I will move onto sending the realtime recording data back to the app including nearly real time audio meters from the DSP to the app.

    I'm going to unscrew / disconnect the screen now, waste of space :)

  • 8 channel wav poly recording working

    ben biles07/24/2018 at 00:38 0 comments

    8 channel wav poly 16bit recording is working in TDM8 mode !!!!!!!

    no 24bit or 32bit yet but I can see how to make that work now. Its a question of making the SAI port 32bit , then the buffer and DMA channel 32bit ( WORD )

    Its been interesting to work on. There is no timing as such in the application. the data just comes in over DMA and is dumped into a file.

    Its the PCM wav record format header that describes channel count , bit rate , sample rate.

    I thin the player might be more complex as it has to read the WAV file header and then playback in appropiate sample rate bitrate etc

    There is the odd click and glitch in the recording , so I'm going to play about with buffer sizes and DMA priority etc until I

    smooth out those problems then I'll add 24 and 32bit capability.

    I'll need to go to TDM16 also to record the mix track as well as the independent channels.

    I'm not sure where the transfer speed limit of usb host is but stm32f7 supports high speed , so the limit might the usb stick itself.

    8 channels of 16bit audio

    8 channels 16bit mono
    48000 x 16 bytes
    768kBsec x 30 seconds =  23040000 bytes , ADD 44 bytes for the WAV header = 23040044 bytes 30 sec

    the minimum i need will be around double that in 24bit mode and including a 2 channel mix track
    Should be ok , its under 3MByte/sec write speed.

    I haven't really thought about a playback ( review ) and how to do that . I suppose could just pipe the 8 channels back into the DSP mixer so you can preview any recorded channel or the mix. not really sure yet. I could have a kind of mix playback mode..

    The recorder / player commands just about work in the bluetooth app. I should disable the TS/screen soon though as it could be the cause of the small glitches in the recording. really I need to send some data back to the bluetooth app suck as record time player recorder app state etc.

  • 8 channel wav poly recording

    ben biles06/26/2018 at 06:07 0 comments

    The recorder app now records 8 channel WavPoly with a perfect mono of my microphone input on one channel.

    There's is some nasty digital noise on two other channels so I don't think I'm there yet !

    I'm getting the correct  12.288mhz SK clock and 48khz FS.

    The 12.288mhz / 48khz should clock in the data at the correct speed for the recording.

    It could be that although I've selected 16bit slots on the DSP that the adau1446 is sending it in 24bit slots anyway.

    I'm going to figure out TDM8 then try TDM16. I need to record 8 ISO tracks and 2 stereo mix tracks simultaneously.

    Then I need to work on unlimited recording time. It could be as simple as changing the record time variable in the app to a massive for now !  If I hit stop on the app the play closes the file properly.

    then its look at 24 bit mode.

    playback does not support 24 or 32 bit yet. I might need to get the DMA to split 32bit into 2 x 16bit for DMA. not sure DMA supports 32bit buffer samples data or not. more reading to do on stm32f7 DMA!

  • Its Alive !!!!!!!!! :):)

    ben biles06/21/2018 at 13:58 0 comments

    The 1st test recording is here ! 16bits 2 channel recording from the master mix output. Sorry about the tired voice !

    I had a few hours tough programing to make this work and was completely tired by the time I got it working!

    You can here some audio click / jumps. This is because the ARM is master and generating its own clock with

    the DSP in slave mode to it. The ADAU1446 doesn't have any ASRCs to sync the 2 clocks and doesn't like the clock mismatch :)

    I had to battle with re-assigning SAI ( serial audio interface) pins on the stm32f7 demo board. I only have one SD pin available

    on SAI_block_B and have to switch between player and recorder mode using the one SD pin and sharing the rest for FS and CLK.

    I think I can can get 16 channels IO this way in TDM though so it should be enough for testing. Although it will be 16 channels in or out and not both at the same time ! or maybe they can be clocked in and out at the same time , not sure.

    The next job is to get the SAI interface working in Slave RX TX Synchronious to the DSP MCLK then the whole system will be running off

    the one high quality clock / fan out buffer. I already have the DSP setup for ISO recording.

    I think after that my next coding headache will come from writing WAV poly. 8 channel WAV audio PCM files.

    I will need to look up the spec of them and see how they are made. hopfully I can just write the TDM in slots and define in the header

    in some kind of PCM descriptor ? anyone already know the answer? would be really helpful :)

  • C++ STM32f7 audio recorder application demo code

    ben biles05/11/2018 at 14:31 0 comments

    I started to modify ARM stm32f7 demo audio recorder / playback application.

    I'm going to connect TDM8 channels to the SAI on the ARM demo board.

    The demo code is horrible for me. its a forest of board support packages BSP's and HAL's. I'm sure in a way its over complicating the basic idea that the SAI stream will be copied using DMA to the circular buffer. then when the buffer is half full the data is written to the USB stick ?! 

    I'm thinking there does't need to be any timing as the data is just dumped onto the stick as a file as it comes in. I'm hoping there is a way to append data to the file on the stick rather than determining the audio record time as in the demo!

                              USER SAI defines parameters
    /** CODEC_AudioFrame_SLOT_TDMMode In W8994 codec the Audio frame contains 4 slots : TDM Mode
      * TDM format :
      * +------------------|------------------|--------------------|-------------------+ 
      * | CODEC_SLOT0 Left | CODEC_SLOT1 Left | CODEC_SLOT0 Right  | CODEC_SLOT1 Right |
      * +------------------------------------------------------------------------------+
    /* To have 2 separate audio stream in Both headphone and speaker the 4 slot must be activated */
    /* To have an audio stream in headphone only SAI Slot 0 and Slot 2 must be activated */ 
    #define CODEC_AUDIOFRAME_SLOT_02                     SAI_SLOTACTIVE_0 | SAI_SLOTACTIVE_2 
    /* To have an audio stream in speaker only SAI Slot 1 and Slot 3 must be activated */ 
    #define CODEC_AUDIOFRAME_SLOT_13                     SAI_SLOTACTIVE_1 | SAI_SLOTACTIVE_3
    /////////    ben tries to add arduino header SAI1_Block_B , no idea if this will work !
    /////////    arduino header example I found used same defines as the onboard DAC
    //configure SAI1 for Arduino header
    #define AUDIO_OUT_SAIx                           SAI1_Block_A
    #define AUDIO_OUT_SAIx_CLK_ENABLE()              __HAL_RCC_SAI1_CLK_ENABLE()
    #define AUDIO_OUT_SAIx_CLK_DISABLE()             __HAL_RCC_SAI1_CLK_DISABLE()
    #define AUDIO_OUT_SAIx_AF                        GPIO_AF6_SAI1
    #define AUDIO_OUT_SAIx_MCLK_GPIO_PORT            GPIOF
    #define AUDIO_OUT_SAIx_MCLK_PIN                  GPIO_PIN_7 //PF7  MCLK
    #define AUDIO_OUT_SAIx_FS_PIN                    GPIO_PIN_9 //  PF9  LRCK
    #define AUDIO_OUT_SAIx_SCK_PIN                   GPIO_PIN_8  // PF8  BCK
    #define AUDIO_OUT_SAIx_SD_PIN                    GPIO_PIN_6  // PF6  DATA
    /* SAI DMA Stream definitions */
    #define AUDIO_OUT_SAIx_DMAx_STREAM               DMA2_Stream1
    #define AUDIO_OUT_SAIx_DMAx_CHANNEL              DMA_CHANNEL_0
    #define AUDIO_OUT_SAIx_DMAx_IRQ                  DMA2_Stream1_IRQn
    #define DMA_MAX_SZE                              0xFFFF
    #define AUDIO_OUT_SAIx_DMAx_IRQHandler           DMA2_Stream1_IRQHandler
    /* Select the interrupt preemption priority and subpriority for the DMA interrupt */
    #define AUDIO_OUT_IRQ_PREPRIO                    ((uint32_t)0x0E) 
    ///////  end ben tried to add SAI1_Block_A
                            AUDIO IN CONFIGURATION
    /* SAI peripheral configuration defines */
    #define AUDIO_IN_SAIx                           SAI1_Block_B
    #define AUDIO_IN_SAIx_CLK_ENABLE()              __HAL_RCC_SAI1_CLK_ENABLE()
    #define AUDIO_IN_SAIx_CLK_DISABLE()             __HAL_RCC_SAI1_CLK_DISABLE()
    #define AUDIO_IN_SAIx_AF                        GPIO_AF6_SAI1
    #define AUDIO_IN_SAIx_SD_ENABLE()               __HAL_RCC_GPIOE_CLK_ENABLE()
    #define AUDIO_IN_SAIx_SD_GPIO_PORT              GPIOE
    #define AUDIO_IN_SAIx_SD_PIN                    GPIO_PIN_3
    #define AUDIO_IN_INT_GPIO_ENABLE()               __HAL_RCC_GPIOJ_CLK_ENABLE()
    #define AUDIO_IN_INT_GPIO_PORT                   GPIOJ
    #define AUDIO_IN_INT_GPIO_PIN                    GPIO_PIN_12
    Read more »

  • backplane for prototype 1

    ben biles04/27/2018 at 17:21 0 comments

    The backplane is in and after adding 2 bodge wires ( had 2 serial traces the wrong away around ! ) it works

    The next version will have the upgraded ADAU1467 DSP and the design will be even more modular.
    the backplane will have an the STM32f7 and ADAU1467 and all other cards will be slotted in !
    Hopefully all the sockets will be PCB mounted to! I really want to loose this box full of wires and
    connectors :)

    This back-plane has 4 differential preamp channels and 4 differential transformer style outputs with 1 high quality

    headphone driver plugged in.

    The ADC DSP DAC 8 chan board is hidden under the ARM dev board and has a nest of jumper wires connecting up the I2C TDM audio UART Bluetooth 4.0 etc. the Bluetooth module is gaffer taped in there somewhere !

    It sounds very noise free and better than my sound devices 633 mixer ! BUT i'm not even going to compare them until

    revision 2 since these wires are all over the place :)

    Also if you read that far back rev 1 of the ADC DSP DAC still doesn't have ground planes since I did'nt know how to make them

    back then!

    I'm still working on the TDM8 ARM recorder/playback app and will post some test WAV poly files here when I get that working properly.

    top view

  • started routing the ARM DSP mixer recorder main board

    ben biles01/24/2018 at 03:02 0 comments

    I've started to route the main board. It doesn't seam impossible but I'm just hoping I can get away with 4 layers and not have to go to 6 layer. The jump in cost from 4 to 6 is a bit much !

    at the moment its 10cm x 6cm which is'nt to bad. No ADC or DAC buffers though and I'm starting to thing I should have included them on the main board rather than put them on the HP + PreAamp + LineDriver cards. The cost would have gone sky high though since the main board has to be 4 layer. All the other cards are 2 layer including the analouge back plane.

    Here's a pic of the routing progress with the ARM STM32F7 144pin MC and new DSP. I have never wired up an SD card socket to a micro and no idea what protocol I should use yet ?

    I'm thinking it will be 4 or 8bit SPI for speed? I'll get to learning that soon I suppose !

    still trying to decide if I should have the 3.3v LDO off this board ! probably a bad idea to leach off the analogue +5v rail ! 

  • New Main board being drawn up ! ADC DSP ARM DAC !

    ben biles01/20/2018 at 22:48 0 comments

    New Main board being drawn up ! ADC DSP ARM DAC !

    I will be using stm32f7xx to multichannel record/playback TDM8 to DSP

    I should be putting the ADC and DAC onto a daughter card so I can change the IC's later but NO , I've already started

    routing it now :) so far its about 10cm x 6cm and might be able to get smaller since i finally started using 0603 parts.

    I'm not sure it can get any smaller because of heat ! There is fair amount going on here :)

    Its a 4 layer board with partitioned ground analogue and digital ground plane.

    i'll be using a 40 pin IDE cable to hook up the analouge IO and 5v power to the Preamp and driver board.

    why ? because they are everywhere for free :)

    I'm not really convinced I should be running the 3.3v LDO for the digital stuff ( DSP and ARM ) off the analogue +5v rail !

    perhaps that could add noise to the analouge +5v rail on the preAmps ? anyone have any thoughts on that ?

    Will the LDO put noise onto its input ? can I isolate this without transformers? or should I really have a whole other

    channel to make the digital power?

View all 54 project logs

  • 1
    Step 1


    ARDUINO / NOVATION LanchControl midi knob controller that I found useful earlier on in the development of this mixer. I could control the ADC and DAC chips via midi / usb with the arduino and it helped me learn about I2C SPI UART bus etc

    Instructions to hook up an arduino to Novation LaunchControl and get midi messages into your arduino.

    you will need

    1 x LaunchControl
    1 x Arduino UNO R3
    1 x USBhost shield v2
    1 x USB hub with enough power to power the LaunchControl
    relevant usb cables

    1/ connect the USBhost shield to the Arduino UNO R3

    I found these 2 but there are others to

    2/ download each zip folder from the 2 librarys linked below on GitHub
    uncompress each zip file and put each individual folder with contents
    into the Arduino IDE Library folder.

    the required USBhost version 2.0 library

    the required USBH_midi library by Yuuichi

    3/ Download my Arduino project file below.

    4/ compile / upload to Arduino UNO with Arduino IDE.

    5/ connect all usb leads making sure you have the usb hub between the arduino and the LaunchControl

    6 /open serial console in arduino IDE and set the baudrate to 115200

    press keys and turn knobs on the LaunchControl and you should see the relevent midi values 0-127 for faders


    comment below if you got this working or NOT ?

    I'll make a video of this working soon and post it here..

    I'm sure most types of Arduino will work as long as it supports the host shield but I have only tested arduino UNO as of yet..



    As of now the codec is noisey since I should have seperate ground planes from analouge / digital .. I'm not bothered with noise for now since I'm upgrading to an 8 channel DAC so I can mix 8 channels. the AIC3101 codec wa just a test to see how well the USBhost - midi cointroler would work..

    I remaped the numbers from the other way around since the codec volume was in reverse!

    mute was 127 and 0 was full volume 0db in the I2C register programming of the codec. so this arduino instruction helped me out..

    = map(volume1, 0, 127, 127, 0);

    not sure remaped is the correct description for map function in arduino code.. anway , it might be useful if you want to reverse the values of the faders etc.

    I used a midi dump example to find the values of each midi knob etc.. its in the examples that come with the midi usb library.

    here is the arduino code for controling the TI AIC3101 audio codec. Its setup to output incoming audio from I2S to Left and Right Line output.

    knob 1 & 2 contol L&R volume level output of codec

    I now have the 8 channel DAC CS4385 hooked and working , code available on github.

View all instructions

Enjoy this project?



Ulysse wrote 04/22/2017 at 16:16 point

I like. Of course. Music !

  Are you sure? yes | no

Craig Hissett wrote 04/22/2017 at 15:56 point

This is great matey!

  Are you sure? yes | no

Yann Guidon / YGDES wrote 04/22/2017 at 13:38 point

Impressive development !

  Are you sure? yes | no

Francesco wrote 02/21/2017 at 13:44 point

Hi Ben, i have a question for you. I'm working on a similar project, taking a lot of inspiration from yours. You say you're controlling the ADAU1446 with arduino via i2c. I didn't find any specification about it, the datasheet only says "program it with sigmastudio" without giving any information about i2c via an external controller. Did you found some more information? Or do you have any tip for me, how to do it?

Many, many thanks... and again, your project is awesome!


  Are you sure? yes | no

ben biles wrote 02/21/2017 at 14:09 point Basic uC Integration Tutorial.pdf

You create files from sigmastudio when you have made your design. you need to add macros to SigmaStudioFW.h so that that the code can write / read to I2C depending on the platform you are using. So in arduino that would be  Wire.beginTransmission(44); // transmit to device #44 (0x2c)// device address is specified in datasheet
  Wire.write(val);             // sends value byte

  Wire.endTransmission();     // stop transmitting

sorry , I have no idea how hackaday does the formating , if I try and paste code into this box I get some rediculas things happening including user names poping up ?

I switched to intel edison recently and so I'm adding mraa I2C macros to SigmaStudioFW.h now since I need a micro that can record / playback TDM 8 channel audio. I could not find any way to record high quality multichannel audio in arduino. Not to say there is'nt a way. everyone points to teensy but I am interested in 24bit 96khz 8 channel audio etc..In fact I never added the macros for arduino athough I did get arduino & bluetooth controlling the preamp with SPI and of course controlled the DSP basic initialize power on to get the board working with I2C. I had some confussion with I2C in the begining but it turned out to be a faulty board ( heat damaged by myself ) . I have the board working in selfboot mode also now with eprom :)

  Are you sure? yes | no

ben biles wrote 02/21/2017 at 14:12 point

Also I don't see your project on hackaday , can I take a look anywhere ? sounds cool ! what ADC / DAC 's are you using ? 

  Are you sure? yes | no

Francesco wrote 02/21/2017 at 22:50 point

First of all, many many thanks for your answer, that's exactly what i was looking for and i simply missed it. Now everything is much more clear for me :)

My project is very similar to yours, i'm not interested in recording but in general my goal is to build a digital audio mixer. At the moment, it's only theoretical, i'm waiting for the components i ordered some weeks ago from china. My choices are an ADAU1442 (pretty much the same as your 1446) and your same ADC/DAC. I was interested in 8 ch TDM converters and this two are the most common. For example, the "behringher x32" mixer uses those converters as well, they are perfect for the purpose. But I use self puilt preamps, from old projects of analog mixers.
My project is different from yours because i will use rotary encoders, motorized faders, screens and so on.... like i said, the intention is to build my own digital mixing consolle. 
When i'll begin to build things i will create a project page somewhere :) Maybe i will find something usefull to you too :D
Again, thanks for your advices and your help! Will keep you updated.
- Francesco

  Are you sure? yes | no

ben biles wrote 02/21/2017 at 23:28 point

interesting to know behringher x32 uses the same convertors. I would say that if your going for the highest dynamic range possible there are better ADC's. but I think you would need to use more chips and expense goes up dramitically. I also got my chips from china and managed to keep the cost down a bit. You will need to buffer your preamps with opamps to remove the 2.5v bias on the ADC or use AC coupling capacitors to remove ADC DC bias. There is an APP note from cirrus logic with 50khz corner freqnency filter and DC bias removal. I'm using PGA2500 so had to use AC coupling caps for increased dynamic range. PGA2500 only +-5v swing. anyway , if you get stuck your welcome to ask questions here. the shared clock and fanout buffer is working well for me. keep the clock line traces short and try to keep them equal leaghth. use split ground planes to sepperate analouge and digital ground return paths. I'm using I2C logic level translator as isolator to help keep noise away from preamp / analouge parts of the board. you could quite easily add 2 or more CS5386 ADC's by setting unique I2C addresses. ADAU1442 has 8 stereo asynchronous sample rate converters where the ADAU1446 does not. I did'nt need sample rate convertion and the adau1446 uses less power. same pinouts so you can change between them I think. I put ground pad on the pcb in case i wanted to use ADAU1442. I bought the cirrus logic programmer but I think there is a cheaper one out there.. might be an idea to build the programmer into your board? that way you could just plug your desk into sigmastudio and do realtime DSP from there software also. or just makes it look tidy. 

  Are you sure? yes | no

Francesco wrote 02/22/2017 at 08:48 point

Cirrus logic programmer? you meant the analog devices one, right? I'm building the freeusbi programmer designed by, total cost is about 6$ so it's much, much cheaper. I'm really trying to keep the cost as low as possible. Build the programmer into the board? Yes, it's one of my goals, it would be a very good thing.

I will for sure follow your advices about the wiring, at the moment de "pcb design" part is far away, i will first try things in some "breadbord version". At the moment one  of my biggest concerns (like yours, i read) is if i will be able to solder the ICs, i'm not an expert with that kind of "small" soldering. Hopefully.......

  Are you sure? yes | no

ben biles wrote 02/22/2017 at 14:02 point

wooops !!! yer , I should say usbi programmer ! only 6$ thats pretty cool .. I'll build the programmer into my next board I think. I first used ic adapter boards to test things out , but to be honest I think you might be better just going for it and drawing a pcb. even if you make a mistake on the pcb you could run a bodge wire or 5 !! I managed to fit ADC DAC and DSP on one 10cm x 10cm board and when I drew that board I did'nt even know how to make ground planes !! just a 4 layer board routed badly and it works really well. 

you can get the ADC DAC and DSP working on adpater boards / bread boards, sort of. but it will be noisey and will probebly crash quite a bit. decoupling caps will be far away from pins on chip, ground plane will probebly be shared with digital etc.. you can download the Eval board guides for each IC and take a look at there schematics to get the idea of how to make the board.

I should'nt advise you to use naked DAC audio pins without buffering IC's, but I have to say I just hooked them up to my powered speekers for testing directly.. use some large 47uf 60WV electro AC coupling capacitors though if your going to do that since there is 2.5v bias ! don't blame me if you blow the IC's doing that also ;)

I found the ADC more tricky to get working than the DAC. theres a few traps in there , so ask me questions if you get stuck !! also I'm sure I could get ideas from your project to ! so would be great if you document it somewhere !

  Are you sure? yes | no

ben biles wrote 06/05/2017 at 11:20 point

Hi Francesco , could you ask me the question about the DAC buffer stage again here? sorry , I tried looking for your comment somewhere in the logs and couldn't find it. In the mean time the output bias of the DAC is 2.5v which is incorrectly labeled VQ? instead of the normal Vcom ! you can AC couple the outputs to your buffer line driver or use an opamp.  you can bias the OpAamp inputs so that the audio swings around the 2.5v on the buffer input and outputs the audio swinging around 0v, essentially removing the bias and protecting you DAC from unwanted current etc

I'm using a OPA1632 balanced op-amp which outputs the differential channel swinging around 0v to an audio line driver. you could just use AC caps maybe but you can add some filtering to the DAC output if you need it with an opamp. I'm running the DAC at 24.576mhz rather 12.288mhz so filtering is'nt really necessary as far as I can tell but I thought its good protection for the DAC since no nasty current can pass through the OpAmp. Personally if I did the design again I would go for a more basic OpAmp package that the OPA1632. something like the OPA4134 that I'm using on my headphone drivers as the buffer now maybe. Anyway , I'm no expert at opAmps but will try answer your question if you post it here..  I got My ADC DSP and DAC all working together really nicely with an ARM micro. started working on multi-channel recording and playback over 8 chnannel TDM. Looking hopeful :)

  Are you sure? yes | no

Francesco wrote 06/05/2017 at 16:07 point

Hi Ben! Yesterday i wrote the comment, then had dinner, came back to pc and... "oh, that's how it works, what a stupid question" :D I figured out the answer, I only had some issues understanding the datasheet. Of course it works like you are saying here!! You didn't reply yet, the question was usefull, i simply removed the comment, that's why you can't find it :P

Let me use this comment to congrat again... This project looks amazing to me, I check this page almost everyday hoping for news. Can not wait to see how well this works once finished :D

P.S. I decided to follow your suggestion and go directly with pcbs... as you know, now seeedstudio offers 10pcbs 10x10 cm for less than 5$... it's not worth it to do tests via breadbords :D At the moment I have almost the whole project designed, only some parts already printed, thanks to your advices it works like a charm :)

  Are you sure? yes | no

ben biles wrote 06/05/2017 at 17:53 point

OK  ,  good to know your not wasting time with to much soldering :) take your time checking the circuits before you order boards. I usually leave it a day and check over again before ordering. I put a new pic up in the log of my 1st test backplane.. its only 4 channel. I'll make the final one and 8 channel :)  

  Are you sure? yes | no

john.loftus wrote 08/03/2015 at 09:24 point

Thanks Ben. Glad you like it. We have a programmers reference guide here that may help with the LEDs

  Are you sure? yes | no

ben biles wrote 08/03/2015 at 09:34 point

amazing thanks!  looks like all the info is there!  I Will code in some lights on / off after my holiday,  off to see if I can stand on a surf board for more than 3 seconds in hawaii without midi assistance :) 

  Are you sure? yes | no

john.loftus wrote 08/03/2015 at 09:36 point

Lucky guy. That sounds like paradise.  Have fun.

Let me know how this project develops.

  Are you sure? yes | no

john.loftus wrote 08/03/2015 at 08:18 point

Cool project Ben. We like seeing new uses for Launch Control.

Launch Control XL can also be used 'standalone' as shown below (no Arduino required)

  Are you sure? yes | no

ben biles wrote 08/03/2015 at 09:16 point

great!  Did'nt know you could get usbmidi - midi boxes!  Just did a search and found midi - dmx controllers too for lighting! Awesome :)

Love the way 80's simple solid midi hardware lives on!
Going to try and trigger the lights on the launch control next when you press the buttons.. Any idea where I download the midi map to trigger the lights?  
Oh, also love your use of the phone charger to power the launch control XL :)

  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