Кранты соседям, или ТВОЙ собственный мега-плеер на Delphi

Сначала пишем CD-Player

Если ты еще не установил Delphi, пока я тут распинался, то принимайся за это немедленно. Я буду считать, что ты достал 5-ю версию этой проги. Возможны и другие варианты, но никак не меньше 3-й. Как устанавливать Delphi, я тебя учить не буду — в этом номере про инсталляцию языков вообще отдельная статья есть. Если установил, то смело запускай, и мы рванем в бой. Когда Delphi загрузится, перед твоими глазами откроется новый проект.

Вообще-то, мы уже рассказывали о Delphi, но я все же постараюсь рассказать все подробно, чтобы поняли и те, кто не смог с первого раза пролезть в танкетку. Для тех, кто видит это в первый раз, сообщаю, что находящееся посередине окно с заголовком «Form1» — это твоя форма. Слева расположено окно «ObjectInspector» (рисунок 1), с которым ты будешь очень много работать и менять различные свойства.

Вот с «ObjectInspector» мы и начнем. Сейчас в нем находятся свойства твоего окна (будущего плеера). Щелкни по строке «Caption» и напиши там название своего будущего произведения. Это название ты увидишь в заголовке формы и будущей проги. Теперь щелкни по строке «Icon», и перед тобой появится окно выбора иконки для проги (рисунок 2). Нажми кнопку «Load» и найди какую-нибудь подходящую иконку. Когда найдёшь, жми «ОК» и читай статью дальше.

Найди сверху окно, похожее на рисунок 3. У меня немного отличается, в связи с моими извращенными пристрастиями, но что-то похожее есть у тебя.

В этом окне под строкой меню справа есть куча закладок — это палитра компонентов. Выдели на ней закладку «System» и найди там «MediaPlayer» (он должен быть третьим слева). Теперь щелкни по нему, а потом щелкни по форме. У тебя должно получиться нечто похожее на рисунок 4. Если не получилось, то стоит обработать руки напильником и зубилом или, по крайней мере, попробовать еще раз :).

На твоей форме теперь появился компонент с названием MediaPlayer1. На этом компоненте ты можешь увидеть 9 кнопок: воспроизведение, пауза, стоп, перемотки, перескоки на следующий и предыдущий трек, запись и вытаскивание CD.

Теперь нажми клавишу «F9» и вставляй музыкальный компакт диск. Ты можешь запросто его слушать. Круто? Ни одной строчки кода, только легкие движения мауса и IBM — совместимые ручки :). Хотя моей задачей было только это, я решил продвинуться немного дальше. Закрой прогу и возвращайся в Delphi.

А потом делаем суперплеер

Сейчас мы сделаем универсальный плеер. Не пугайся, много времени и мозгов это не отнимет.

Щелкни по закладке «Standart» на палитре компонентов и найди там «Button». Установи его где-нибудь на форме, так же как и «MediaPlayer». Зачем это нужно, поймешь чуть позже, а пока… Делай :)! Теперь найди «Panel» и повтори операцию. Теперь найди закладку «Dialogs» на палитре компонентов и найди там «OpenDialog» (он должен быть первым). Установи его на форму.

После всего этого у тебя должно получиться нечто похожее на рисунок 5. Можешь оформить все это покрасивее. Для этого тебе нужно просто перетаскивать или растягивать созданные на форме объекты.

Надо еще пять минут потужиться, и что-нибудь выйдет. Выдели созданную тобой кнопку на форме и иди в «ObjectInspector». Найди строчку «Caption» и измени ее на «Открыть». Теперь выдели «MediaPlayer» и в строке «Display» выдели имя созданной тобой панели (по умолчанию это «Panel1»).

И еще кое-что. Дважды щелкни по кнопке, и перед тобой откроется редактор текста (рисунок 6). Здесь Delphi уже создала процедуру (в ней должен стоять твой курсор), которая будет вызываться каждый раз, когда ты жмешь на кнопку.

Прямо там, где находится курсор, напиши следующие пять строчек:

procedure TForm1.Button1Click(Sender: TObject);

begin

if OpenDialog1.Execute then

begin

MediaPlayer1.FileName:=OpenDialog1.Filename;

MediaPlayer1.Open;

end;

end;

Примечание!! Набирать на клаве нужно только то, что написано между крайними Begin и End, все остальное уже должно быть создано Delphi. Я привожу полную процедуру, только чтобы тебе было удобно глазеть и сравнивать с тем, что за тебя делает Delphi.

По-нашенски это звучит так:

если OpenDialog1.Выполнить то

начать

MediaPlayer1.ИмяФайла присвоить значение ИмяФайла из OpenDialog1.

MediaPlayer1.ОткрытьФайл

Кончить 🙂

Взгляни на код и эти строчки — если ты IBM-совместимый чел, то дополнительные объяснения тебе не понадобятся. Теперь можешь снова жать «F9», и твоя прога должна запуститься. Если не запустилась, то читай статью заново.

Попробуй нажать кнопку «Открыть». Перед тобой должно открыться стандартное окно открытия файла. Можешь открывать файлы: WAV, MID, AVI и другие мультимедийные примочки. Достаточно только иметь установленные соответствующие драйверы в системе. Все это после открытия можно просмотреть (прослушать) с помощью «MediaPlayer». И все это возможно благодаря «MMSystem» — все, что ты можешь прослушать стандартным вооружением окон, можно прослушать и через эту прогу.

И, наконец, улучшаем наш плеер

Чтобы продолжить, нужно вернуться к форме. Чтобы без проблем переключаться между формой и ее исходным текстом, используй пимпу F12.

Мы хотим сделать очень громкий плеер, поэтому добавим возможность изменения громкости. Для этого щелкни по закладке «Win32» на палитре компонентов и найди там компонент по имени «TrackBar». Установи два таких компонента на свою форму. У тебя должны получиться TrackBar1 и TrackBar2.

Теперь выдели любой из них и перейди в «ObjectInspector». Найди в нем строку «Orientation». Щелкни по ней, и перед тобой появится выпадающий список. Выбери в нем «trVertical». Теперь найди строку «Max» и измени хранящееся там значение (по умолчанию 10) на 255. После этого повтори те же операции со вторым TrackBar. У тебя должно получиться нечто, похожее на рисунок 7.

Теперь опять нужно выделить этот TrackBar. Перейди в «ObjectInspector» и щелкни по закладке «Events». Теперь дважды щелкни по строке «OnChange». Delphi опять создаст процедуру. Здесь ты должен написать следующее:

procedure TForm1.TrackBar1Change(Sender: TObject);

var LValue,RValue:Word;

begin

LValue:=$FF-TrackBar1.Position;

RValue:=$FF-TrackBar2.Position;

waveOutSetVolume(0, (RValue SHL 8)+LValue);

end;

А вот теперь выдели второй TrackBar. Снова иди в «ObjectInspector» и щелкай по закладке «Events». Ткни один раз мышкой в строку «OnChange», и перед тобой появится выпадающий список, в котором ты должен выбрать только что созданную процедуру (TrackBar1Change).

Теперь при изменении положения любого из TrackBar-ов будет вызываться одна и та же процедура «TrackBar1Change». Давай разберем по косточкам, что написано в этой процедуре. Это будет немного сложно, но полезно.

Первая строка (var LValue,RValue:Word) говорит, что нам нужно выделить память под две переменные Lvalue (это у нас будет значение громкости левого канала) и Rvalue (это значение громкости правого канала).

Строка «LValue:=$FF-TrackBar1.Position» высчитывает значение громкости для левого канала. На понятном языке это будет звучать так: «переменной Lvalue присвоить значение (шестнадцатиричное 255 — текущая позиция у TrackBar1». То же самое касается следующей строки, где рассчитывается громкость правого канала. Зачем нужно отнимать 255 от текущей позиции? Это связано с тем, что 0 — означает наивысшую громкость, а 255 — наименьшую. Этими двумя строчками я переворачиваю значение текущей позиции у TrackBar1. Если не переворачивать, то нижняя позиция TrackBar1 будет соответствовать максимальной громкости, а верхняя — минимальной. Это неудобно, поэтому я сделал подъем с переворотом.

Следующая строка: waveOutSetVolume(0, (RValue SHL 8)+LValue) — выставляет громкость звука. WaveOutSetVolume — процедура, устанавливающая громкость. Первый параметр в ней (ноль) означает, что надо установить громкость WAVE/Direct Sound выхода. У звуковой карты может быть несколько выходов: WAVE/Direct Sound, CD Audio, MIDI и линейный вход — ты в курсе?

(RValue SHL 8)+LValue означает, что надо взять переменную Rvalue, сдвинуть ее на 8 бит влево и прибавить значение левого канала. На первый взгляд непонятно, но попробую объяснить все на пальцах. Представим, что у тебя значение правого канала равно 55, а значение левого = 44. После сдвига числа 55 на 8 бит влево у тебя получится число 5500. А после прибавления 44 получится число 5544. Первые две цифры означают правый канал, а вторые две — левый (может наоборот, я не помню :)).

Ек!

Вот и все, а ты боялась:). Но, прежде чем жать «F9», тебе надо сделать еще кое-что. Найди в самом начале исходного текста слово «uses» и допиши туда слово «mmsystem». У тебя должно получиться нечто похожее на:

uses

mmsystem, Windows, Messages, ….

Если ты этого не сделаешь, то Delphi не сможет запустить твою прогу и будет ругаться на waveOutSetVolume. А вот теперь запусти прогу и открой какой-нибудь WAVE файл. Попробуй подвигать свои TrackBar-ы — круто? Несколько строчек кода и пять минут вождения мышью — твой крутой проигрыватель готов. Хотя меня просили научить тебя проигрывать только музыкальные диски, я уверен — Holod не тронет мое достоинство. Подключай к компьютеру колонки помощнее и врубай музон, чтоб тем, кто за стеной, даже памперсы не помогли. Удачи тебе.

Увидимся в аду :).

Не знаю как ты, а я люблю слушать музыку по максимуму. Чтобы каждая звуковая волна проникала сквозь мои клетки и раздалбливала мозги вдребезги :). А что нужно для отличного прослушивания цифровой музыки? Всего лишь компьютер, хороший проигрыватель и пачка памперсов для соседей :).

А представь теперь, что твой проигрыватель умеет проигрывать не только компакты, но и файлы в формате WAV, AVI, MOV, видеодиски и многое другое. Я хочу подчеркнуть (выделить, подмазать) слово «твой». Проигрыватель будет действительно твой. Сейчас я тебя научу, как это делается. В этом нам поможет супер-друпер язык программирования Delphi.

Что такое? У тебя слюни потекли? Возьми половую тряпку, а то утонешь. А представь теперь, что будет с твоими друзьями, когда ты им покажешь свое произведение. Их просто разорвет на тысячу маленьких кусочков :).


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

1 + 9 =