to create a new IATA magstripe WAV: first, create the binary using cmsb.py: ./cmsb.py 1 "%B4929555123456789^MALFUNCTION/MAJOR ^0902201010000000000000970000000?" 20 make sure the fields are the correct size and you've got start sentinel (%) and end sentinel (?). the leading '1' means create track1 data, which is a different character set from tracks2/3. for ABA tracks, specify 2 or 3 instead. the trailing '20' is the number of leading/trailing zeros to put into the binary - 20 seems about right. these are required for the reader to set up it's clocking - not enough and you'll get read errors or corrupted data (note that because of the self clocking nature of the readers, this can mean that the errors don't appear until several bytes into the data). now take the resulting binary and create a WAV file using cab.py: ./cab.py new.wav 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101000101000110010101100110001001011001100101010010101001010100100010101001011100100001010110101000110100111010100011011001100011111010110111000011001101001100101010111011101111000100010110100101011110100111011111100110110111000011010101011110100100110000000100000010000001000000100000010000001000000100000010000001011111000001001001100000010001001010100101000010010001010000100100010100001000000100000010000001000000100000010000001000000100000010000001000000100000010000001001001100111010100001000000100000010000001000000100000010000001001111100110111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 15 the trailing '15' in this case is the number of samples per bit - values in the range 5 - 45 seem to work for the MAKSTRIPE reader, but this will vary according to hardware. LRC (longitudinal redundancy check character) is automatically generated and appended for you. enjoy, MM