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