Asynchronous I2S FIFO project, an ultimate weapon to fight the jitter

I would like some help in choosing the best possible configuration, so I would like to ask: what are Shield_Pi, Station_Pi, SC Pure, ReClockPi, and what do they do? Should I include them in the configuration?if yes, where?
Shield_Pi and Station_Pi address problems that have been known for several years. First of all, RPi is a strong source of radiated and conducted EMI/RFI that can and will adversely affect the sound of devices higher up in the stack. Station_Pi moves RPi to a shielded and somewhat isolated location, and the rest of the stack on clean power.

The next problem is that FIFO_Pi itself is an emitter of radiated EMI/RFI that has been shown to adversely affect dac sound. IIRC Shield_Pi was to go between FIFO_Pi and the dac to help clean up the dac sound.

Also IIRC, ReClockPi exists because FIFO_Pi doesn't have an ideally clean reclocker, its too close to other noisy circuitry in FIFO_Pi. Therefore a secondary reclocker was created to do the final reclockinig.

SC Pure are Ian's best clocks. Do they help? IME they do but it takes them about a week a continuous running to fully develop their final sound. Ian recommends to keep them running at all times. 10minutes off may be okay, but 30minutes off may require some hours to settle down again. That's the way the very best dac clocks are, nothing wrong with needing to stay warmed up. Clocks are very sensitive RF analog devices, not digital. The analog part is the time between clock edges, which is not something discrete like ones and zeros.

Everything Ian sells has some purpose, so its probably better not to ignore things if you don't know what they are. IME the station_Pi and Shield_Pi are more important than battery power supplies.

Regarding transformer output for ES9038Q2M, IMHO that's a failure of good design. The ESS dacs can run in voltage mode but distortion is higher than if they are run in current mode. Only a good, clean opamp output stage can serve ESS dacs with what they were designed for. Using a particular resistor to tune the sound may do something to help, but its still a distorted hack in my personal opinion. IME and IMHO there are other diy dac projects in the forum that could benefit from FIFO_Pi and other Ian products, and other dacs could probably end up giving better sound than ES9038Q2M or similar chips. Again, this is my personal opinion based on my personal experience.

Also, it appears one of the problems with people using some Ian products with other dacs is that many people don't know how to solder SMD, and or don't know how to interface devices if they can't be simply plugged together in one stack. IMHO, such people don't know what they are missing in terms of what kind of dac sound quality is possible with a little more knowledge and experience.
 
@Markw4
Ok, thanks for the feedback. So, from your point of view, which components would you recommend for building a streamer? At the moment, I don’t intend to use Ian Canada’s DAC, but only a streamer to send the signal to my Arcam rDAC or Cambridge Audio Magic DAC 100. Which Ian Canada components (both functional and power supply) would you suggest?


Thanks a lot!
 
...only a streamer to send the signal to my Arcam rDAC or Cambridge Audio Magic DAC 100...
If I could stream from RPi to my dac using USB, that would always be my first choice. Using SPDIF and or TOSLINK just opens a can of worms involving clock jitter. IMHO, better not to go there if you don't have to.

Moreover, using FIFO_Pi just to send SPDIF would be silly. The SPDIF connection would add jitter right back into the audio signal.

The only thing FIFO_Pi and or any reclocker should be used for is as the very last step of processing before going into the dac's I2S input.
 
Last edited:
Shield_Pi and Station_Pi address problems that have been known for several years. First of all, RPi is a strong source of radiated and conducted EMI/RFI that can and will adversely affect the sound of devices higher up in the stack. Station_Pi moves RPi to a shielded and somewhat isolated location, and the rest of the stack on clean power.

The next problem is that FIFO_Pi itself is an emitter of radiated EMI/RFI that has been shown to adversely affect dac sound. IIRC Shield_Pi was to go between FIFO_Pi and the dac to help clean up the dac sound.

Also IIRC, ReClockPi exists because FIFO_Pi doesn't have an ideally clean reclocker, its too close to other noisy circuitry in FIFO_Pi. Therefore a secondary reclocker was created to do the final reclockinig.

SC Pure are Ian's best clocks. Do they help? IME they do but it takes them about a week a continuous running to fully develop their final sound. Ian recommends to keep them running at all times. 10minutes off may be okay, but 30minutes off may require some hours to settle down again. That's the way the very best dac clocks are, nothing wrong with needing to stay warmed up. Clocks are very sensitive RF analog devices, not digital. The analog part is the time between clock edges, which is not something discrete like ones and zeros.

Everything Ian sells has some purpose, so its probably better not to ignore things if you don't know what they are. IME the station_Pi and Shield_Pi are more important than battery power supplies.

Regarding transformer output for ES9038Q2M, IMHO that's a failure of good design. The ESS dacs can run in voltage mode but distortion is higher than if they are run in current mode. Only a good, clean opamp output stage can serve ESS dacs with what they were designed for. Using a particular resistor to tune the sound may do something to help, but its still a distorted hack in my personal opinion. IME and IMHO there are other diy dac projects in the forum that could benefit from FIFO_Pi and other Ian products, and other dacs could probably end up giving better sound than ES9038Q2M or similar chips. Again, this is my personal opinion based on my personal experience.

Also, it appears one of the problems with people using some Ian products with other dacs is that many people don't know how to solder SMD, and or don't know how to interface devices if they can't be simply plugged together in one stack. IMHO, such people don't know what they are missing in terms of what kind of dac sound quality is possible with a little more knowledge and experience.
This is interesting, thank you for sharing. I will add a shieldPi between FifoPi and ES9038Q2M DAC. (I have StationPi > FiFoPi > ES9038Q2M > I/V transformer)
Btw, what DAC would you recommend to achieve better SQ than ES9038Q2M ?
 
If I could stream from RPi to my dac using USB, that would always be my first choice. Using SPDIF and or TOSLINK just opens a can of worms involving clock jitter. IMHO, better not to go there if you don't have to.

Moreover, using FIFO_Pi just to send SPDIF would be silly. The SPDIF connection would add jitter right back into the audio signal.
I fully agree. However, my best choice would would be I2S over HDMI if the dac has this input available.
Second choice would be USB.
 
This is interesting, thank you for sharing. I will add a shieldPi between FifoPi and ES9038Q2M DAC. (I have StationPi > FiFoPi > ES9038Q2M > I/V transformer)
Btw, what DAC would you recommend to achieve better SQ than ES9038Q2M ?
My first choice for a diy dac would be the one in the second pic at: https://www.diyaudio.com/community/threads/general-purpose-dac-clock-board.413001/post-7688633
My 2nd favorite clocks for that dac are Ian's SC Pure. Also, all the stuff in the pic is needed to make the dac sing. That said, its a complete galvanically isolated USB dac. However, there is still some work being done on an alternate output stage by some guys in England.

Also, a simplified clock and reclocker board which is quite good is also available: https://www.diyaudio.com/community/...2soverusb-pcm2dsd-rtz-dac.423401/post-7917601 It can replace some of the boards in the pic referenced in the first paragraph above.

One thing to notice about that particular dac is there is no dac chip. Its entirely discrete. And it works great with transformer output too.
 
Last edited:
I fully agree. However, my best choice would would be I2S over HDMI if the dac has this input available.
Second choice would be USB.
Actually, that's not usually true. A dac usually works best with the master clocks located right next to the dac chip. OTOH, I2S over HDMI involves LVDS to LVCMOS converter chips, which add jitter to the clocking. Also, LVDS is not in and of itself a reliable way to transport an SOA low close-in phase noise MCLK from one place to another. Sometimes people think it is more reliable low jitter transfer format than it is. An MCLK output remains a very sensitive analog signal.

Now, some dacs may sound better with I2S over HDMI but that's just because they are designed with low-cost, low-performance clocking to begin with. Putting a much better clock in an external box may make the dac sound better than stock, but not generally better than if the dac was better designed to begin with.
 
Last edited:
  • Like
Reactions: MathieuDoe
Actually, that's not usually true. A dac usually works best with the master clocks located right next to the dac chip. OTOH, I2S over HDMI involves LVDS to LVCMOS converter chips, which add jitter to the clocking. Also, LVDS is not in and of itself a reliable way to transport an SOA low close-in phase noise MCLK from one place to another. Sometimes people think it is more reliable low jitter transfer format than it is. An MCLK output remains a very sensitive analog signal.
You clearly know way more than me ☺️ Thank you for sharing.
So the best way, better than USB, would be an integrated DAC like Ian's full setup - ie. with FifoPi sharing MCLK directly to the DAC with the shortest possible cable, isn't it ?
 
Last edited:
A USB dac doesn't need a FIFO board.

FIFO_Pi is an alternative solution to an ASRC. Those things (FIFO, ASRC) are used when there are two clock domains that have to be bridged. Its a problem that exists with SPDIF, TOSLINK, and AES (but not with modern asynchronous USB). The tradeoffs between FIFO and ASRC are that FIFO can be bit perfect at least for awhile. Eventually its buffer my underflow or overflow so tricks may be needed if that starts to happen. Sometimes brief moments of silence or clock family changes allow a FIFO to reset its Buffer to half-full. In any case a FIFO buffer introduces an audible time delay, so its not good for watching a move while listening to the sound, as actor lip movements do not line up with the audio they are speaking. The effect can be rather annoying.

OTOH, an ASRC is closer to instantaneous, but much less close to bit-perfect than FIFO (although it have been pretty convincingly argued that bit-perfect is overrated and very, very easy to lose, such as perhaps by changing the volume level digitally in the computer). IME the biggest problem with ASRC chip sound is that part of it is still analog, and thus sensitive to power supply noise, and somewhat sensitive to incoming clock jitter. IOW, an ASRC can attenuate incoming clock jitter to an extent, but probably not nearly as well as a FIFO Buffer.

I should also mention PLL as a solution. Its an old way that is considerably less effective at attenuating clock jitter than ASRC. If interested in how ASRC chips work, there is a thread by forum member Werewolf that explains it quite well.
 
Last edited:
  • Like
Reactions: MathieuDoe
A USB dac doesn't need a FIFO board.

FIFO_Pi is an alternative solution to an ASRC. Those things (FIFO, ASRC) are used when there are two clock domains that have to be bridged. Its a problem that exists with SPDIF, TOSLINK, and AES (but not with modern asynchronous USB). The tradeoffs between FIFO and ASRC are that FIFO can be bit perfect at least for awhile. Eventually its buffer my underflow or overflow so tricks may be needed if that starts to happen. Sometimes brief moments of silence or clock family changes allow a FIFO to reset its Buffer to half-full. In any case a FIFO buffer introduces an audible time delay, so its not good for watching a move while listening to the sound, as actor lip movements do not line up with the audio they are speaking. The effect can be rather annoying.

OTOH, an ASRC is closer to instantaneous, but much less close to bit-perfect than FIFO (although it have been pretty convincingly argued that bit-perfect is overrated and very, very easy to lose, such as perhaps by changing the volume level digitally in the computer). IME the biggest problem with ASRC chip sound is that part of it is still analog, and thus sensitive to power supply noise, and somewhat sensitive to incoming clock jitter. IOW, an ASRC can attenuate incoming clock jitter to an extent, but probably not nearly as well as a FIFO Buffer.
I don't need lipsync at all, so Fifo is perfect for my needs 😉
 
...so Fifo is perfect for my needs...
Okay, then I might mention there is a forum member I have been helping via PM. He is using a FIFO_Pi but I'm not sure which version. He is finding the sound not to his liking, which made me wonder how FIFO_Pi is doing as a clock module host these days. Also, I have an old first version FIFO_Pi here. The clocks we tried back then all sounded awful. That includes NDK SDA, and Crystek. Hard to tell if one was better than the other although they were both bad.

More recently I designed a clock board open source project in the forum to share. Reason for that was I found problems the sound of my clocks in FIFO_Pi and my clocks from Andrea Mori (a well known clock guy). I found out that ferrites and nonlinear capacitors were affecting dac sound, so I designed those components out of my circuits.

Getting back to the one of the guys I help via PM, I recently suggested he switch to my clock board to host his clock modules, then send copies of the clock signals to his FIFO_Pi. Then I suggested to use another copy of the clocks on my clock board to drive my reclocker board after FIFO_Pi. Reason I suggested that is because I think its likely to sound better that way then if the clock modules are powered by FIFO_Pi. That said, I haven't looked at how Ian's present clock powering, buffering, etc., is designed these days. Pretty sure mine is going to turn out to sound better, at least until Ian maybe comes up with FIFO_Pi Q8, or whatever the next version will be.
 
  • Like
Reactions: Clausen
Okay, then I might mention there is a forum member I have been helping via PM. He is using a FIFO_Pi but I'm not sure which version. He is finding the sound not to his liking, which made me wonder how FIFO_Pi is doing as a clock module host these days. Also, I have an old first version FIFO_Pi here. The clocks we tried back then all sounded awful. That includes NDK SDA, and Crystek. Hard to tell if one was better than the other although they were both bad.

More recently I designed a clock board open source project in the forum to share. Reason for that was I found problems the sound of my clocks in FIFO_Pi and my clocks from Andrea Mori (a well known clock guy). I found out that ferrites and nonlinear capacitors were affecting dac sound, so I designed those components out of my circuits.

Getting back to the one of the guys I help via PM, I recently suggested he switch to my clock board to host his clock modules, then send copies of the clock signals to his FIFO_Pi. Then I suggested to use another copy of the clocks on my clock board to drive my reclocker board after FIFO_Pi. Reason I suggested that is because I think its likely to sound better that way then if the clock modules are powered by FIFO_Pi. That said, I haven't looked at how Ian's present clock powering, buffering, etc., is designed these days. Pretty sure mine is going to turn out to sound better, at least until Ian maybe comes up with FIFO_Pi Q8, or whatever the next version will be.

Wow, I don't know what to think... I have the latest FifoPi Q7 II and it is powered by ultracapacitors for the clock section and a +5V separated from the RPi for the digital section. I have SC PURE clocks (https://iancanada.ca/products/sc-pure-extremely-low-phase-noise-audio-clock).
So far, my build is one of the best sounding streamer/dac I have heard in my system... but I always want more 😉 I'm really open to understand further and open to build things. I don't know how to compare your solution with what I have...
 
  • Like
Reactions: Clausen
Ian and I have talked privately a few times.

However, I think its like this: Nobody is always #1 at building dacs and circuitry that works with dacs. One guy may get ahead for awhile, but then the other guy catches up or jumps a bit ahead. The main difference between Ian and me is Ian is in business and I share what I find out and give it away for free.

The reason I started talking in this thread is because I became concerned the people here are like the blind leading the blind. Nobody really knows what they are doing, and Ian isn't always here to advise.

The fact is if I needed a FIFO I would probably buy Ian's latest and check it out. I just don't happen to need a FIFO at the moment. Also, IMHO he is overdue to come up with a better dac solution. People here don't know any better than to buy whatever Ian sells. Some of his stuff is really good, like the SC Pure clocks are, and other stuff maybe not as good. Isn't telling the truth about something a defense against accusations of libel? I'm not out to hurt Ian, and I'm not out to make money off of his customers. Just here to tell the truth as I see it.

Also, this thread is in the public part of the forum where different opinions can be discussed. Ian's commercial threads are in the commercial part of the forum. What is appropriate to talk about here versus what is appropriate there are two different things.
 
Ian et moi avons discuté en privé à plusieurs reprises.

Cependant, je pense que c'est comme ça : personne n'est toujours le meilleur dans la fabrication de convertisseurs N/A et de circuits compatibles. L'un peut prendre de l'avance pendant un certain temps, puis l'autre rattrape son retard ou prend un peu d'avance. La principale différence entre Ian et moi, c'est qu'Ian est dans le business et que je partage mes découvertes et les distribue gratuitement.

Si j'ai commencé à parler dans ce fil de discussion, c'est parce que je craignais que les gens ici ne soient comme des aveugles qui guident d'autres aveugles. Personne ne sait vraiment ce qu'il fait, et Ian n'est pas toujours là pour me conseiller.

En fait, si j'avais besoin d'un FIFO, j'achèterais probablement le dernier d'Ian pour le tester. Je n'en ai tout simplement pas besoin pour le moment. De plus, à mon avis, il est grand temps qu'il trouve une meilleure solution de convertisseur N/A. Ici, les gens ne savent pas quoi faire, mais achètent tout ce qu'Ian vend. Certains de ses produits sont vraiment bons, comme les horloges SC Pure, et d'autres moins. Dire la vérité sur quelque chose n'est-il pas une défense contre des accusations de diffamation ? Je ne cherche pas à nuire à Ian, ni à me faire de l'argent sur le dos de ses clients. Je suis juste là pour dire la vérité telle que je la vois.

De plus, ce fil de discussion se trouve dans la partie publique du forum, où différentes opinions peuvent être débattues. Les fils de discussion commerciaux d'Ian se trouvent dans la partie commerciale du forum. Ce qui est approprié à aborder ici et ce qui est approprié sont deux choses différentes.

I appreciate.
I've discovered Ian's solutions, and sincerely I'm really happy of what I have built so far : it was easy and not so expensive compared to commercial streamer/dacs , and it really outperforms most of them. Thanks to Ian I have started a DAC in DIY mode... I would probably never have started without his products.

However, I really want to build the best streamer/dac that I possibly can.
Can you advise me for the whole setup, please ? I am handy and willing to learn.
 
  • Like
Reactions: Clausen