Herfst 04 | Flash: Audio plus

Leerdoelen

Deze les

Wijzigen van geluid (volume en pan)

Wanneer je gebruik maakt van de soundclass. Flash geeft je controle over het volume, maar ook over de output uit je linker en rechter speaker. Dit wordt pan-control genoemd. Hieronder een voorbeeld van de code voor een pan.

btnLeftspeaker.onRelease = function(){
	sGeluidje.setPan(-100);
}
btnRightSpeaker.onRelease = function(){
	sGeluidje.setPan(-100);
}
btnLeftSpeaker.onRelease = function(){
	sGeluidje.setPan(100);
}
btnBothSpeaker.onRelease = function(){
	sGeluidje.setPan(0);
}

DWanneer je dit weet kan je dit natuurlijk ook met script laten animeren. Je kan de pan langzaam van 100 naar -100 laten zakken.

Het veranderen van geluid (transform)

De animatie van geluid hierboven is een vrij groffe methode. Om het geluid zich door een ruimte te laten verplaatsen, kan je het precieser definieren. Hiervoor gebruik je het transformobject. Deze kent 4 eigenschappen: ll, lr, rr, rl. Hieronder de betekenis:

ll Percentage dat definieert hoeveel van de linker input speelt in de linker speaker
lr Percentage dat definieert hoeveel van de rechter input speelt in de linker speaker
rr Percentage dat definieert hoeveel van de rechter input speelt in de rechter speaker
rl Percentage dat definieert hoeveel van de linker input speelt in de rechter speaker

Je kunt dus op die manier het geluid zich laten verplaatsen van de linker naar de rechterspeaker. Hier onder een voorbeeld hoe het script er uit zou moeten zien:

sGeluidje = new Sound;
sGeluidje.attachSound("interview");

btnStart.onRelease = function(){
	// 0 betekent dat geluid begint bij begin en 1 hoe vaak het loopt
	sGeluidje.start(0,1);
}

btnTransform.onRelease = function() {
	var geluidTransform = new Object();
	var geluidTransform.ll = 0;
	var geluidTransform.lr = 100;
	var geluiddTransform.rl = 100;
	var geluidTransform.rr = 0;
	sGeluidje.setTransform(geluidTransform);
} 

Volume slider maken

Hierboven en in de vorige les zijn allemaal ingredienten genoemd die je kunt toepassen in games of andere interfaces. In de opdracht heb je gewerkt aan een mp3 speler. Hier heb je direct te maken met allerlei interactieve elementen. Als de gebruiker met jouw product aan de slag gaat, wil je graag zo duidelijk mogelijk feedback geven over de situatie waar de gebruiker zich in bevind. Hiervoor kan je deze lessen goed gebruiken. Hieronder een voorbeeld van het maken van een slider om het volume te regelen.

Een slider bestaat uit twee onderdelen een knop, welke de slider is en een lijn waarover de slider beweegt. Deze noem ik mcGroove en mcSlider. Met een gewoon drag en drop script is het eenvoudig om een slider te maken, zie onderstaand voorbeeld. Ik maak deze slider in een movieclip. De reden hiervoor is dat je dan alles in de movieclip kan afhandelen.

Stap 1 is het aanmaken van een movieclip. Deze noem ik mcSliderObject. Hierin maak ik drie lagen aan. Een laag actions, een laag voor de movieclip mcSlider en een laag voor de movieclip mcGroove. Teken deze movieclips. En geef ze een instancename.

Stap 2: Vervolgens moet je een script schrijven voor drag en drop. In onderstaand voorbeeld plaats ik alle code in de actions laag.

mcSlider.onPress = function(){
   this.startDrag(false, mcGroove._x,
	   mcGroove._y,
	   mcGroove._x + 100,
	   mcGroove._y);
}
 
mcSlider.onRelease = function(){
 	stopDrag();
}
  

Daarna wil je graag het volume koppelen aan de slider.Helemaal links is het geluid 0 of uit. En helemaal rechts is het geluid op 100 procent. Dus op zijn totale volume. Het is overigens mogelijk geluid te laten horen op 200%. Om het geluid te koppelen aan de slider breiden we het script uit met de volgende code:

mcSlider.onMouseMove = function(){
	_root.sGeluidje.setVolume(this._y);
}

Een probleem in flash is dat elke movieclip zijn eigen tijdlijn en coordinaten kent. Als je wil weten wat de positie in een movieclip is ten opzichte van de stage op scene 1 gebruikje Global to Local. Hiermee kan je de positie opvragen die je je movieclip niet op de

Wat is global to local en wat hoe nu met het geluid? Daarvoor hebben we een play knop nodig en een geluidje dus dat eerst:

sGeluidje = new Sound;
sGeluidje.attachSound("interview");
btnPlay.onRelease = function(){
	sGeluidje.start(0,1)
}

Properties

Een voorbeeld van het gebruikmaken van soundproperties is een afbeeldingen laten blenden in de tijd dat een geluidje duurt.

sGeluidje = new Sound;
sGeluidje.attachSound("interview");

_root.onEnterFrame = function(){
  	mcAfbeelding._alpha = (sGeluidje.position / sGeluidje.duration) * 100);
}

Wat hier gebeurt is dat er iedere keer opnieuw wordt berekend hoeveel procent van het nummer al gespeeld is. Bij 100 procent, kan je de afbeelding zien. Je kunt hier natuurlijk nog allerlei informatie aan toevoegen.

Daarnaast kan je ook events koppelen aan geluid, zie volgend voorbeeld:

sGeluidje = new Sound;
sGeluidje.attachSound("interview");
sGeluidje.start(0,1);

sGeluidje.onSoundComplete = function(){
  	mcAfbeelding._alpha = 100;
}

 

MP3 song information

Je kunt in flash de gegevens opvragen van een mp3-tje. Belangrijk is natuurlijk wel dat de mp3 deze gegevens inzich heeft. Flash kan uit de mp3 informatie deze gegevens halen. De hoofdletters in onderstaand voorbeeld zijn de parameters waarmee je de verschillende informatie te voorschijn kan halen. Hier bestaat een hele lijst van. Dit is te vinden in flash.

sSong = new Sound;
sSong.loadSound("fly.mp3",true);

sSong.onID3 = function(){
	trace("Artiest:" + sSong.id3.TPE1);
	trace("Album:" + sSong.id3.TALB);
	trace("Titel:" + sSong.id3.TIT2);
	trace("Released:" + sSong.id3.TYER);
}

In de help van flash is deze lijst hier te vinden:

actionscript 2.0 language > actionScript classes > sound

Hier staan alle properties die horen bij sound. De informatie uit deze lesbrief is hier voor een deel terug te vinden. Klik hier op id3 en je krijgt de volgende lijst:

Property

Description

TFLT

File type

TIME

Time

TIT1

Content group description

TIT2

Title/song name/content description

TIT3

Subtitle/description refinement

TKEY

Initial key

TLAN

Languages

TLEN

Length

TMED

Media type

TOAL

Original album/movie/show title

TOFN

Original filename

TOLY

Original lyricists/text writers

TOPE

Original artists/performers

TORY

Original release year

TOWN

File owner/licensee

TPE1

Lead performers/soloists

TPE2

Band/orchestra/accompaniment

TPE3

Conductor/performer refinement

TPE4

Interpreted, remixed, or otherwise modified by

TPOS

Part of a set

TPUB

Publisher

TRCK

Track number/position in set

TRDA

Recording dates

TRSN

Internet radio station name

TRSO

Internet radio station owner

TSIZ

Size

TSRC

ISRC (international standard recording code)

TSSE

Software/hardware and settings used for encoding

TYER

Year

WXXX

URL link frame

 

Links

Een groot deel van deze les is geinspireerd door het boek 'visual quickpro guide', macromedia flash 8 advanced.

Auteur: Roos Groenewegen
Seizoen: Herfst
Lesnummer: 04
Datum: 25-09-2006
Type les: MME