Thank you! Currently, I just input the bpm, and it resyncs every time it loops. However, for the full Steam release I'm changing it to use a more accurate AudioSettings.dspTime!
For the visualizers, I use the built in GetSpectrumData function and scale the sprites off the strength of each channel.