Jumat, 29 November 2019

Belajar Dasar-Dasar Sinyal


Tulisan ini dibuat bagi kalian yang ingin belajar DSP Digital  Signal Processing pokoknya mengenai sinyal, agar kamu mengerti, adapun tools utama yang digunakan yaitu Matlab dan Audacity untuk mempermudah visualisasi grafik yang rumit bila menggunakan excel. Penulis sudah merangkum secara umum mengenai frekuensi, amplitudo, cuplikan/bitrate, file audio, serta fourier transform. Sedikit membahas mengenai contoh riil mengenai nada suara piano untuk mempermudah saja. Bagi kalian yang ingin lebih tahu DSP bisa kirim email saja ya.

Oiya, tidak semua kode Matlab nya ditampilkan karena agak rumit bagi pemula, jadi sebagai gantinya dibuatkan grafik/plot yang cukup dimengerti bagi pemula. Jika gambarnya terlalu kecil, kamu bisa klik saja gambarnya ntar juga tampil sangat jelas koq,

Pengertian Frekuensi dan Amplitudo


Frekuensi jumlah getaran yang dihasilkan dalam setiap 1 detik. Rumus Menghitung Frekuensi

f = Frekuensi dalam satuan Hertz (Hz)
T = Periode dalam satuan detik (detik)
Rumus umum untuk menggambarkan sinyal sinus yaitu


Dimana :
    A = Amplitudo
    f = besarnya frekuensi (Hz)

atau dalam bentuk lain sinyal memiliki tambahan informasi waktu t = 0 dan terdapat suatu nilai fase φ sehingga rumusan di atas menjadi:

 


 atau dalam bentuk angularnya yaitu


Dimana ω merupakan frekuensi angular yang memiliki satuan radian per detik. Perlu diperhatikan bahwa ω memiliki besar yang sama dengan 2π f. Seperti dilansir dari Wikipedia, ilustrasi dari sinyal untuk 1 periode yaitu


Dalam sinyal diskrit, maka dibutuhkan sebuah sampling rate atau fs (frame rate/second). Misalkan diberikan sebuah informasi berikut
  1. Periode sebanyak 1 detik (sumbu x)
  2. Panjang Gelombang 1.5 (sumbu y)
  3. Jumlah cuplikan sebanyak 50 kali dalam 1 detik (lihat bulatan atas dan bawah)
  4. Getaran sebanyak 2 kali (sengaja diberikan 2 warna agar terlihat jelas), maka ilustrasinya sebagai berikut


Coba kalian tebak, berapa nilai frekuensi berikut ini?
 Nah, penulis kasih tahu, yaitu 1.5x; seperti 2 warna berikut dibawah ini
Tentu sangat mudah ‘menebak’ sinyal ideal diatas, karena pada kenyataannya akan terdapat sekali noise dan ribuan Hz dalam 1 detik sehingga sangat sulit menentukan berapa frekuensinya, seperti contoh dibawah ini
Atau model dibawah ini yang terdiri dari 2 sinyal dengan amplitudo sama yang terdiri dari 2 frekuensi yaitu 150 dan 200 Hz
Semua grafik diatas ditampilkan sumbu x periode waktu atau disebut domain waktu sehingga tidak terlihat berapa nilai frekuensinya, oleh karena itu diperlukan sebuah domain frekuensi untuk melihat sinyal diatas, seperti berikut ini
Pada sesi ini, kamu sudah sedikit mengetahui mengenai dasar-dasar sinyal. Kamu bisa pelajari pengertian FFT atau fast Fourier transform

clc;clear all;close all;
vm = 1.5; %amplitudo
fm_a = 150; %frekuensi
fm_b = 200; %frekuensi
fs = 500; %sampling rate
waktu=0 : 1/fs : 1; % 1 detik
sinyal_a =vm*sin( 2*pi*fm_a*waktu); % Modulating Signal Waveform
sinyal_b =vm*sin( 2*pi*fm_b*waktu); % Modulating Signal Waveform
sinyal = sinyal_a+sinyal_b; %penggabungan 2 sinyal
 
figure
subplot(1,2,1),plot(waktu,sinyal);
grid on
xlabel('Periode: 1 detik ','fontsize',18)
ylabel('Amplitudo','fontsize',18)
title(['2 Sinyal sinus dengan ' num2str(fm_a) ' - ' num2str(fm_b) ' Hz'],'fontsize',18)
 
 
Y = fft(sinyal);
f = fs* ( 0 :( length(Y)-1)/2)/length(Y);
sumbu_x = f;
sumbu_y = abs ( Y ( 1 : (length(Y)+1)/2));
[value,index]=max(sumbu_y);
 
subplot(1,2,2),plot(sumbu_x,sumbu_y,'linewidth',2);
grid on
title('Transformasi Forier','fontsize',18)
xlabel('frekuensi (Hz)','fontsize',18)
hold off;

Fourier Transform

Fourier transform tidak dipengaruhi oleh beberapa sinyal yang digabungkan seperti [A+B] atau [A,B] maksudnya adalah
[A+B] : sinyal A dan sinyal B berbunyi bersamaan sehingga periode nya 1 detik
[A,B] : sinyal A dan sinyal B berbunyi berurutan sehingga periodenya menjadi 2 detik

seperti berikut (lihat sumbu x yaitu 1 detik dan 2 detik)

 Maka dengan transformasi Fourier, akan menghasilkan domain frekuensi berikut

Fourier Transform atau Transformasi Fourier adalah suatu model transformasi yang memindahkan domain spasial atau domain waktu menjadi domain frekuensi, kamu bisa baca di http://majalah1000guru.net/2014/04/deret-dan-transformasi-fourier/

Kelebihannya adalah: Transformasi Fourier dapat mempermudah analisis terhadap suatu sinyal yang berada dalam suatu sistem.

Kekurangannya adalah: Transformasi Fourier hanya dapat menangkap informasi apakah suatu sinyal memiliki frekuensi tertentu atau tidak, tapi tidak dapat menangkap dimana frekuensi itu terjadi.

Disini tidak dibahas detail rumus mengenai fourier transform atau fast fourier transform karena sudah banyak yang membahas

Sinyal Digital / Diskrit

Sering disebut dengan Analog to Digital Conversion (ADC) proses mengubah amplitudo gelombang bunyi ke dalam waktu interval tertentu (disebut juga sampling), sehingga menghasilkan representasi digital dari suara. Sampling rate: beberapa gelombang yang diambil dalam satu detik. Gelombang suara analog tidak dapat langsung direpresentasikan pada komputer. Komputer mengukur amplitudo pada satuan waktu tertentu untuk menghasilkan sejumlah angka. Tiap satuan pengukuran ini dinamakan sample rate. Pada contoh berikut ada sebuah sinyal analog 4 Hz yang akan dicuplik sebanyak 50 per detik atau bit rate 50 Hz


 Tahapan dari analog ke digital yaitu
  1. Membuang frekuensi tinggi dari source signal
  2. Mengambil sample pada interval waktu tertentu (sampling)
  3. Menyimpan amplitudo sample dan mengubahnya dalam bentuk diskrit
  4. Mengubah bentuk menjadi nilai biner
Berikut tabel range frekuensi dari suara

BITRATE/CUPLIKAN

Sekarang kamu sudah paham mengenai sinyal digital dan suara digital, sekarang kita bahas mengenai format audio yaitu *.wav; sebuah file suara nada piano A#.wav akan tertera informasi berikut

 Artinya file tersebut berisikan informasi
  1. Berjenis stereo (ada 2 grafik atas bawah yaitu bagian suara left dan right)
  2. Bitrate nya 44100 Hz atau 44.1 KHz
  3. Durasi 1.90 detik
Dari situ harus tahu bitrate yang digunakan yaitu 44100 Hz, apa itu bit rate?
Bitrate adalah banyaknya cuplikan data yang diambil selama 1 detik (jangan dicampur adukan dengan frekuensi sinyal ya, ini sedikit beda), kalau dalam digital image processing yaitu DPI (dot per inchi). Mari kita pahami dengan menggunakan Matlab.

clc;clear all;close all;
[y,fs] = audioread('A#1.wav');
if ndims(y)==2
    disp('Stereo')
else
    disp('Mono')
end
 
jumlah_array = size(y,1);
waktu = jumlah_array/fs;

Menghasilkan

Stereo

jumlah_array =

       83960


waktu =

    1.9039



 Terbukti bahwa file audio tersebut berjenis stereo lihat variabel y yang terdiri dari 2 kolom lebih tepatnya 83960 baris x 2 kolom, dengan bit rate 44100, maka durasi waktunya (play time) ditentukan dengan rumus sebagai berikut
Sehingga waktu/durasi play sebesar 1.9039 detik atau 1.9 detik (sama persis dengan file yang dibuka oleh aplikasi Audacity). Kamu sudah paham ya mengenai bitrate, sehingga semakin tinggi bitrate maka akan semakin banyak data yang disimpan (semakin presisi suaranya dan telinga manusia ada batasnya juga, jadi tidak serta semakin tinggi bit rate nya makin bagus alias kalau sudah terlampau tinggi maka telinga manusia pun sudah tidak terlalu peka/tidak bisa membedakannya)

Dibawah ini adalah domain waktu dari suara nada piano A# (menggunakan matlab) sama koq grafiknya dengan yang diatas, hanya saja dipendekan saja jadi terlihat agak gemuk

Analisis Frekuensi Audio


Kita lanjutin lagi menggunakan Audacity, informasi dari nada A# terdiri dari  3 frekuensi dominan lho, kamu bisa lihat di Audacity dengan cara Analisa -> Spektrum Plot seperti berikut

Atau dengan FFT dari Matlab akan tampil 3 frekuensi dominan untuk suara nada piano A# karena ada 3 tuts yang ditekan secara bersama (ingat pembahasan sebelumnya bahwa sinyal suara yang digabung tidak terlalu berpengaruh pada FFT) sedangkan 2 frekuensi yang kecil-kecil itu tanda noise/getaran/ripple.
 Mari kita coba plot grafik dari nada suara piano G# dalam domain waktu
 Kalau menggunakan domain frekuensi

Jadi sudah jelas terbukti bahwa nada piano A# dan G# akan berbeda bunyinya karena emang beda frekuensinya dan terlihat jelas dalam domain frekuensi.

Pada akhirnya kamu sudah paham ya mengenai frekuensi, bitrate/cuplikan data, periode, dan domain waktu dan domain frekuensi dan selesai sudah postingan mengenai dasar-dasar sinyal.


Ref:
https://id.wikipedia.org/wiki/Gelombang_sinus

Tidak ada komentar: