Delphi. Пишем OneSong mp3 player на bass.dll

Понадобилось в одном проекте добавлять возможность проигрывания mp3 в документах TrichView в качестве контрола. Написал, пока что в черновом варианте, простой OneSongMp3Player на bass.dll. Здесь опишу создание в качестве отдельной программы, чуть позже, в качестве отдельного компонента. А ещё чуть позже допишу остальной функционал плеера, уж больно это затягивающее занятие. А библиотека bass.dll к этому располагает!

1


Скачиваем bass.dll

Это можно сделать на разных сайтах, я скачал отсюда. Прямая ссылка для скачивания под WIndows находится здесь. В результате у нас получится следующее. Глаз радуется, когда видишь папочку delphi!

2

Как видно – в этой директории находится файл bass.dll – он нам понадобится!

Внутри папки delphi, кроме кучи интересных примеров находится файл bass.pas

Всего для работы нам понадобятся файлы bass.dll и bass.pas. Я их положил в папку с программой – ограничился самым простым вариантом.


Структура проекта

Структура проекта получилась следующей. Файлы исходников можно скачать далее.

4

 


Файлы исходников

Скачать файлы исходников


 Проектирование

В принципе, лучше всего читать код и справку, но некоторые моменты поясню. При проектировании программа выглядит таким образом.

5

В качестве элемента управления временем выбран стандартный scrollbar – его возможностей вполне хватило для реализации основного функционала. Кнопки Play, Stop, Pause, Restart это TSpeedButton – они связаны одним GroupIndex. Кнопка Loop также TSpeedButton. Если она нажата, то при достижении конца трека – он начинается сначала.


MainUnit

Подключение библиотеки bass  через uses – просто добавляем в папку с проектом bass.dll и bass.pas и пишем в uses BASS

Также, второй момент – с расчетом времени. Я сначала сихрофазотронил, но потом упростил – написал одну процедуру для расчета всех необходимых времен (CountTime) и добавил её к событию таймера, а также на всё кнопки. Функция рассчитывает всё время трека, оставшееся и прошедшее. Значения записываются в поля. класса формы как строковые значения и оттуда считываются в лабели.

На FormCreate стоит пара проверок, которые фигурируют во всех примерах библиотеки bass.dll.

Дополнительный модуль для расчета всего времени трека в секундах

Модуль загрузки картинок из ресурсов в память

Тестируем работу плеера!

6

7

 

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