Austin - I suspect that the audio is being played but then terminated immediately when the playback_Callback returns. You could add a pause call after you have called play so that the function does not return until the playback completes, but then you would have to determine how long to pause.
A better solution would be to use an audioplayer for the playback since it has a playblocking function to hold control until audio playback has completed. Your code would then become
function playback_Callback(hObject, eventdata, handles)
myAudioPlayer = audioplayer(getaudiodata(handles.recorder),handles.fs);
playblocking(myAudioPlayer);
Try the above and see what happens! Note that there is no need call guidata in any of your pushbutton callback functions since there is no code that modifies the handles object. You only need to call
guidata(hObject,handles)
if you update the handles structure.
