Dékibulle un petit lecteur audio

Soyez le premier à donner votre avis sur cette source.

Vue 10 738 fois - Téléchargée 1 612 fois

Description

Lecteur audio multiformat utilisant les librairies BASS ainsi que les composants CoolTrayIcon et HotKeyManager.
Sont originalité réside dans l'utilisation de l'arborescence des répertoires où sont stockés les fichiers (impose que vos fichiers soient un minimum rangés...).
Le lecteur lit toutes sortes de formats (WAV/AIFF/MP3/MP2/MP1/OGG/WMA/MPC/CDA).
Il lit les tags des mp3, ogg et wma. Il permet de modifier les tags mp3 (ID3 v1.1 et v2).
J'ai rajouté un egaliseur 3 bandes.
On peut également sauvegarder et relire des playliste au format m3u.

Si vous avez des commentaires ils sont les bienvenus !

Rendez-vous sur mon site http://f.montin.free.fr/logiciels pour avoir plus d'infos.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

f0xi
Messages postés
4200
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
2 janvier 2019
27
Tu as oublier le code source ...
f0xi
Messages postés
4200
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
2 janvier 2019
27
oooops :



0: Caption := format('-%s',[TimeToStr(t3 / TimeAdj)]);
1: Caption := TimeToStr(t1 / TimeAdj);
2: Caption := TimeToStr(t2 / TimeAdj);
f0xi
Messages postés
4200
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
2 janvier 2019
27
alors de nouvelles ameliorations a apporter :

Zip :
- fournir les DCU HotKeyManager et CoolTrayIcon

unit1.pas :
>>> interface champs VAR (variables globale) ajouter :
TimeAdj : integer = 86400;
t1, t2, t3 : single;

>>> procedure TForm1.FormCreate

- mettre aprés "begin" : LongTimeFormat := 'nn:ss';

>>> un peu avant "procedure TForm1.Timer2Timer"

- ajouter :

procedure SetLabelTemps(const RefreshProgress : boolean = true);
var
t1, t2, t3: single;
begin
with form1 do begin
// Met à jours la barre de progression
if RefreshProgress then ProgressBar1.Position := BASS_ChannelGetPosition(Channel);
// Met à jours le temps de lecture
t1 := BASS_ChannelBytes2Seconds(Channel, ProgressBar1.Position);
t2 := BASS_ChannelBytes2Seconds(Channel, BASS_ChannelGetLength(Channel));
t3 := t2 - t1;
with LabelTemps do begin
case Tag of
0: Caption := format('-%s',[TimeToStr(t3 / 86400)]);
1: Caption := TimeToStr(t1 / 86400);
2: Caption := TimeToStr(t2 / 86400);
end;
end;
end;
end;

- et remplacer les procedures Time2Timer, LabelTempsMouseDown et ProgressBar1MouseMove par :

procedure TForm1.Timer2Timer(Sender: TObject);
begin
SetLabelTemps;
with Timer2 do
if t3 <= 0.5 then Interval := 10
else Interval := 500;
if t1 = t2 then LectureNext;
end;

procedure TForm1.LabelTempsMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
SetLabelTemps;
end;

procedure TForm1.ProgressBar1MouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
begin
if ssLeft in Shift then
begin
ProgressBar1.Position := Round(X / (ProgressBar1.Width - 4) * ProgressBar1.Max);
BASS_ChannelSetPosition(Channel, ProgressBar1.Position);
SetLabelTemps(false);
end;
end;


voila ... mmm vus les modif qu'il y a faire, envoie moi ton email par message privé et comme ça je pourrais te transmettre les modif sans devoir recréer a chaque fois un sujet.
f0xi
Messages postés
4200
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
2 janvier 2019
27
c'est du delphi ... ça va etre chaud de liberer de la ram.
a moins de le faire en mode shell ... #sig#

tu peu deja optimiser completement le code, virer ce qui n'est pas necessaire.
cs_flagada
Messages postés
60
Date d'inscription
jeudi 8 mai 2003
Statut
Membre
Dernière intervention
18 février 2011

Merci pour vos conseils, j'ai adopté le code de FOXI et j'ai fais une mise à jours de la source.
Par contre je me demandais comment tu mesurais les 385ms ??

Est-ce que vous auriez des conseils simple pour libérer le plus de mémoire possible ? (chez moi le prog prend entre 7 et 8Mo de RAM)

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.