前提・実現したいこと
MATLABで音声を再生するGUIをApp Designerを使用して作成しています。
音声の再生時間に対応したシークバーを、スライダーを使って実装していたところでエラーが発生しました。
発生している問題・エラーメッセージ
audioplayerオブジェクトのTimeFunを使用して、再生中0.05secごとに現在再生位置を取得して、それをスライダーに反映するようにしました。しかし、以下のエラーメッセージが再生中0.05secごとに返ってきます。
警告: クラス internal.IntervalTimer に対して定義されたイベント Executing のリスナー コールバックの 実行中にエラーが発生しました。 エラー: internal.Callback.execute (line 128) 関数 'UpDateSlider' (タイプ'audioplayer' の入力引数) が未定義です。 > In internal.IntervalTimer/onCustomEvent (line 154) In internal.IntervalTimer>@(source,data)obj.onCustomEvent(data.Type,data.Data) (line 115) In asyncio.Channel/onCustomEvent (line 473) In asyncio.Channel>@(source,data)obj.onCustomEvent(data.Type,data.Data) (line 405)
該当のソースコード
MATLAB
1 2 properties (Access = private) 3 player % Description 4 end 5 6 methods (Access = private) 7 8 function UpDateSlider(app, event) 9 app.Slider.Value = app.player.CurrentSample; 10 end 11 12 end 13 14 15 % Callbacks that handle component events 16 methods (Access = private) 17 18 % Code that executes after component creation 19 function startupFcn(app) 20 % データ読み込み 21 [x, fs] = audioread("test01.wav"); 22 23 app.player = audioplayer(x,fs); 24 25 app.Slider.Limits = [0, app.player.TotalSamples]; 26 27 app.player.StartFcn = @(x,y) disp("start audio"); 28 app.player.StopFcn = @(x,y) disp("stop audio"); 29 app.player.TimerFcn = @UpDateSlider; 30 end 31 32 % Button pushed function: PlayButton 33 function PlayButtonPushed(app, event) 34 app.player.play; 35 end 36 end
試したこと
① 変数・関数名のタイプミスの確認
② その関数へのパスがあるか確認
>> which audioplayer -all /Applications/MATLAB_R2019a.app/toolbox/matlab/audiovideo/@audioplayer/audioplayer.m % audioplayer constructor >> which UpDateSlider -all ~/MATLAB/expt_NaturalSpeakingSpeed/expt_NaturalSpeakingSpeed.mlapp % expt_NaturalSpeakingSpeed method
③ データ型の確認
>> class(player.CurrentSample) ans = 'double'
補足情報(FW/ツールのバージョンなど)
<MATLAB> R2019a 64bit
<MacBook Pro>
macOS Mojave, Retina, 13-inch, Early 2015
プロセッサ : 2.7 GHz Intel Core i5
メモリ : 8 GB 1867 MHz DDR3
あなたの回答
tips
プレビュー