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