Työn ohjaajana toimii yliassistentti TkT Kari Heikkinen Työn tarkastajana toimii prof. Jari Porras Lappeenrannassa 20.08.2008

Samankaltaiset tiedostot
Cubase perusteet pähkinänkuoressa. Mikä Cubase on? Projektin aloitus

AV-muotojen migraatiotyöpaja - ääni. KDK-pitkäaikaissäilytys seminaari / Juha Lehtonen

Pianon äänten parametrinen synteesi

Avid Pro Tools Äänityksen perusteet. Petri Myllys 2013 / Taideyliopisto, Sibelius-Akatemia tp48 Äänitekniikan perusteet

Alkuraportti. LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS CT10A Kandidaatintyö ja seminaari

C-kasetin digitointi Audacity-ohjelmalla

LP-levyn digitointi Audacity-ohjelmalla

GARAGEBAND-PIKAOPAS Timo Sipilä/Tervaväylän koulu

Paristot Kytke laite täysin pois päältä. Avaa paristokansi ja aseta sisään 8 kpl UM- 2/ C -paristoa. Varmista, että +/- merkinnät vastaavat toisiaan.

Antenni Käytä FM-antennia parhaiden mahdollisten vastaanotto-olosuhteiden saavuttamiseksi.

Mono- ja stereoääni Stereoääni

LP-levyn digitointi Audacity-ohjelmalla

Audacity moniste

LP-levyn digitointi Audacity-ohjelmalla

Vaatimusmäärittely Ohjelma-ajanvälitys komponentti

Avokelanauhan digitointi Audacity-ohjelmalla

Åbo Akademi klo Mietta Lennes Nykykielten laitos Helsingin yliopisto

Pörisevä tietokone. morsetusta äänikortilla ja mikrofonilla

C-kasetin digitointi Audacity-ohjelmalla

Marantz PMD661. Äänittäminen

ELOKUVATYÖKALUN KÄYTTÖ ANIMAATION LEIKKAAMISESSA. Kun aloitetaan uusi projekti, on se ensimmäisenä syytä tallentaa.

C-kasetin digitointi Audacity-ohjelmalla

Päällekkäisäänitys Audacityllä

ELM GROUP 04. Teemu Laakso Henrik Talarmo

SGN-4200 Digitaalinen Audio Harjoitustyö-info

ADOBE CONNECT PRO. Pikaohje. 1 Tarvittavat välineet ja sovellukset Windowsin ääniominaisuuksien asetukset...2

Audacity-äänenkäsittelyohjelman pikakäyttöohje

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla

SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T

Kohti uuden sukupolven digitaalipianoja

Alkuraportti. LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS Ti Kandidaatintyö ja seminaari

Äänen eteneminen ja heijastuminen

Loppuraportti. Virtuaali-Frami, CAVE-ohjelmisto. Harri Mähönen projektiassistentti Seinäjoen ammattikorkeakoulu. Versio

Onnittelut PRO-JECT-DA-muuntimen hankkimisesta. Lue huolellisesti tämä ohje, jotta kytket laitteen oikein ja saat siten parhaan äänenlaadun.

Kiipulan ammattiopisto. Liiketalous ja tietojenkäsittely. Erja Saarinen

S09 04 Kohteiden tunnistaminen 3D datasta

1. Perusteita Äänen fysiikkaa. Ääniaalto. Aallonpituus ja amplitudi. Taajuus (frequency) Äänen nopeus

SONY MZ-R700 MiniDisc-tallennin

DAISY. Esteetöntä julkaisua

- Käyttäjä voi valita halutun sisääntulon signaalin asetusvalikosta (esim. 0 5V, 0 10 V tai 4 20 ma)

Musiikkipäiväkirjani: Soitetaan instrumentteja (PI1)

Äänitiedostoista. 1 Äänen tallentaminen

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

Enterprise SOA. Nyt. Systeemi-integraattorin näkökulma

Tähtitieteen käytännön menetelmiä Kevät 2009

ZAP SR300 Touch 8GB

Qosmio: Kuule ero. entistä parempi kuuntelukokemus

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

Kuvaruudun striimaus tai nauhoitus. Open Broadcaster Software V.20. Tero Keso, Atso Arat & Niina Järvinen (muokattu )

4) Kaiutin: 8Ω/10W 5) Otsonaattori: 12V/5W 6) Höyrygeneraattori: 220V/3000W

Videotoisto Nexus 7 tableteilla: Android 4.4 KitKat selvästi edellistä versiota heikompi

Vasteaika. Vasteaikaa koskeva ohje ei ole juuri muuttunut Robert B. Millerin vuonna 1968 pitämästä esityksestä:

Hamulan koulun valinnaisainetarjonta

Kitara 1. Luovat taidot (improvisointi, säveltäminen) Yhteissoitto

PLAY. TP1 Mobiili musiikkikasvatusteknologia LUOVA Mobiili musiikin tuotantoteknologia, jatkokurssi (v1.0)

Digitaalinen audio

PLAY. TP1 Musiikkikasvatusteknologia Notaatio 2 ja yhteistoiminnallinen nuotinkirjoitus Jarmo Kivelä, projektikoordinaattori

Kaavioiden rakenne. Kaavioiden piirto symboleita yhdistelemällä. Kaavion osan valitseminen päätöksellä ja toistaminen silmukalla.

Juha Henriksson. Digitaalinen äänentallennus Dr. Juha Henriksson Finnish Jazz & Pop Archive

Pikaopas. Valintanauhan näyttäminen tai piilottaminen Avaa valintanauha napsauttamalla välilehteä, tai kiinnitä se pysyvästi näkyviin.

Vesivoimaketjun optimointi mehiläisalgoritmilla (Valmiin työn esittely)

4. Lausekielinen ohjelmointi 4.1

Kirja on jaettu kahteen osaan: varsinaiseen- ja lisätieto-osioon. Varsinainen

VASKISOITTIMET (TRUMPETTI, BARITONITORVI, KÄYRÄTORVI, PASUUNA, TUUBA)

Kieliversiointityökalu Java-ohjelmistoon. Ohje

Gimp JA MUUT KUVANKÄSITTELYOHJELMAT

Office ohjelmiston asennusohje

IT-OSAAJA, TIETOJENKÄSITTELYN ERIKOISTUMISOPINNOT

TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos. Harjoitustyö 4: Cache, osa 2

C. Painikkeiden toiminnot ja soittimen käyttö 1. Painikkeiden toiminnot

TIES530 TIES530. Moniprosessorijärjestelmät. Moniprosessorijärjestelmät. Miksi moniprosessorijärjestelmä?

TYÖHYVINVOINNIN JA TUOTANTOTYÖN KEHITTÄMISEN FOORUMI -HANKE

Tiistai klo Jari Eerola

Menetelmäraportti - Konfiguraationhallinta

TT00AA Ohjelmoinnin jatko (TT10S1ECD)

- Käyttäjä voi valita halutun sisääntulon signaalin asetusvalikosta (esim. 0 5V, 0 10 V tai 4 20 ma)

CUDA. Moniydinohjelmointi Mikko Honkonen

Perussurffaajat: Tiia Tirkkonen, Teppo Porkka, Janne Tuomisto. Verkkopalvelun arviointisuunnitelma Spotify

kertaa samat järjestykseen lukkarissa.

Sekvensseri. Otto Romanowski TeknoDida 2008

Mainosankkuri.fi-palvelun käyttöohjeita

Ei suurempaa moitten sijaa. Lähdemerkinnät ok, samoin lauserakenteet. Muutamia kirjoitusvirheitä oli, mutta ei häiritsevässä määrin.

Marantz CDR310 - pikaohje

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. FT Ari Viinikainen

S11-09 Control System for an. Autonomous Household Robot Platform

Huittisten musiikkiopiston opetussuunnitelma Liite 1

Luku 8. Aluekyselyt. 8.1 Summataulukko

SONY MZ-N707 MiniDisc-tallennin

Käytettävyyslaatumallin rakentaminen web-sivustolle. Oulun yliopisto tietojenkäsittelytieteiden laitos pro gradu -suunnitelma Timo Laapotti 28.9.

Arviointikriteerit lukuvuositodistuksessa luokilla

Tutkittua tietoa. Tutkittua tietoa 1

AINEOPETUSSUUNNITELMA VARHAISIÄN MUSIIKKIKASVATUS

9 Multimedian elementtejä: ääni Webissä

Järjestelmäarkkitehtuuri (TK081702) Web Services. Web Services

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti

SEPA päiväkirja. BetaTeam. Juho Mäkinen, 57796V, Jari Leppä, 42710V, Versio Pvm Tekijä Kuvaus

Selainpelien pelimoottorit

Automaattinen sovitus-, sävellys- ja harjoitteluohjelma. Suppea opas Band-In-A-Box, jäljempänä BIAB, ohjelman käyttöön Musiikkitalon Mac-luokassa.

Transkriptio:

Lappeenrannan teknillinen yliopisto Teknistaloudellinen tiedekunta Tietotekniikan koulutusohjelma Avoimen lähdekoodin musiikkiteknologia Kandidaatintyö Kandidaatintyön aihe on hyväksytty 17.06.2008 Työn ohjaajana toimii yliassistentti TkT Kari Heikkinen Työn tarkastajana toimii prof. Jari Porras Lappeenrannassa 20.08.2008 Mikko Gynther Punkkerikatu 5 C 43, 53850 Lappeenranta +358408217855

TIIVISTELMÄ Lappeenrannan teknillinen yliopisto Teknistaloudellinen tiedekunta Tietotekniikan koulutusohjelma Mikko Gynther Avoimen lähdekoodin musiikkiteknologia Kandidaatintyö 2008 48 sivua, 5 kuvaa, 8 taulukkoa, 5 liitettä Tarkastaja: Professori Jari Porras Hakusanat: Avoin lähdekoodi, musiikki, virtuaali instrumentti, äänisynteesi Keywords: Open source, music, virtual instrument, sound synthesis Musiikkiteknologia on laaja soveltava tieteenala, jota voidaan hyödyntää kasvatustieteissä, psykologiassa ja kognitiivisissa tieteissä. Musiikkilaitteet ja ohjelmistot hyödyntävät tietotekniikkaa. Musiikkiteknologian ohjelmat ovat joko kaupallisia tai pohjautuvat avoimen lähdekoodin ajatteluun. Tässä työssä kartoitin Linuxin avoimen lähdekoodin virtuaali instrumentit sekä toteutin rumpukoneen, kosketinsoittimen ja yksinkertaisen karaokeohjelman mobiilille laitteelle. Tehty työ osoittaa, että tietoteknisin keinoin voidaan toteuttaa tutkimushankkeissa hyödynnettäviä musiikkiteknologian ohjelmia. ii

ABSTRACT Lappeenranta University of Technology Faculty of Technology Management Degree Program of Information Technology Mikko Gynther Open Source Musical Engineering Bachelor's Thesis 2008 48 pages, 5 figures, 8 tables, 5 appendices Examiner: Professor Jari Porras Keywords: Open source, music, virtual instrument, sound synthesis Musical Engineering is a broad applied branch of science which can be utilized to pedagogics, psychology and cognitive science. Musical devices and software utilize information technology. Musical engineering software is either commercial or based on open source philosophy. In this thesis I study open source virtual instruments developed for Linux and develop a drum machine, a musical keyboard and a simple karaoke program for a mobile device. This thesis shows that musical engineering software which is useful in research projects can be developed by means of information technology. iii

ALKUSANAT Tämä työ tehtiin Lappeenrannan teknillisessä yliopistossa Tietoliikenneohjelmistojen laboratoriossa kesällä 2008. Haluan kiittää Tietoliikenneohjelmistojen laboratoriota hyvästä työilmapiiristä ja ympäristöstä sekä avusta Linux käyttöjärjestelmän ja Maemoympäristön kanssa. iv

SISÄLLYSLUETTELO TIIVISTELMÄ...ii ABSTRACT...iii ALKUSANAT...iv SISÄLLYSLUETTELO...1 SYMBOLILUETTELO...3 1 JOHDANTO...4 1.1 Tausta...4 1.2 Tavoitteet ja rajaukset...5 1.3. Työn rakenne...6 2 MUSIIKKITEKNOLOGIAN KÄSITTEET...7 2.1 Taustatietoa tekniikasta ja työssä käytetyt käsitteet...7 2.2 Tutkimusongelman ja sen ratkaisutavan esittely...11 3 VIRTUAALI INSTRUMENTTIEN OHJELMOINTI...13 3.1 Linuxin virtuaali instrumenttien kartoitus...14 3.2 Drums ohjelma...17 3.3 Melody ohjelma...20 3.4 Karaoke ohjelma...22 3.5 Melody ohjelman suorituskykytestaus...23 3.6 Tulosten yhteenveto...25 3.7 Työn vaativuus ja työmäärä...26 3.8 Tulosten tulkinta...27 4 POHDINTA...29 4.1 MobiKid ja Karaoke ohjelmien vertailu...29 4.2 Tulosten merkitys...30 4.3 Tulevaisuus...31 5 YHTEENVETO...33 LÄHDELUETTELO...34 Liite 1. Musiikkiteknologian avainsanat lähteestä ACM...38 1

Liite 2. Drumsin soivat äänet toistava funktio...40 Liite 3. ALSA tietovirtaan kirjoittava funktio...42 Liite 4. Puskurit summaava funktio...43 Liite 5. Melodyn äänialgoritmit...44 2

SYMBOLILUETTELO ALSA FM GTK+ JACK JamMo LFO Mac OS MIDI OpenGL UMSIC Advanced Linux Sound Architecture Frequency Modulation (taajuusmodulointi) The GIMP Toolkit Jack Audio Connection Kit Jamming Mobile Low Frequency Oscillator (matalataajuinen oskillaattori) Macintosh Operating System Musical Instrument Digital Interface Open Graphics Library Usability of Music for Social Inclusion of Children 3

1 JOHDANTO 1.1 Tausta Musiikki on ollut olennainen osa ihmisten elämää vuosituhansien ajan. Se on merkittävä osa kulttuureita ja nähdään usein universaalina kielenä. Tekninen kehitys on monipuolistanut musiikin harrastamisen mahdollisuuksia. Musiikkiteknologia (Musical Engineering) on soveltava tieteenala, jota voidaan hyödyntää kasvatustieteissä, psykologiassa ja kognitiivisissa tieteissä. Musiikin harjoittamisen yhteys luovuuteen ja älykkyyteen sekä musiikin vaikutus ihmisen kehitykseen on kiinnostanut tutkijoita pitkään. Musiikkiteknologia hyödyntää fysiikan aaltoliikkeen ja mekaniikan sekä signaalinprosessoinnin teorioita. Se pyrkii tekniikan avulla vastaamaan ihmisten musiikillisiin tarpeisiin, jotka voivat olla erittäin yksilösidonnaisia. Tietotekniikka on erottamaton osa musiikkiteknologiaa, ja sen merkitys musiikkiteknologiassa on kasvanut entisestään tietokoneiden laskentatehon lisääntyessä. Tietotekniikkaan sisältyy ohjelmointi, joka mahdollistaa fysiikan ilmiöiden todentamisen. Osa musiikkiteknologian tuotteista on ollut kaupallisia ohjelmistoja esimerkiksi musiikin ammattimaiseen tuotantoon. Yrityksissä on myös tutkittu ja kehitetty erilaisia musiikkilaitteita sekä ammattimaiseen että kuluttajien käyttöön. Kaupallisten ohjelmistojen lisäksi myös avoimen lähdekoodin (open source) musiikkiteknologiaa on saatavilla. Avointa lähdekoodia voidaan hyödyntää tieteellisessä tutkimustyössä tehokkaasti, koska sen käyttö on suljettua lähdekoodia vapaampaa. Näin saavutetut tutkimustulokset ovat helpommin hyödynnettävissä sekä tutkimuksessa että erilaisissa toteutuksissa. Kuitenkin avoin lähdekoodi on toistaiseksi verrattain harvinaista musiikkiteknologiassa. Onkin tärkeää saada selville: Kuinka avoimen lähdekoodin musiikkiteknologiaa voidaan hyödyntää tieteellisessä tutkimustyössä? 4

1.2 Tavoitteet ja rajaukset Työn rajaukset keskittyvät 1 UMSIC hankkeen (Usability of Music for Social Inclusion of Children) viitekehykseen. UMSIC hankkeen tarkoitus on ehkäistä lasten syrjäytymistä esimerkiksi lisäämällä heidän yhteenkuuluvuuden tunnettaan musiikin avulla. Musiikkiterapian on todettu muun muassa parantavan huomio ja keskittymiskykyä sekä impulsiivisuuden hallintaa lasten keskuudessa. Sen on todettu myös parantavan itsetuntoa, itseilmaisua ja muistia [33]. UMSIC hankkeessa toteutetaan musiikkiohjelmisto vertaisverkkoympäristöön. Siinä tuotetaan JamMo sovellus, jossa on kolme toimintatapaa: Karaoke, Improvisointi (Improvisation) ja Sävellys (Composition) [33]. Tavoitteenani oli tuottaa improvisointiin soveltuvia virtuaali instrumentteja, joiden avulla käyttäjä voi myöhemmin sekvensseriosiota hyödyntäen soittaa taustamusiikin päälle ja äänittää omaa soittoaan. Omissa virtuaali instrumenteissani taustamusiikkia tai äänitysmahdollisuutta ei ole, vaan pyrin ainoastaan kehittämään soitettavia virtuaali instrumentteja. En ensisijaisesti pyrkinyt tekemään virtuaali instrumentteja, joiden tuottama ääni on mahdollisimman lähellä fyysisiä instrumentteja. Tavoitteeni oli saada ääntä tuotettua eri periaatteita hyödyntäen. Näin tuottamaani ohjelmakoodia voidaan todennäköisesti hyödyntää paremmin tulevaisuudessa. Ohjelmia kehitin Maemo ympäristössä ja kohdelaitteena oli Nokia N810. Maemo on Nokian tukema Linux pohjainen kehitysympäristö Internet Tabletien ohjelmille, ja sitä käytetään tulevassa UMSIC hankkeessa. N810 valittiin, koska se oli saatavilla [15, 33]. Virtuaali instrumenttini käyttävät Maemon tukemaa ALSA äänikirjastoa, joka on Linuxympäristön standardiäänikirjasto. Linuxin JACK äänipalvelin olisi suunnattu 1 UMSIC: FP 7 224561 hanke alkaa 1.9.2008 ja päättyy 31.8.2011. 5

ammattimaisempaan musiikkikäyttöön, mutta se ei ainakaan toistaiseksi sisälly Maemoympäristöön [17, 35]. Tarkoitukseni ei ollut toteuttaa graafista käyttöliittymää tai valmista osaa sovellukseen, vaan ainoastaan tuottaa ja kerätä UMSIC hankkeessa myöhemmin hyödynnettävää tietoa. Tarkoitukseni oli myös tutustua virtuaali instrumenttien ohjelmointityöhön ja helpottaa tulevaa suunnittelutyötä ja aikataulujen arviointia. En tutustunut kasvatustieteiden, psykologian tai kognitiivisten tieteiden lähteisiin työtä tehdessäni. Käyttämäni lähteet ovat lähinnä tekniikan alan julkaisuja. 1.3. Työn rakenne Teoriaosuudessa tutkin työhön liittyvää teoreettista taustaa ja esittelen käytetyt käsitteet ja termit. Esittelen myös tutkimusongelman ja sen ratkaisutavan. Käytännön osuus kuvaa työn, työvaiheet, tulokset ja työtä tehdessä esiintyneet ongelmat. Siihen kuuluu kuvaus olemassa olevien virtuaali instrumenttien kartoituksesta ja kuvaukset kolmesta ohjelmoimastani ohjelmasta. Pohdintaluvussa arvioin työn tuloksien merkitystä ja tulevaisuutta. Yhteenveto on lyhyt kooste tehdystä työstä. 6

2 MUSIIKKITEKNOLOGIAN KÄSITTEET 2.1 Taustatietoa tekniikasta ja työssä käytetyt käsitteet Musiikkiteknologia ymmärretään hyvin laajana käsitteenä (ks. Liite 1). Taulukossa 1 on tilasto artikkelien avainsanoista. Merkitykseltään vastaavia avainsanoja yhdistin parantaakseni taulukon luettavuutta. Tilastosta näkee musiikkiteknologian tutkimuksen painotuksia osa alueittain. Pääpiirteittäin avainsanat ovat kuvaavia. Ainoastaan Musical, Musical engineering, avoimeen lähdekoodiin liittyvät avainsanat eivät kuvaa artikkelin sisältöä tarkasti. Taulukko 1: Musiikkiteknologian avainsanat (ks. Liite 1) Avainsana (suomennos) Artikkelien määrä Prosenttiosuus (yhteensä 72) artikkeleista Music education (musiikin opetus) 14 19,4 % Musical (musiikillinen) 14 19,4 % Virtuaali instrumentteihin liittyvät avainsanat 13 18,1 % Composition music (sävellys musiikki) 7 9,7 % Karaoke 6 8,3 % Musical cognition (musiikillinen kognitio) 5 6,9 % Avoimeen lähdekoodiin liittyvät avainsanat 3 4,2 % Music therapy (musiikkiterapia) 3 4,2 % Sosiaalisiin ja psykologisiin seikkoihin 3 4,2 % liittyvät avainsanat Improvisointiin liittyvät avainsanat 2 2,8 % Musical engineering (musiikkiteknologia) 2 2,8 % Artikkelit voidaan jakaa kolmeen ryhmään esiintymien määrän perusteella. Musiikin opetustyökaluihin ja virtuaali instrumentteihin on panostettu paljon. Sävellys ja karaoketyökalut sekä musiikillinen kognitio ovat tutkittuja aiheita. Avoin lähdekoodi ja musiikin sosiaaliset ja psykologiset vaikutukset ovat toistaiseksi olleet vähemmän suosittuja tekniikan alan julkaisuissa. 7

Tässä kappaleessa käytetyt musiikkiteknologian käsitteet on määritelty taulukossa 2. Useita musiikkiteknologiaan liittyviä termejä käytetään eri merkityksissä, mikä aiheuttaa helposti väärinymmärryksiä eri lähteitä luettaessa. Taulukko 2: Musiikkiteknologian käsitteitä Käsite Ääni Ääninäyte (sample) Äänisynteesi Virtuaaliinstrumentti Sampleri Sekvensseri Liitännäinen (plugin) Merkitys Väliaineen, tavallisesti ilman, hiukkasten värähtelyä, joka on peräisin värähtelijästä. Värähtely on muutettavissa sähköiseksi signaaliksi esimerkiksi mikrofonin avulla. Sähköinen signaali voidaan edelleen muuttaa digitaaliseksi, jolloin käytetään termiä digitaalinen ääni. 1) Yksittäisen näytteen arvo. Sekunnissa ääntä on näytetaajuuden verran ääninäytteitä. 2) Tiedosto, jota toistamalla voidaan tuottaa virtuaali instrumentin ääntä. Sisältää yhden soittimen, esimerkiksi rummun, yhden äänen. Tässä työssä käytetään termiä äänitiedosto. Menetelmät, joiden avulla luodaan musiikillisesti kiinnostavia ja mielellään realistisia ääniä reaaliajassa [29]. Digitaalista ääntä reaaliajassa tuottava soitettava ohjelma. Äänitiedostoja käyttäjän syötteiden perusteella toistava ohjelma tai laite. Moniraitainen musiikkiohjelma, joka voi toistaa ja tallentaa ääni ja MIDI raitoja. Sekvensserissä toimiva virtuaali instrumentti tai efekti. Löytämieni artikkelien avulla voi muodostaa musiikkiteknologiasta kuvan 1 mukaisen kokonaiskuvan. Suunnatut nuolet kuvaavat hierarkiasuhdetta. Kuvasta voi nähdä musiikkiteknologian ja psykologian läheisen yhteyden. Musiikkiteknologia tarjoaa työkaluja esimerkiksi musiikkiterapian tarpeisiin musiikin tekemisen itseisarvon lisäksi. Kuvaa voi lähestyä joko alhaalta tai ylhäältä. Ylhäältä lähdettäessä näkökulma on 8

tekninen, alhaalta puolestaan psykologinen. Tummennetut käsitteet liittyvät läheisesti tähän työhön. Kuvaan on myös merkitty joitakin viittauksia artikkeleihin. Kuva 1: Musiikkiteknologia [Liite 1] Kirjallisuuskatsaus osoitti, että seuraavia tutkimusaiheita on käsitelty: Äänisynteesi [21, 25] Virtuaali instrumentit [3, 34] Musiikin analysointi, luokittelu ja luominen [5, 6, 28] Musiikkilaitteiden ja lelujen erilaiset käyttöliittymät [2, 14, 27, 30] Lapsille soveltuvat musiikkityökalut [1, 7] Musiikin opetustyökalut [18, 23, 24] Musiikin psykologiset, pedagogiset ja kognitiiviset vaikutukset [4, 10, 20, 22, 26] 9

Värähtelijää voidaan mallintaa massa jousi systeemin avulla [21]. Artikkelissa vertaillaan kolmea numeerista menetelmää ja todetaan, että käytännössä niiden välillä on vähän korvin havaittavaa eroa. Instrumentin fyysistä mallinnusta voidaan lähestyä myös jakamalla instrumentti pienempiin mallinnettaviin osiin [25]. Virtuaali instrumenttien avulla on tutkittu perinteisten instrumenttien äänen mallintamista; esim. puhallinsoittimen soitettavuuteen liittyviä ongelmia koskettimilla soitettaessa [34] ja huilun tyyppisen instrumentin äänen tuottamista [3]. Äänitiedostojen toistoon perustuvista virtuaali instrumenteista, kuten kaupalliset virtuaali instrumentit [13, 31], ei löytynyt julkaisuja. Yksinkertainen, tietyn musiikkityylin kappale voidaan luoda kyseistä tyyliä edustavien näytteiden ja neuroverkon avulla [6]. Eri äänilähteiden erottamista yksikanavaisesta äänisignaalista on tutkittu [5]. Kyseinen artikkeli antaa rohkaisevia tuloksia äänenerottelualgoritmien mahdollisuuksista. Äänisignaalia analysoimalla ja evoluutiolaskentaa hyödyntämällä voidaan suositella kuuntelijalle mieluista musiikkia [28]. Rumpukonetta voidaan ohjata ihokosketuksella [2]. Virtuaali instrumenttia voidaan soittaa lihaksen sähköisillä jännitteillä (elektromyografia) [27]. Virtuaali instrumentin ohjaamista äänisignaalin avulla on tutkittu [14]. Pehmolelu sopii hyvin äänen tallennusmediaksi lapsille [30]. Artikkelissa todetaan, että lapset keksivät useita käyttömahdollisuuksia tallennetulle äänelle. Musiikkisekvensserin aikatason hahmottaminen helpottuu esimerkiksi pallojen ja kierteisen kiskon avulla [7]. Pallot valuvat kiskoa pitkin alaspäin ja matkan varrelle sijoitetaan syntetisaattorimoduuleita. Fyysisen sekvensserin todettiin helpottavan musiikin teoreettisten käsitteiden ymmärtämistä. Musiikkisekvensserin käytössä ei välttämättä vaadita raitojen käsitteen ymmärtämistä [1]. Tavallisesti raita sisältää yhden instrumentin ääntä, minkä takia ääni voidaan sijoittaa äänikuvassa haluttuun paikkaan ja 10

äänen voimakkuutta voidaan säätää helposti muihin raitoihin vaikuttamatta. Tämä lähestymistapa voidaan korvata instrumentteja kuvaavilla symboleilla, jotka sijoitetaan kuvassa eri paikkaan halutun toiminnon mukaan [1]. Tämän esitystavan todetaan olevan helposti lapsen ymmärrettävissä. On tutkittu ohjelmaa, jonka avulla lapsille opetetaan musiikin käsitteistöä, nuottien lukemista, pianonsoittoa ja oman musiikin säveltämistä [18]. Lapsi voi harrastaa musiikkia vanhempansa kanssa, vaikka vanhempi ei osaisikaan soittaa mitään instrumenttia [23]. Kyseisen musiikkiohjelman havaitaan tuovan yhteiseen musisointiin rikkaampaa musiikillista ilmaisua. Musiikinopetusta on myös lähestytty korvakuulolta oppimalla, kuten musiikkia on ollut tapana oppia perinteisesti epämuodollisessa oppimisympäristössä [24]. Lapsen sävellystyötä tietokoneympäristössä on tutkittu [26]. Artikkelissa todetaan, että tietokoneympäristö mahdollistaa sävellyksen kuulemisen heti ja täten musiikinteorian tunteminen ei ole vaatimus säveltämiselle. Musiikillisen lahjakkuuden ja vieraan kielen hyvän ääntämisen yhteys on havaittu [20]. Myös musiikkiterapia sekä musiikin sosiaaliset ja fysiologiset vaikutukset ovat tutkittuja aiheita. Lapsen ja vanhemman musiikillisen kanssakäymisen vaikutuksia lapsen kehitykseen on tutkittu [4]. Matkapuhelinsovelluksen avulla on hyödynnetty musiikin vaikutuksia liikuntasuorituksiin [22]. Neurologisen musiikkiterapian tietokonejärjestelmää voidaan käyttää autismin hoidossa [10]. 2.2 Tutkimusongelman ja sen ratkaisutavan esittely Linux käyttöjärjestelmälle on saatavilla useita avoimen lähdekoodin virtuaaliinstrumentteja. Suuri osa niistä toimii itsenäisinä ohjelmina, ei esimerkiksi sekvensseriohjelman liitännäisinä kuten useat virtuaali instrumentit Windows ja Mac OS käyttöjärjestelmissä. Itsenäisten ohjelmien hyödyntäminen on todennäköisesti mahdollista myös Linux johdannaisissa ympäristöissä kuten Maemo. Maemo ympäristön 11

soveltuvuus virtuaali instrumenteille on tärkeä selvittää UMSIC hankkeen takia. Siksi tämän työn tutkimusongelma oli seuraava: Miten avoimen lähdekoodin ideologiaa voidaan hyödyntää ohjelmoidessa virtuaali instrumentteja Maemo ympäristöön? Oman toteutukseni pohjalle etsin avoimen lähdekoodin virtuaali instrumentteja ja äänityökaluja kuten Hydrogen rumpukone [12]. Löytämieni ohjelmien pohjalta tein Maemo ympäristöön sopivia yksinkertaisia toteutuksia. Samalla tutkin, kuinka hyvin Linux ympäristöön tehty avoin lähdekoodi on siirrettävissä Maemo ympäristöön. Työn tavoitteet olivat: Linuxin avoimen lähdekoodin virtuaali instrumenttien kartoitus Yksinkertaisten virtuaali instrumenttien ohjelmointi Yksinkertaisen karaokeohjelman ohjelmointi äänitysominaisuuden toteuttamiseksi 12

3 VIRTUAALI INSTRUMENTTIEN OHJELMOINTI Virtuaali instrumentteihin liittyy paljon käsitteitä, jotka eivät käyneet ilmi musiikkiteknologian käsitteiden yhteydessä. Tässä kappaleessa käytetyt uudet käsitteet on selvitetty taulukossa 3. Taulukko 3: Virtuaali instrumenttien käsitteistöä Käsite Merkitys Bittisyvyys (Bit depth) Bittien määrä yhdessä ääninäytteessä. Näytetaajuus (Sample Sekunnissa otettavien ääninäytteiden määrä, kun signaali rate) muutetaan digitaaliseksi. Nyquistin teoreema Signaalinprosessoinnin teoreema, jonka mukaan signaalia, jonka korkein taajuus on f, ei voida esittää täydellisenä pienemmällä näytetaajuudella kuin 2*f. Puskuri Äänidatalle varattu muisti. MIDI Kontrolliprotokolla musiikkilaitteille. MIDI kontrollidatan avulla voidaan ohjata esimerkiksi virtuaali instrumentteja ja ohjelmistosyntetisaattoreita. Kontrollidata voidaan tallentaa MIDI tiedostoon myöhempää toistoa varten [19]. Ohjelmistosyntetisaattori MIDI tiedostojen toistoon tarkoitettu ohjelma. Hyödynnetään esimerkiksi peleissä ja nuotinnusohjelmissa. Oskillaattori Värähtelyä tuottava laite tai ohjelmakoodi. LFO Matalataajuinen oskillaattori. Tremolo Efekti, joka aiheuttaa äänenvoimakkuuden tasaista ja edestakaista vaihtelua. Lisäävä synteesi Äänisynteesin menetelmä, jossa sinikomponentteja (Additive synthesis) summataan [29]. Vähentävä synteesi Syntetisaattoreissa käytetty periaate, jossa oskillaattorilla (Substractive synthesis) tuotettua ääntä käsitellään suotimilla. 13

Taajuusmodulointi Intervalli Oktaavi Ääniala Äänisynteesin menetelmä, jossa yhden sinikomponentin taajuutta moduloidaan toisella sinikomponentilla [29]. Kahden sävelen suhteellinen korkeusero. Intervalli, jossa korkeamman sävelen taajuus on kaksinkertainen matalamman sävelen taajuuteen verrattuna. Instrumentin matalimman ja korkeimman äänen välinen ero. 3.1 Linuxin virtuaali instrumenttien kartoitus Löysin yhteensä 20 virtuaali instrumenttia, minkä takia en etsinyt muita ääntä käsitteleviä ohjelmia. Pisteytin ohjelmat helpottaakseni omaa ja mahdollisesti myös muiden tulevaa työtä. Pisteytyksen perusteena käytin ohjelman yksinkertaisuutta, omia käyttökokemuksia lyhyen kokeilun perusteella, ohjelmointikieltä, ohjelmakoodin määrää ja ymmärrettävyyttä, kehittäjien määrää, projektin aktiivisuutta sekä vaadittuja liitännäisiä ja rajapintoja. Yksikään virtuaali instrumentti ei kuitenkaan vaikuttanut lupaavalta kaikkien arviointikriteerien osalta. Virtuaali instrumenttien pisteytys on selvennetty taulukossa 4. Taulukko 4: Virtuaali instrumenttien pisteytys Pisteet Merkitys 5 Instrumentti soveltuu hyvin omaan työhöni. 4 Instrumentti on todennäköisesti hyödynnettävissä omassa työssäni. 3 Instrumentti on mahdollisesti hyödynnettävissä omassa työssäni. 2 Instrumentti on mahdollisesti hyödynnettävissä omassa työssäni, mutta ohjelmakoodin käyttö olisi työlästä. 1 Instrumenttia ei voi hyödyntää ohjelmointikielen tai liitännäisrajapinnan takia. Taulukossa 5 on esitetty omaan työhöni parhaiten soveltuvat virtuaali instrumentit. Kaikki taulukon 5 instrumentit on ohjelmoitu joko C tai C++ kielellä, joille on olemassa kääntäjät Maemo ympäristöön. Muita käytettyjä kieliä ovat Java ja Snd, joka on musiikkiteknologiakäyttöön määritelty kieli. Sekä Javalla että Snd:lla on ohjelmoitu 14

ainoastaan yhdet instrumentit. Lisäksi yhden instrumentin joitakin itsenäisiä osia on ohjelmoitu Javalla, vaikka se muuten onkin ohjelmoitu C++ kielellä. Taulukko 5: Linuxin virtuaali instrumentteja Instrumentti Kuvaus Soveltuvuus Pisteet Kehittäjien (1 5) määrä AmSynth Vähentävä synteesi + Vähemmän koodia kuin monessa muussa + Melko helppo käyttää ja vaikuttaa 4 1, pieniä osia muilta kehittäjiltä toimivalta Paljon ominaisuuksia Horgand Taajuusmodulointi + Vähemmän koodia kuin monessa 4 1 muussa Paljon ominaisuuksia. Bristol Useiden syntetisaattoreiden emulointi + Toimii hyvin ja erinomainen äänenlaatu + Projekti on aktiivinen Koodia on paljon Todella paljon ominaisuuksia. 3 1, pieniä osia muilta kehittäjiltä Linux Sampler Sampleri + Koostuu monesta itsenäisestä ohjelmasta + Projekti on aktiivinen Vaikuttaa monimutkaiselta Koodia on todella paljon ZynAddSubFX Useita + Ohjelmakoodia on kommentoitu äänisynteesin hyvin Ohjelma on monimutkainen periaatteita Koodia on todella paljon 3 9 3 1 15

Koko taulukko 5 on saatavissa internetistä [8]. Internetistä saatavassa taulukossa instrumentteja on arvioitu kattavammin. Siinä on myös tiedot projektien aktiivisuudesta sekä virtuaali instrumenttien kotisivujen internetosoitteet ja ohjelmointikielet. Monet virtuaali instrumentit vaativat JACK äänipalvelimen tai liitännäisrajapintoja, jotka eivät sisälly Maemo ympäristöön. Yhdestäkään virtuaali instrumentista ei ollut kunnollista dokumentaatiota saatavilla, mikä vaikeutti monimutkaisen ja muutamia tuhansia rivejä pitkän ohjelmakoodin hyödyntämistä. Dokumentaation puuttumista selittää osaltaan se, että suurin osa virtuaali instrumenteista on yhden ihmisen ohjelmoimia. Suuri osa instrumenteista vaikutti keskeneräisiltä. Niissä oli virheitä, esimerkiksi äänet jäivät välillä soimaan ja ohjelmat kaatuilivat. Suurinta osaa ei ole päivitetty muutamaan vuoteen ja joidenkin kehittäminen on lopetettu kokonaan. Vähäinen päivitysaktiivisuus vähentää monen virtuaali instrumentin lähdekoodin hyödynnettävyyttä myös tulevaisuudessa. Myös omat ohjelmointitaitoni rajoittivat virtuaali instrumenttien ohjelmakoodin hyödyntämistä. Monet instrumentit käyttävät säikeitä, joita en toistaiseksi osaa ohjelmoida. Kaiken kaikkiaan olemassa olevan ohjelmakoodin hyödyntäminen olisi vaatinut merkittävää syventymistä ohjelmakoodiin ja ohjelmoinnin opiskelua. Lisäksi löytämieni virtuaali instrumenttien laskenta ja muistivaatimuksien täyttyminen Nokia N810 laitteella ei ole varmaa. Näistä syistä päätin aloittaa ohjelmointityön Linux Journalin ALSA oppaan perusteella [32]. ALSA oppaan esimerkkiohjelmat on ohjelmoitu C kielellä ja ne toimivat Linuxissa komentoriviohjelmina. Niissä tulostetaan ALSAn parametreja, avataan kahva toistettavalle ja äänitettävälle datalle sekä toistetaan ja äänitetään tietovirrasta. Toistavasta esimerkkiohjelmasta oli helppo muokata ohjelma, jossa toistettava äänidata luetaan tiedostosta. 16

Äänitiedostojen toistoon perustuva virtuaali instrumentti vaikutti toteuttamiskelpoiselta muokatun esimerkkiohjelman pohjalta. Äänitiedostojen toistoon perustuvien instrumenttien heikkous on suuri muistin tarve, koska jokainen instrumentin ääni joudutaan tallentamaan instrumenttia suorittavalle laitteelle [29]. Äänitiedostojen määrää voidaan vähentää ääntä käsittelevillä algoritmeilla, jotka eivät puolestaan ole yksinkertaisia toteuttaa. Rumpukoneen ohjelmointi vaikutti järkevältä, koska rummun äänellä ei ole varsinaista sävelkorkeutta. Siksi samoilla rumpuäänillä voidaan soittaa monia kappaleita, ja yksi ääni kustakin rummusta riittää yksinkertaiseen toteutukseen. Rummun sointi on lyhyt, joten äänen kestoa voidaan pitää vakiona. Poikkeuksen muodostavat symbaalit. Yksinkertaisuuden vuoksi en päättänyt ottaa myöskään symbaalien soinnin kestoa huomioon. Oikeita symbaaleja soitettaessa soittaja voi vaimentaa soivan symbaalin, ja näin vaikuttaa soinnin kestoon. 3.2 Drums ohjelma Drums on yksinkertainen, C kielellä ohjelmoimani rumpukone, jonka toiminta perustuu äänitiedostojen toistamiseen. Kussakin tiedostossa on yhden rummun tai symbaalin ääni, joka toistetaan käyttäjän painaessa ääntä vastaavaa painiketta. Drumsin äänet ovat bassorumpu, pikkurumpu, pieni tom tom, suuri tom tom, crash ja hi hat. Kuvassa 2 on esitetty Drumsin näyttö Maemo ympäristössä työkoneellani. Drumsin ohjelmakoodi on saatavilla internetistä [8]. Ohjelman toiminta perustuu tilakoneeseen, joka sisältää tiedot kaikkien äänten tiloista. Mahdollisia tiloja kullekin äänelle ovat OFF, ON ja PLAYING. OFF tarkoittaa, ettei ääni soi. ON tarkoittaa, että ääni alkaa soida ja PLAYING, että äänen toistaminen on kesken. Tilakone siis mahdollistaa kaikkien äänien yhtäaikaisen soimisen. ON ja PLAYING tilat tarvitaan, koska ääntä käsitellään puskureittain. Ääntä ei soiteta kerralla loppuun asti, vaan käyttäjän syötteisiin reagoidaan myös äänien soidessa. 17

Kuva 2: Drums Drums rumpukoneen ohjelmoinnin aloitin ALSA esimerkistä muokkaamastani äänitiedostoja soittavasta ohjelmasta. Lisäsin ohjelmaan silmukan, jonka sisällä toistettiin kahta ääninäytettä käyttäjän syötteiden mukaisesti. Tämän jälkeen siirsin ohjelman Maemo ympäristöön, mikä onnistui Maemon opetusmateriaalin [16] sekä GTK+kirjaston dokumentaation [9] avulla. Drums hyödyntää GTK+ käyttöliittymäkirjaston Main ja Idle silmukoita. Silmukoiden avulla pystyin tekemään ohjelmastani reaaliaikaisen ilman säieohjelmointia, jota en toistaiseksi hallitse. Reaaliaikaisuus tarkoittaa tässä, että ohjelma reagoi käyttäjän syötteisiin dataa käsitellessäänkin. Main silmukka käsittelee käyttäjän syötteet ja lähettää signaalit käyttäjän painamista painikkeista callback funktiolle. Callback funktiossa muutetaan painiketta vastaavan äänen tila ON tilaan. Idle silmukkaa ajetaan aina, kun ohjelman Main silmukassa ei tapahdu mitään ja ohjelma saa prosessoriaikaa. Idle silmukassa kutsutaan funktiota, jossa toistetaan kaikki sillä hetkellä soivissa tiloissa olevat äänet (ks. Liite 2). ON tilassa olevan äänen tiedosto osoitin siirretään tiedoston alkuun ja tila muutetaan PLAYINGtilaan. PLAYING tilassa olevan äänen tiedosto osoitinta ei siirretä alkuun, vaan toisto 18

jatkuu samasta kohdasta, johon edellisellä suorituskerralla jäätiin. Loppuun asti soitettu ääni muutetaan OFF tilaan. N810 laitteen kosketusnäyttö ei mahdollista useamman äänen soittamista yhtäaikaisesti, mutta riittävän nopeasti soitettaessa eri äänet soivat jonkin aikaa päällekkäin. Yhtäaikaisesti soivat äänet summataan (ks. Liite 3), koska ALSAn tietovirtaan voidaan kirjoittaa toistettavaksi kahvasta riippuen ainoastaan yksi mono, stereo tai monikanavapuskuri (ks. Liite 4). Ensimmäisessä summausalgoritmissani ääneen aiheutui suurta häiriötä. Kiersin ongelman vaihtamalla tietotyypin ALSA esimerkissä käytetystä kahdeksanbittisestä 16 bittiseen. Kahdeksanbittinen tietotyyppi olisi kyllä mahdollistanut ohjelman bittisyvyyden vaihtamisen helposti, koska tavallisimmat bittisyvyydet (8, 16, 24 ja 32) ovat kahdeksalla jaollisia. Summauksessa on otettava huomioon, että kahden näytteen yhteenlaskettu arvo voi aiheuttaa yli tai alivuodon. Tällaisissa tapauksissa arvo asetetaan vuodon mukaan joko maksimiin tai minimiin. Toistettavassa äänessä tämä on kuultavissa säröytymisenä, koska interferenssiaaltoa ei voida esittää tietotyypin rajallisten arvojen takia alkuperäisenä. Työkoneeni kehitysympäristössä ilmeni ongelmia, joita ei N810 laitteella esiintynyt. Työkoneeni äänikortti ei tukenut kuin muutamaa eri puskurikokoa. Suurella puskurilla ääneen aiheutui häiritsevää viivettä. Pienemmällä taas Drums ei usein ehtinyt kirjoittaa dataa puskuriin tarpeeksi nopeasti, ja äänien alkuja jäi monesti jonkin verran kuulumatta. 44100 Hz ja 22050 Hz näytetaajuuksilla esiintyi vinkuvaa häiriöääntä. Näitä ongelmia ei ollut N810 laitteella joten jätin ne huomioimatta. 19

3.3 Melody ohjelma Melody kosketinsoitin käyttää hyvin paljon samaa ohjelmakoodia kuin Drums. Suurin periaatteellinen ero on, että tiedostosta lukemisen sijaan ääni luodaan funktiolla. Drumsin toimintaperiaatetta vastaava äänitiedostojen toistaminen olisi vaatinut suuren määrän äänidataa. Äänensummausfunktio ja ALSA virtaan kirjoittava funktio ovat täysin samoja. Ääniä soittava funktio on muokattu Drumsin vastaavasta. Myös Main ja Idlesilmukoiden käyttö on vastaavaa. Callback funktion toteutus on hieman monimutkaisempi kuin Drumsissa. Se huomio myös painikkeen vapauttamisen. Näin Melodylla voidaan soittaa eri pituisia ääniä. Melodyn näyttö Maemo ympäristössä työkoneellani on esitetty kuvassa 3. Melodyn ohjelmakoodi on saatavilla internetistä [8]. Kuva 3: Melody Melody on kosketinsoitin yhden oktaavin koskettimilla. Erilaisia ääniä on 7: FM, Organ, Sin LFO, Sin, Triangle, Saw ja Square (ks. Liite 5). FM instrumentissa sinifunktion taajuutta ja vaihetta moduloidaan toisella sinifunktiolla. Organ perustuu urkujen ääniaallon mallinnukseen kahdeksalla summatulla sinikomponentilla. Siinä käytetään myös tremolo efektiä. Sin LFO instrumentissa ääni on sinifunktiolla tuotettua, mutta äänen taajuutta ja vaihetta moduloidaan matalataajuisen oskillaattorin avulla. Loput äänet 20

ovat nimensä mukaisien oskillaattorien ääntä. Oskillaattorien aaltomuodot on esitetty kuvassa 4. Kuva 4: Oskillaattorien aaltomuodot [36] Äänialaa Melodyssa on kuusi oktaavia ja kulloinkin soitettavaa oktaavia voidaan säätää Octave up ja Octave down painikkeilla. Chord painikkeesta soitetaan C duurisointu. Kill All hiljentää kaikki soivat äänet. Se on ohjelmoitu virheellisesti soimaan jäävien äänten varalta. Organ äänellä Chord painiketta painettaessa ääni ei toistu oikein, vaan se pätkii ja särkyy. Ongelma johtuu mitä ilmeisemmin N810 laitteen laskentatehon riittämättömyydestä, koska kehitysympäristössä samaa ongelmaa ei esiintynyt. Ongelma herätti mielenkiintoni N810 laitteen laskentatehon riittävyydestä musiikkikäytössä, minkä takia päätin testata Melody instrumentin ja N810 laitteen suorituskykyä. Testin tulokset ovat kappaleessa 3.5. 21

3.4 Karaoke ohjelma Karaoke on yksinkertainen karaokeohjelma, jonka tarkoitus on esittää, kuinka yhtäaikainen toisto ja äänitys voidaan toteuttaa N810 laitteella. Se on ulkoasultaan yhtä pelkistetty kuin Drums ja Melody, joten useista karaokeohjelmista tuttuja graafisia ominaisuuksia, kuten animoitu kappaleen sanojen näyttö, siinä ei ole. Karaoke hyödyntää samaa ohjelmakoodia kuin Drums. Karaoken näyttö Maemo ympäristössä työkoneellani on esitetty kuvassa 5. Karaoken ohjelmakoodi on saatavilla internetistä [8]. Kuva 5: Karaoke Kuten Drums ja Melody myös Karaoke käytti aluksi 32 khz näytetaajuutta. 32 khznäytetaajuisen taustaraidan toisto ei tuottanut ongelmia, mutta äänitetty raita toistui liian nopeana ja korkeammalla taajuudella kuin se oli äänitetty, mikä viittasi raidan toistoon liian suurella näytetaajuudella. Lisäksi yhtäaikainen taustaraidan toisto ja lauluraidan äänitys tuotti paljon häiriöääntä. Ongelma selvisi tulostamalla äänityskahvan parametreja. Äänityksen näytetaajuudeksi paljastui 8kHz, ja sitä ei ollut mahdollista vaihtaa. Lisäksi N810 laite äänittää ainoastaan yhden kanavan. Näistä syistä asetin myös toiston 8 khz:n näytetaajuuteen ja yhteen kanavaan. Olisin voinut ratkaista ongelman myös 22

prosessoimalla äänitetyn raidan korkeampaan näytetaajuuteen ja kahdelle kanavalle, mutta toteutin yksinkertaisemman ratkaisun ajanpuutteen vuoksi. 8 khz näytetaajuus on mahdollisesti peräisin Nokian historiasta puhelinvalmistajana. Puheen ymmärrettävyyden kannalta olennaisimmat taajuudet ovat alle 4 khz:n taajuuksilla, jotka toistuvat Nyquistin teoreeman mukaan jo 8 khz näytetaajuudella [11]. Korkeampien taajuuksien esittäminen edellyttää korkeampaa näytetaajuutta, joka tarkoittaa suurempaa määrää siirrettävää dataa. Äänittäessä esiintyy latenssia, joka aiheutuu äänityspuskurista. Puskuria pienentämällä latenssia voidaan pienentää, mutta liian pieni puskuri aiheuttaa äänen pätkimistä ja säröytymistä. Karaoken puskurin säädin siten, että latenssiksi muodostuu 25 ms. Pienemmällä latenssilla ääni pätki jonkin verran. 25 ms viive äänitetyn lauluraidan ja taustaraidan välillä on tarkasti kuunneltaessa kuultavissa, joten toistettaessa lauluraidan tiedosto osoitinta siirretään aluksi latenssia vastaava tavumäärä eteenpäin. Näin raidat toistuvat synkronoituna. 3.5 Melody ohjelman suorituskykytestaus Rajasin ohjelmieni suorituskyvyn perusteellisen arvioinnin tämän työn ulkopuolelle rajallisen ajan takia. On kuitenkin ilmeistä, että ohjelmani voisivat olla suuremmalla panostuksella laskennallisesti vähintään hieman kevyempiä. Idle silmukan käytön takia ohjelmani kuluttavat kaiken prosessoriajan, jota niille tarjotaan. Huolellisella säieohjelmoinnilla ja testauksella Idle silmukan funktiokutsut voitaisiin rajoittaa oikeasti tarpeelliseen määrään. Melodyn laskennallisten vaatimusten testaus oli mielenkiintoisinta, koska ainoastaan sitä ajettaessa N810:n laskentateho vaikutti loppuvan. Lisäksi Melodyn eri äänien laskennallisissa kompleksisuuksissa on eroa toisiinsa nähden. Drums ja Karaoke toistavat 23

äänitiedostoja, minkä takia kompleksisuus muuttuu ainoastaan äänitiedoston näytetaajuutta, bittisyvyyttä tai kanavien määrää muuttamalla. Taulukossa 6 on selvitetty erittäin karkeasti Melody ohjelman suhteellista laskentatehon tarvetta N810 laitteella. Top ohjelman avulla saamani prosenttiosuudet vaihtuivat jokaisella ohjelman päivityskerralla muutaman prosenttiyksikön alueella, mutta prosenttiyksikön tarkkuudella arvioimani osuudet antavat virheestään huolimatta käsityksen suuruusluokasta. Kokeessa käytin Melody instrumentista muokattuja versioita, joissa kaikki soitetut äänet jäävät soimaan kunnes Kill All painiketta painetaan. Näin pystyin likimääräisesti arvioimaan laskennan tarvetta, kun yksi tai useampi ääni soi. Näytetaajuus ja kanavien määrä ovat muutettavissa vakioiden arvoja säätämällä ja kääntämällä ohjelma uudelleen. Bittisyvyyttä en muuttanut, koska se olisi vaatinut suurempia muutoksia ohjelmakoodiin. Taulukko 6: Melody ohjelman prosessoriajan käyttö yhden äänen soidessa Instrumentti 32 khz, 16 bit, stereo 16 khz, 16 bit, mono FM 25% 7% Organ 50% 20% Sin 16% 4% Laskentaa tarvitaan 16 khz mono versiossa neljäsosa 32 khz stereo version laskennasta, koska jokaisen näytteen arvo joudutaan laskemaan erikseen ja näytetaajuuden kaksinkertaistuessa myös näytteiden määrä aikayksikössä kaksinkertaistuu. Toinen laskennan määrän puolittuminen johtuu kanavien määrän puolittumisesta. Käytetyt algoritmit pysyivät täysin samoina. Ilmeisesti Idle silmukan toiminnan takia tämä ei suoraan näy prosenttiosuuksissa, mutta kuitenkin laskentaosuus on selvästi pienempi jokaisella kokeen instrumentilla Seuraavassa kokeessa laskin yhtäaikaisesti ilman korvin havaittavaa pätkimistä toistuvien äänien määrän. Kokeessa oletin, että N810 laitteen laskentateho loppuu, kun äänentoisto 24

alkaa pätkiä. Koetta varten laskin 16 khz mono ohjelman instrumenttien äänenvoimakkuutta äänen säröytymisen välttämiseksi. Tulokset on esitetty taulukossa 7. Ne viittaavat selkeämmin laskennallisen kompleksisuuden vähenemiseen yhteen neljäsosaan. Taulukko 7: Melody ohjelman yhtäaikaisesti soivien äänten määrä Instrumentti 32 khz, 16 bit, stereo 16 khz, 16 bit, mono FM 3 13 Organ 1 5 Sin LFO 4 15 Sin 5 21 Triangle 4 16 Saw 4 18 Square 5 20 3.6 Tulosten yhteenveto Aluksi kartoitin Linuxin virtuaali instrumentit oman ohjelmointityöni pohjaksi. Löytämäni virtuaali instrumentit osoittautuivat vaikeasti hyödynnettäviksi. Niiden ohjelmakoodi on monimutkaista ja sitä on paljon. Lisäksi niissä on käytetty säieohjelmointia, jota en itse toistaiseksi hallitse. Virtuaali instrumenteista ei ole dokumentaatiota saatavilla, mikä vaikeuttaa lähdekoodin hyödyntämistä entisestään. Ohjelmointi onnistui kuitenkin ALSA kirjaston käytöstä kirjoitetun oppaan perusteella [32]. Toteutin Drums rumpukoneen, Melody kosketinsoittimen ja Karaoke ohjelman. Ohjelmani näyttävät kuinka musiikkiohjelmien ääniominaisuuksia voidaan ohjelmoida Nokia N810 laitteelle ALSA kirjastoa hyödyntäen. Ohjelmani ovat pelkistettyjä ja niiden ei ole sellaisenaan tarkoitus päätyä käyttöön. En tutustunut GTK+ kirjastoon syvällisesti, koska virtuaali instrumenttien graafinen käyttöliittymä ei kuulunut työhöni. 25

En todennäköisesti hyödynnä GTK+ kirjastoa kovinkaan tehokkaasti, esimerkiksi ohjelmani käyttävät globaaleja muuttujia funktioiden parametrien välittämisen sijasta. 3.7 Työn vaativuus ja työmäärä Työtä tehdessä jouduin tutustumaan minulle vieraaseen Maemo ympäristöön. Maemoon kuuluvien Hildon ja GTK+ käyttöliittymäkirjastojen sekä ALSA äänikirjastoon tutustuminen hidastivat etenkin Drumsin ohjelmointia. Toisaalta GTK+ ohjelman rakenteen ymmärtäminen helpottui, koska osaan OpenGL grafiikkakirjaston perusteita. Main ja Idle silmukoiden sekä callback funktioiden käsitteet olivat siis minulle jossain määrin tuttuja. En perehtynyt minulle uusiin kirjastoihin syvällisesti, vaan ainoastaan sen verran kuin ohjelmani vaativat toimiakseen. Tarkempi tutustuminen kirjastoihin olisi tehnyt työmäärästäni liian suuren. Ohjelmointityötäni helpottivat vuosien musiikkiharrastuksessa karttuneet lähtötietoni digitaalisesta äänestä ja äänisynteesistä. Nämä tiedot paranivat entisestään tehdessäni kandidaatintyön teoriaosan taustatutkimusta. Tiedoistani oli erittäin suuri hyöty ohjelmointityössä, ja ilman niitä en olisi pystynyt tekemään työtä tämän laajuisena. Perustietoni C ohjelmoinnista olivat ohjelmointiosuuden edellytys. C++ kielen ymmärtäminen oli tärkeää Linuxin virtuaali instrumentteja kartoittaessa. Työn eri vaiheisiin kulunut työaika on esitetty taulukossa 8. Kohtaan muu työ sisältyy Linuxin virtuaali instrumenttien kartoitus, Maemo ympäristön asennukset ja opetusmateriaaliin tutustuminen, demokappaleen tuottaminen N810 laitteella, Melodyohjelman suorituskykytestaus sekä MobiKid ohjelmaan tutustuminen. Eri ohjelmien ohjelmointiin kulunut aika ei suoraan kerro ohjelmien monimutkaisuudesta toisiinsa nähden. Drumsia ohjelmoidessani suuri osa ajasta kului ALSA ja GTK+kirjastojen käytön opetteluun. Lisäksi sekä Melody että Karaoke hyödyntävät Drumsin ohjelmakoodia sellaisenaan ja muokattuna. Siksi Drumsin ohjelmointiin kulunut aika on 26

huomattavasti muita suurempi, vaikka siinä on vähiten ohjelmakoodia, ja se on toiminnaltaan yksinkertaisin. Äänen tallentaminen tekee Karaokesta Drumsia monimutkaisemman. Monimutkaisimman Melodysta tekee äänen funktiolla luomiseen liittyvät osat, joita ei ole Drumsissa eikä Karaokessa. Karaoken ja Melodyn monimutkaisuuden ero on helposti havaittavissa niihin käytetyistä ohjelmointiajoista. Taulukko 8: Eri työvaiheisiin kulunut aika Vaihe Aika tunteina Alkuraportti ja seminaari 98 Ohjelmointi yhteensä 97 Drumsin ohjelmointi 55 Melodyn ohjelmointi 28 Karaoken ohjelmointi 14 Loppuraportin kirjoittaminen ja seminaari 75 Muu työ 69 Yhteensä 349 3.8 Tulosten tulkinta Ohjelmointityöhön käyttämästäni ajasta päättelin, että ääntä toistava ja käyttäjän syötteisiin reagoiva ohjelmarunko on hyvin pitkälti hyödynnettävissä eri periaatteilla ääntä tuottavissa ohjelmissa. Virtuaali instrumentin ääntä tuottavat algoritmit oli melko helppo ohjelmoida eri periaatteen mukaisiksi, kuten Drumsin muokkaaminen Melodyksi osoitti. Pystyin myös muokkaamaan ohjelmarunkoa eri käyttötarkoituksen, mutta samoja ominaisuuksia sisältävän ääniohjelman tarpeisiin. Tämän osoitti Drumsin muokkaaminen Karaokeksi. On kuitenkin muistettava, että ohjelmakoodin perinpohjainen ymmärtäminen on välttämätöntä ohjelmakoodia hyödynnettäessä. En pystynyt hyödyntämään Linuxin virtuaali instrumenttien ohjelmakoodia omissa ohjelmissani. 27

ALSA on matalan tason äänikirjasto, mutta sen käyttö ei ollut kohtuuttoman vaikeaa, vaikka en ollutkaan ohjelmoinut ääniohjelmia aikaisemmin. GTK+ käyttöliittymäkirjasto tarjosi helposti käytettävät työkalut ohjelman reaaliaikaisuuden toteuttamiseen. Virtuaaliinstrumenttien ohjelmointityössä tärkeimmäksi asiaksi vaikuttaisi muodostuvan digitaalisen äänen käsittelyyn ja äänisynteesiin liittyvien algoritmien ymmärtäminen. 28

4 POHDINTA Tässä luvussa vertaan ohjelmiani UMSIC hankkeen MobiKid pilottitutkimuksen ohjelmaan sekä JamMo sovelluksen eri toimintatapojen vaatimuksiin. Arvioin ohjelmieni merkitystä UMSIC hankkeelle. Pohdin myös, miten ohjelmiani voisi ja olisi syytä kehittää tulevaisuudessa. 4.1 MobiKid ja Karaoke ohjelmien vertailu MobiKid on Oulun yliopiston pilottitutkimus, jossa on tuotettu MobiKid karaokeohjelma. Ohjelma on toteutettu Nokia N800 sarjan laitteille ja suunnattu lapsille. MobiKid vastaa toiminnallisuudeltaan omaa Karaoke ohjelmaani, joten on perusteltua vertailla ohjelmia. Ohjelmien erot selittyvät ohjelmien eri käyttötarkoituksilla. MobiKid on tarkoitettu lasten käytettäväksi. Karaoke esittää, miten karaoke ohjelmalta vaaditut ääniominaisuudet voidaan toteuttaa N810 laitteella. Syvällinen tutustuminen MobiKidin toimintaan ei ollut mahdollista, koska ohjelmakoodi ei ollut saatavillani. MobiKid etenee vaiheittain ruudusta toiseen. Ohjelman käynnistyttyä valitaan haluttu kappale. Lauluraita äänitetään ja äänitetty raita kuunnellaan yhdessä taustaraidan kanssa. Lopuksi äänitetty raita lähetetään sähköpostilla. Ohjelma etenee aina samassa järjestyksessä samojen vaiheiden kautta, joten sen käyttö on helppo oppia. Karaoke perustuu yhteen ruutuun, jossa kaikki toiminnallisuudet ovat käytettävissä painikkeita painamalla. MobiKidin toteutuksessa on panostettu ulkoasuun ja käyttöliittymään. Sen eri ruudut ovat taustaltaan eri värisiä ja ruudulla on aina vain vähän informaatiota. Tekstiä ei ohjelmassa ole, vaan käyttäjä saa tietoa kuvina ja äänenä. Ohjelma toimii koko näytön suuruisena. Käyttöjärjestelmän omat painikkeet ja muut ajettavat ohjelmat eivät siis häiritse käyttäjää. Ohjelma soveltuukin todennäköisesti hyvin lapsille. Karaoke toimii tavallisen kokoisessa ikkunassa ja sen käyttö vaatii lukutaitoa. 29

Vaikka MobiKid vaikuttaa ominaisuuksiltaan melko valmiilta, on siinä käytettävyyttä heikentäviä virheitä. Äänitetty lauluraita ei toistu synkronoituna taustaraitaan. Ohjelma kaatuilee melko usein. Välillä näyttöruutu muuttuu valkoiseksi, vaikka ohjelman toiminta muuten jatkuukin. Karaoke toimi omassa käytössäni lähes virheittä. Ainoastaan taustaraita jäi usein soimaan musiikin loputtua. Huomasin virheen, koska komentoriville ei tulostunut ilmoitusta taustaraidan toiston loppumisesta. MobiKidissa on toteutettu samat äänitoiminnallisuudet kuin omassa Karaokeohjelmassani. Molemmissa äänitetään lauluraita samalla, kun taustaraita soi. Karaokessa tosin voi kuunnella molemmat raidat yhdessä tai erikseen useaan kertaan sekä äänittää lauluraidan kuuntelematta taustaraitaa. Molemmat ohjelmat äänittävät 8 khz näytetaajuudella yksikanavaista ääntä. MobiKid käyttää tiedostomuotona wav formaattia, kun taas Karaokessa äänitetty raita tallennetaan raw muodossa, joka tässä tapauksessa on wav ilman otsikkotietoja. MobiKidin taustaraidat ovat mp3 muodossa ja niitä tulee ohjelman mukana viisi kappaletta. Karaoke käyttää ainoassa taustaraidassaan samaa rawformaattia kuin äänitykseen. 4.2 Tulosten merkitys Ohjelmani todistavat, että Nokia N810 laitteelle voidaan ohjelmoida toimivia musiikkiohjelmia. Laitteen suorituskyky riittää ainakin laskennallisesti kevyiden ja muistivaatimuksiltaan pienten ohjelmien ajamiseen. Omat sovellukseni toimivat reaaliajassa, ja käyttöä merkittävästi häiritseviä viiveitä tai häiriöääniä ei esiintynyt. Omat virtuaali instrumenttini ovat soittamiskelpoisia, minkä voi kuulla äänittämästäni demokappaleesta. Kappale on äänitetty työkoneellani Audacity ohjelmalla usealle eri raidalle. Jokainen raita on soitettu N810 laitteella, joko Drumsilla tai Melodylla. Laitteella soittamani äänen vein työkoneelleni kytkemällä kaapelin N810:n kuulokeliitännän ja työkoneeni mikrofoniliitännän välille. Demokappale on kuultavissa internetistä mp3 muodossa [8]. 30

Karaoke täyttää ääniominaisuuksiltaan UMSIC hankkeen JamMo sovelluksen Karaoketoiminnon vaatimukset. Lauluraita voidaan äänittää taustaraitaa kuunnellessa ja molemmat raidat voidaan tämän jälkeen kuunnella yhdessä [33]. Virtuaali instrumenttini täyttävät osan JamMo sovelluksen Improvisointitoiminnallisuuden vaatimuksista. Yhdistettynä Karaoke sovelluksen äänitys ja toistomahdollisuuteen myös Improvisaatio toiminnon yksinkertaisemmat ääniominaisuudet olisivat toteutettu. Toistuvien ja yksittäisten äänien lisääminen kappaleeseen, kappaleen keston ja äänen korkeuden muuttaminen, osien leikkaaminen ja kopiointi, sekä instrumenttien vaihtaminen ei olisi edelleenkään mahdollista [33]. Ohjelmani toteuttavat suuren osan JamMo sovelluksen toiminnallisuudesta. On perusteltua olettaa, että tekemästäni työstä voi olla hyötyä UMSIC hankkeen aikana. 4.3 Tulevaisuus Virtuaali instrumenttini ja Karaoke ohjelmani jäivät melko vaatimattomiksi säädettävyydeltään, liitettävyydeltään, käytettävyydeltään ja tehokkuudeltaan, koska kandidaatintyö on pieni projekti. Virtuaali instrumenttia soittaessa soittaja voisi haluta säätää esimerkiksi yksittäisten äänten sekä koko ohjelman äänenvoimakkuutta. Tätä ominaisuutta ei ohjelmissani ole, vaan ainoa mahdollisuus säätää äänenvoimakkuutta on koko laitteen äänenvoimakkuuden muuttaminen. Virtuaali instrumenttini ovat äänenlaadultaan vaatimattomia verrattuna Linuxin virtuaali instrumentteihin. Ne voisivat kuulostaa mielenkiintoisemmilta, mikäli niihin olisi toteutettu monista virtuaaliinstrumenteista tuttuja ominaisuuksia kuten erilaiset suotimet ja muut efektit. Toisaalta N810 laitteen laskentaresurssit saattavat rajoittaa ylimääräistä prosessointia. Virtuaali instrumenttien kannattaisi tukea MIDI protokollaa, koska se mahdollistaa instrumenttien soittamisen ulkoisilla ohjainlaitteilla, esimerkiksi MIDI koskettimilla. Tosin Nokia N810 laitteen liitännät saattavat hankaloittaa ulkoisten musiikkilaitteiden 31

liittämistä. Joka tapauksessa MIDI tuen ansiosta jokaiseen instrumenttiin ei tarvitsisi ohjelmoida käyttöliittymää vaan varsinainen soittaminen voisi tapahtua erillisellä ohjelmalla ja virtuaali instrumentissa luotaisiin ainoastaan kontrollidatan mukainen ääni. Käyttöön tulevien virtuaali instrumenttien käyttöliittymä on syytä suunnitella ja toteuttaa huolella sekä mahdollisimman tehokkaasti. En pohtinut ohjelmoidessani ohjelmieni laskentatehon tarvetta. Käyttäjille tarkoitettuja instrumentteja toteutettaessa ohjelmien ja niiden käyttämien algoritmien laskennalliset kompleksisuudet on tärkeä kartoittaa. Tässä työssä käytettiin vain muutamaa äänisynteesin periaatetta. Niiden arvioiminen laskennan kannalta kulloiseenkin käyttötarkoitukseen ja kevyimpien periaatteiden hyödyntäminen voi vähentää laskennan määrää merkittävästi. Myös käytettävän laitteen kaiuttimet, mikrofoni ja muut ominaisuudet tulee ottaa huomioon virtuaali instrumentteja suunnitellessa turhan laskennan välttämiseksi. Esimerkiksi perusteettoman korkean näytetaajuuden käyttäminen aiheuttaa turhaa laskentaa, ja monimutkaisen ääniaallon luominen lisäävällä synteesillä voi vaatia kohtuuttoman paljon sinikomponentteja. Tämän työn oli tarkoitus antaa tietoa UMSIC hankkeen ohjelmointityötä varten. UMSIC alkaa 1.9.2008 ja päättyy 31.8.2011. Uskon, että omat kokemukseni virtuaaliinstrumenttien ohjelmoinnista tukevat alusta asti ohjelmoitavien instrumenttien ohjelmointityötä Maemo ympäristössä. Virtuaali instrumenttien kartoitukseni osoitti, että olemassa olevan avoimen lähdekoodin hyödyntäminen voi olla vaikeaa. 32

5 YHTEENVETO Työn teoriaosuudessa muodostin kokonaiskuvan musiikkiteknologiasta, ja selvitin sen käsitteitä. Musiikkiteknologia paljastui yllättävän laajaksi tieteenalaksi, joka soveltaa tietotekniikkaa moniin tarkoituksiin. Musiikkiteknologiaa hyödynnetään psykologiassa, kasvatustieteissä ja kognitiivisissa tieteissä. Työn käytännön osuudessa kartoitin Linux käyttöjärjestelmän avoimen lähdekoodin virtuaali instrumentit ja ohjelmoin musiikkiteknologian ohjelmia Nokia N810 Internet Tablet laitteelle. N810:n käyttöjärjestelmä on Linux johdannainen, joten olemassa olevaa avointa lähdekoodia olisi ollut mahdollisuus hyödyntää. En kuitenkaan osannut hyödyntää avointa lähdekoodia, vaikka virtuaali instrumentteja löytyi useita. Ongelmiksi muodostuivat puutteelliset ohjelmointitaitoni, ohjelmakoodin suuri määrä, ohjelmien monimutkaisuus ja puutteellinen dokumentaatio. Omat ohjelmani ohjelmoin itse alusta asti. Ohjelmoin rumpukoneen, joka toistaa äänitiedostoja. Kosketinsoittimeni puolestaan luo äänensä funktioiden avulla kokonaan ilman äänidataa sisältäviä tiedostoja. Virtuaaliinstrumenttini valmistuivat nopeammin kuin odotin, joten ohjelmoin vielä karaokeohjelman. Karaoke ohjelmassani on toteutettu ainoastaan ääneen liittyvät ominaisuudet. Ohjelmistani tuli yksinkertaisia ja pelkistettyjä kuten tarkoitukseni olikin. Ne kuitenkin osoittautuivat toimiviksi. Paremmalla käyttöliittymällä ja viimeisteltyinä ne olisivat myös käytettäviä. Tällaisinaan ohjelmani ainoastaan näyttävät, miten ääntä voidaan tuottaa N810 laitteella. 33

LÄHDELUETTELO [1] Yasushi Akiyama: PlaceAndPlay: a digital tool for children to create and record music, April 2008, CHI '08: Proceeding of the twenty sixth annual SIGCHI conference on Human factors in computing systems, Publisher: ACM [2] Tetsuaki Baba, Taketoshi Ushiama, Kiyoshi Tomimatsu: Freqtric drums: a musical instrument that uses skin contact as an interface, 2007, New Interfaces For Musical Expression, Proceedings of the 7th international conference on New interfaces for musical expression [3] Rolf Bader: Turbulent κ ε model of flute like musical instrument sound production, 2005, Publisher: Springer London [4] Lori A. Custodero, Pia Rebello Britto, Jeanne Brooks Gunn, Musical lives: A collective portrait of American parents and their young children, October November 2003, Journal of Applied Developmental Psychology, Volume 24, Issue 5, Pages 553 572 [5] Marek Dziubinski, Piotr Dalka and Bozena Kostek: Estimation of Musical Sound Separation Algorithm Effectiveness Employing Neural Networks, 2005, Journal of Intelligent Information Systems, Volume 24, Numbers 2 3 / March, [6] Eck, D.; Schmidhuber, J.: Finding temporal structure in music: blues improvisation with LSTM recurrent networks, Neural Networks for Signal Processing, 2002. Proceedings of the 2002 12th IEEE Workshop on 4 6 Sept. 2002 Page(s):747 756 [7] Thomas Fischer, Wing Lau: Marble track music sequencers for children, June 2006, IDC '06: Proceedings of the 2006 conference on Interaction design and children, Publisher: ACM [8] Gynther, Mikko: Avoimen lähdekoodin musiikkiteknologia, kandidaatintyön internetsivu, joka sisältää työhön liittyvän sähköisen materiaalin http://www2.lut.fi/~mgynther/kt/, viitattu 29.7.2008 34