Posted by & filed under BBDs+Delays, Projects, Stompbox stuff.

Recently I’ve been working on a four second digital delay with tap tempo and delay trails. There are lots of digital delay projects already, but the vast majority of them are based on the PT2399, which limits both the length of the delay and the sound quality.

DigiDelay pedal

 

A quick summary of the features:

  • 0 → 4 Seconds of digital delay
  • 12 bit/32KHz input, 16 bit/32KHz output
  • Delay trails (tails) on/off
  • Clickless effect in/out bypass switching
  • Momentary/latching feature on bypass switch for “echo splashes”
  • Tap tempo
  • Tempo LED to indicate echo rate
  • Dry audio path is entirely analog
  • Delay Time, Repeats, and Delay Level controls
  • High and Low tone filter controls

This project is based on the dsPIC 33FJ64GP802 chip, with a couple of 23LC1024 1Mbit/128KB serial RAM chips for the storage. The dsPIC includes a 12-bit ADC and a 16-bit DAC on-chip. The initial sampling is done at 12-bit resolution and 32KHz, but after that, all the internal processing is 16-bit, and the final output is actually 16-bit/32KHz. 12-bit/32KHz is a typical specification for a rackmount studio delay processor of the 1980’s. The sound quality is very good, without being super-clean or sterile. It certainly beats the PT2399 hands down, and it doesn’t suffer from worse and worse quality as the delays get longer either.

The worst (only) problem is background hiss. The dsPIC’s on-chip DAC seems to produce about 10mV of noise. Some of this is removed by the post-DAC filtering, but about 5mV remains. This is pretty noisy by modern standards. For guitars-level signals, modifying four resistor values improves the S/N ratio significantly. This is described below.

As you can see in the guts photo at the bottom of the page, all the parts are DIY-friendly through-hole DIP ICs. This isn’t easy to achieve for something like this, since virtually all DACs and RAMs are surface-mount these days. I’ve managed to keep it to six ICs, and apart from the 28-pin dsPIC, they’re all little 8-pin DIPs, so the project is able to fit in a reasonably sized enclosure. The PCB is designed for a Hammond 1590BB or equivalent.

The current firmware has five controls. Three are the standard delay controls: Delay time, Repeats, and Delay level. The other two are high and low shelving tone controls for the delay signal, so you can sculpt the sound of the repeats. You can cut the bass on each pass which makes the repeats sound “lighter” and like they’re floating away. Or you can cut the treble, and have the repeats get darker and darker, somewhat more cave-like and subterranean. Or you can do a bit of both, which gives you a band-limited sound on the repeats like someone on the telephone or a cheap radio. It’s pretty versatile.

The audio path keeps the dry signal entirely in the analog domain – it is never digitised and comes straight from the input buffer to the output mixer.

I’ve programmed ‘buffered bypass’ rather than add a true bypass footswitch, though this would be possible. The reasoning is that I can do noiseless switching in the firmware by providing a fade-out over a few milliseconds, and I can also offer the option of keeping the delay tails, which is important with so much delay available.

One further addition is the “echo splash” feature, whereby a short press on the bypass footswitch will toggle the effect on or off in the usual way, but a longer press (currently set at “over 0.5 second”) turns the delay on only while the switch is held down, and the delay goes off again when you take your foot off the button. This enables you to add echoes to just a single phrase, and sounds great with the delay trails.

The firmware also offers tap tempo as an alternative way of setting the delay time – just tap the interval you want on the other footswitch. There’s also an LED which flashes at the current delay rate to give you an idea of what’s going on, and there’s a Sync Output to provide a pulse which can synchronise other pedals to the delay rate.

A quick overview of the schematic

The analog side is simple stuff. There’s a buffer, from where the dry path goes off to the final mixer. That’s followed by a anti-aliasing filter, and then the delay line. The delay is followed by a differential op-amp since the DAC outputs a differential signal, and then two reconstruction filters. The final mixer mixes the wet signal back into the dry signal.

digidelay-schematic-pg1

The digital side consists of the processor (with its internal ADC and DAC) and the two SRAMs.

digidelay-schematic-pg2

The final parts are the five control pots, and the two supplies. The ADC/DAC use a separate 3.3V supply from the digital side to help keep noise to a minimum. The ground planes are separated on the PCB too.

I’ve used the “diode in parallel with circuit” style of reverse polarity protection rather than the alternative “diode in series with circuit”. The diode in series gives you a hefty voltage drop that I don’t care for. On the other hand, the diode in parallel will short out any power supply which is plugged in in reverse and might blow up the power supply. I regard it as my job to protect my circuit and the job of power supply designers to protect their power supplies from shorts (I mean, that’s pretty basic, right?). Just so you’re warned!

digidelay-schematic-pg3

PCBs and chips for this project

Here’s a shot of the Rev.2 PCB in my first unit. It makes for a neat build since most of it is on the PCB. Getting the LEDs the right height requires a little forethought, but none of it is hard. I could have used board-mounted jacks too, but I thought it better to leave people the option of having whatever jacks they like best. I’ve put cutouts left and right for the jacks, and added a cutout on the top edge to make more room for a DC socket. I learned a lesson there from the Flangelicious boards where it’s a tight fit to get a DC socket on the top side of the PCB.

DigiDelay pedal guts

The PCB measures 109x70mm. It is designed to fit into a Hammond 1590BB enclosure in landscape format as above. The PCB-mounted pots make the build easier, and the off-board wiring is very simple.

Ok, so what do I need to build one?

DruidConstructionGuidePDF

Pop over to the shop and grab the DigiDelay PCB + chipset, which includes the PCB, DIGIDELAY delay processor chip, and the two SRAMs. You might also need a set of pots for the project.

The only documents which you’ll really need are the DigiDelay construction guide. and the DigiDelay enclosure drilling template.

Improving the S/N ratio for low-level guitar signals

There are two main sources of noise in this circuit; 12-bit quantisation noise, and the DAC noise. There’s nothing I can do to fix either of these. They are what they are. All we can do is try and get the best-possible signal-to-noise ratio from the circuit.

As shown in the schematic, the circuit can handle signals up to 3V peak to peak. To get the best noise performance, you need to use as much of this as you can.

If you’re using the circuit with a guitar with a low level output, changing four resistor values can be helpful. These changes boost the signal at the pre-delay filter, and then reduce it again at the output mixer (along with any noise). This gives an improvement in S/N of around 13dB. The maximum input signal level is reduced to 680mVp-p.

 

Project files

Here are the full details if you want to tweak the code, do your own PCB, or otherwise experiment with it.

DigiDelay DIY 4 Second Delay Project files

Delay Processor and SRAM files

Going further: A dsPIC-based pedal of your own design?

It’s worth pointing out that the hardware presented here is pretty general purpose. You’ve got audio input/output with a dsPIC to process it and 256KB RAM if you need it. The interface consists of five knobs to control parameters in the code, and two footswitches. That’s a good start for a lot of different digital effects. A change of firmware could turn this into something completely different.

Creative Commons License
All files relating to DigiDelay by Tom Wiltshire for Electric Druid are licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. Here’s the legal stuff.

83 Responses to “DIY 4 Second Digital Delay”

  1. Robert

    Awesome! Finally a “non-pt2399” digital delay 😉 I am pretty sure this could be combined with the VC/Tap-LFO to get modulated delay time? Can’t wait for the files, thanks again for a great project!

    Reply
    • Tom Wiltshire

      Hey, wait till you’ve heard it before you big it up! But thanks for the positive vibes!
      Modulated delay time with the TapLFO would be pretty wild. You’d have a ton of options available then. Since the delay time on this one is a CV input (although 0-3.3V range) it should be doable, although I’ve got some heavy smoothing on the CV inputs on this chip to prevent noise from the ADC finding its way into the audio. So fast modulation might not be an option. I’ll bear it in mind though. Perhaps when it’s all done, I can experiment with backing the filtering off a bit to see how far it can go.

      Reply
      • L´Andratté

        “…with backing the filtering off a bit to see how far it can go.”

        Yes, please do that! Because it is no just a freaky idea, but one of the strangest synth effects I know, to s&h-modulate the delay time!

        Anyway, hats off to you and I´m in for one (;
        Best, Jörn

        Reply
  2. O.Z.

    Tom,
    Looks very promising! I concur with Robert – at last … beyond PT2399
    O.Z.

    Reply
  3. Mark Wills

    Hi there

    I’m interested in the software technique you are using the produce the delay. I wondered if I could ask some questions? The way I imagine it working is to have a sample-write pointer that continually loops around from one end of memory to the other, writing the data sampled at the A/D as it goes? Then a sample-read pointer (which also loops around memory in the same way) is running a fixed distance away from the sample-write pointer? The longer this distance the bigger the delay – meaning sample rate never changes – just the “distance” between the read/write points? Is that how it works? I ask because I’m interested in having a go myself at some of this, though the PIC world is new to me!

    Also, any idea how stereo delay effects are produced? How is the stereo effect made? Is it just a fade up/down between the left/right channels?

    Reply
    • Tom Wiltshire

      The way you imagine it is exactly the way I’ve done it. The write pointer cycles through the memory, and the read pointer follows along behind. The further behind it is, the longer the delay.
      This method does throw up one or two problems of its own (a variable sampling rate would have different plusses/minuses). For example, how do you change the delay time? If you simply jump the read pointer to the new location, you get an abrupt change in the signal and an audible click. If you twist the ‘delay time’ knob, the repeated clicks become a hideous “zippering” noise. So then you have to think about either speeding the read pointer up with respect to the write pointer to shorten the delay (or slowing it down for a longer delay) or crossfading from the old location to the new. Various different commercial units have used all these methods, and each has advantages and disadvantages. I’m going to try the speeding-up/slowing-down method, because I’d like to have the possibility of modulating the delay time. We’ll see how that goes!

      “Stereo” Delay effects can be generated many, many different ways, but mostly they depend on having different delay times for the two channels, which makes the sound apparently “bounce around” between right and left. Have a look at the “algorithm guide” for the old Boss SE-70 for a few ideas:

      http://cdn.roland.com/assets/media/pdf/SE-70_PA.pdf

      Good luck!

      Reply
  4. neandrewthal

    Whether or not these features are a stock part of the design I would love to have a tap input, tap clock output and a multiplier knob for interfacing with other devices.

    How is the tap function being handled on this? If it was from the Tap LFO chip that you sell then the features I want would be lying dormant within it waiting to be teased out by whomever wants them. If it`s a little dedicated chip like the flangelicious with all it`s features maxed out already that`s a different story.

    Reply
    • Tom Wiltshire

      Tap input is definitely included – I’ve done that one already. Tap Clock output is not very likely, although I’ve got a Tempo LED output. I’ve been using PWM to make a “flash with decay” on the LED, so it’s not ideal as a clock output. Perhaps it would be better just a simple square wave so that it could also be used as a Clock output too. Pity, because visually it doesn’t look as good. I’ll think about that one.
      Multiplier knob is pretty much certainly not going to happen, since I’m out of ADC inputs. But with the tap input, you ought to be able to use a TapLFO to sync it up at pretty much any speed you want.

      Reply
      • neandrewthal

        Ok. I can live without the multiplier.

        Im only one person, but I would strongly prefer a square wave for syncing multiple effects, even if the LED blink isnt as good. Then I would be able to multiply up and down the other effects I am syncing (provided they have a multiplier knob of course!)

        Any idea yet on what enclosure size it will fit into?

        Reply
    • Tom Wiltshire

      Hi,
      I got stuck trying to work out how to deal with the delay time modulation, so I’ve been taking a break from it to see if anything occurs to me. What I should do is get what I’ve got so far online though, and let you all have a look. It’s all functional apart from changing the delay time, which is glitchy. I’ll try and make time to get the schematic and current code up.

      Reply
  5. J. P.

    It seems like a lot of early 8-12 bit delays used companding. Do you think this delay could benefit from that addition (as done in the PT2399 delay you describe)?

    On a side note, I put in my vote for delay modulation to produce flange/chorus effects 🙂

    Reply
    • Tom Wiltshire

      Yeah, if you’re concerned about noise, then companding will help. It’s not a perfect process, so it can affect the dynamics somewhat. Perhaps that doesn’t matter too much since it’s only on the echos.
      My prototype is quiet, but by no means silent, but I’ve only got 12dB filters before and after the delay, whereas I’ve put 24dB filters in the schematic. That should help keep the noise down further too, since a lot of what I’m hearing is digital hash and would filter out quite well. When I do a PCB I’ll find out.
      Your vote for delay modulation is noted. I think what I’m going to do is get Version One out in the world as soon as I get the glitches out of the Delay Time knob. This uses a fixed sample rate and doesn’t include delay time modulation.
      After that, I might do an alternative firmware (Version two) using a variable sample rate, which makes delay time modulation a *lot* easier to do, at the cost of lower quality for the longest delays. That may or may not be a significant cost depending on what the final sample rates finish up being. We’ll see when I get there, I guess.

      Thanks for the interest, nonetheless.
      Tom

      Reply
  6. J. P.

    Regarding companding, I actually wonder if that added analog circuitry could explain some of the distinctive sound of the early digital delays (i.e., it might be desirable beyond reducing noise). I imagine that analog filtering closer to the audible range could also explain some of the sound. Good luck with a cool project!

    Reply
    • Tom Wiltshire

      Yes, for sure the compounding adds a certain something. Some of the PT2399 delays that are out there manage to get a pretty accurate “analog” sound by using very dark filtering (3KHz isn’t unheard of) and using the original companders. The same tricks would work equally well on this.
      Some other things have been shuffled on the list, so I’m hoping to get back to this shortly. Watch this space.

      Reply
  7. Tim

    Very cool stuff can’t wait to hear some sounds. I like the idea of 12 bit adc.
    Thanks a lot for sharing all these great projects. Because of you i ordered a programmer and hope to use your designs in a diy synth. Althought i am still a noob 😃

    Not sure but here they are writing about methods to interpolate between samples in delay lines https://ccrma.stanford.edu/~jos/pasp/Delay_Line_Interpolation.html

    What kind of interpolation strategy did you implement?

    Btw someone metioned clock input for tap tempo. I achieved this with a simple tranny as switch on the tap tempo button. Like this i did my first mod ever, did it on a memory boy deluxe and its realy usefull.
    Actually many of the features requested are implement in this delay.. cv controll of feedback would be my suggestion.

    Cheers. Tim

    Reply
    • Tom Wiltshire

      Thanks Tim. As an update, I’ve got a Rev.1 PCB designed which goes off for manufacture this week. Once I’ve got those back, I’ll do the final polish on the code and get it all online. Sorry it’s taking so long.

      I haven’t used any interpolation, since the delay time is altered by changing the distance between the write pointer and the read pointer in the delay. Interpolation would be required if the delay was modulated, but that’s not going to make it into the first version of the code. I might look at doing a variable-sample-rate version for version two (if I ever get that far) which would then allow delay time modulation without the processor hit of interp.
      Tap tempo is included, though. There’s an input for that. And the “Feedback amount” knob is attached to a 0->3.3V CV input, so you could add external CV control of that without too much trouble.

      Tom

      Edit: I’ve been reading the link you posted about delay interpolation. I did in fact implement the crossfade like they talk about in “Large delay changes”, the last section. If you don’t crossfade, you get a glitch when the delay pointer jumps from one place to another.

      Reply
    • Imran attari

      Hello
      I am very interested for this effect processor.
      But I don’t know where to buy this ic.
      You tell me address for buying this ic.
      And tell me this delay only mono or have a with ping pong delay?

      Reply
      • Tom Wiltshire

        I’ll post a link to the relevant shop page when I get it online. I have to check the prototype PCBs and finalise the code first though. The prototype PCBs should be done in a few weeks, and then I’ll need to polish the code and order production quantities of PCBs and chips. This takes a while, but I want it out there before Christmas.
        Thanks for your interest!
        Tom

        Edit: Sorry, forgot to add – the delay is only mono. There’s no second output for stereo, and no ping pong delays. It would be possible, but the current code doesn’t do it.

        Reply
  8. Tim

    Hi Tom thanks a lot for the update. For me it hasn’t be taking long as i just found this project 😃 i will first have to start learning to program pic.

    Cheers

    Tim

    Reply
  9. Will

    Hi Tom… nice project you have, and thanks for sharing to the DIY community! I was just wondering if it’s possible to implement program patches so one could recall them, I mean, I can program various delay settings (with all 5 parameters) and store in some internal memory, and pushing a stompswitch I could recall those programs.

    Thanks!
    Will

    Reply
    • Tom Wiltshire

      Hi Will,

      Hey, nice idea. I’ll have a think about it. I have often wondered about programmable pedals. The trouble is working out the interface. Do you have LEDs to show you which program you’re on? or a 7-segment display? Full-on LCD? Can you edit stored settings? How does the position of the knobs relate to the sound you’re hearing? These are the sort of things that make it less straightforward. But there’s nothing insurmountable!

      Thanks,
      Tom

      Reply
      • Will

        Hi. Thanks for write back. Yes indeed a programmable pedal suposes more complexity in the interface… but looking as an example my Korg 301-dl delay pedal, it has just 2 delay programs that make it very versatile: with one extra momentary stompswitch and a two-color led, besides the on-off effect stompswitch and status led. With this extra switch one can store the potentiometers status in its two programs so it can be recalled later.

        It’s just an idea… 2 delay patches are better than one.

        Thanks again, looking forward for your project! Cheers

        Will

        Reply
  10. Colin

    This seems like this may be a good candidate for a pseudo 16 second digital delay. Ive been trying to come up with a delay that could mimic the functions of the original unit, particularly the “always recording” function of the infinite switch. I’m pretty new when it comes to digital work but would it be possible to be able to infinitely loop one cycle of the delay without filtering (or the ability to add in filtering to emulate infinite filtering of old tape delay units.) Would it then be possible to dd octave/speed doubling or reverse loop type stuff? I’m sorry if these ideas seems way out of the scope of this project, but I really love the old EHX delay, especially what Nels Cline does with it.

    https://www.youtube.com/watch?v=i_fr9hpfQk8

    Reply
  11. Kevin

    Hi
    Its along time since I looked at your site. Nice to see it has expanded and thank you for sharing the code.
    I also can’t wait for this to come out. (Modulation would be nice – but I think I will be buying with or without.)

    Just an idea but could this project be modular?
    I mean sections: 1. the delay line, 2. input-output, 3. program control offering a number of program patches (limited to say 8 patches – how may delay time changes do you need?).
    That way the builder has a choice of how complex a delay they build. Also the ability to add two delay lines in parallel or series may be interesting. I appreciate that the more complex the project, the the bigger the box, but what are 19″ rack units for?
    I also think that a programmable control unit could be implanted into other effects. (How about Flangerlicious with 8 programmable presets now that would be nice!)

    As an aside any chance of a multi-tap version. Say 4 or 5 taps with about 500ms each tap? I was think of the old ADA STD multi tap delay that used a Multi-tap BBD chip (MN3011). I appreciate that this would involve being able to set the length of each delay line individually and may be beyond any reasonable scope for a DIY project – just an idea.

    Kevin

    Reply
    • Tom Wiltshire

      Hi Kevin,

      All good ideas, thanks! For starters, I just want to get what I’ve got so far finished off and ‘out there’, and then I can think about revisiting it and perhaps doing some of the other possibilities. Stereo outputs is another possibility that the chip would be capable of, so there’s a lot of options.

      Tom

      Reply
      • L´Andratté

        “…, but I want it out there before Christmas.”
        Very nice, Tom, to see this happening. Seriously, I have been looking for years for a diy delay just like that. I would also be interested in version 2 happening someday…

        Reply
        • Tom Wiltshire

          Latest news is that I’ve got the prototype PCBs back and they’re working, though they need one or two minor tweaks. I’m currently working on getting the firmware sorted out before I release it. I spoke to my DSP guru friend, and he made several recommendations for improvements that I’m trying to incorporate. These should reduce noise as far as possible and generally improve the audio quality. I’d used only 16-bit variables for the tone filters for example, but for best performance, I should really store 32-bit variables for those filters.

          So it’s coming along.

          Tom

          Reply
  12. Greg

    Great project without being another pt-thingie.

    Any estimation when pic/pcb may be available?

    Reply
    • Tom Wiltshire

      PCBs are ordered and on their way – so probably 2-3 weeks time. I haven’t ordered dsPICs yet, but they have a similar lead time. I’m aiming to get it in the shop by Christmas, but with the way shipping tends to slow to a crawl over the Christmas period, that might be a bit tight. If it’s not Christmas, it’ll be shortly after.

      Tom

      Reply
  13. dronecloud

    Great project! Nice to have more delays accessible that aren’t a pt2399 or fv1. Get people into the advanced stuff. 🙂

    I built a similar one a while back. Pic32 instead of dspic, though.

    Reply
      • Marcus

        Thanks for the nice project!! I don’t see the sync input on the digidelay, only sync out. How can I wire the taplfo into the digidelay?
        Thanks a lot!!

        Reply
        • Tom Wiltshire

          The tap tempo button on the DigiDelay can have a transistor in parallel with it, just like the tap tempo button on the TapLFO. See the right hand side of this schematic.
          Otherwise, you can use the Sync Out on the DigiDelay to the Tap Tempo input on the TAPLFO – it achieves the same thing, but with the Delay being the ‘master’ and the TapLFO being the ‘slave’.

          Reply
    • Tom Wiltshire

      No, TAPLFO not Taptation. The Taptation chip is designed for one thing only – adding tap tempo to the PT2399 using a digipot. The TAPLFO is a bit more general purpose, and one thing it can do is sync to incoming pulses and produce a clock output at some multiple of the input. You could wire it up like the top half of this schematic. You’d be using the clock output, so you can ignore the PWM filtering op-amps on the bottom half of the schematic. Similarly, you could ignore the Waveform and Output Level controls – just use a 10K to 5V for those.

      Reply
  14. Highphi

    Does this circuit have analog feedback like the old Boss DD-2 and DD-3? Looks like an amazing project!

    Reply
    • Tom Wiltshire

      The example schematic I’ve shown doesn’t have analog feedback – the feedback (repeats) are done digitally to save resampling the signal and adding more quantisation noise. But it would be easy to use the chip with analog feedback if you wanted to. Just connect the Repeats CV (Pin 3) to 0V (to disable the digital repeats), and change the input buffer into an op-amp mixer to mix analog feedback. You can use an analog level control too if required; tie the Delay Level CV (Pin2) to 3.3V so the DIGIDELAY chip gives its maximum output, and then control the level with a standard volume pot.
      How many of the digital features you use is up to you, really. You can treat the chip+SRAMs as simply a very long delay line if you want to, and do all the rest in analog – this gives you the option of having other pedals/tone controls/filtering in the feedback loop and so forth.
      My 4 second delay circuit is just an example application circuit for the datasheet, and not the only way you could use the chip by any stretch.
      HTH,
      Tom

      Reply
  15. Phil

    This project, with integrated modulation from a TAPLFO or whatever, would sell like hot cakes.
    Bring on v2.0 !!!

    Reply
  16. Dave H

    So about the 220pf film cap and 100nF ceramic – MLCC? These seem to be somewhat uncommon values in those form factors. Is there a reason that it’s not a 220pf ceramic which is pretty common or a 100nF film which is super common?
    Without going to Mouser just yet, the only place I can seem to source these values is eBay.

    Reply
  17. Paul

    I think Im being a bit dumb, but can this be used as a lo-fi looper pedal. That is, playing a phrase into the pedal, then infinitely repeating it into an amp, and playing un-affected over the top of it. Just like Jaco Pastorius and his MXR blue-face delay solos

    Cheers

    Paul

    Reply
    • Tom Wiltshire

      Hi Paul,

      The DigiDelay doesn’t really do “infinite repeats”, although you could turn the Repeats right up, and then bypass the pedal. In theory this would work, but in practice it would be extremely difficult to balance the Repeats control at just the right point so the repeats neither die a away nor build up to oscillation and distortion. Pedals that are designed for this would stop feeding the delay line and simply play back the stored contents over and over.
      The code is online though, and it wouldn’t be a massive tweak if you wanted to give it a go!
      HTH,
      Tom

      Reply
  18. Juho S

    Hi Tom and thanks for the great project!

    I ordered one of these kits via Musikding and finished it today. Sounds great and has all the functions I want from a delay.
    The PCB and the DC jack were a bit of a pain to fit in together, had to bend the metal parts on the jack to fit the PCB, but otherwise a fun build with good instructions.

    However, now I seem to be having some issues. Occasionally a tapped tempo will change on its own (I believe it goes to the pot value tempo) and sometimes the delays have some unwanted distortion. Also the tempo light either flashes or just stays on all the time depending on whether it is pushed an odd or even number of times, but I’m guessing this might be a feature?

    Could these be just faults in my build? I thought I was careful and made sure that all the solder joints were fine, but perhaps I’ll have to take it apart.
    I made it with the guitar level mod, didn’t have a 27 k resistor, so I used two resistors in series that measured at 27,5 k. Otherwise just used the parts that came from Musikding.

    Reply
    • Tom Wiltshire

      You’ve got it exactly right – it depends whether you press it an odd or even number of times. The delay processor measures the time between two taps to work out the tempo. One the first tap it lights the LED constantly to indicate that it is timing. On the second tap it sets the time and puts the LED back to “rate flashing” mode. If you only tap once (or tap an odd number of times) it will sit there waiting for a second tap that never comes.
      If the tapped tempo sometimes jumps to the pot value, that suggests that the pot output isn’t constant for some reason. The code is set up to only go back to the pot if it detects the pot has been tweaked. If the output from the pot jumps around (like a scratchy or loose pot) then the code would read that as a tweak. Alternatively, if there was a bad joint on the pot, it might affect the output voltage, and that would have the same effect.
      Hope these ideas help you get it sorted.
      Tom

      Reply
      • Juho S

        Okay, I went through the PCB, re-did some joints (and was worried for a while that I might have fried a chip, since I forgot to take them out when resoldering). I also changed the delay pot and cleaned all flux residue that was left on the PCB. Now I noticed that the problem was not the pot or the soldering, but the tap tempo changes to pot value only when it is assembled in the enclosure. I have the pre-drilled box, and used plastic shields on the backs of the pots, but apparently something is still causing problems when it’s boxed up. Good thing I’ve managed to isolate the problem now, though.

        Reply
        • Tom Wiltshire

          Well done, that is progress! Perhaps something is shorting the pot when it’s boxed up and causing the value to jump?

          Keep looking, you’ll find it. Good luck.

          Tom

          Reply
          • Juho S

            Ok, I swapped back the board mount 10k pot for the delay and changed the guitar/line level resistors. Now everything is working as it should, but as mentioned here, there is quite a bit of hiss.

            Having the guitar level mod value resistors was causing some of the problems, especially with humbuckers. Once I was sure everything was working fine in my build, I still had the delay go back to the pot value when hitting the strings hard with a humbucker-equipped guitar. Now that I changed the resistor values to the ones marked on the PCB, everything is working as it should, but the background hiss is quite loud.

          • Tom Wiltshire

            Aha! Now that is interesting. That suggests that the humbucker signal level was enough to overload the dsPIC and cause it to reset (it boots up based on the pot value). One side-effect of the 4-resistors mod is that the overload protection diodes/LEDs also need changing, since they’re before the stage I used to get some gain. Since it isn’t easy to find diodes with a forward voltage of 0.34V (which would be what we need for 0.68V signal level) I never did anything about it, but perhaps you need a “medium” set of resistor values. I’ll email you some things to try.

            Tom

          • Michal Zyka

            I experience the same problem and you guys are right, strumming hard with a humbucker causes the tempo to change based on the pot. I also did the resistor mod for guitar input. What do you guys suggest? Which overload protection diodes/LEDs should I fit in instead?

          • Tom Wiltshire

            The problem is that the guitar level resistor mod boosts the signal *after* the protection diodes, so unless we change those too, they don’t really do anything any more.
            The signal level needs to be limited to around 0.65-0.7Vpp, but that would involve finding diodes with a Vf of 0.35V or so (half of 0.7Vpp), which might be pretty tricky. If it goes above that, the gain in the filter will push it over 3.3V and the dsPIC will overload and potentially reset, which I think is what you guys are seeing. At least, that’s the theory I’m working with until a better one comes along. I haven’t managed to make my units do it yet, but maybe I should just kick them harder!

            I’ll keep you posted if I come up with something.

            Tom

          • Nuno

            Hi all

            I am having the same problem. Did you find any solution already?
            I bought 2 kits from musikding 🙁
            I just built one for now.

            Best regards
            Nuno

  19. Reinaldo

    Hi Juho S and Tom.

    I am just learning about this beautiful project. Please, could you upload some video demo and audio? Thank you. Congratulations again for this work !!

    Reply
  20. Reinaldo

    On the other hand. Could a DSPIC33FJ64MC202 be used instead of the one proposed in the project?

    Reply
  21. Reinaldo

    Hi Tom. I was reading some of the ASM code. If the memory reading pointer that plays the recordings in memory is read from back to front, could a Reverse Delay be played ?. How complicated would it be to add a Switch that allows Digital Delay and Reverse Delay?

    Reply
    • Tom Wiltshire

      It wouldn’t be very complicated, but it isn’t completely simple either. You’d get glitchy jumps in the sound as the two pointers cross over too – that may or may not be a positive effect!
      If you’ve read through the ASM, you’ll have seen that the code deals with the signal in blocks of samples (4ms iirc), so perhaps you could just play back each block in reverse? That would be a simple experiment, at least.
      As for adding a switch, I think there are a couple of IO pins still free on the chip, and I left pads to access them on the PCB in case anyone wanted to add some other feature.

      Do let us know if you come up with something good! I’d love to hear!

      Tom

      Reply
  22. Ward

    I just finished building the digital delay and got some strange things going on . All the readings from the IC’s are OK , but the on/off led is not working , on/off switch is not working , I get only my clean guitarsignal all the time , tap-led is faintly and erraticaly blinking , doesn’t respond to any tapping on the switch . All wiring is ok , components are in the right place , what could be wrong ?

    Reply
    • Tom Wiltshire

      It sounds like the DIGIDELAY isn’t running correctly, although that’s not the only possible cause. Double check the 3.3V supplies (both of them) and make sure that there are no shorts around the DIGIDELAY’s 28-pin socket.
      The On/Off LED, Tempo LED, and Tempo footswitch are all controlled by the code, not by the hardware, so weirdness there means the delay processor chip isn’t happy. It’s generally an all-or-nothing thing – if it’s running, it’ll do its job fine, if not, nothing will work.

      Given that only one thing is playing up (the processor) you’re probably looking for one fairly simple cause. Find that and I wouldn’t be surprised if it all suddenly springs to life.

      Good luck!
      Tom

      Reply
      • Ward

        Well , I finally found the time to check for shorts , faulty soldering or wiring and the chip . Every thing is allright , readings still good , but the problem remains . Think I’ll order another one and see what that has in store for me .

        Reply
  23. Ke4rry pedersen

    Hi after building 3 of the delays I still find even with the mods as suggested,it is still quite noisy,any further ideas that can improve this,it does have nice clean delays though,regards,Kerry.

    Reply
    • Tom Wiltshire

      Hi Kerry,

      If I come up with anything else that can help. I’ll be sure to tell you, but the fundamental limitation is the performance of the DAC on the dsPIC. If I’d used a external codec chip, I could have got a lower noise level, but it would have had to be SMD, which I was trying to avoid. It’s a compromise.
      What I’m thinking is that for a future project, I might do a pre-built “delay module” on a little PCB with surface-mount dsPIC, SRAMs and Codec on the board – all the digital side, basically. That would then be a useful little module that people could use to get good quality digital delay and which could be added to whatever analog circuit you wanted – you could replace the long BBD in your favourite analog pedal or rack unit, for instance. But that’s a long way off currently.

      Tom

      Reply
  24. Jo

    Hi, I’ve bought a kit from “Musikding” in Germany a few days ago and ran into exactly the same problem as user Ward described. The direct analog path is working fine, but nothing else except erraticly and faint blinking of the Tap led! After triple checking the PCB for bad soldering joint or unwanted tin bridges (believe me i have more than 20 years of soldering experience and I know how to handle chips) I fired up my old oscilloscope and had a look at the dsp-chip and the voltages. All voltages measured directly at the dsp’s pins are at correct voltage without any noise or spurious oscillations, but the dsp is definitely not running except erratic short pulses at the Tap led pin. So could it be a good idea to try an additional capacitor connected to the \MCLR pin as described the datasheet, or do you have a different idea whatelse might have happened?

    Reply
    • Tom Wiltshire

      If you’ve got an oscilloscope, can you see SPI communications between the chip and the SRAM? That would be a clue as to whether something was happening or not.

      It’s difficult to debug things remotely like this – email me and we’ll talk about it further.

      Tom

      Reply
    • Ward

      Hi Jo , just wanted to ask you if you made any progress with the delay , I surely didn’t .

      Reply
  25. Dutch

    Hi Tom,

    I just purchased the kit at Musikding, and I’m looking forward starting this build somewhere next week!

    Regarding the four resistor option, I can’t seem to make up my mind what in my situation would be the best way to go.
    I mean, with a maximum input signal of 0,68 mVpp it would probably work fine with a single coil pu straight into the
    delay. However, with some additional pedals in front of the delay, the signal will most likely exceed this 0,68 mVpp treshold …

    I’m not sure if it would fit on the PCB, but what if I would use 4 (5mm) trimpots used as variable resistors, so I can dial in
    the ideal signal voltages to obtain the best S/N ratio? Perhaps 4 (parallel) fixed resistors on a 4PDT switch could be an
    an option as well?

    Any thoughts on this would be highly appreciated!

    Regards
    Dutch

    Reply
    • Tom Wiltshire

      The four resistors are part of a filter, and changes to them don’t only alter the gain but also the cutoff and resonance of the filter. So getting sensible settings with four presets would be virtually impossible. Instead, it would be much better to set the pedal up with the “guitar level” resistors, and then add a trimpot or variable resistor to allow you to cut the level going into the pedal if you’re using lots of loud pedals ahead of it.
      HTH,
      Tom

      Reply
      • Dutch

        Sorry Tom, I should have checked the schematic here, it’s not included in the MD doc’s …
        Nevertheless, I see what you mean, shouldn’t be to hard!

        Greetz
        Dutch

        Reply
  26. Reinaldo

    Hello Tom. Now this week I will make the purchase of the DsPIC and Memories in SMD (surface mount). My idea is to design a PCB but, if possible, all Surface Mount. I hope I have no problems with circuit programming. I have a PicKit 2. Do you have any idea if you can with this recorder? Once I have the card ready with the components I think I’ll try the original code and if everything is in order I’ll start with the delay reverse tests.

    Reply
    • Tom Wiltshire

      If you’re using the 33FJ64MC202 dsPIC you mentioned earlier, you won’t be able to use the original code without modifications, and you’ll need a DAC too, since the ‘202 doesn’t include one. If it’s the 33FJ64GP802 you’re using in SMD format, it should be fine. Doing it in SMD would enable you to get the board size right down.

      Good luck!
      Tom

      Reply
  27. mirosol

    Finished mine with guitar resistor values today, but the hiss/noise is appearing at the audible mid frequencies. This is quite annoying and practically rendering the circuit unusable. At least for my pedalboard. Good set of features, fun project to build, but unusable pedal. I guess the next version will utilize compander? If so, add a modulation circuit ni there as well.

    Now let’s see if i can flip this pedal…

    Reply
    • Tom Wiltshire

      Sorry to hear you’re not happy with your pedal. The trouble with white noise hiss is exactly as you described – since it is broadband noise, it can’t be completely filtered out.
      If there’s another version, I shall be using a better DAC and eliminating the problem at its source. That said, a compander on this design would help to some useful degree.

      Tom

      Reply
  28. Mathieu

    Hello.
    I just finish to build it (with resistors for synth, I will probably test to change for guitar level). I have got 2 serious troubles:
    I have got a white noise ever (even with dry signal only) !
    Sometimes (only with delay), there is a very hard noise at 6,5KHz.
    I checked and re-checked, I don’t find what’s going wrong…

    Reply
  29. Markus

    Hello,
    I am going to start building this project soon. I am wondering about two things.

    a) What means the schematic comment “8ms Pulses” at the Sync Output ? I understand the pulses are 8ms wide, repeated by the current delay setting ?
    I want to use that Pulses to put it into a Raspberry to calculate/display the current delay time (or dotted eight).

    b) Any ideas how could I determine my “guitar level” in upfront ? Do I have to plug my guitar to a oscilloscope (that I don’t have) to measure it ?

    Reply
    • Tom Wiltshire

      (a) Yes, the pin outputs 3.3V, 8msec pulses as you thought. You could measure the time between them with the Raspberry and display the delay time.
      (b) This is tricky. A multimeter isn’t going to respond quick enough, and won’t give an accurate result for a complex signal like guitar output anyway. Sorry, I don’t know a better way.

      Tom

      Reply

Leave a Reply

Your email address will not be published. Required fields are marked *