diff Code/Descriptors/Matlab/MPEG7/FromWeb/VoiceSauce/vs_ParameterDisplay.m @ 4:92ca03a8fa99 tip

Update to ICASSP 2013 benchmark
author Dawn Black
date Wed, 13 Feb 2013 11:02:39 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Code/Descriptors/Matlab/MPEG7/FromWeb/VoiceSauce/vs_ParameterDisplay.m	Wed Feb 13 11:02:39 2013 +0000
@@ -0,0 +1,405 @@
+function varargout = vs_ParameterDisplay(varargin)
+% VS_PARAMETERDISPLAY M-file for vs_ParameterDisplay.fig
+%      VS_PARAMETERDISPLAY, by itself, creates a new VS_PARAMETERDISPLAY or raises the existing
+%      singleton*.
+%
+%      H = VS_PARAMETERDISPLAY returns the handle to a new VS_PARAMETERDISPLAY or the handle to
+%      the existing singleton*.
+%
+%      VS_PARAMETERDISPLAY('CALLBACK',hObject,eventData,handles,...) calls the local
+%      function named CALLBACK in VS_PARAMETERDISPLAY.M with the given input arguments.
+%
+%      VS_PARAMETERDISPLAY('Property','Value',...) creates a new VS_PARAMETERDISPLAY or raises the
+%      existing singleton*.  Starting from the left, property value pairs are
+%      applied to the GUI before vs_ParameterDisplay_OpeningFcn gets called.  An
+%      unrecognized property name or invalid value makes property application
+%      stop.  All inputs are passed to vs_ParameterDisplay_OpeningFcn via varargin.
+%
+%      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one
+%      instance to run (singleton)".
+%
+% See also: GUIDE, GUIDATA, GUIHANDLES
+
+% Edit the above text to modify the response to help vs_ParameterDisplay
+
+% Last Modified by GUIDE v2.5 13-Oct-2009 22:52:31
+
+% Begin initialization code - DO NOT EDIT
+gui_Singleton = 1;
+gui_State = struct('gui_Name',       mfilename, ...
+                   'gui_Singleton',  gui_Singleton, ...
+                   'gui_OpeningFcn', @vs_ParameterDisplay_OpeningFcn, ...
+                   'gui_OutputFcn',  @vs_ParameterDisplay_OutputFcn, ...
+                   'gui_LayoutFcn',  [] , ...
+                   'gui_Callback',   []);
+if nargin && ischar(varargin{1})
+    gui_State.gui_Callback = str2func(varargin{1});
+end
+
+if nargout
+    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
+else
+    gui_mainfcn(gui_State, varargin{:});
+end
+% End initialization code - DO NOT EDIT
+
+
+% --- Executes just before vs_ParameterDisplay is made visible.
+function vs_ParameterDisplay_OpeningFcn(hObject, eventdata, handles, varargin)
+% This function has no output args, see OutputFcn.
+% hObject    handle to figure
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)
+% varargin   command line arguments to vs_ParameterDisplay (see VARARGIN)
+
+% Choose default command line output for vs_ParameterDisplay
+handles.output = hObject;
+
+% YS: get the settings from the main figure
+if (~isfield(handles, 'VSHandle'))
+    VSHandle = VoiceSauce;  
+    handles.VSHandle = VSHandle;
+end
+
+VSData = guidata(handles.VSHandle);
+set(handles.edit_wavdir, 'String', VSData.vars.PD_wavdir);
+set(handles.edit_matdir, 'String', VSData.vars.PD_matdir);
+
+if (VSData.vars.recursedir)
+    func_setlistbox(handles.listbox_wavfilelist, VSData.vars.PD_wavdir, 'recurse', VSData.vars, VSData.vars.I_searchstring);
+else
+    func_setlistbox(handles.listbox_wavfilelist, VSData.vars.PD_wavdir, 'none', VSData.vars, VSData.vars.I_searchstring);
+end
+
+set(handles.listbox_wavfilelist, 'Value', 1);
+
+% Update handles structure
+guidata(hObject, handles);
+
+checkParameters(handles);
+plotData(handles);
+
+% UIWAIT makes vs_ParameterDisplay wait for user response (see UIRESUME)
+% uiwait(handles.figure_ParameterDisplay);
+
+
+% --- Outputs from this function are returned to the command line.
+function varargout = vs_ParameterDisplay_OutputFcn(hObject, eventdata, handles) 
+% varargout  cell array for returning output args (see VARARGOUT);
+% hObject    handle to figure
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)
+
+% Get default command line output from handles structure
+varargout{1} = handles.output;
+
+
+
+% displays the waveform based on the selected parameters
+function plotData(handles)
+VSData = guidata(handles.VSHandle);
+contents = get(handles.listbox_wavfilelist, 'String');
+paramlist = get(handles.listbox_paramlist, 'String');
+
+if (isempty(contents))
+    return;
+end
+
+shortwavfile = contents{get(handles.listbox_wavfilelist, 'Value')};
+wavfile = [VSData.vars.PD_wavdir VSData.vars.dirdelimiter, shortwavfile];
+figdata = guidata(handles.figure_ParameterDisplay);
+mdata = figdata.mdata;
+
+[y,Fs] = wavread(wavfile);
+
+if (isempty(VSData.vars.PD_paramselection) || isempty(paramlist))
+    position = [0.05 0.05 0.9 0.9];
+else
+    position = [0.05 0.7 0.9 0.295];
+end
+
+% top plot is always the wav
+subp = subplot('Position', position, 'Parent', handles.uipanel_figure);
+t = linspace(0, length(y) / Fs * 1000, length(y));
+plot(subp, t, y);
+axis(subp, 'tight');
+
+if (isempty(VSData.vars.PD_paramselection) || isempty(paramlist))  % nothing else to do
+    return;
+end
+
+%set(subp, 'XTick', []);
+set(subp, 'XTickLabel', []);
+
+subp2 = subplot('Position', [0.05 0.1 0.9 0.595], 'Parent', handles.uipanel_figure);
+cla(subp2);
+
+hold(subp2, 'on');
+labels = cell(length(VSData.vars.PD_paramselection), 1);
+for k=1:length(VSData.vars.PD_paramselection)
+    C = textscan(paramlist{VSData.vars.PD_paramselection(k)}, '%s %s', 'delimiter', '(');
+    param = C{2}{1}(1:end-1);
+    labels{k} = param;
+    t = [1:length(mdata.(param))] * mdata.frameshift;
+    plot(subp2, t, mdata.(param), VSData.vars.PD_plottype{mod(k-1, VSData.vars.PD_maxplots)+1});
+end
+
+axis(subp2, 'tight');
+legend(subp2, labels);
+xlabel(subp2, 'Time (ms)');
+
+
+% fill in the parameter listbox
+function checkParameters(handles)
+VSData = guidata(handles.VSHandle);
+contents = get(handles.listbox_wavfilelist, 'String');
+
+if (isempty(contents))
+    return;
+end
+
+shortwavfile = contents{get(handles.listbox_wavfilelist, 'Value')};
+matfile = [VSData.vars.PD_matdir VSData.vars.dirdelimiter, shortwavfile(1:end-3) 'mat'];
+
+figdata = guidata(handles.figure_ParameterDisplay); % store it so we don't have to recreate the mat data
+
+if (exist(matfile, 'file') == 0)
+    set(handles.listbox_paramlist, 'String', []);
+    mdata = [];
+    paramlist = [];
+else
+
+    %load it up and check available parameters
+    mdata = func_buildMData(matfile, VSData.vars.O_smoothwinsize);
+        
+    paramlist = func_getoutputparameterlist();
+    paraminx = 1:length(paramlist);
+    
+    for k=1:length(paramlist)
+        C = textscan(paramlist{k}, '%s %s', 'delimiter', '(');
+        param = C{2}{1}(1:end-1);
+        if (~isfield(mdata, param))
+            paraminx(k) = 0;
+        end
+    end
+    
+    paraminx(paraminx == 0) = [];
+    paramlist = paramlist(paraminx);
+   
+end
+
+figdata.mdata = mdata;
+guidata(handles.figure_ParameterDisplay, figdata);
+
+set(handles.listbox_paramlist, 'String', paramlist, 'Value', VSData.vars.PD_paramselection);
+
+            
+
+function edit_wavdir_Callback(hObject, eventdata, handles)
+% hObject    handle to edit_wavdir (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)
+
+% Hints: get(hObject,'String') returns contents of edit_wavdir as text
+%        str2double(get(hObject,'String')) returns contents of edit_wavdir as a double
+new_dir = get(hObject, 'String');
+
+VSData = guidata(handles.VSHandle);
+
+if (exist(new_dir, 'dir') == 7)
+    VSData = func_setwavdir('PD_wavdir', new_dir, VSData);
+    
+    if (VSData.vars.recursedir)
+        func_setlistbox(handles.listbox_wavfilelist, new_dir, 'recurse', VSData.vars, VSData.vars.I_searchstring);
+    else
+        func_setlistbox(handles.listbox_wavfilelist, new_dir, 'none', VSData.vars, VSData.vars.I_searchstring);
+    end
+    
+    if (VSData.vars.PE_savematwithwav)
+        set(handles.edit_matdir, 'String', new_dir);
+        VSData = func_setmatdir('PD_matdir', new_dir, VSData);
+    end
+    
+    guidata(handles.VSHandle, VSData);
+    checkParameters(handles);
+    plotData(handles);
+else
+    msgbox('Error: directory not found.', 'Error', 'error', 'modal');
+    set(hObject, 'String', VSData.vars.PD_wavdir);
+end
+
+% --- Executes during object creation, after setting all properties.
+function edit_wavdir_CreateFcn(hObject, eventdata, handles)
+% hObject    handle to edit_wavdir (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    empty - handles not created until after all CreateFcns called
+
+% Hint: edit controls usually have a white background on Windows.
+%       See ISPC and COMPUTER.
+if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
+    set(hObject,'BackgroundColor','white');
+end
+
+
+% --- Executes on button press in pushbutton_wavdir_browse.
+function pushbutton_wavdir_browse_Callback(hObject, eventdata, handles)
+% hObject    handle to pushbutton_wavdir_browse (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)
+current_dir = get(handles.edit_wavdir, 'String');
+new_dir = uigetdir(current_dir);
+
+VSData = guidata(handles.VSHandle);
+
+if (ischar(new_dir))
+
+    set(handles.edit_wavdir, 'String', new_dir);    
+    func_setlistbox(handles.listbox_wavfilelist, new_dir, 'recurse', VSData.vars, VSData.vars.I_searchstring);
+    VSData = func_setwavdir('PD_wavdir', new_dir, VSData);
+    
+    if (VSData.vars.PE_savematwithwav)
+        set(handles.edit_matdir, 'String', new_dir);
+        VSData = func_setmatdir('PD_matdir', new_dir, VSData);
+    end
+    
+    guidata(handles.VSHandle, VSData);
+    
+    checkParameters(handles);
+    plotData(handles);
+end
+
+
+
+% --- Executes on selection change in listbox_wavfilelist.
+function listbox_wavfilelist_Callback(hObject, eventdata, handles)
+% hObject    handle to listbox_wavfilelist (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)
+
+% Hints: contents = get(hObject,'String') returns listbox_wavfilelist contents as cell array
+%        contents{get(hObject,'Value')} returns selected item from listbox_wavfilelist
+checkParameters(handles);
+plotData(handles);
+
+
+% --- Executes during object creation, after setting all properties.
+function listbox_wavfilelist_CreateFcn(hObject, eventdata, handles)
+% hObject    handle to listbox_wavfilelist (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    empty - handles not created until after all CreateFcns called
+
+% Hint: listbox controls usually have a white background on Windows.
+%       See ISPC and COMPUTER.
+if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
+    set(hObject,'BackgroundColor','white');
+end
+
+
+
+function edit_matdir_Callback(hObject, eventdata, handles)
+% hObject    handle to edit_matdir (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)
+
+new_dir = get(hObject, 'String');
+
+VSData = guidata(handles.VSHandle);
+
+if (exist(new_dir, 'dir') == 7)
+    VSData = func_setmatdir('PD_matdir', newdir, VSData);
+    set(handles.edit_matdir, 'String', new_dir);
+        
+    guidata(handles.VSHandle, VSData);
+    
+    checkParameters(handles);
+    plotData(handles);
+else
+    msgbox('Error: directory not found.', 'Error', 'error', 'modal');
+    set(hObject, 'String', VSData.vars.PD_matdir);
+end
+
+
+% --- Executes during object creation, after setting all properties.
+function edit_matdir_CreateFcn(hObject, eventdata, handles)
+% hObject    handle to edit_matdir (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    empty - handles not created until after all CreateFcns called
+
+% Hint: edit controls usually have a white background on Windows.
+%       See ISPC and COMPUTER.
+if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
+    set(hObject,'BackgroundColor','white');
+end
+
+
+% --- Executes on button press in pushbutton_matdir_browse.
+function pushbutton_matdir_browse_Callback(hObject, eventdata, handles)
+% hObject    handle to pushbutton_matdir_browse (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)
+current_dir = get(handles.edit_matdir, 'String');
+new_dir = uigetdir(current_dir);
+
+VSData = guidata(handles.VSHandle);
+
+if (ischar(new_dir))
+    VSData = func_setmatdir('PD_matdir', new_dir, VSData);
+    set(handles.edit_matdir, 'String', new_dir);
+        
+    guidata(handles.VSHandle, VSData);
+    
+    checkParameters(handles);
+    plotData(handles);
+
+end
+
+
+
+
+% --- Executes on selection change in listbox_paramlist.
+function listbox_paramlist_Callback(hObject, eventdata, handles)
+% hObject    handle to listbox_paramlist (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)
+contents = get(hObject, 'String');
+
+if (isempty(contents))
+    return;
+end
+
+VSData = guidata(handles.VSHandle);
+inx = get(hObject, 'Value');
+VSData.vars.PD_paramselection = setxor(VSData.vars.PD_paramselection, inx);
+VSData.vars.PD_paramselection(VSData.vars.PD_paramselection > length(contents)) = [];
+
+set(hObject, 'Value', VSData.vars.PD_paramselection);
+guidata(handles.VSHandle, VSData);
+
+figdata = guidata(handles.figure_ParameterDisplay);
+if (~isfield(figdata, 'mdata'))
+    checkParameters(handles);
+end
+
+plotData(handles);
+
+
+% --- Executes during object creation, after setting all properties.
+function listbox_paramlist_CreateFcn(hObject, eventdata, handles)
+% hObject    handle to listbox_paramlist (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    empty - handles not created until after all CreateFcns called
+
+% Hint: listbox controls usually have a white background on Windows.
+%       See ISPC and COMPUTER.
+if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
+    set(hObject,'BackgroundColor','white');
+end
+
+
+% --- Executes on button press in pushbutton_OK.
+function pushbutton_OK_Callback(hObject, eventdata, handles)
+% hObject    handle to pushbutton_OK (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)
+
+delete(gcf);