Digital DSP or Analog Mixing for Live Pro-Audio

Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.
Hello,

I'm still working at this project.

We tried the PIC32MZ chips, unfortunately we failed. The engineer I hired wasn't able to get past the erratas of the PIC32MZ chips.... I guess dmills was right.

Check the datasheet erratas most carefully, some of those parts are 'Interesting' in the sense of the Chinese curse.

Let me reintroduce the concept....

=====
PROJECT GOALS
=====

This is intended to be an audio mixer for live audio.

My first goal is to achieve high quality USB Audio from Windows PC with no artifacts. I originally defined this as "Asynchonous Audio" but the mere fact of being asynchronous is not my requirement. It just needs to sound "very good" compared to simply using the PC motherboard's line out...

The second requirement to this project is to have 4 microphone inputs. I have selected the PCM1864 ADC chip because it has everything I need for mics including differential inputs, and mic preamps. It will output an I2S signal, so it should be fairly easy to interface with the selected MCU/DSP core. It also has some advanced features that I would want to test including Auto Gain, the selection of filtering and types, and the ability to premix the microphones (to simplify DSP operations). There is also an EVM for this chip which should make prototyping easier. PCM1864EVM PCM1864EVM PCM1864 103dB 4-Ch Software-Controlled Audio ADC With Universal Front End Evaluation Module | TI.com (PS the PCM1864 or 1865 would both work, the later having higher SNR)

The third requirement is to be able to control all of the levels via the computer, while maintaining a VERY low latency (between 3ms - 8ms) from voice to speaker. Let me just recap the fact that I have tried numerous soundcards that have microphone inputs. None of them are configured for live audio - almost all of them are configured for recording. This project has (almost) nothing to do with high quality recordings and everything to do with live playback. So the real question here is whether or not I can eliminate all but the required filters and processing, and have the DSP mix and send as fast as possible, to keep the signal fast enough for this purpose.

And the ultimate goal here is to create a custom PCB that does all this at a semi-commercial/semi-hobby level.


======
STATE OF MY RESEARCH
======

The STM32 chips are my current focus. They are inexpensive, and they seem to have the power required for my purpose. They also have a new chip coming out that will be even faster than the current selections - so it's promising.

=====
USB AUDIO
=====

JMF11's post about Asynchonous Audio with the STM32
Can low jitter be achieved with STM32 microcontroller

torgeirs' post about using the STM32 with audioweaver....
STM 32 F4 Discovery and Audioweaver, anyone tried?

Based on JMF11's post, I realized that this chip seems to be more than capable of achieving high quality USB Audio. Then a few users suggested I look at Audioweaver and so I found the other post too. The only question on this front is whether or not we will be able to use the STM32 in stand alone mode after programming it using Audio Weaver.

torgiers says:
And yet another kind of setback.
How to get audio to play on an ST Cortex-M4 Discovery Board? | DSP Concepts
Only USB in works for Audio weaver. So no standalone operation.
Still possible to prototype and test. But the coding must be done yourself in KEIL or similar to have full control of inputs and outputs. (Think DSP Consepts was involved in KEIL DSP C algorithms).

That's quite unfortunate. I'll have to figure out where I'll get the USB Audio Code...


=====
MY CURRENT CURIOSITIES
=====

I plan on testing the Audio Weaver tool to see if I can get it working. So I'm currently working out the following questions.

1. How will I connect the PCM1864EVM to the NUCLEO-F746ZG. I have to work out the schematics of physically connecting it. I also have to work out how/if the Audio Weaver application will accept those inputs as an actual input??? I think that there is some code that is required to create a new "target" which would define these things. I don't know how to do that, and I don't know what development platform I would need to do it in. There isn't much information anywhere on the Audio Weaver site about adding hardware to the tests....

1b. I'll need to find a suitable DAC board to test this with, because the NUCLEO-F746ZG doesn't have a DAC. Unless I tried it with the STM32F407G-DISC1 which has a DAC but doesn't seem to have any I2S inputs (for my ADC test). How do I define that DAC to test inside Audio Weaver?


If I can answer these two questions then I can answer whether or not the STM32 be able to process the mix from the PCM1864 and USBAudio with low enough latency... (3-8ms)?


====
OTHER QUESTIONS
====

2. How will I get the Audio Weaver application to let me go stand alone? Will I have to purchase an expensive development platform? Will I have to write the complicated USB Audio drivers!!!??? Can I use JMF11's code somehow and merge it with the Audio Weaver scripts?

3. Will Audio Weaver code allow me to access DSP controls from outside of the Audio Weaver interface? My goal is to have a USB HID device so we can control these levels from within our own app so the question is whether or not this requires more complicated DSP code....

I'll keep posting my findings.

Jay
 
No idea about that audioweaver thing, but I would be just using an interrupt either on DMA completion (Use two DMA buffers and ping pong) or maybe even just on new sample received (Means running a 48KHz interrupt, a little painful, but probably doable).

Seriously an 8 channel audio mixer is NOT hard maths.

The possibly fun party trick is that you must make sure the USB and ADC/DAC samples are synchronous, doable but worth making sure your USB audio stack works this way.

Regards, Dan.
 
Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.