tag:blogger.com,1999:blog-197529562024-03-13T09:24:34.937-07:00Musiikintutkimusta R:lläAtte Tenkanenhttp://www.blogger.com/profile/15293915837170678092noreply@blogger.comBlogger42125tag:blogger.com,1999:blog-19752956.post-87438273211839238272008-11-29T02:37:00.000-08:002008-11-29T03:01:38.786-08:00Transfer entropyPidin 28.11.2008 Turun yliopiston it-laitoksen erään informaatioteoriaa käsittelevän kurssin yhteydessä esitelmän siirtoentropiasta (transfer entropy) ja kokeilin, miten siirtoentropiaa voisi soveltaa polyfonisen musiikin tutkimukseen.<br /><br /><a href="http://users.utu.fi/attenka/TEpresentation081128.pdf">http://users.utu.fi/attenka/TEpresentation081128.pdf</a>Atte Tenkanenhttp://www.blogger.com/profile/15293915837170678092noreply@blogger.com1tag:blogger.com,1999:blog-19752956.post-35281109920563285982007-08-19T01:25:00.000-07:002008-12-12T23:28:50.998-08:00Ubuntu Studio, Rosegarden (ja R?)Ubuntun linux-jakeluiden joukko on lisääntynyt uudella audio- ja video-työskentelyyn tarkoitetulla distrolla, <a href="http://en.wikipedia.org/wiki/Ubuntu_Studio">Ubuntu Studiolla</a>. Siitä on tulossa syyskuun aikana uusi versio 7.10, mutta 7.04 tuntuu toimivan sekin mukavasti.<br /><br />Oheiselta sivulta löytyy pieni demo Ubuntu Studioon sisältyvästä Rosegarden-ohjelman käytöstä, ks. videot Pikiruukki_06.mp4 ja Pikiruukki_07.mp4. Ne on tehty edistyksellisessä ;-) <a href="http://www.mantykankaankoulu.kokkola.fi/">Mäntykankaan koulussa</a> Kokkolassa:<br /><br /><a href="http://www.arkki.info/howto/Esitykset/Pikiruukki/">http://www.arkki.info/howto/Esitykset/Pikiruukki/</a><br /><br />Pohdin, miten R:llä tuotettuja musiikkigenerointeja voisi tuoda tähän ympäristöön ja ainakin niin se onnistuu, että kääntää R:llä tuotetut csv-tiedostot midiksi csvmidi-ohjelmalla ja sitten tuo nuo midit esim. Rosegardeniin. Sillä voi sitten soittaa systeemistä löytyviä syntetisaattoreita.<br /><br />Ohessa otin muutaman kuvaruutukaappauksen työpöydältä, joista selviää mm., millaisia ohjelmia Ubuntu Studio paketista löytyy.<br /><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguBSjksL5NBx1MC4hcIRE_-KUisLj1fM0i63K56xA7YwVa2NUxzbul73PbhJZodkUiByOpTB35FR0qMQuvEx-mScy11beDnDpTOLN91zhJ03261_RooUR3i16yo4TLyJntea3p/s1600-h/UbuntuStudio1.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguBSjksL5NBx1MC4hcIRE_-KUisLj1fM0i63K56xA7YwVa2NUxzbul73PbhJZodkUiByOpTB35FR0qMQuvEx-mScy11beDnDpTOLN91zhJ03261_RooUR3i16yo4TLyJntea3p/s200/UbuntuStudio1.png" alt="" id="BLOGGER_PHOTO_ID_5100332717590805122" border="0" /></a><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBd35ycwDh0o0aoXPk6IOfvjad3Sli_ORYkgmGbu66Mhs9-dtTqEyHJ6yz9I2abwjctZ1mlzxb0MmZACndQ18V6wzE28BTHCRu9n33WCzp8qM8fr4nbvRAmxSDr-WeAq1R8Tkq/s1600-h/UbuntuStudio2.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBd35ycwDh0o0aoXPk6IOfvjad3Sli_ORYkgmGbu66Mhs9-dtTqEyHJ6yz9I2abwjctZ1mlzxb0MmZACndQ18V6wzE28BTHCRu9n33WCzp8qM8fr4nbvRAmxSDr-WeAq1R8Tkq/s200/UbuntuStudio2.png" alt="" id="BLOGGER_PHOTO_ID_5100332842144856722" border="0" /></a><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBF20JEVaQMKxu8OPmb1WSHntuaatZP2Mb8luRu9_Ljuxw8UGHYom6hs6q4SYXwU47zFC601xatFo9kZd4gn8IbM216gz_GNqNbstMK2vwXkWe30JEWM_Adcp5kw5cfwo81YgQ/s1600-h/UbuntuStudio3.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBF20JEVaQMKxu8OPmb1WSHntuaatZP2Mb8luRu9_Ljuxw8UGHYom6hs6q4SYXwU47zFC601xatFo9kZd4gn8IbM216gz_GNqNbstMK2vwXkWe30JEWM_Adcp5kw5cfwo81YgQ/s200/UbuntuStudio3.png" alt="" id="BLOGGER_PHOTO_ID_5100332949519039138" border="0" /></a><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7AFDsBsdDvNNF5KNcMfLwZ7Lxj3fZiEQztfAl0Sm769veEdkWCtHIP-NxiSFs6Q5-WnkrQuvnXuaY_fqw-vGcLwcAphSZirXRSj4SJ_h1yKqVIx6z9cGX-2wBpXelKUm-HrL4/s1600-h/UbuntuStudio5.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7AFDsBsdDvNNF5KNcMfLwZ7Lxj3fZiEQztfAl0Sm769veEdkWCtHIP-NxiSFs6Q5-WnkrQuvnXuaY_fqw-vGcLwcAphSZirXRSj4SJ_h1yKqVIx6z9cGX-2wBpXelKUm-HrL4/s200/UbuntuStudio5.png" alt="" id="BLOGGER_PHOTO_ID_5100333121317731010" border="0" /></a><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhF74uRGyDKp9sq_nkcePPFMIURfsBAWMUoOI6T-INQ-o_VY5YVo_m35cPzmx0mQ8cNRXw-lsqO96Agf4fN5vv2xr5hgYrGWtyxfFWpMD_0FoArmr0ysGsX3rJt_P0R01ph6ybQ/s1600-h/UbuntuStudio4.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhF74uRGyDKp9sq_nkcePPFMIURfsBAWMUoOI6T-INQ-o_VY5YVo_m35cPzmx0mQ8cNRXw-lsqO96Agf4fN5vv2xr5hgYrGWtyxfFWpMD_0FoArmr0ysGsX3rJt_P0R01ph6ybQ/s200/UbuntuStudio4.png" alt="" id="BLOGGER_PHOTO_ID_5100333031123417778" border="0" /></a>Atte Tenkanenhttp://www.blogger.com/profile/15293915837170678092noreply@blogger.com0tag:blogger.com,1999:blog-19752956.post-62850691063396759682007-06-27T11:12:00.000-07:002007-06-27T11:35:00.888-07:00Algoritmisesta säveltämisestä...... on kirjoitettu suomeksi aika vähän. Niinpä pyysin Tommi Stordellilta lupaa laittaa hänen Turun yliopiston IT-laitokselle keväällä 2007 tekemänsä LuK-työn <a href="http://users.utu.fi/attenka/luk_.pdf"><span style="font-style: italic;">Markovin ketjut ja geneettiset algoritmit säveltämisen apuvälineinä</span></a> blogisivulleni pdf-muodossa ladattavaksi. Siinä Stordell tuo kootusti esiin erilaisia lähestymistapoja musiikin generoimiseen ja lopuksi esittelee oman javalla kirjoittamansa sovelluksen, jossa<br /><br />1) Markovin ketjuilla luodaan ohjelmaan syötetystä yksiäänisestä melodiasta siirtymätodennäköisyysmatriisi ja<br />2) tätä matriisia käyttäen generoidaan "melodiahypoteeseja", joita<br />3) verrataan ennalta valittuun mallimelodiaan.<br />4) Geneettinen algoritmi säästää aina sukupolvi toisensa jälkeen parhaiten mallimelodiaa muistuttavat hypoteesit jatkoon.<br /><br />Näin voidaan generoida mallimelodian kanssa samantyyppisen kaarroksen omaavia melodioita. Stordellin javalla kirjoittamat luokat on jätetty tästä versiosta pois.Atte Tenkanenhttp://www.blogger.com/profile/15293915837170678092noreply@blogger.com0tag:blogger.com,1999:blog-19752956.post-86768914842551449012007-04-29T09:42:00.000-07:002007-04-29T09:59:44.320-07:00Markov-algoritmiMarkov-algoritmi ei suoranaisesti liity musiikintutkimukseen. Se on Turingin koneen vahvuinen laskentamalli. Tein Turun yliopistossa keväällä 2007 pidettävälle kurssille siitä pienen esitelmän. Ohessa esitelmä ja algoritmi jota käytin esitykseen sisältyvän esimerkin laskemisessa. Funktio bin2una() laskee binääriluvun unaariesityksen, esim. bin2una(1001) on unaarina 111111111 ja laskeepa se sitten desimaaliesityksenkin siinä samalla (9).<br /><br />Markov-algoritmin esitelmä:<br /><a href="http://users.utu.fi/attenka/Markov_algoritmi_070419.pdf">http://users.utu.fi/attenka/Markov_algoritmi_070419.pdf</a><br /><br />Markov-algoritmi R:llä:<br /><a href="http://users.utu.fi/attenka/Markov_algoritmi_070415.R">http://users.utu.fi/attenka/Markov_algoritmi_070415.R</a>Atte Tenkanenhttp://www.blogger.com/profile/15293915837170678092noreply@blogger.com0tag:blogger.com,1999:blog-19752956.post-42461767356614576142006-12-16T09:13:00.000-08:002006-12-19T02:40:06.356-08:00R-pikakurssin materiaaliOhessa materiaali, jota käsittelimme kurssilla ja joka naputeltiin koneelle.<br /><br />R-komennot:<br /><a href="http://users.utu.fi/attenka/R_pikakurssi061214.R">http://users.utu.fi/attenka/R_pikakurssi061214.R</a><br /><br />Midi-fileen csv-muotoinen lista, jota käytettiin 4:ssä sovelluksessa melodioiden generoimiseksi:<br /><a href="http://users.utu.fi/attenka/tangerine8.csv">http://users.utu.fi/attenka/tangerine8.csv</a><br /><br />IH:n generoima melodia:<br /><a href="http://users.utu.fi/attenka/ilenmelodi.mid">http://users.utu.fi/attenka/ilenmelodi.mid</a><br /><br />R:stä löytyy matriisioperaatioihin myös tehokkaat apply, sapply, tapply, mapply-komennot, mutta niitä ei nyt otettu, vaan tulimme for-luupilla toimeen. Ehkäpä katsomme niitä jossain vaiheessa.<br /><a href="http://users.utu.fi/attenka/tangerine8.csv"> </a>Atte Tenkanenhttp://www.blogger.com/profile/15293915837170678092noreply@blogger.com1tag:blogger.com,1999:blog-19752956.post-22523429800680500742006-12-14T01:18:00.000-08:002006-12-14T01:22:20.100-08:00R-pikakurssistaLaitan myöhemmin oman pikakurssimme materiaalin tänne saataville, mutta ohessa linkki erinomaiseen R-ohjelmointia käsittelevään dokumenttiin, jonka on kirjoittanut Pasi Koikkalainen.<br /><br /><a href="http://erin.mit.jyu.fi/pako/CourseR/Osa1234.pdf">http://erin.mit.jyu.fi/pako/CourseR/Osa1234.pdf </a>Atte Tenkanenhttp://www.blogger.com/profile/15293915837170678092noreply@blogger.com0tag:blogger.com,1999:blog-19752956.post-31140710210688696992006-12-04T23:22:00.000-08:002006-12-04T23:33:05.066-08:00Ilmainen MidiSwing-sekvensseriTein pyynnöstä suomenkieliset käännökset MidiSwing-nimisen ilmaisen midisekvensseriohjelman komentoihin. Käännökset vaativat vielä hiomista ja jos löytyy joku suomenkielinen, jolle midi-termistö on tuttu, hän voisi esittää parannusehdotuksia käännöksiin ohjelman kehittäjälle Pascal Naidonille. Osa käännöksistä vielä puuttuu.<br /><br />Sekvensserin voi asentaa OS X:ään, Windowsiin ja Linuxiin (!). Nyt kun ohjelmasta näkee suoraan, miten käännökset sijoittuvat ohjelman eri osiin ikkunassa ja komentovalikossa (ne tehdään erilliselle listalle englanninkielisten termien rinnalle), kääntäminen on helpompaa kuin sokkona listaan tehtäessä. Ohjelman kotisivut löytyvät täältä:<br /><br /><a href="http://www.les-stooges.org/pascal/midiswing/index.php?la=en#top">http://www.les-stooges.org/pascal/midiswing/index.php?la=en#top </a>Atte Tenkanenhttp://www.blogger.com/profile/15293915837170678092noreply@blogger.com0tag:blogger.com,1999:blog-19752956.post-1164311308223506902006-11-23T11:47:00.000-08:002006-11-24T00:51:36.037-08:00R-pikakurssin ajankohta siirtyyPäätimme I.H.:n kanssa siirtää R-pikakurssin ajankohtaa myöhemmäksi, jotta saamme ainakin JR:n mukaan. Pidämme kurssin 13.-14.12.2006.Atte Tenkanenhttp://www.blogger.com/profile/15293915837170678092noreply@blogger.com0tag:blogger.com,1999:blog-19752956.post-1163875536085952392006-11-18T10:32:00.000-08:002006-11-18T10:45:36.096-08:00Merkittävä nuotinnusohjelma Sibelius-AkatemiastaOlin seuraamassa Mika Kuuskankareen väitöstilaisuutta tänään lauantaina 18.11. Kuuskankareen väitöksen aiheena oli hänen kehittämänsä ENP-nuotinnusjärjestelmä, joka on osa PWGL-nimistä, erityisesti säveltäjille ja musiikinteoreetikoille suunnattua ohjelmistoa. Väitöstilaisuus oli demoineen vaikuttava. Vastaväittäjänä toimi Roger B. Dannenberg Carnegie Mellon yliopistosta. PWGL:n beta-versio Mac OSX:lle ja Windowsille on ladattavissa osoitteesta <a href="http://www2.siba.fi/PWGL/downloads.html">http://www2.siba.fi/PWGL/downloads.html</a><br />Lisätietoa ohjelmasta löytyy sivulta <a href="http://www.siba.fi/fin/ajankohtaista/kuuskankare/">http://www.siba.fi/fin/ajankohtaista/kuuskankare/</a>Atte Tenkanenhttp://www.blogger.com/profile/15293915837170678092noreply@blogger.com0tag:blogger.com,1999:blog-19752956.post-1163603266429442722006-11-15T07:02:00.000-08:002006-11-15T07:08:03.073-08:00R-pikakurssi 24. ja 27.11.Pidän R:n pikakurssin pe 24.11. klo 9-15 ja ma 27.11. klo 9-12. Perjantaina aloitamme musiikkitieteen tiloissa Salongissa, mutta klo 12 eteenpäin voimme halutessamme jatkaa Educariumin luokassa 155 eli samaisessa luokassa, jossa TKAMT:n kurssi pidettiin viime keväänä. Tämä tila on varattu meille myös maanantaina.<br /><br />Tiedoksi merkittävä tietokoneavusteiseen musiikintutkimukseen ja musiikin generointiin liittyvä tapahtuma eli Mika Kuuskankareen ENP-nuotinkirjoitusohjelmaa käsittelevä <a href="http://www.siba.fi/fin/ajankohtaista/tapahtumakalenteri/tapahtuma.php?event_id=2327">väitöstilaisuus </a>pidetään Sibelius-Akatemiassa 18.11. klo 12.Atte Tenkanenhttp://www.blogger.com/profile/15293915837170678092noreply@blogger.com0tag:blogger.com,1999:blog-19752956.post-1160861921762352462006-10-14T14:36:00.000-07:002006-10-14T14:38:41.780-07:00Oppimispäiväkirjani palautetuista oppimispäiväkirjoistaKirjoitin alla mainitusta luennosta "oppimispäiväkirjan" saamieni oppimispäiväkirjojen perusteella. Se löytyy <a href="http://users.utu.fi/attenka/opk_palaute061009.pdf">tästä</a>.Atte Tenkanenhttp://www.blogger.com/profile/15293915837170678092noreply@blogger.com0tag:blogger.com,1999:blog-19752956.post-1159774055962078712006-10-02T00:18:00.000-07:002006-10-02T00:31:56.846-07:00WAP 9.10. 2006 pidettävää luentoani vartenOhessa vielä yksi, hiukan "Afrikan tähden" pelilautaa muistuttava malli WAP:ista ;-) Olen sitä varten koonnut joukon mahdollisia tkamt:een liittyviä termejä luentoa Tietokoneavusteinen musiikintutkimus 9.10 varten ja annoin tällä kertaa korrelaatiotaulukkoon vain joko arvon 0 tai 1 sen mukaan, liittyvätkö asiat luennolla toisiinsa vahvasti vai eivät. Punaisella solmulla ja isommalla tekstillä merkityt - sumean näköisesti valitut - termit viittaavat luennon "pilareihin". Tulos on tämän näköinen:<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3045/1961/1600/WAM_luento061009.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/3045/1961/400/WAM_luento061009.jpg" alt="" border="0" /></a>Atte Tenkanenhttp://www.blogger.com/profile/15293915837170678092noreply@blogger.com0tag:blogger.com,1999:blog-19752956.post-1159124426274249812006-09-24T11:35:00.000-07:002006-12-30T13:26:49.471-08:00Painotettu assosiaatiokartta<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3045/1961/1600/gplot_t_suunn060924b.1.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/3045/1961/400/gplot_t_suunn060924b.0.jpg" alt="" border="0" /></a><br /><span style="font-size:85%;">Kuva tulee näkyviin suurempana klikkaamalla sitä.</span><br /><br /><br />R:llä voi tehdä monenlaista musiikintutkimukseen liittyvää, myös hiukan sumeampia juttuja kuin mitä tässä on aikaisemmin ollut esillä.<br /><br />Ohessa on malli kuvauksesta, jonka olen nimennyt "painotetuksi assosiaatiokartaksi". Se on hiukan kuin mind map, mutta sitä varten täytyy parametrit tuntea ennestään, eikä niiden järjestelemiseksi tarvitse itse nähdä vaivaa, sijoittelun tekee kone. PAK:aa varten olen symmetriseen n x n -taulukkoon merkinnyt riveihin ja sarakkeisiin tutkimukseeni liittyviä pääsanoja ja kirjannut soluihin intuitiivisesti niiden väliset "assosiaatioarvot" (välillä [0-1], 0=ei assosiaatiota, 1=maksimi yhteys). Sen jälkeen olen piirrättänyt oheisen kartan R:llä.<br /><br />Miksi tällainen kartta, mitä hyötyä siitä on?<br />Jos päässäsi on paljon asiaa, muttet pysty laittamaan pääasioitasi järjestykseen, voit verrata jokaista valitsemaasi käsitettä muihin käsitteisiin kirjaamalla niiden assosiaatioarvot taulukkoon (siis arvioiden esim. välillä 0-1) hyvin mekaanisella tavalla koettamatta sen enempää hahmottaa, mikä on aihealueen kokonaiskuva. Sen jälkeen moniulotteisella skaalauksella tai vastaavilla menetelmillä voi luoda itselleen oheisen tyyppisen kartan. R:ään löytyy valmiina sna-niminen kirjasto, joka sisältää gplot-komennon, jolla oheinen kuva on tehty. gplot() piirtää myös assosiaatioita kuvaavat nuolet, toisin kuin esim. peruspakettiin sisältyvä moniulotteisen skaalauksen luova mds-komento.<br /><br />Ideaa käsittelevä sivu löytyy <a href="http://weightedassociationmap.blogspot.com/">täältä</a>.<br /><br />Algoritmi PAK:n tekemiseksi R:llä:<br /><br /><span style="font-size:85%;"><span style="font-family:courier new;"># Käsitteiden nimet vektoriin.<br /><br /></span></span><span style="font-size:85%;"><span style="font-family:courier new;">TERMIT=c("mittaaminen","luokittelu","stokast_pros","tulkinta","joukkoteoria","primaarimuoto", "sumea_mittari", "dyn_kuvaus","keskiarvo_kuvaus")</span><br /><br /><span style="font-family:courier new;"># matriisin alustaminen, nollat NA:iden paikalle (ei välttämätön):</span><br /><span style="font-family:courier new;">KASITEMATRIISI<-diag(length(TERMIT)) # luodaanpa saman tien ns. identiteettimatriisi</span><br /><br /><span style="font-family:courier new;"># nimet riveille ja sarakkeisiin</span><br /><span style="font-family:courier new;">row.names(KASITEMATRIISI)<-TERMIT</span><br /><span style="font-family:courier new;">KASITEMATRIISI=t(KASITEMATRIISI) </span><br /><span style="font-family:courier new;">row.names(KASITEMATRIISI)<-TERMIT</span><br /><br /><span style="font-family:courier new;">fix(KASITEMATRIISI)# Tämä komento avaa taulukon, jonka avulla on helppo sijoittaa arvot paikalleen, kirjoita arvot vain soluihin ykkösten alle, seuraava luuppi luo symmetrisen matriisin. Aloita kaksoisklikkaamalla soluun rivillä 2, sarakkeeseen 1 ja kirjoita esim. ".5". Sen jälkeen paina enter ja kirjoita seur. soluun arvo.</span><br /><br /><span style="font-family:courier new;">for(i in 1:length(KASITEMATRIISI[,1]))</span><br /><span style="font-family:courier new;"><span style="font-weight: bold;">{</span> # huom. kaarisulut "<span style="font-weight: bold;">{</span>"</span><br /><span style="font-family:courier new;"> for(j in 1:length(KASITEMATRIISI[,1]))</span><br /><span style="font-weight: bold;font-family:courier new;" > {</span><br /><span style="font-family:courier new;"> KASITEMATRIISI[i,j]=KASITEMATRIISI[j,i]</span><br /><span style="font-weight: bold;font-family:courier new;" > }</span><br /><span style="font-weight: bold;font-family:courier new;" >}</span><br /><br /></span><span style="font-size:85%;"><span style="font-family:courier new;"># ladataan sna-kirjasto, hae se kuitenkin ensin: install.packages("sna")</span></span><br /><span style="font-size:85%;"><span style="font-family:courier new;">library(sna)</span><br /><span style="font-family:courier new;"><br /># Tehdään kuva:<br /><br />set.seed(123)</span><br /><span style="font-family:courier new;">kor <- cor(KASITEMATRIISI)</span><br /><span style="font-family:courier new;">X11() # avaa ikkunan kuvaa varten, Winissa voi käyttää window(), Macissa quartz()</span><br /><span style="font-family:courier new;">gplot(sign(kor), edge.lwd = 10*kor, displaylabels = TRUE, label = rownames(kor), vertex.cex=as.vector(colSums(KASITEMATRIISI))/2) </span><br /><span style="font-family:courier new;"># kokeile myös parametrilla mode="mds" eli:</span><br /><span style="font-family:courier new;">#gplot(sign(kor), edge.lwd = 10*kor, displaylabels = TRUE, label = rownames(kor), mode="mds") </span><br /><br /><span style="font-family:courier new;">title("Painotettu assosiaatiokartta - Weighted Association Map", cex.main=2)</span></span>Atte Tenkanenhttp://www.blogger.com/profile/15293915837170678092noreply@blogger.com0tag:blogger.com,1999:blog-19752956.post-1153590679362531952006-07-22T10:47:00.000-07:002006-07-22T10:51:19.396-07:00Rekursio R:lläR:llä voi tehdä myös rekursiivisen kutsun, jossa siis funktion sisällä kutsutaan funktiota itseään:<br /><br /><span style="font-family: courier new;"># Funktio kertoma rekursiona R:llä:<br /></span><br /><span style="font-family: courier new;">kertoma <- function(luku){</span><br /><span style="font-family: courier new;"> if (luku > 1){</span><br /><span style="font-family: courier new;"> return(kertoma(luku-1)*luku)}</span><br /><span style="font-family: courier new;"> else return(1)</span><br /><span style="font-family: courier new;">}<br /><br /># Esimerkki funktion käytöstä:<br />#> kertoma(7)<br />#[1] 5040<br /></span>Atte Tenkanenhttp://www.blogger.com/profile/15293915837170678092noreply@blogger.com0tag:blogger.com,1999:blog-19752956.post-1153562663872378152006-07-22T03:02:00.000-07:002006-07-22T03:04:23.883-07:00R-wiki netissäR:ää käsittelevä wiki löytyy osoitteesta<br /><a href="http://wiki.r-project.org/rwiki/doku.php">http://wiki.r-project.org/rwiki/doku.php</a><br /><br />Olen alustavasti katsellut jonkinlaisen R-pikakurssin sisältöä kevään kurssin pohjalta ja toivon saavani sen valmiiksi elokuun aikana.Atte Tenkanenhttp://www.blogger.com/profile/15293915837170678092noreply@blogger.com0tag:blogger.com,1999:blog-19752956.post-1148847701860686832006-05-28T13:17:00.000-07:002006-05-28T13:22:16.476-07:00Tilastotiedettä soveltajilleTommi Viitasen opuksen "Tilastotiedettä soveltajille" pdf-versio löytyy osoitteesta<br /><a href="http://users.utu.fi/totavi/">http://users.utu.fi/totavi/</a><br />Kirjassa neuvotaan, kuinka tilastolaskennan perusmenetelmät hoituvat R:llä. Jostain syystä sivua ei löydy enää Googlettamalla. Laitoin sen siksi tänne.Atte Tenkanenhttp://www.blogger.com/profile/15293915837170678092noreply@blogger.com0tag:blogger.com,1999:blog-19752956.post-1148589139038609362006-05-25T13:26:00.000-07:002006-05-25T13:39:03.806-07:00Kurssin loppuraportti 24.5.2006Tein yliopistopedagogiikan kurssia varten loppuraportin tästä hankkeesta ja ohessa on sen tiivistelmä.<br /><br />Turun yliopisto<br />Yliopistopedagogiikan<br />hankeraportin tiivistelmä<br />Atte Tenkanen<br />24.5.2006<br /><br /><div style="text-align: center;"><span style="font-weight: bold;">Tietokoneavusteinen musiikintutkimus (S1f, 7 op)</span><br /><span style="font-weight: bold;">Pioneerikurssi - niin itselleni kuin oppiaineelleni<br /><br /></span></div>Kurssi Tietokoneavusteinen musiikintutkimus (S1f, 7 op) kuului osana Turun yliopiston, Åbo Akademin ja Turun ammattikorkeakoulun Musicare- yhteishanketta. Kurssille ilmoittautui alun alkaen 9 ihmistä ja sen kävi loppuun 6. Luennot pidettiin perjantaiaamuisin klo 8.30-10.00. Vastaavaa kurssia ei ole Turun yliopiston musiikkitieteen oppiaineessa aikaisemmin järjestetty, joten kyseessä oli pioneerityö. Sitä se oli myös itselleni, joten odotin alusta asti haasteita.<br /><br />Asetin kurssille moniakin tavoitteita, mutta toisaalta lähdin liikkeelle sillä periaatteella, että katsotaan, mitä ehditään. Tärkein tavoitteistani oli esitellä erilaisia mahdollisuuksia kvantitatiivisten musiikkiaineistojen analyysiin. Tämä tavoite lienee täyttynytkin, muut tavoitteista jäivät enemmän tai vähemmän saavuttamatta. Asetin itselleni opettajana tavoitteeksi sen, että oppiminen ja opitut asiat koetaan mielekkäiksi ja mielenkiintoisiksi.<br /><br />Sain hyviä neuvoja ja ideoita yliopistopedagogiikkakurssilta ja järjestelin aihealueeseen liittyviä asioita mm. mind mapin avulla. Valmista kurssimateriaalia en löytänyt, vaan valmistin sen käytännössä itse. Halusin rakentaa kurssin alusta lähtien mahdollisimman hyvin, mutta huomasin pian, ettei aika riitä lainkaan kaikkeen siihen, mitä olin suunnitellut ja mitä tuli oppituntien valmistamiseen. Tein luentoja varten powerpoint-esityksiä ja algoritmejä, jotka kaikki löytyvät kurssiani varten perustamaltani weblog-sivulta.<br />(ks. http://musiikintutkimus.blogspot.com , ts. tämä sivu ;-).<br /><br />Tein 1. periodin lopuksi välitentin, jonka tarkoituksena oli kartoittaa sitä, miten asiat oli ymmärretty. Perustin lopuksi antamani arvosanat pitkälti tämän tentin arvosanoihin. Toisella periodilla kahden opiskelijan esittelemät omat sovellukset toivat lisää mielenkiintoa ja sisältöä kurssiin. Koin nämä luennot itse erityisen antoisiksi.<br /><br />Ohessa muutamia poimintoja saamastani palautteesta kysymykseen, vastasiko kurssi odotuksiasi?<br /><br />“Osittain. Aiheen esittelemisen osalta kurssi toimi mallikkaasti. Tunneilla näytettiin laaja kirjo erilaisia sovellusmahdollisuuksia. Nämä näytteet olivat mielestäni onnistuneesti valittu.”<br /><br />“Odotin kurssilta ehkä ripauksen enemmän myös käytännönläheisyyttä.”<br /><br />Pelkäsin hiukan sitä, että kurssista tulee liian raskas kotitehtävineen, jos se on sitä jo teoreettisten käsitteidensä puolesta. Asioiden opiskeluun liitettävät "ajattelua aktivoivat" tehtävät jäivät puuttumaan ja niin muodoin myös palautteen antaminen opiskelijoille. Kurssini luennoille poikkesi kaksi yliopistopedagogiikkaan osallistunutta henkilöä ja heiltä saamani palaute oli - oikeastaan yllättäen - rohkaisevaa. Tämä antaa itselleni itsevarmuutta mahdollisesti tuleviin tehtäviin.<br /><br />Opin kurssin aikana paljon. Siitä oli minulle itselleni hyötyä niin opettajana kuin myös aiheeseen liittyvien uusien ideoiden ja syntyneiden sovellusten vuoksi. Yliopiston viikkoluentoihin perustuva opetus on monessa tapauksessa ehkä ainoa mahdollinen opetusmalli, mutta pienemmissä oppiaineissa ja esimerkiksi oman kurssini tyyppisissä tilanteissa intensiivinen, esimerkiksi viikon pituinen periodi, jossa työskenneltäisiin vaikkapa 6 tuntia päivässä, toimisi varmasti paremmin kuin pitkin periodeja levitetyt tunnit.<br /><br />Kurssia varten valmistamastani materiaalista on nyt helpompi lähteä eteenpäin, mikäli vastaavantyyppiselle kurssille on joskus tarvetta. Tarkoitukseni on joka tapauksessa järjestää kurssin aikana valmistamani ohjelmointiin liittyvä materiaali käyttökelpoiseksi oheismateriaaliksi esimerkiksi itseopiskelua varten kommentteineen. Saattaapa ohjelmointiin keskittyvä intensiivikurssikin vielä toteutua.Atte Tenkanenhttp://www.blogger.com/profile/15293915837170678092noreply@blogger.com0tag:blogger.com,1999:blog-19752956.post-1146591655580933932006-05-02T10:38:00.000-07:002006-05-09T22:46:03.023-07:00Kevään viimeinen luento 16.5. klo 15Sovimme, että viimeinen tapaaminen on ti 16.5. klo 15.<br /><br />Tiistaina ajattelin tarkastella yläsävelsarjaa. Asiahan on ollut ajankohtainen aina Pythagoraasta lähtien ja jaksaa yhä kiinnostaa. Sovelluksia voisi kuvitella löytyvän myös vaikka kuinka paljon. Liittyyhän yläsävelsarja tavalla tai toisella esimerkiksi sellaisiin käsitteisiin kuin äänen väri, intonaatio, (spektraali-)harmonia, asteikot, viritysjärjestelmät, tonaalisuus, konsonoivuus, dissonoivuus ym. ym. Esim. kritisoidulle Krumhansl-Kessler-algoritmille voisin kuvitella kehitettävän yläsävelsarjaa hyödyntävän vastineen, rinnakkaisen algoritmin, joka perustuisi puhtaasti matemaattisiin suhteisiin toisin kuin K-K-systeemi. Se, olisiko sillä jotain yhteyttä havaintoon tai tonaalisesti suuntautuneeseen korvaan, on eri juttu. Myös Huronin konsonanssifunktion tapainen yläsävelsarjaan perustuva konsonoivuutta mittaava systeemi lienee mahdollinen (?)<br /><br />Jos haluat laskea tasavireisen järjestelmän taajuudet (a1=440 Hz), ne saa oheisella funktiolla.<br /><br /><span style="font-weight: bold;font-family:courier new;" >pitchfreq=function(n){27.5*2^((n-21)/12)}</span><br /><br />Funktiolle annetaan syötteenä midisävelkorkeus. 27.5 Hz on alimman pianosta löytyvän sävelen taajuus. Taajuus kasvaa eksponentiaalisesti suhteessa puolisävelaskeliin tuollaisella kaavalla. Kokeile:<br /><br /><span style="font-weight: bold;font-family:courier new;" >pitchfreq(60); # c1<br />pitchfreq(69); # a1</span><br /><br />Jos haluat tulostaa kaikki pianosta löytyvät perustaajuudet, kokeile:<br /><br /><span style="font-weight: bold;font-family:courier new;" >for(n in 21:108){print(pitchfreq(n))}</span><br /><br /><br />Oheinen kuva on luotu skriptillä, joka koettaa sovittaa yläsävelsarjaa annettuun sävelkorkeuksien joukkoon ja tulostaa tämän harmonian todennäköisen pohjasävelen. Funktiossa on vielä parantamisen varaa... Parsifal-alkusoitosta on laskettu tahtikohtaisesti pohjasävelet. Klikkaa kuvaa nähdäksesi sen suurempana.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3045/1961/1600/Parsifal_pohjas.0.jpg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger/3045/1961/320/Parsifal_pohjas.0.jpg" alt="" border="0" /></a><br /><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3045/1961/1600/Parsifal_pohjas.jpg"><br /></a>Atte Tenkanenhttp://www.blogger.com/profile/15293915837170678092noreply@blogger.com0tag:blogger.com,1999:blog-19752956.post-1145959806462147672006-04-25T03:04:00.000-07:002006-04-27T22:20:14.953-07:00Luento 28.4.2006TARKENNUST OHJELMA:<br /><br />Jaa mut juu ny onki sit miälenkiintost asiaa luvas ku Jop kertoo kui hää o analysoinu muutamii kansansävelmämelodioit tiatokoneel. Tehrääki nii, et mää lyhyest ota alux yhe näkökulma Henteli Messias-oratoorio teemoihi ja sit nautita toi Jopi juttu.<br /><br /><a href="http://users.utu.fi/attenka/Messias_motives.csv">Messias_motiivit</a><br /><br />***<br /><br />Tää seuraava oli si vanhaa tiatoo:<br /><br />Juu mää ajatteli iha alux hiukka vanhoi pikasest kerrat ja sit käyrä hiukka tota tilastotieret viel läpi samal taval ku viime kerral, sillee ärrää näpsytelle.<br /><br />Ja sit pitäs päättä tehrääks perinteine tent vai ollaanx Henteli ääres hiukka pitemppä. Äänestettä siit sit viel.<br /><br />Ja sit jos Jop viel esittele lyhykäisest sit skriptiäs.Atte Tenkanenhttp://www.blogger.com/profile/15293915837170678092noreply@blogger.com0tag:blogger.com,1999:blog-19752956.post-1145342619438459862006-04-17T23:40:00.000-07:002006-04-25T03:04:12.393-07:00Luennot 21.4.2006Tein keinotekoisen aineiston, joukon lyhyitä vektoreita, jotka voisivat kuitenkin kuvata jotain musiikillista ominaisuutta. Teemme näistä kuvaajia, vertailemme ja järjestämme niitä eri tavoin. Kysymme, mitkä hahmot ovat keskenään samanlaisia ja millaisia ryhmiä muodostuu? Kyse on siis eräänlaisesta alkeellisesta hahmontunnistuksesta. Basic-juttu, mutta naputellessamme jotain jää selkärankaankin...<br /><br />Skriptit <a href="http://users.utu.fi/attenka/R_SKRIPTIHARJOITUS060421">täällä</a>...<br /><br />Näillä luennoilla käymme läpi R:ää naputellen. Tuon reference-card-monisteita mukanani, mutta jos niitä löytyy omasta takaa, ottakaa mukaan. Saamme professoristason vieraan 21.4. joten toivottavasti kaikki pääsevät skarppina mukaan ;-)Atte Tenkanenhttp://www.blogger.com/profile/15293915837170678092noreply@blogger.com0tag:blogger.com,1999:blog-19752956.post-1144336037363875042006-04-06T07:46:00.000-07:002006-04-06T11:47:32.426-07:00Luento 7.4.2006<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3045/1961/1600/salaperainenkuva.jpg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger/3045/1961/320/salaperainenkuva.jpg" alt="" border="0" /></a><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><span style="font-size:85%;">Jotain tuolla tuneR:lläkin voi tehdä???</span><br /><br />Kurssia on vielä kolme kertaa jäljellä ja toivottavasti jonkinlainen haju on tullut siitä, mitä musiikintutkimuksen parissa tietokoneella voi esimerkiksi tehdä. En alun alkaenkaan asettanut mitään ehdottomia päämääriä, vaan lähdin liikkeelle sillä periaatteella, että katsotaan mitä ehditään. Artikkelin tekeminen on edelleenkin mahdollista ja sen voisi tehdä niin, että teen analysoitavat matskut ja skriptit valmiiksi analyysia varten ja sitten yhdessä tehdään pieni juttu niiden avulla. Sitä ei kuitenkaan ehdi yhden luennon aikana eikä ihan parinkaan vaan pitäisi viettää jokin kokonainen aamu- ja iltapäivä sen parissa. Jos sellaista halutaan, se sopii minulle.<br /><br />Kahtena seuraavana kertana ajattelin kuitenkin keskittyä täysin R:n käyttöön, koska siitä saattaa olla nyt eniten hyötyä. Aikaisemmilla kerroilla on ollut esillä joitain mahdollisia lähestymistapoja, joiden pohjalta on toivottavasti syntynyt käsitys, että tietokone voi olla hyvinkin sopiva väline musiikintutkimukseen ja että se ei välttämättä ole niin monimutkaista, etteikö - ainakin konsultaation avittama - voisi joskus itsekin tehdä jotain tietokoneen kanssa.<br /><br />Ajattelin 7.4. aluksi kerrata joitain asioita yhteenvedonomaisesti ja sen jälkeen testata hiukan tuneR-pakettia, joka on tehty äänenkäsittelyä varten. Itse en juuri tiedä äänen tutkimisesta oikeastaan mitään, mutta sehän ei toivottavasti menoa haittaa ;-) Jos JP, Juha, Jopi tai joku muu tietää jotain, älkää jättäkö kynttiläänne vakan alle. Ajattelin, että katsotaan <a href="http://mirrors.dotsrc.org/cran/doc/packages/tuneR.pdf">tuneR-dokumentaatiota</a> sillä silmällä, mitä se sisältää noin pääpiirteissään ja mitä siitä pystymme ymmärtämään. Wavista on kysymys ja jonkinlainen linkki paketissa näyttää olevan jopa lilypond-nuotinkirjoitusohjelmaan.<br /><br />tuneR:n käyttö vaatii paketin lataamista koneelleen:<br /><br /><span style="font-family:courier new;">install.packages("tuneR") # tai sitten sieltä komentovalikosta graafisesti...<br /><br /><span style="font-family: arial;">Brahmsin soittoa vaharullalta tuneR-testejä varten:</span><br /><a href="http://www.measure.demon.co.uk/sounds/brahms2.wav"><span style="font-family: arial;">brahms2.wav</span></a><br /></span>Atte Tenkanenhttp://www.blogger.com/profile/15293915837170678092noreply@blogger.com0tag:blogger.com,1999:blog-19752956.post-1143665028608497112006-03-29T12:33:00.000-08:002006-03-29T12:46:43.810-08:00Luento 31.3.2006<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3045/1961/1600/Erotukset_Taulukko1_3.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/3045/1961/400/Erotukset_Taulukko1_3.jpg" alt="" border="0" /></a><br />Juha R. esittelee hiukan omaa rytmiin liittyvää tutkimustaan ja sen pohjalta minä puolestani kerron plottaukseen eli kuvien piirtämiseen liittyvistä komennoista ja parametreista, regressiosuoran piirtämisestä, moniulotteisen skaalauksen tekemisestä R:llä ja jälleen kerran korrelaatiotesteistä. Keskihajontaakin tulee vielä hiukan demottua. Oheisen kuvan sisältökin selvinnee perjantaina. Kerrottakoon jo tässä vaiheessa, että siinä mm. ajanhetkellä 333 s kolmen koehenkilön komppi on kääntynyt upbeatiksi. Kuvaa klikkaamalla sen saa näkyviin suurempana.Atte Tenkanenhttp://www.blogger.com/profile/15293915837170678092noreply@blogger.com0tag:blogger.com,1999:blog-19752956.post-1143136972149642062006-03-23T09:14:00.000-08:002006-03-23T13:09:40.873-08:00Luento 24.3.2006<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3045/1961/1600/with6.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/3045/1961/400/with6.jpg" alt="" border="0" /></a> With 6. Blues mode 2 (21211212) merkattu sinisellä.<br />Kiirettä pitää... mutta tässä <a href="http://users.utu.fi/attenka/with6.txt">blues mode2 -skripti</a> alta löytyvän csv-fileen tutkimiseen.<br /><br />Kokeilin nuita skriptejä yliopistolla tänään windowsissa ja nyt ne latautuvat ja toimivat. Testataan niiden käyttöä vielä Juhan <a href="http://users.utu.fi/attenka/with6.csv">transkription</a> kohdalla. Tämän jälkeen jätetään joukkoteoria, jos ei kokonaan, niin ainakin joksikin aikaa. Sen erään Händel-motiivianalyysin olen ajatellut vielä toteuttaa...<br /><br />Pidin tänään to 23.3. esitelmän ÅA:n symposiumissa "Sävellyksen harmonisen koherenssin mittaaminen vertailujoukkoanalyysin ja siirtymätodennäköisyysmatriisien avulla" ja voisin pikaisesti vilauttaa joitakin siihen liittyviä periaatteita, sillä aikaa kun nuo skriptit latautuvat koneille... Symposiumi jatkuu ja kannattaa katsoa, olisiko siellä jotakin kiinnostavaa. Osallistumismaksu on opiskelijoilta 5 e/pvä.<br /><br />Tässä vielä laiton nuottikopio Juhan <a href="http://users.utu.fi/attenka/with6.pdf">transkriptiosta</a>...Atte Tenkanenhttp://www.blogger.com/profile/15293915837170678092noreply@blogger.com0tag:blogger.com,1999:blog-19752956.post-1142672251495912402006-03-18T00:53:00.000-08:002006-03-18T14:03:28.706-08:00SetTheoryScripts again<pre style="font-family: arial;">Tein vielä erään lisäyksen kellokuva-skriptiin eli nyt se näyttää myös<br />Larry Solomonin taulukossaan (<a href="http://solomonsmusic.net/pcsets.htm">http://solomonsmusic.net/pcsets.htm</a>)<br />esittämät joukkoluokkia karakterisoivat nimitykset.<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3045/1961/1600/14.jpg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger/3045/1961/320/14.jpg" alt="" border="0" /></a><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />Noin 37 kokeen jälkeen sain kuin sainkin tuon <a href="http://users.utu.fi/attenka/SetTheoryScripts.r">SetTheoryScripts</a>-tiedoston<br />windowsissani toimimaan. En kyllä tiedä miksi. Kokeilin kaikenlaista,<br />erilaisia tekstikoodauksia tallennettaessa ja myös tallennuksia eri<br />ohjelmilla.<br /><br />Nyt oheista liitteenä olevaa tiedostoa voisi kokeilla windowsissa. Mikäli<br />c-asemaan on lisäksi sijoitettu oheinen "<a href="http://users.utu.fi/attenka/4.csv">4.csv</a>" -tiedosto, sille tehdään<br />koodiin sisältyvät kokeet.<br /><br />Ensin pitää kuitenkin ladata netistä grid- ja gtools -paketit komennoilla<br /><br /><span style="font-family:courier new;">install.packages("grid")</span><br /><span style="font-family:courier new;">install.packages("gtools")</span><br /><br />Sen jälkeen valitse File-valikosta komento "Source R code..." ja yllä linkistä<br />löytyvä tiedosto<br /><br />"SetTheoryScripts"<br /><br />Sen jälkeen kestää tovin - pieni kahvipaussi Euroshopper<br />persikka-passiohedelmä-jugurtin kera nautittuna (tällöin mikään ei ole<br />niin ihanaa kuin R-istunto) voi olla paikallaan - ennenkuin funktiot on<br />ajettu.<br /><br />Tämän jälkeen voi katsoa komennolla<br /><br /><span style="font-family:courier new;">ls()</span><br /><br />mitä funktioita onnistui ajamaan ja kokeilla vaikkapa funktiota pitchclock<br />tai rel2 luennolla esitellyllä tavalla, esim.:<br /><br /><span style="font-family:courier new;">X11(); pitchclock(c(4,8,3));</span><br /><br /><span style="font-family:courier new;">rel2("3-11A","3-11B");</span><br /><br />Laitoin skripteihin funktioiden ajon jälkeen <span style="font-family:courier new;">save.image() </span>-komennon,<br />jolloin RData-nimiseen tiedostoon jonnekin R:n kansioissa jää nuo<br />muuttujat ja funktiot muistiin. Silloin seuraavan kerran, kun R<br />käynnistetään, ne latautuvat valmiiksi. Nyt kannattaa osallistua Tiinan<br />joukkoteoreettisille kursseille ja kerätä muutama opintopiste kotiin<br />tekemällä jokin yksinkertainen joukkoluokka-analyysi Schönbergin musiikista<br />tai mitä siellä käsitelläänkin...<br /><br />Jostain syystä muutamat rivit ovat ilmeisesti windowsin R-editorille liian<br />pitkiä (joukkoluokkatiedot sisältävät rivit), minkä vuoksi funktioiden ajo<br />ei editorista copy-pastaamalla suoraan onnistu vaan pitää ottaa tuo<br />File-valikon "Source R code..."-komento. Kuitenkin Bach-analyysit<br />onnistuvat copy-pastaamallakin, jos ne keskeytyvät jostain syystä. Näin<br />kävi kerran itse kokeillessani ajoa.<br /><br /><span style="font-family:courier new;">lines()</span>-komennon parametreihin ei näköjään saisi antaa y-akselille rajoja<br />tapaan "ylim=c(luku,luku)". Siitä johtuu muutama varoitus ajon aikana.<br /><br />MacOSX- ja linux-käytössä pitää Bach-analyysin suorittamiseksi tsekata<br />oheiset polkumääritykset.<br /><br /><span style="font-family:courier new;">#MAC:</span><br /><span style="font-family:courier new;">#Compo=read.table("/Users/4.csv",na.strings=".",header=F);</span><br /><span style="font-family:courier new;">#attach(Compo);</span><br /><span style="font-family:courier new;">t1=proc.time();</span><br /><br /><span style="font-family:courier new;">#LINUX:</span><br /><span style="font-family:courier new;">#Compo=read.table("/home/atte/4.csv",na.strings=".",header=F);attach(Compo);</span><br /><br /><br /></pre>Atte Tenkanenhttp://www.blogger.com/profile/15293915837170678092noreply@blogger.com0tag:blogger.com,1999:blog-19752956.post-1142372489529201602006-03-14T13:29:00.000-08:002006-03-16T20:39:33.180-08:00Luento 17.3.2006Luennon materiaalia löytyy täältä:<br /><br /><a href="http://users.utu.fi/attenka/TKAvustMusTutk060317.pdf">TKAvustMusTutk060317.pdf</a><br /><br />Lisäilin jotain ja korjailin hiukan noita joukkoteoriaskriptejä. Tein mm. sävelluokkakellon tuottavan algoritmin. Esimerkkinä kellokuva, jolle on annettu syötteenä oheinen vektori. Syötteenä funktiolle voi antaa sävelluokkia tai midisävelkorkeuksia. Sisällytin funktioon huvikseni Huronin konsonanssiarvonkin.<br /><br />X11(); pitchclock(c(5,4,8,10,1,8,12));<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3045/1961/1600/pc_clock_631B.jpg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger/3045/1961/320/pc_clock_631B.jpg" alt="" border="0" /></a><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />Viimeksi jäi tuo joukkoteoreettinen analyysi esittelemättä ja ajattelin käydä hiukan läpi noita joukkoteoreettisia funktioita. Joukkoteorian perusteet eivät ole välttämättä kaikilla hanskassa, mutta sen avulla voi kuitenkin saada ihan ymmärrettäviä tuloksia.<br /><br />Joukkoteoriaa käyttävät paitsi musiikkianalyytikot, myös säveltäjät yhä enenevässä määrin sen vuoksi, että nykyaikana harmonioita ei useinkaan pysty kategorisoimaan muulla tavoin kuin joukkoteoreettisesti. Kalev Tiits puhuu Musiikki-lehden 1-2/2005 numerossa artikkelissaan <a href="http://www.musiikkilehti.fi/1-2005/4.pdf"><span style="font-style: italic;">Hahmoetäisyyksien mittausmenetelmistä</span><br /><span style="font-style: italic;">aikasarjoissa ja musiikin vektoriesityksissä</span></a> joukkoteorian "ajankohtaisuudesta" (s.64) varsin lämpimin sanoin.<br /><br />Sävelluokkiin perustuvaan joukkoluokitukseen on koetettu kehittää myös laajennuksena sävelalat huomioonottavia teorioita. Tällaisia on Marcus Castrenin kehittämä "sointuluokitus". Tämä muistui mieleen siitä Jopin Huronin konsonanssifunktioon liittyvästä kritiikistä (mikä oli aivan oikeutettu). Konsonoivuuteenhan (ja sonoriteettiin?) vaikuttaa ennenkaikkea sävelten asema sävelalassa. Esim. kromaattisen klusterin sävelluokat tarpeeksi laajalle alueelle hajautettuna tai suhteessa bassoon riittävän korkealle asetettuina soivat paljon konsonoivammin kuin oktaavin sisään ahdettuna, joka Huronin intervalliluokkiin perustuvassa funktiossa on ikäänkuin oletuksena. Castrenin ratkaisun tapaan voisi kehittää myös tuota Huronin menetelmää tai niin, että sävelten suhde sitä alempien sävelten yläsävelsarjaan otettaisiin huomioon. Tässä jollekin elämäntehtävä.<br /><br />Toisena tapauksena esittelen Huronin konsonanssifunktiolla tehdyn analyysin, joka kohdistuu melodiaan. Tämä taisi olla JP:n idea.<br /><br />Melodian konsonoivuuden tutkimisesta tuli myös mieleen, että joku voisi joskus tutkia sitä, mitkä asiat vaikuttavat melodian solfaamisen vaikeuteen ja laulettavuuteen. Tietysti toiset intervallit ovat keskimäärin vaikeammin tuotettavissa kuin toiset (esim. tritonus on hankalampi laulaa kuin puhdas kvartti jne), mutta myös tonaalisella ympäristöllä on merkitystä. Jos melodian rytmi unohdetaan, voisi luoda Huronin konsonanssiprofiilin tyyppisen vektorin tai itse asiassa markovin ketjuilla asia onnistuisi paremmin, koska silloin voisi ottaa paremmin huomioon intervalleja ympäristössään, pitemmältä matkalta. Tällaisen matriisin luomiseksi tarvittaisiin monia kokeita vaikkapa solfaopiskelijoiden keskuudessa. Laulatettaisiin monia erilaisia melodioita ja virhepaikat merkattaisiin muistiin (+ tietty määrä sitä edeltäviä intervalleja). Kun matriisi olisi luotu, voitaisiin laskea vaikkapa Modus novus- opuksen kullekin melodialle vaikeusaste:-)<br /><br />JP kyseli tyyppiarvon eli <span style="font-weight: bold;">moodin</span> tuottavaa funktiota R:ssä. En löytänyt sellaista, mutta kyseessähän on tunnusluku, joka kuvaa sitä, mitä arvoa muuttujassa on eniten. Sen saa esimerkiksi näin:<br /><br /><span style="font-family:courier new;">tyyppiarvo <- function(vektori)</span><br /><span style="font-family:courier new;">{</span><br /><span style="font-family:courier new;">frekvenssitaulukko=table(vektori)</span><br /><span style="font-family:courier new;">maxmaara=max(frekvenssitaulukko)</span><br /><span style="font-family:courier new;">lukuarvo=as.double(names(frekvenssitaulukko[rev(order(table(vektori)))[1]]))</span><br /><span style="font-family:courier new;">return(list(lukuarvo=lukuarvo, maxmaara=maxmaara))</span><br /><span style="font-family:courier new;">}</span><br /><br /><br />eli kuinka paljon tiettyä lukua on enimmillään saadaan siten, että vektorin luvuista muodostetaan frekvenssitaulukko (table), josta lasketaan maksimifrekvenssi. Tämä sijoitetaan muuttujaan "maxmaara". Itse tyyppiarvoa varten täytyy frekvenssitaulukko järjestää frekvenssien mukaan (order). Sen jälkeen käännetään (rev) tulos, niin että se indeksi, joka on saanut eniten osumia, tulee ensimmäiseksi ja lopuksi poimitaan (names-komento ei poimi itse frekvenssiä vaan nimenomaan sen luvun, johon suurin frekvenssi liittyy, ikäänkuin rivin "nimen") tuo indeksillä 1 oleva luku ([1]). Tässä hiukan kehitin tuota funktiota niin, että nyt voidaan kutsua jompaa kumpaa<br />esim:<br /><br />1) jos halutaan tyyppiarvon esiintymisten lukumäärä:<br /><span style="font-family:courier new;">tyyppiarvo(c(6,5.5,4,5.5,4,2))$maxmaara<br /><br /></span>2) jos halutaan itse tyyppiarvo<br /><span style="font-family:courier new;">tyyppiarvo(c(6,5.5,4,5.5,4,2))$lukuarvo</span><br /><br />Midicsv:n antamien taulukoiden muokkaaminen R:ssä toimivaan muotoon vaatii aikalailla työtä. Löysin taas sellaisen midimuodon, joka vaatii omanlaistansa käsittelyä. Toimivan funktion luomisesta voi tulla pidempi projekti, mutta kuten Jopi totesi, jotta pääsisimme heti hommiin käsiksi, pitäisi tällainenkin R:ssä olla. Polyfoniset midit vaativat sitten oman käsittelyn, mutta kunhan saamme turhat röhnät pois, voisi luoda funktioita, jotka muokkaavat taulukon sopivaan muotoon erityyppisiä lähestymistapoja varten.Atte Tenkanenhttp://www.blogger.com/profile/15293915837170678092noreply@blogger.com0