Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

236
Digitaalisen äänenkäsittelyn perusteet Jouni Smed [email protected] syksy 2010

description

Slides (in Finnish) from the course "Fundamentals of Digital Audio Processing".

Transcript of Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Page 1: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Digitaalisen äänenkäsittelyn perusteet

Jouni [email protected]

syksy 2010

Page 2: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Yleistä

laajuus: 5 op. (3 ov.) esitiedot: Java-ohjelmoinnin perusteet luennot:

tiistaisin 10–12 salissa β torstaisin 10–12 salissa β

kurssin kotisivu: http://bit.ly/dap_10

Page 3: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Tentit 1(2)

tenttipäivät

1. joulukuussa 2010 (?)

2. tammikuussa 2011 (?)

3. helmikuussa 2011 (?) varmista tenttiaika ja -paikka

http://www.it.utu.fi/opiskelu/tentit/ muista ilmoittautua ajoissa!

Page 4: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Tentti 2(2)

kurssi on myös mahdollista suorittaa sähköisenä tenttinä tenttiluokka PharmaCityssä (1. krs) avoinna arkipäivisin klo 8–20 tenttiaika 4 h (kuten normaalissa tentissä) ajanvaraus max 30 vrk etukäteen verkoitse DÄP-tentti avoinna 29.11.2010–4.3.2011

lisätiedot ja varaukset: https://tenttis.utu.fi

Page 5: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Harjoitustyö 1(2)

vapaaehtoinen yksin tehtävä palautettava 8.12.2010 klo 14:00 mennessä

moodle-sivun kautta arvostelu

hylätty, 1–5 lineaarinen tenttibonus:

1 → ei korotusta…5 → yhden arvosanan korotus

Page 6: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Harjoitustyö 2(2)

tehtävissä Audacity-ohjelmistollasaatavana vapaasti http://audacity.sourceforge.net/

alustana Windows, Mac OS X tai Linux/Unix

tai muulla vastaavalla äänityökalullaesim. SoundForge, AdobeAudition…

Page 7: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Kurssin luentoaikatauluLuento Pvm. Aihe

1. 2.11 ti Johdanto 1(2)

2. 4.11 to Johdanto 2(2)

3. 9.11 ti Voimakkuuteen kohdistuvat operaatiot 1(2)

4. 11.11 to Voimakkuuteen kohdistuvat operaatiot 2(2)

5. 16.11 ti Taajuuteen kohdistuvat operaatiot

6. 18.11 to Aikaan ja aaltomuotoon kohdistuvat operaatiot

7. 23.11 ti Javan ääniohjelmointi 1(2)

8. 25.11 ti Javan ääniohjelmointi 2(2)

Page 8: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Tavoitteet

teoreettinen: ymmärtää äänenkäsittelyyn liittyviä käsitteitä mitä voidaan tehdä

käytännöllinen: ymmärtää operaatioiden vaikutus ääneen mitä pitää tehdä

Page 9: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Mitä ei käsitellä — ainakaan syvällisesti

äänentoistoa akustiikkaa äänittämistä musiikintekoa MIDIä signaaliprosessointia tiivistämistä tiedostoformaattien esitysmuotoa

Page 10: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Kurssin rajapinnat

DÄP

Page 11: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Sisällys 1(3)

1. Perusteita

1. Äänen fysiikkaa

2. Psykoakustiikka

3. Äänen syntetisointi

4. Samplaus ja kvantisointi

5. Tiedostoformaatit

Page 12: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Sisällys 2(3)

2. Äänenkäsittelyoperaatiot

1. Voimakkuus

2. Taajuus

3. Aika

4. Aaltomuoto

5. Operaatioiden ketjuttaminen

Page 13: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Sisällys 3(3)

3. Javan ääniohjelmointi

1. java.applet2. javax.sound.sampled

Page 14: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Lähde- ja lisämateriaalia

Curtis Roads: The Computer Music Tutorial, The MIT Press, 2000

Esa Blomberg & Ari Lepoluoto: Audiokirja, Tapiolan viestintäsuunnittelu, 1991

J. Pekka Mäkelä: Kotistudio, 2. painos, Like-kustannus, 2003

Page 15: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

1.1. Äänen fysiikkaa

ääni = väliaineessa etenevä mekaaninen värähtely (aaltoliike), joka saa aikaan kuuloaistimuksen

äänilähde väliaine havaitsija

Page 16: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Ääniaalto

p0

tihentymä(ylipaine)

harventuma(alipaine)

p

Page 17: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Aaltomuoto

jaksollinenaaltomuoto

kohina

Page 18: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Taajuus (frequency)

taajuus, f: aaltojen lukumäärä aikayksikköä kohti

yksikkö: hertsi, Hz = 1/s

t

Page 19: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Aallonpituus ja amplitudi

aallonpituus, : vastaavien pisteiden etäisyys peräkkäisissä aalloissa

amplitudi, A: värähdysliikkeen laajuus

A

Page 20: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Äänen spektri

t

A A

f

A

f

t

A

Page 21: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Vaihe (phase)

Page 22: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Äänen nopeus

v = f riippuu:

väliaineesta lämpötilasta

ilmassa: −10ºC: 325 m/s +10ºC: 337 m/s +20ºC: 343 m/s

eri väliaineissa: vesi: 1480 m/s lasi: 5200 m/s teräs: 5000–5900 m/s puu: 3000–4000 m/s CO2: 259 m/s He: 965 m/s

Page 23: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Äänen mittayksiköitä

ääniteho, Pwatti, Wmittaetäisyys 1 m

äänen intensiteetti, I = P/A teho pinta-alayksikköä kohti

äänenpaine, p = F/A: pascal, Pa = N/m2

mittaetäisyys 1 m

Page 24: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Desibeli (dB)

ilmaisee: kahden suureen keskinäistä suuruutta suureen arvoa suhteessa johonkin

vertailutasoon kahden äänitehon tai intensiteetin suhde:

L = 10 log10(I1/I0) dB

missä I0 on viitetaso

huom! mitta-asteikko on logaritminen

Page 25: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Desibeli äänen mittana

usein viitetasona käytetään ihmisen

kuulokynnystä: I0 = 10−12 W/m2

ihmisen kuuloaistimus on logaritminen3 dB:n muutos on havaittavissa10 dB:n muutos kuulostaa

äänenvoimakkuuden kaksinkertaistumiselta tai puolittumiselta

Page 26: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

1.2. Psykoakustiikka

äänihavaintoon vaikuttavatkuuloaistin fysiologiaaivojen tulkinta

Page 27: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Äänenvoimakkuuden aistinta

riippuu: äänenpaineesta taajuudesta

kuuloalue: 20 Hz–20 kHz herkimmillään 3–4 kHz:ssä

äänenvoimakkuus eli äänenpaineen taso (sound pressure level): dBSPL = 20 log10(p1/p0)

p0 = 20 Pa

Page 28: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Fletcher-Munson -käyrästö

taajuus (Hz)

ään

enpa

ine

taso

(d

B)

KUULO-KYNNYS

Page 29: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Dynamiikka-alue

-20

0

20

40

60

80

100

120

140

31,5 63 125 250 500 1 k 2 k 4 k 8 k 16 k

tuntoaistimuskipuraja

kuulokynnys

epämiellyttävyydenkynnys

ääne

npai

neta

so (

dB)

taajuus (Hz)

Page 30: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Äänenpainetasoja150140130120110100

9080706050403020100

dB

kuulokynnyskaiuton huonelehtien havina

kuiskaus (3 m)klassinen musiikki ppp

keskustelu (3 m)luento (3 m)

paineilmapora (15 m)

klassinen musiikki fff meluisa tehdas

meluisa katu

henkilöauton sisällätelevisio (3 m)

suihkukone (5 m)

hiljainen talo

myymälä

asumalähiö yöllä

kipuraja

Page 31: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Aivojen äänihavainto

tarkka äänimuisti on erittäin lyhyt: 1–2 s on helppo kuulla sitä mitä haluaa on helppo olla kuulematta epätärkeinä pidettyjä

ääniä Haasin ilmiö: useita yhtäläisiä äänilähteitä

kuunnellessa lähin määrää havaitun äänensuunnan kriittiset taajuuskaistat: ei havaita yksittäisiä

taajuuksia vaan taajuuskaistoja, joissa voimakas ääni voi peittää kaistan hiljaisemmat äänet

Page 32: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Sävelkorkeus (musical pitch)

nuotin sävelkorkeus: suhteessa taajuuteen voimakkuus voi vaikuttaa madaltavasti

standardi sävelkorkeus: 440 Hz = A oktaavi (octave) = taajuuden kaksinkertaistus

siis 220 Hz = A, 880 Hz = A jne. puolisävelaskeleen (semitone) taajuussuhde =

122:1 1,06:1

Page 33: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Nuottien taajuudetNuotti Taajuus (Hz)A 440

G# 415

G 392

F# 370

F 349

E 330

D# 311

D 294

C# 277

C (keski-C) 262

h 247

a# 233

a 220

Page 34: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Äänilähteiden taajuusalueita

Äänilähde Taajuusalue (Hz)

naislaulaja 250–1000

mieslaulaja 100–350

huilu 250–2500

fagotti 60–600

alttosaksofoni 125–650

trumpetti 200–1000

viulu 200–3500

sello 70–600

piano 30–4000

kirkkourut 15–8000

ksylofoni 700–4000

Page 35: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Sointiväri (timbre)

erottaa äänilähteet toisistaan syyt:

yläsävelet (harmonics) perustaajuuden harmonisia

monikertojaaluke (starting transients)

äänen alkaessa esiintyviä, ei-harmonisia taajuuksia

kestävät 0,01–0,2 s

Page 36: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

1.3. Äänen syntetisointi

olemassa olevien äänten jäljittely keinotekoisten äänten luonti

Page 37: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Menetelmiä

aaltomuototaulukkosynteesi (wavetable) vähentävä (subtractive) synteesi lisäävä (additive) synteesi FM-synteesi (frequency modulation)

Page 38: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Aaltomuototaulukkosynteesi

samplataan äänilähdettä eri taajuuksilla aaltomuototaulukko

mikäli haluttua taajuutta ei löydy taulusta, interpoloidaan aaltomuoto

f1 f2 f3 f4 fn

f3.5

Page 39: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Vähentävä synteesi

lähtöaaltomuodossa paljon yläsäveliä lopullinen sointiväri saadaan suodattamalla

pois taajuuksia

f f

Page 40: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Lisäävä synteesi

summataan yhteen eritaajuisia, amplitudisia ja vaiheisia siniaaltoja

Page 41: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

FM-synteesi

moduloidaan kantoaallon taajuutta toisella aallolla

muokataan lopullisen aaltomuodon amplitudia verhokäyrällä

f f

Page 42: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Ääniaaltoja

siniaalto (sine wave) kanttiaalto (square wave)

kolmioaalto (triangular wave) saha-aalto (saw wave)

valkoinen kohina (white noise)

Page 43: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

1.4. Samplaus ja kvantisointi

AD-muunnos: analogisesta digitaaliseksi DA-muunnos: digitaalisesta analogiseksi digitaalisen esitysmuodon etuja:

kopioitavuuskohinan vähyysmuokattavuus

Page 44: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Analoginen ääniketju

Levysoitin

Urat levynpinnassa

Esivahvistin

Heikko sähköinensignaali

Vahvistin

Hiemanvahvistettusignaali

Kovaääninen

Vahvistettusignaali

Ilmanpaineenvaihtelu (ääni)

Page 45: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Digitaalinen ääniketju

Vahvistin

Analoginensignaali

Kovaääninen

Vahvistettusignaali

Ilmanpaineenvaihtelu (ääni)

DA-muunnin

Digitaalinensignaali

CD-soitin

Binääri-numerot

Page 46: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

AD-muunnos

hetkellä t mikrofonin kalvon poikkeama on x(t)

kaksi ongelmaa: t:n diskretisointi: samplaus x(t):n diskretisointi: kvantisointi

kaksi approksimaatiota! x(t)

i0, i1, i2,..., im

Page 47: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Samplaus (sampling) eli näytteistys

Page 48: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Aliasointi eli liian matala samplaustaajuus

Page 49: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Nyquistin taajuus

samplausteoreema:

fs 2 · fmax

jos fmax = 20 kHz, niin fs 40 kHz

huom! taajuudet > fmax voivat silti aiheuttaa aliasointihäiriötä samplauksessaalipäästösuodatusantialiasointi

Page 50: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Kvantisointi (quantizing)

näytearvon pyöristys kokonaislukuun8 bittiä: [-128, +127] 16 bittiä: [-32768, +32767]

Page 51: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Kvantisointi ja dynamiikka

digitaalisen tallennuksen dynamiikka:

toistoalue dB:einä ≈ bittien määrä × 6,11

8-bittinen kvantisointi: 48 dB 16-bittinen kvantisointi: 96 dB 20-bittinen kvantisointi: 120 dB

Page 52: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

1.5. Tiedostoformaatit

itsensä kuvaavat (self-describing) hierarkinen rakenne sisältää tietoa esim.

samplaustaajuudestakanavien lukumäärästäkäytetty koodauksestatekijänoikeuksista

raa’at (raw) laiteparametrit ja koodaus kiinnitetty sisältää pelkkää dataa

Page 53: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Tiivistys (compression)

häviötön (lossless) koodauksen vaihto ei hukkaa informaatiota

häviöllinen (lossy) saattaa hukata informaatiota

virh

e

bittien määrä

Page 54: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Yleisiä tiedostoformaatteja 1(2)Tiedostopääte Nimi Kehittäjä(t)

.aiff, .aif Audio Interchange File Format

Apple, Electronic Arts

.au, .snd Sun Audio Sun, NeXT

.mp2, .mp3 MPEG Audio Moving Picture Experts Group

.ogg Ogg Vorbis The Ogg Project

Page 55: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Yleisiä tiedostoformaatteja 2(2)

Tiedostopääte Nimi Kehittäjä(t)

.ra, .rm Real Audio, Real Media

Real Networks

.wav Windows WAVE, RIFF WAVE

Microsoft, IBM

.wma Windows Media Audio

Microsoft

Page 56: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

2. Äänenkäsittely

1. Voimakkuus

2. Taajuus

3. Aika

4. Aaltomuoto

5. Operaatioiden ketjuttaminen

Page 57: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Operaatioesimerkkejä 1(2)

voimakkuus

taajuus

Page 58: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Operaatioesimerkkejä 2(2)

aika

aaltomuoto

Page 59: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Operaation osatekijät

operaatio

tulosignaali lähtösignaali

+

operoimaton eli ”kuiva”(dry) signaali

operoitu eli ”märkä” (wet) signaali

vahvistus (gain)

Page 60: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

2.1. Voimakkuus

1. Säätö, nosto ja häivytys2. Normalisointi3. Panorointi4. Amplitudin modulointi5. Verhokäyrä6. Kompressointi eli dynamiikan supistaminen7. Limitointi eli tason rajoittaminen8. Särö9. Ekspandointi eli dynamiikan laajentaminen10. Kohinaportti

Page 61: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Äänenvoimakkuuden operaatiot

muokkaavat ääniaallon amplitudia dynamiikka = äänenvoimakkuuden vaihtelu

Page 62: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

2.1.1. Säätö, nosto ja häivytys

nosto (fade in) häivytys (fade out)

säätö (control)

Page 63: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

2.1.2. Normalisointi

engl. normalizing huippuarvo (maximum peak value) RMS (root mean square) eli tehollisarvo

Page 64: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

2.1.3. Panorointi

engl. pan äänikanavien välisen voimakkuuden

säätäminen tasapainotus eli balanssointi (balance)

Page 65: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

2.1.4. Amplitudin modulointi

Page 66: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

0t

2.1.5. Verhokäyrä

engl. envelope ADSR-verhokäyrä:

kesto(decay)

päästö(release)

pito(sustain)

pitotaso

aluke(attack)

huippu-taso

Page 67: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Verhokäyräesimerkki

Page 68: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

2.1.6. Kompressointi eli dynamiikan rajoittaminen

engl. compressing kun tulosignaalin voimakkuus ylittää

annetun kynnystason, tulosignaalin nousu aiheuttaa lähtösignaalissa pienemmän nousun

äänten keskinäinen voimakkusero pienenee huom! compressing ≠ compression

kyse ei ole siis äänidatan tiivistämisestä!

Page 69: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Perusparametreja

kompressiosuhde (compression ratio): tulosignaalin nousu:lähtösignaalin nousuesim. 3:1 = 3 dB:n nousu tulosignaalissa

nostaa 1 dB lähtösignaalia kynnystaso (threshold level): taso jonka

yläpuolella kompressointi alkaa vaikuttaa

Page 70: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Kompressointi

2

4

6

8

10

12

14

2 4 6 8 10 12 14

1:1

2:1

4:18:1:1

kynnystaso

tulo (dB)

lähtö (dB)

Page 71: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Lisäparametreja

tartunta-aika (attack time): aika joka kuluu kynnystason ylityksestä täyteen kompressointiin

päästöaika (release time): aika jossa kynnystason alitus palauttaa signaalin normaaliksi

Page 72: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Kompressointi ja aaltomuoto

alkuperäinen ääni kompressoitu ääni

kompressoitu ja vahvistettu ääni

Page 73: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Käyttötapoja

instrumentin (esim. basso) ”tukevoittaminen”, jolloin se saadaan helpommin esiin muiden äänten seasta

kompressoitu taustamusiikki voidaan miksata voimakkaammaksi ilman että se peittäisi puhetta

kohinan peitto (esim. radiolähetyksissä tai tallennuksessa)

Page 74: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

2.1.7. Limitointi eli tason rajoittaminen

engl. limiting estää signaalin voimakkuuden nousun

annettua tasoa suuremmaksi kompressoinnin erikoistapaus:

kompressiosuhde :1

Page 75: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

engl. distortion syntyy signaalin leikkautuessa:

muuttaa sointiväriä

2.1.8. Särö

leikkaustaso

alkuperäinen signaali

kova leikkaus pehmeä leikkaus

Page 76: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

2.1.9. Ekspandointi eli dynamiikan laajentaminen

engl. expanding kun tulosignaalin voimakkuus alittaa

annetun kynnystason, tulosignaalin lasku aiheuttaa lähtösignaalissa suuremman laskun

Page 77: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Parametreja

ekspansiosuhde (expansion ratio): tulosignaalin lasku:lähtösignaalin lasku esim. 1:3 = 1 dB:n lasku tulosignaalissa laskee

3 dB lähtösignaalia kynnystaso (threshold level): taso jonka

alapuolella ekspandointi alkaa vaikuttaa tartunta-aika (attack time): aika jossa kynnystason

ylitys palauttaa signaalin normaaliksi päästöaika (release time): aika joka kuluu

kynnystason alituksesta täyteen ekspandointiin

Page 78: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Ekspandointi

2

4

6

8

10

12

14

2 4 6 8 10 12 14

1:1

1:21:3 1:

kynnystaso

tulo (dB)

lähtö (dB)

Page 79: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Ekspandointi ja aaltomuoto

alkuperäinen ääni ekspandoitu ääni

Page 80: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Kompandointi 1(2)

alkuperäinen ääni kompressoitu ja vahvistettu ääni

kohina tallennettu ääni

Page 81: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Kompandointi 2(2)

alkuperäinen ääni

ekspandoitu äänitallennettu ääni

Page 82: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

2.1.10. Kohinaportti

engl. noise gate ekspandoinnin erikoistapaus:

ekspansiosuhde 1:

Page 83: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Kohinaportin toiminta

portti aukeaa portti sulkeutuu

kohinaa

kynnystaso

t

sign

aalit

aso

Page 84: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Parametreja

kynnystaso (threshold level): taso jonka alapuolella kohinaportti sulkeutuu

tartunta-aika (attack time): aika joka kuluu kynnystason ylityksestä kohinaportin avautumiseen

pitoaika (hold time): aika jonka kohinaportti pysyy auki kynnystason alituksen jälkeen

päästöaika (release time): aika jossa kohinaportti sulkeutuu

Page 85: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Parametrisoidun kohinaportin toiminta

kohinaa

kynnystaso

t

sign

aalit

aso

portti alkaa aueta

portti täysin auki

portti sulkeutuusignaali on allekynnystason

portti pysyy aukikunnes pitoaika onkulunut

pito

aika

Page 86: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

2.2. Taajuus

1. Äänenkorkeuden muuttaminen

2. Vibraatto

3. Ekvalisointi eli taajuuskorjaus

4. Taajuussuodatus

Page 87: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

2.2.1. Äänenkorkeuden muutos

engl. pitch shift, pitch transpose muutetaan alkuperäisen signaalin taajuutta menetelmät:

keston muuttavanosto nopeuttaa, lasku hidastaalaskennallisesti yksinkertainen

keston säilyttävälaskennallisesti monimutkainen

Page 88: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

t

Esimerkki: keston muuttava äänenkorkeuden nosto

t

Page 89: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Esimerkki: keston muuttava äänenkorkeuden lasku

t

t

Page 90: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Esimerkki: keston säilyttävä äänenkorkeuden nosto

f

A

f

A

f

Page 91: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

2.2.2. Vibraatto

taajuusmodulointia (FM, frequency modulation)

Page 92: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Modulointitaajuus

< 8 Hz vibraatto > 20 Hz äänenvärin muutos sivukaistat (sidebands), c = kantoaallon

taajuus, m = modulointitaajuus:

f

A

cc - 4m c - mc - 2mc - 3m c + m c + 2m c + 3m c + 4m

m m

Page 93: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

2.2.3. Ekvalisointi eli taajuuskorjaus

engl. equalizing, EQ muokkaa taajuusjakaumaa ja siten

äänenväriä jakaa taajuskaistan osiin joita voidaan

korostaa tai vaimentaa

Page 94: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Yksinkertainen taajuuskorjain

f

A

basso(bass)

diskantti(treble)

korostus

vaimennus

Page 95: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Termejä

f

A

kaistanleveys(bandwidth)

keskitaajuus(center frequency)

3 dB

Q-arvo =keskitaajuuskaistanleveys

Page 96: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Taajuuskorjaintyyppejä

graafinen taajuuskorjain (graphic equalizer) parametrinen taajuuskorjain (parametric

equalizer) puoliparametrinen taajuuskorjain

(semiparametric equalizer, quasiparametric equalizer)

Page 97: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Graafinen taajuuskorjain

taajuuskaista jaettu kiinteisiin osiin, joita voidaan korostaa tai vaimentaa

korjainten tiheys:oktaavisuodatin (octave filter):

fn = 2 · fn-1

terssisuodatin (third octave filter): oktaavin kolmasosa

myös muita jakoja ja eri jakojen yhdistelmiä

Page 98: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Esimerkki: taajuuskaistajako

f

A

0

f1 f2 f3 f4 f5

Page 99: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Esimerkkisäätöjäcl

assi

cal

danc

e

rock

pop

larg

e ha

ll

live

f { 60 Hz, 170 Hz, 310 Hz, 600 Hz, 1 kHz, 3 kHz, 6 kHz, 12 kHz, 14 kHz, 16 kHz }

Page 100: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Parametrinen taajuuskorjain

mahdollistaa keskitaajuuden ja kaistanleveyden säädön

jompikumpi säätö on kiinnitetty puoliparametrinen taajuuskorjain

f

A

Page 101: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Parametrinen taajuuskorjain

f

A

keskitaajuus

kaistanleveys

korostus

vaimennus

Page 102: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Subjektiivisia luonnehdintojaHz Taajuusalue Positiivinen

korrelaatioNegatiivinen korrelaatio

20–200 bassotaajuudet jykevyys, potku puuroisuus, kumisevuus

200–500 alemmat keskitaajuudet

täyteläisyys epäselvyys

500–1 500 keskitaajuudet napakkuus peltilaatikkomaisuus

1 500–4 000 ylemmät keskitaajuudet

selkeys, läsnäolon tuntu

rasittavuus, hermostuttavuus

4 000–10 000 diskantti särmä, heleys, kirkkaus

sihinä

10 000–20 000

ylin diskantti erottelevuus, ilmavuus

ohuus

Page 103: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Vinkkejä

keskitaajuudet tärkein alue taustan keskitaajuuksia vaimentamalla

ihmisääni nousee paremmin esiin vaimentaminen on usein parempaa kuin

vahvistaminen ( särö) huminan poisto: vaimenna pois 50 Hz:n

taajuusalue ”päällekkäisten” instrumenttien erottelu:

yhtäsuuret mutta vastakkaiset vahvistukset

Page 104: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

2.2.4. Taajuussuodatus

engl. band filtering vaimentaa osan tai osia taajuusalueesta suodatintyyppejä:

alipäästösuodatin (low pass filter) ylipäästösuodatin (high pass filter) kaistanestosuodatin (band rejection filter)

imusuodatin eli kapea kaistanestosuodatin (notch filter)

kaistanpäästösuodatin (band pass filter)

Page 105: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Parametreja

rajataajuus fc (cutoff frequency) jyrkkyys (slope) resonanssi (resonance)

rajataajuuden lähialueen korostaminen

f

A

fc

Page 106: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Taajuussuodattimia

f

A

alipäästö f

A

ylipäästö

f

A

kaistanpäästö f

A

kaistanesto

Page 107: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Wahwah-efekti

rajataajuuden modulointia

f

A

fcfc - m

m

fc + m

m

Page 108: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

2.3. Aika

1. Kaiku

2. Kuoroefekti

3. Vaiheistus ja flanger-efekti

4. Kaiunta

5. Nopeutus ja hidastus

Page 109: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Viivästyttäminen (delay)

viiveaika0–20 ms: vaiheistus (phasing) ja flanger-

efekti (flanging)20–50 ms: kuoroefekti (chorus)>50 ms: aito kaiku (echo)

viiveajan modulointi takaisinsyöttö (feedback)

Page 110: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

2.3.1. Kaiku

slapback-kaiku viive 25–50 ms

kahdennus (doubling) viive kymmeniä millisekunteja

stereoefektin laajentaminen alkuperäinen ja viivästetty signaali eri kanaviin

kaanon viive temmon mukaan

Page 111: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

2.3.2. Kuoroefekti

moduloitu viive (>15 ms) peruskuoroefekti

viive 20 ms ei takaisinsyöttöä tasamäärä signaaleja hieman viiveajan modulointia

ADT-efekti (automatic double tracking) viive 30–40 ms vähän viiveajan modulaatiota

Page 112: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

2.3.3. Vaiheistus ja flanger-efekti

vaiheistus (phasing) lyhyt viiveaika (<10 ms)vähän takaisinsyöttöäei viiveajan modulointia tasamäärä signaaleja

kampasuodatinilmiö (comb filter effect)

Page 113: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Kampasuodatinilmiö

A

f

Page 114: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Flanger-efekti

flanger-efekti (flanging) lyhyt viive (<50 ms)moduloidaan viivettä kampasuodatin liikkuu edestakaisin taajuusalueen yli

Page 115: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

2.3.4. Kaiunta

engl. reverb(eration) jäljittelee tilan akustiikasta syntyvää

jälkikaiuntaa tekee äänestä luonnollisemman kuuloista

1000–3000 erillistä kaikua/s

Page 116: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Äänen ajallinen jaottelu

suora ääni ensiheijastumat

seinät, lattia, katto20–200 ms

jälkikaiunta: kaiut tihenevät vaimentuvatmataloituvat

Page 117: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Kaiunta tilassa

Page 118: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Kaiunnan osat

t

A

ensiheijastumat(early reflections)

jälkikaiunta(reverberation)

esiviive(predelay)

ensiheijastumienkesto

jälkikaiunnankesto (decay)

heräteääni(impulse)

Page 119: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Perusparametreja

tilan koko (volume) tilan tyyppi (type) äänilähteen sijainti havainnoijan sijainti

Page 120: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Kaiuntatilatyyppejä 1(2)

kirkas (bright)pinnat heijastavat ääntäesim. kylpyhuone, tyhjä luentosali

vaimentava (damping)pinnat absorboivat ääntäesim. vaatekomero, täysi luentosali

Page 121: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Kaiuntatilatyyppejä 2(2)

todelliset akustiset tilat, esim.huone (room)halli (hall)kammio (chamber)

mekaaniset kaiuntalaitteet jousikaiunta (spring reverb) levykaiunta (plate reverb)

Page 122: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Parametreja 1(2)

ensiheijastusten voimakkuus ja viivevoimakkuus: heijastuspinnan materiaaliviive: tilan koko

< 5 ms: pieni huone10–20 ms: konserttisali

ensiheijastusten määrä ja tiheys (diffusion)mitä enemmän heijastavia pintoja, sitä

enemmän diffuusiota

Page 123: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Parametreja 2(2)

korkeiden taajuuksien vaimeneminen riippuu heijastuspintojen materiaalista

jälkikaiunta-aika (reverberation time, RT)RT60: aika jossa jälkikaiunta on

vaimentunut 60 dBhuonetiloissa lyhyt (1–3 s) käytävissä ja luolissa pitkä (5–10 s)

Page 124: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Portitettu kaiunta (gated reverb)

t

A

kohinaportinkynnystaso

Page 125: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Käänteinen kaiunta (reverse reverb)

t

A

Page 126: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

2.3.5. Nopeutus ja hidastus

engl. time scaling, time strecth menetelmät samoja kuin keston

säilyttävässä äänenkorkeuden muutoksessa eri algoritmeja erityyppisille äänille 75–115 %:n keston muutokset melko

häiriöttömiä suuret muutokset alttiita häiriöille (esim.

kaiku, pätkintä)

Page 127: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

2.4. Aaltomuoto

1. Uudelleensamplaus

2. Uudelleenkvantisointi

3. Perustason korjaus

4. Aaltomuodon kääntäminen

5. Aaltomuoden invertointi

6. Aaltomuodon muokkaus

7. Miksaus

Page 128: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

2.4.1. Uudelleensamplaus

engl. resampling näytearvojen interpolointi: poistettujen

arvojen paikkaus tai uusien mukauttaminen antialiasointi (anti-aliasing): estää

Nyquistin taajuuden ylittävien taajuuksien muuttumisen häiriöksi

Page 129: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Esimerkki: uudelleensamplaus alaspäin

t

A

Page 130: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Esimerkki: uudelleensamplaus ylöspäin

t

A

Page 131: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

2.4.2. Uudelleenkvantisointi

engl. requantization dither-prosessointi (dithering): generoidaan

kohinaa, joka kompensoi kvantisoinnissa syntyvää informaatiohukkaakohina ”heittelee” bittejä

kvantisointirajan kummallekin puolelle

Page 132: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Esimerkki: uudelleenkvantisointi

A

t

Page 133: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

2.4.3. Perustason korjaus

Page 134: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

2.4.4. Aaltomuodon kääntäminen

Page 135: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

2.4.5. Aaltomuodon invertointi

Page 136: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

2.4.6. Häiriönpoisto

rapinanpoisto (click removal) tasataan signaalin äkkinäisiä piikkejä

kohinanpoisto (noise removal)otetaan näyte taustakohinastapoistetaan kohina signaalistasaattaa synnyttää uusia häiriöitä

Page 137: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

2.4.7. Aaltomuodon muokkaus

leikepöytä leikkaa, kopioi, liitä

alueiden poistaminen trimmaus

hiljaisuuden lisääminen

Page 138: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

2.4.7. Miksaus

miksaus (mixing)kahden äänilähteen yhdistäminen

ristivaihto (crossfade)yhden äänilähteen (lineaarinen) vaihto

toiseksi

Page 139: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

2.5. Operaatioiden ketjuttaminen

operaatioiden suoritusjärjestys vaikuttaa lopputulokseen, esim. kompressointi saattaa nostaa esiin muiden

operaatioiden luomaa kohinaa kaiunta muuttaa sekä taajuusjakaumaa että

dynamiikkaa yleisohje: kompressointi taajuuskorjaus särö

taajuuskorjaus kuoroefekti kohinaportti kaiunta

parasta kuitenkin pitää korvat auki ja tehdä operaatiot siinä järjestyksessä mikä kuulostaa parhaalta

Page 140: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

3. Javan ääniohjelmointi

1. java.applet2. javax.sound.sampled

Page 141: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

3.1. java.applet

tarjoaa yleisen, yksinkertaisen ja laitteistoriippumattoman äänipalvelun

käytettävissä: appleteissa (JDK 1.0)sovelluksissa (JDK 1.2)

tukee ääniformaatteja AIFF, AU, WAV, MIDI, RMF

Page 142: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Applet-luokan äänimetodeja

void play(URL url) void play(URL url, String name) AudioClip getAudioClip(URL url) AudioClip getAudioClip(URL url,

String name) static AudioClip newAudioClip(URL

url)

Page 143: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Muita esille tulevia Applet-metodeja

void init() void start() void stop() URL getCodeBase() void showStatus(String msg) String getParameter(String name)

Page 144: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

AudioClip-rajapinta

metodit yksittäistoistoon, silmukointiin ja pysäyttämiseen

interface AudioClip { public void play(); public void loop(); public void stop();}

Page 145: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

URL-luokka

sijaitsee pakkauksessa java.net getCodeBase-metodilla saadaan appletin

perusosoite, johon lisätään äänitiedoston nimi

osoite luodaan URL-luokan konstruktorillapublic URL(String spec)

throws MalformedURLException poikkeus on käsiteltävä

Page 146: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

SimpleAudioApplet.java 1(3)

import java.applet.*;import java.net.*;

public class SimpleAudioApplet extends Applet {

private AudioClip sound = null;

Page 147: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

SimpleAudioApplet.java 2(3)

public void init() { try { URL sf = new URL(getCodeBase() + "sound.wav"); sound = getAudioClip(sf); } catch (MalformedURLException e) { showStatus("Cannot load the " + "audio file."); } // try } // init()

Page 148: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

SimpleAudioApplet.java 3(3)

public void start() { if (sound != null) sound.play(); } // start()} // class

Page 149: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

SimpleAudioApplet.html

... <appletcode="SimpleAudioApplet.class"width=300 height=300>Your browser doesn't support applets.</applet>...

Page 150: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Appletin elinkaari

applettiolio luodaan appletti alustetaan kutsumalla init-metodia appletin suoritus aloitetaan kutsumalla start-

metodia jos appletista poistutaan (esim. vaihdetaan sivua,

minimoidaan selain), kutsutaan stop-metodia kun applettiin palataan takaisin, kutsutaan start-

metodia appettioliota poistettaessa kutsutaan finalize-

metodia

Page 151: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

BackgroundMusicApplet.java 1(2)

public void init() { String name = getParameter("BG_MUSIC"); try { String base = getCodeBase() + "snd/"; sound = getAudioClip(new URL(base + name)); } catch (MalformedURLException e) { showStatus("Cannot load audio file ” + name + "."); } // try} // init()

Page 152: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

BackgroundMusicApplet.java 2(2)

public void start() { if (sound != null) sound.loop();} // start()

public void stop() { if (sound != null) sound.stop();} // stop()

Page 153: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

BackgroundMusicApplet.html

...<appletcode="BackgroundMusicApplet.class"width=300 height=300><param name="BG_MUSIC" value="muzak.wav">Your browser doesn't support applets.</applet>...

Page 154: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Säikeistä

jos äänitiedostot ovat pitkiä, niiden lataaminen kannattaa siirtää taustalle omaan säikeeseen

appletti voi aloittaa suorituksensa heti, eikä sen tarvitse odottaa äänitiedostojen latautumista

säieolio periytyy joko Thread-luokasta tai se toteuttaa Runnable-rajapinnan

Page 155: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

AudioApplet.java 1(6)

base = getCodeBase() + "sounds/";for (int i = 0; i < sounds.length; i++) { String fileName = getParameter("SOUND" + i); if (fileName != null) { AudioLoader audioLoader = new AudioLoader(fileName, i); audioLoader.start(); } // if

Page 156: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

AudioApplet.java 2(6)

for (int i = 0; i < sounds.length; i++) { Button button = new Button("Sound " + i); button.addActionListener( new ButtonPress(i)); add(button);} // for

Page 157: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

AudioApplet.java 3(6)

public void stop() { for (int i = 0; i < sounds.length; i++) if (sounds[i] != null) sounds[i].stop();} // stop() 

Page 158: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

AudioApplet.java 4(6)

private class AudioLoader extends Thread { private String fileName; private int finger;

public AudioLoader(String n, int f) { setDaemon(true); fileName = n; finger = f; } // constructor

Page 159: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

AudioApplet.java 5(6)

public void run() { try { sounds[finger] = getAudioClip( new URL(base + fileName)); } catch (MalformedURLException e) { showStatus("Cannot load file " + fileName + "."); } // try } // run()} // class

Page 160: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

AudioApplet.java 6(6)

private class ButtonPress implements ActionListener { private int soundNumber;

public ButtonPress(int s) { soundNumber = s; } // constructor

public void actionPerformed(ActionEvent e) { AudioClip sound = sounds[soundNumber]; if (sound != null) sound.play(); } // actionPerformed() } // class

Page 161: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

AudioApplet.html

...<applet code="AudioApplet.class"width=500 height=100><param name="SOUND0"

value="music0.wav"><param name="SOUND1"

value="music1.wav"><param name="SOUND2"

value="music2.wav">...<param name="SOUND5"

value="music5.wav">Your browser doesn't support applets.</applet>...

Page 162: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Jar-tiedostot

useista luokkatiedostoista koostuvat appletit on syytä koota yhdeksi jar-tiedostoksi

vältetään useiden pienten tiedostojen lataaminen

esim. jar cvf AudioApplet.jar *.class

Page 163: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

JarredAudioApplet.html

...<applet code="AudioApplet.class" archive="AudioApplet.jar" width=500 height=100><param name="SOUND0"

value="music0.wav">...<param name="SOUND5"

value="music5.wav">Your browser doesn't support applets.</applet>...

Page 164: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Applet-metodien käyttö sovelluksissa

staattinen metodi newAudioClip palauttaa AudioClip-olionhuom. parametriksi annetaan URL-olio

eikä esim. tiedostokahvavinkki: sovelluksen oletushakemiston

polun saa metodikutsulla System.getProperty("user.dir")

saatua AudioClip-oliota voidaan käyttää normaalisti

Page 165: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

AudioApplication.java 1(3)

public class AudioApplication { public static void main(String[] args) { AudioClip[] sounds = new AudioClip[args.length]; String base = "file:" + System.getProperty("user.dir") + "/"; 

Page 166: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

AudioApplication.java 2(3)

for (int i = 0; i < args.length; i++) { try { sounds[i] = Applet.newAudioClip( new URL(base + args[i])); } catch (MalformedURLException e) { throw new RuntimeException( "Cannot load audio file " + args[i] + "."); } // try} // for 

Page 167: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

AudioApplication.java 3(3)

for (int i = 0; i < sounds.length; i++) { sounds[i].loop(); } // for } // main()} // class

Page 168: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

3.2. javax.sound.sampled

mukana JDK-versiosta 1.3 alkaen tarjoaa matalan tason liittymän alustan

äänilaitteistoon (myös havainnointi) pyrkii silti olemaan alustariippumaton ja

yleistettävissä oleva rakennelma mahdollistaa äänisignaalin

vastaanottamisen (esim. äänitys) käsittelyn (esim. vahvistus tai kaiunta) toistamisen

Page 169: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Pakkaukset

javax.sound.sampled rajapintoja ja luokkia samplatun äänisignaalin

tallennukseen, muokkaamiseen ja toistoon javax.sound.midi

rajapintoja ja luokkia MIDI-käyttöön javax.sound.sampled.spi javax.sound.midi.spi

ulkopuolisille palveluntarjoajille (service providers) tarkoitettuja apuluokkia

Page 170: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Piirteitä

pähkinänkuoressa: äänidataa sisältävien tavujen lukua, kirjoitusta ja operointia

liittymät syöttö- (esim. mikrofoni tai tiedosto) ja tuloslaitteisiin (esim. kaiutin tai tiedosto)

äänidatan puskurointi (esim. reaaliaikainen äänivirta)

äänisignaaleiden yhdistäminen käyttäjän komennot: aloita, pysäytä, jatka, lopeta

Page 171: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Äänidatan käsittelytavat

puskuroitu (buffered) virta (streaming): reaaliaikaisen äänidatan

käsittelyä operoitava (esim. äänitettävä tai käsiteltävä)

tavuja likimain samassa tahdissa kuin missä niitä lähetetään

puskuroimaton (unbuffered) äänidata sijaitsee (kokonaisuudessaan)

muistissa monipuolisempi toisto: silmukointi,

aloituspaikan valinta

Page 172: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Äänidatan formaatit 1(2)

dataformaattikertoo kuinka sarja tavuja eli ”raaka”

samplattu äänidata pitää tulkitaAudioFormat-luokka

tiedostoformaattimäärittelee äänitiedoston rakenteen AudioFileFormat-luokka

Page 173: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Äänidatan formaatit 2(2)

vaikka tarjolla on metodeja erilaisten ääniformaattien muuttamiseenyleisten tiedostoformaattien lukemiseen

ja tallentamiseen kyse ei silti ole kaikenkattavasta

äänityökalustapalveluntarjoajilta tukea ja täydennystä

valikoimaan

Page 174: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

AudioFormat-luokka

koodaustekniikka (esim. PCM, a-law tai -law) kanavien määrä (1 = mono, 2 = stereo jne.) samplaustaajuus kvantisointitaso (so. käytettyjen bittien määrä) kehystaajuus (frame rate)

kehys (frame) = kaikki tiettyyn hetkeen kuuluva data; (esim. kanavien nykyiset näytearvot)

kehyksen koko tavuina tavujärjestys: big-endian tai little-endian

Page 175: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

AudioFileFormat-luokka

tiedostotyyppi (esim. WAVE, AIFF) tiedoston pituus tavuina äänidatan pituus kehyksinä AudioFormat-olio, joka määrittelee

tiedoston sisältämän äänidatan muodon

Page 176: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Java Sound -perusosat

äänijärjestelmä: AudioSystem mikseri: Mixer linja: Line portti: Port

Page 177: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Perusrakenne

lähdelinjat

kohdelinjat

lähdelinjat

kohdelinjatmikserit

Line

AudioSystem

Mixer

Page 178: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Analogia: miksauspöytä

tulosignaalin säätö

taajuuskorjaus

kaiunnan lähtö

panorointi

vahvistus

tulosignaalit lähtösignaali

lähtösignaalinvahvistus

kaiunta-laite

kaiunnanpaluu

Page 179: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Äänijärjestelmä (audio system)

kokoaa yhteen kaikki laitteiston ja ohjelmiston tarjoamat äänipalvelut:mikserit linjatportitäänivirrat tiedostoformaatitääniformaatit

Page 180: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

AudioSystem-luokan metodeita

static Mixer.Info[] getMixerInfo() static Mixer getMixer(Mixer.Info info) static Line getLine(Line.Info info) static AudioFileFormat

getAudioFileFormat(File file) static AudioInputStream

getAudioInputStream(File file)

Page 181: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Mikseri (mixer)

abstrahoi äänilaitetta (audio device), esim. äänikortti

saa syötteenä yhden tai useamman äänivirran ja antaa tulokseksi yhden tai useamman äänivirran esim. miksaa kaksi ääntä (syöte) yhdeksi

ääneksi (tulos) voi tukea äänten synkronointia

voi edustaa fyysistä laittetta tai sen ominaisuutta voi edustaa kokonaan ohjelmistolla toteutettua

ominaisuutta

Page 182: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Mixer-rajapinnan metodeita

Line.Info[] getSourceLines() Line.Info[] getTargetLines() Line getLine(Line.Info info) void synchronize(Line[] lines,

boolean maintainSync)

Page 183: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Linja (line)

johtaa joko sisään äänijärjestelmään (tai mikseriin) tai siitä ulos

voi sisältää rinnakkaisia kanavia (mono, stereo) tila: avoin tai suljettu tapahtumat

viestien välitys rekisteröityneille kuuntelijoille voi sisältää säätöjä, esim. vahvistus, panorointi,

kaiunta, toistotaajuus, mykistys mikserit ja portit ovat linjoja periytyminen

Page 184: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Line-rajapinnan metodeja

void open() void close() void addLineListener(LineListener

listener) Control[] getControls() Control getControl(Control.Type control)

Page 185: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Portti (port)

abstrahoi laitteistotason liittymiä äänijärjestelmään, esim. mikrofoni tai kaiutin

Page 186: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Rajapintojen periytymishierarkia

Line

Port Mixer DataLine

SourceDataLine TargetDataLine Clip

Page 187: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Datalinja

assosioi linjan tiettyyn ääniformaattiin puskuroitu: tavuvektori käynnistys ja pysäytys nykyinen sijainti (media position) taso (level): tämänhetkisen signaalin amplitudi tyhjennys (flush): poistaa prosessoimattoman

datan puskuri valutus (drain): odottaa kunnes kaikki

prosessoimaton data on saatu käsiteltyä aktiivisuus: onko linjassa signaalia

Page 188: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

DataLine-rajapinnan metodeja

AudioFormat getFormat() int getBufferSize() void start() void stop() int getFramePosition() float getLevel() void flush() void drain() boolean isActive()

Page 189: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Kohdedatalinja

linja josta voidaan lukea dataa mikseri voi toimittaa linjaan dataa esim.

mikrofonista äänitys huom. linja on kohde (target) mikserin

näkökulmasta

Page 190: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Esimerkki: äänitys

TargetDataLine

Mixer

portteja

vahvistus panorointi

Page 191: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

TargetDataLine-rajapinnan metodeja

void open(AudioFormat format) int read(byte[] b, int off, int len)

Page 192: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Lähdedatalinja

linja johon voidaan kirjoittaa dataa mikseri voi toimittaa kirjoitetun datan esim.

kaiuttimiin toisto huom. linja on lähde (source) mikserin

näkökulmasta

Page 193: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

SourceDataLine-rajapinnan metodeja

void open(AudioFormat format) int write(byte[] b, int off, int len)

Page 194: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Pätkä (clip)

linja johon voidaan ladata dataa ennen toistoa

äänidatan pituus tunnetaan ennen toistoa aloituspaikka voidaan valita vapaasti

toistoa voidaan silmukoida

Page 195: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Esimerkki: toisto

Clip

SourceDataLine

SourceDataLine

Mixer

portteja

kaiunta vahvistus panorointi

Page 196: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Clip-rajapinnan metodeja

void open(AudioInputStream stream) int getFrameLength() long getMicrosecondLength() void setFramePosition(int frames) void setMicrosecondPosition(long

milliseconds) void loop(int count) void setLoopPoints(int start, int end)

Page 197: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Mikserin haku

Mixer.Info-olio sisältää mikserin kuvauksen

pyydetään äänijärjestelmältä lista mikserikuvauksia getMixerInfo-metodilla

valitaan listasta sopiva ja pyydetään sitä getMixer-metodilla

Page 198: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Linjan haku

Line.Info-olio sisältää linjan kuvauksen pyydetään äänijärjestelmältä tai mikserilta

annettua kuvausta vastaava linja getLine-metodilla

käsiteltävä poikkeus LineUnavailableException

porttia tai datalinjaa pyydetään vastaavalla tavalla Port.Info- ja DataLine.Info-olioilla

Page 199: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

AudioSystemTest.java 1(2)

import javax.sound.sampled.*; public class AudioSystemTest {

public static void main(String[] args) { Mixer.Info[] mi = AudioSystem.getMixerInfo();

for (int i = 0; i < mi.length; i++) { System.out.println(mi[i]); Mixer m = AudioSystem.getMixer(mi[i]);

Page 200: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

AudioSystemTest.java 2(2)

Line.Info[] sli = m.getSourceLineInfo(); for (int j = 0; j < sli.length; j++) System.out.println("source: " + sli[j]);  Line.Info[] tli = m.getTargetLineInfo(); for (int j = 0; j < tli.length; j++) System.out.println("target: " + tli[j]); System.out.println();} } }

Page 201: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Äänivirran haku

pyydetään äänijärjestelmältä AudioInputStream-olio kutsumalla getAudioInputStream-metodia

parametri voi olla File-, URL- tai InputStream-olio

käsiteltävä poikkeukset UnsupportedAudioFileException ja IOException

Page 202: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

SimplePlayer.java 1(5)

import java.io.*;import javax.sound.sampled.*; public class SimplePlayer {

public static void main(String[] args) { if (args.length == 0) System.exit(0); File file = new File(args[0]); int loopCount = 0;

Page 203: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

SimplePlayer.java 2(5)

if (args.length > 1 && args[1].equals("loop")) { if (args.length > 2) { try { loopCount = Integer.parseInt(args[2]) - 1; } catch (NumberFormatException e) { System.err.println("Ei kokonaisluku: ” + args[2]); System.exit(1); } } else loopCount = Clip.LOOP_CONTINUOUSLY;} // if

Page 204: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

SimplePlayer.java 3(5)

try { AudioInputStream source = AudioSystem.getAudioInputStream(file); AudioFormat format = source.getFormat();

DataLine.Info info = new DataLine.Info(Clip.class, format);

if (!AudioSystem.isLineSupported(info)) { System.err.println("Ei sopivaa linjaa."); System.exit(1); }

Page 205: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

SimplePlayer.java 4(5)

try { Clip clip = (Clip)AudioSystem.getLine(info); clip.open(source);

if (loopCount == 0) clip.start(); else clip.loop(loopCount);} catch (LineUnavailableException e) { System.err.println("Linjaa ei voi käyttää.");}

Page 206: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

SimplePlayer.java 5(5)

} catch (IOException e) { System.err.println( "Virhe tiedoston luvussa."); } catch (UnsupportedAudioFileException e) { System.err.println( "Tuntematon tiedostoformaatti."); } // try } // main()} // class

Page 207: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Linjan kuuntelija

kuuntelija toteuttaa LineListener-rajapinnan

kuuntelija liitetään linjaan addLineListener-metodilla

rajapinnan update-metodi saa parametrina LineEvent-olion, jolta voi tiedustella tapahtuman tyyppiä

LineEvent.Type-tapahtumatyyppejä: OPEN, CLOSE, START, STOP

Page 208: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

RandomSequencePlayer.java 1(5)

public class RandomSequencePlayer { private Random random = new Random(); private Clip[] clips; public RandomSequencePlayer(File[] files) { try { AudioInputStream[] sources = new AudioInputStream[files.length]; AudioFormat[] formats = new AudioFormat[files.length]; DataLine.Info[] infos = new DataLine.Info[files.length];

Page 209: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

RandomSequencePlayer.java 2(5)

for (int i = 0; i < sources.length; i++) { sources[i] = AudioSystem.getAudioInputStream(files[i]); formats[i] = sources[i].getFormat(); infos[i] = new DataLine.Info(Clip.class, formats[i]); if (!AudioSystem.isLineSupported(infos[i])) { System.err.println("Ei sopivaa linjaa.");

System.exit(1); } // if} // for

Page 210: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

RandomSequencePlayer.java 3(5)

try { clips = new Clip[sources.length]; for (int i = 0; i < clips.length; i++) { clips[i] = (Clip)AudioSystem.getLine(infos[i]); clips[i].addLineListener(new Changer()); clips[i].open(sources[i]); }} catch (LineUnavailableException e) { System.err.println("Linjaa ei voi käyttää.");}

Page 211: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

RandomSequencePlayer.java 4(5)

public void startRandomClip() { int finger = random.nextInt(clips.length); clips[finger].setFramePosition(0); clips[finger].start();}

public static void main(String[] args) { File[] files = new File[args.length]; for (int i = 0; i < files.length; i++) files[i] = new File(args[i]); RandomSequencePlayer rsp = new RandomSequencePlayer(files); rsp.startRandomClip();}

Page 212: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

RandomSequencePlayer.java 5(5)

private class Changer implements LineListener {

public void update(LineEvent e) { if (e.getType().equals(LineEvent.Type.START)) System.out.println("New clip started."); if (e.getType().equals(LineEvent.Type.STOP)) startRandomClip(); }}

Page 213: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Lähdedatalinjan käyttö

varataan puskuriksi byte-taulukko puskurin koko

lyhyt: nopeampi vaste, katkosten riski pitkä: hitaampi vaste, sietää katkoksia

write-metodin kutsu aloittaa toiston (mm. lähettää kuuntelijalle aloitusviestin)

drain-metodi odottaa, kunnes kaikki kirjoitettu data on toistettu

flush-metodi poistaa kirjoitetun datan

Page 214: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

SynthPlayer.java 1(5)

import java.io.*;import java.util.*;import javax.sound.sampled.*; public class SynthPlayer { public static void main(String[] args) { float sampleFreq = 44100.0f; int bitsInQuantization = 8; int channels = 1; boolean signed = true; boolean bigEndian = true;  AudioFormat format = new AudioFormat( sampleFreq, bitsInQuantization, channels, signed, bigEndian);

Page 215: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

SynthPlayer.java 2(5)

DataLine.Info info = new DataLine.Info( SourceDataLine.class, format); if (AudioSystem.isLineSupported(info)) { try { SourceDataLine line = (SourceDataLine)AudioSystem.getLine(info);

int bufferSize = 6 * (int)sampleFrequency; byte[] buffer = new byte[bufferSize]; int twoSecMarker = 2 * (int)sampleFrequency; int fourSecMarker = 4 * (int)sampleFrequency;

Page 216: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

SynthPlayer.java 3(5)

Random random = new Random();for (int i = 0; i < twoSecMarker; i++) buffer[i] = (byte)random.nextInt(); int waveLength = (int)sampleFrequency / 440;for (int i = twoSecMarker; i <= (fourSecMarker - waveLength); i += waveLength) { for (int j = i; j < i + waveLength / 2; j++) buffer[j] = Byte.MAX_VALUE; for (int j = i + waveLength / 2; j < i + waveLength; j++) buffer[j] = Byte.MIN_VALUE;} // for

Page 217: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

SynthPlayer.java 4(5)

for (int i = fourSecMarker; i <= (bufferSize - waveLength); i += waveLength) { for (int j = i; j < i + waveLength; j++) buffer[j] = (byte)(127.0 * Math.sin( (double)j / waveLength * 2 * Math.PI));} // for 

Page 218: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

SynthPlayer.java 5(5)

// Avataan linja ja aloitetaan toisto.line.open(format);line.start();// Kirjoitetaan puskuri linjalle. line.write(buffer, 0, bufferSize);// Odotetaan linjan tyhjentymistä // ennen kuin lopetetaan. line.drain();line.stop();line.close();

Page 219: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Kohdedatalinjan käyttö

varataan puskuriksi byte-taulukko puskurin koon vaikutus kuten

lähdedatalinjassa read-metodin kutsu lukee puskuriin dataa

ja palauttaa sen määrän tavuina drain-metodi odottaa, kunnes mikserissä

oleva data tulee luetuksi flush-metodi poistaa lukemista odottavan

datan (muuten se jää odottamaan mikseriin)

Page 220: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Karaoke.java 1(2)

DataLine.Info infoTarget = new DataLine.Info(TargetDataLine.class, format);DataLine.Info infoSource = new DataLine.Info(SourceDataLine.class, format);if (AudioSystem.isLineSupported(infoTarget) & AudioSystem.isLineSupported(infoSource) { try { TargetDataLine lineTarget = (TargetDataLine) AudioSystem.getLine(infoTarget); SourceDataLine lineSource = (SourceDataLine) AudioSystem.getLine(infoSource);int bufferSize = (int)(bufferLength * format.getFrameSize() * format.getFrameRate());byte[] buffer = new byte[bufferSize];

Page 221: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Karaoke.java 2(2)

lineTarget.open(format, bufferSize);lineSource.open(format);lineTarget.start();lineSource.start(); while (true) { int dataSize = lineTarget.read(buffer, 0, bufferSize); // Tässä kohtaa puskurissa olevalle äänelle // voisi tehdä jotain jäynää... lineSource.write(buffer, 0, dataSize);}

Page 222: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Linjan säätimet (controls)

Control-luokasta periytyy neljä säädintyyppiä: BooleanControl: katkaisin

esim. mykistys (mute) FloatControl: säätökytkin

esim. vahvistus, panorointi EnumControl: valintakytkin

esim. kaiunnan esivalinnat CompoundControl: säädinkokoelma

esim. taajuuskorjain voi olla kokoelma FloatControl-tyyppisiä säätökytkimiä

Page 223: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Säädinten luokkahierarkia

Control

BooleanControl CompoundControlFloatControl EnumControl

Page 224: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Linjan säädinten haku

getControls-metodi palauttaa taulukon linjan tarjoamista säätimistä

isControlSupported-metodi palauttaa onko halutun tyyppistä säädintä tarjolla

getControl-metodi palauttaa pyydetyn tyyppisen säätimen

Page 225: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Säädintyyppejä

BooleanControl.Type.MUTE EnumControl.Type.REVERB FloatControl.Type.MASTER_GAIN FloatControl.Type.PAN FloatControl.Type.SAMPLE_RATE

Page 226: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

FloatControl-luokan metodeja

float getValue() void setValue(float newValue) float getMaximum() float getMinimum() float getPrecision() String getMaxLabel() String getMidLabel() String getMinLabel() String getUnits()

Page 227: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

ControlPlayer.java 1(3)

boolean gain = false, pan = false, rate = false, mute = false;if (args.length >= 1) { gain = args[1].equals("gain"); pan = args[1].equals("pan"); rate = args[1].equals("rate"); mute = args[1].equals("mute");}float parameter = 0.0f;if (args.length == 3) { try { parameter = Float.parseFloat(args[2]); } catch (NumberFormatException e) { ... }}

Page 228: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

ControlPlayer.java 2(3)

clip.open(source);clip.start(); if (gain && clip.isControlSupported( FloatControl.Type.MASTER_GAIN)) { FloatControl gainCtrl = (FloatControl)clip.getControl( FloatControl.Type.MASTER_GAIN); gainCtrl.setValue(parameter);}

Page 229: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

ControlPlayer.java 3(3)

if (mute && clip.isControlSupported( BooleanControl.Type.MUTE)) { BooleanControl muteCtrl = (BooleanControl)clip.getControl( BooleanControl.Type.MUTE); muteCtrl.setValue(true);} // if Control[] ctrl = clip.getControls();for (int i = 0; i < ctrl.length; i++) System.out.println(ctrl[i]);

Page 230: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Ääniominaisuuksien käyttöoikeudet

määritelty AudioPermission-luokassa: toistoäänitys

appletti: saa toistaa muttei äänittää sovellus: saa toistaa ja äänittää ohjelmien oikeuksia voidaan muuttaa

Policy Tool ohjelmalla

Page 231: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Mitä käsiteltiin? 1(3)

1. Perusteita

1. Äänen fysiikkaa

2. Psykoakustiikka

3. Äänen syntetisointi

4. Samplaus ja kvantisointi

5. Tiedostoformaatit

Page 232: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Mitä käsiteltiin? 2(3)

2. Äänenkäsittelyoperaatiot

1. Voimakkuus

2. Taajuus

3. Aika

4. Aaltomuoto

5. Operaatioiden ketjuttaminen

Page 233: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Mitä käsiteltiin? 3(3)

3. Javan ääniohjelmointi

1. java.applet2. javax.sound.sampled

Page 234: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Mitkä olivat tavoitteet?

teoreettinen: ymmärtää äänenkäsittelyyn liittyviä käsitteitä mitä voidaan tehdä

käytännöllinen: ymmärtää operaatioiden vaikutus ääneen mitä pitää tehdä

Page 235: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Tentit

varmista tenttiaika ja -paikka http://www.it.utu.fi/opiskelu/tentit/

muista ilmoittautua ajoissa! huomaa myös mahdollisuus sähköiseen

tenttimiseen https://tenttis.utu.fi

Page 236: Digitaalisen äänenkäsittelyn perusteet - kalvot 2010

Tie tästä eteenpäin

DÄP

MIDI

sekvensserit

moniraitaohjelmat

äänittäminen

säveltäminen

signaaliprosessointi

FFTtiivistäminen

tiedostoformaatit

MPEG

akustiikka

kompleksiluvut

äänentoisto

AD-muunnos

DA-muunnos

olet tässä