Übung3

Aufgabe 1 – Klirrfaktor

Durch Multiplikation wird unser cd_rec.wav mit Hilfe der wave_io.c lauter gemacht. Bei der ersten Multiplikation wird das Beispiel um 3 db lauter. Beim zweiten mal um 6 db und beim dritten mal um 9 db. Immer gemessen am Ausgangsfile.

laut0

Wenn die Verstärkung zu hoch ist, entsteht ein sog. Clipping. Auf folgenden Bilder wird das Phänomen gezeigt.

laut3 laut6

laut9

Dateien

CD_3db

CD_6db

CD_9db

Aufgabe 1 – Sinunsschwingnung

Frequenz in Hz Dezibel Prozent
1000 -6 100

Frequenzen:

Frequenz in Hz Dezibel Dezibel normiert Prozent
1000 -4 0 100
3000 -24 -20 10
5000 -34 -30 ~3,2
7000 -40 -36 ~1,6

Frequenzen:

Frequenz in Hz Dezibel Dezibel normiert Prozent
1000 -3,5 0 100
3000 -18 -14,5 ~18,8
5000 -36 -32,5 ~2,3
7000 -47 -43,5 ~0,7

Dateien:

Verstärkt um 6 db

Verstärkt um 9 db

Verstärkt um 12 db

Effektivwertberechnung des Klirrfaktors

Der Klirrfaktor wird durch Division der Effektivwerte ohne Grundwelle und der Effektivwerte mit Grundwelle errechnet.

Effektivwertberechnung

Berechnung: 12 dB Verstärkung

Effektivwert ohne Grundwelle: 0,1882 + 0,0232 + 0,00072 = 0,035922.

Effektivwert mit Grundwelle: 12 + 0,1882 + 0,0232 + 0,00072 = 1,035922.

K = 0,316

Aufgabe 2 – Echo

Ein wichtiger Effekt in der Studiotechnik ist das Echo. Dabei wird zu einem Signal eine zeitverzögerte und in der Amplitude gedämpfte Überlagerung hinzugemischt: y(k)=x(k)+a*x(k-T)

wobei T eine ganze Zahl zwischen 1 und N sein kann.

 

Wave_io modifiziert, dass eine Verzögerung von 10ms und 200 ms entsteht.

 

Bei dem Einlesen der Dateien muss darauf geachtet werden, ob diese Stereo oder Mono sind. Wenn darauf nicht geachtet werden würde, dann wird im Stereo File nur ein >Kanal angesprochen werden und somit nicht das gewünschte Ergebnis erreicht werden.

Verzögerung

File

10 ms

cdl10.wav

200 ms

cdl200.wav

10 ms

stimmel10.wav

200 ms

Stimmel200.wav

Der entsprechende Code in der veränderten wave_io Datei:

 

//ECHO
//Echo von 10 ms bei 44100 Hz -> echo = 435
//Echo von 200 ms bei 44100 Hz -> echo = 8696
echo = 8696;
daempfung = 0.6;

new_wave = malloc(n_wace * sizeof(short));

for(i=0; i<n_wave; i++){

if (header.modus==2) {//Stereo

if ((i % 2)==0) { //links

if(i>echo) new_wave[i] += daempfung * wave[i-echo];

}
else { //rechts

if(i>echo) new_wave[i] += daempfung * wave[i-echo];

}

}
else { //Mono

if(i>echo) new_wave[i] += daempfung * wave[i-echo];

}

}
//Ende Echo

Berechnung der Verzögerungswerte
Abtastfrequenz von 44100 Hertz abgetastet entspricht Abtastung aller 1 / 44100 Sekunden,

~ alle 0,023 ms. Das bedeutet:

10 ms: 10 / 0,023 = 435 (434,78)

200 ms: 200 / 0,023 = 8696 (8695,65)

Aufgabe 3 – Einfache Filter

Auf Grund der vorgegebenen Formel wurden 2 einfache Filter erzeugt:

Filter A ist ein Tiefpassfilter (noise_tiefpass.wav)

Filter B ist ein Hochpassfilter (noise_hochpass.wav)

noise_gram

Frequenzspektrum: Original Noise.wav

Frequenzspektrum: noise_tiefpass.wav

Frequenzspektrum: noise_hochpass.wav

Code:

//ANFANG Einfaches FILTER
new_wave = malloc(n_wave * sizeof(short));
for(i=0; i<n_wave; i++){

//ANFANG Hochpassfilter
//new_wave[i] = 0.5 * wave[i] – 0.45 * wave[i-1];
//ENDE Hochpassfilter
//ANFANG Tiefpassfilter
new_wave[i] = 0.5 * wave[i] + 0.45 * wave[i-1]; //aktiviert
//ENDE Tiefpassfilter

}
//ENDE Einfaches FILTER

Kommentieren