Dawn@4: function varargout = vs_OutputToText(varargin) Dawn@4: % VS_OUTPUTTOTEXT M-file for vs_OutputToText.fig Dawn@4: % VS_OUTPUTTOTEXT, by itself, creates a new VS_OUTPUTTOTEXT or raises Dawn@4: % the existing Dawn@4: % singleton*. Dawn@4: % Dawn@4: % H = VS_OUTPUTTOTEXT returns the handle to a new VS_OUTPUTTOTEXT or the handle to Dawn@4: % the existing singleton*. Dawn@4: % Dawn@4: % VS_OUTPUTTOTEXT('CALLBACK',hObject,eventData,handles,...) calls the local Dawn@4: % function named CALLBACK in VS_OUTPUTTOTEXT.M with the given input arguments. Dawn@4: % Dawn@4: % VS_OUTPUTTOTEXT('Property','Value',...) creates a new VS_OUTPUTTOTEXT or raises the Dawn@4: % existing singleton*. Starting from the left, property value pairs are Dawn@4: % applied to the GUI before vs_OutputToText_OpeningFcn gets called. An Dawn@4: % unrecognized property name or invalid value makes property application Dawn@4: % stop. All inputs are passed to vs_OutputToText_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_OutputToText Dawn@4: Dawn@4: % Last Modified by GUIDE v2.5 08-Oct-2009 00:50:59 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_OutputToText_OpeningFcn, ... Dawn@4: 'gui_OutputFcn', @vs_OutputToText_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_OutputToText is made visible. Dawn@4: function vs_OutputToText_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_OutputToText (see VARARGIN) Dawn@4: Dawn@4: % Choose default command line output for vs_OutputToText Dawn@4: handles.output = hObject; Dawn@4: Dawn@4: if (~isfield(handles, 'VSHandle')) Dawn@4: VSHandle = VoiceSauce; Dawn@4: handles.VSHandle = VSHandle; Dawn@4: end Dawn@4: Dawn@4: % restore the variables from initialization Dawn@4: setGUIVariables(handles); Dawn@4: Dawn@4: set(handles.uipanel_Segments,'SelectionChangeFcn',@segments_buttongroup_SelectionChangeFcn); Dawn@4: set(handles.uipanel_OutputOptions,'SelectionChangeFcn',@outputoptions_buttongroup_SelectionChangeFcn); Dawn@4: set(handles.listbox_Parameters_matfilelist, 'KeyPressFcn', @matfiles_listbox_KeyPressFcn); Dawn@4: Dawn@4: % Update handles structure Dawn@4: guidata(hObject, handles); Dawn@4: Dawn@4: % UIWAIT makes vs_OutputToText wait for user response (see UIRESUME) Dawn@4: % uiwait(handles.figure_OutputToText); Dawn@4: Dawn@4: Dawn@4: % --- Outputs from this function are returned to the command line. Dawn@4: function varargout = vs_OutputToText_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: function setGUIVariables(handles) Dawn@4: VSData = guidata(handles.VSHandle); Dawn@4: vars = VSData.vars; Dawn@4: Dawn@4: paramlist = func_getoutputparameterlist(); Dawn@4: set(handles.listbox_Parameters_paramlist, 'String', paramlist); Dawn@4: Dawn@4: % update output file names Dawn@4: VSData.vars.OT_Single = [vars.OT_outputdir vars.dirdelimiter vars.OT_singleFilename]; Dawn@4: VSData.vars.OT_F0CPPE = [vars.OT_outputdir vars.dirdelimiter vars.OT_F0CPPEfilename]; Dawn@4: VSData.vars.OT_Formants = [vars.OT_outputdir vars.dirdelimiter vars.OT_Formantsfilename]; Dawn@4: VSData.vars.OT_HA = [vars.OT_outputdir vars.dirdelimiter vars.OT_Hx_Axfilename]; Dawn@4: VSData.vars.OT_HxHx = [vars.OT_outputdir vars.dirdelimiter vars.OT_HxHxfilename]; Dawn@4: VSData.vars.OT_HxAx = [vars.OT_outputdir vars.dirdelimiter vars.OT_HxAxfilename]; Dawn@4: VSData.vars.OT_EGG = [vars.OT_outputdir vars.dirdelimiter vars.OT_EGGfilename]; Dawn@4: guidata(handles.VSHandle, VSData); Dawn@4: VSData = guidata(handles.VSHandle); Dawn@4: vars = VSData.vars; Dawn@4: Dawn@4: % default is everything selected Dawn@4: if (isempty(vars.OT_selectedParams)) Dawn@4: vars.OT_selectedParams = 1:length(paramlist); Dawn@4: VSData.vars = vars; Dawn@4: guidata(handles.VSHandle, VSData); Dawn@4: end Dawn@4: Dawn@4: set(handles.listbox_Parameters_paramlist, 'Value', vars.OT_selectedParams); Dawn@4: set(handles.edit_Parameters_num, 'String', num2str(sum(vars.OT_selectedParams > 0))); Dawn@4: Dawn@4: set(handles.edit_Parameters_matdir, 'String', vars.OT_matdir); Dawn@4: set(handles.checkbox_Parameters_includesubdir, 'Value', vars.OT_includesubdir); Dawn@4: Dawn@4: if (vars.OT_includesubdir == 1) Dawn@4: func_setlistbox(handles.listbox_Parameters_matfilelist, vars.OT_matdir, 'recurse', vars, '*.mat'); Dawn@4: else Dawn@4: func_setlistbox(handles.listbox_Parameters_matfilelist, vars.OT_matdir, 'none', vars, '*.mat'); Dawn@4: end Dawn@4: Dawn@4: set(handles.edit_Parameters_Textgriddir, 'String', vars.OT_Textgriddir); Dawn@4: set(handles.checkbox_Parameters_includeEGG, 'Value', vars.OT_includeEGG); Dawn@4: Dawn@4: if (vars.OT_includeEGG == 1) Dawn@4: set(handles.edit_Parameters_EGGdir, 'Enable', 'On'); Dawn@4: set(handles.pushbutton_Parameters_outBrowse, 'Enable', 'On'); Dawn@4: end Dawn@4: Dawn@4: set(handles.edit_Parameters_EGGdir, 'String', vars.OT_EGGdir); Dawn@4: set(handles.edit_Parameters_outdir, 'String', vars.OT_outputdir); Dawn@4: Dawn@4: set(handles.checkbox_Parameters_includeTextgrids, 'Value', vars.OT_includeTextgridLabels); Dawn@4: set(handles.popupmenu_Parameters_delimiter, 'Value', vars.OT_columndelimiter); Dawn@4: Dawn@4: set(handles.radiobutton_noSegments, 'Value', vars.OT_noSegments); Dawn@4: set(handles.radiobutton_useSegments, 'Value', vars.OT_useSegments); Dawn@4: Dawn@4: if (vars.OT_useSegments == 1) Dawn@4: set(handles.edit_numSegments, 'String', num2str(vars.OT_numSegments)); Dawn@4: set(handles.edit_numSegments, 'Enable', 'On'); Dawn@4: end Dawn@4: Dawn@4: set(handles.radiobutton_Singlefile, 'Value', vars.OT_singleFile); Dawn@4: set(handles.radiobutton_Multiplefiles, 'value', vars.OT_multipleFiles); Dawn@4: Dawn@4: set(handles.edit_OutputOptions_SingleFile, 'String', vars.OT_Single); Dawn@4: set(handles.edit_OutputOptions_F0CPPE, 'String', vars.OT_F0CPPE); Dawn@4: set(handles.edit_OutputOptions_Formants, 'String', vars.OT_Formants); Dawn@4: set(handles.edit_OutputOptions_Hx_Ax, 'String', vars.OT_HA); Dawn@4: set(handles.edit_OutputOptions_HxHx, 'String', vars.OT_HxHx); Dawn@4: set(handles.edit_OutputOptions_HxAx, 'String', vars.OT_HxAx); Dawn@4: set(handles.edit_OutputOptions_EGG, 'String', vars.OT_EGG); Dawn@4: Dawn@4: if (vars.OT_multipleFiles == 1) Dawn@4: set(handles.edit_OutputOptions_SingleFile, 'Enable', 'Off'); Dawn@4: set(handles.pushbutton_OutputOptions_SingleBrowse, 'Enable', 'Off'); Dawn@4: Dawn@4: set(handles.edit_OutputOptions_F0CPPE, 'Enable', 'On'); Dawn@4: set(handles.edit_OutputOptions_Formants, 'Enable', 'On'); Dawn@4: set(handles.edit_OutputOptions_Hx_Ax, 'Enable', 'On'); Dawn@4: set(handles.edit_OutputOptions_HxHx, 'Enable', 'On'); Dawn@4: set(handles.edit_OutputOptions_HxAx, 'Enable', 'On'); Dawn@4: set(handles.edit_OutputOptions_EGG, 'Enable', 'On'); Dawn@4: Dawn@4: set(handles.pushbutton_OO_F0CPPEBrowse, 'Enable', 'On'); Dawn@4: set(handles.pushbutton_OO_FormantsBrowse, 'Enable', 'On'); Dawn@4: set(handles.pushbutton_OO_Hx_AxBrowse, 'Enable', 'On'); Dawn@4: set(handles.pushbutton_OO_HxHxBrowse, 'Enable', 'On'); Dawn@4: set(handles.pushbutton_OO_HxAxBrowse', 'Enable', 'On'); Dawn@4: set(handles.pushbutton_OO_EGGBrowse', 'Enable', 'On'); Dawn@4: end Dawn@4: Dawn@4: Dawn@4: % --- Executes on selection change in listbox_Parameters_paramlist. Dawn@4: function listbox_Parameters_paramlist_Callback(hObject, eventdata, handles) Dawn@4: % hObject handle to listbox_Parameters_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: Dawn@4: VSData = guidata(handles.VSHandle); Dawn@4: inx = get(hObject, 'Value'); Dawn@4: Dawn@4: % now add the new entries and remove the old ones which are already Dawn@4: % selected Dawn@4: VSData.vars.OT_selectedParams = setxor(VSData.vars.OT_selectedParams, inx); Dawn@4: set(hObject, 'Value', VSData.vars.OT_selectedParams); Dawn@4: guidata(handles.VSHandle, VSData); Dawn@4: set(handles.edit_Parameters_num, 'String', num2str(sum(VSData.vars.OT_selectedParams > 0))); Dawn@4: Dawn@4: Dawn@4: % Hints: contents = get(hObject,'String') returns listbox_Parameters_paramlist contents as cell array Dawn@4: % contents{get(hObject,'Value')} returns selected item from listbox_Parameters_paramlist Dawn@4: Dawn@4: Dawn@4: % --- Executes during object creation, after setting all properties. Dawn@4: function listbox_Parameters_paramlist_CreateFcn(hObject, eventdata, handles) Dawn@4: % hObject handle to listbox_Parameters_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: Dawn@4: function edit_Parameters_num_Callback(hObject, eventdata, handles) Dawn@4: % hObject handle to edit_Parameters_num (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_Parameters_num as text Dawn@4: % str2double(get(hObject,'String')) returns contents of edit_Parameters_num as a double Dawn@4: Dawn@4: Dawn@4: % --- Executes during object creation, after setting all properties. Dawn@4: function edit_Parameters_num_CreateFcn(hObject, eventdata, handles) Dawn@4: % hObject handle to edit_Parameters_num (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: Dawn@4: function edit_Parameters_outdir_Callback(hObject, eventdata, handles) Dawn@4: % hObject handle to edit_Parameters_outdir (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_Parameters_outdir as text Dawn@4: % str2double(get(hObject,'String')) returns contents of edit_Parameters_outdir as a double Dawn@4: VSData = guidata(handles.VSHandle); Dawn@4: newdir = get(hObject, 'String'); Dawn@4: if (exist(newdir, 'dir') == 7) % new dir exists Dawn@4: if (newdir(end) ~= VSData.vars.dirdelimiter) Dawn@4: newdir(end + 1) = VSData.vars.dirdelimiter; Dawn@4: end Dawn@4: VSData.vars.OT_outputdir = newdir; Dawn@4: updateOutputFiles(handles); Dawn@4: else Dawn@4: msgbox('Error: directory not found.', 'Error', 'error', 'modal'); Dawn@4: set(hObject, 'String', VSData.vars.OT_outputdir); Dawn@4: end Dawn@4: guidata(handles.VSHandle, VSData); Dawn@4: Dawn@4: Dawn@4: % update the filenames in Output Options Dawn@4: function updateOutputFiles(handles) Dawn@4: VSData = guidata(handles.VSHandle); Dawn@4: Dawn@4: VSData.vars.OT_Single = [VSData.vars.OT_outputdir VSData.vars.OT_singleFilename]; Dawn@4: VSData.vars.OT_F0CPPE = [VSData.vars.OT_outputdir VSData.vars.OT_F0CPPEfilename]; Dawn@4: VSData.vars.OT_Formants = [VSData.vars.OT_outputdir VSData.vars.OT_Formantsfilename]; Dawn@4: VSData.vars.OT_HA = [VSData.vars.OT_outputdir VSData.vars.OT_Hx_Axfilename]; Dawn@4: VSData.vars.OT_HxHx = [VSData.vars.OT_outputdir VSData.vars.OT_HxHxfilename]; Dawn@4: VSData.vars.OT_HxAx = [VSData.vars.OT_outputdir VSData.vars.OT_HxAxfilename]; Dawn@4: VSData.vars.OT_EGG = [VSData.vars.OT_outputdir VSData.vars.OT_EGGfilename]; Dawn@4: Dawn@4: set(handles.edit_OutputOptions_SingleFile, 'String', VSData.vars.OT_Single); Dawn@4: set(handles.edit_OutputOptions_F0CPPE, 'String', VSData.vars.OT_F0CPPE); Dawn@4: set(handles.edit_OutputOptions_Formants, 'String', VSData.vars.OT_Formants); Dawn@4: set(handles.edit_OutputOptions_Hx_Ax, 'String', VSData.vars.OT_HA); Dawn@4: set(handles.edit_OutputOptions_HxHx, 'String', VSData.vars.OT_HxHx); Dawn@4: set(handles.edit_OutputOptions_HxAx, 'String', VSData.vars.OT_HxAx); Dawn@4: set(handles.edit_OutputOptions_EGG, 'String', VSData.vars.OT_EGG); Dawn@4: set(handles.edit_Parameters_outdir, 'String', VSData.vars.OT_outputdir); Dawn@4: set(handles.edit_Parameters_EGGdir, 'String', VSData.vars.OT_EGGdir); Dawn@4: guidata(handles.VSHandle, VSData); Dawn@4: Dawn@4: Dawn@4: % --- Executes during object creation, after setting all properties. Dawn@4: function edit_Parameters_outdir_CreateFcn(hObject, eventdata, handles) Dawn@4: % hObject handle to edit_Parameters_outdir (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_Parameters_outBrowse. Dawn@4: function pushbutton_Parameters_outBrowse_Callback(hObject, eventdata, handles) Dawn@4: % hObject handle to pushbutton_Parameters_outBrowse (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: VSData = guidata(handles.VSHandle); Dawn@4: newdir = uigetdir(VSData.vars.OT_outputdir); Dawn@4: if (ischar(newdir) == 1) Dawn@4: VSData.vars.OT_outputdir = [newdir VSData.vars.dirdelimiter]; Dawn@4: set(handles.edit_Parameters_outdir, 'String', VSData.vars.OT_outputdir); Dawn@4: guidata(handles.VSHandle, VSData); Dawn@4: updateOutputFiles(handles); Dawn@4: end Dawn@4: Dawn@4: Dawn@4: % --- Executes on selection change in popupmenu_Parameters_delimiter. Dawn@4: function popupmenu_Parameters_delimiter_Callback(hObject, eventdata, handles) Dawn@4: % hObject handle to popupmenu_Parameters_delimiter (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 popupmenu_Parameters_delimiter contents as cell array Dawn@4: % contents{get(hObject,'Value')} returns selected item from popupmenu_Parameters_delimiter Dawn@4: VSData = guidata(handles.VSHandle); Dawn@4: VSData.vars.OT_columndelimiter = get(hObject, 'Value'); Dawn@4: guidata(handles.VSHandle, VSData); Dawn@4: Dawn@4: Dawn@4: % --- Executes during object creation, after setting all properties. Dawn@4: function popupmenu_Parameters_delimiter_CreateFcn(hObject, eventdata, handles) Dawn@4: % hObject handle to popupmenu_Parameters_delimiter (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: popupmenu 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 checkbox_Parameters_includeEGG. Dawn@4: function checkbox_Parameters_includeEGG_Callback(hObject, eventdata, handles) Dawn@4: % hObject handle to checkbox_Parameters_includeEGG (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: VSData = guidata(handles.VSHandle); Dawn@4: Dawn@4: if (get(hObject, 'Value') == 1) Dawn@4: set(handles.edit_Parameters_EGGdir, 'Enable', 'On'); Dawn@4: set(handles.pushbutton_Parameters_EGGBrowse, 'Enable', 'On'); Dawn@4: VSData.vars.OT_includeEGG = 1; Dawn@4: else Dawn@4: set(handles.edit_Parameters_EGGdir, 'Enable', 'Off'); Dawn@4: set(handles.pushbutton_Parameters_EGGBrowse, 'Enable', 'Off'); Dawn@4: VSData.vars.OT_includeEGG = 0; Dawn@4: end Dawn@4: guidata(handles.VSHandle, VSData); Dawn@4: Dawn@4: Dawn@4: function edit_Parameters_matdir_Callback(hObject, eventdata, handles) Dawn@4: % hObject handle to edit_Parameters_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: % Hints: get(hObject,'String') returns contents of edit_Parameters_matdir as text Dawn@4: % str2double(get(hObject,'String')) returns contents of edit_Parameters_matdir as a double Dawn@4: VSData = guidata(handles.VSHandle); Dawn@4: newdir = get(hObject, 'String'); Dawn@4: if (exist(newdir, 'dir') == 7) % new dir exists Dawn@4: VSData = func_setmatdir('OT_matdir', newdir, VSData); Dawn@4: set(handles.edit_Parameters_Textgriddir, 'String', newdir); Dawn@4: Dawn@4: if (newdir(end) ~= VSData.vars.dirdelimiter) Dawn@4: newdir(end + 1) = VSData.vars.dirdelimiter; Dawn@4: end Dawn@4: VSData.vars.OT_outputdir = newdir; Dawn@4: guidata(handles.VSHandle, VSData); Dawn@4: updateOutputFiles(handles); Dawn@4: else Dawn@4: msgbox('Error: directory not found.', 'Error', 'error', 'modal'); Dawn@4: set(hObject, 'String', VSData.vars.OT_matdir); Dawn@4: end Dawn@4: guidata(handles.VSHandle, VSData); Dawn@4: Dawn@4: Dawn@4: % --- Executes during object creation, after setting all properties. Dawn@4: function edit_Parameters_matdir_CreateFcn(hObject, eventdata, handles) Dawn@4: % hObject handle to edit_Parameters_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_Parameters_matBrowse. Dawn@4: function pushbutton_Parameters_matBrowse_Callback(hObject, eventdata, handles) Dawn@4: % hObject handle to pushbutton_Parameters_matBrowse (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: VSData = guidata(handles.VSHandle); Dawn@4: newdir = uigetdir(VSData.vars.OT_matdir); Dawn@4: if (ischar(newdir) == 1) Dawn@4: VSData = func_setmatdir('OT_matdir', newdir, VSData); Dawn@4: set(handles.edit_Parameters_matdir, 'String', newdir); Dawn@4: set(handles.edit_Parameters_Textgriddir, 'String', newdir); Dawn@4: Dawn@4: if (newdir(end) ~= VSData.vars.dirdelimiter) Dawn@4: newdir(end + 1) = VSData.vars.dirdelimiter; Dawn@4: end Dawn@4: VSData.vars.OT_outputdir = newdir; Dawn@4: guidata(handles.VSHandle, VSData); Dawn@4: updateOutputFiles(handles); Dawn@4: Dawn@4: if (get(handles.checkbox_Parameters_includesubdir, 'Value') == 1) Dawn@4: func_setlistbox(handles.listbox_Parameters_matfilelist, VSData.vars.OT_matdir, 'recurse', VSData.vars, '*.mat'); Dawn@4: else Dawn@4: func_setlistbox(handles.listbox_Parameters_matfilelist, VSData.vars.OT_matdir, 'none', VSData.vars, '*.mat'); Dawn@4: end Dawn@4: guidata(handles.VSHandle, VSData); Dawn@4: end Dawn@4: Dawn@4: Dawn@4: Dawn@4: function edit_Parameters_Textgriddir_Callback(hObject, eventdata, handles) Dawn@4: % hObject handle to edit_Parameters_Textgriddir (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_Parameters_Textgriddir as text Dawn@4: % str2double(get(hObject,'String')) returns contents of edit_Parameters_Textgriddir as a double Dawn@4: VSData = guidata(handles.VSHandle); Dawn@4: newdir = get(hObject, 'String'); Dawn@4: if (exist(newdir, 'dir') == 7) % new dir exists Dawn@4: VSData.vars.OT_Textgriddir = newdir; Dawn@4: else Dawn@4: msgbox('Error: directory not found.', 'Error', 'error', 'modal'); Dawn@4: set(hObject, 'String', VSData.vars.OT_Textgriddir); Dawn@4: end Dawn@4: guidata(handles.VSHandle, VSData); Dawn@4: Dawn@4: Dawn@4: % --- Executes during object creation, after setting all properties. Dawn@4: function edit_Parameters_Textgriddir_CreateFcn(hObject, eventdata, handles) Dawn@4: % hObject handle to edit_Parameters_Textgriddir (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_Parameters_TextgridBrowse. Dawn@4: function pushbutton_Parameters_TextgridBrowse_Callback(hObject, eventdata, handles) Dawn@4: % hObject handle to pushbutton_Parameters_TextgridBrowse (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: VSData = guidata(handles.VSHandle); Dawn@4: newdir = uigetdir(VSData.vars.OT_Textgriddir); Dawn@4: if (ischar(newdir) == 1) Dawn@4: VSData.vars.OT_Textgriddir = newdir; Dawn@4: set(handles.edit_Parameters_Textgriddir, 'String', newdir); Dawn@4: guidata(handles.VSHandle, VSData); Dawn@4: end Dawn@4: Dawn@4: Dawn@4: function edit_Parameters_EGGdir_Callback(hObject, eventdata, handles) Dawn@4: % hObject handle to edit_Parameters_EGGdir (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_Parameters_EGGdir as text Dawn@4: % str2double(get(hObject,'String')) returns contents of edit_Parameters_EGGdir as a double Dawn@4: VSData = guidata(handles.VSHandle); Dawn@4: newdir = get(hObject, 'String'); Dawn@4: if (exist(newdir, 'dir') == 7) % new dir exists Dawn@4: VSData.vars.OT_EGGdir = newdir; Dawn@4: else Dawn@4: msgbox('Error: directory not found.', 'Error', 'error', 'modal'); Dawn@4: set(hObject, 'String', VSData.vars.OT_EGGdir); Dawn@4: end Dawn@4: guidata(handles.VSHandle, VSData); Dawn@4: Dawn@4: Dawn@4: % --- Executes during object creation, after setting all properties. Dawn@4: function edit_Parameters_EGGdir_CreateFcn(hObject, eventdata, handles) Dawn@4: % hObject handle to edit_Parameters_EGGdir (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_Parameters_EGGBrowse. Dawn@4: function pushbutton_Parameters_EGGBrowse_Callback(hObject, eventdata, handles) Dawn@4: % hObject handle to pushbutton_Parameters_EGGBrowse (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: VSData = guidata(handles.VSHandle); Dawn@4: newdir = uigetdir(VSData.vars.OT_EGGdir); Dawn@4: if (ischar(newdir) == 1) Dawn@4: set(handles.edit_Parameters_EGGdir, 'String', newdir); Dawn@4: VSData.vars.OT_EGGdir = newdir; Dawn@4: guidata(handles.VSHandle, VSData); Dawn@4: end Dawn@4: Dawn@4: Dawn@4: function edit_numSegments_Callback(hObject, eventdata, handles) Dawn@4: % hObject handle to edit_numSegments (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_numSegments as text Dawn@4: % str2double(get(hObject,'String')) returns contents of edit_numSegments as a double Dawn@4: Dawn@4: VSData = guidata(handles.VSHandle); Dawn@4: num = str2double(get(hObject, 'String')); Dawn@4: Dawn@4: if (~isnan(num)) Dawn@4: num = round(num); Dawn@4: if (num < 1) Dawn@4: num = 1; Dawn@4: elseif (num > 999) Dawn@4: num = 999; Dawn@4: end Dawn@4: Dawn@4: VSData.vars.OT_numSegments = num; Dawn@4: Dawn@4: set(hObject, 'String', num2str(VSData.vars.OT_numSegments)); Dawn@4: guidata(handles.VSHandle, VSData); Dawn@4: else Dawn@4: set(hObject, 'String', num2str(VSData.vars.OT_numSegments)); Dawn@4: end Dawn@4: Dawn@4: Dawn@4: % --- Executes during object creation, after setting all properties. Dawn@4: function edit_numSegments_CreateFcn(hObject, eventdata, handles) Dawn@4: % hObject handle to edit_numSegments (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: Dawn@4: function edit_OutputOptions_SingleFile_Callback(hObject, eventdata, handles) Dawn@4: % hObject handle to edit_OutputOptions_SingleFile (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: VSData = guidata(handles.VSHandle); Dawn@4: Dawn@4: str = get(hObject, 'String'); Dawn@4: [pathname, filename, ext] = fileparts(str); Dawn@4: Dawn@4: if (exist(pathname, 'dir') == 7) Dawn@4: VSData.vars.OT_singleFilename = [filename ext]; Dawn@4: VSData.vars.OT_Single = [pathname VSData.vars.dirdelimiter VSData.vars.OT_singleFilename]; Dawn@4: end Dawn@4: Dawn@4: set(hObject, 'String', VSData.vars.OT_Single); Dawn@4: guidata(handles.VSHandle, VSData); Dawn@4: Dawn@4: Dawn@4: % --- Executes during object creation, after setting all properties. Dawn@4: function edit_OutputOptions_SingleFile_CreateFcn(hObject, eventdata, handles) Dawn@4: % hObject handle to edit_OutputOptions_SingleFile (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_OutputOptions_SingleBrowse. Dawn@4: function pushbutton_OutputOptions_SingleBrowse_Callback(hObject, eventdata, handles) Dawn@4: % hObject handle to pushbutton_OutputOptions_SingleBrowse (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: VSData = guidata(handles.VSHandle); Dawn@4: [newfile newpath] = uiputfile({'*.txt', '*.txt'}, 'Select Output File', VSData.vars.OT_singleFilename); Dawn@4: if (ischar(newfile) == 1) Dawn@4: set(handles.edit_OutputOptions_SingleFile, 'String', [newpath newfile]); Dawn@4: VSData.vars.OT_Single = [newpath newfile]; Dawn@4: guidata(handles.VSHandle, VSData); Dawn@4: end Dawn@4: Dawn@4: Dawn@4: function edit_OutputOptions_F0CPPE_Callback(hObject, eventdata, handles) Dawn@4: % hObject handle to edit_OutputOptions_F0CPPE (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: VSData = guidata(handles.VSHandle); Dawn@4: Dawn@4: str = get(hObject, 'String'); Dawn@4: [pathname, filename, ext] = fileparts(str); Dawn@4: Dawn@4: if (exist(pathname, 'dir') == 7) Dawn@4: VSData.vars.OT_F0CPPEfilename = [filename ext]; Dawn@4: VSData.vars.OT_F0CPPE = [pathname VSData.vars.dirdelimiter VSData.vars.OT_F0CPPEfilename]; Dawn@4: end Dawn@4: Dawn@4: set(hObject, 'String', VSData.vars.OT_F0CPPE); Dawn@4: guidata(handles.VSHandle, VSData); Dawn@4: Dawn@4: Dawn@4: % --- Executes during object creation, after setting all properties. Dawn@4: function edit_OutputOptions_F0CPPE_CreateFcn(hObject, eventdata, handles) Dawn@4: % hObject handle to edit_OutputOptions_F0CPPE (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: Dawn@4: function edit_OutputOptions_Formants_Callback(hObject, eventdata, handles) Dawn@4: % hObject handle to edit_OutputOptions_Formants (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: VSData = guidata(handles.VSHandle); Dawn@4: Dawn@4: str = get(hObject, 'String'); Dawn@4: [pathname, filename, ext] = fileparts(str); Dawn@4: Dawn@4: if (exist(pathname, 'dir') == 7) Dawn@4: VSData.vars.OT_Formantsfilename = [filename ext]; Dawn@4: VSData.vars.OT_Formants = [pathname VSData.vars.dirdelimiter VSData.vars.OT_Formantsfilename]; Dawn@4: end Dawn@4: Dawn@4: set(hObject, 'String', VSData.vars.OT_Formants); Dawn@4: guidata(handles.VSHandle, VSData); Dawn@4: Dawn@4: Dawn@4: % --- Executes during object creation, after setting all properties. Dawn@4: function edit_OutputOptions_Formants_CreateFcn(hObject, eventdata, handles) Dawn@4: % hObject handle to edit_OutputOptions_Formants (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: function edit_OutputOptions_Hx_Ax_Callback(hObject, eventdata, handles) Dawn@4: % hObject handle to edit_OutputOptions_Hx_Ax (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: VSData = guidata(handles.VSHandle); Dawn@4: Dawn@4: str = get(hObject, 'String'); Dawn@4: [pathname, filename, ext] = fileparts(str); Dawn@4: Dawn@4: if (exist(pathname, 'dir') == 7) Dawn@4: VSData.vars.OT_Hx_Axfilename = [filename ext]; Dawn@4: VSData.vars.OT_HA = [pathname VSData.vars.dirdelimiter VSData.vars.OT_Hx_Axfilename]; Dawn@4: end Dawn@4: Dawn@4: set(hObject, 'String', VSData.vars.OT_HA); Dawn@4: guidata(handles.VSHandle, VSData); Dawn@4: Dawn@4: Dawn@4: % --- Executes during object creation, after setting all properties. Dawn@4: function edit_OutputOptions_Hx_Ax_CreateFcn(hObject, eventdata, handles) Dawn@4: % hObject handle to edit_OutputOptions_Hx_Ax (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: Dawn@4: function edit_OutputOptions_HxHx_Callback(hObject, eventdata, handles) Dawn@4: % hObject handle to edit_OutputOptions_HxHx (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: VSData = guidata(handles.VSHandle); Dawn@4: Dawn@4: str = get(hObject, 'String'); Dawn@4: [pathname, filename, ext] = fileparts(str); Dawn@4: Dawn@4: if (exist(pathname, 'dir') == 7) Dawn@4: VSData.vars.OT_HxHxfilename = [filename ext]; Dawn@4: VSData.vars.OT_HxHx = [pathname VSData.vars.dirdelimiter VSData.vars.OT_HxHxfilename]; Dawn@4: end Dawn@4: Dawn@4: set(hObject, 'String', VSData.vars.OT_HxHx); Dawn@4: guidata(handles.VSHandle, VSData); Dawn@4: Dawn@4: Dawn@4: % --- Executes during object creation, after setting all properties. Dawn@4: function edit_OutputOptions_HxHx_CreateFcn(hObject, eventdata, handles) Dawn@4: % hObject handle to edit_OutputOptions_HxHx (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: Dawn@4: function edit_OutputOptions_HxAx_Callback(hObject, eventdata, handles) Dawn@4: % hObject handle to edit_OutputOptions_HxAx (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: VSData = guidata(handles.VSHandle); Dawn@4: Dawn@4: str = get(hObject, 'String'); Dawn@4: [pathname, filename, ext] = fileparts(str); Dawn@4: Dawn@4: if (exist(pathname, 'dir') == 7) Dawn@4: VSData.vars.OT_HxAxfilename = [filename ext]; Dawn@4: VSData.vars.OT_HxAx = [pathname VSData.vars.dirdelimiter VSData.vars.OT_HxAxfilename]; Dawn@4: end Dawn@4: Dawn@4: set(hObject, 'String', VSData.vars.OT_HxAx); Dawn@4: guidata(handles.VSHandle, VSData); Dawn@4: Dawn@4: Dawn@4: % --- Executes during object creation, after setting all properties. Dawn@4: function edit_OutputOptions_HxAx_CreateFcn(hObject, eventdata, handles) Dawn@4: % hObject handle to edit_OutputOptions_HxAx (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_OO_F0CPPEBrowse. Dawn@4: function pushbutton_OO_F0CPPEBrowse_Callback(hObject, eventdata, handles) Dawn@4: % hObject handle to pushbutton_OO_F0CPPEBrowse (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: VSData = guidata(handles.VSHandle); Dawn@4: [newfile newpath] = uiputfile({'*.txt', '*.txt'}, 'Select Output File', VSData.vars.OT_F0CPPEfilename); Dawn@4: if (ischar(newfile) == 1) Dawn@4: set(handles.edit_OutputOptions_F0CPPE, 'String', [newpath newfile]); Dawn@4: VSData.vars.OT_F0CPPE = [newpath newfile]; Dawn@4: guidata(handles.VSHandle, VSData); Dawn@4: end Dawn@4: Dawn@4: Dawn@4: % --- Executes on button press in pushbutton_OO_FormantsBrowse. Dawn@4: function pushbutton_OO_FormantsBrowse_Callback(hObject, eventdata, handles) Dawn@4: % hObject handle to pushbutton_OO_FormantsBrowse (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: VSData = guidata(handles.VSHandle); Dawn@4: [newfile newpath] = uiputfile({'*.txt', '*.txt'}, 'Select Output File', VSData.vars.OT_Formantsfilename); Dawn@4: if (ischar(newfile) == 1) Dawn@4: set(handles.edit_OutputOptions_Formants, 'String', [newpath newfile]); Dawn@4: VSData.vars.OT_Formants = [newpath newfile]; Dawn@4: guidata(handles.VSHandle, VSData); Dawn@4: end Dawn@4: Dawn@4: Dawn@4: % --- Executes on button press in pushbutton_OO_Hx_AxBrowse. Dawn@4: function pushbutton_OO_Hx_AxBrowse_Callback(hObject, eventdata, handles) Dawn@4: % hObject handle to pushbutton_OO_Hx_AxBrowse (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: VSData = guidata(handles.VSHandle); Dawn@4: [newfile newpath] = uiputfile({'*.txt', '*.txt'}, 'Select Output File', VSData.vars.OT_Hx_Axfilename); Dawn@4: if (ischar(newfile) == 1) Dawn@4: set(handles.edit_OutputOptions_Hx_Ax, 'String', [newpath newfile]); Dawn@4: VSData.vars.OT_HA = [newpath newfile]; Dawn@4: guidata(handles.VSHandle, VSData); Dawn@4: end Dawn@4: Dawn@4: Dawn@4: % --- Executes on button press in pushbutton_OO_HxHxBrowse. Dawn@4: function pushbutton_OO_HxHxBrowse_Callback(hObject, eventdata, handles) Dawn@4: % hObject handle to pushbutton_OO_HxHxBrowse (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: VSData = guidata(handles.VSHandle); Dawn@4: [newfile newpath] = uiputfile({'*.txt', '*.txt'}, 'Select Output File', VSData.vars.OT_HxHxfilename); Dawn@4: if (ischar(newfile) == 1) Dawn@4: set(handles.edit_OutputOptions_HxHx, 'String', [newpath newfile]); Dawn@4: VSData.vars.OT_HxHx = [newpath newfile]; Dawn@4: guidata(handles.VSHandle, VSData); Dawn@4: end Dawn@4: Dawn@4: Dawn@4: % --- Executes on button press in pushbutton_OO_HxAxBrowse. Dawn@4: function pushbutton_OO_HxAxBrowse_Callback(hObject, eventdata, handles) Dawn@4: % hObject handle to pushbutton_OO_HxAxBrowse (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: VSData = guidata(handles.VSHandle); Dawn@4: [newfile newpath] = uiputfile({'*.txt', '*.txt'}, 'Select Output File', VSData.vars.OT_HxAxfilename); Dawn@4: if (ischar(newfile) == 1) Dawn@4: set(handles.edit_OutputOptions_HxAx, 'String', [newpath newfile]); Dawn@4: VSData.vars.OT_HxAx = [newpath newfile]; Dawn@4: guidata(handles.VSHandle, VSData); Dawn@4: end Dawn@4: Dawn@4: Dawn@4: function edit_OutputOptions_EGG_Callback(hObject, eventdata, handles) Dawn@4: % hObject handle to edit_OutputOptions_EGG (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: VSData = guidata(handles.VSHandle); Dawn@4: Dawn@4: str = get(hObject, 'String'); Dawn@4: [pathname, filename, ext] = fileparts(str); Dawn@4: Dawn@4: if (exist(pathname, 'dir') == 7) Dawn@4: VSData.vars.OT_EGGfilename = [filename ext]; Dawn@4: VSData.vars.OT_EGG = [pathname VSData.vars.dirdelimiter VSData.vars.OT_EGGfilename]; Dawn@4: end Dawn@4: Dawn@4: set(hObject, 'String', VSData.vars.OT_EGG); Dawn@4: guidata(handles.VSHandle, VSData); Dawn@4: Dawn@4: Dawn@4: % --- Executes during object creation, after setting all properties. Dawn@4: function edit_OutputOptions_EGG_CreateFcn(hObject, eventdata, handles) Dawn@4: % hObject handle to edit_OutputOptions_EGG (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_OO_EGGBrowse. Dawn@4: function pushbutton_OO_EGGBrowse_Callback(hObject, eventdata, handles) Dawn@4: % hObject handle to pushbutton_OO_EGGBrowse (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: VSData = guidata(handles.VSHandle); Dawn@4: [newfile newpath] = uiputfile({'*.txt', '*.txt'}, 'Select Output File', VSData.vars.OT_EGGfilename); Dawn@4: if (ischar(newfile) == 1) Dawn@4: set(handles.edit_OutputOptions_EGG, 'String', [newpath newfile]); Dawn@4: VSData.vars.OT_EGG = [newpath newfile]; Dawn@4: guidata(handles.VSHandle, VSData); Dawn@4: end Dawn@4: Dawn@4: % --- Executes on button press in togglebutton_Start. Dawn@4: function togglebutton_Start_Callback(hObject, eventdata, handles) Dawn@4: % hObject handle to togglebutton_Start (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: % Hint: get(hObject,'Value') returns toggle state of togglebutton_Start Dawn@4: if (get(hObject, 'Value') == 1) % start writing output Dawn@4: set(hObject, 'String', 'Processing...', 'ForegroundColor', 'red'); Dawn@4: Dawn@4: OutputToText(handles); Dawn@4: set(hObject, 'String', 'Start!', 'ForegroundColor', 'black', 'Value', 0); Dawn@4: Dawn@4: end Dawn@4: Dawn@4: Dawn@4: Dawn@4: Dawn@4: % --- Executes on button press in checkbox_Parameters_includeTextgrids. Dawn@4: function checkbox_Parameters_includeTextgrids_Callback(hObject, eventdata, handles) Dawn@4: % hObject handle to checkbox_Parameters_includeTextgrids (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: VSData = guidata(handles.VSHandle); Dawn@4: VSData.vars.OT_includeTextgridLabels = get(hObject, 'Value'); Dawn@4: guidata(handles.VSHandle, VSData); Dawn@4: Dawn@4: Dawn@4: Dawn@4: function segments_buttongroup_SelectionChangeFcn(hObject, eventdata) Dawn@4: handles = guidata(hObject); Dawn@4: VSData = guidata(handles.VSHandle); Dawn@4: Dawn@4: switch (get(eventdata.NewValue, 'Tag')) Dawn@4: case 'radiobutton_noSegments' Dawn@4: VSData.vars.OT_noSegments = 1; Dawn@4: VSData.vars.OT_useSegments = 0; Dawn@4: set(handles.edit_numSegments, 'Enable', 'Off'); Dawn@4: case 'radiobutton_useSegments' Dawn@4: VSData.vars.OT_noSegments = 0; Dawn@4: VSData.vars.OT_useSegments = 1; Dawn@4: set(handles.edit_numSegments, 'Enable', 'On'); Dawn@4: end Dawn@4: guidata(handles.VSHandle, VSData); Dawn@4: Dawn@4: Dawn@4: % Dawn@4: function outputoptions_buttongroup_SelectionChangeFcn(hObject, eventdata) Dawn@4: handles = guidata(hObject); Dawn@4: VSData = guidata(handles.VSHandle); Dawn@4: Dawn@4: switch (get(eventdata.NewValue, 'Tag')) Dawn@4: case 'radiobutton_Singlefile' Dawn@4: VSData.vars.OT_singleFile = 1; Dawn@4: VSData.vars.OT_multipleFiles = 0; Dawn@4: Dawn@4: set(handles.edit_OutputOptions_SingleFile, 'Enable', 'On'); Dawn@4: set(handles.pushbutton_OutputOptions_SingleBrowse, 'Enable', 'On'); Dawn@4: Dawn@4: set(handles.edit_OutputOptions_F0CPPE, 'Enable', 'Off'); Dawn@4: set(handles.edit_OutputOptions_Formants, 'Enable', 'Off'); Dawn@4: set(handles.edit_OutputOptions_Hx_Ax, 'Enable', 'Off'); Dawn@4: set(handles.edit_OutputOptions_HxHx, 'Enable', 'Off'); Dawn@4: set(handles.edit_OutputOptions_HxAx, 'Enable', 'Off'); Dawn@4: set(handles.edit_OutputOptions_EGG, 'Enable', 'Off'); Dawn@4: Dawn@4: set(handles.pushbutton_OO_F0CPPEBrowse, 'Enable', 'Off'); Dawn@4: set(handles.pushbutton_OO_FormantsBrowse, 'Enable', 'Off'); Dawn@4: set(handles.pushbutton_OO_Hx_AxBrowse, 'Enable', 'Off'); Dawn@4: set(handles.pushbutton_OO_HxHxBrowse, 'Enable', 'Off'); Dawn@4: set(handles.pushbutton_OO_HxAxBrowse, 'Enable', 'Off'); Dawn@4: set(handles.pushbutton_OO_EGGBrowse, 'Enable', 'Off'); Dawn@4: Dawn@4: case 'radiobutton_Multiplefiles' Dawn@4: VSData.vars.OT_singleFile = 0; Dawn@4: VSData.vars.OT_multipleFiles = 1; Dawn@4: Dawn@4: set(handles.edit_OutputOptions_SingleFile, 'Enable', 'Off'); Dawn@4: set(handles.pushbutton_OutputOptions_SingleBrowse, 'Enable', 'Off'); Dawn@4: Dawn@4: set(handles.edit_OutputOptions_F0CPPE, 'Enable', 'On'); Dawn@4: set(handles.edit_OutputOptions_Formants, 'Enable', 'On'); Dawn@4: set(handles.edit_OutputOptions_Hx_Ax, 'Enable', 'On'); Dawn@4: set(handles.edit_OutputOptions_HxHx, 'Enable', 'On'); Dawn@4: set(handles.edit_OutputOptions_HxAx, 'Enable', 'On'); Dawn@4: set(handles.edit_OutputOptions_EGG, 'Enable', 'On'); Dawn@4: Dawn@4: set(handles.pushbutton_OO_F0CPPEBrowse, 'Enable', 'On'); Dawn@4: set(handles.pushbutton_OO_FormantsBrowse, 'Enable', 'On'); Dawn@4: set(handles.pushbutton_OO_Hx_AxBrowse, 'Enable', 'On'); Dawn@4: set(handles.pushbutton_OO_HxHxBrowse, 'Enable', 'On'); Dawn@4: set(handles.pushbutton_OO_HxAxBrowse, 'Enable', 'On'); Dawn@4: set(handles.pushbutton_OO_EGGBrowse, 'Enable', 'On'); Dawn@4: end Dawn@4: guidata(handles.VSHandle, VSData); Dawn@4: Dawn@4: Dawn@4: % --- Executes on selection change in listbox_Parameters_matfilelist. Dawn@4: function listbox_Parameters_matfilelist_Callback(hObject, eventdata, handles) Dawn@4: % hObject handle to listbox_Parameters_matfilelist (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_Parameters_matfilelist contents as cell array Dawn@4: % contents{get(hObject,'Value')} returns selected item from listbox_Parameters_matfilelist Dawn@4: Dawn@4: Dawn@4: % --- Executes during object creation, after setting all properties. Dawn@4: function listbox_Parameters_matfilelist_CreateFcn(hObject, eventdata, handles) Dawn@4: % hObject handle to listbox_Parameters_matfilelist (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 checkbox_Parameters_includesubdir. Dawn@4: function checkbox_Parameters_includesubdir_Callback(hObject, eventdata, handles) Dawn@4: % hObject handle to checkbox_Parameters_includesubdir (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: VSData = guidata(handles.VSHandle); Dawn@4: VSData.vars.OT_includesubdir = get(hObject, 'Value'); Dawn@4: guidata(handles.VSHandle, VSData); Dawn@4: if (VSData.vars.OT_includesubdir == 1) Dawn@4: func_setlistbox(handles.listbox_Parameters_matfilelist, VSData.vars.OT_matdir, 'recurse', VSData.vars, '*.mat'); Dawn@4: else Dawn@4: func_setlistbox(handles.listbox_Parameters_matfilelist, VSData.vars.OT_matdir, 'none', VSData.vars, '*.mat'); Dawn@4: end Dawn@4: Dawn@4: Dawn@4: Dawn@4: % executes on key press Dawn@4: function matfiles_listbox_KeyPressFcn(hObject, eventdata) Dawn@4: handles = guidata(hObject); Dawn@4: Dawn@4: key = double(get(gcbf, 'CurrentCharacter')); Dawn@4: if (gcbo == handles.listbox_Parameters_matfilelist) Dawn@4: if (key == 127) % delete key Dawn@4: Dawn@4: inx = get(handles.listbox_Parameters_matfilelist, 'Value'); Dawn@4: contents = get(handles.listbox_Parameters_matfilelist, 'String'); Dawn@4: Dawn@4: %nothing to do Dawn@4: if (isempty(contents)) Dawn@4: return; Dawn@4: end Dawn@4: Dawn@4: newinx = setxor(inx, [1:length(contents)]); Dawn@4: Dawn@4: newcontents = contents(newinx); Dawn@4: set(handles.listbox_Parameters_matfilelist, 'String', newcontents); Dawn@4: Dawn@4: if (inx(end) > length(newcontents)) Dawn@4: set(handles.listbox_Parameters_matfilelist, 'Value', length(newcontents)); Dawn@4: else Dawn@4: set(handles.listbox_Parameters_matfilelist, 'Value', inx(end)); Dawn@4: end Dawn@4: end Dawn@4: end Dawn@4: Dawn@4: Dawn@4: % this is the function that does the actual outputting of text Dawn@4: function OutputToText(handles) Dawn@4: Dawn@4: % check if there are any parameters and files selected Dawn@4: if (isempty(get(handles.listbox_Parameters_paramlist, 'Value')) && get(handles.checkbox_Parameters_includeEGG, 'Value') == 0) Dawn@4: msgbox('Error: No parameters selected.', 'Error', 'warn', 'modal'); Dawn@4: return; Dawn@4: end Dawn@4: Dawn@4: if (isempty(get(handles.listbox_Parameters_matfilelist, 'String'))) Dawn@4: msgbox('Error: No mat files to process.', 'Error', 'warn', 'modal'); Dawn@4: return; Dawn@4: end Dawn@4: Dawn@4: % get variables from the main VS window Dawn@4: VSData = guidata(handles.VSHandle); Dawn@4: matfilelist = get(handles.listbox_Parameters_matfilelist, 'String'); Dawn@4: contents = get(handles.listbox_Parameters_paramlist, 'String'); Dawn@4: paramlist = contents(get(handles.listbox_Parameters_paramlist, 'Value')); Dawn@4: Dawn@4: % get the output delimiter Dawn@4: contents = get(handles.popupmenu_Parameters_delimiter, 'String'); Dawn@4: delim = contents{VSData.vars.OT_columndelimiter}; Dawn@4: delimiter = 9; % ascii code for tab Dawn@4: switch(delim) Dawn@4: case {'tab'} Dawn@4: delimiter = 9; Dawn@4: case {'comma'} Dawn@4: delimiter = 44; %ascii for comma Dawn@4: case {'space'} Dawn@4: delimiter = ' '; Dawn@4: end Dawn@4: Dawn@4: % check output files Dawn@4: fids = zeros(6, 1); % these store the fids of the open files Dawn@4: if (get(handles.radiobutton_Singlefile, 'Value') == 1) % single file Dawn@4: fid = fopen(VSData.vars.OT_Single, 'wt'); Dawn@4: Dawn@4: if (fid == -1) Dawn@4: msgbox('Error: Unable to open file for output.', 'Error', 'error', 'modal'); Dawn@4: return; Dawn@4: end Dawn@4: Dawn@4: writeFileHeaders(fid, paramlist, handles, delimiter); Dawn@4: fids = [fid fid fid fid fid fid]; Dawn@4: Dawn@4: else % multiple files Dawn@4: fid1 = fopen(VSData.vars.OT_F0CPPE, 'wt'); Dawn@4: fid2 = fopen(VSData.vars.OT_Formants, 'wt'); Dawn@4: fid3 = fopen(VSData.vars.OT_HA, 'wt'); Dawn@4: fid4 = fopen(VSData.vars.OT_HxHx, 'wt'); Dawn@4: fid5 = fopen(VSData.vars.OT_HxAx, 'wt'); Dawn@4: Dawn@4: if (fid1 == -1) Dawn@4: msgbox('Error: Unable to open F0/CPP/E file for output.', 'Error', 'error', 'modal'); Dawn@4: return; Dawn@4: end Dawn@4: Dawn@4: if (fid2 == -1) Dawn@4: msgbox('Error: Unable to open Formants file for output.', 'Error', 'error', 'modal'); Dawn@4: return; Dawn@4: end Dawn@4: Dawn@4: if (fid3 == -1) Dawn@4: msgbox('Error: Unable to open Hx/Ax file for output.', 'Error', 'error', 'modal'); Dawn@4: return; Dawn@4: end Dawn@4: Dawn@4: if (fid4 == -1) Dawn@4: msgbox('Error: Unable to open Hx-Hx file for output.', 'Error', 'error', 'modal'); Dawn@4: return; Dawn@4: end Dawn@4: Dawn@4: if (fid5 == -1) Dawn@4: msgbox('Error: Unable to open Hx-Ax file for output.', 'Error', 'error', 'modal'); Dawn@4: return; Dawn@4: end Dawn@4: Dawn@4: fidEGG = -1; Dawn@4: if (VSData.vars.OT_includeEGG == 1) Dawn@4: fidEGG = fopen(VSData.vars.OT_EGG, 'wt'); Dawn@4: if (fidEGG == -1) Dawn@4: msgbox('Error: Unable to open EGG file for output.', 'Error', 'error', 'modal'); Dawn@4: return; Dawn@4: end Dawn@4: end Dawn@4: Dawn@4: fids = [fid1 fid2 fid3 fid4 fid5 fidEGG]; Dawn@4: writeFileHeaders(fids, paramlist, handles, delimiter); Dawn@4: end Dawn@4: Dawn@4: MBox = MessageBox; Dawn@4: MBoxHandles = guidata(MBox); Dawn@4: messages = cell(length(matfilelist) + 1, 1); % allocate some memory for messages Dawn@4: errorcnt = 0; Dawn@4: uniquefids = unique(fids); % store the number of unique fids Dawn@4: Dawn@4: % process every file in matfilelist Dawn@4: for k=1:length(matfilelist) Dawn@4: matfile = [VSData.vars.OT_matdir VSData.vars.dirdelimiter matfilelist{k}]; Dawn@4: TGfile = [VSData.vars.OT_Textgriddir VSData.vars.dirdelimiter matfilelist{k}(1:end-3) 'Textgrid']; Dawn@4: messages{k} = sprintf('%d/%d. %s: ', k, length(matfilelist), matfilelist{k}); Dawn@4: set(MBoxHandles.listbox_messages, 'String', messages, 'Value', k); Dawn@4: drawnow; Dawn@4: Dawn@4: mdata = func_buildMData(matfile, VSData.vars.O_smoothwinsize); Dawn@4: Dawn@4: frameshift = VSData.vars.frameshift; % this could be wrong if the mat file has it's own frameshift Dawn@4: if (isfield(mdata, 'frameshift')) Dawn@4: frameshift = mdata.frameshift; Dawn@4: end Dawn@4: Dawn@4: % find the max length of the data Dawn@4: if (isfield(mdata, 'strF0')) Dawn@4: maxlen = length(mdata.strF0) * frameshift; Dawn@4: elseif (isfield(mdata, 'sF0')) Dawn@4: maxlen = length(mdata.sF0) * frameshift; Dawn@4: elseif (isfield(mdata, 'pF0')) Dawn@4: maxlen = length(mdata.pF0) * frameshift; Dawn@4: elseif (isfield(mdata, 'oF0')) Dawn@4: maxlen = length(mdata.oF0) * frameshift; Dawn@4: end Dawn@4: Dawn@4: % load up the textgrid data, or if it doesn't exist, use the whole file Dawn@4: if (exist(TGfile, 'file') == 0) % file not found, use start and end Dawn@4: messages{k} = [messages{k} 'Textgrid not found - using all data points: ']; Dawn@4: set(MBoxHandles.listbox_messages, 'String', messages, 'Value', k); Dawn@4: drawnow; Dawn@4: Dawn@4: start = 1; Dawn@4: stop = maxlen; Dawn@4: labels = {matfilelist{k}}; Dawn@4: Dawn@4: else % use textgrid start points Dawn@4: ignorelabels = textscan(VSData.vars.TextgridIgnoreList, '%s', 'delimiter', ','); Dawn@4: ignorelabels = ignorelabels{1}; Dawn@4: Dawn@4: [labels, start, stop] = func_readTextgrid(TGfile); Dawn@4: labels_tmp = []; Dawn@4: start_tmp = []; Dawn@4: stop_tmp = []; Dawn@4: Dawn@4: for m=1:length(VSData.vars.TextgridTierNumber) Dawn@4: inx = VSData.vars.TextgridTierNumber(m); Dawn@4: if (inx <= length(labels)) Dawn@4: labels_tmp = [labels_tmp; labels{inx}]; Dawn@4: start_tmp = [start_tmp; start{inx}]; Dawn@4: stop_tmp = [stop_tmp; stop{inx}]; Dawn@4: end Dawn@4: end Dawn@4: Dawn@4: labels = labels_tmp; Dawn@4: start = start_tmp * 1000; % milliseconds Dawn@4: stop = stop_tmp * 1000; % milliseconds Dawn@4: Dawn@4: % just pull out the start/stop of the labels that aren't Dawn@4: % ignored Dawn@4: inx = 1:length(labels); Dawn@4: for n=1:length(labels) Dawn@4: switch(labels{n}) Dawn@4: case ignorelabels Dawn@4: inx(n) = 0; Dawn@4: end Dawn@4: end Dawn@4: inx = unique(inx); Dawn@4: inx(inx == 0) = []; Dawn@4: labels = labels(inx); Dawn@4: start = start(inx); Dawn@4: stop = stop(inx); Dawn@4: end Dawn@4: Dawn@4: % get the EGG file if requested Dawn@4: [proceedEGG, EGGfile] = checkEGGfilename(matfilelist{k}, handles); Dawn@4: Dawn@4: if (VSData.vars.OT_includeEGG == 1 && proceedEGG == 0) Dawn@4: messages{k} = [messages{k} 'EGG file not found, ']; Dawn@4: set(MBoxHandles.listbox_messages, 'String', messages, 'Value', k); Dawn@4: drawnow; Dawn@4: errorcnt = errorcnt + 1; Dawn@4: end Dawn@4: Dawn@4: if (proceedEGG) Dawn@4: [EGGData, EGGTime] = func_readEGGfile(EGGfile, VSData.vars.EGGheaders, VSData.vars.EGGtimelabel); Dawn@4: end Dawn@4: Dawn@4: % assume each file has the parameters in the mat file Dawn@4: paramlist_valid = ones(length(paramlist), 1); Dawn@4: Dawn@4: Dawn@4: % no segments - complete dump Dawn@4: if (VSData.vars.OT_noSegments == 1) Dawn@4: Dawn@4: % for each label, loop through and write out the selected Dawn@4: % parameters Dawn@4: for n=1:length(start) Dawn@4: sstart = round(start(n) / frameshift); % get the correct sample Dawn@4: sstop = round(stop(n) / frameshift); Dawn@4: Dawn@4: sstart(sstart == 0) = 1; % special case for t = 0 Dawn@4: sstop(sstop > maxlen) = maxlen; % special case for t=maxlen Dawn@4: Dawn@4: for s=sstart:sstop Dawn@4: Dawn@4: for m=1:length(uniquefids) Dawn@4: if (uniquefids(m) == -1) Dawn@4: continue; Dawn@4: end Dawn@4: Dawn@4: fprintf(uniquefids(m), '%s%c', matfilelist{k}, delimiter); Dawn@4: Dawn@4: if (VSData.vars.OT_includeTextgridLabels == 1) Dawn@4: fprintf(uniquefids(m), '%s%c', labels{n}, delimiter); Dawn@4: fprintf(uniquefids(m), '%.3f%c', start(n), delimiter); Dawn@4: fprintf(uniquefids(m), '%.3f%c', stop(n), delimiter); Dawn@4: end Dawn@4: Dawn@4: fprintf(uniquefids(m), '%.3f%c', s * frameshift, delimiter); Dawn@4: end Dawn@4: Dawn@4: % print out the selected params Dawn@4: for m=1:length(paramlist) Dawn@4: val = VSData.vars.NotANumber; % default is the NaN label Dawn@4: Dawn@4: C = textscan(paramlist{m}, '%s %s', 'delimiter', '('); Dawn@4: fidinx = func_getfileinx(paramlist{m}); Dawn@4: param = C{2}{1}(1:end-1); Dawn@4: if (isfield(mdata, param)) Dawn@4: data = mdata.(param); Dawn@4: if (length(data)==1 && isnan(data)) % guard against empty vectors Dawn@4: paramlist_valid(m) = 0; Dawn@4: else Dawn@4: if (~isnan(data(s)) && ~isinf(data(s))) Dawn@4: val = sprintf('%.3f', data(s)); Dawn@4: end Dawn@4: end Dawn@4: else Dawn@4: if (paramlist_valid(m) == 1) Dawn@4: messages{k} = [messages{k} param ' not found, ']; Dawn@4: set(MBoxHandles.listbox_messages, 'String', messages, 'Value', k); Dawn@4: drawnow; Dawn@4: errorcnt = errorcnt + 1; Dawn@4: paramlist_valid(m) = 0; Dawn@4: end Dawn@4: end Dawn@4: Dawn@4: fprintf(fids(fidinx), '%s%c', val, delimiter); Dawn@4: end Dawn@4: Dawn@4: % for the case where EGG was requested, but no EGG file was found Dawn@4: if (VSData.vars.OT_includeEGG == 1 && proceedEGG == 0) Dawn@4: fidinx = 6; Dawn@4: EGGheaders = textscan(VSData.vars.EGGheaders, '%s', 'delimiter', ','); Dawn@4: EGGheaders = EGGheaders{1}; Dawn@4: Dawn@4: for m=1:length(EGGheaders) Dawn@4: fprintf(fids(fidinx), '%s%c', VSData.vars.NotANumber, delimiter); Dawn@4: end Dawn@4: end Dawn@4: Dawn@4: Dawn@4: % process EGG stuff Dawn@4: if (proceedEGG) Dawn@4: fidinx = 6; Dawn@4: Dawn@4: % find the time segment from EGGTime, use that to index Dawn@4: % EGGData Dawn@4: t = s * frameshift; % this is the time in ms. Get the closest EGGTime to t Dawn@4: [val, s_EGG] = min(abs(EGGTime - t)); Dawn@4: Dawn@4: if (abs(t - EGGTime(s_EGG)) / t > 0.05) % if t_EGG is more than 5% away from t, it is not correct Dawn@4: for m=1:length(EGGData) Dawn@4: fprintf(fids(fidinx), '%s%c', VSData.vars.NotANumber, delimiter); Dawn@4: end Dawn@4: else Dawn@4: for m=1:length(EGGData) Dawn@4: fprintf(fids(fidinx), '%.3f%c', EGGData{m}(s_EGG), delimiter); Dawn@4: end Dawn@4: end Dawn@4: end Dawn@4: Dawn@4: % finally, write out new line Dawn@4: for m=1:length(uniquefids) Dawn@4: if (uniquefids(m) == -1) Dawn@4: continue; Dawn@4: end Dawn@4: fprintf(uniquefids(m), '\n'); Dawn@4: end Dawn@4: Dawn@4: end Dawn@4: Dawn@4: end Dawn@4: Dawn@4: Dawn@4: % outputting with segments Dawn@4: else Dawn@4: Nseg = str2double(get(handles.edit_numSegments, 'String')); Dawn@4: Dawn@4: % for each segment, print out overall mean, then parts mean Dawn@4: for n=1:length(start) Dawn@4: Dawn@4: % print out the header stuff Dawn@4: for m=1:length(uniquefids) Dawn@4: if (uniquefids(m) == -1) Dawn@4: continue; Dawn@4: end Dawn@4: Dawn@4: fprintf(uniquefids(m), '%s%c', matfilelist{k}, delimiter); Dawn@4: Dawn@4: if (VSData.vars.OT_includeTextgridLabels == 1) Dawn@4: fprintf(uniquefids(m), '%s%c', labels{n}, delimiter); Dawn@4: fprintf(uniquefids(m), '%.3f%c', start(n), delimiter); Dawn@4: fprintf(uniquefids(m), '%.3f%c', stop(n), delimiter); Dawn@4: end Dawn@4: Dawn@4: end Dawn@4: Dawn@4: % get array of start and stop times for the segments. First one Dawn@4: % is the total mean Dawn@4: tsegs = linspace(start(n), stop(n), Nseg+1); Dawn@4: tstart = zeros(Nseg+1, 1); Dawn@4: tstop = zeros(Nseg+1, 1); Dawn@4: Dawn@4: tstart(1) = start(n); Dawn@4: tstop(1) = stop(n); Dawn@4: tstart(2:end) = tsegs(1:Nseg); Dawn@4: tstop(2:end) = tsegs(2:Nseg+1); Dawn@4: Dawn@4: % get the sample equivalents Dawn@4: sstart = round(tstart ./ frameshift); Dawn@4: sstop = round(tstop ./ frameshift); Dawn@4: Dawn@4: % don't output segments if Nseg == 1 Dawn@4: if (Nseg == 1) Dawn@4: sstart = sstart(1); Dawn@4: sstop = sstop(1); Dawn@4: end Dawn@4: Dawn@4: % guard against 0 and maxlen Dawn@4: sstart(sstart == 0) = 1; Dawn@4: sstop(sstop > maxlen) = maxlen; Dawn@4: Dawn@4: for m=1:length(paramlist) Dawn@4: val = VSData.vars.NotANumber; % default value is no value Dawn@4: Dawn@4: fidinx = func_getfileinx(paramlist{m}); Dawn@4: C = textscan(paramlist{m}, '%s %s', 'delimiter', '('); Dawn@4: param = C{2}{1}(1:end-1); Dawn@4: if (isfield(mdata, param)) Dawn@4: data = mdata.(param); Dawn@4: Dawn@4: for p=1:length(sstart) Dawn@4: if (length(data)==1 && isnan(data)) Dawn@4: paramlist_valid(m) = 0; Dawn@4: else Dawn@4: dataseg = data(sstart(p):sstop(p)); Dawn@4: mdataseg = mean(dataseg(~isnan(dataseg) & ~isinf(dataseg))); Dawn@4: if (~isempty(mdataseg) && ~isnan(mdataseg) && ~isinf(mdataseg)) Dawn@4: val = sprintf('%.3f', mdataseg); Dawn@4: end Dawn@4: end Dawn@4: fprintf(fids(fidinx), '%s%c', val, delimiter); Dawn@4: end Dawn@4: else Dawn@4: if (paramlist_valid(m) == 1) Dawn@4: messages{k} = [messages{k} param ' not found, ']; Dawn@4: set(MBoxHandles.listbox_messages, 'String', messages, 'Value', k); Dawn@4: drawnow; Dawn@4: errorcnt = errorcnt + 1; Dawn@4: paramlist_valid(m) = 0; Dawn@4: end Dawn@4: Dawn@4: for p=1:length(sstart) Dawn@4: fprintf(fids(fidinx), '%s%c', val, delimiter); Dawn@4: end Dawn@4: end Dawn@4: Dawn@4: end Dawn@4: Dawn@4: Dawn@4: % this case if for when the EGG was requested, but no egg file Dawn@4: % was found Dawn@4: if (VSData.vars.OT_includeEGG == 1 && proceedEGG == 0) Dawn@4: fidinx = 6; Dawn@4: EGGheaders = textscan(VSData.vars.EGGheaders, '%s', 'delimiter', ','); Dawn@4: EGGheaders = EGGheaders{1}; Dawn@4: for m=1:length(EGGheaders) Dawn@4: for p=1:length(tstart) Dawn@4: fprintf(fids(fidinx), '%s%c', VSData.vars.NotANumber, delimiter); Dawn@4: end Dawn@4: end Dawn@4: end Dawn@4: Dawn@4: % process EGG stuff Dawn@4: if (proceedEGG) Dawn@4: fidinx = 6; Dawn@4: Dawn@4: for m=1:length(EGGData) Dawn@4: for p=1:length(tstart) Dawn@4: EGGInx = (EGGTime >= tstart(p)) & (EGGTime <= tstop(p)); Dawn@4: meanval = mean(EGGData{m}(EGGInx)); Dawn@4: if (~isempty(meanval) && ~isnan(meanval) && ~isinf(meanval)) Dawn@4: val = sprintf('%.3f', meanval); Dawn@4: else Dawn@4: val = VSData.vars.NotANumber; Dawn@4: end Dawn@4: fprintf(fids(fidinx), '%s%c', val, delimiter); Dawn@4: end Dawn@4: end Dawn@4: end Dawn@4: Dawn@4: % finally, write out new line Dawn@4: for m=1:length(uniquefids) Dawn@4: if (uniquefids(m) == -1) Dawn@4: continue; Dawn@4: end Dawn@4: fprintf(uniquefids(m), '\n'); Dawn@4: end Dawn@4: Dawn@4: end Dawn@4: end Dawn@4: end Dawn@4: Dawn@4: for k=1:length(uniquefids) Dawn@4: if (uniquefids(k) == -1) Dawn@4: continue; Dawn@4: end Dawn@4: fclose(uniquefids(k)); Dawn@4: end Dawn@4: Dawn@4: if (errorcnt > 0) Dawn@4: messages{length(matfilelist)+1} = sprintf('Completed: %d parameters not found.', errorcnt); Dawn@4: else Dawn@4: messages{length(matfilelist)+1} = sprintf('Completed.'); Dawn@4: end Dawn@4: set(MBoxHandles.listbox_messages, 'String', messages, 'Value', length(matfilelist)+1); Dawn@4: Dawn@4: % allow the MBox to close Dawn@4: set(MBoxHandles.pushbutton_close, 'Enable', 'on'); Dawn@4: set(MBoxHandles.pushbutton_stop, 'Enable', 'off'); Dawn@4: Dawn@4: Dawn@4: Dawn@4: % write headers to files Dawn@4: function writeFileHeaders(fids, paramlist, handles, delimiter) Dawn@4: VSData = guidata(handles.VSHandle); Dawn@4: Dawn@4: % write out the filename and textgrid labels if required Dawn@4: for k=1:length(fids) Dawn@4: if (fids(k) == -1) Dawn@4: continue; Dawn@4: end Dawn@4: Dawn@4: fprintf(fids(k), 'Filename%c', delimiter); Dawn@4: Dawn@4: if (VSData.vars.OT_includeTextgridLabels == 1) Dawn@4: fprintf(fids(k), 'Label%c', delimiter); Dawn@4: fprintf(fids(k), 'seg_Start%c', delimiter); Dawn@4: fprintf(fids(k), 'seg_End%c', delimiter); Dawn@4: end Dawn@4: Dawn@4: % only print a time stamp when doing complete dumps Dawn@4: if (VSData.vars.OT_noSegments == 1) Dawn@4: fprintf(fids(k), 't_ms%c', delimiter); Dawn@4: end Dawn@4: end Dawn@4: Dawn@4: % make the file ids the same length as using multiple files Dawn@4: if (length(fids)==1) Dawn@4: if (VSData.vars.OT_includeEGG) Dawn@4: fids = [fids fids fids fids fids fids]; Dawn@4: else Dawn@4: fids = [fids fids fids fids fids -1]; Dawn@4: end Dawn@4: end Dawn@4: Dawn@4: % separate case for complete data dump Dawn@4: if (VSData.vars.OT_noSegments == 1) Dawn@4: for k=1:length(paramlist) Dawn@4: fidinx = func_getfileinx(paramlist{k}); Dawn@4: C = textscan(paramlist{k}, '%s %s', 'delimiter', '('); Dawn@4: fprintf(fids(fidinx), '%s%c', C{2}{1}(1:end-1), delimiter); Dawn@4: end Dawn@4: Dawn@4: if (VSData.vars.OT_includeEGG) Dawn@4: fidinx = 6; Dawn@4: C = textscan(VSData.vars.EGGheaders, '%s', 'delimiter', ','); Dawn@4: for n=1:length(C{1}) Dawn@4: fprintf(fids(fidinx), '%s%c', C{1}{n}, delimiter); Dawn@4: end Dawn@4: end Dawn@4: Dawn@4: % finally, write out new line Dawn@4: fids = unique(fids); Dawn@4: for k=1:length(fids) Dawn@4: if (fids(k) == -1) Dawn@4: continue; Dawn@4: end Dawn@4: fprintf(fids(k), '\n'); Dawn@4: end Dawn@4: Dawn@4: % using segments Dawn@4: else Dawn@4: Nseg = str2double(get(handles.edit_numSegments, 'String')); Dawn@4: Dawn@4: % for each parameter, print the mean, followed by the means of each Dawn@4: % segment Dawn@4: for k=1:length(paramlist) Dawn@4: fidinx = func_getfileinx(paramlist{k}); Dawn@4: C = textscan(paramlist{k}, '%s %s', 'delimiter', '('); Dawn@4: label = C{2}{1}(1:end-1); Dawn@4: fprintf(fids(fidinx), '%s_mean%c', label, delimiter); Dawn@4: if (Nseg > 1) Dawn@4: for n=1:Nseg Dawn@4: segno = sprintf('%3d', n); Dawn@4: segno = strrep(segno, ' ', '0'); Dawn@4: fprintf(fids(fidinx), '%s_means%s%c', label, segno, delimiter); Dawn@4: end Dawn@4: end Dawn@4: end Dawn@4: Dawn@4: if (VSData.vars.OT_includeEGG) Dawn@4: fidinx = 6; Dawn@4: C = textscan(VSData.vars.EGGheaders, '%s', 'delimiter', ','); Dawn@4: for n=1:length(C{1}) Dawn@4: fprintf(fids(fidinx), '%s_mean%c', C{1}{n}, delimiter); Dawn@4: Dawn@4: if (Nseg > 1) Dawn@4: for m=1:Nseg Dawn@4: segno = sprintf('%3d', m); Dawn@4: segno = strrep(segno, ' ', '0'); Dawn@4: fprintf(fids(fidinx), '%s_means%s%c', C{1}{n}, segno, delimiter); Dawn@4: end Dawn@4: end Dawn@4: end Dawn@4: end Dawn@4: Dawn@4: % finally, write out a new line Dawn@4: fids = unique(fids); Dawn@4: for k=1:length(fids) Dawn@4: if (fids(k) == -1) Dawn@4: continue; Dawn@4: end Dawn@4: fprintf(fids(k), '\n'); Dawn@4: end Dawn@4: Dawn@4: Dawn@4: end Dawn@4: Dawn@4: Dawn@4: Dawn@4: function [proceedEGG, EGGfile] = checkEGGfilename(matfile, handles) Dawn@4: VSData = guidata(handles.VSHandle); Dawn@4: Dawn@4: if (VSData.vars.OT_includeEGG == 0) Dawn@4: proceedEGG = 0; Dawn@4: EGGfile = ''; Dawn@4: return; Dawn@4: end Dawn@4: Dawn@4: % deal with the filename stupidity that is PCQuirer Dawn@4: VSData = guidata(handles.VSHandle); Dawn@4: Dawn@4: EGGfile = [VSData.vars.OT_EGGdir VSData.vars.dirdelimiter matfile(1:end-3) 'egg']; % attempt to open .egg Dawn@4: if (exist(EGGfile, 'file') == 0) Dawn@4: proceedEGG = 0; Dawn@4: Dawn@4: if (length(matfile) > 10) Dawn@4: if (strcmpi(matfile(end-9:end-4), '_Audio')) % case insensitive Dawn@4: EGGfile = [VSData.vars.OT_EGGdir VSData.vars.dirdelimiter matfile(1:end-9), 'ch1.egg']; % try with ch1 first Dawn@4: Dawn@4: if (exist(EGGfile, 'file') == 0) Dawn@4: EGGfile = [VSData.vars.OT_EGGdir VSData.vars.dirdelimiter matfile(1:end-10) '.egg']; % next try with .egg w/o _Audio Dawn@4: if (exist(EGGfile, 'file') == 0) Dawn@4: proceedEGG = 0; Dawn@4: else Dawn@4: proceedEGG = 1; Dawn@4: end Dawn@4: else Dawn@4: proceedEGG = 1; Dawn@4: end Dawn@4: Dawn@4: end Dawn@4: end Dawn@4: else Dawn@4: proceedEGG = 1; Dawn@4: end Dawn@4: Dawn@4: Dawn@4: Dawn@4: Dawn@4: