I have managed to get my IGT signal from my ecu, which is already a square wave pulse around 5v, and run it into my Presonus Firebox interface. I simply used a chassis ground as the negative. In Max MSP, I utilized the external [sigmund~] to analyze the signal and spit out a clean accurate hertz value.
The IGT signal puts out 2 pulses per crank revolution, which amounts to 25 hertz @ 750 RPM (idle) and 250 hertz at 7500 RPM. Thankfully, [sigmund~] operates well all the way down to around 10 hertz, which is lower than I need (300 RPM). So, at my redline of 7400 RPM, I set up a dial object with a max range of 246.669998 and connected the hertz value from [sigmund~] directly to it. I can easily direct any signals below 10 hertz to register as zero RPM.
Amazingly, the signal is clean and clear with no blips or flutters, so no need for any smoothing or averaging. The resulting virtual RPM dial is also more accurate and responsive than my oem Toyota tachometer, easily evident with small throttle increases.
There is also a nice oscilloscope (thanks to [scope~]) displaying the square wave IGT signal.