Instead of using an amp, I have a cheap adapter that allows me to plug my guitar cable into the 3.5mm audio input port on my laptop. I then use pactl load-module module-loopback latency_msec=1 to route the input to my speakers and play guitar that way. This method has two issues, namely, latency starts off being unnoticeable but slowly increases until there is a very minute but noticeable delay between hitting a string and hearing it through the speaker and a lot of white noise present as long as the guitar is plugged in. I have tried using pactl load-module module-echo-cancel instead of the former command to a moderate amount of success, but that module sometimes nerfs the notes played instead of the white noise. Is there any way to minimize the amount of white noise present? Would insulating the cables further help? I am using Linux.
Edit: Decreasing the gain of the microphone port helps but then I lose the compressed sound effect, which I wouldn't like to do.
Pulseaudio is not really intended for realtime operations: use jackd for that instead. That will help with making latency more predictable. However, the combination of "cheap adapter" and "audio input port on laptop" is good for a lot of white noise and that's not really something that software has a reasonable chance to fix. An external audio card with a high impedance input (or "Instrument" input) in connection with jackd should allow you to set up reliable operations, though using the laptop speakers will require stuff like zita-j2a since then you are dealing with two audio cards.
Another option for getting latency under control would be to set up monitoring on your laptop audio (assuming it offers that) bypassing pulseaudio and other software solutions entirely. But that will not help against white noise.