Tag Archive for 'Open-source'

PlayrDiscovr: De playlist.xml bouwer!

Enkele dagen geleden heb ik een oproep gedaan om tips en suggesties te krijgen in verband met de nieuwe Playr class. Jarne heeft een geautomatiseerde playlist.xml generator voorgesteld.

Ik heb hier al vaker aan gedacht, maar altijd de hoop opgegeven als ik moest denken aan de ID3 tags… Ik ben geen PHP guru, waardoor ik nooit echt heb beginnen zoeken.
Nu heb ik mij vandaag toch opeens afgevraagd of er nog geen ID3 support in PHP zit…
Daar heb ik in feite geen antwoord op gevonden, maar ik heb wel gevonden wat ik zocht: Een open-source project waarmee de ID3 tags van MP3 bestanden (en meer) kunnen gelezen en gebruikt worden, namelijk getID3.

Sinds dit het moeilijkste van het hele automatiseren was kon ik meteen aan de slag. Ik ben echt positief verrast over hoe simpel getID3 in te zetten is, en hoeveel informatie daarmee op te halen was.

Om een lang verhaal kort te maken heb ik dus nu een geautomatiseerde versie van de playlist.xml gebouwd.
Het leuke is dat je nu zelf de lengte van de track niet meer moet uitrekenen (wat op zich het meest storende van het hele playlist.xml gebeuren was). En natuurlijk: Nooit meer playlists updaten!

PlayrDiscovr

Download

Gebruik

Gewoon PlayrDiscovr unzippen, en de inhoud van de map uploaden naar je server.
De MP3 bestanden komen in de ‘music’ folder te staan.
In Flash moet je nog even de URL naar je playlist aanpassen van ‘playlist.xml’ naar ‘playlist.php’, en je bent klaar. Nooit meer playlists updaten!
PlayrDiscovr haalt alle info over de tracks op vanuit de ID3v2 tag. Als deze dus in orde is, is zijn je playlists automatisch aangepast, vanaf dat je een liedje op de server hebt upgeload.

Veel plezier!

Playr 2.0 is coming… What do YOU want?

Ja, hoor: Een volledig Engelse titel!
Maar toch ga ik nog even doorbloggen in het Nederlands ;)

Op het moment van schrijven ben ik zo goed als klaar met de nieuwste versie van Playr, de Actionscript musicplayer class. Ik moet nog even kijken of ik geen domme fouten heb, en nog wat schoonheidsfouten opruimen. Eens ik daarmee klaar ben, zal ik deze versie releasen.

Relatief veel mensen hebben deze klasse gebruikt, velen zonder problemen, sommigen met.
Nu is mijn vraag:

Wat heb ik vergeten in de vorige versie? Wat willen jullie er nog meer bij?

Als er voorstellen zijn die bij Playr aansluiten zou ik deze met plezier verwezenlijken.
Alvast bedankt voor jullie tijd :)

Playr: De ActionScript 3 music player class!

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

Bitmapdata + Soundmixer.computeSpectrum = Soundcoolness!

Een paar dagen geleden ben ik eens aan de slag gegaan met de bitmapdata class. En tegelijk heb ik ook eens gekeken hoe je gebruik kunt maken van de ‘computeSpectrum()’ method die de SoundMixer class te bieden heeft.

Na een half uurtje te prutsen had ik door hoe het werkte en ik kon ik ik er wat verder in gaan, en gebruik maken van de Filters die je in AS3 kunt gebruiken. Echt coole shit zit daarin!!

Ik heb wat speelse dingen gemaakt, en ik moet zeggen dat ik best wel onder de indruk ben van de kracht van AS3: telkens opnieuw vind ik AS3 een stuk cooler!

Hieronder staan de links naar de SWF’s

Enkele opmerkingen hierover:

Versie 5 is op zich wat zwaar. Ik wou een Windows Media Player-achtig effect namaken.
Versie 6 werkt in mijn lokale Flash Player zonder veel problemen, online lijkt dat een ander resultaat te zijn… Ik heb het gevoel dat dat met de security sandbox van de FlashPlayer te maken heeft. Als iemand weet wat het probleem is: Shout! Ook performantie tips zijn meer dan welkom, want ik heb al andere visualisaties gezien die maar tot 20% van de CPU gaan, terwijl deze hier met gemak de 50% halen.

De sources van deze items staan hier zodat je ernaar kunt kijken, en er zelf ook wat mee kan gaan spelen!
Gewoon ergens een MP3 plukken uit je collectie deze in bij je fla gaan plaatsen en de code zo aanpassen zodat je deze dan ook inlaadt. Ik geef mijn gebruikte liedjes in de voorbeelden niet mee door auteursrechten e.d. ;)

Aarzel niet om te posten wat er beter kan, wat jullie in elkaar gestoken hebben, of welke tips jullie voor me hebben! Ik hoor het graag.

Alvast veel plezier met de sources!

Open-source MP3 Player Class: MusicPlayer (Beta release)

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

Na lang wachten heb ik vandaag eindelijk al mijn ditjes en datjes in mijn MusicPlayer class kunnen afwerken.

De player beschikt nu over de volgende properties:

  • Autoplay
  • Playlist laden (XML)
  • De buttonacties instellen
  • 2 progress events (Vooruitgang van inladen van de track, alsook de vooruitgang van de track zelf)
  • Enkele track inladen
  • Repeat
  • ID3 ondersteuning

Wat nog op het programma staat:

  • Shuffle
  • Visualisatie module

Er zijn een aantal wijzigingen in de class gebeurd, waardoor je waarschijnlijk je code zult moeten aanpassen in je huidige projecten. Zo is de import regel iets gewijzigd, gezien de MusicPlayer class zijn eigen events nodig heeft (PlayerEvents). Ik heb de hiërarchie dan ook ietje gewijzigd zodat je geen meerdere imports moet uitvoeren.

De code ziet er voortaan zo uit:

import com.nocreativity.playr.*;
var myPlayer:Playr = new Playr();
myPlayer.autoPlay=true;
myPlayer.repeat = true;
myPlayer.volume = 100;
myPlayer.loadPlaylist("playlist.xml");
myPlayer.registerPlayButton(btnPlay);
myPlayer.registerStopButton(btnStop);
myPlayer.registerPauseButton(btnPause);
myPlayer.registerNextButton(btnNext);
myPlayer.registerPreviousButton(btnPrevious);
myPlayer.registerMuteButton(btnMute);
myPlayer.ID3SourceEnabled =true;

myPlayer.addEventListener(PlayerEvent.SONGINFO,infoHandler);
myPlayer.addEventListener(PlayerEvent.SONG_PROGRESS,songprogressHandler);
myPlayer.addEventListener(PlayerEvent.LOAD_PROGRESS,loadprogressHandler);

function songprogressHandler(e:PlayerEvent):void{
txtSongProgress.text = "song progress: " + e.songprogress;
}
function loadprogressHandler(e:PlayerEvent):void{
txtLoadProgress.text = "load progress: " + e.loadprogress;
}

function infoHandler(e:PlayerEvent):void{
txtTrackInfo.text = myPlayer.artist;
txtTrackInfo.appendText(" - " + myPlayer.trackName);
txtTrackInfo.appendText(" (" +myPlayer.album+")");
txtTrackInfo.appendText(" | " + myPlayer.trackDuration);
}

In het bovenstaande voorbeeld is ook de ID3SourceEnabled gebruikt: deze boolean laat je kiezen of je de ID3tag van je MP3 bestanden wilt gebruiken als bron voor de artist, album en trackName eigenschappen. Als je deze waarde op true zet wordt de artist, album en title tag uit je XML bestand genegeerd, en kun je je XML bestand dus gewoon korter maken. Zet je dit op false wordt je XML bestand als bron van deze eigenschappen gebruikt. Dus als je ID3tags niet naar behoren zijn ingevuld is dit een secundaire oplossing.

Ook de XML heeft een kleine wijziging ondergaan: Er is een nieuwe tag bijgekomen (totalTime): de totale tijd (in seconden) die het betreffende liedje duurt. Dus in geval van een track van 3 minuten en 28 seconden komt dat op 208 (3*60+28) uit. Deze waarde moet handmatig ingegeven worden. Het kan ook via ID3tag maar is precies omslachtig… Als iemand de gouden tip heeft is dit welkom.

Download:

De huidige versie kun je hier downloaden.
Een voorbeeld hoe de XML er moet uitzien staat hier.
Een voorbeeld kun je hier downloaden.
De documentatie heb ik nog niet geupdate, maar dat komt er zo snel mogelijk aan.

Naamsvermelding & Gelijk delen Ik release de MusicPlayer class en de PlayerEvent 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.