Play a wav sound in a loop without blocking it
6 views (last 30 days)
Show older comments
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
0 Comments
Accepted Answer
Daniel Shub
on 4 May 2012
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.
More Answers (1)
Vitali Roubtsov
on 14 May 2012
1 Comment
Jan
on 14 May 2012
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
See Also
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!