Playr: De ActionScript 3 music player class!

Published by Ronny on March 19th, 2008 in Actionscript, Flash, Open-source, download. 22 Comments

Update: Er is een nieuwe versie van deze klasse die je hier kan vinden. De download van deze versie heb ik verwijderd om die reden.

Ik heb gisteren de laatste wijzigingen aangebracht aan de vroegere MusicPlayer class. Zoals het er nu uitziet lijkt deze klasse af, voor een eerste ronde echt gebruik, keiharde feedback en vele suggesties.

Belangrijke wijzigingen zijn:

  • Classnames, en package names zijn aangepast.
    • De klasse zelf heet nu Playr in plaats van MusicPlayer.
    • Package name is aangepast. com.noCreativity.MusicPlayer is nu com.nocreativity.playr (met dank aan Peter Elst voor de best practice tip ;) )
  • Shuffle mode toegevoegd
  • Trackprogress kan nu ook opgevraagd worden
  • Singletrack werkt nu volledig
  • Bug ivm repeat weggewerkt

Wat doet Playr?

Playr is een Flash Actionscript 3 klasse die het maken van een volwaardige music player in Flash/Flex/AIR reduceert tot enkele regels code. Of je nu maar 1 loop wilt laten spelen, of een volledige playlist wilt afspelen in Flash/Flex/AIR: Playr kan het sneller dan jij!

Playr kan je gebruiken om een enkele loop af te spelen, of voor volledige XML afspeellijsten te laten afspelen. Zowel shuffle als repeat zijn mogelijk. Ook de interactiviteit met de gebruiker kan snel worden toegevoegd.
De Playr class is ontworpen met snelheid en gemak voor ogen

Hoe gebruik ik Playr?

3 Korte voorbeelden hoe je de Playr class kunt inzetten.

Minimaal
Je wilt gewoon één track laten afspelen.

  1. import com.nocreativity.playr.*;
  2. var myPlayer:Playr = new Playr();
  3. myPlayer.singleTrack = true;
  4. myPlayer.loadTrack("music/myTrack.mp3");
  5. myPlayer.play();

Minimaal
Je wilt een volledige playlist afspelen zonder interactie of weer te geven informatie.

  1. import com.nocreativity.playr.*;
  2. var myPlayer:Playr = new Playr();
  3. myPlayer.autoPlay=true;
  4. myPlayer.loadPlaylist("playlist.xml");

Maximaal

Je wilt een volwaardige music player maken, met alles erop en eraan.

  1. import com.nocreativity.playr.*;
  2. var myPlayer:Playr = new Playr();
  3. myPlayer.autoPlay=true;
  4. myPlayer.repeat = false;
  5. myPlayer.volume = 100;
  6. myPlayer.shuffle = true;
  7. myPlayer.loadPlaylist("playlist.xml");
  8. myPlayer.registerPlayButton(btnPlay);
  9. myPlayer.registerStopButton(btnStop);
  10. myPlayer.registerPauseButton(btnPause);
  11. myPlayer.registerNextButton(btnNext);
  12. myPlayer.registerPreviousButton(btnPrevious);
  13. myPlayer.registerMuteButton(btnMute);
  14. myPlayer.ID3SourceEnabled =true;
  15.  
  16. myPlayer.addEventListener(PlayrEvent.SONGINFO,infoHandler);
  17. myPlayer.addEventListener(PlayrEvent.SONG_PROGRESS,songprogressHandler);
  18. myPlayer.addEventListener(PlayrEvent.LOAD_PROGRESS,loadprogressHandler);
  19.  
  20. function songprogressHandler(e:PlayrEvent):void{
  21. txtSongProgress.text = "Time elapsed: " +  myPlayer.trackProgress;
  22. }
  23. function loadprogressHandler(e:PlayrEvent):void{
  24. txtLoadProgress.text = "Load progress: "; + e.loadprogress;
  25. }
  26.  
  27. function infoHandler(e:PlayrEvent):void{
  28. txtTrackInfo.text = myPlayer.artist + " - " + myPlayer.trackName;
  29. if(myPlayer.album != ""){
  30. txtTrackInfo.appendText(" ("+myPlayer.album+")");
  31. }
  32. txtTrackInfo.appendText(" | " + myPlayer.trackDuration);
  33. }

Playlist.xml?

Hoe deze noemt maakt in feite niet echt veel uit, zolang de inhoud volgens deze structuur is.
Betekenis van de verschillende nodes:

  • Artist: Naam van de artiest
  • Title: Naam van het liedje
  • TotalTime: Totale duur van het liedje in seconden
  • Filename: bestandspad naar de af te spelen MP3 file. (absoluut of relatief).

Documentatie over Playr?

Deze is er en kun je hier vinden.

Download

Download de Playr class hier.

Feedback & Suggesties

Heb je vragen, of zijn er onduidelijkheden? Schiet maar raak, ik bijt niet!
Zijn er onvolmaaktheden, of heb je dat geniale extra dat deze klasse nog tekort heeft? Laat mij het weten, en ik zal er zeker naar kijken.
Gebruik je deze class en ben je er tevreden mee? Ik hoor het graag. Laat ook zien in welk(e) project(en) je de class inzet!

Veel plezier!

Naamsvermelding & Gelijk delen Ik release de Playr class en de PlayrEvent class onder de Creative Commons license. Dat wil zeggen dat je alles in deze classes mag aanpassen zolang je er een verwijzing naar de originele auteur ( ik dus ;) ) in laat staan, en je deze classes met dezelfde rechten verder verdeeld.


Posts that somehow relate to this one:

popular opinion

22 others felt like sharing their feelings about this. Feel free to do so as well.

Thomas @ 15:59 - March 19th, 2008

cool dude! Maybe this will be used in some new air mp3 players who knows! ;)

grtz

Open-source MP3 Player Class: MusicPlayer at noCreativity.com @ 16:06 - March 19th, 2008

[...] Update: De MusicPlayer class is uit beta, en is nu gekend als Playr. Lees er meer over, en download de nieuwe class hier. [...]

Open-source MP3 Player Class: MusicPlayer (Beta release) at noCreativity.com @ 16:10 - March 19th, 2008

[...] Update: De MusicPlayer class is uit beta, en is nu gekend als Playr. Lees er meer over, en download de class hier. [...]

zaza @ 16:14 - March 19th, 2008

Je shuffle is in feite niet meer dan gewoon een random liedje die uit je playlist word gehaald.

Wat supercool zou zijn, is als je een shuffle-methode zou schrijven die heel de playlist door elkaar shuffled, zodat als je naar je playlist luisterd, je elk liedje te horen krijgt, maar op een random volgorde.

just an idea to make your player even greater :)

en ook de mogelijkheid om de xml’s die winamp / itunes / genereert af te spelen, of een playlist generator (kan perfect in air)

work to do baby :)

Ronny @ 16:20 - March 19th, 2008

@Thomas: Thanks man! Make sure to keep me posted about Interlude ;)

@zaza: Je hebt volkomen gelijk wat de shuffle betreft. Zal ik zeker nog aanpassen naar een ‘echte’ shuffle. Playlist generator stond al op het plan. Itunes/Winamp ondersteuning zal niet voor meteen zijn. Misschien later eens :)

Bedankt alvast!

krueL @ 16:22 - March 19th, 2008

Super klasse. Goed gedaan! Ik zal er allesinds mee werken.

The Fluff @ 15:47 - March 22nd, 2008

Heya

Ga het mss es gebruiken voor m’n eigen website als ik nog eens tijd vind om een nieuwe te maken!

Cool!

Pimm Hogeling @ 16:49 - March 26th, 2008

Regel 630 moet wat mij betreft zijn:
case “paused”:

Ronny @ 18:11 - March 26th, 2008

@Pimm: Good catch! Copy/Paste slordigheidje. Thx man!

Sam @ 18:53 - May 16th, 2008

kun je myPlayer.trackProgress; omzetten naar het aantal seconden? nu staat er bv 1:23, maar ik zou willen dat het 83 wordt, nu is het ook een String dacht ik, en ik wil dat het een Number wordt
Dit zou ik graag weten, omdat ik een progressbar maak

Ronny @ 19:00 - May 16th, 2008

Ik zal dat later inbouwen. Heb het nu even druk :)
Is niet veel werk en kan wel handig uitkomen :)

Pimm Hogeling @ 18:44 - July 18th, 2008

Ronny, als de free software/open source software activist die ik ben moet ik je toch nog even wijzen op de nadelen die je licentie keuze met zich meebrengt.

De licentie is GPL-incompatible. Dit betekent dat jouw class niet gebruikt kan worden in een project onder de GPL (GNU General Public License). Om aan te geven hoe belangrijk de GPL is: SourceForge.net rapporteerde eind 2003 dat 71% van alle projecten die ze hosten onder de GPL zijn.
Je deelt je code met de “Open Source community”, maar met een GPL-incompatible license geef je anderen de vrijheid niet dat ook te doen.

Verder is het maar de vraag in hoeverre de licentie op juridisch gebied geldig is. De Creative Commons licenties zijn namelijk niet ontwikkeld voor software, zoals in de wiki van Creative Commons zelf staat: “Creative Commons licenses are not intended to apply to software. They should not be used for software. We strongly encourage you to use one of the very good software licenses available today.”

Ik adviseer je je class uit te brengen onder de GPLv3 of een GPL-compatible licence zoals de X11/MIT license, de modified BSD license of de LGPL. Als je precies wilt weten welke license het beste past bij jouw eisen kun je me altijd even e-mailen. Ik ben niet meer zo vaak op IRC merk ik :)

Ronny @ 18:49 - July 18th, 2008

@Pimm: Awesome thanks! Wat een duidelijke uitleg, en motivatie van je mening! Zal ik zeker nog eens naar kijken.
Om eerlijk te zijn zag ik door het bos de bomen niet meer, toen ik nadacht over de license. Dit zal ik ASAP nog eens herbekijken met deze tip in het achterhoofd! Nogmaals dank!

Pimm Hogeling @ 0:32 - July 19th, 2008

Je weet me te bereiken, neem ik aan, en ik informeer je graag over de beschikbare Free/Open Source Software licenties. Voel je dus vrij contact met me op te nemen.

Frank Weima @ 16:43 - July 21st, 2008

Hij staat automatisch op REPEAT bij een ’singleTrack’. Nu heb ik bijvoorbeeld een geluidsfragmentje van 2 seconden, die de playR nu constant blijft herhalen. Misschien een FIX? Want ‘repeat = false’ werkt niet.

Heb het tijdelijk hiermee opgelost:

import com.nocreativity.playr.*;
var myPlayer:Playr = new Playr();
myPlayer.singleTrack = true;
myPlayer.repeat = false;
myPlayer.loadTrack(“fragmentje.mp3″);
myPlayer.play();
myPlayer.singleTrack = false;

Ronny @ 18:47 - July 21st, 2008

Frank,
Ik ga er vanavond (of morgen, want ik heb het SUPER druk hier) eens naar kijken. Als ik niet direct iets kan fixen zal ik het zo laten voor nu.
Ben namelijk al bezig aan een volledig nieuwe versie van de Playr class die veel beter werkt, en veel meer mogelijkheden zal kunnen bieden. Dus je verstaat wel dat ik niet bepaald veel tijd meer aan de oude class zal hangen :)
Alvast bedankt voor het melden van de bug! Zal er alvast rekening mee houden in de volgende versie :)
Je zult het wel nog zien verschijnen :)

Playr 2.0 is coming! at noCreativity.com @ 15:21 - November 12th, 2008

[...] just wanted to update you guys on how the update for the next version of Playr is [...]

Bramm' @ 14:28 - January 6th, 2009

Zeer strak werk ronny! :)

Ronny @ 14:44 - January 6th, 2009

Thanks Bramm’!

De versie hier is wel al een jaar oud. Voor de nieuwste versie ga je best naar hier: http://nocreativity.com/blog/playr-20-is-here

Of nog direct naar de source: http://playr.nocreativity.com :)

Coalladatty @ 22:10 - February 15th, 2009

Your site does not correctly work in safari browser

Rusty @ 19:15 - February 6th, 2010

Hey Ronny, vette player class dat je gemaakt hebt! Ik heb (na wat zoeken :P ) de class kunnen importeren in een test projectje, maar om de één of andere bizarre reden wilt de previous button niet werken, en ik heb al gedubbelcheckt of ik ze juist gedeclareerd had of niet!

Bedankt alvast,
-Rusty

Freedom of speech!

Whatever it is you feel: Tell me! It's for free!