..

Ćwiczenie 3,4
Generowanie muzyki

I. Zakres materiału

  1. Generowanie sygnału sinusodialnego
  2. Nuty, dźwięki a częstotliwość

II. Informacje wprowadzające

  1. Dźwięk muzyczny
  2. Układ klawiatury pianina ( w Polsce B to H):
  3. Nuta a częstotliwość:
    • Środkowe ma A (A4) ma częstotliwość 440 Hz
    • Częstotliwość tonu o oktawę wyżej jest 2 razy większa
    • W oktwaie jest 12 równorozłożonych w skali logarytmicznej półtownów (7 bialych klawiszy i 5 czarnych)
    • Wyliczenie częstotliwości nuty może się odbyć według wzoru f=400Hz *2n/12, gdzie n - jest odległością dźwięku (liczoną w półtomach) od A4 (patrz powyższy ryunek - numerki na klawiszach)
  4. Rozumienie zapisu nutowego:
    ---
    Zapis nutowy

 

III. Zadania do wykonania

  1. Opracować funkcję w Matlabie, która generuje sygnał sinusoidalny o zadanej częstotliwości i gra go w zadanym odcinku czasu (maksymalna amplituda nie może być większa niż 1)
    - funckje w matlabie tworzymy w oddzielnych plikach z nagłówkiem funcition nazwa_funkcji(arg1,arg2), np. function muzyka(czest, dlug),
    - funkcja sound nie czeka na zakończenie grania dźwięku, zatem należy użyć funckji pause(dlug); aby program zaczekał na zakończenie odgrywania nuty.
  2. Opracować funkcję w Matlabie przekształcającą zapis nutowy (A,C..) na częstotliwość sygnału
  3. Opracować pozytwykę - program odgrywający zadaną melodię zapisaną w tablicy (wysokość dźwięu, czas trwania, przepiwdzieć pauzy, warto dodać krótką ciszę po każdym dźwięku). Melodia powinna być jedna z poniższych: (numer indesku modulo 5)+1 (najpierw grać zapis z kluczem wiolinowym)





  4. Zmodyfikować funkcję z zadania 1, tak aby umożliwiała zastosowanie obwiedni:
  5. Zamodeluj inną barwę dźwięku (dokładadając opcję do funckji z punktu 1):
    1. zastosuj harmoniczne przy generacji przebiegu sinusoidalnego
    2. istotne aby ich ampiltuda była mniejsza niż tonu podstawowego
    3. pooekperymentuj z wartoścami amplitudy harmonicznych
  6. Dodać polifonię (drugi instrument) z melodią z zapsiu z kluczem basowym (druga linia z zapisu nutowego z zadania 4)
  7. Wygenruj sinusoidę stosując algorytm rekurencyjny (T – liczba próbek w okresie sinusoidy):

    i. A=cos(2.0*PI/T);
    C=sin(2.0*PI/T);
    x[1]=C;
    x[0]=x[2]=0;

    ii. x[0]= 2*A*x[1]-x[2];
    x[2]=x[1];
    x[1]=x[0];
    out = x[0]*????; //właściwy zakres!!!!)
    goto ii.