Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Программный код






{ MP3 плееер с регулятором громкости.}

unit mp3p_;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Buttons, ExtCtrls, MPlayer, ComCtrls,

MMSYSTEM, FileCtrl; // эти ссылки вставлены вручную

type

TForm1 = class(TForm)

// кнопки

SpeedButton1: TSpeedButton; // Предыдущая композиция

SpeedButton2: TSpeedButton; // Воспроизведение/Стоп

SpeedButton3: TSpeedButton; // Следующая композиция

SpeedButton4: TSpeedButton; // Выбор папки

ListBox1: TListBox; // Список композиций (mp3 файлов)

MediaPlayer1: TMediaPlayer; // медиа плеер

TrackBar1: TTrackBar; // регулятор громкости

Timer1: TTimer;

Label1: TLabel;

Label2: TLabel;

Shape1: TShape; // рамка вокруг кнопок

procedure FormCreate(Sender: TObject);

procedure ListBox1Click(Sender: TObject);

procedure SpeedButton2Click(Sender: TObject);

procedure SpeedButton1Click(Sender: TObject);

procedure SpeedButton3Click(Sender: TObject);

procedure TrackBar1Change(Sender: TObject);

procedure Timer1Timer(Sender: TObject);

procedure SpeedButton4Click(Sender: TObject);

// эти объявления вставлены сюда вручную

procedure Play; // воспроизведение

procedure PlayList(Path: string); // формирует список MP3 файлов

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

var

SoundPath: string[255];

min, sec: integer; // время воспроизведения

volume: LongWord; // старшее слово - правый канал,

// младшее - левый.

// формирует список MP3 файлов

procedure TForm1.PlayList(Path: string);

var

lpBuf: PChar; // указатель на nul-terminated строку

sWinDir: string[128]; // обычная Паскаль строка

SearchRec: TSearchRec; // структура SearchRec содержит информацию

// о файле, удовлетворяющем условию поиска

begin

ListBox1.Clear;

// сформировать список mp3 файлов

if FindFirst(Path + '*.mp3', faAnyFile, SearchRec) =0 then

begin

// в каталоге есть файл с расширением WAV

// добавим имя этого файла в список

ListBox1.Items.Add(SearchRec.Name);

// пока в каталоге есть другие файлы с расширением WAV

while (FindNext(SearchRec) = 0) do

ListBox1.Items.Add(SearchRec.Name);

end;

ListBox1.ItemIndex: = 0;

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

PlayList('');

ListBox1.ItemIndex: = 0;

Label1.Caption: =ListBox1.Items[ListBox1.itemIndex];

TrackBar1.Position: = 7;

// старшее слово переменной volume - правый канал,

// младшее - левый

volume: = (TrackBar1.Position - TrackBar1.Max+1)* 6500;

volume: = volume + (volume shl 16);

waveOutSetVolume(WAVE_MAPPER, volume); // уровень сигнала

end;

// щелчок на названии произведения

procedure TForm1.ListBox1Click(Sender: TObject);

begin

// вывести в поле метки Label1 имя выбранного файла

if not SpeedButton2.Down

then SpeedButton2.Down: = True;

Label1.Caption: =ListBox1.Items[ListBox1.itemIndex];

Play;

end;

// щелчок на кнопке Воспроизведение

procedure TForm1.SpeedButton2Click(Sender: TObject);

begin

if SpeedButton2.Down then

// пользователь нажал кнопку

// начать воспроизведение

Play

else

// если кнопка Воспроизведение нажата,

// то повторное нажатие останавливает

// воспроизведение

begin

MediaPlayer1.Stop;

Timer1.Enabled: = False;

SpeedButton2.Down: = False;

SPeedButton2.Hint: = 'Play';

end;

end;

// кнопка К предыдущей

procedure TForm1.SpeedButton1Click(Sender: TObject);

begin

if ListBox1.ItemIndex > 0 then

ListBox1.ItemIndex: = ListBox1.ItemIndex - 1;

Play;

end;

// кнопка К следующей

procedure TForm1.SpeedButton3Click(Sender: TObject);

begin

if ListBox1.ItemIndex < ListBox1.Count then

ListBox1.ItemIndex: = ListBox1.ItemIndex + 1;

Play;

end;

// пользователь изменил положение

// регулятора громкости

procedure TForm1.TrackBar1Change(Sender: TObject);

begin

volume: = 6500* (TrackBar1.Max - TrackBar1.Position);

volume: = volume + (volume shl 16);

waveOutSetVolume(WAVE_MAPPER, volume);

end;

// воспроизвести композицию,

// название которой выделено

// в списке ListBox1

procedure TForm1.Play;

begin

Timer1.Enabled: = False;

Label1.Caption: =ListBox1.Items[ListBox1.itemIndex];

MediaPlayer1.FileName: = SoundPath + ListBox1.Items[ListBox1.itemIndex];

try

Mediaplayer1.Open;

except

on EMCIDeviceError do

begin

ShowMessage('Ошибка обращения к файлу '+

ListBox1.Items[ListBox1.itemIndex]);

SpeedButton2.Down: = False;

exit;

end;

end;

MediaPlayer1.Play;

min: =0;

sec: =0;

Timer1.Enabled: = True;

SpeedButton2.Hint: = 'Stop';

end;

// сигнал от таймера

procedure TForm1.Timer1Timer(Sender: TObject);

begin

// изменить счетчик времени

if sec < 59

then inc(sec)

else begin

sec: =0;

inc(min);

end;

// вывести время воспроизведения

Label2.Caption: = IntToStr(min)+': ';

if sec < 10

then Label2.Caption: =

Label2.Caption +'0'+ IntToStr(sec)

else Label2.Caption: =

Label2.Caption + IntToStr(sec);

// если воспроизведение текущей композиции

// не завершено

if MediaPlayer1.Position < MediaPlayer1.Length

then exit;

// воспроизведение текущей композиции

// закончено

Timer1.Enabled: = False; // остановить таймер

MediaPlayer1.Stop; // остановить плеер

if ListBox1.ItemIndex < ListBox1.Count // список не исчерпан

then begin

ListBox1.ItemIndex: = ListBox1.ItemIndex + 1;

Play;

end

end;

// Щелчок на кнопке Папка

// Выбрать папку, в которой находятся MP3 файлы

procedure TForm1.SpeedButton4Click(Sender: TObject);

var

Root: string; // корневой каталог

pwRoot: PWideChar;

Dir: string;

begin

Root: = ''; // корневой каталог - папка Рабочий стол

GetMem(pwRoot, (Length(Root)+1) * 2);

pwRoot: = StringToWideChar(Root, pwRoot, MAX_PATH*2);

if not SelectDirectory('Выберите папку', pwRoot, Dir)

then Dir: =''

else Dir: = Dir+'\';

// каталог, в котором находятся MP3 файлы выбран

SoundPath: = Dir;

PlayList(SoundPath);

end;

end.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.