Skip to content
56 changes: 30 additions & 26 deletions wave_viewer.m
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@
% create panel for buttons
buttonPanelXPos = panelPad;
buttonPanelYPos = panelPad;
buttonPanelXSpan = 0.1;
buttonPanelXSpan = 0.14;
buttonPanelYSpan = 1 - panelPad*2;
buttonPanelPos = [buttonPanelXPos buttonPanelYPos buttonPanelXSpan buttonPanelYSpan];
p.guidata.buttonPanel = uipanel(p.guidata.f,'Units','Normalized',...
Expand All @@ -146,9 +146,9 @@
'BorderType','none');

% create panel for frequency-based axes
faxesPanelXPos = buttonPanelXPos + buttonPanelXSpan + panelPad*.75;
faxesPanelXPos = buttonPanelXPos + buttonPanelXSpan;
faxesPanelYPos = panelPad*2; % extra pad on bottom
faxesPanelXSpan = 1 - faxesPanelXPos - panelPad;
faxesPanelXSpan = 1 - faxesPanelXPos - panelPad; % reference for right panels
faxesPanelYSpan = 0.2;
faxesPanelPos = [faxesPanelXPos faxesPanelYPos faxesPanelXSpan faxesPanelYSpan];
p.guidata.faxesPanel = uipanel(p.guidata.f,'Units','Normalized',...
Expand Down Expand Up @@ -212,15 +212,17 @@

buttonWidth = .9;
buttonHeight = .05;
buttonFontSize = .4;
buttonFontSize = .45;
sliderHeight = .025;
dropdownHeight = .03;
dropdownFontSize = .5;
editHeight = .025;
editFontSize = .6;
editFontSize = 1;
textHeight = buttonHeight;
textFontSize = buttonFontSize;
labelFontSize = textFontSize * 1.3;
textPosYOffset = 0.0240;
labelPosYOffset = 0.5;
tinyHeight = textHeight*.75;
tinyPosYOffset = textPosYOffset*.75;

Expand Down Expand Up @@ -259,7 +261,7 @@ function my_help_func(hObject,eventdata) % callback for help button
hbutton.pitch_params = uicontrol(p.guidata.buttonPanel,'Style','pushbutton',...
'String','pitch params',...
'Units','Normalized','Position',pitchParamButtonPos,...
'FontUnits','Normalized','FontSize',buttonFontSize*0.75,...
'FontUnits','Normalized','FontSize',buttonFontSize*0.9,...
'Callback',@edit_pitch_params);
% TODO make text in 2 rows
horiz_orig = horiz_orig + buttonHeight + padYButton;
Expand Down Expand Up @@ -330,11 +332,12 @@ function endprogram(hObject,eventdata) % callback for h_button_endprogram
end

% previous button
prevButtonPos = [padL horiz_orig buttonWidth/3 buttonHeight];
prevButtonPos = [padL horiz_orig buttonWidth/2 buttonHeight];
hbutton.cont = uicontrol(p.guidata.buttonPanel,'Style','pushbutton',...
'String','previous',...
'Units','Normalized','Position',prevButtonPos,...
'FontUnits','Normalized','FontSize',buttonFontSize*2/3,...
'FontUnits','Normalized','FontSize',buttonFontSize,...
'FontWeight','bold', ...
'Callback',@prevprogram);
% no change in horiz_orig, since "previous" button is in-line with "continue" button
function prevprogram(hObject,eventdata) % callback for h_button_contprogram
Expand All @@ -345,11 +348,12 @@ function prevprogram(hObject,eventdata) % callback for h_button_contprogram
end

% continue button
contButtonPos = [padL+buttonWidth*1/3 horiz_orig buttonWidth*2/3 buttonHeight];
contButtonPos = [padL+buttonWidth*1/2 horiz_orig buttonWidth/2 buttonHeight];
hbutton.cont = uicontrol(p.guidata.buttonPanel,'Style','pushbutton',...
'String','continue',...
'Units','Normalized','Position',contButtonPos,...
'FontUnits','Normalized','FontSize',buttonFontSize,...
'FontWeight','bold', ...
'Callback',@contprogram);
horiz_orig = horiz_orig + buttonHeight + padYButton;
function contprogram(hObject,eventdata) % callback for h_button_contprogram
Expand All @@ -375,9 +379,9 @@ function contprogram(hObject,eventdata) % callback for h_button_contprogram
% edit events button
editEventsButtonPos = [padL horiz_orig buttonWidth/2 buttonHeight];
hbutton.cont = uicontrol(p.guidata.buttonPanel,'Style','pushbutton',...
'String','<html><center>rename<br>events</center></html>',...
'String','<html><center><hbutton style = "line-height: 5px;">rename events</center></html>',...
'Units','Normalized','Position',editEventsButtonPos,...
'FontUnits','Normalized','FontSize',buttonFontSize*0.75,...
'FontUnits','Normalized','FontSize',buttonFontSize*0.85,...
'Callback',@edit_events);
% no change in horiz_orig, since "previous" button is in-line with "continue" button
function edit_events(hObject,eventdata) % callback for h_button_edit_events
Expand Down Expand Up @@ -444,9 +448,9 @@ function edit_events(hObject,eventdata) % callback for h_button_edit_events
% clear events button
clearEventsButtonPos = [padL+buttonWidth*1/2 horiz_orig buttonWidth*1/2 buttonHeight];
hbutton.clear_events = uicontrol(p.guidata.buttonPanel,'Style','pushbutton',...
'String','<html><center>clear<br>events</center></html>',...
'String','<html><center>clear events</center></html>',...
'Units','Normalized','Position',clearEventsButtonPos,...
'FontUnits','Normalized','FontSize',buttonFontSize*0.75,...
'FontUnits','Normalized','FontSize',buttonFontSize*0.85,...
'Callback',@clear_events);
horiz_orig = horiz_orig + buttonHeight + padYButton;
function clear_events(hObject,eventdata) % callback for h_button_clear_events
Expand Down Expand Up @@ -499,7 +503,7 @@ function update_toggle_display()
hedit.preemph = uicontrol(p.guidata.buttonPanel,'Style','edit',...
'String',p.sigproc_params.preemph, ...
'Units','Normalized','Position',preemphEditPos,...
'FontUnits','Normalized','FontSize',editFontSize,...
'FontUnits','Normalized','FontSize',editFontSize*0.8,...
'TooltipString','Default of 0 includes Praat preemph', ...
'Callback', @preemph_text);
horiz_orig = horiz_orig + editHeight + padYSmall;
Expand Down Expand Up @@ -597,7 +601,7 @@ function set_max_gray(hObject,eventdata) % callback for h_slider_max_gray
horiz_orig = horiz_orig + dropdownHeight + padYSmall;

% ms framespec: gram text
horiz_orig = horiz_orig - tinyPosYOffset;
horiz_orig = horiz_orig - tinyPosYOffset;
msFramespecGramTextPos = [padL horiz_orig buttonWidth tinyHeight];
htext.ms_framespec_gram = uicontrol(p.guidata.buttonPanel,'Style','text',...
'String','framespec: gram',...
Expand Down Expand Up @@ -634,7 +638,7 @@ function set_ms_framespec_gram(hObject,eventdata) % callback for hdropdown.ms_fr
'Units','Normalized','Position',msFramespecFormTextPos,...
'FontUnits','Normalized','FontSize',textFontSize);
uistack(htext.ms_framespec_form,'bottom'); % move to bottom
horiz_orig = horiz_orig + tinyHeight + padYBig;
horiz_orig = horiz_orig + tinyHeight + padYBig*0.75;
last_sigproc_params.ms_framespec_form = p.sigproc_params.ms_framespec_form;
function set_ms_framespec_form(hObject,eventdata) % callback for hdropdown.ms_framespec_form
p.sigproc_params.ms_framespec_form = all_ms_framespecs.name{get(hdropdown.ms_framespec_form,'Value')};
Expand All @@ -648,7 +652,7 @@ function set_ms_framespec_form(hObject,eventdata) % callback for hdropdown.ms_fr
end
initial_dropdown_value = find(p.sigproc_params.nlpc_choices == p.sigproc_params.nlpc);
if isempty(initial_dropdown_value), initial_dropdown_value = 1; end
nlpcDropdownPos = [padL horiz_orig buttonWidth dropdownHeight];
nlpcDropdownPos = [padL horiz_orig+0.01 buttonWidth dropdownHeight];
hdropdown.nlpc = uicontrol(p.guidata.buttonPanel,'Style','popupmenu',...
'String',nlpc_choice_strs,...
'Value',initial_dropdown_value, ...
Expand All @@ -659,37 +663,37 @@ function set_ms_framespec_form(hObject,eventdata) % callback for hdropdown.ms_fr

% nlpc text
horiz_orig = horiz_orig - textPosYOffset;
nlpcTextPos = [padL horiz_orig buttonWidth textHeight];
nlpcTextPos = [padL horiz_orig+0.01 buttonWidth textHeight];
htext.nlpc = uicontrol(p.guidata.buttonPanel,'Style','text',...
'String','LPC order',...
'Units','Normalized','Position',nlpcTextPos,...
'FontUnits','Normalized','FontSize',textFontSize);
uistack(htext.nlpc,'bottom'); % move to bottom
horiz_orig = horiz_orig + textHeight + padYBig;
horiz_orig = horiz_orig + textHeight + padYBig*0.5;
last_sigproc_params.nlpc = p.sigproc_params.nlpc;
function set_nlpc_choice(hObject,eventdata) % callback for hdropdown.nlpc
p.sigproc_params.nlpc = p.sigproc_params.nlpc_choices(get(hdropdown.nlpc,'Value'));
set_alert4calcFx_if_true(last_sigproc_params.nlpc ~= p.sigproc_params.nlpc)
end

% amplitude threshold edit
amplThreshEditPos = [padL horiz_orig buttonWidth editHeight];
amplThreshEditPos = [padL horiz_orig+0.02 buttonWidth editHeight];
hedit.ampl_thresh4voicing = uicontrol(p.guidata.buttonPanel,'Style','edit',...
'String',p.sigproc_params.ampl_thresh4voicing, ...
'Units','Normalized','Position',amplThreshEditPos,...
'FontUnits','Normalized','FontSize',editFontSize,...
'FontUnits','Normalized','FontSize',editFontSize*0.7,...
'Callback',@set_edit_ampl_thresh4voicing);
horiz_orig = horiz_orig + editHeight + padYSmall;

% amplitude threshold text
horiz_orig = horiz_orig - textPosYOffset;
amplThreshTextPos = [padL horiz_orig buttonWidth textHeight];
amplThreshTextPos = [padL horiz_orig+0.02 buttonWidth textHeight];
p.guidata.text_ampl_thresh4voicing = uicontrol(p.guidata.buttonPanel,'Style','text',...
'String','ampl threshold',...
'Units','Normalized','Position',amplThreshTextPos,...
'FontUnits','Normalized','FontSize',textFontSize);
uistack(p.guidata.text_ampl_thresh4voicing,'bottom'); % move to bottom
horiz_orig = horiz_orig + textHeight + padYBig;
horiz_orig = horiz_orig + textHeight + padYBig*.5;
function set_edit_ampl_thresh4voicing(hObject,eventdata) % callback for hedit.ampl_thresh4voicing
set_ampl_thresh4voicing(str2double(get(hedit.ampl_thresh4voicing,'String')));
end
Expand All @@ -705,13 +709,13 @@ function set_ampl_thresh4voicing(new_ampl_thresh4voicing)
end

% show/hide formant button
calcButtonPos = [padL horiz_orig buttonWidth buttonHeight];
calcButtonPos = [padL horiz_orig+0.03 buttonWidth buttonHeight];
hbutton.toggle_formant = uicontrol(p.guidata.buttonPanel,'Style','pushbutton',...
'String','toggle formants',...
'Units','Normalized','Position',calcButtonPos,...
'FontUnits','Normalized','FontSize',buttonFontSize,...
'Callback',@toggle_formants);
horiz_orig = horiz_orig + buttonHeight + padYButton;
horiz_orig = horiz_orig + buttonHeight + padYButton*0.8;
function toggle_formants(hObject,eventdata) % callback for hbutton.toggle_formant
axinfo = get(gram_ax,'UserData');
locF1 = find(gram_ax.Children == axinfo.hply(2));
Expand All @@ -730,7 +734,7 @@ function toggle_formants(hObject,eventdata) % callback for hbutton.toggle_forman
set(gram_ax,'UserData',axinfo);
end
% calc button
calcButtonPos = [padL horiz_orig buttonWidth buttonHeight];
calcButtonPos = [padL horiz_orig+0.03 buttonWidth buttonHeight];
hbutton.calc = uicontrol(p.guidata.buttonPanel,'Style','pushbutton',...
'String','calc',...
'Units','Normalized','Position',calcButtonPos,...
Expand Down