Gagnez en vitesse dans un mp3 player grace au hash table

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 754 fois - Téléchargée 24 fois

Contenu du snippet

Le gros problème des lecteurs mp3 en mirc script est souvent la lenteur de loading des playlists , quand on scanne de gros dossier. Ce problème est completement resolue avec l'utilisation des hash tables qui permettent en gros le scanning de 4000 fichiers en 852 milisecondes ( soit 0.8 seconde ) , ce calcul prend en compte aussi le loading dans la liste du player. Mais tout dépend de la puissance de votre ordinateur ( 3 a 5 secondes pour un pentium 3 )

Pour comprendre comment ça marche j'ai codé avec Chang-Fu ce lecteur mp3 rudimentaire ou la fonction /stock vous montre l'illustration du texte ci dessus.

Cette astuce montre aussi l'utilisation de $shortfn pour s'affranchir du problème des espaces.

Source / Exemple :


#alias utilisant l'astuce (codés par Kerrigan )
alias stock {
  set %itr 0
  if ( $hget(mp3) ) { .hfree mp3 }
  hmake mp3 500
  echo -a $findfile($sdir(c:\,choisissez un répertoire a scanner),*.mp3,0,add $1-) files scanned
  dialog -m mp3 mp3 | set %itr 1
  while ( $hget(mp3,n $+ %itr) ) { did -a mp3 4 $nopath($ifmatch) | inc %itr }
}

alias add { inc %itr | hadd mp3 n $+ %itr $1- }

dialog mp3 { 
  title HashTable Player - Time: None - None
  size -1 -1 400 250
  button "Play",1 ,5 200 50 20,flat
  button "Stop",2 ,60 200 50 20,flat
  button "Fermer", 3,355 225 40 20,ok,flat
  list 4 , 5 5 390 200
  scroll "Volume",5,5 225 300 20,horizontal range 65535
}

on 1:dialog:mp3:dclick:4:{ mpsplay $did($did).sel }
on 1:dialog:mp3:init:0:{ did -c mp3 5 $vol(wave) }
on 1:dialog:mp3:mouse:5:{ vol -w $did(5).sel }
on 1:dialog:mp3:sclick:2,3:{ splay stop }
on 1:dialog:mp3:sclick:1:{ mpsplay $did(4).sel } 
on 1:mp3end:{ mpnext }

#alias pour le style ( codés par Chang-Fu )
alias mpnext { did -c mp3 4 $calc($did(mp3,4).sel +1) | mpsplay $did(mp3,4).sel }
alias mpsplay { splay $shortfn($hget(mp3,n $+ $1)) | echo -a Playing: $hget(mp3,n $+ $1) | .timertitle 0 1 mptime }
alias mptime { 
  if ($dialog(mp3)) { dialog -t mp3 HashTable Player - Time: $duration($calc($insong.pos /1000)) - $duration($calc(($sound($insong.fname).length - $insong.pos) /1000)) }
  else { .timertitle off }
}

Conclusion :


Dans la suite du code Chang-Fu a mis des alias pour que vous puissez exploiter la hash table pour lire les morceaux dans la liste.

Attention ce code , ça n'a rien a voir avec un vrai lecteur mp3, et si vous prenez la source vous devrez la compléter énormément pour que le lecteur ressemble a quleque chose.

Pour lancer l'alias taper /stock dans le status , apres avoir copier la source dans vos remotes

A voir également

Ajouter un commentaire

Commentaires

euh je suis en train de regarder la source de ce lecteur mp3 c tout bonnement genial au fait je voulais dire comment as tu fai pour la barre pour changer le son ?
Kerrigan
Messages postés
708
Date d'inscription
lundi 15 juillet 2002
Statut
Membre
Dernière intervention
17 mars 2005

heureux que ça te plaise par contre ya du boulot pour que ce morceau de code ressemble a un vrai lecteur :D
DaRdeviL_Du_51
Messages postés
1
Date d'inscription
mardi 20 avril 2004
Statut
Membre
Dernière intervention
20 avril 2004

Salut oui ses vrai ça marche bien moi avant je pouvai mm pa lire les mp3
cs_Eiffel
Messages postés
121
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
26 août 2004

Ouais c'est bien fait bvo Kerrigan :)
Simple mais bien fait ..
Moi aussi jme met au hashtable car c'est chiant d'avoir trop de vars :/
je voulai posser la meme question que SorDrixer ..
Merci bien et bvo ;p
cs_SornDrixer
Messages postés
2087
Date d'inscription
jeudi 12 décembre 2002
Statut
Modérateur
Dernière intervention
30 janvier 2011
2
D'accord, merci Kerrigan :)

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.