Play a wav sound in a loop without blocking it

Hi, i'm new to matlab and am still unclear on what it can and cannot do.
The program I am working on has a loop that displays a flickering pattern at 100Hz. I tried to include the option to trigger a wav sound with a keypress, but it appears that Matlab freezes the loop for the duration of the sound, and restarts it once it's finished.
Is it possible to trigger the sound in a non-blocking way ? Thanks
My code
[y,Fs] = wavread('_path_');
while ( ~program.params.kd(program.params.key.ExitKey))
% frame refresh
if program.params.kd(program.params.key.SoundKey)
wavplay(y, Fs, 'sync');
end
end

 Accepted Answer

You can use audioplayer instead of wavplay
doc audioplayer
Retriggering your sound card 100 times a second is going to be problematic. You probably want to create a long sound and trigger the soundcard once from outside the loop.

1 Comment

Hey thanks :) Audioplayer works great.
The sound card isn't refreshed at the flickering rate though, only when the SoundKey is pressed.

Sign in to comment.

More Answers (1)

Hello again !
Audioplayer worked great with Matlab 2007 but now I am trying to make this work on Matlab 2011 and it seems there's a freeze on my display at some point during the sound (not at the beginning, nor at the end).
Any idea where this freeze may come from and how to correct it ?

1 Comment

There are some bugs in AUDIOPLAYER in Matlab 2011b. E.g. when you store an AUDIOPLAYER object persistently, shutting down Matlab causes a crash. See: http://www.mathworks.com/matlabcentral/answers/18530-audioplayer

Sign in to comment.

Categories

Find more on Audio I/O and Waveform Generation in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!