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?

 採用された回答

Walter Roberson
Walter Roberson 2016 年 11 月 7 日

0 投票

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

5 件のコメント

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

サインインしてコメントする。

その他の回答 (0 件)

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by