We had a lot of discussion in the daisy slack about this, here is a link to one of these threads.
I’ll post a part of my reply from that thread here, but before I do that, please note that my knowledge is also limited. I have a diploma in electrical engineering and >10y of synth DIY experience, but my hands on experience with the daisy is not deep enough to really give you specific guidelines and best practices. I think @shensley or @raf can probably give you some more practical hints and tips. What I can try to contribute is a more theoretical understanding of where the noise comes from and how it could be eliminated.
That being said, here is my reply from the slack thread:
The seed pulls current from the power rails as needed and that current is not continuous, it varies depending on what the circuitry inside the chip is doing. All current that enters the positive power pin eventually leaves the Seed through the negative power pin and flows back to the power supply through the ground wires. This is what’s called a return current.
This can be mitigated by lowering the blocksize
Sure, you can spread the processing load to make the currents less “spikey” == less audible. But that is close to impossible to achieve unless you’re willing to completely destroy the structure of your software code (by artificially spreading code execution out and making it pretty much unmaintainable and unreadable) - or reduce the block size and live with the reduced processing power (!).
This is not a real solution, more of a hack, IMHO.
The better, safer, cleaner way of dealing with this problem is to make sure that the return currents take a path that doesn’t affect the GND referencing in the circuit. As I wrote in my last post, that is:
- the current passes through a dedicated wire back to the power supply so that the voltage delta it produces doesn’t affect the GND references (star ground)
- The GND traces are thick and have low resistance (reducing the voltage delta that the current can generate)
- the current passes straight back into low ESR bulk capacitance located close to the power pins (high quality bypass caps)
- The current doesn’t even pass through the GND at all, e.g. by generating the 5V from -12V and 12V as done on the Daisy Patch
And from another reply in that thread:
If you draw yourself a little diagram of the GND connections in your circuit, you can trace how the parts connect together and where they share a GND connection. The problem is that any current in a conductor results in a little voltage fluctuation across the conductor (Ohms law). If you imagine the following situation:
Audio Jack GND --------------------+--------- Power connector
Seed AGND -----\ /
Seed DGND -------+-------------/
Now think about where currents flow through the system:
Any power supply return current flowing out of the Seed DGND back into the power connector will create a little voltage delta along the path it takes (imagine the traces as a string of very small resistors). The Seed AGND shares a lot of the distance with those noisy digital return currents. That means that the voltage delta introduced by the DGND return current will also be visible when you measure the voltage between the Seed AGND pin and the power connector. More critically, though: The voltage delta will also be present between the Audio Jack GND and the AGND, meaning that your audio signal will be noisy: The equipment plugged into the jack will measure the audio signal relative to the jacks GND pin and the DAC on the Daisy will output the signal relative to its AGND pin, but there’s this voltage delta between the two. There’s your source of noise.
You can reduce the effects by:
- making the ground traces thicker => less resistance => less voltage delta. This will however push some of the noise back into the rest of the world, e.g. your eurorack power bus (which als has a nonzero resistance and has the same voltage-delta-problem between its various modules)
- reducing the noise in the DGND return current, thus reducing the voltage delta towards a small, inaudible DC offset
- You can do this by spreading the processing load of the Daisy (as suggested by reducing the block size)
- You can do this by adding bypass caps really close to the Daisy Seeds supply pins, so that the return current spikes out of the DGND pin can flow through the capacitor instead of directly going back into the power input. To reduce the effect even more, you can connect that capacitor directly to the 3.3V and DGND pins, and add a small resistor (e.g. 10 Ohms) between the 3.3V and the power supply. This will make the currents prefer the path through the capacitor instead of the path through the power supply. In addition you should pick a capacitor with a low ESR (equivalent series resistance) so that the return current prefers the path through the capacitor even more.
- separating the return current paths such that the voltage delta created in one path doesn’t affect the other path => this is commonly referred to as a “star connection” or “star GND”
All of the above can be combined. It’s good practice to always do the start grounding pattern and additionally provide low ESR bypass capacitors to each of the components for exactly these reasons.