Hi,
I've done that kind of ABA tracks decoding several times for different platforms and on several languages, mostly C and Assembly language.
My work was mostly uProcessor oriented (PIC, Z80, COP8, Rabbit and x86) and performed the decoding in real time (as the pulses com from the magstripe head.
The PC based version was written in the late 80's in Assembler and implemented in a DOS resident program (TSR if you are more than 40y old, jeje) and was capable of decoding in real time a magstripe card swiped on any direction (bidirectional reading)
I'm aware of the different codings on the 4 available tracks in the ABA-defined magstripe. Usually, only tracks II & III (5 bits) are used by ATMs, but Track I (7 bits) usually carries alphanumeric data such as cardholder name. Have recorded all tracks in the WAV ?
I have several of these routines written in C and varied kinds of assembly languages, please, let me know on what kind of platform would you need the decoding routines running (Windows EXE, console app, DLL,.NET Assembly ?)
I never tried to decode the ABA magstripe coming recorded on WAV/PCM files, but it could be fun to try it.
The code performing the decoding already exists and is working on several embedded devices still working nowadays on banking applications in my country, the delivery time mostly takes into account to take the dust off them, adding comments and adapting/recoding it on the language/platform of your choice.
Please take into acount that timings in ABA magstripe streams could be stressing for some languages/platforms. Pulses can be as fast as 400 usecs apart (according to ABA standards, faster in case of manual swipes) Not any language/platform can keep pace with that (specially runtime or "managed" environments like .NET) but having the magstripe recorded (instead of real time) could ease the job.
Please feel free to contact me for any clarification or question you may have.
Regards,
Alberto Lopez