19
Audio Equalizer in Matlab NUST School of Electrical Engineering and Computer Sci ence (SEECS)

Audio equalizer

Embed Size (px)

Citation preview

Page 1: Audio equalizer

Audio Equalizer in Matlab

NUST School of Electrical Engineering and Computer Science (SEECS)

Page 2: Audio equalizer

05/01/2023Audio Equalizer.............................................Hasham_Khan

Task

Task is to design a 10-band software audio equalizer.

Page 3: Audio equalizer

05/01/2023Audio Equalizer.............................................Hasham_Khan

Step By Step Approach

Open Matlab Using “ guide ” function create a new GUI

Page 4: Audio equalizer

05/01/2023Audio Equalizer.............................................Hasham_Khan

For 10 bands Audio Equalizer we need 10 sliders… so select 10 sliders

Page 5: Audio equalizer

05/01/2023Audio Equalizer.............................................Hasham_Khan

After the completion of previous step your design will be like this ;

Page 6: Audio equalizer

05/01/2023Audio Equalizer.............................................Hasham_Khan

Define the values for each slider handles• global stop C Fs;• stop=1;• Fs=44100;• C=zeros(1,10);

Slider 1 values are as follow;• set(handles.slider1,'min',-20);• set(handles.slider1,'max',20);• set(handles.slider1,'value',0);• set(handles. slider1,'SliderStep',[0.025,0.05]);• set(handles. slider1,'string',num2str(0));

Repeat the above steps for all 10 Sliders

Page 7: Audio equalizer

05/01/2023Audio Equalizer.............................................Hasham_Khan

Double click on each slider and click “ callback” and “ CreateFtn ”…By clicking both you will see both functions in your m file

Page 8: Audio equalizer

05/01/2023Audio Equalizer.............................................Hasham_Khan

To get the different values of slider add “get” function• % Executes on slider movement.• function slider1_Callback(hObject, eventdata, handles)• global C;• C(1)=get(hObject,'value');• set(handles.slider1_val,'string',num2str(C(1)));• % --- Executes during object creation, after setting all properties.• function slider1_CreateFcn(hObject, eventdata, handles)• if isequal(get(hObject,'BackgroundColor'),

get(0,'defaultUicontrolBackgroundColor'))• set(hObject,'BackgroundColor',[.9 .9 .9]);• end

Repeat the above steps for all 10 sliders

Page 9: Audio equalizer

05/01/2023Audio Equalizer.............................................Hasham_Khan

To add “Load”, “ Reset ”, “ Play ” ,“ Stop ’’ buttons use the Push button in the GUI

Double click on Push button and change the string and tag as load , reset , play and stop.

Page 10: Audio equalizer

05/01/2023Audio Equalizer.............................................Hasham_Khan

Now after adding the button your design will be like this ;

Page 11: Audio equalizer

05/01/2023Audio Equalizer.............................................Hasham_Khan

Double click on each button and select callback function For Reset button :• set(handles.slider1_val,'string',num2str(0));• set(handles.slider1_var,'value',0); Repeat the above step for all 10 sliders

For Load button :• % -Executes on button press in load.• function load_Callback(hObject, eventdata, handles)• global file_name;• file_name=uigetfile('*wav','hasham .wav');

Page 12: Audio equalizer

05/01/2023Audio Equalizer.............................................Hasham_Khan

For Stop and Play Button :• % --- Executes on button press in play.• function play_Callback(hObject,

eventdata, handles) • global stop file_name C;• stop=1;• equalizer_play();• function equalizer_play()• global stop file_name C;• [x,Fs]=wavread(file_name);• [a,b]=coef();• l_bucata=2*Fs;• Nb=round(length(x)/l_bucata);• y=0;• for i=1:floor(Nb)• bucata=x((i-1)*l_bucata+1:i*l_bucata);• for k=1:5• y=y+filter(10^(C(k)/

20)*b{k},a{k},bucata);• if(stop==0)• break;

• end • end• wavplay(y,Fs,'async');• y=0;• if(stop==0)• break;• end • end• % --- Executes on button press in stop.• function stop_Callback(hObject, eventdata,

handles)• global stop;• stop=0;

Page 13: Audio equalizer

05/01/2023Audio Equalizer.............................................Hasham_Khan

Add Edit Text to each slider and double click the edit text icon and select “callback” and “CreateFtn” for each slider

Page 14: Audio equalizer

05/01/2023Audio Equalizer.............................................Hasham_Khan

After adding the edit text to each slider your design will be like this ;

Page 15: Audio equalizer

05/01/2023Audio Equalizer.............................................Hasham_Khan

To have the value of each slider add the below code to each slider; function slider1_val_Callback(hObject, eventdata, handles) global C; C(1)=str2num(get(hObject,'string')); minn=get(handles.C1_var,'min');maxx=get(handles.C1_var,'max'); if(C(1)<minn || C(1)>maxx) C(1)=get(handles.C1_var,'value');set(hObject,'string',num2str(0)); else set(handles.slider1_var,'value',C(1)); end function slider1_val_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','black'); end

Repeat the above step for all 10 sliders

Page 16: Audio equalizer

05/01/2023Audio Equalizer.............................................Hasham_Khan

Add equalizer plot and filter function in the code. As the equalizer is of 10 band so we have to design 10 filters.

Page 17: Audio equalizer

05/01/2023Audio Equalizer.............................................Hasham_Khan

After adding the equalizer plot your design will be like this ;

Page 18: Audio equalizer

05/01/2023Audio Equalizer.............................................Hasham_Khan

So your design of 10 Band Audio Equalizer is ready now run the code

Page 19: Audio equalizer

05/01/2023Audio Equalizer.............................................Hasham_Khan

Thank You

Prepared by Hasham Khan [email protected]

NUST School of Electrical Engineering and Computer Science(SEECS)