Wszelkie prawa do zada
ń
, plików i instrukcji s
ą
zastrze
ż
one, nikt poza prowadz
ą
cymi zaj
ę
cia i studentami IA na AGH
nie ma prawa ich wykorzystywa
ć
. A tych co maj
ą
takie prawa, prosz
ę
, aby nie umieszczali ich w innym miejscu w sieci.
Do folderu, w którym Państwo pracujecie proszę wgrać pliki wav z platformy.
Rozdzielczość bitowa – liczba bitów służąca do opisania pojedynczej
wartości pojedynczej próbki
rozdzielczość bitowa
– 8 bitów - czyli 2
8
możliwych wartości – 256
– 16 bitów - czyli 2
16
możliwych wartości – 65536
częstotliwość próbkowania – szybkość pobierania próbek
– im większa częstotliwość próbkowania, tym sygnał cyfrowy lepiej jest odwzorowany,
zgodnie z poniższym rysunkiem:
Rysunek pochodzi ze strony:
http://sound.eti.pg.gda.pl/student/tpm/zie03_dzwiek.pdf
częstotliwość próbkowania
– 8000Hz – można zakodować sygnał do 3,5kHz
– 11025 – można zakodować sygnał do 5,0kHz
– 22050 – można zakodować sygnał do 10kHz
– 44100 – można zakodować sygnał do 20kHz
– 192000 – można zakodować sygnał do 90kHz
Otwieranie pliku wav
[y,Fs,bits, opt_ck] = wavread(‘plik.wav’);
i odtwarzanie dźwiękowego:
sound(y,Fs,bits)
lub
wavplay(y,Fs,bits)
Zad 1. Za pomocą poniższego programu proszę otworzyć plik chimes.wav
[file, path] = uigetfile('*.wav');
if file == 0
return;
end;
[y,Fs,bits, opt_ck] = wavread([path, file]);
Na ekranie powinien się pojawić napis „Dźwięk w wersji oryginalnej" i komputer powinien
odtworzyć dźwięk,
z oryginalną częstotliwością próbkowania
potem napis
częstotliwość odtwarzania 2x mniejsza
i komputer powinien odtworzyć dźwięk
częstotliwością próbkowania 2 razy mniejszą.
Podobnie z częstotliwością 2 x większą.
To samo proszę zrobić dla bitów –2 razy mniej i 2 razy więcej niż w formacie oryginalnym.
Co się dzieje w każdym z tych przypadków z odtwarzanym dźwiękiem?
Zad 2. Proszę ze strony:
http://www-gmm.insa-toulouse.fr/~guillaum/PIANO/sound_examples.html
ś
ciągnąć na komputer stereo plik *. wav ( y jest wektorem dwukolumnowym). Proszę zagrać
dźwięk z obu kanałów, potem osobno , z lewego i z prawego kanału. Za pomocą funkcji plot
proszę na jednym wykresie narysować oba kanały różnymi kolorami. Proszę też obliczyć
rozmiar pliku dźwiękowego.
Wzór, na podstawie którego możesz obliczyć rozmiar pliku dźwiękowego w bajtach
przedstawia się następująco:
czas trwania dźwięku w sekundach × częstotliwość próbkowania w Hz × liczba kanałów ×
(rozdzielczość bitowa / 8) = rozmiar pliku
lub ?? Jak się mają do siebie czas trwania dźwięku w sekundach , długość pliku i
częstotliwość próbkowania ?
rozdzielczość bitową dzielimy przez 8, ponieważ w jednym bajcie mieści się 8 bitów
Zad 3. Pliki typu au. Proszę przeczytać typach plików dźwiękowych, których rozszerzeniem jest „.au”.
Proszę znaleźć przykład takiego pliku i odtworzyć go za pomocą programu Matlab.
[y,Fs,bits] = auread('aufile')
Zad 4. Dźwięki zapisane w Matlab’ ie w pliku typu *.mat.
load chirp;
y1 = y; Fs1 = Fs;
load gong;
wavplay(y1,Fs1,'sync') % The chirp signal finishes before the
wavplay(y,Fs) % gong signal begins playing.
Proszę naleźć 3 plik, otworzyć go, narysować 3 wykresy w funkcji czasu.
ZADANIE DODATKOWE dla chętnych
Inspiracją do zadania związanego z IX symfonia Beethovena była dla mnie strona opracowana przez
mgr inż. Marcin Szczegielniaka
www.szczegmar.freehost.pl/cw2fizyka.doc
Prosz
ę
spróbowa
ć
wykona
ć
zadanie 4.1 i 4.2 z tej strony:
Cytuj
ę
:
4.1
Stworzyć funkcję pozwalającą wygenerować dźwięk o określonej wysokości, czasie
trwania i częstotliwości próbkowania. Można wykorzystać następującą funkcję.
nuta.m
function
dzwiek = nuta(f, tr, fs)
% czestotliwosc: f
% czas trwania: tr
% czestotliwosc próbkowania: fs
t=0:1/fs:tr;
% obwiednia sygnału
x=t/tr; obwiednia=x.*(1-x).*(exp(-8*x)+0.5*x.*(1-x));
b=0.08;
% składowe harmoniczne
harmoniczna0=sin(2*pi*f*t*(1-b))+sin(2*pi*f*t*(1+b));
harmoniczna1=sin(2*pi*2*f*t*(1-b))+sin(2*pi*2*f*t*(1+b));
harmoniczna2=sin(2*pi*3*f*t*(1-b))+sin(2*pi*3*f*t*(1+b));
% poł
ą
czenie obwiedni i składowych harmonicznych
dzwiek=obwiednia.*(harmoniczna0+0.2*harmoniczna1+0.05*harmoniczna2
);
% normalizacja amplitudy
dzwiek=dzwiek/max(dzwiek);
4.2
Wykorzystując powyższą funkcję oraz wektory opisujące fragment IX symfonii
Beethovena przedstawione poniżej, wygenerować muzykę o częstotliwości próbkowania
16kHz. Wynik zapisać w wektorze muzyka. Odsłuchać fragment wpisując w wiersz
poleceń
soundsc(muzyka,16000)
.
IX symfonia Beethovena (fragment)
f=[1319 1319 1397 1568 1568 1397 1319 1175 1047 1047 1175 1319 1319 1175 1175]
tr=[0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.6 0.2 0.
5]