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?

 Respuesta aceptada

Walter Roberson
Walter Roberson el 7 de Nov. de 2016

0 votos

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

5 comentarios

Ryan Sinfield
Ryan Sinfield el 7 de Nov. de 2016
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)
Ryan Sinfield
Ryan Sinfield el 8 de Nov. de 2016
Cool I'll give that a try a little later on. Thanks!
Ryan Sinfield
Ryan Sinfield el 9 de Nov. de 2016
That works great, thanks

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Etiquetas

Preguntada:

el 7 de Nov. de 2016

Comentada:

el 15 de Mzo. de 2018

Community Treasure Hunt

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

Start Hunting!

Translated by