Post Go back to editing

Miscellaneous click and pops with delay block

Category: Software
Product Number: SigmaDSp
Software Version: 4.6

I have been tyring to implement a simple chorus effect on the ADAU1701 using a voltage-controlled fractional delay, and a couple of sinusoidal oscillators.

When I download and run the attached SigmaDSP program, the ADAU1701 outputs click and pops even with no signal present. These can actually be seen using the real-time display, as shown in the screen grab.

I don't understand the source of the problem, but I do know that when the oscillators are turned off, the clicks and pops stop.

I would love help from anyone who could explain what I'm doing wrong.



  • Hello markscohen,

    Do you have a system controller "talking" to the part?

    I do not see any traffic on the Capture window so it does not look like you are sending communications using SigmaStudio. 

    You listed that you are using Rev 4.6. I do not think that is the issue. What hardware are you using?

    Feel free to upload your project. 

    Dave T

  • Hello markscohen,

    Do you have a system controller "talking" to the part?

    I do not see any traffic on the Capture window so it does not look like you are sending communications using SigmaStudio. 

    You listed that you are using Rev 4.6. I do not think that is the issue. What hardware are you using?

    Feel free to upload your project. 

    Dave T

  • Thank you, Dave, for your very quick response.

    The only sense in which a controller is talking to the board, is that it is still connected to the USBi for adjustment and tuning. I’ll check to see if that’s the issue. However, I would no longer be able to track the artifacts in the real-time display in that case. Otherwise it is in completely standalone mode.

    Following that thought, it’s notable that the problem disappears when the two oscillators are disabled (with their checkboxes).

    I am using 4.6, but I do have 4.7 and can see if that makes a difference.

    The hardware that I am using is this:

    I have found these boards to be pretty reliable, and the problem is limited to this program. Others that I am running on this board do not have the issue.

    The code is attached already to my report, but if for some reason it’s not immediately readable, I can re-send it.

  • Thanks, Dave, so much for your quick response.

    I am running the program on a “ADAU1701 / ADAU1401 DSP mini board” of a type widely available online (unfortunately the forum doesn’t allow me to include the link”. A search on that phrase, or on “ADAU1401/ADAU1701 DSPmini Learning Board” will find the devices quickly at places like Walmart and AliExpress.

    The only possible communication traffic would be over the USBi that I’m using the tune the code. I can try to run without that connected, though I obviously would not be able to show the artifacts in the real-time display. Otherwise, the only connections are audio in and out.

    Notably, the problem goes away when I uncheck the enable boxes on the oscillators, so I don’t think that network traffic is the likely problem.

    Yes, I happen to be running on SigmaStudio 4.6, I do have 4.7.

    I did upload the project in my original post. If it’s not immediately readable, please let me know, and I can try to send it again.

  • Hi Dave: I wonder if you (or someone else) have further thoughts on this? I haven't been able to eliminate the clicks and pops and other acoustic artifacts.

    I did try running with SigmaStudio 4.7, but that didn't seem to make a difference.

    Thanks so much.

  • Dave: I am feeling kind of desperate here. Do you have any further thoughts on this problem? 

    Thanks so much,

  • Hello Mark,

    Sorry I have been busy. 

    I looked at your program. the input to the part is not the correct data. Here is what you are sending:

    As you see by the readback it can be a number in the range of a small negative number to almost a 2 in 5.23 format.  

    A 2 in 5.23 format is 1000000

    In decimal that is 16,777,216

    The cell wants to have the number of samples for the current delay setting and it needs to be between 0 and the max samples. you have the max set to 960. So you are sending values that are MUCH higher. The DSP program is written simply and does not check for bounds. The number coming in will be used as an offset pointer from the start of the delay line. So you are picking up samples from WAY beyond the location of the delay memory. Therefore it is garbage data. 

    I am not 100% certain what you are trying to do but I think you are trying to do a chorus of some sort? You want the delay times to be very slowly changing. So here is how you need to do it. 

    Change the addition blocks to multiplies. 

    Change the format of the DC block to 28.0 so you can enter 960 in a user friendly decimal number.

    Get the absolute value of the oscillator outputs so they never go negative. Then they will go between 0 and 1 for the multiplication. 

    Just make sure the DC block does not have a number that is larger than the MAX samples of delay. 

    Note I added a readback with the two gain blocks so you can check the range that the output of the multiply is producing. You will see it never goes over 0x3C0 which is 960 in hex. Note you can also set the readback to be 24.0 and see it in integer format. 

    I think this will work well for you. 

    Dave T

  • Thank you so much for your reply, which I’ll check out today. You are unbelievably supportive of this community. 

  • Hello Mark,

    I got to thinking about this afterwards and I want to add one more little detail that I think will be important for your application. 

    I just got the absolute value of the sine generator output to keep it from going negative. However, that produces a steeper and sharper transition around the zero crossing. It would be better to reduce the sine wave from a 0dBFS signal that goes between 1 and -1 to be half the amplitude then offset it with a DC offset of 1/2. So this would give you a true sine wave for the delay control. Let me show you. 

    Here are the two circuits:

    Notice I named the graphs as ABS and Sine...

    Here is the output they produce:

    They both produce output between 1 and zero but the speed and shape of the transition is much smoother and is a sine function however, it will use a few more MIPS o do it. It will not be a lot more and you can reuse the 0.5DC cell value by using an Alias so you only have one in the project. 

    I think this will sound better and more what you are expecting. 

    Dave T

  • Thank you, thank you, thank you. The headline is that this community is very fortunate to have you. 

    FWIW, I use a triangle waveform for the delays  it is symmetrical after the absolute value, and makes an even sampling of all delays.

    I have to work out something with the mixing, I think, as I don’t get quite the shimmering effect I’d hoped for. Perhaps others in this thread have comments?

    Did I say “thank-you”?