Change CurrentSample in audioplayer

I want to be able to allow a user to select a point in a track and begin playing, so I have a ButtonDownFcn set on an axes to take the coordinates clicked and convert this to a sample number to resume playing a plotted audio clip.
% Get the x coordinate
c = get(hObject, 'CurrentPoint');
x = c(1,1);
% Multiply this by the sample rate (x axis represents seconds)
% to get the sample at which the track should resume
smpl = x * get(player, 'SampleRate');
set(player, 'CurrentSample', smpl);
The issue I'm having is that I then get an error message that says Error using audioplayer/set You cannot set the read-only property 'CurrentSample' of audioplayer.
So obviously this isn't the correct way to skip to a new point in a track. What is the correct way to do this?

 采纳的回答

The correct way is to delete the audioplayer and create a new one whose samples start with the appropriate sample.

5 个评论

Ok - is there a way to get the audio data from the audioplayer object. Similar to using getaudiodata() from an audiorecorder?
player_struct = struct(YourAudioPlayerObject);
player_struct.AudioData
Though I just realized another way:
You can
stop(YourAudioPlayerObject)
play(YourAUdioPlayerObject, NewStartingSampleNumber)
Cool I'll give that a try a little later on. Thanks!
That works great, thanks

请先登录,再进行评论。

更多回答(0 个)

类别

在 帮助中心 和 File Exchange 中查找有关 Just for fun 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by