Thông báo

Collapse
No announcement yet.

Hỏi Về bài tập Khó Matlab

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Hỏi Về bài tập Khó Matlab

    Anh chị ơi, giúp em bài toán tạo giao diện GUI Matlab này với ạ:
    Em có tạo 1 giao diện GUI gồm 4 nút: 2 nút Drum, 1 nút Record và 1 nút play.
    Tình trạng hiện tại: 1. nhấn vào nút pushbutton Drum1 phát âm thanh Drum 1 (ok)
    2. nhấn vào nút pushbutton Drum2 phát âm thanh Drum 2 (ok)
    3. nút record và play hoạt động
    Vấn đề vướn mắc: Khi nhấn record để thu lại giai điệu mà con trỏ nhấp liên hồi vào hai nút Drum và play lại thì:
    4. tần số hay cao độ của nút Drum được thể hiện lại như khi ta thu (Record)
    5. Khoảng cách giữa hai lần nhấn Drum liên tiếp ko thể hiện lại như khi thu, mà nó được đặt mặc định. Nghĩa là dù có nhấn Drum1 rùi sau 5p mới nhấn Drum2 thì khi play lại khoảng thời gian giữa 2 lần nhấn nút ko phải là 5p mà là mặc định là 0.3s.
    Vấn đề là Nhờ anh chị chỉ giúp em làm sao để khi play nó thể hiện lại đúng thời gian giữa hai lần nhấn PushButton Drum như lúc mình thu đấy ạ!



    % --- Executes just before piano2sua is made visible.
    function piano2sua_OpeningFcn(hObject, eventdata, handles, varargin)
    % This function has no output args, see OutputFcn.
    % hObject handle to figure
    % eventdata reserved - to be defined in a future version of MATLAB
    % handles structure with handles and user data (see GUIDATA)
    % varargincommand line arguments to piano2sua (see VARARGIN)

    % Choose default command line output for piano2sua
    handles.output= hObject;
    handles.SampleRate = 1/20000;
    handles.SoundVector = 0;
    handles.TimeValue= 0.3488;

    % Update handles structure
    guidata(hObject, handles);

    % UIWAIT makes piano2sua wait for user response (see UIRESUME)
    % uiwait(handles.figure1);


    % --- Outputs from this function are returned to the command line.
    function varargout = piano2sua_OutputFcn(hObject, eventdata, handles)
    % varargout cell array for returning output args (see VARARGOUT);
    % hObject handle to figure
    % eventdata reserved - to be defined in a future version of MATLAB
    % handles structure with handles and user data (see GUIDATA)

    % Get default command line output from handles structure
    varargout{1} = handles.output;

    % --- Executes on button press in C5.
    function C5_Callback(hObject, eventdata, handles)
    % hObject handle to C5 (see GCBO)
    % eventdata reserved - to be defined in a future version of MATLAB
    % handles structure with handles and user data (see GUIDATA)

    freq = 523.25;
    PlayNote(handles,freq);

    % --- Executes on button press in D5.
    function D5_Callback(hObject, eventdata, handles)
    % hObject handle to D5 (see GCBO)
    % eventdata reserved - to be defined in a future version of MATLAB
    % handles structure with handles and user data (see GUIDATA)

    freq = 587.33;
    PlayNote(handles,freq);

    function PlayNote(handles,freq)
    % plays the note that was pressed for 1 second
    % also sets the frequency value on GUI for last played note.

    strFreq = num2str(freq);
    set(handles.STFreqValue, 'String', strFreq);

    SampleRate = handles.SampleRate;
    TimeValue= handles.TimeValue;
    Samples = 0:SampleRate:TimeValue;
    SinOn = get(handles.SinWave, 'Value');
    SquareOn = get(handles.SquareWave, 'Value');
    SawtoothOn = get(handles.SawtoothWave, 'Value');

    if SinOn == 1
    soundVector = sin(2*pi*freq*Samples);
    elseif SquareOn == 1
    soundVector = square(2*pi*freq*Samples);
    elseif SawtoothOn == 1
    soundVector = sawtooth(2*pi*freq*Samples);
    end

    sound(soundVector, 1/SampleRate)

    RecordOn = get(handles.Record, 'Value');

    if RecordOn == 1
    SoundVectorLong = handles.SoundVector;
    if SoundVectorLong == 0
    SoundVectorLong = soundVector;
    else
    SoundVectorLong = cat(2, SoundVectorLong, soundVector);
    end
    handles.SoundVector = SoundVectorLong;
    guidata(handles.figure1, handles);
    end

    % --- Executes on button press in Play.
    function Play_Callback(hObject, eventdata, handles)
    % hObject handle to Play (see GCBO)
    % eventdata reserved - to be defined in a future version of MATLAB
    % handles structure with handles and user data (see GUIDATA)

    SoundVector= handles.SoundVector;
    SampleRate = handles.SampleRate;

    sound(SoundVector, 1/SampleRate)

    Cảm ơn anh chị nhiều!
    ptptshana@gmail.com
    01676456942

Về tác giả

Collapse

nam nguyen v Tìm hiểu thêm về nam nguyen v

Bài viết mới nhất

Collapse

Đang tải...
X