Error Using audioread : Expected input number 2, range, to be positive.

I'm trying to read a portion of an audio file, and matlab's returning the error consistently on the same line.
It used to work, but I'm not entirely sure what I changed to make this occur.
The code for reproduction is below. I'm doing this in a app where the user inputs a start and end time (i.e. 0:00 and 1:00) the program then converts that into seconds for the samples and calls audioread. app.path1 is the path to the audio file.
sng1 = app.StartofComparisonEditField.Value;
startSongOne = times(str2num(sng1(1)), 60);
startSongOne = startSongOne + times(str2num(sng1(3)), 10);
startSongOne = startSongOne + str2num(sng1(4));
sng1 = app.EndofComparisonEditField.Value;
endSongOne = times(str2num(sng1(1)), 60);
endSongOne = endSongOne + times(str2num(sng1(3)), 10);
endSongOne = endSongOne + str2num(sng1(4));
Fs = 44100;
samplesSongOne = [startSongOne,endSongOne * Fs];
clear Fs;
[y, Fs] = audioread(app.path1, samplesSongOne);
Many Thanks.

 采纳的回答

audioRead() requires that the second input contains two positive integers. I would guess, based on the code and the error, that you are passing 0 in as startSongOne.
If you've got a song with 10 samples, recorded at 10 samples per second, and you want to play the song from time 0 to time 1 (in units of seconds), that means you want to play samples 1 to 10, not samples 0 to 10. If the user enters a start time of 0:00, the value of startSongOne should be 1, not 0. Also, it seems to me that the startSongOne value should be multiplied by Fs as well.
Try this:
samplesSongOne = [startSongOne * Fs + 1, endSongOne * Fs];

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 Introduction to Installation and Licensing 的更多信息

产品

版本

R2019b

标签

Community Treasure Hunt

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

Start Hunting!

Translated by