matlab - Matlab关于Audioplayer GUI的问题

标签 matlab audio

我对Matlab很陌生,我正在尝试制作一个有3个按钮的程序。

问题1:

按钮1将链接到音频文件(.wav)
因此,当我按下它时,按钮1将“选择”第一个音频文件。

按钮2将链接到另一个音频文件(.wav)
因此,当我按下它时,按钮2将“选择”第二个音频文件。

然后,我需要按按钮3播放所选的声音文件,具体取决于我首先按哪个按钮(按钮1 /按钮2)

所以我当前的代码是这样的:
按钮1和2:

[FileName,PathName] = uigetfile({'*.wav'},'Load Wav File');
[x,Fs] = wavread([PathName '/' FileName]);

按钮3:
player = audioplayer(x,Fs);
play(player);

好的,所以我的第一个问题是,当我运行此代码时,必须手动选择文件。我不太确定如何使它已经链接到文件,因此在这方面我需要帮助...

我的第二个问题实际上是关于音频播放器的。
对于按钮3,它实际上不起作用...并且没有声音播放。
我之前尝试过sound (x,Fs),但我在网上搜索,他们说我必须手动给命令清晰的声音以阻止.wav文件继续。

如何解决这个问题?因为我想如果我在代码中使用第四个按钮:
stop(player)

这给了我一个错误。

最佳答案

我的第一个答案开始变得有些混乱,因此我将在此处发布一个可以正常工作的简单示例。在此GUI中,有3个按钮(播放,暂停和停止),以及一个播放的.wav文件(piano2.wav)。

function varargout = AudioTest(varargin)

gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @AudioTest_OpeningFcn, ...
                   'gui_OutputFcn',  @AudioTest_OutputFcn, ...
                   'gui_LayoutFcn',  [] , ...
                   'gui_Callback',   []);
if nargin && ischar(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%      Opening function       %%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%



function AudioTest_OpeningFcn(hObject, eventdata, handles, varargin)


handles.output = hObject;
handles.myPlayer=[];

% Update handles structure

guidata(hObject, handles);





function varargout = AudioTest_OutputFcn(hObject, eventdata, handles) 


varargout{1} = handles.output;


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%  Executed on press of Play button   %%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function Play_Callback(hObject, eventdata, handles)

[x,Fs]=wavread('piano2.wav');
handles.myPlayer=audioplayer(x,Fs);
play(handles.myPlayer);
guidata(hObject,handles);


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%  Executed on press of Pause button   %%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function Pause_Callback(hObject, eventdata, handles)


pause(handles.myPlayer);


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%  Executed on press of Stop button   %%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


function Stop_Callback(hObject, eventdata, handles)

stop(handles.myPlayer);

关于matlab - Matlab关于Audioplayer GUI的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32901413/

相关文章:

image - 在 scipy.imsave 中禁用强度重新缩放

matlab - fvtool生成的数字亲子关系破裂?

jquery - HTML Select - 使用 jQuery 在选择时更改 src 音频

audio - ffmpeg 提取所有音频 channel

bash - 了解bash信号处理

javascript - 处理器音频JavaScript HTML5

matlab - 欧拉计划 214,如何提高效率?

matlab - 你能为血压与特定年龄创建箱线图吗 (MATLAB)

matlab - 在 Matlab 中将字符串保存为 P-Code

java - 在Java中播放声音文件