DSP for the Raspberry Pi
After the success with my Raspberry Pi DAC it is time to go to the next level: a DSP that can be programmed directly from the Raspberry Pi.
First prototype is working, however I still have some issues with the analog input.
The DSP can be used as a sound card (stereo in/out) for the Raspberry Pi, but also as a standalone DSP. Programming is done directly from the Raspberry Pi. Unfortunately there is no free compiler for this DAC available. Therefore you have to use SigmaStudio. From there, the compiled program will be exported, transfered to the Raspberry and then written to the DSP. This is only needed when using a completely different program. Parameters for the running program can be updated on the fly. E.g. you can change filter frequencies of a crossover from command line.
The whole software is still in a very early stage, but the basic functionality is already working.
The DAC can be powered directly from the Raspberry Pi 5V supply, it consumes only 100mA.
Wow, looks nice! What ADC/DAC IC have you used? What resolution and sampling rate?
This DSP uses the onchip ADCs/DACs of the ADAU1701. These are not the best DACs/ADCs on the market, but they perform reasonable well.
Sampling rate depends on the configuration. The DSP can work up to 192kHz, however in that case, there is less processing possible per sample. Therefore for complpex programs the sample rate might by limited to 48kHz.
I still had some problems with the analog input which works now (just forget to solder a resistor on the other side). That means I can focus on the software development.
Is anybody interested to join the team? The software will be open source.
Looks good. Today I could finish the basic filter software.
I filters will can be configured by an XML file. Based on this file, the parameters for the filters will be calculated. Only BiQuads are implemented now, I will more on other filters in a later stage.
Here is an example (not the full file), which creates a Butterworth high- and lowpass:
<biquad name="bq11" input="input1" type="highpass1" frequency="200" q="0.7" />
<biquad name="bq12" input="bq11" type="highpass1" frequency="200" q="0.7" />
<biquad name="bq13" input="bq12" type="lowpass1" frequency="2000" q="0.7" />
<biquad name="bq14" input="bq13" type="lowpass1" frequency="2000" q="0.7" />
I will work on the web interface in the next days. The web interface will can run on the Raspberry Pi allow direct filter changes over the web interface.
Looks very interesting - above my head for sure.
The web interface will be easy to use :-)
Congratulations for your hard work! Your project looks very promising.
A quick note, although I'm not sure I understand the example below.
The difference between these filters is illustrated below, with same cut-off frequencies as yours (200 Hz and 2000 Hz). Butterworth is orange, LR is blue.
For some reason, your frequency response plot doesn't look like any of the 4th order Butterworth or LR, which is what you would normally achieve with 2 cascaded 2nd order sections.
Normally you would need only one pair of biquads to implement these filters (one biquad for the low-pass and one biquad for the high-pass). But your example shows 4 biquads.
I can see 2 explanations:
- Your plot is not related to the XML example
- Or your biquads implement only 1st order sections, which is a waste of resources.
Wish you the best with your project!
you're right. I mixed up Butterworth und Linkwitz-Riley. The Filter is a 2nd order Linkwitz-Riley, consisting of 2 first-order Butterworth filters (that's why it is named "lowpass1").
And you're also right, that a biquad filter for a first order filter is a waste of ressources. However, at the moment I have more than enough resources available. The SigmaDSP is really nice for this kind of applications, because it handles a BiQuad in 6 clock cycles. A first order filter would save 2 clock cycles. But using BiQuads even for first order filtering (with B2=A2=0) makes the implementation easier at the moment.
|All times are GMT. The time now is 11:59 AM.|
Search Engine Optimisation provided by DragonByte SEO (Pro) - vBulletin Mods & Addons Copyright © 2020 DragonByte Technologies Ltd.
Resources saved on this page: MySQL 17.65%
vBulletin Optimisation provided by vB Optimise (Pro) - vBulletin Mods & Addons Copyright © 2020 DragonByte Technologies Ltd.
Copyright ©1999-2020 diyAudio