DSP multichannel audio mixer recorder

Similar projects worth following
This Project has been cancelled, Project continues here...

I will leave my brief notes here so people can see why I did'nt think the OMAPL138 was the correct way to go forward.

This project aims to make a realtime DSP digital mixer with large amounts of audio IO over MCASP interface on the OMAPL138.

DSP functions should include realtime audio mixing, flexible routing filtering compression

It should record all the channels ( including sepperate mix channels ) to SSD though SATA port.

The 8:2 stereo USBmidi mixer project nearly got this development board spliced into the middle of it !! Thinking again I thought I should try to keep the 8:2 USBmidi 8channel_mixer simple high quality lightweight low power and cheap & adding this chip for now was way out of my leage !!!

I am ussing TI's eclipse based editor CCS6 and succesfully running a MCASP example of audio passthrough. I have located the section of code witch does the sample copy from input buffer to output buffer, so hopfully I can add DSP mix functions here.

First I will be trying to code in non-clipping sample mixer algorithms to mix the 2 only audio inputs on the OMAPL138 LCDK board into mono output.

For now i'll try and adapt something like the below code and try to use

TI's MATHLIB library for the devide parts of the code in DSP. I am a complete beginner

at this so wish me luck !

If I get this working with the two channels I can control the volume variables with a simple GUI. I'll post a video of this if I get that far !


// 5 channel mixer algorithm in 32 bit without clipping ?

#define chanvol1 0x19999999 // c1 = 0.2, 1.31 fract. format
#define chanvol2 0x0CCCCCCC // c2 = 0.1
#define chanvol3 0x26666666 // c3 = 0.3
#define chanvol4 0x06666666 // c4 = 0.05
#define chanvol5 0x39999999 // c5 = 0.45

// somewhere inside McASP Receive Interrupt Service Routine????

// copy input samples from channels //

r1 = dm(channel_1); {audio channel 1 input sample}
r2 = dm(channel_2); {audio channel 2 input sample}
r3 = dm(channel_3); {audio channel 2 input sample}
r4 = dm(channel_4); {audio channel 2 input sample}
r5 = dm(channel_5); {audio channel 2 input sample}

r6 = c1;
mrf = r6 * r1 (ssf); {mrf = c1*x1}

r7 = c2;
mrf = mrf + r7 * r2 (ssf); {mrf = c1*x1 + c2*x2}

r8 = c3;
mrf = mrf + r4 * r2 (ssfr); {mrf = c1*x1 + c2*x2 + c3*x3}

r9 = c4;
mrf = mrf + r4 * r2 (ssfr); {mrf = c1*x1 + c2*x2 + c3*x3 + c4*x4}

r10 = c5;
mrf = mrf + r4 * r2 (ssfr); {mrf = y= c1*x1 + c2*x2 + c3*x3 + c4*x4 + c5*x5}

mrf = sat mrf; /// What is SAT ? what is this doing ?? also what is ssf and ssfr timing or frames ???

// copy mixed channels to both left and right channels ready to go to balance mix code…?

r0 = mrf; /// was written as mr1f ,, must have been a typo?? changed to mrf

dm(left_output) = r0; {left output sample}
dm(right_output) = r0; {right output sample}

  • 1 × TI's OMAPL138 LCDK
  • 1 × 46 pin ribbon cable connector male on J14 or 15 or both

  • This project might be hijacked by the ADAU1446 IC

    ben biles10/12/2015 at 12:18 0 comments

    Over in the other project Arduino USBmidi surface controller Audio Mixer

    I've decided to try and add the AD1941 DSP since its easy to program with the visual software from ADI. I noticed that there is a more powerful 100pin DSP ADAU1446 that can achieve mix routing , mixing and effects. thats without even getting in the Sharc DSP wich I believe is more powerful again ?

    OK, so it does'nt look like it would support multichannel audio recording itself but it fast forwards things so much with mixing and routing that I wonder If I should be looking elsewhere for multichannel audio recording with the microcontroller !! basically coding the cross platform DSP/ARM is really tricky too and way out of my leage ! I'm sure if your an amazing developer with tons of C IDE experience then Inter process Control is a walk in the park ! but its not for me !!

    One pitfall of doing this will be the lack of learning to code mixing interupts etc in TI DSP in C. This could take me years to get anywhere near what is already done in the ADAU1446.

    This chip cost about 14$ and I'll already have the programmer too from using the AD1941 in the other project.

    This TI board does'nt really support IO audio over the connector pins either !! it turns out most are shared with flash memory or other things on connector J14 and J15 and TI appear to have gone quiet on me in the forum when I question this.

    something tells me the OMAPL138 LCDK board was designed to be used with the on board perifirals only.. useless to me.. perhaps useful to others !

    The box is ready to be returned unless a miricle happens and there is supporting litreture and multiple pin SD IO discovered within the next 48 hours !!!! somehow I dought it :)

    So, its looking more likely that this project will become Microcontoller with ADAU1446 DSP and SATA multichannel recording,. that will be interesting !!!

    how in earth I will get massive amounts of serial data in the form of multichannel audio saved into multiple wavs on an SSD will be challenging..

    but then again I have an old ARM9 olimex board running linux.. I wonder if it could recieve the serial data streams and record them to SSD... mmmm...

  • matlab demo

    ben biles10/05/2015 at 13:14 0 comments

    Just apllied for a trial of MatLab software. not sure that will help generate some C code for mixing audio , worth a try.

  • IO pins , we have a start condition !

    ben biles10/03/2015 at 06:22 0 comments

    I have to strart somewhere, so it may as well be here.. the pins. I need I2C to control the ADC's / DAC's. where are they, could they be on J15 connector at pin 13 and 15 but shared with SPI somehtingm,. how can I2C bus be shared with anything, it needs pullup resisotrs ! .. , are EMA pins definable to anything ?

    why are they called EMA pins ? are they GPIO pins ? why can't everyone call things by the same name ?

    why are the SPI pins called SIMO SOMI ?? whats wrong with MOSI MISO ??? or are they different in some way ?

    J14 46pin female connector 2 row 2.54mm pitch

    J15 46pin female connector 2 row 2.54mm pitch

    here we go....

View all 3 project logs

Enjoy this project?



Similar Projects

Does this project spark your interest?

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