Surse delphi

Scopul acestei lecții este de a crea un player de muzică mp3 (player) bazat pe biblioteca bass.dll.
În acest proiect, voi încerca să vă spun cum să conectați biblioteca bass.dll, să creați cel mai simplu PlayList. conectați butoanele (Redare, Pauză, Oprire) pentru a controla redarea.







Rulați Delphi și creați o nouă aplicație: File-> New-> VCL Forms Application - Delphi.
În proprietatea Nume a formularului vom scrie Form_player și Caption -> mp3player
Salvăm modulul (unitatea1) cu numele mp3 și proiectul (proiect1) cu numele de mp3player.

În dosarul proiectului, am pus fișierele bass.dll și bass.pas. Fișierele pot fi descărcate de pe site-ul oficial www.un4seen.com sau aici
Apoi, așezați componentele pe formular, așa cum se arată în figură.

Surse delphi

Componenta cea mai de sus a TPaintBox este din fila System. în acesta vom afișa efecte de vizualizare. Imediat setați proprietatea Name -> pb1 pentru această componentă.
Apoi plasați componenta TScrollBar din fila Suplimentare. acesta va afișa poziția curentă atunci când redați o pistă.
Sub partea stângă și dreaptă a barei de derulare, plasăm componentele TLabel din fila Standart. Eticheta stângă1 va afișa ora curentă de redare, iar Label2 dreapta va afișa ora de redare a piesei.
În proprietatea Caption pentru Label1 și Label2, am scris Time.
Mai jos introducem trei butoane TButton din fila Standart și setăm corespunzător proprietățile Caption - Play, Pause, Stop.
Apoi, plasați cele două componente TTrackBar din fila Win32 și deasupra acestora două TLabel. Deasupra primei bare de parcurgere1 se semnează Volume, deasupra celei de-a doua track-uri TrackBar2, semnăm balanța.
Chiar și mai jos plasăm 10 componente TTrackBar pentru egalizator. setați proprietatea Orietare la trVertical. Sub ele prin TLabel frecvență componente semn (80 Hz, 170 Hz, 310 Hz, 600 Hz, 1 kHz, 3 kHz, 6 kHz, 10 kHz, 12 kHz, 14 kHz), valorile de frecvență pot fi apoi schimbate după cum doriți.
Sub egalizator plasăm două butoane TButton în proprietatea Caption ale acestor butoane pe care le scriem Deschideți cântecul. și clar în consecință.
Sub butoanele, plasați componenta TListBox din fila Standart.
arunca în continuare cu privire la forma de componente TOpenDialog file și componenta Dialogs TTimer de file de sistem. proprietate Intervalul de Timer1 este setat egal cu 30 și Option-> ofAllowMultiSelect proprietate pentru componenta OpenDialog1 set Adevărat.

Restul proprietăților componentelor vizuale va fi setat mai târziu.

Să începem să scriem codul programului.

În secțiunea Utilizează, vom scrie bass, este necesar pentru a conecta biblioteca Bass.dll.

Apoi, vom învăța cum să descărcați melodii în PlayList.
Pentru a face acest lucru, în secțiunea Var vom declara o variabilă
i: integer; // numărul cântecului de redat în lista de redare
și variabila este
nume fișier: șir; // nume fișier:

Apoi, faceți dublu clic pe butonul Deschidere melodie. și scrieți următorul cod:


procedura TForm_player.Button1Click (expeditor: TObject);
var j: întreg;
începe
OpenDialog1.Title: = 'Deschideți fișierele';
OpenDialog1.Filter: = 'mp3 | * .mp3'; // filtra pentru fișiere
// verificați dacă PlayList nu este gol, apoi rețineți numărul piesei curente






/ / altfel setați numărul cantecului la 0 (prima poziție din PlayList)
dacă listbox1.Count<>0 atunci i: = ListBox1.ItemIndex altfel i: = 0;
// dialog de deschidere a fișierelor
dacă nu OpenDialog1.Execute apoi ieșiți;
începe
pentru j: = 0 la OpenDialog1.Files.Count-1 face
începe
// completați lista de redare
ListBox1.Items.Add (OpenDialog1.Files.Strings [j]);
se încheie;
se încheie;
/ / rețineți numele fișierului melodiei curente din lista de redare
Nume fișier: = ListBox1.Items.Strings [i];
// Selectați această melodie în PlayList
ListBox1.ItemIndex: = i;
se încheie;

Salvăm și testăm munca PlayList.

Creăm proceduri OnClick pentru butoanele Play, Pause, Stop.

Faceți clic pe butonul Redare și scrieți următorul cod:


procedura TForm_player.Button1Click (expeditor: TObject);
începe
// Verificați dacă redarea este deja dezactivată, apoi ieșiți
dacă modul = jucați apoi ieșiți;
// Incepem procedura de joc
jucător;
se încheie;

Similar pentru butoanele Pauză și Stop.


procedura TForm_player.Button2Click (expeditor: TObject);
începe
// Verificați dacă redarea este în desfășurare
dacă modul = joc atunci
începe
BASS_ChannelPause (canal); // stop playback - pauză
mode: = pauză; // set playmode -> pauză
se încheie;
se încheie;
[/ quoye]
pentru Stop


procedura TForm_player.Button3Click (expeditor: TObject);
începe
// Verificați dacă redarea este în desfășurare
dacă modul = joc atunci
începe
BASS_ChannelStop (canal); // opri redarea - opriți
mode: = Stop; // set playmode -> stop
se încheie;
se încheie;

În secțiunea Var, declarăm încă două variabile

Canal: DWORD; // descriptor de canal
Mod: TPlayerMode; // PlayMode

var
Form_player: TForm_player;
i: întreg; // numărul piesei pe care doriți să o redați în lista de redare
nume fișier: șir; // nume fișier:
Canal. DWORD; // descriptor de canal
Mod: TPlayerMode; // PlayMode


În secțiunea Tip declarați


TPlayerMode = (Stop, Redare, Întreruperi);

Surse delphi

și să creeze un nou player de proceduri (redarea unui fișier);
Pentru a face acest lucru, înainte de secțiunea privată scrie:

Surse delphi

Și după secțiune
punerea în aplicare

scrieți codul procedurii:

procedura TForm_Player.Player;
începe
// verificați dacă nu există o pauză
dacă modul<>întreruptă apoi începe
// apoi verificați dacă fișierul există din PlayList
// dacă fișierul nu există, apoi ieșiți
dacă nu FileExists (FileName), atunci începe ShowMessage ("Fișierul nu există"); exit; end;
// opriți și eliberați canalul de redare
BASS_ChannelStop (canal); BASS_StreamFree (Canal);
// încercați să încărcați fișierul și să obțineți descriptorul canalului
Channel: = BASS_StreamCreateFile (FALSE, PChar (FileName), 0, 0, 0 sau BASS_UNICODE);
// dacă descriptorul canal = 0 (fișierul nu poate fi încărcat dintr-un motiv oarecare),
// mesaj de eroare de ieșire și ieșire
dacă Channel = 0 atunci începe ShowMessage ("Eroare la descărcarea fișierului"); exit; end;
se încheie;

// comanda BASS_ChannelPlay (Channel, False) încercăm să redați fișierul,
// dacă acest lucru nu este posibil, vom emite un mesaj de eroare
dacă nu BASS_ChannelPlay (Canal, Fals) atunci
începe ShowMessage ("Eroare la redarea fișierului"); ieșire; sfârșit;

// atribuiți titlul formularului la numele fișierului redat
Form_Player.Caption: = ExtractFileName (FileName);
// Instalați PlayMode - redați
mod: = joc;
se încheie;

Pentru evenimentul OnCreate al formularului, scrieți:

procedura TForm_player.FormCreate (expeditor: TObject);
începe
// verificați corectitudinea încărcării BASS.DLL
dacă (HIWORD (BASS_GetVersion) <> BASSVERSION)
începe
MessageBox (0, 'Nu este o versiune valabilă a BASS.DLL', zero, MB_ICONERROR);
Halt;
se încheie;

// Initializare audio - implicit, 44100hz, stereo, 16 biți
dacă nu BASS_Init (-1, 44100, 0, mâner, nul) atunci
începe
MessageBox (0, "Initializarea audio nu a reușit", nul, MB_ICONERROR);
Halt;
se încheie;
se încheie;

Pentru evenimentul OnClose al formularului, scrieți:

procedura TForm_player.FormClose (expeditor: TObject; var Action: TCloseAction);
începe
// Eliberați obiectele înainte de a le închide
Bass_Stop (); // nu mai juca
BASS_StreamFree (canal); // eliberați canalul audio
Bass_Free; // Eliberați resursele folosite de Bass
se încheie;







Articole similare

Trimiteți-le prietenilor: