shithub: aubio

ref: e8d0c06e2802ab7941619e593f7c2d011d753b86
dir: /python/bench-pitch/

View raw version
#! /usr/bin/python

from aubio.bench.node import *
from aubio.tasks import *

class benchpitch(bench):
	
	def file_exec(self,input,output):
		filetask = self.task(input,params=self.params)
		computed_data = filetask.compute_all()
		results = filetask.eval(computed_data)
		self.results.append(results)
		truth = filetask.gettruth()
		#print input, results, results - float(input.split('.')[-2])
		self.pretty_print((self.params.pitchmode, truth, 
			truth - results[0], results[0],
			truth - results[1], results[1]))
			
	def run_bench(self,modes=['schmitt']):
		self.modes = modes
		self.pretty_print(self.titles)
		for mode in self.modes:
			self.params.pitchmode = mode
			self.dir_exec()
			self.dir_eval()
			self.dir_plot()

if __name__ == "__main__":
	import sys
	if len(sys.argv) > 1: datapath = sys.argv[1]
	else: print "error: a path is required"; sys.exit(1)
	if len(sys.argv) > 2:
		for each in sys.argv[3:-1]: print each
	modes = ['yin', 'schmitt', 'mcomb', 'fcomb']

	benchpitch = benchpitch(datapath)
	benchpitch.params = taskparams()
	benchpitch.task = taskpitch


	benchpitch.titles  = [ 'mode', 'thres', 'avg', 'avgdist' ]
	benchpitch.formats = ["%12s" , "| %6s", "| %6s", "| %6s", "| %6s", "| %6s" ]
	try:
		benchpitch.run_bench(modes=modes)
	except KeyboardInterrupt:
		print "Interrupted by user"
		sys.exit(1)

	sys.exit(0)