Musiikki ja ohjelmointi

Johdanto

Ensimmäisen tehtävän tavoitteena on saada Sonic Pi asennettua ja kokeilla sen toimintaa.

Jos et vielä ole ladannut Sonic Pi:ta, saat sen ilmaiseksi osoitteesta:  sonic-pi.net 

Valitse sivulta oman käyttöjärjestelmäsi versio ja asenna se. [Jos käytät koulun kannettavaa tietokonetta etkä pysty asentamaan ohjelmia itse, tai haluat tarkemmat asennusohjeet, löydät tästä klikkaamalla asennusohjeet pdf-tiedostona. Voit toimittaa pdf:n koulusi tietohallinnolle.


Sonic Pi:n käyttöliittymä

Kun avaat ohjelman ensimmäistä kertaa, saattaa mennä hetki. Tästä ei tarvitse huolestua. Kun ohjelma aukeaa ensimmäisen kerran, se näyttää suurinpiirtein tältä:

Sonic Pi:n käyttöliittymä

Isoin ikkuna (1) on ohjelmointipaneeli, johon kaikki koodi kirjoitetaan. Ohjelmointikenttään on aluksi kirjoitettu tervetuloviesti. Tämän voi huoletta poistaa, sillä se ei vaikuta ohjelman toimintaan millään tavalla.

Kun avaat ohjelman ensimmäistä kertaa, ohjelmointipaneelin alla pitäisi näkyä apupaneeli (2). Apupaneelista löydät erittäin hyödyllisen tutoriaalin, tietoa Sonic Pi:n komennoista, äänistä ja soittimista, sekä liudan kiinnostavia esimerkkejä joihin palaamme pian.

Ohjelmointipaneelin yläpuolella on rivi nappeja (3), joilla voidaan ajaa (Run) tai pysäyttää (Stop) kirjoitettu ohjelma, sekä tallentaa ja avata koodinpätkiä. 

Näiden vieressä on rivi nappeja (4), joiden avulla voidaan näyttää tai piilottaa osa paneeleista sekä suurentaa tai pienentää tekstin kokoa.


Jos sinulla on ongelmia Sonic Pi:n avaamisessa kokeile ensiksi käynnistää kone uudelleen. Jos ohjelma ei siltikään lähde käyntiin, voit kopioida mahdollisen virhe-ilmoituksen ja liittää sen keskustelualueelle. 

Jos sinulla on hieman kokemusta tietoteknisestä ongelmanratkaisusta tai haluat oppia siitä, pääset tästä Sonic Pi:n ongelmanratkaisusivulle.


Ensimmäiset äänet

Vaihe 1
Kirjoita ohjelmointipaneeliin yhdelle riville alla oleva komento. Tämän jälkeen paina ohjelmointipaneelin yläpuolella olevaa Run-painiketta. Kuuletko äänen?
play 60
paina playtä

Jos et saa ääntä kuulumaan, kokeile seuraavaa:

Tarkista ensin ääniasetukset - ovatko äänet päällä ja onko äänentoistolaitteena tietokoneen kaiuttimet tai kuulokkeet? Langattomat Bluetooth kuulokkeet eivät toimi erityisen luotettavasti Sonic Pi:n kanssa, joten langallisten kuulokkeiden käyttö on suositeltavaa.

Jos kytkit kuulokkeet koneeseen etkä sen jälkeen kuullut ääntä, kokeile sulkea Sonic Pi ja avata se uudelleen niin, että kuulokkeet ovat jo yhdistettynä. 

Sonic Pi:lla saattaa aluksi kestää hetki ääniasetusten konfiguroinnissa. Jos et kuule ääntä ohjelman uudelleenkäynnistämisenkään jälkeen, kokeile käynnistää kone uudelleen.


Vaihe 2
Muuta play-komennon perässä olevaa numeroa eli parametriä. Kokeile esimerkiksi hieman suurempaa kuten 67 tai pienempää, kuten 57. Aina kun haluat kuulla muutokset koodiisi, sinun täytyy painaa Run-painiketta. Minkä vaihteluvälin numerot toimivat parhaiten playlle?

Numerot ja nuotit

Numerot perustuvat MIDI-standardiin, jossa nuotit ovat numeroitu matalimmasta korkeimpaan. 60 vastaa tässä merkintätavassa keski-C:tä. Sonic Pi:ssa on myös mahdollista käyttää nuottien nimiä seuraavalla merkintätavalla:

    play :C
    play :F5
    play :Eb3
    play :Fs6

Aloita nuotin nimen kirjoittaminen kaksoispisteellä. Tiedät, että kirjoitat nimeä kun teksti muuttuu pinkiksi. Nuotin nimen voi kirjoittaa joko isolla tai pienellä, sillä ei ole väliä. Nuotin nimen jälkeen sille on mahdollista antaa myös oktaavi, joka määrittää miten korkealta nuotti soitetaan. Jos haluat käyttää etumerkkejä, laita nuotin perään b (alennettu) tai s (korotettu). Huomaa, että Sonic Pi:ssa käytetään H:n sijaan B:tä, jolloin alennettu H on Bb.

Jos nuotit eivät ole sinulle tuttuja, ei hätää! Voit ihan yhtä hyvin käyttää numeroita - lopputulos on sama.

Idea- ja tuumausruutu
Numerot vastaavat pianon koskettimia, joten play 60 ja play :C4 saavat aikaan saman äänen. Mitä tapahtuu jos käytät desimaalilukuja, esimerkiksi play 60.5?

Melodian kirjoittaminen

Vaihe 3
Laita uusille riveille kaksi play-komentoa käyttäen eri numeroita kuten allaolevassa koodissa. Mieti mitä tapahtuu ennen kuin painat Run! Tapahtuiko mitä odotit?
    play 60
    play 64
    play 67

Sonic Pi soitti kaikki nuotit samaan aikaan joten saimme soinnun. Voit kokeilla muuttaa numeroita ja keksiä uusia sointuja. Saatoit ehkä ajatella, että Sonic Pi soittaisi nuotit erillään, melodiana, koska ovathan play-komennot selkeästi omalla rivillään. Periaatteessa näin tapahtuukin, mutta niin nopeasti ettei sitä ehdi huomaamaan. Tietokoneet ovat loistavia tekemään asioita nopeasti, mutta onnettomia tulkitsemaan ohjelmoijan ajatuksia. Tämän takia Sonic Pi:lle pitää erikseen kertoa, ettet halua kaiken tapahtuvan niin nopeasti kuin mahdollista! Tämä tapahtuu sleep komennon avulla.

Vaihe 4
Käytä sleep-komentoa playn väleissä. Sleepin jälkeen tuleva numero kertoo kuinka pitkään Sonic Pi odottaa. Yksi tarkoittaa yhtä iskua, joka tällä hetkellä tarkoittaa myös yhtä sekuntia. Kokeile myös muita arvoja sleepille.
    play 60
    sleep 1
    play 64
    sleep 0.5
    play 67
    sleep 1
Vaihe 5
Tee seuraavaksi lyhyt, vähintään kahdeksan play komennon mittainen melodia. Käytä myös muita sleep arvoja kuin 1. Voit käyttää nuottien nimiä, numeroita tai vaikka molempia sekaisin jos siltä tuntuu. Yleensä kannattaa kuitenkin olla johdonmukainen ja valita yksi tapa mitä käyttää. Muista, että voit soittaa useamman kuin yhden äänen kerrallaan! Jos sinusta tuntuu siltä ettet millään keksi hyvää melodiaa, koita tehdä mahdollisimman omituinen, häiritsevä tai hassu melodia.

Tempo

Tempo tarkoittaa sitä, miten nopeasti musiikki etenee. Saatoit ehkä kokeilla pienentää sleep arvoja melodian nopeuttamiseksi. Tämä toimii aluksi melko hyvin, mutta mitä jos sinulla on todella pitkä sävellys jonka haluaisitkin nyt soivan nopeammin? On aika työlästä ja turhauttavaa alkaa muuttamaan kaikkia sleep arvoja erikseen. Onneksi tempon vaihtaminen on helppoa Sonic Pi:ssa use_bpm-komennon avulla. use_bpm (huomaa alaviiva!) vaikuttaa kaikkiin sen jälkeen tuleviin komentoihin. Lisää se kappaleen alkuun muuttaaksesi koko sävellyksen tempoa. Tempo lasketaan iskuissa/minuutti (beats per minute= bpm). Oletuksena Sonic Pi:n tempo on 60 iskua minuutissa. Tämä tarkoittaa, että sleep 1 (eli yksi isku) kestää sekunnin. Kun iskuja minuutissa on 120, kaikki tapahtuu tuplasti nopeammin!

Vaihe 6
Laita use_bpm komento sävellyksesi alkuun ja anna sille haluamasi arvo. Vinkki: saat uuden rivin kaikkien rivien yläpuolelle kun menet ensimmäisen rivin alkuun ja painat enter.
    use_bpm 120
    play 62
    sleep 0.5
    play 64
    sleep 0.5
    play 65
    sleep 0.5
    play 67
    sleep 0.5
    play 64
    sleep 1
    play 60
    sleep 0.5
    play 62
    sleep 2
käytä tempoa

Toisto

Jos haluat toistaa osan melodiastasi, voit aina kopioida ja liittää play ja sleep komentoja toistensa perään. Koodista tulee kuitenkin nopeasti vaikealukuista eikä saman asian toistaminen muutenkaan ole kovin mielekästä hommaa. Nyt pääsemme asiaan, jossa tietokone on todella hyvä: saman asian tekeminen useaan kertaan, väsymättä ja valittamatta. Meidän täytyy ainoastaan osata kertoa koneelle mitä sen pitää tehdä. Sonic Pi:ssa toisto tapahtuu kertomalla ensin kuinka monta kertaa haluamme asian toistuvan, ja sen jälkeen määrittämällä koodiblokin, joka rajaa toistettavan alueen. 

    use_bpm 120
    play 60
    sleep 1
    3.times do
      play 64
      sleep 1
      play 67
      sleep 1
    end

Aluksi Sonic Pi tarvitsee numeron, joka on toistojen määrä. Tämän jälkeen laita heti numeron perään piste ja kirjoita times. Tämän jälkeen aloita koodiblokki do avainsanalla. Kaikki tästä rivistä end avainsanaan asti toistuu valitsemasi määrän. Kun painat run, Sonic Pi sisentää automaattisesti do ja end avainsanojen välisen alueen merkiksi koodiblokista.

Vaihe 7
Käytä toistokomentoa sävellyksessäsi. Voit esimerkiksi kokeilla miten todella nopeat tempot ja suuri määrä toistoja toimii yhdessä tai mitä tapahtuu jos laitat toistorakenteen toisen sisään. Muista, että jokainen do täytyy sulkea endillä. Älä murehdi koodisi musikaalisuudesta, tärkeintä on kokeilu ja hauskanpito!