Tällä kertaa tarjolla on tälläinen pieni musiikkin-/äänenhallintakirjasto, joka sisältää funktiot
pelin taustamusiikin soittolistan tekoon sekä wav-tiedostojen avaamiseen.
Pidemmittä puheitta funktioiden esittelyyn.
Wav:n hallinta.
- wav = SM_OpenWav(path$)
Avaa wav-tiedoston(path$) ja tallentaa sen muistipalaan(wav) - sr = SM_GetSampleRate(wav)
Lukee muistipalasta(wav) äänen näytteenottotaajuuden(sr). - c = SM_CountChannels(wav)
Lukee muistipalasta(wav) äänikanavien(c) määrän (1 = mono, 2 = stereo). - raw = SM_GetChannelRawData(wav,channel = 1)
Hakee muistipalasta(wav) kanavan(channel) raakadatan ja tallentaa sen muistipalaan(raw). - SM_SetChannelRawData(wav,data,channel = 1)
Tallentaa muistipalaan(wav) toisesta muistipalasta(data) saatavan raakadatan halutulle kanavalle(channel). - length# = SM_GetLength(wav)
Hakee muistipalasta(wav) äänen pituuden(lenght#) sekunteina. - SM_WriteWav(path$,samplerate,data1,data2=0)
Luo wav-tiedoston ilmoitettuun tiedostopolkuun(path$) valitulla näytteenottotaajuudella(samplerate)
raakadatojenpohjalta - SM_SaveWav(path$,wav)
Tallentaan aiemmin avatun wav-muistipalan(wav) tiedostopolkuun(path$). - SM_MakeWav(channels = 1,samplerate = 16000)
Luo wav-muistipalan määritelemäläsi kanava määrällä(channels) ja näytteenottotaajuudella(samplerate)
Näytteenottotaajuus on se määrä kuinka monta näytettä pitää lukea sekunnissa,
että ääni kuulostaa oikealta. Se on yleensä 8000Hz,16000Hz,44100Hz tai 48000Hz.
Jos suurennat tätä alkuperäisestä niin ääni hidastuu ja jos pienennät niin se vastaavasti nopeutuu.
Raakadata tallennetaan muistipalaan kokonaislukuina, riippumatta siitä miten se oli tallennettu alunperin.
Muutama esimerkki:
- music = SM_AddToPlayList(path$,class$,length,maxvolume = 100)
Luo uuden jäsenen soittolistaan.
path$ = Tiedostopolku jossa kappale on.
class$ = Kappaleen luokka esim. "peli" tai "valikko"
length = kappaleen pituus millisekunteina (ei silti tarvitse olla niin tarkka luku)
maxvolume = maksimi volumi
music = Kappaleen muuttuja - SM_UpdateMusic()
Päivittää musiikin toiston - SM_ChangeMusic(music,changeclass = true)
Vaihtaa toistettavan kappaleen välittömästi.
music = Kappale joka toistetaan seuraavaksi.
changeclass = Vaihdetaanko soittoluokka kappaleen mukaan? - SM_PlayNext()
Toistaa seuraavan kappaleen. - SM_StopMusic()
Pysäyttää kappaleen toiston. - SM_ContinuePlaying()
Jatkaa toistamista - SM_SetClass(class$)
Vaihtaa välittömästi toistoluokkaa.
class$ = Luokan nimi, jonka kappaleita soitetaan seuraavaksi tai
kappale, jonka luokkaa käytetään.
Vakiot: - SM_QuietDown
Millisekunteina kuinka pitkä on hiljentymis aika.
Globaali muuttujat: - SM_CurrentMusic
Tällä hetkellä toistettava musiikki.
Älä muuta tätä! Käytä siihen mielummin "SM_ChangeMusic" funktiota. - SM_NextMusic
Seuraavana soitettava musiikki.
Nolla, jos valitaan seuraava kappale soittolistalta. - SM_CurrentClass$
Tällä hetkellä käytössä oleva luokka.
Sopivia luokkia ovat esim. "peli", "valikko" ja "asetukset". Kun pelissä siirrytään esim. valikkoon,
niin komennetaan "SM_SetClass("valikko")" ja musiikki hiljenee ja seuraavaksi alkaa kuulua valikon musiikki.
En tehnyt tästä esimerkkiä toivon, että tajusitte toiminnan.
Pieni varoitus: Testaus ei ole ollut kovin tehokasta joten bugeja löytyy varmasti.
Korjailen niitä sitä mukaa kun niitä ilmenee.
Kirjastoon pitäisi tulla lisää ominaisuuksia ainakin wav:n muokkaukseen,
että kaikkea muokkausta ei tarvitsisi tehdä muistipalojen käsittelyn avulla.
Versio: 1.01
Changelog:
Code: Select all
1.01:
-Lisätty virheen tarkistus "SM_OpenWav" ja "SM_AddToPlayList" funktioihin.
-Lisätty "SM_MakeWav" funktio
Taitaa olla pisin kirjoittamani viesti koskaan.
Niistä bugeista puheenollen: se yksi joka ehti jo ladata tämän, voisi ladata sen uudestaan
koska "SM_SaveWav":ssa oli pahasti vikaa, mutta se on nyt korjattu.