Multimediaohjelmointi

 

Harjoitustyö 1

Harjoitustyö tehdään kahden hengen ryhmässä. (myös yksin voit tehdä työn).

Voit valita kahdesta aiheesta (CD-soitin kohtuullisen helppo, äänianimaatio vähän vaativampi vaatii ohjelmointikokemusta jonkin verran)

a) CD-soitin.

Suunnittele unelmiesi CD-soittimen käyttöliittymä ja toteutus. Vähimmäisvaatimukset: CD-soittimen on voitava vaihtaa "levyja", näytettävä levyn kappaleluettelo - levyt on voitava soittaa valitsemalla kappalelistasta. Oltava play, stop - toiminnot.

Dokumentointi: kommentoi ohjelmasi riitävästi (perehdy javadoc dokumentointiohjeisiin). Selostukseksi riittää käyttöohje (osana applettia tai erillisenä dokumenttina).

b) Äänianimaatio.

Javan äänidatan muoto on ulaw (8000 Hz, 8-bitin näytteellä, mono). Äänitiedostossa on siis 8000 tavua sekunnissa. Kukin tavu esittää äänisignaalin tietyllä hetkellä. Tavu voi saada arvoja väliltä [-127 , +127] .  ulaw signaali on alkuperäisen, todellisen signaalin välillä [-1.0 , +1.0] (tyyppiä double ) logaritminen muunnos.

signaali kuvaa äänen rakenteen karkeasti ottaen seuraavalla periaatteella. Ääni on aaltomuotoinen (sini) signaali, matalien äänten aallot ovat pitkiä, korkeiden lyhyitä. (Ihmisen kuuloalue on suunnilleen välillä (n.20 Hz - n. 15 000 Hz).

Aaltoliikkeen amplitudi (laajuus) kuvaa äänen volyymiä. Mitä suurempia arvoja (lähes 1 (tai -1) ) signaali saa, sitä voimakkaampi on ääni.

Tee ohjelma joka lukee levyltä ääninäytteen ja ohjaa sen avulla haluamaasi animaatiota. Esimerkiksi muutama kuva joita vaihtelet ruudussa äänen voimakkuuden mukaan. Äänen voimakkuuuden tiettynä hetkenä voi todeta vaikkapa jakamalla ääni esim 0,1 sekunnin pätkiin (800 näytettä) ja tutkimalla onko siinä tietyn tasopn ylittäviä näytteitä. Äänen synkronointi animaatioon ei ole aivan helppoa mutta mahdollista kuitenkin.

Voit kokeilla myös tehdä oman syntetisaattorisi. Aaltoliikettä on helppo tuottaa tallettamalla double-taulukkoon sopivan taajuista sinifunktiota. Oheisessa Ulaw-luokassa on metodit doubletoUlaw - jolla voidaan muuntaa double-signaalit ulaw-muotoon ja sitten soittaa siitä.

Tarvitset myös mukaan sun.audio.* luokan metodeja. JDK:n audioclip-luokka perustuu tähän luokkaan, mutta sitä ei ole dokumentoitu JDK-dokumentissa (sun.audio.* on kuitenkin mukana JDK-paketissa).

Ulaw-luokka, jolla voi muuntaa äänidataa
Esimerkki audiodataa käsittelevästä ohjelmasta (toimii applicationina paikallisesti)
Brief description of sound formats
Documentation of the sun.audio - package