ЖУРНАЛ ХАКЕР

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

Horrific (smirnandr@mail.ru)

Спецвыпуск Хакер, номер #004, стр. 004-094-3


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 не тронет мое достоинство. Подключай к компьютеру колонки помощнее и врубай музон, чтоб тем, кто за стеной, даже памперсы не помогли. Удачи тебе.

Назад на стр. 004-094-2  Содержание  Вперед на стр. 004-094-4