Praktikum Sinyal Suara menggunakan Matlab



TEORI
Sinyal Sinus : 
y = A sin (2πft + φ)
A = Amplitudo
f = frekuensi
t = waktu (dalam detik)
φ = fase sinyal

MEMULAI MATLAB
1.         Jalankan MATLAB
2.         Pada command window ketik “edit   jajal” kemudian tekan ENTER
            >> edit  jajal    [ENTER]
3.         Maka akan muncul  MATLAB  Editor berikut




Disinilah tempat untuk menuliskan program MATLAB

4.         ketiklah program berikut
t = 0:0.01:1;
f = 2;
y = 2*sin(2*pi*f*t);
plot(t,y);







5.         jalankan program dengan menekan tombol: F5, lihat hasilnya

SINYAL SINUS TUNGGAL
1.         Membangkitkan sinyal sinus tunggal
A = 3,              f = 1 Hz,          φ = 0,               t = 0 s/d 1
clc;                % membersihkan layar
clear all;          % membersihkan isi variabel
f = 1;              % frekuensi sinyal
t=0:0.01:1;         % t = 0, 0.01, 0.02,0.03,…, 1
y=3*sin(2*pi*f*t);  % sinyal sinus dengan amplitudo 3
plot(t,y);          % menggambar kurva dilayar
axis([0 1 -10 10])  % batasan sumbu x dan sumbu y
grid on             % tampilan layar dibuat kotak-2

2.         Mengamati perbedaan frekuensi sinyal dalam domain waktu
Gantilah nilai f dengan : 2, 3, 4 atau 5. Lihat hasilnya digambar dan bandingkan!
3.         Mengamati perbedaan Amplitudo
Gantilah nilai A dengan : 1, 2, 3, 4 atau 5. Lihat hasilnya digambar dan bandingkan!
4.         Menambahkan offset DC pada sinyal
y = K + A sin (2πft + φ)         K = konstanta (offset DC)
clc;                % membersihkan layar
clear all;          % membersihkan semua isi variabel yang pernah dibuat
f = 1;              % frekuensi sinyal
t=0:0.01:1;
y=4+3*sin(2*pi*f*t);
plot(t,y);          % menggambar kurva dilayar
axis([0 1 -10 10])  % batasan sumbu x dan sumbu y
grid on

Gantilah nilai K dengan : −5, −4, 3, 4 atau 5. Lihat hasilnya digambar dan bandingkan!
5.         Membangkitkan sinyal sinus tunggal, menampilkan suara dan menyimpan ke hardisk
clc;
clear all;
f=800;                      %frekuensi sinyal
fs=16000;                   %frekuensi sampling
t=1/fs:1/fs:1;
y=sin(2*pi*f*t);
sound(y,fs)                 %menampilkan suara
wavwrite(y,fs,'sinus1.wav') %menyimpan dg nama: sinus1.wav
plot(t,y);axis([0 1  -1 1]);
title('Sinyal Sinus (f=800 Hz), sampling 16000 Hz')


untuk memperpanjang atau memperpendek suara gantilah nilai t dengan berikut:
t=1/fs:1/fs:2;    t=1/fs:1/fs:3;    t=1/fs:1/fs:4;    t=1/fs:1/fs:0.5;
            perhatikan perbedaannya dengan program berikut
clc;
clear all;
fs=16000;
f=800;
t=0:0.001:1.0;
y=sin(2*pi*f*t);
wavplay(y,fs)
plot(t,y);axis([0 0.2 -1 1]);
title('Sinyal Sinus (f=800 Hz), sampling 16000 Hz')

6.         Mengamati perbedaan frekuensi sinyal dalam domain frekuensi
clc;
clear all;
f=800;                      %frekuensi sinyal
fs=16000;                   %frekuensi sampling
t=1/fs:1/fs:1;
y=sin(2*pi*f*t);
sound(y,fs)
Y_f=(abs(fft(y)));
plot(Y_f)
axis([0 1500 0 100])

Gantilah nilai f dengan : 200, 700, 900 atau 1000. Lihat hasilnya digambar dan suara kemudian bandingkan!
Gantilah nilai fs dengan : 8000, 10000, 15000 atau 20000. Lihat hasilnya digambar dan suara kemudian bandingkan!
7.         Mengamati perbedaan Amplitudo
Gantilah nilai A dengan : 2, 3, 4 atau 5. Lihat hasilnya digambar dan suara kemudian bandingkan!
8.         Membangkitkan sinyal Sirine
fs=16000;
t=0:1/fs:4;
alfa=2*pi*(150 + 250*t + 550*t.*t);
y= 10*sin(alfa);
sound(y,fs);



SINYAL SINUS GANDA
1.         Membangkitkan 2 buah sinyal sinus
A1 = 10,                       f 1= 1 Hz,        φ1 = 0,                        
A2 = 1,                         f 2= 20 Hz,      φ2 = 0,                        
t = 0 s/d 1
clc;                        % membersihkan layar
clear all;                  % membersihkan semua isi variabel yang pernah dibuat
f1 = 1;                     % frekuensi sinyal
f2 = 20;
t=0:0.01:1;
y1=10*sin(2*pi*f1*t);
plot(t,y1);
hold on;
y2=sin(2*pi*f2*t);
plot(t,y2);
axis([0 1 -15 15])          % batasan sumbu x dan sumbu y
grid on

2.         menampilkan 2 buah grafik dalam 2 window
clc;                        % membersihkan layar
clear all;                  % membersihkan semua isi variabel yang pernah dibuat
f1 = 1;                     % frekuensi sinyal
f2 = 20;
t=0:0.01:1;
y1=10*sin(2*pi*f1*t);
subplot(2,1,1);plot(t,y1);  % 2 baris, 1 kolom, posisi ke-1
axis([0 1 -15 15])          % batasan sumbu x dan sumbu y
grid on
y2=sin(2*pi*f2*t);
subplot(2,1,2);plot(t,y2);  % 2 baris, 1 kolom, posisi ke-2
axis([0 1 -15 15])          % batasan sumbu x dan sumbu y
grid on

OPERASI 2 BUAH SINYAL
1.         Penjumlahan
clc;                        % membersihkan layar
clear all;                  % membersihkan semua isi variabel yang pernah dibuat
f1 = 1;                     % frekuensi sinyal ke-1
f2 = 20;                    % frekuensi sinyal ke-2
t=0:0.01:1;
y1=10*sin(2*pi*f1*t);
y2=sin(2*pi*f2*t);
y3= y1+y2;
subplot(3,1,1);plot(t,y1);  % 3 baris, 1 kolom, posisi ke-1
axis([0 1 -15 15]);
subplot(3,1,2);plot(t,y2);  % 3 baris, 1 kolom, posisi ke-2
axis([0 1 -15 15]);
subplot(3,1,3);plot(t,y3);  % 3 baris, 1 kolom, posisi ke-3
axis([0 1 -15 15])          % batasan sumbu x dan sumbu y
grid on

2.         Pengurangan
clc;                        % membersihkan layar
clear all;                  % membersihkan semua isi variabel yang pernah dibuat
f1 = 1;                     % frekuensi sinyal
f2 = 20;
t=0:0.01:1;
y1=10*sin(2*pi*f1*t);
y2=sin(2*pi*f2*t);
y3= y1-y2;
subplot(3,1,1);plot(t,y1);  % 3 baris, 1 kolom, posisi ke-1
axis([0 1 -15 15]);
subplot(3,1,2);plot(t,y2);  % 3 baris, 1 kolom, posisi ke-2
axis([0 1 -15 15]);
subplot(3,1,3);plot(t,y3);  % 3 baris, 1 kolom, posisi ke-3
axis([0 1 -15 15])          % batasan sumbu x dan sumbu y
grid on


3.         Perkalian
clc;                        % membersihkan layar
clear all;                  % membersihkan semua isi variabel yang pernah dibuat
f1 = 1;                     % frekuensi sinyal
f2 = 20;
t=0:0.01:1;
y1=10*sin(2*pi*f1*t);
y2=sin(2*pi*f2*t);
y3= y1.*y2;
subplot(3,1,1);plot(t,y1);  % 3 baris, 1 kolom, posisi ke-1
axis([0 1 -15 15]);
subplot(3,1,2);plot(t,y2);  % 3 baris, 1 kolom, posisi ke-2
axis([0 1 -15 15]);
subplot(3,1,3);plot(t,y3);  % 3 baris, 1 kolom, posisi ke-3
axis([0 1 -15 15])          % batasan sumbu x dan sumbu y
grid on



4.         Penguatan dan Pelemahan Sinyal
y = A sin (2πft + φ)
            jika  A > 1       maka terjadi penguatan sinyal
            jika  0 < A < 1 maka terjadi pelemahan sinyal
clc;                        % membersihkan layar
clear all;                  % membersihkan semua isi variabel yang pernah dibuat
f = 1;                      % frekuensi sinyal
t=0:0.01:1;        
y1=10*sin(2*pi*f*t);        % Sinyal asli dengan amplitudo 10
y2=15*sin(2*pi*f*t);        % Sinyal asli diperkuat menjadi  3/2 kali
y3=5*sin(2*pi*f*t);         % Sinyal asli diperlemah menjadi 1/2 kali
subplot(3,1,1);plot(t,y1);  % 3 baris, 1 kolom, posisi ke-1
axis([0 1 -15 15]);
subplot(3,1,2);plot(t,y2);  % 3 baris, 1 kolom, posisi ke-2
axis([0 1 -15 15]);
subplot(3,1,3);plot(t,y3);  % 3 baris, 1 kolom, posisi ke-3
axis([0 1 -15 15]);         % batasan sumbu x dan sumbu y
grid on












6.         Pengamatan Operasi dua buah sinyal melalui suara
clc;
clear all;
fs= 16000;
f1= 852;
f2= 1209;
t=0:0.001:1.0;

y1=sin(2*pi*f1*t);
wavplay(y1,fs)
plot(t,y1);axis([0 1 -1 1]);
title('Sinyal Sinus Y1:(f=852 Hz), sampling 16000 Hz')
pause

y2=sin(2*pi*f2*t);
wavplay(y2,fs)
plot(t,y2);axis([0 1 -1 1]);
title('Sinyal Sinus Y2:(f=1209 Hz), sampling 16000 Hz')
pause

y3 = y1 + y2;
wavplay(y3,fs)
plot(t,y3);axis([0 1 -2 2]);
title('Sinyal Sinus Y3 = Y1+Y2')
pause

y4 = y1 - y2;
wavplay(y4,fs)
plot(t,y4);axis([0 1 -1 1]);
title('Sinyal Sinus Y4 = Y1-Y2')
pause

y5 = y1 .* y2;
wavplay(y5,fs)
plot(t,y5);axis([0 1 -1 1]);
title('Sinyal Sinus Y5 = Y1*Y2')
pause







FREKUENSI SUARA MUSIK
Nada dasar dari suara musik didasarkan pada nada A dengan frekuensi 440 Hz. Untuk frekuensi nada-nada yang lain dihitung menggunakan rumus berikut
f  = 440 x 2n/12  Hz
Dimana :
f  = Frekuensi dari nada-nada yang lain
440 = Ketentuan nilai untuk nada dasar A
n = langkah (oktaf) dari nada-nada yang akan di cari.
12 = jumlah oktaf  ( C, C#, D, D#, E, F, F#, G, G#, A, A#, B)
Sebagai contoh,  untuk mencari frekuensi nada F, maka n = −4, untuk mencari frekuensi nada B, maka n = 2.
F = 440 x 2 −4/12 = 349.2282 Hz ≈ 349.2 Hz
B = 440 x 2 2/12 = 493.8833 Hz ≈ 493.9 Hz
Berdasarkan rumus diatas, dapat dicari nilai-nilai frekuensi untuk nada-nada yang lain yaitu :

Oktaf 1
Oktaf 2
Oktaf 3
C
130.8
261.6
523.3
C#
138.6
277.2
554.4
D
146.8
293.7
587.3
D#
155.6
311.1
622.3
E
164.8
329.6
659.3
F
174.6
349.2
698.5
F#
185.0
370.0
740.0
G
196.0
394.0
784.0
G#
207.7
415.3
830.6
A
220.0
440.0
880.0
A#
233.1
466.2
932.3
B
247.0
493.9
987.8



%Judul Lagu: Gundul-gundul-Pacul
Fs=16000;
t=0:1/Fs:0.25;
c=sin(2*pi*262*t);
d=sin(2*pi*294*t);
e=sin(2*pi*330*t);
f=sin(2*pi*249*t);
g=sin(2*pi*392*t);
a=sin(2*pi*440*t);
b=sin(2*pi*494*t);
c1=sin(2*pi*523*t);
nol = [zeros(size(t))];
nada1 = [c,e,c,e,f,g,g,nol,b,c1,b,c1,b,g,nol,nol];
nada2 = [c,e,c,e,f,g,g,nol,b,c1,b,c1,b,g,nol];
nada3 = [c,nol,e,nol,g,nol,f,f,g,f,e,c,f,e,c,nol];
nada4 = [c,nol,e,nol,g,nol,f,f,g,f,e,c,f,e,c];
lagu=[nada1,nada2,nada3,nada4];
sound(lagu,Fs);

%Judul Lagu: Si-Unyil
Fs=16000;
t=0:1/Fs:0.25;          %panjang not ¼ detik
c=sin(2*pi*262*t);
d=sin(2*pi*294*t);
e=sin(2*pi*330*t);
f=sin(2*pi*249*t);
g=sin(2*pi*392*t);
a=sin(2*pi*440*t);
b=sin(2*pi*494*t);
c1=sin(2*pi*523*t);
nol = [zeros(size(t))];
unyil = [b,nol,a,nol,g,nol,a,nol,b,nol,a,nol,a,nol,nol,nol,b,nol,a,nol,g,nol,e,nol,g,nol,e,nol,e];
sound(unyil,Fs);
wavwrite(unyil,'unyil.wav');






%Nada Pesawat telepon 
%===========================
% Freq : 1209 | 1336 | 1477 
%===========================
% 697  :  1   |   2  |  3  
%---------------------------
% 770  :  4   |   5  |  6
%---------------------------
% 852  :  7   |   8  |  9 
%---------------------------
% 941  :  *   |   0  |  #
%---------------------------

Fs=9000;
t=0:0.001:1.5;
y9=sin(2*pi*852*t)+sin(2*pi*1477*t);
y8=sin(2*pi*852*t)+sin(2*pi*1336*t);
y7=sin(2*pi*852*t)+sin(2*pi*1209*t);
y6=sin(2*pi*770*t)+sin(2*pi*1477*t);
y5=sin(2*pi*770*t)+sin(2*pi*1336*t);
y4=sin(2*pi*770*t)+sin(2*pi*1209*t);
y3=sin(2*pi*697*t)+sin(2*pi*1477*t);
y2=sin(2*pi*697*t)+sin(2*pi*1336*t);
y1=sin(2*pi*697*t)+sin(2*pi*1209*t);
y0=sin(2*pi*941*t)+sin(2*pi*1336*t);
y = [y0,y1,y2,y3,y4,y5,y6,y7,y8,y9];
wavplay(y,Fs)

SINYAL WICARA PADA MANUSIA
Sinyal wicara adalah sinyal yang berubah-ubah terhadap waktu, bila diamati dalam selang waktu yang sangat singkat masih tampak stasioner. Tetapi bila diamati dalam selang waktu yang agak lama (> 1/5 detik), sinyalnya mulai menampakkan ucapan dari pembicara.   
Untuk menyajikan sebuah sinyal wicara ada tiga kondisi dasar yang harus diketahui, yaitu silence (S) (keadaan tenang) yaitu keadaan dimana sinyal wicara tidak diproduksi, unvoice (U) (tidak bersuara) yaitu vocal cord tidak berfibrasi, dan  voiced (V) (bersuara) dimana  vocal cord bervibrasi secara periodik sehingga menghasilkan sinyal wicara.
Merekam Suara dan menyimpan menjadi  “File.wav”
clear all;
fs=8000;
y= wavrecord(5.0*fs, fs, 'double'); %merekam suara
wavwrite(y,fs,'aiueo.wav');         %simpan rekaman ke hardisk
wavplay(y,fs);                      %mainkan hasil rekaman
figure,plot(y);                     %sinyal hasil rekaman di plot
Membaca dan memainkan file.wav
clear all;
fs=8000;
y=wavread('aiueo.wav');
wavplay(y,fs)
figure,plot(y);

Memotong sinyal

clear all;
fs=8000;
y=wavread('aiueo.wav');
wavplay(y,fs)
figure,plot(y);

A1= min(y);
A2= max(y);
t=length(y);
x1=0; x2=t;
axis([x1  x2   A1  A2]);

% suara ‘U’ diperkirakan berada pd t=16750 s/d 19500
y1=y(16750:19500);      %sinyal y dicopy pd t=16750 s/d 19500
wavplay(y1,fs)
figure,plot(y1)
axis([x1  x2   A1  A2]);


clear all;
fs=8000;
y=wavread('aiueo.wav');
wavplay(y,fs)
figure,plot(y);

A1= min(y);
A2= max(y);
t=length(y);
x1=0; x2=t;
axis([x1  x2   A1  A2]);

y1=y(16750:19500);
wavplay(y1,fs)
figure,plot(y1)
axis([x1  x2   A1  A2]);

y2=[y1' y' y1'];
t=length(y2);
wavplay(y2,fs)





















Comments

Post a Comment