#!/usr/bin/python # -*- coding: latin-1 -*- # - converts mc1000 binary cassette file into wav file - Paulo Silva (GPL licence) import os,sys avl=0 finp_st=sys.argv[1] if finp_st!="": avl=1 else: print "argv is empty" if avl==1: foutraw_st=finp_st+".raw" foutwav_st=finp_st+".wav" finp_fl=open(finp_st,"r") foutraw_fl=open(foutraw_st,"w") print os.path.getsize(finp_st) #-fix... for i in range (0,4096,1): for j in range (0,4,1): foutraw_fl.write(chr(0)) for j in range (0,4,1): foutraw_fl.write(chr(255)) for i in range (0,256,1): for j in range (0,8,1): foutraw_fl.write(chr(0)) for j in range (0,8,1): foutraw_fl.write(chr(255)) while True: byte_st=finp_fl.read(1) if len(byte_st)==0:break for j in range (0,4,1): foutraw_fl.write(chr(0)) for j in range (0,4,1): foutraw_fl.write(chr(255)) u=ord(byte_st) p=1 for i in range (0,8,1): if u&(2**i)!=0: for j in range (0,4,1): foutraw_fl.write(chr(0)) for j in range (0,4,1): foutraw_fl.write(chr(255)) p=abs(p-1) else: for j in range (0,8,1): foutraw_fl.write(chr(0)) for j in range (0,8,1): foutraw_fl.write(chr(255)) if p==1: for j in range (0,4,1): foutraw_fl.write(chr(0)) for j in range (0,4,1): foutraw_fl.write(chr(255)) else: for j in range (0,8,1): foutraw_fl.write(chr(0)) for j in range (0,8,1): foutraw_fl.write(chr(255)) finp_fl.close() foutraw_fl.close() lngt=os.path.getsize(foutraw_st) #print os.path.getsize(foutraw_st) foutraw_fl=open(foutraw_st,"r") foutraw_fl.close() lngt36=lngt+36 foutwav_fl=open(foutwav_st,"w") foutwav_fl.write(chr(0x52));foutwav_fl.write(chr(0x49)) foutwav_fl.write(chr(0x46));foutwav_fl.write(chr(0x46)) foutwav_fl.write(chr(lngt36%256));lngt36=int(lngt36/256.0) foutwav_fl.write(chr(lngt36%256));lngt36=int(lngt36/256.0) foutwav_fl.write(chr(lngt36%256));lngt36=int(lngt36/256.0) foutwav_fl.write(chr(lngt36%256)) foutwav_fl.write(chr(0x57));foutwav_fl.write(chr(0x41));foutwav_fl.write(chr(0x56));foutwav_fl.write(chr(0x45)) foutwav_fl.write(chr(0x66));foutwav_fl.write(chr(0x6D));foutwav_fl.write(chr(0x74));foutwav_fl.write(chr(0x20)) foutwav_fl.write(chr(0x10));foutwav_fl.write(chr(0x00));foutwav_fl.write(chr(0x00));foutwav_fl.write(chr(0x00)) foutwav_fl.write(chr(0x01));foutwav_fl.write(chr(0x00));foutwav_fl.write(chr(0x01));foutwav_fl.write(chr(0x00)) foutwav_fl.write(chr(0x11));foutwav_fl.write(chr(0x2B));foutwav_fl.write(chr(0x00));foutwav_fl.write(chr(0x00)) foutwav_fl.write(chr(0x11));foutwav_fl.write(chr(0x2B));foutwav_fl.write(chr(0x00));foutwav_fl.write(chr(0x00)) foutwav_fl.write(chr(0x01));foutwav_fl.write(chr(0x00));foutwav_fl.write(chr(0x08));foutwav_fl.write(chr(0x00)) foutwav_fl.write(chr(0x64));foutwav_fl.write(chr(0x61));foutwav_fl.write(chr(0x74));foutwav_fl.write(chr(0x61)) foutwav_fl.write(chr(lngt%256));lngt=int(lngt/256.0) foutwav_fl.write(chr(lngt%256));lngt=int(lngt/256.0) foutwav_fl.write(chr(lngt%256));lngt=int(lngt/256.0) foutwav_fl.write(chr(lngt%256)) foutwav_fl.close() os.system("cat "+foutraw_st+" >> "+foutwav_st+" && rm "+foutraw_st)