Signal and System

Midterm project

Every frequency of note

Enter the notes to every parts,then use x to make the cosine wave. Then use reshape function to transform x to sig. Finally, play the music with different frequency.


Main Function

function varargout = untitled(varargin)

% UNTITLED MATLAB code for untitled.fig

% UNTITLED, by itself, creates a new UNTITLED or raises the existing

% singleton*.

%

% H = UNTITLED returns the handle to a new UNTITLED or the handle to

% the existing singleton*.

%

% UNTITLED('CALLBACK',hObject,eventData,handles,...) calls the local

% function named CALLBACK in UNTITLED.M with the given input arguments.

%

% UNTITLED('Property','Value',...) creates a new UNTITLED or raises the

% existing singleton*. Starting from the left, property value pairs are

% applied to the GUI before untitled_OpeningFcn gets called. An

% unrecognized property name or invalid value makes property application

% stop. All inputs are passed to untitled_OpeningFcn via varargin.

%

% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one

% instance to run (singleton)".

%

% See also: GUIDE, GUIDATA, GUIHANDLES


% Edit the above text to modify the response to help untitled


% Last Modified by GUIDE v2.5 10-May-2019 19:07:46


% Begin initialization code - DO NOT EDIT

gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, ...

'gui_Singleton', gui_Singleton, ...

'gui_OpeningFcn', @untitled_OpeningFcn, ...

'gui_OutputFcn', @untitled_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

% End initialization code - DO NOT EDIT



% --- Executes just before untitled is made visible.

function untitled_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)

% varargin command line arguments to untitled (see VARARGIN)


[y,Fs] = audioread('copy.wav');

handles.Y = y;

guidata(hObject , handles);

handles.Fs = Fs;

guidata(hObject , handles);

handles.Player = audioplayer(y,Fs);

guidata(hObject , handles);


xlabel(handles.axes1, 'Time');

ylabel(handles.axes1, 'Magnitude');

title(handles.axes1,'Original Waveform');


xlabel(handles.axes2, 'Time');

ylabel(handles.axes2, 'Magnitude');

title(handles.axes2,'Fourier Transform of music');

% Choose default command line output for untitled

handles.output = hObject;


% Update handles structure

guidata(hObject, handles);


% UIWAIT makes untitled wait for user response (see UIRESUME)

% uiwait(handles.figure1);



% --- Outputs from this function are returned to the command line.

function varargout = untitled_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;



% hObject handle to pushbutton1 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)



% --- Executes on button press in pushbutton2.

function pushbutton2_Callback(hObject, eventdata, handles)

% hObject handle to pushbutton2 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

[y , Fs] = audioread('copy.wav');

handles.Y = y;

guidata(hObject , handles);

handles.Fs = Fs;

guidata(hObject , handles);

handles.Player = audioplayer(y,Fs);

guidata(hObject , handles);

player = handles.Player;

a = handles.Y;

b = handles.Fs;

time = (1:length(a))/b;

plot(handles.axes1, time, a);

grid on;

xlabel(handles.axes1, 'Time');

ylabel(handles.axes1, 'Magnitude');

title(handles.axes1,'Original Waveform');

play(player);

t = clock;

handles.t = t;

guidata(hObject , handles);

time = 248;

FT = fft(a);

a =abs(FT/time);

y2 = a(1:time/2+1);

y2(2:end-1) = 2*y2(2:end-1);

f2 = Fs*(0:(time/2))/time;

plot(handles.axes2, f2 , y2);

xlabel(handles.axes2, 'Time');

ylabel(handles.axes2, 'Magnitude');

title(handles.axes2,'Fourier Transform of music');



% --- Executes on button press in pushbutton3.

function pushbutton3_Callback(hObject, eventdata, handles)

% hObject handle to pushbutton3 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

player = handles.Player;

plot(handles.axes1, 0,0);

grid on;

xlabel(handles.axes1, 'Time');

ylabel(handles.axes1, 'Magnitude');

title(handles.axes1,'Original Waveform');

plot(handles.axes2, 0,0);

xlabel(handles.axes2, 'Time');

ylabel(handles.axes2, 'Magnitude');

title(handles.axes2,'Fourier Transform of music');

stop(player);



% --- Executes on button press in pushbutton5.

function pushbutton5_Callback(hObject, eventdata, handles)

% hObject handle to pushbutton5 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

a = handles.Y;

b = handles.Fs*3;

handles.Fs = b;

guidata(hObject , handles);

player = audioplayer(a,b);

handles.Player = player;

guidata(hObject , handles);

time = (1:length(a))/b;

plot(handles.axes1, time, a);

grid on;

xlabel(handles.axes1, 'Time');

ylabel(handles.axes1, 'Magnitude');

title(handles.axes1,'Original Waveform');

play(player);

t = clock;

handles.t = t;

guidata(hObject , handles);

time = 248;

FT = fft(a);

a =abs(FT/time);

y2 = a(1:time/2+1);

y2(2:end-1) = 2*y2(2:end-1);

f2 = b*(0:(time/2))/time;

plot(handles.axes2, f2 , y2);

xlabel(handles.axes2, 'Time');

ylabel(handles.axes2, 'Magnitude');

title(handles.axes2,'Fourier Transform of music');



% --- Executes on button press in pushbutton6.

function pushbutton6_Callback(hObject, eventdata, handles)

% hObject handle to pushbutton6 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

a = handles.Y;

b = handles.Fs*0.8;

handles.Fs = b;

guidata(hObject , handles);

player = audioplayer(a,b);

handles.Player = player;

guidata(hObject , handles);

time = (1:length(a))/b;

plot(handles.axes1, time, a);

grid on;

xlabel(handles.axes1, 'Time');

ylabel(handles.axes1, 'Magnitude');

title(handles.axes1,'Original Waveform');

play(player);

t = clock;

handles.t = t;

guidata(hObject , handles);

time = 248;

FT = fft(a);

a =abs(FT/time);

y2 = a(1:time/2+1);

y2(2:end-1) = 2*y2(2:end-1);

f2 = b*(0:(time/2))/time;

plot(handles.axes2, f2 , y2);

xlabel(handles.axes2, 'Time');

ylabel(handles.axes2, 'Magnitude');

title(handles.axes2,'Fourier Transform of music');



% --- Executes on button press in pushbutton7.

function pushbutton7_Callback(hObject, eventdata, handles)

% hObject handle to pushbutton7 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

a = 2*handles.Y;

b = handles.Fs;

handles.Fs = b;

guidata(hObject , handles);

player = audioplayer(a,b);

handles.Player = player;

guidata(hObject , handles);

time = (1:length(a))/b;

plot(handles.axes1, time, a);

grid on;

xlabel(handles.axes1, 'Time');

ylabel(handles.axes1, 'Magnitude');

title(handles.axes1,'Original Waveform');

play(player);

t = clock;

handles.t = t;

guidata(hObject , handles);

time = 248;

FT = fft(a);

a =abs(FT/time);

y2 = a(1:time/2+1);

y2(2:end-1) = 2*y2(2:end-1);

f2 = b*(0:(time/2))/time;

plot(handles.axes2, f2 , y2);

xlabel(handles.axes2, 'Time');

ylabel(handles.axes2, 'Magnitude');

title(handles.axes2,'Fourier Transform of music');




% --- Executes on button press in pushbutton8.

function pushbutton8_Callback(hObject, eventdata, handles)

% hObject handle to pushbutton8 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

a = 0.5*handles.Y;

b = handles.Fs;

handles.Fs = b;

guidata(hObject , handles);

player = audioplayer(a,b);

handles.Player = player;

guidata(hObject , handles);

time = (1:length(a))/b;

plot(handles.axes1, time, a);

grid on;

xlabel(handles.axes1, 'Time');

ylabel(handles.axes1, 'Magnitude');

title(handles.axes1,'Original Waveform');

play(player);

t = clock;

handles.t = t;

guidata(hObject , handles);

time = 248;

FT = fft(a);

a =abs(FT/time);

y2 = a(1:time/2+1);

y2(2:end-1) = 2*y2(2:end-1);

f2 = b*(0:(time/2))/time;

plot(handles.axes2, f2 , y2);

xlabel(handles.axes2, 'Time');

ylabel(handles.axes2, 'Magnitude');

title(handles.axes2,'Fourier Transform of music');