Leo's Audio DSP project

Thursday, March 29, 2007

Presentation at U of U Technical Open House

Gave a 15 minute presentation at the U of U Technical Open House. Finished the presentation with a 3 minute audio demo. Presentation was great success. Got positive feedback from the judges and attendees. Presentation video is avaialble on DVD upon request.

Find presentation here:

Final report:

Wednesday, March 28, 2007

fixed click bug

fixed a subtle but periodic click. It was caused by adding a constant to a circular index to access circular memory. Lesson learned: never add a constant to a circular index.

Wednesday, March 21, 2007

C code reviewed by Chris Belcher

Harman DSP Engineer Chris Belcher reviewed my code and gave tips on simplifying the code. Now I can see where I can avoid unnecessary loops and calculations. We also found out the cause of the 1 Hz click in the interpolated algorithm. Now all I need to do is to think about how to optimize and make the changes in the code. After this, my chorus will be professional grade.

Implemented interpolated chorus

I improved the existing chorus algorithm by interpolating between two samples and constructing an intermediate sample. The effect sounded better but the changes caused minor clicks @ about 1 Hz. This will be debugged shortly.

Friday, March 09, 2007

Final C code review by Michael Carnes

I adjusted all parameters to create a pleasant sounding chorus with no artifacts. This was a single voice chorus. I created the desired sound. I showed my code to Principal Engineer Michael Carnes to get some feedback. He made the following points:

* The way I am seperating my left and right channels is putting the processor through unnecessary loops which causes inefficiency.

* I am calculating 32-bit sine values for each sample, this is unnecessary and the precise sine values can be replaced by an LUT or by using a triangle modulator which can be generated by doing some simple addition.

None of this came as a surprise since my purpose was to create the effect as quickly as possible. Now I have insights on how to improve efficiency.

We also covered the concept of interpolation to make the chorus sound 'professional grade'. It wouldn't require a lot of time to implement.

At this point, the chorus is sounding good for the purposes of the project. However, I want to branch the code off and try for another week to implement the desired interpolated version.