Generating Digital Audio Bruke Sion
Del
Del
Del
Del
Dette Cyber mandag Envato Tuts + kurs vil bli redusert til bare $ 3. Ikke gå glipp av.
I denne opplæringen vil jeg vise deg hvordan du kommer i gang med Sion, en AS3 software synthesizer bibliotek som genererer lyd med bare kode.
Endelig resultat Forhåndsvisning
Til slutt dette er hva vi skal oppnå:
Klikk på mørkere rektangel område å starte /stoppe baller bevegelsen.
Får nødvendige filene
Først må du få Sion biblioteket. Du kan laste det enten som en SWC-fil eller som ukomprimerte Actionscript-filer. For å gjøre dette gå til Sion nedlastinger og velg ønsket nedlastingsmetode.
Etter at du har lastet ned kildekoden legge det til global klassebanen.
Legg merke til at på denne siden kan du også laste ned ASDoc dokumentasjon og eldre versjoner av biblioteket.
I denne opplæringen vil vi gjøre bruk av den velkjente minimalcomps bibliotek, utviklet av Keith Peters; hvis du ikke har det gå videre og ta tak i det. minimalcomps
legge Også minimalcomps biblioteket til global klassebanen og la oss komme i gang
Merk:. Som alltid vil jeg være bruker FlashDevelop hele denne opplæringen. Du kan bruke hva kode editor du liker selv om jeg anbefale stikker med FlashDevelop
Trinn 1:.? Hva er Sion
Sion bibliotek Med Sion kan du generere dynamiske lyder på rømmen uten behov for lasting noen lydfiler. Også gjør det svært enkelt å synkronisere lyden med visningsobjekter Fra mangfold av funksjoner den har jeg skal vise deg de vesentlige av å jobbe med det (f.eks objekt treffer en vegg, eksplosjon osv.). Hjelp < em> MML plakater (Music Macro Language) data for å generere lyd, ved hjelp av taleforhåndsinnstillinger og effektbokser på å spille lyder, sette tempoet (BPM), panorering og endre volum og til slutt skal jeg vise deg hvordan du synkroniserer lyder med visningsobjekter . La oss begynne med å lage et nytt prosjekt. Åpne din kode editor og lage en ny Actionscript 3-prosjektet. Jeg har kalt prosjektet mitt Sion Tutorial Du bør ha noe som ligner på dette:. I FlashDevelop ville du sannsynligvis ha en init () metode som kalles når filmen er lagt til scenen. Gå videre og endre koden slik at den samsvarer med den ene over La denne filen åpnet og til neste trinn å begynne å bruke Sion og høre lyden vi bare må lage ett objekt: SiONDriver. Denne klassen gir føreren av Sion digitale signalprosessor emulator og gjennom denne klassen alle grunnleggende operasjoner er gitt som egenskaper (bpm, volum), metoder (pause (), spille (), stop (), fadeIn () og hendelser (bmp endringer , stream start og stopp) Merk:. Bare én forekomst av Sion driver klassen kan lages til enhver tid prøve å skape flere forekomster vil gjøre kompilatoren kaste en feil å få det eksisterende forekomst av.. den SiONDrive klassen du kan bruke SiONDriver.mutex statiske egenskapen. I dokumentet (Main) klasse legge til en ny privat variabel kalt _driver og instantiate det i konstruktøren. For å spille av en lyd du trenger å påkalle play () metoden i SiONDriver objektet og passere som et argument en SiONData objekt eller en MML streng. For vårt eksempel vil vi bruke en MML streng (som SiONData objektet er faktisk en kompilert MML streng i sin essens) Legg til denne linjen av kode i klassen og kjøre prosjektet ( Ctrl + Enter Nå som alt er satt opp la oss gjøre bruk av denne beholderen. Åpne hovedklassen og legge til en ny privat variabel kalt _ballCont av type BallContainer. Vi vil gjøre bruk av en annen metode (beleilig heter addBallContainer ()) for å legge beholderen til scenen Og også kaller denne metoden fra konstruktøren Kjør koden og se hvordan det fungerer. Når en ball treffer en vegg og endrer retning et notat skal spilles Nå bare som en siste touch til vi skal legge noe av funksjonaliteten til ball container slik at vi kan starte og stoppe det. Som du kan se jeg har uthevet tilleggene i BallContainer klassen. Som en kort forklaring har jeg først lagt en boolsk variabel _on som holder orden hvis filmen spilles (ballene er i bevegelse) eller ikke. I konstruktøren har jeg forandret linjen som legger en hendelse lytteren for ENTER_FRAME hendelse med en for MOUSE_CLICK hendelser. Også MouseEvent behandleren heter onClick () brukes til å starte eller stoppe filmen når den klikkes. Til slutt i starten () og stop () metoder ENTER_FRAME arrangementet lytteren er lagt til og henholdsvis fjernet. Også i starten () metoden vi null hastighetene på hver ball. Sion Du kan se mange eksempler på kule implementeringer av biblioteket på wonderfl.net. Også disse eksemplene er nyttig å lære mer om andre funksjoner i Sion. Jeg håper du likte denne opplæringen, og takk for at du leser det. Anmeldelser
er en software synthesizer bibliotek
bygget i Actionscript 3.0 og arbeider i Flash Player 10 eller høyere.
Trinn 2: Sette opp prosjektet
. Etter denne åpne dokumentet klasse (i mitt tilfelle Main)
Pakke {import flash.display.Sprite; [SWF (width = 550, height = 300, bakgrunnsfarge = 0x1f1f1f, framerate = 30)] public class Hoved strekker Sprite {offentlig funksjon main (): void {}}}
Trinn 3:.. Grunnleggende bruk
pakke {import flash.display. Sprite, import org.si.sion.SiONDriver [SWF (width = 550, height = 300, bakgrunnsfarge = 0x1f1f1f, framerate = 30)] public class Hoved strekker Sprite {private Var _driver: SiONDriver; offentlig funksjon main (): void {_driver = new SiONDriver ();}}}
_driver.play ('l8 cdefgab & lt; c');.
hvis du bruker FlashDevelop). Du skal nå høre tonene (åtte notater) fra C5 (eller Må
i oktav fem) til C6 (eller Gjør
i oktav seks). Men hva betyr L8 cdefgab < c faktisk bety
Trinn 4: Musikk Macro Språk
Legge beholderen
privat funksjon addBallContainer (). void {_ballCont = new BallContainer (); addChild (_ballCont); _ballCont.x = 170; _ballCont.y = 80;}
offentlig funksjon main (): void {_driver = new SiONDriver ();. _s1 = _driver.compile ('l8 cdefgab < c'); _s2 = _driver.compile ('l8 o6co5bagfedc'); _driver.play (); addSoundButtons (); addSelector (); addDrums (); addDrumsVolume (); addBPMKnob (); addVolumeKnob (); addPanControl (); addBallContainer ();}
Trinn 24:. Final Touch
pakke {import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import org.si.sion.SiONDriver; import org.si.sion.utils.Scale; import org.si.sion.utils.SiONPresetVoice; public class BallContainer strekker Sprite {private Var _balls: Array; private Var _on: Boolean; private Var _voices: SiONPresetVoice; private Var _driver: SiONDriver; offentlig funksjon BallContainer () {_voices = new SiONPresetVoice (); _driver = SiONDriver.mutex? SiONDriver.mutex: ny SiONDriver (); _driver.play (); tegne(); addBalls (); addEventListener (MouseEvent.CLICK, onClick); } Private funksjon onClick (e: MouseEvent): void {if (_on) stop (); annet start (); } Private funksjon onEnterFrame (e: Hendelses): void {var b: Ball; for (var i: int = 0; i < _balls.length; i ++) {b = _balls [i]; b.x + = b.vx; b.y + = b.vy; b.vx = b.x > = 310 || b.x < = 0? -b.vx: b.vx; b.vy = b.y > = 160 || b.y < = 0? -b.vy: b.vy; if (bx > = 310 || bx < = 0 || av > = 160 || av < = 0). _driver.noteOn (Scale (ny Scale ("Amp")) getNote (i), _voices ["midi.chrom6"], 1); }} Privat funksjon draw (): void {graphics.beginFill (0, 0,3); graphics.lineStyle (1, 0, 0,6); graphics.drawRect (0, 0, 320, 170); graphics.endFill (); } Private funksjon addBalls (): void {_balls = []; for (var i: int = 0; i < 5; i ++) {var b: Ball = new Ball (); addChild (b); _balls.push (b); b.x = Math.random () * 310; b.y = Math.random () * 160; }} Offentlig funksjon start (): void {var b: Ball; for (var i: int = 0; i < _balls.length; i ++) {b = _balls [i]; b.vx = (Math.random () * 10) - 5; b.vy = (Math.random () * 10) - 5; } _on = True; addEventListener (Event.ENTER_FRAME, onEnterFrame); } Offentlig funksjon stop (): void {_on = false; removeEventListener (Event.ENTER_FRAME, onEnterFrame); }}}
Konklusjon
bibliotek er svært nyttig når du trenger å bruke mye av lyd (i spill oftest), men du kan ikke råd til ekstra størrelsen på SWF eller tid å laste dem. Som du kan se er det ikke så vanskelig i det hele tatt å skape interessante lyder på rømmen.