reduced python source for embedded apps

源代码在线查看: playcd.py

软件大小: 3221 K
上传用户: invill
关键词: embedded reduced python source
下载地址: 免注册下载 普通下载 VIP

相关代码

				# Play CD audio on speaker or headphones.								callbacktypes = ['audio','pnum','index','ptime','atime','catalog','ident','control']								def playaudio(port, type, audio):					port.writesamps(audio)								def prtrack(cdinfo, type, pnum):					if cdinfo.track[pnum]  '':						print 'playing "' + cdinfo.track[pnum] + '"'					else:						print callbacktypes[type]+': '+`pnum`								def callback(arg, type, data):					print callbacktypes[type]+': '+`data`								def tcallback(arg, type, data):					print callbacktypes[type]+': '+triple(data)								def triple((a, b, c)):					return zfill(a) + ':' + zfill(b) + ':' + zfill(c)								def zfill(n):					s = `n`					return '0' * (2 - len(s)) + s								def prtrackinfo(info):					for i in range(len(info)):						start, total = info[i]						print 'Track', zfill(i+1), triple(start), triple(total)								statedict = ['ERROR', 'NODISK', 'READY', 'PLAYING', 'PAUSED', 'STILL']								def prstatus(status):					state, track, curtime, abstime, totaltime, first, last, \						scsi_audio, cur_block, dummy = status					print 'Status:',					if 0 						print statedict[state]					else:						print state					print 'Track: ', track					print 'Time:  ', triple(curtime)					print 'Abs:   ', triple(abstime)					print 'Total: ', triple(totaltime)					print 'First: ', first					print 'Last:  ', last					print 'SCSI:  ', scsi_audio					print 'Block: ', cur_block					print 'Future:', dummy								def main():					import sys, readcd, al, AL, cd, cdplayer					verbose = 0					r = readcd.Readcd()					prstatus(r.getstatus())					prtrackinfo(r.gettrackinfo())					cdinfo = cdplayer.Cdplayer(r.gettrackinfo())					if cdinfo.title  '':						print 'Title: "' + cdinfo.title + '"'					if cdinfo.artist  '':						print 'Artist: ' + cdinfo.artist					for arg in sys.argv[1:]:						if arg == '-v':							verbose = 1							continue						x = eval(arg)						try:							l = len(x)							r.appendstretch(x[0], x[1])						except TypeError:							r.appendtrack(x)					try:						oldparams = [AL.OUTPUT_RATE, 0]						params = oldparams[:]						al.getparams(AL.DEFAULT_DEVICE, oldparams)						params[1] = AL.RATE_44100						al.setparams(AL.DEFAULT_DEVICE, params)						config = al.newconfig()						config.setwidth(AL.SAMPLE_16)						config.setchannels(AL.STEREO)						port = al.openport('CD Player', 'w', config)										for i in range(8):							r.setcallback(i, callback, None)						if verbose:							r.setcallback(cd.ptime, tcallback, None)							r.setcallback(cd.atime, tcallback, None)						else:							r.removecallback(cd.ptime)							r.removecallback(cd.atime)						r.setcallback(cd.pnum, prtrack, cdinfo)						r.setcallback(cd.audio, playaudio, port)										data = r.play()					except KeyboardInterrupt:						status = r.getstatus()						print 'Interrupted at '+triple(status[2])+' into track '+ \							  `status[1]`+' (absolute time '+triple(status[3])+')'					al.setparams(AL.DEFAULT_DEVICE, oldparams)								main()							

相关资源