• Join
  • Sign In with my.TI Login
Texas Instruments
  • Products
  • Applications
  • Tools & Software
  • Support & Community
  • Sample & Buy
  • About TI
Sample & Purchase Cart Sample & Purchase Cart
  • Search
  • Advanced
TI E2E™ Community
  • Support Forums
  • Blogs
  • Groups
  • Videos
  • 简体中文
  • More ...
TI Home » TI E2E Community » Support Forums » Digital Signal Processors (DSP) » C5000 Ultra Low Power DSP » C5000 Ultra Low Power DSP Forum » Help understanding flanger/chorus DSP implementation
Share
C5000 Ultra Low Power DSP
  • Forum
  • Announcements
Options
  • Subscribe via RSS
Top 6 Wiki Links
  • C5000 Main Wiki
  • C5000 Software
  • C5515 Boot-Image Programmer
  • CSL (including CSL 3.00)
  • C5000 Connected Audio Framework
  • Porting C5000 Teaching ROM to C5535 eZdsp
  • Help understanding flanger/chorus DSP implementation

    Help understanding flanger/chorus DSP implementation

    This question is not answered
    Luis Olvera
    Posted by Luis Olvera
    on Apr 07 2012 20:53 PM
    Prodigy30 points

    Hi C5505 forum,

    I have been working with my C5505 EzDSP to implement DSP audio effects and apart from basic delay and reverb algorithms I have succesfully implemented a 5-band parametric equalizer. I have found a lot of information regarding other delay-based audio effects such as flanger/chorus which I have been trying to implement and although I get a chorusy effect I hear kind of crackling noise as well.

    I'm using a LFO (1 Hz sine waveform)  that modulates a 480 sample delay buffer. Here's what I do:

    • For each sample the program calculates the actual sinewave value. I'm using the sinewave generator written by TI's Richard Sikora, which outputs only integer values. This sinewave has a pk to pk value of 480.
    • Read the current circular buffer value given by the sinewave generator starting at buffer_length/2 (in this case 240). Compute the algorithm value.
    • Write at the current circular buffer position.

    I think that the problem occurs once the algorithm gets a N=0 delay value since the buffer is full of samples and as soon as it starts incrementing again it reads this wrong values instead of reading a blank buffer space.

    So do I have to clear the buffer once the program gets to the "bottom" of the buffer? Or am I missing something else?

    Thanks in advance!

    C5505 chorus effect
    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    All Replies
    • govind
      Posted by govind
      on Apr 09 2012 13:09 PM
      Intellectual1195 points

      Hello Luis,

      @ "although I get a chorusy effect I hear kind of crackling noise as well" -

      *Typically* integer movements of read/write pointers through a simple circular buffer implementation (to mimic the time-varying nature of the delay tap-lines, which in turn produces these effects) lead to some undesired 'click' or modulation noises. The 'delay' element will have to be continuous & for that you'd need fractional delay lines (or something like the linear interpolators out of an SRC).

      Why don't you try some first order interpolation? read 2 input samples and then use the (computed) average of the 2 values for your algorithm's delay line inputs. It's sort of like the computationally cheaper cousin of implementing a full fledged fractional delay line.

      Chorus, as you might know,  is a variation on the theme of 'flange-ing'. Flange-ing, if you're a classic rock fan, originated with delaying the motor speed of one of the two 'mono' playback heads (which were playing identical copies in sync), feeding a third recording-tape. It's all in "delaying" & the amount of delay matters quite a bit to get the desired effect. The key, though, is to get the circular buffer to operate like a continuous delay line.

      Hope that helps. Good luck.

      Govind

      I can't listen to that much Wagner. I start getting the urge to conquer Poland.

      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    TI E2E™ Community
    • Support Forums
    • Blogs
    • Videos
    • Groups
    • Site Support & Feedback
    • Settings
    TI E2E™ Community Groups
    • TI University Program
    • Make the Switch
    • Microcontroller Projects
    • Motor Drive & Control
    Other Communities
    • Deyisupport
    • Designsomething.org
    • beagleboard.org
    • TI on Element 14
    • TI on TechXchangeSM
    Other Technical & Support Resources
    • WEBENCH® Design Center
    • Product Information Centers
    • Technical Documents
    • TI Design Network
    • TI Technical Articles
    • TI Training

    All content and materials on this site are provided "as is". TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with regard to these materials, including but not limited to all implied warranties and conditions of merchantability, fitness for a particular purpose, title and non-infringement of any third party intellectual property right. TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with respect to these materials. No license, either express or implied, by estoppel or otherwise, is granted by TI. Use of the information on this site may require a license from a third party, or a license from TI.

    Content on this site may contain or be subject to specific guidelines or limitations on use. All postings and use of the content on this site are subject to the Terms of Use of the site; third parties using this content agree to abide by any limitations or guidelines and to comply with the Terms of Use of this site. TI, its suppliers and providers of content reserve the right to make corrections, deletions, modifications, enhancements, improvements and other changes to the content and materials, its products, programs and services at any time or to move or discontinue any content, products, programs, or services without notice.

    Follow Us Texas Instruments on Facebook Texas Instruments on Twitter Texas Instruments on LinkedIn Texas Instruments on Google+
    TI Worldwide | Contact Us | my.TI Login | Site Map | Corporate Citizenship | mobile m.ti.com (Mobile Version)

    TI is a global semiconductor design and manufacturing company. Innovate with 100,000+ analog ICs and
    embedded processors, along with software, tools and the industry’s largest sales/support staff.

    © Copyright 1995-2013 Texas Instruments Incorporated. All rights reserved.
    Trademarks | Privacy Policy | Terms of Use