e@0: # -*- coding: utf-8 -*- e@0: """ e@0: Spectral Constrast as described in Dan-Ning Jiang et al (2002) e@0: e@0: Created on Tue Apr 14 17:31:20 2015 e@0: e@0: @author: Emmanouil Theofanis Chourdakis e@0: e@0: e@0: """ e@0: e@0: import essentia e@0: from essentia.streaming import * e@0: from essentia.standard import YamlOutput e@0: from sys import argv e@0: from pylab import * e@0: from numpy import * e@0: e@0: e@0: e@0: e@0: if __name__=="__main__": e@0: if len(argv) < 2: e@0: print("Please provide an input filename.") e@0: else: e@0: fname = argv[1] e@0: print("Onset Demo with `%s\'" % fname) e@0: e@0: SR = 16000.0 # Sampling Rate e@0: T = 1./SR # Sampling Period e@0: FS = 23.0 # ms e@0: e@0: # Describing the building blocks e@0: e@0: loader = MonoLoader(filename = fname, sampleRate = SR) e@0: e@0: onset = OnsetRate() e@0: e@0: # Pool (for output purposes) e@0: e@0: pool = essentia.Pool() e@0: e@0: e@0: # Describing the connections e@0: e@0: e@0: loader.audio >> onset.signal e@0: loader.audio >> (pool, 'audio') e@0: onset.onsetRate >> None e@0: onset.onsetTimes >> (pool, 'onsettimes') e@0: e@0: e@0: # Run it e@0: e@0: essentia.run(loader) e@0: e@0: e@0: # Save the pool as a yaml file. e@0: output = YamlOutput(filename = "%s.yaml" % fname.partition('/')[2].partition('.')[0])(pool) e@0: e@0: e@0: ons = zeros((len(pool['audio']),1)) e@0: e@0: for i in range(0,len(pool['onsettimes'])): e@0: ons[pool['onsettimes'][i]*44100]= 1 e@0: e@0: e@0: t = linspace(0, len(pool['audio'])*T, len(pool['audio'])) e@0: e@0: plot(t, pool['audio'], t, ons); e@0: xlabel('time (s)') e@0: ylabel('f(t)') e@0: title('Onset Detection Function') e@0: savefig('output.png', dpi=600) e@0: e@0: e@0: show() e@0: e@0: e@0: e@0: e@0: