Musiikkiohjelmointia – Sonic PI

SonicPI- ohjelman voi ladata täältä: http://sonic-pi.net/

SonicPI:llä tehty biisi voi kuulostaa vaikka tältä: Introduction

Käynnistäkää SonicPI- ohjelmat koneiltanne. Tutustutaan yhdessä käyttöliittymään, joka koostuu kolmesta pääikkunasta:

  • Ohjelmointipaneeli koodin kirjoittamista varten
  • Lokipaneeli koodin suorituksen seuraamista varten
  • Apupaneelista löytyy help, jossa hyödyllisiä esimerkkejä ja ohjeita koodaamiseen: komennoista, äänistä, efekteistä..

Tehdään yhdessä muutama kokeilu, jonka jälkeen voitte tehdä musaa itse. Tämä on ns. LIVE-koodausta ja sitä voisi verrata vaikka kitaran näppäilyyn. Muistakaa, että tässä musan tekemisessä ette voi tehdä virheitä, ainoastaan uusia ominaisuuksia !!

Koodausvinkki 1.
Koodatessa tarvii normaalitilanteessa vain vähän kirjoittaa tekstiä. Yleensä riittää, kun osaa kopioida koodia paikasta toiseen ja tehdä siihen tarvittavat muutokset.
Tunteeko porukka hiirellä kopioinnin, tai komennot CTRL+C ja CTRL+V ??
Jos kaikki ei tunne, niin näytän projektorilla yhteisesti.

MELODIAN SOITTAMINEN:

Avaa Apupaneelista vasemmalta Tuturial ja sieltä 2.1 Your first beeps- kappale.

  • Kokeillaan koodata ääniä.
    Kirjoittakaa ensin PLAY 70. Miltä kuulostaa?
    Kokeilkaa sitten muuttaa numeroa, mitä vaikutti?HUOM: voit kopioida esimerkkikoodit tästä sivulta!!
   play 70
  • Sitten voit laittaa useamman äänen peräkkäin. Kokeile!
play 72
play 75
play 79
  • Huomasit varmaan, että äänet eivät soi peräkkäin, vaan yhtäaikaa.
  • Melodian saa aikaan laittamalla SLEEP- komentoja PLAY-komentojen väliin.
    SLEEP 1 = odottaa kokonaisen iskun. Mitä pienempi arvo, sitä lyhyemmän aikaa odotetaan.
play 72
sleep 1
play 75
sleep 1
play 79
  • Jos hallitset nuotit, voit käyttää myös kirjamia numeroiden tilalla.
play :C
sleep 0.5
play :D
sleep 0.5
play :E
  • Jos tunnet nuotit, niin tämä taulukko kertoo miten eri tauot ja sävelpituudet toimivat SonicPI:ssä:

Tässä opittiin tapa tehdä ääniä itse.

 

TOISTAMINEN:

Kun sinulla on melodia koodattuna, haluat ehkä toistaa sitä useamman kerran. Muistat ehkä aiemmilta koodauksen tunneilta Toista- komennot (=silmukka). SonicPI:ssä komento on ”2. times do” ja ”end”. Kakkonen kertoo montako kertaa rivit toistetaan.

2.times do
  play :c4
  sleep 0.5
  play :d4
  sleep 0.5
  play :e4
  sleep 0.5
  play :c4
  sleep 0.5
end

… ja toistoja voi lisätä myös sisäkkäin:

4.times do
  4.times do
    play :c4
    sleep 0.25
  end
  play :d4
  sleep 0.5
  play :f4
  sleep 0.5
end

Nyt olet oppinut tekemään jo melodian.

 

BIISIN TEKEMINEN (RUMPUBIITTI):

Tutustutaan ensin rumpubiitin tekemiseen LIVE_LOOP-komennon avulla. Sitten lisätään biisiin basso- ja päämelodiat.

  • LIVE_LOOP:n sisällä olevia rivejä toistetaan, niin kauan, että painetaan STOP-nappula.
  • LIVE_LOOP ajetaan yhtäaikaa muiden looppien kanssa.
  • LIVE_LOOP:lle annetaan nimi : kaksoispisteen jälkeen.
  • LIVE_LOOP:n sisällä on oltava vähintään yksi SLEEP.
live_loop :rummut do
  sleep 1
end

Kopioi tästä rumpubiitti itsellesi:

use_bpm 100

live_loop :rummut do
  sample :drum_heavy_kick
  sleep 1
  sample :drum_snare_hard
  sleep 1
  sample :drum_heavy_kick
  sleep 1
  sample :drum_snare_hard
  sleep 1
end
  • Kirjoita  :rummut tilalle :oma_nimi
  • Klikkaa RUN- nappulaa.
  • Mitä kuuluu ?? Tämä on perusbiitti, johon voit nyt lisätä muita ääniä.
  • STOP- nappula pysäyttää biisin.
  • LIVE_LOOP:in edessä on USE_BPM- komento. Sillä voit muuttaa biitin tempoa eli sitä, kuinka tiheään ääni kuuluu.
  • Voit vaihtaa SAMLE- rivejä tai lisätä niitä.
    Tee uusi rivi ja kirjoita siihen SAMPLE ja paina välilyönti-näppäintä, niin ohjelma tarjoaa sinulle vaihtoehdot millaisia sampeja voit lisätä.
    SAMPLE-komennon jälkeen tulee : kaksoispiste ja samplen nimi.

 

BIISIN TEKEMINEN (BASSORAITA):

Kopioit tästä bassoraitaa varten koodiisi uusi LIVE_LOOP-komento.

live_loop :basso do
  play :c2
  sleep 0.25
  play :c2
  sleep 2
  play :e2
  sleep 0.75
  play :f2
  sleep 1
end

PLAY-komennon äänen voi muuntaa eri kuuloiseksi USE_SYNTH- komennon avulla.
Kirjoita LIVE_LOOP- rivin jälkeen USE_SYNTH- komento ja paina välilyöntinäppäintä, niin sinulle avautuu lista, josta valita. Kokeile!

 use_synth :chipbass

Voit myös haluta soittaa säveliä eri pituisina. Tällöin voit lisätä PLAY-komentoon ATTACK ja RELEASE parametrin. Kokeile!

play 60, attack: 1, release: 3

 

BIISIN TEKEMINEN (PÄÄMELODIA):

Nyt biisin taustaäänet on kunnossa, ja puuttuu enää päämelodia. Se voidaan kirjoittaa PLAY ja SLEEP- komennoilla, mutta helpompi tapa on käyttää PLAY_PATTERN_TIMED- komentoa.

Kopioi tästä päämelodiaa varten uusi LIVE_LOOP.

live_loop :melodia do
  play_pattern_timed [:c4, :e4, :f4, :g4, :f4, :e4, :f4, :g4, :f4, :e4, :f4], [0.25, 0.25, 0.25, 1.5, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25]
end

Nyt sinulla on biisi tehtynä. Kokeile muuttaa arvoja, niin saat muokattu biisistä ihan omanlaisesi !!

KAPPALEEN NAUHOITTAMINEN:

Kun biisi on valmis, haluat ehkä nauhoittaa sen ja kuunnella sitä myöhemminkin. Se tapahtuu näin:

  1. Paina REC painiketta.
  2. Nauhoitus on nyt päällä, joten laita biisi kuulumana RUN painikkeella.
  3. Kun haluat lopettaa nauhoituksen paina REC painiketta uudelleen.
  4. Nyt aukeaa tallennusikkuna, johon voi antaa biisille nimen.

Kun olette tallentaneet oman biisin omalle levylle, niin pyydä koodiopelta muistitikku, johon laitat biisin talteen. Voidaan kuunnella niitä yhteisesti. Oman biisin voitte kuunnella kaksoisklikkaamalla biisin wav-tiedostoa resursisen hallinnasta!

VALMIIT ESIMERKIT:

Tästä linkistä voi katsella valmiita esimerkkejä. Niistä voi myös kopioida koodin omaan SonicPI ohjelmaan, ja muokata koodia omaksi biisiksi!

HIPHOP beetti:

# Hip Hop Beat
# Mehackit 2016

use_bpm 90

live_loop :biitti do
  sample :bd_808, rate: 1, amp: 4
  sleep 1
  sample :elec_hi_snare, amp: 1
  sleep 1
  sample :bd_808, rate: 1, amp: 4
  sleep 1
  sample :elec_hi_snare, amp: 1
  sleep 1
end

live_loop :luuppi do
  sample :loop_breakbeat, beat_stretch: 4
  sleep 4
end

live_loop :kitaramelodia do
  sample :guit_e_fifths, rate: 0.5, amp: 1.5
  sample :guit_e_fifths, rate: 1, amp: 0.8
  sleep 1.5
  sample :guit_e_fifths, rate: 1.5, amp: 0.8
  sleep 1.5
  sample :guit_e_fifths, rate: 1.4, amp: 0.8
  sleep 3
  sample :guit_e_slide, rate: 1, amp: 0.8
  sleep 2
end

live_loop :ujellus do
  with_fx :echo, phase: 1.5, mix: 0.5 do
    use_synth :mod_beep
    use_synth_defaults mod_phase: 0.125, pulse_width: 0.8, mod_wave: 2, attack: 1
    play :G5
    sleep 8
  end
end

live_loop :hihat do
  16.times do
    sample :drum_cymbal_pedal, start: 0.05, finish: 0.4, rate: 3, amp: 0.5 + rrand(-0.1, 0.1)
    sleep 0.125
  end
  4.times do
    sample :drum_cymbal_pedal, start: 0.05, finish: 0.6, rate: 3, amp: 0.5 + rrand(-0.1, 0.1)
    sleep 0.25
  end
  16.times do
    sample :drum_cymbal_pedal, start: 0.1, finish: 0.3, rate: 3, amp: 0.5 + rrand(-0.1, 0.1)
    sleep 0.0625
  end
end

 

Täma materiaali on koottu parin tunnin mittaisen session opiskelumateriaaliksi 6. luokan oppilaille Mehackitin sivulta: http://sonic-pi.mehackit.org/index_fi.html
Kuten Mehackitin materiaali, niin myös tämä on on myös Creative commons CC-BY-SA lisenssin alaista.

 

Mainokset

Mediakerhon 15. kokoontuminen

Tämä on kevään viimeinen kerhokerta, koska ensi viikon tiistaina Raudaskosken koululla vietetään Koodauspäivää, jolloin ei ole kerhoa.

Tänään opimme, minkälainen on hyvä salasana:
http://yle.fi/aihe/artikkeli/2017/02/01/digitreenit-17-salasanakone-testaa-kuinka-nopeasti-salasana-murretaan

Toisena tehtävänä jatkamme Scratch- ohjelmointia Cromebookeilla. Opettelemme pelin tekemisen alkeita (silmukka, ääni, tapahtuma). Avatkaa Scratch ja kirjautukaa sisään: https://scratch.mit.edu/

Jos sinulla ei vielä tunnusta ole, niin luo sellainen. Sähköpostiksi anna: jaana.seppala@dataseppa.fi
Jos et muista aiemmin tehtyä salasanaasi, niin kirjoita tunnus ja klikkaa Need help?
Sähköposti, johon salasanat voi palauttaa on jaana.seppala@dataseppa.fi

Tehtävä1: 
Tee ohjelma, joka piirtää neliön. Käytä silmukkaa eli toisto-lausetta. Esim. näin:

Tehtävä 2:
Tee ohjelma, joka käskee leijonan ääntelemään. Esim. näin:

Tehtävä 3:
Tee ohjelma, jossa voi liikuttaa Lepakon nuolinäppäimillä: ylös, alas, vasemmalle ja oikealle. Esim. näin:

Tehtävä 4:
Ohjelmoi pallopeli:
Piirrä uusi tausta, jossa on kolme samanväristä pallukkaa ja yksi koripallo.

Laita koripallo liikkumaan nuolinäppäimillä: ylös, alas, vasemmalle, oikealle.
Ja aina, kun koripallo osuu punaiseen pallukkaan, niin kuuluu ääni.

Jos aikaa jää, niin voit kokeilla miten saisit ohjelman laskemaan pisteitä, kun koripallo koskee punaista pallukkaa.

KIITOKSET KERHOLAISILLE, ENSI SYKSYNÄ JATKETAAN !!!

Mediakerhon 14. kokoontuminen

Tänään menemme ulos ja tutustumme ympäristöön. Kännykän avulla etsitään kartalta muutama paikka, joista löytyy tehtäviä suoritettavaksi.

  1. Ladataan ensin kännyköihin TurfHunt- sovellus:
    Se on saatavilla Adroidille ja IPhonelle. Olen tehnyt tehtävät kartalle Creator CMS- ohjelmalla, joka löytyy netistä. Kaikkien ei tarvi ladata ohjelmaa, koska teemme tehtävän ryhmissä. Ryhmään riittää yksi kännykkä, jossa toimiva nettiyhteys.
  2. Seuraavaksi avataan TurfHunt:
    Etusivulla klikataan Redeem Invitation ja sitten ohjelma kysyy teiltä koodia, joten antakaa sille koodi OEFVFN  ja klikatkaa Redeem.
  3. Nyt avautui Rauskin koodarit osa I- tehtävä.
    Join Game klikkaus vie sinut peliin mukaan.

Kun tekemäni tehtävät on suoritettu, niin nyt saatte pareittain keksiä kaksi uutta rastia ja niille tehtävät. Uudet rastit tulee sijoittaa koulun piha-alueelle tai lähistöön. Kustakin rastista voi käydä ottamassa kuvan, ja jakaa sen opelle esim. whatsup-ryhmän kautta. Nämä uudet rastit ja tehtävät suoritetaan koulun koodauspäivän yhteydessä 28.3.2017.

Mediakerhon 13. kokoontuminen

Nyt on viimeinen kerhokerta ennen hiihtolomaa. Sitten kerho jatkuu vielä maaliskuun ajan… Mutta nyt herkutellaan!

Tänään teemme digitaalista aarteenetsintää, joka menee näin:
Annan teille listan aarteista, joita teidän tulee etsiä netistä. Jos olette Minecraft- pelaajia, niin voitte etsiä aarteita sieltä. Mutta aarteita voi etsiä myös jostain muusta pelistä, tai etsiä voi kaikkialla netissä, siihen ei tarvita edes pelata peliä. Ruksatkaa kaikki löytämänne aarteet listasta. Olkaa rehellisiä! Myös yhteistyötä parin kanssa saa tehdä, kaikkea ei tarvitse löytää itse, kunhan näkee aarteen.
Kun kaikki aarteet ovat löytyneet, niin minulta saa tulla hakemaan palkinnon!

aarteenetsinnanmuistilista

 

Mediakerhon 12. kokoontuminen

Scratch- koodausta kokeiltiin syksyllä. Nyt jatketaan sitä tutustumalla netistä löytyvään Scratch-klubiin, jossa edetään ”pelaajaoppijan” tyyliin. Se tarkoittaa lyhyesti sanottuna, että kokeilemalla opitaan asioita (kuten peleissäkin tehdään).
Mutta ensin kerrataan vähän koodauksen alkeita sanallisesti ja kynätehtävillä (=tehtävät on sovellettu kirjasta: Hei, me koodataan).
Kerhon lopuksi, kun muutama Scratch-haaste on suoritettu, voi jokainen aloittaa suunnittelemaan ja piirtämään mediakerholle logoa. Logon piirtämistä jatketaan seuraavilla kerroilla, joten ei tarvitse saada valmiiksi tällä kertaa.

Johdanto:
Ohjelmoiminen on koodaamista. Koodauksella kirjoitetaan ohjeet, miten tietokoneen pitää toimia. Tietokone on tyhmä ja tarvitsee aina ohjelman eli koodin osatakseen toimia. Tiedättekö kuka on maailman ensimmäinen tietokoneohjelmoija???
Hän oli Ada Lovelace (1815-1852), joka syntyi Englannissa noin 200 vuotta sitten. Hän oivalsi, että kone pystyisi ratkaisemaan ongelmia, jos sille annettaisiin vaiheittaiset ohjeet, siis ohjelma. Tuohon aikaa ei kuitenkaan ollut tietokoneita, joilla hän olisi voinut testata ideoitaan..

Tietokoneen sisällä:
Käydään läpi laitteita, jotka auttavat meitä keskustelemaan tietokoneiden kanssa sitten, kun ohjelma on tallennettu tietokoneelle.

Syöttö:
Hiiri, näppäimistö ja kosketusnäyttö ovat ”syöttölaitteita”. Niiden avulla me ”ohjaamme” tietokonetta.
Tulostus:
Tulostin, näyttö ja kaiuttimet ovat ”tulostuslaitteita”. Niiden avulla tietokone kertoo meille asiota.

Mitä tapahtuu, kun käynnistämme jonkin ohjelman tietokoneella. Miten syöttö- ja tulostuslaitteet liittyvät tähän?
1. Hiirellä annetaan komento käynnistää ohjelma.
2. Tietokone hakee ohjelman koodin muistista, jossa koodi on tallessa.
3. Koodi viedään tietokoneen prosessorille, joka osaa lukea koodia. Prosessori on tietokoneen aivot.
4. Tietokoneen prosessori suorittaa ohjelmakoodin, ja näyttää tulokset esim. näytöllä.

Robottipiirtäjä:
Tässä tehtävässä harjoitellaan tarkkojen käskyjen antamista.

Mitä tarvitaan?
1. Robottipiirtäjä, 2. Koodari, 3. Paperi, 4. Kynä.

Ottakaa itsellenne parit. Toinen pareista on robottipiirtäjä ja toinen on koodari. Osia voi vaihtaa myöhemmin. Piirrän taululle neljä kuvaa, joista koodari voi valita minkä kuvan hän haluaa robottipiirtäjän tekevän. Robotti osaa vain liikuttaa kynää ja piirtää suoraa viivaa. Robottipiirtäjä piirtää vain koodarin antamien ohjeiden mukaan. Koodarin käytettävissä ovat seuraavat käskyt:
Siirry ylös, Siirry alas, Pysähdy, Siirry oikealle, Siirry vasemmalle.

Robottipiirtäjän kuvat ovat:

robopiirtaja

Tutustutaan Scratch- klubiin:
Pääsette seuraavalle sivulle, kun kirjoitatte Googlen hakuun: Scratch klubi.
http://www.teromakotero.fi/scratch-klubi/

Osalle Scratch on tutumpaa, osalle ihan uutta. Katsotaan yhdessä esimerkkilauseet ja esittelen hiukan mitä Scratch- sivulta löytää. Aloita tehtävät- linkistä pääset sivulle, jossa esimerkkilauseet ovat.
Tehdään yhdessä Sratch haaste 1, ja sitten voitte edetä omaan tahtiin.

Scratch haaste 1: Katso sisälle- painikkeesta saa Scratchin auki. Jos muistat tunnukset, niin voit kirjautua. Voit käyttää ohjelmaa myös ilman tunnuksia.

Tässä teidän Scratch- tunnukset, jota viimes käytitte:
dataseppa
ronjarobo
ninjahiiri
u-mad_pro
jyppi
pottu23
jassu080
oulaonhomo
hupiUKKOpvp123

 

 

 

Mediakerhon 11. kokoontuminen

Tällä kertaa mediakerhossa tutustutaankin ensin Triplet- sovellukseen, ja toisena tehtävänä suunnitellaan Liikennevalot- ohjelmaa, jonka voisi toteuttaa koodaamalla. Lopuksi robotit ja insinöörit- leikki.

Mediatehtävä:
6.-12.2. oli mediataitoviikko eli se oli viime viikko. Mitä ajattelette mediaviikosta, mitä se voisi pitää sisällään?
Triplet on Ylen uutisluokka eli palvelu, joka tuottaa Ylen uutisista opetusmateriaalia.
Tänään tehdään tehtäviä, jossa opitaan miten voi tunnistaa netistä huijausuutisen tai kuvahuijauksen! Eli netissähän, kuten tiedätte kaikki uutiset ja kuvat eivät ole aina totta. Huijausta yritetään tehdä epärehellisten toimesta, ja huijauksen syynä on usein raha. ESIM. Kun ihmiset levittävät huijaussivua tai kuvaa some:n välitykselle maailmalla, niin samalla saadaa levitettyä esim. mainosta, jolla toivotaan olevan ostajia.

Tehtäviin pääsee näistä linkeista:

  1. Huijausuutiset:
    Yle Uutisluokka: Näin meitä huijataan
  2. Kuvahuijakset:
    Yle Uutisluokka: Näin jäljität kuvahuijauksen verkossa
    Esim. Exif data

Toisena tehtävänä tutustutaan siihen, miten koodarit suunnitelevat toteutettavaa sovellusta. Suunnitellaan Liikennevalo-sovellus. Liikennevalon ohjausta varten tarvitaan tietokone ja sovellus eli koodia.

Koodaustehtävä:
Liikennevalot: Otetaan esimerkiksi junanradan ylitys, jossa on liikennevalo ja puomi.

  • Mikä on liikennevalojen tehtävä tässä tapauksessa ?
  • Miten tämä liikennevalo voisi toimia?
  • Montako valoa tarvitaan?
  • MItä muuta tietoa tarvitaan?

Piirretään jokainen paperille kuva junaradan ylityksestä. Ja kirjoitetaan yhdessä liikennevaloille koodi käyttäen koodauksen kolmea perusrakennetta: lause, silmukka ja ehtolause. Toisella kerralla voidaan toteuttaa koodi esim. Scratchissä.

Lopuksi tehtävä käytävässä:
Leikkijöistä valitaan 1–3 insinööriä ja loput ovat robotteja. Robotit keksivät itselleen äänen ja lähtevät liikkeelle. Robotit eivät osaa kääntyä, vaan he liikkuvat pelkästään suoraan eteenpäin. Insinöörien tehtävänä on juosta robottien perään ja auttaa niitä robotteja, jotka ovat jääneet jumiin kasvot seinää tai muuta estettä päin. Insinöörit käyvät kääntämässä robotit toiseen suuntaan. Vaihdetaan välillä robottien ja insinöörien rooleja.

Mediakerhon 10. kokoontuminen

Tänään 6.2.2017 tiistaina ovat aiheina LEVYRAATI ja SONG WRITING- tehtävä.

Levyraati: Pyysin viime kerralla teitä miettimään suosikkibiisejänne ja etsimään ne netistä. Nyt kirjataan biisien nimet ja esittäjät taululle, ja sitten katsotaan YouTubesta mitä tarkoitan levyraadilla.

Kirjoittakaa oman biisin nimi ja sen esittäjä paperilapulle. Arvotaan viisi kappaletta levyraatiin mukaan. Kuunnellaan biisit kerholaisten laitteista tai open koneelta. Jokainen kirjoittaa paperilappuun biiseille arvosanat 1-5. Numerot kirjataan taululle, ja lopuksi näemme mikä biisi voitti.

Song writing: tehtävässä havainnollistetaan laulun sanojen avulla mitä tarkoittaa funktio ja parametri koodauksessa.

Kirjoitetaan taululle esimerkkilaulu:
Ukko Nooa, Ukko Nooa oli kunnon mies.
Kun hän meni saunaan, laittoi laukun naulaan.
Ukko Nooa, Ukko Nooa oli kunnon mies.
Ukko Nooa, Ukko Nooa oli kunnon mies.
Kun hän tuli saunasta, otti laukun naulasta.
Ukko Nooa, Ukko Nooa oli kunnon mies.

Funktio:
Funktiota käytetään, jos koodissa pitää toista samoja toimintoja moneen kertaan.
Esim. Mikä lause UkkoNooa laulussa toistuu monta kertaa?
Siitä voitaisiin tehdä funktio nimeltä Kertosäe(). Ja silloin selvitään vähemmällä kirjoittamisella.

Parametri:
a)
Funktiolle voidaan joutua kertomaan tietoa esim. montako kertaa se on suoritettava.
Esimerkkilaulussa Kertosäe()- funktio pitää suorittaa kerran tai kahdesti. Eli parametriksi sulkujen sisään laitetaan numero, joka kertoo montako kertaa funktio on toistettava.
Kirjoitetaan taululle esimerkki Kertosäe(1), Kertosäe(2).
b)
Parametrilla voidaan määrittää myös jokin tieto muuttumaan funktion sisällä.
Esimerkkilaulussa voitaisiin Kertosäe()- funktiolle välittää tieto minkä niminen Ukko on.
Esim. Kertosäe(Poika) tarkoittaisi, että kertosäettä kutsuttaessa sanottaisiin:
Ukko Poika, Ukko Poika oli kunnon mies.

Keksikää lyhyt esimerkki laulusta, jolle voimme yhdessä määrittää fuktion ja parametrejä??

Kanahippa: Lopuksi, jos aikaa jää, voidaan leikkiä käytävällä KANAHIPPAA:
Leikitään tavallisen hipan tapaan, mutta hipaksi joutumiselta pelastuu menemällä kyykkyyn kuten kana vaaran lähestyessä.