一.打開matlab App Designer設計界面
在App Designer的代碼視圖中初始化參數,代碼如下:
properties (Access = private) music_path = ''; % Description frameSize = 1024; end properties (Access = public) stop_flag = false; pause_flag = false; origin_flag = false; end
二.制作播放界面
1.打開音頻文件
在App Designer中選擇按鈕,將按鈕命名為選擇音頻文件,編寫回調函數,代碼如下:
function Button_7Pushed(app, event) [file,path] = uigetfile('*.*'); app.music_path = fullfile(path,file); end
2.播放音頻文件
在App Designer中選擇按鈕,將按鈕命名為播放,編寫回調函數,代碼如下:
function Button_8Pushed(app, event) app.stop_flag = false; app.pause_flag = false; app.origin_flag = false; fileReader = dsp.AudioFileReader(app.music_path,"SamplesPerFrame",app.frameSize); deviceWriter = audioDeviceWriter("SampleRate",fileReader.SampleRate); while ~isDone(fileReader)
% 此處可以添加代碼對原始音頻信號實時處理 originalSignal = fileReader(); % 控制結束 if app.stop_flag == true break end % 控制暫停/繼續 if app.pause_flag == true while(1) pause(0.001); if app.pause_flag == false break; end end end % 播放音頻文件或者處理之后的音頻文件 deviceWriter(originalSignal);
%如果需要和其他回調函數進行交互,比如實時讀取用戶輸入的控制參數數據,需要添加代碼pause(0.001) pause(0.001); end release(fileReader) release(deviceWriter) end
3.播放暫停和繼續
在App Designer中選擇按鈕,將按鈕命名為暫停/繼續,編寫回調函數,代碼如下:
function Button_11Pushed(app, event) if app.pause_flag == false app.pause_flag = true; else app.pause_flag = false; end end
4.結束播放
在App Designer中選擇按鈕,將按鈕命名為結束,編寫回調函數,代碼如下:
function Button_9Pushed(app, event) app.stop_flag = true; end
三,播放界面如下