Audiokoodausta
Sähköpostiin kolahti uusi lista Standford onlinen tulevista kursseista. Huomiota kiinnitti kurssi audiosignaalin käsittelystä musiikkisovelluksissa. Totesin kuitenkin, ettei juuri nyt ole aikaa lähteä sivupoluille ja ohitin asian. Samana päivänä törmäsin kuitenkin JuliaCon 2014 luentojen videoihin, joista yksi käsitteli reaaliaikaista audiota. Noh… jos sitä ihan vähän tutkisi aihetta ja selvittäisi miten Julia suhtautuu siihen.
Edellisen kerran kokeilin audiokoodailua vuosi sitten. Kävin Courseran kurssilla, jossa käytettiin ChucK-ohjelmointikieltä. Datajuttuihin tämä liittyi siten, että halusin kokeilla tiedon sonifikaatiota, eli generoida ääniä, ehkä jopa musiikkia, dataseteistä. Miltä pörssikurssit kuulostavat? Entä säätiedot? Homma jäi tuolloin kesken ja hautumaan toistaiseksi.
Yksi Julian perustavista ideoista on interaktiivisen ohjelmoinnin ja batch-ohjelmoinnin välisen kuilun häivyttäminen. Eli ei enää kahta eri ohjelmointikieltä: esimerkiksi Pythonia käyttöliittymässä ja C:tä ytimessä, kun tarvitaan nopeutta. Tämä ongelma esiintyy erityisesti tieteellisessä laskennassa, mutta myös reaaliaikaisessa audiossa. Eli Julia saattaisi soveltua tähänkin. AudioIO.jl on projekti, joka koittaa ottaa asiasta selvää.
En vielä kovin pitkälle päässyt, mutta ainakin paketin asennus onnistui ja random-tietokonepulinan generointi siniaaltoa taivuttamalla oli suoraviivaista:
using AudioIO
osc1 = SinOsc(440)
freqs = rand(100)*880 # 100 random frequencies 0-880hz
play(osc1)
for f in freqs
osc1.renderer.freq = f
sleep(0.2)
end
stop(osc1)
Linkit
- Audio signal processing for music applications - Standford Online
- JuliaCon 2014 videot - YouTubessa
- Introduction to Programming for Musicians and Digital Artists - Coursera
- ChucK - Strongly-timed, Concurrent, and On-the-fly Music Programming Language
- Graydon Hoare, technicalities: interactive scientific computing, Part 1 - pythonic parts / Part 2 - goldilocks languages
- AudioIO.jl - Simple Audio IO in Julia
- Sonification - Wikipedia
- ChucK-biisini Soundcloudissa
- ChucK-koodini Githubissa