MATLAB Answers

audiorecorderのcallback関数

1 view (last 30 days)
Akira
Akira on 28 Nov 2019
Answered: Shoumei on 2 Dec 2019
recordの例に習って下のように10秒録音するプログラムを書いたのですが、明らかに10秒立たずにStopFcnが始動しました。StopFcnとはrecordが終わって呼び出される関数と言う認識は違うのでしょうか?
function Record0()
Fs = 44100;
T = 10;
sound = audiorecorder(Fs, 8, 1, 0);
sound.StartFcn = 'disp("Start recording.")';
sound.StopFcn = 'disp("Stop recording.")';
record(sound, T);
end

  0 Comments

Sign in to comment.

Answers (1)

Shoumei
Shoumei on 2 Dec 2019
10秒ってどうやって測りました?
正確性を期するため、tic, tocという関数を使ってstart/stop間の時間を計測してみました。
s1 = audiorecorder(Fs, 8, 1, 0);
s1.StartFcn = 'tic,disp("Start recording.")';
s1.StopFcn = 'disp("Stop recording.");toc';
record(s1, T);
経過時間は 10.580585 秒です。
経過時間は 10.463242 秒です。
と、2回の実行は概ね10秒程度で終わっています。(表示などのオーバーヘッドがあるので10秒ちょっとかかります。)
また、s1.TotalSamplesを確認してみましたが、10秒間のサンプル数である441000サンプルのデータが取得できていました。
余談ですが、soundという関数があって競合するので、これを変数にするのは適切ではありません。s1に変更しました。

  0 Comments

Sign in to comment.

Sign in to answer this question.

Products


Release

R2019b