def openfile(self, event): dlg = wx.FileDialog(self, "Choose a file", os.getcwd(), "", "*.wav", wx.OPEN) if dlg.ShowModal() == wx.ID_OK: path = dlg.GetPath() basename = os.path.basename(path) self.SetStatusText("You selected: %s" % basename) self.mypath = path self.x, self.fs, self.nbits = mir2.wavread(self.mypath) self.rec_input = self.x self.WC = 1 self.on_reset(self) self.draw_figure() dlg.Destroy()
def create_main_panel(self): """ Creates the main panel with all the controls on it: * mpl canvas * mpl navigation toolbar * Control panel for interaction """ self.panel = wx.Panel(self) # Create the mpl Figure and FigCanvas objects. # 5x4 inches, 100 dots-per-inch # self.dpi = 100 self.fig = Figure((3.0, 3.0), dpi=self.dpi) self.canvas = FigCanvas(self.panel, -1, self.fig) self.canvas2= FigCanvas(self.panel, -1, self.fig) # Since we have only one plot, we can use add_axes # instead of add_subplot, but then the subplot # configuration tool in the navigation toolbar wouldn't # work. # self.axes = self.fig.add_subplot(111) # Bind the 'pick' event for clicking on one of the bars # self.canvas.mpl_connect('pick_event', self.on_pick) self.drawbutton = wx.Button(self.panel, -1, "Plot Gram") self.Bind(wx.EVT_BUTTON, self.on_draw_button, self.drawbutton) self.plot_select = ['Time Domain Signal', 'Spectrogram','Constant Q Spectrogram', 'Chromagram'] self.combo = wx.ComboBox(self.panel, -1, pos = (0,400), choices = self.plot_select, style=wx.ALIGN_LEFT | wx.CB_READONLY) self.combo.SetSelection(2) self.setbutton = wx.Button(self.panel, -1, "Set Parameters") self.Bind(wx.EVT_BUTTON, self.on_set_button, self.setbutton) self.record = wx.BitmapButton(self.panel, -1, wx.Bitmap('record.png')) self.Bind(wx.EVT_BUTTON, self.on_rec, self.record) self.play = wx.BitmapButton(self.panel, -1, wx.Bitmap('play.png')) self.Bind(wx.EVT_BUTTON, self.on_play, self.play) self.stop = wx.BitmapButton(self.panel, -1, wx.Bitmap('stop.png')) self.searchbutton = wx.Button(self.panel, -1, "Search Database") self.Bind(wx.EVT_BUTTON, self.search, self.searchbutton) self.searchbutton1 = wx.Button(self.panel, -1, style=wx.BU_LEFT, name="1) Sonata in A Maj., Beethoven") self.searchbutton2 = wx.Button(self.panel, -1, style=wx.BU_LEFT, name= "2) Polonaise in G Min., Chopin") self.searchbutton3 = wx.Button(self.panel, -1, style=wx.BU_LEFT, name= "3) Rondo No. 5 in C# Min., Bartok") self.searchbutton4 = wx.Button(self.panel, -1, style=wx.BU_LEFT, name= "1) Sonata in A Maj., Beethoven") self.searchbutton5 = wx.Button(self.panel, -1, style=wx.BU_LEFT, name= "2) Polonaise in G Min., Chopin") self.searchbutton6 = wx.Button(self.panel, -1, style=wx.BU_LEFT, name= "3) Rondo No. 5 in C# Min., Bartok") self.searchbutton7 = wx.Button(self.panel, -1, style=wx.BU_LEFT, name= "1) Sonata in A Maj., Beethoven") self.searchbutton8 = wx.Button(self.panel, -1, style=wx.BU_LEFT, name= "2) Polonaise in G Min., Chopin") self.searchbutton9 = wx.Button(self.panel, -1, style=wx.BU_LEFT, name= "3) Rondo No. 5 in C# Min., Bartok") self.searchbutton10 = wx.Button(self.panel, -1, style=wx.BU_LEFT, name= "1) Sonata in A Maj., Beethoven") self.Sbuttonlist = [self.searchbutton1,self.searchbutton2, self.searchbutton3,self.searchbutton4, self.searchbutton5,self.searchbutton6, self.searchbutton7,self.searchbutton8, self.searchbutton9,self.searchbutton10] self.Bind(wx.EVT_BUTTON, self.getmeta1, self.searchbutton1) self.Bind(wx.EVT_BUTTON, self.getmeta2, self.searchbutton2) self.Bind(wx.EVT_BUTTON, self.getmeta3, self.searchbutton3) self.Bind(wx.EVT_BUTTON, self.getmeta4, self.searchbutton4) self.Bind(wx.EVT_BUTTON, self.getmeta5, self.searchbutton5) self.Bind(wx.EVT_BUTTON, self.getmeta6, self.searchbutton6) self.Bind(wx.EVT_BUTTON, self.getmeta7, self.searchbutton7) self.Bind(wx.EVT_BUTTON, self.getmeta8, self.searchbutton8) self.Bind(wx.EVT_BUTTON, self.getmeta9, self.searchbutton9) self.Bind(wx.EVT_BUTTON, self.getmeta10, self.searchbutton10) #self.plt_titlestr = '' #self.plot_title = wx.StaticText(self.panel, -1, 'text1',(30,15), style=wx.ALIGN_CENTRE) # Create the navigation toolbar, tied to the canvas # self.toolbar = NavigationToolbar(self.canvas) # # Layout with box sizers # flags = wx.ALIGN_LEFT | wx.ALL | wx.GROW self.vbox = wx.BoxSizer(wx.VERTICAL) self.hbox2 = wx.BoxSizer(wx.HORIZONTAL) self.vbox2 = wx.BoxSizer(wx.VERTICAL) self.vbox3 = wx.BoxSizer(wx.VERTICAL) self.vbox2.AddStretchSpacer(1) self.vbox2.Add(self.searchbutton1, 0, border=3, flag=flags) self.vbox2.Add(self.searchbutton2, 0, border=3, flag=flags) self.vbox2.Add(self.searchbutton3, 0, border=3, flag=flags) self.vbox2.Add(self.searchbutton4, 0, border=3, flag=flags) self.vbox2.Add(self.searchbutton5, 0, border=3, flag=flags) self.vbox2.Add(self.searchbutton6, 0, border=3, flag=flags) self.vbox2.Add(self.searchbutton7, 0, border=3, flag=flags) self.vbox2.Add(self.searchbutton8, 0, border=3, flag=flags) self.vbox2.Add(self.searchbutton9, 0, border=3, flag=flags) self.vbox2.Add(self.searchbutton10, 0, border=3, flag=flags) self.vbox2.AddStretchSpacer(1) self.vbox3.Add(self.canvas, 10, wx.RIGHT | wx.TOP | wx.ALIGN_RIGHT | wx.GROW) self.vbox3.Add(self.canvas2, 10, wx.RIGHT | wx.TOP | wx.ALIGN_RIGHT | wx.GROW) self.hbox2.Add(self.vbox2, 0, wx.LEFT | wx.TOP | wx.ALIGN_LEFT| wx.GROW) #self.panel.SetSizer(self.vbox) #self.vbox.Fit(self) self.hbox2.Add(self.vbox3, 10, wx.RIGHT | wx.TOP | wx.ALIGN_RIGHT | wx.GROW) self.vbox.Add(self.hbox2, 0, wx.LEFT | wx.TOP | wx.GROW) self.vbox.Add(self.toolbar, 0, wx.EXPAND) self.vbox.AddSpacer(7) self.hbox = wx.BoxSizer(wx.HORIZONTAL) self.hbox.AddSpacer(15) self.hbox.Add(self.combo, 0, border=3, flag=flags) self.hbox.AddSpacer(30) self.hbox.Add(self.setbutton, 0, border = 3, flag=flags) self.hbox.AddSpacer(30) self.hbox.Add(self.drawbutton, 0, border=3, flag=flags) self.hbox.AddSpacer(30) self.hbox.Add(self.play, 0, flag = flags) self.hbox.Add(self.stop, 0, flag = flags) self.hbox.Add(self.record, 0, flag = flags) self.hbox.AddSpacer(30) self.hbox.Add(self.searchbutton, 0, border=3, flag=flags) self.hbox.AddSpacer(30) self.vbox.Add(self.hbox, 0, flag = wx.ALIGN_LEFT | wx.BOTTOM | wx.EXPAND |wx.GROW) self.panel.SetSizer(self.vbox) self.vbox.Fit(self) self.mypath = None self.fsz = 0.040 self.hop = 0.020 self.fmax = 44100 self.x, self.fs, self.nbits = mir2.wavread('default.wav') #self.tmax = round(float(len(self.x))/self.fs,2) self.rectime = 20 self.tmax = self.rectime self.tmin = 0 self.LG_flag = 0 self.LG_str = None self.LG_vmin = 25 self.LG_vmax = 50 self.tmin_samp = None self.tmax_samp = None self.WC = 1 #self.rec_input = mir2.wavread('default.wav')#None self.rec_input = None self.rankresults = [('Beethoven_vln_sonata5_Francescatti_01.wav',1),('adksfjghl',3)] self.dict = {'Beethoven_vln_sonata5_Zukerman_01.wav': ('Sonata No. 5, Mvt. 1', 'L. V. Beethoven','F Major','Violin and Piano', 'Pinchas Zukerman'), 'Beethoven_vln_sonata5_Zukerman_02.wav': ('Sonata No. 5, Mvt. 2', 'L. V. Beethoven','F Major','Violin and Piano', 'Pinchas Zukerman'), 'Beethoven_vln_sonata5_Zukerman_03.wav': ('Sonata No. 5, Mvt. 3', 'L. V. Beethoven','F Major','Violin and Piano', 'Pinchas Zukerman'), 'Beethoven_vln_sonata5_Zukerman_04.wav': ('Sonata No. 5, Mvt. 4', 'L. V. Beethoven','F Major','Violin and Piano', 'Pinchas Zukerman'), 'Beethoven_vln_sonata5_Zukerman_05.wav': ('Sonata No. 5, Mvt. 5', 'L. V. Beethoven','F Major','Violin and Piano', 'Pinchas Zukerman'), 'Beethoven_vln_sonata5_Oistrakh_01.wav': ('Sonata No. 5, Mvt. 1', 'L. V. Beethoven','F Major','Violin and Piano', 'David Oistrakh'), 'Beethoven_vln_sonata5_Oistrakh_02.wav': ('Sonata No. 5, Mvt. 2', 'L. V. Beethoven','F Major','Violin and Piano', 'David Oistrakh'), 'Beethoven_vln_sonata5_Oistrakh_03.wav': ('Sonata No. 5, Mvt. 3', 'L. V. Beethoven','F Major','Violin and Piano', 'David Oistrakh'), 'Beethoven_vln_sonata5_Oistrakh_04.wav': ('Sonata No. 5, Mvt. 4', 'L. V. Beethoven','F Major','Violin and Piano', 'David Oistrakh'), 'Beethoven_vln_sonata5_Oistrakh_05.wav': ('Sonata No. 5, Mvt. 5', 'L. V. Beethoven','F Major','Violin and Piano', 'David Oistrakh'), 'Beethoven_vln_sonata5_Francescatti_01.wav': ('Sonata No. 5, Mvt. 1', 'L. V. Beethoven','F Major','Violin and Piano', 'Zino Francescatti'), 'Beethoven_vln_sonata5_Francescatti_02.wav': ('Sonata No. 5, Mvt. 2', 'L. V. Beethoven','F Major','Violin and Piano', 'Zino Francescatti'), 'Beethoven_vln_sonata5_Francescatti_03.wav': ('Sonata No. 5, Mvt. 3', 'L. V. Beethoven','F Major','Violin and Piano', 'Zino Francescatti'), 'Beethoven_vln_sonata5_Francescatti_04.wav': ('Sonata No. 5, Mvt. 4', 'L. V. Beethoven','F Major','Violin and Piano', 'Zino Francescatti'), 'Beethoven_vln_sonata5_Francescatti_05.wav': ('Sonata No. 5, Mvt. 5', 'L. V. Beethoven','F Major','Violin and Piano', 'Zino Francescatti'), 'Bach Vln Partita3 - Fischbach 2004 - 01.wav': ('Partita No. 3 - Preludio', 'J. S. Bach', 'E Major', 'Violin', 'Garrett Fischbach'), 'Bach Vln Partita3 - Fischbach 2004 - 03.wav': ('Partita No. 3 - Gavotte en Rondeau', 'J. S. Bach', 'E Major', 'Violin', 'Garrett Fischbach'), 'Bach Vln Sonata1 - Fischbach 2004 - 02.wav': ('Sonata No. 1 - Fuga', 'J. S. Bach', 'G minor', 'Violin', 'Garrett Fischbach'), 'Bach Vln Partita3 - Milstein 1955 - 01.wav': ('Partita No. 3 - Preludio', 'J. S. Bach', 'E Major', 'Violin', 'Nathan Milstein'), 'Bach Vln Partita3 - Milstein 1955 - 03.wav': ('Partita No. 3 - Gavotte en Rondeau', 'J. S. Bach', 'E Major', 'Violin', 'Nathan Milstein'), 'Bach Vln Sonata1 - Milstein 1954 - 02.wav': ('Sonata No. 1 - Fuga', 'J. S. Bach', 'G minor', 'Violin', 'Nathan Milstein'), 'brahms_rhapsody_01.wav': ('Brahms Rhapsody Op.79, No.2', 'J. Brahms','G minor','Piano','Lili Kraus'), 'brahms_rhapsody_02.wav': ('Brahms Rhapsody Op.79, No.2', 'J. Brahms','G minor','Piano','Martha Argerich'), 'debussy_toccata.wav': ('Debussy Toccata from Pour le Piano', 'C. Debussy','N/A','Piano','Boris Feiner'), 'dont_stop_believin.wav': ('Don\'t Stop Believin\'', 'Journey','E major','Vocal, Guitar, Bass, Piano, Drums','Journey'), 'lady_madonna.wav': ('Lady Madonna', 'The Beatles','E major','Vocal, Guitar, Bass, Piano, Saxophone, Drums','The Beatles'), 'let_it_be.wav': ('Let it Be', 'The Beatles','C major','Vocal, Guitar, Bass, Piano, Drums','The Beatles'), 'moonlight.wav': ('Beethoven Piano Sonata No.14', 'L. Beethoven','C# minor','Piano','Unknown'), 'office_theme.wav': ('Theme from \'The Office\'', 'Unknown','G Major','Piano','Unknown'), 'konstantine.wav': ('Konstantine', 'Andrew McMahon','D minor','Vocal, Piano','Something Corporate'), }
def draw_figure(self, i=0): """ Redraws the figure """ if self.rec_input is None: return if self.mypath is None: self.mypath = 'default.wav' #self.x, self.fs, self.nbits = mir2.wavread(self.mypath) if self.WC == 2: path = 'train/' filename = self.rankresults[i][0] fullpath = path + filename self.x, self.fs, self.nbits = mir2.wavread(fullpath) if self.WC == 1: self.x = self.rec_input #self.x, self.fs, self.nbits = mir2.wavread(self.mypath) print 'storing rec_input' self.get_plot_type() G = 0 self.tmax = float(len(self.x))/self.fs self.tmin_samp = int(self.tmin*self.fs) self.tmax_samp = int(self.tmax*self.fs) if self.tmax_samp > len(self.x): self.tmax_samp = len(self.x) - 1 print self.x.shape, self.fs, self.fsz, self.hop if self.plot_type == 0: P = self.x[self.tmin_samp:self.tmax_samp] elif self.plot_type == 1: G = mir2.spectrogram(self.x,self.fs, framesz = self.fsz, hop=self.hop, tmin=self.tmin, tmax=self.tmax) elif self.plot_type == 2: G = mir2.qspectrogram(self.x,self.fs, framesz = self.fsz, hop=self.hop, tmin=self.tmin, tmax=self.tmax) elif self.plot_type == 3: G = mir2.chromagram(self.x,self.fs, framesz = self.fsz, hop=self.hop, tmin=self.tmin, tmax=self.tmax) #self.plot_titlestr = self.mypath + gramtype self.axes.clear() if self.plot_type == 0: self.axes.plot(P) elif self.plot_type == 1 or 2 or 3: if self.LG_flag == 0: self.LG_str = None self.axes.imshow(G.X, aspect='auto', interpolation ='nearest',origin='lower') elif self.LG_flag == 1: self.LG_str = 'LogNorm(vmin = 25, vmax = 50)' self.axes.imshow(G.X, aspect='auto', interpolation ='nearest',origin='lower', norm = LogNorm()) #vmin = self.LG_vmin, vmax = self.LG_vmax)) #self.WC = 1 if self.WC == 1: self.canvas.draw() if self.WC == 2: self.canvas2.draw()
def create_main_panel(self): """ Creates the main panel with all the controls on it: * mpl canvas * mpl navigation toolbar * Control panel for interaction """ self.panel = wx.Panel(self) # Create the mpl Figure and FigCanvas objects. # 5x4 inches, 100 dots-per-inch # self.dpi = 100 self.fig = Figure((3.0, 3.0), dpi=self.dpi) self.canvas = FigCanvas(self.panel, -1, self.fig) self.canvas2 = FigCanvas(self.panel, -1, self.fig) # Since we have only one plot, we can use add_axes # instead of add_subplot, but then the subplot # configuration tool in the navigation toolbar wouldn't # work. # self.axes = self.fig.add_subplot(111) # Bind the 'pick' event for clicking on one of the bars # self.canvas.mpl_connect('pick_event', self.on_pick) self.drawbutton = wx.Button(self.panel, -1, "Plot Gram") self.Bind(wx.EVT_BUTTON, self.on_draw_button, self.drawbutton) self.plot_select = [ 'Time Domain Signal', 'Spectrogram', 'Constant Q Spectrogram', 'Chromagram' ] self.combo = wx.ComboBox(self.panel, -1, pos=(0, 400), choices=self.plot_select, style=wx.ALIGN_LEFT | wx.CB_READONLY) self.combo.SetSelection(2) self.setbutton = wx.Button(self.panel, -1, "Set Parameters") self.Bind(wx.EVT_BUTTON, self.on_set_button, self.setbutton) self.record = wx.BitmapButton(self.panel, -1, wx.Bitmap('record.png')) self.Bind(wx.EVT_BUTTON, self.on_rec, self.record) self.play = wx.BitmapButton(self.panel, -1, wx.Bitmap('play.png')) self.Bind(wx.EVT_BUTTON, self.on_play, self.play) self.stop = wx.BitmapButton(self.panel, -1, wx.Bitmap('stop.png')) self.searchbutton = wx.Button(self.panel, -1, "Search Database") self.Bind(wx.EVT_BUTTON, self.search, self.searchbutton) self.searchbutton1 = wx.Button(self.panel, -1, style=wx.BU_LEFT, name="1) Sonata in A Maj., Beethoven") self.searchbutton2 = wx.Button(self.panel, -1, style=wx.BU_LEFT, name="2) Polonaise in G Min., Chopin") self.searchbutton3 = wx.Button( self.panel, -1, style=wx.BU_LEFT, name="3) Rondo No. 5 in C# Min., Bartok") self.searchbutton4 = wx.Button(self.panel, -1, style=wx.BU_LEFT, name="1) Sonata in A Maj., Beethoven") self.searchbutton5 = wx.Button(self.panel, -1, style=wx.BU_LEFT, name="2) Polonaise in G Min., Chopin") self.searchbutton6 = wx.Button( self.panel, -1, style=wx.BU_LEFT, name="3) Rondo No. 5 in C# Min., Bartok") self.searchbutton7 = wx.Button(self.panel, -1, style=wx.BU_LEFT, name="1) Sonata in A Maj., Beethoven") self.searchbutton8 = wx.Button(self.panel, -1, style=wx.BU_LEFT, name="2) Polonaise in G Min., Chopin") self.searchbutton9 = wx.Button( self.panel, -1, style=wx.BU_LEFT, name="3) Rondo No. 5 in C# Min., Bartok") self.searchbutton10 = wx.Button(self.panel, -1, style=wx.BU_LEFT, name="1) Sonata in A Maj., Beethoven") self.Sbuttonlist = [ self.searchbutton1, self.searchbutton2, self.searchbutton3, self.searchbutton4, self.searchbutton5, self.searchbutton6, self.searchbutton7, self.searchbutton8, self.searchbutton9, self.searchbutton10 ] self.Bind(wx.EVT_BUTTON, self.getmeta1, self.searchbutton1) self.Bind(wx.EVT_BUTTON, self.getmeta2, self.searchbutton2) self.Bind(wx.EVT_BUTTON, self.getmeta3, self.searchbutton3) self.Bind(wx.EVT_BUTTON, self.getmeta4, self.searchbutton4) self.Bind(wx.EVT_BUTTON, self.getmeta5, self.searchbutton5) self.Bind(wx.EVT_BUTTON, self.getmeta6, self.searchbutton6) self.Bind(wx.EVT_BUTTON, self.getmeta7, self.searchbutton7) self.Bind(wx.EVT_BUTTON, self.getmeta8, self.searchbutton8) self.Bind(wx.EVT_BUTTON, self.getmeta9, self.searchbutton9) self.Bind(wx.EVT_BUTTON, self.getmeta10, self.searchbutton10) #self.plt_titlestr = '' #self.plot_title = wx.StaticText(self.panel, -1, 'text1',(30,15), style=wx.ALIGN_CENTRE) # Create the navigation toolbar, tied to the canvas # self.toolbar = NavigationToolbar(self.canvas) # # Layout with box sizers # flags = wx.ALIGN_LEFT | wx.ALL | wx.GROW self.vbox = wx.BoxSizer(wx.VERTICAL) self.hbox2 = wx.BoxSizer(wx.HORIZONTAL) self.vbox2 = wx.BoxSizer(wx.VERTICAL) self.vbox3 = wx.BoxSizer(wx.VERTICAL) self.vbox2.AddStretchSpacer(1) self.vbox2.Add(self.searchbutton1, 0, border=3, flag=flags) self.vbox2.Add(self.searchbutton2, 0, border=3, flag=flags) self.vbox2.Add(self.searchbutton3, 0, border=3, flag=flags) self.vbox2.Add(self.searchbutton4, 0, border=3, flag=flags) self.vbox2.Add(self.searchbutton5, 0, border=3, flag=flags) self.vbox2.Add(self.searchbutton6, 0, border=3, flag=flags) self.vbox2.Add(self.searchbutton7, 0, border=3, flag=flags) self.vbox2.Add(self.searchbutton8, 0, border=3, flag=flags) self.vbox2.Add(self.searchbutton9, 0, border=3, flag=flags) self.vbox2.Add(self.searchbutton10, 0, border=3, flag=flags) self.vbox2.AddStretchSpacer(1) self.vbox3.Add(self.canvas, 10, wx.RIGHT | wx.TOP | wx.ALIGN_RIGHT | wx.GROW) self.vbox3.Add(self.canvas2, 10, wx.RIGHT | wx.TOP | wx.ALIGN_RIGHT | wx.GROW) self.hbox2.Add(self.vbox2, 0, wx.LEFT | wx.TOP | wx.ALIGN_LEFT | wx.GROW) #self.panel.SetSizer(self.vbox) #self.vbox.Fit(self) self.hbox2.Add(self.vbox3, 10, wx.RIGHT | wx.TOP | wx.ALIGN_RIGHT | wx.GROW) self.vbox.Add(self.hbox2, 0, wx.LEFT | wx.TOP | wx.GROW) self.vbox.Add(self.toolbar, 0, wx.EXPAND) self.vbox.AddSpacer(7) self.hbox = wx.BoxSizer(wx.HORIZONTAL) self.hbox.AddSpacer(15) self.hbox.Add(self.combo, 0, border=3, flag=flags) self.hbox.AddSpacer(30) self.hbox.Add(self.setbutton, 0, border=3, flag=flags) self.hbox.AddSpacer(30) self.hbox.Add(self.drawbutton, 0, border=3, flag=flags) self.hbox.AddSpacer(30) self.hbox.Add(self.play, 0, flag=flags) self.hbox.Add(self.stop, 0, flag=flags) self.hbox.Add(self.record, 0, flag=flags) self.hbox.AddSpacer(30) self.hbox.Add(self.searchbutton, 0, border=3, flag=flags) self.hbox.AddSpacer(30) self.vbox.Add(self.hbox, 0, flag=wx.ALIGN_LEFT | wx.BOTTOM | wx.EXPAND | wx.GROW) self.panel.SetSizer(self.vbox) self.vbox.Fit(self) self.mypath = None self.fsz = 0.040 self.hop = 0.020 self.fmax = 44100 self.x, self.fs, self.nbits = mir2.wavread('default.wav') #self.tmax = round(float(len(self.x))/self.fs,2) self.rectime = 20 self.tmax = self.rectime self.tmin = 0 self.LG_flag = 0 self.LG_str = None self.LG_vmin = 25 self.LG_vmax = 50 self.tmin_samp = None self.tmax_samp = None self.WC = 1 #self.rec_input = mir2.wavread('default.wav')#None self.rec_input = None self.rankresults = [('Beethoven_vln_sonata5_Francescatti_01.wav', 1), ('adksfjghl', 3)] self.dict = { 'Beethoven_vln_sonata5_Zukerman_01.wav': ('Sonata No. 5, Mvt. 1', 'L. V. Beethoven', 'F Major', 'Violin and Piano', 'Pinchas Zukerman'), 'Beethoven_vln_sonata5_Zukerman_02.wav': ('Sonata No. 5, Mvt. 2', 'L. V. Beethoven', 'F Major', 'Violin and Piano', 'Pinchas Zukerman'), 'Beethoven_vln_sonata5_Zukerman_03.wav': ('Sonata No. 5, Mvt. 3', 'L. V. Beethoven', 'F Major', 'Violin and Piano', 'Pinchas Zukerman'), 'Beethoven_vln_sonata5_Zukerman_04.wav': ('Sonata No. 5, Mvt. 4', 'L. V. Beethoven', 'F Major', 'Violin and Piano', 'Pinchas Zukerman'), 'Beethoven_vln_sonata5_Zukerman_05.wav': ('Sonata No. 5, Mvt. 5', 'L. V. Beethoven', 'F Major', 'Violin and Piano', 'Pinchas Zukerman'), 'Beethoven_vln_sonata5_Oistrakh_01.wav': ('Sonata No. 5, Mvt. 1', 'L. V. Beethoven', 'F Major', 'Violin and Piano', 'David Oistrakh'), 'Beethoven_vln_sonata5_Oistrakh_02.wav': ('Sonata No. 5, Mvt. 2', 'L. V. Beethoven', 'F Major', 'Violin and Piano', 'David Oistrakh'), 'Beethoven_vln_sonata5_Oistrakh_03.wav': ('Sonata No. 5, Mvt. 3', 'L. V. Beethoven', 'F Major', 'Violin and Piano', 'David Oistrakh'), 'Beethoven_vln_sonata5_Oistrakh_04.wav': ('Sonata No. 5, Mvt. 4', 'L. V. Beethoven', 'F Major', 'Violin and Piano', 'David Oistrakh'), 'Beethoven_vln_sonata5_Oistrakh_05.wav': ('Sonata No. 5, Mvt. 5', 'L. V. Beethoven', 'F Major', 'Violin and Piano', 'David Oistrakh'), 'Beethoven_vln_sonata5_Francescatti_01.wav': ('Sonata No. 5, Mvt. 1', 'L. V. Beethoven', 'F Major', 'Violin and Piano', 'Zino Francescatti'), 'Beethoven_vln_sonata5_Francescatti_02.wav': ('Sonata No. 5, Mvt. 2', 'L. V. Beethoven', 'F Major', 'Violin and Piano', 'Zino Francescatti'), 'Beethoven_vln_sonata5_Francescatti_03.wav': ('Sonata No. 5, Mvt. 3', 'L. V. Beethoven', 'F Major', 'Violin and Piano', 'Zino Francescatti'), 'Beethoven_vln_sonata5_Francescatti_04.wav': ('Sonata No. 5, Mvt. 4', 'L. V. Beethoven', 'F Major', 'Violin and Piano', 'Zino Francescatti'), 'Beethoven_vln_sonata5_Francescatti_05.wav': ('Sonata No. 5, Mvt. 5', 'L. V. Beethoven', 'F Major', 'Violin and Piano', 'Zino Francescatti'), 'Bach Vln Partita3 - Fischbach 2004 - 01.wav': ('Partita No. 3 - Preludio', 'J. S. Bach', 'E Major', 'Violin', 'Garrett Fischbach'), 'Bach Vln Partita3 - Fischbach 2004 - 03.wav': ('Partita No. 3 - Gavotte en Rondeau', 'J. S. Bach', 'E Major', 'Violin', 'Garrett Fischbach'), 'Bach Vln Sonata1 - Fischbach 2004 - 02.wav': ('Sonata No. 1 - Fuga', 'J. S. Bach', 'G minor', 'Violin', 'Garrett Fischbach'), 'Bach Vln Partita3 - Milstein 1955 - 01.wav': ('Partita No. 3 - Preludio', 'J. S. Bach', 'E Major', 'Violin', 'Nathan Milstein'), 'Bach Vln Partita3 - Milstein 1955 - 03.wav': ('Partita No. 3 - Gavotte en Rondeau', 'J. S. Bach', 'E Major', 'Violin', 'Nathan Milstein'), 'Bach Vln Sonata1 - Milstein 1954 - 02.wav': ('Sonata No. 1 - Fuga', 'J. S. Bach', 'G minor', 'Violin', 'Nathan Milstein'), 'brahms_rhapsody_01.wav': ('Brahms Rhapsody Op.79, No.2', 'J. Brahms', 'G minor', 'Piano', 'Lili Kraus'), 'brahms_rhapsody_02.wav': ('Brahms Rhapsody Op.79, No.2', 'J. Brahms', 'G minor', 'Piano', 'Martha Argerich'), 'debussy_toccata.wav': ('Debussy Toccata from Pour le Piano', 'C. Debussy', 'N/A', 'Piano', 'Boris Feiner'), 'dont_stop_believin.wav': ('Don\'t Stop Believin\'', 'Journey', 'E major', 'Vocal, Guitar, Bass, Piano, Drums', 'Journey'), 'lady_madonna.wav': ('Lady Madonna', 'The Beatles', 'E major', 'Vocal, Guitar, Bass, Piano, Saxophone, Drums', 'The Beatles'), 'let_it_be.wav': ('Let it Be', 'The Beatles', 'C major', 'Vocal, Guitar, Bass, Piano, Drums', 'The Beatles'), 'moonlight.wav': ('Beethoven Piano Sonata No.14', 'L. Beethoven', 'C# minor', 'Piano', 'Unknown'), 'office_theme.wav': ('Theme from \'The Office\'', 'Unknown', 'G Major', 'Piano', 'Unknown'), 'konstantine.wav': ('Konstantine', 'Andrew McMahon', 'D minor', 'Vocal, Piano', 'Something Corporate'), }
def draw_figure(self, i=0): """ Redraws the figure """ if self.rec_input is None: return if self.mypath is None: self.mypath = 'default.wav' #self.x, self.fs, self.nbits = mir2.wavread(self.mypath) if self.WC == 2: path = 'train/' filename = self.rankresults[i][0] fullpath = path + filename self.x, self.fs, self.nbits = mir2.wavread(fullpath) if self.WC == 1: self.x = self.rec_input #self.x, self.fs, self.nbits = mir2.wavread(self.mypath) print 'storing rec_input' self.get_plot_type() G = 0 self.tmax = float(len(self.x)) / self.fs self.tmin_samp = int(self.tmin * self.fs) self.tmax_samp = int(self.tmax * self.fs) if self.tmax_samp > len(self.x): self.tmax_samp = len(self.x) - 1 print self.x.shape, self.fs, self.fsz, self.hop if self.plot_type == 0: P = self.x[self.tmin_samp:self.tmax_samp] elif self.plot_type == 1: G = mir2.spectrogram(self.x, self.fs, framesz=self.fsz, hop=self.hop, tmin=self.tmin, tmax=self.tmax) elif self.plot_type == 2: G = mir2.qspectrogram(self.x, self.fs, framesz=self.fsz, hop=self.hop, tmin=self.tmin, tmax=self.tmax) elif self.plot_type == 3: G = mir2.chromagram(self.x, self.fs, framesz=self.fsz, hop=self.hop, tmin=self.tmin, tmax=self.tmax) #self.plot_titlestr = self.mypath + gramtype self.axes.clear() if self.plot_type == 0: self.axes.plot(P) elif self.plot_type == 1 or 2 or 3: if self.LG_flag == 0: self.LG_str = None self.axes.imshow(G.X, aspect='auto', interpolation='nearest', origin='lower') elif self.LG_flag == 1: self.LG_str = 'LogNorm(vmin = 25, vmax = 50)' self.axes.imshow(G.X, aspect='auto', interpolation='nearest', origin='lower', norm=LogNorm() ) #vmin = self.LG_vmin, vmax = self.LG_vmax)) #self.WC = 1 if self.WC == 1: self.canvas.draw() if self.WC == 2: self.canvas2.draw()