Dariusz Krala - Music Commander Player

Transkrypt

Dariusz Krala - Music Commander Player
Music Commander Player
Dariusz Krala1
1 Wydział Inżynierii Mechanicznej i Informatyki
Kierunek Informatyka, Rok IV
{dariusz.krala}@gmail.com
Streszczenie
Zaprezentowano projekt odtwarzacza dźwi˛eku o nazwie Music Commander. Program ła̧czy cechy zaawansowanego programu przeznaczonego do odtwarzania muzyki na małych dyskotekach lub imprezach oraz prostego odtwarzacza używanego do
celów domowych. Program został napisany w j˛ezyku C++ z wykorzystaniem środowiska Borland C++ Builder w oparciu o biblioteki BASS do obsługi dźwi˛eku, które
można darmowo pobrać ze strony http://www.un4seen.com.
1
Wst˛ep
Music Commander to program do odtwarzania plików dźwi˛ekowych posiadaja̧cy oprócz
podstawowych funkcji odtwarzania, które wyst˛epuja̧ w wi˛ekszości odtwarzaczy tego typu
również wiele innych bardziej zaawansowanych. Należa̧ do nich mi˛edzy innymi:
• Analiza wizualna strumienia
• Obcinanie ciszy na pocza̧tku i na końcu utworu
• Możliwość wyboru w programie na którym urza̧dzeniu dźwi˛ekowym ma pracować
dany strumień
• Możliwość pracy na kilku urza̧dzeniach dźwi˛ekowych jednocześnie
• Dodawanie efektów dźwi˛ekowych
• Przechwytywanie dźwi˛eku z urza̧dzeń (mikrofon, AUX, CD, wejście audio)
• Nagrywanie danych audio do pliku
• Wysyłanie danych audio do serwera SHOUTcast
• Obsługa zewn˛etrznych enkoderów (LAME, OggEnc)
• Obsługa wielu skórek
• Obsługa wtyczek
1
2
Struktura programu
Program podzielony jest na moduły w postaci bibliotek DLL, aby możliwe było łatwe
zwi˛ekszanie jego możliwości i funkcjonalności. Jedne moduły sa̧ opcjonalne co oznacza,
że program uruchomi si˛e bez nich, ale b˛edzie miał okrojona̧ funkcjonalność, natomiast
inne sa̧ niezb˛edne do pracy programu. Moduły sa̧ podzielone na nast˛epuja̧ce grupy:
• Wizualizacje dźwi˛eku - (opcjonalne) pozwalaja̧ wyświetlać w oknie głównym różne spektra dźwi˛eku np. oscyloskop. Maja̧ również możliwość tworzenia własnego
okna w celu wizualizacji dźwi˛eku na pełnym ekranie.
• Efekty dźwi˛ekowe - (opcjonalne) dodaja̧ce do odtwarzanej muzyki efekty np. efekt
echa
• Wtyczki rozszerzeń - (opcjonalne) różnego typu np. wtyczki umożliwiaja̧ce obsług˛e
wielu formatów list odtwarzania jak MCPL(własny format programu), PLS, M3U,
ASX itd.
• Dekodery dźwi˛eku - (opcjonalne) umożliwiaja̧ programowi obsług˛e wielu formatów plików dźwi˛ekowych
• Biblioteki silnika dźwi˛ekowego - (wymagane) tworza̧ trzon programu odpowiedzialny za obsług˛e dźwi˛eku
• Biblioteki komponentów graficznych - (wymagane) tworza̧ graficzny interfejs użytkownika
Rys. 1: Schemat podła̧czenia bibliotek do programu.
2
3
Opis strumieni
Biblioteka MCPlayerEngine.dll, która jest sercem programu posiada cztery odtwarzacze
(Foreground Player, Background Player, Input A Player, Input B Player) z którymi z kolei
powia̧zane sa̧ odpowiadaja̧ce im strumienie. Dwa z nich (Foreground i Background) służa̧
do odtwarzania dźwi˛eku z pliku lub ze strumienia internetowego natomiast dwa kolejne
(Input A oraz Input B) służa̧ do przechwytywania dźwi˛eku z urza̧dzeń wejściowych. Strumienie odtwarzaczy Foreground i Background posiadaja̧ dodatkowo możliwość zamiany
danych dźwi˛ekowych mi˛edzy soba̧ dzi˛eki czemu możliwe jest przenoszenie muzyki z
jednego odtwarzacza na drugi. Takie operacje sa̧ możliwe dzi˛eki zastosowaniu mikserów
strumieni, które sa̧ po prostu sumatorami danych dźwi˛ekowych o dwóch wejściach i jednym wyjściu. Każde wejście umożliwia regulacj˛e głośności danych dźwi˛ekowych, dzi˛eki
czemu można uzyskać płynne przejścia pomi˛edzy kolejnymi piosenkami, oraz dodatkowe
efekty np. ściszanie muzyki podczas mowy do mikrofonu. Jeśli strumienie sa̧ przypisane
do różnych urza̧dzeń wyjściowych (np. do różnych kart dźwi˛ekowych) to muzyka b˛edzie
przenoszona z jednej karty na druga̧. Możliwe jest również przypisanie tych strumieni do
różnych wyjść audio na tej samej karcie dźwi˛ekowej jeśli karta obsługuje wi˛ecej niż dwa
kanały audio (czyli 4, 6 lub 8). Strumienie odtwarzaczy Input A i Input B maja̧ możliwość
wysyłania swoich danych dźwi˛ekowych do pozostałych odtwarzaczy. Te strumienie jeśli
chodzi o sposób przypisania do określonego urza̧dzenia wyjściowego, maja̧ takie same
możliwości co Foreground i Background.
Rys. 2: Schemat poła̧czeń dźwi˛ekowych mi˛edzy strumieniami.
Przebieg danych dźwi˛ekowych przez strumień dla Foregroung Player wygla̧da nast˛epuja̧co.
Dane sa̧ pobierane ze źródła, którym może być plik lub strumień radia internetowego. Nast˛epnie dane sa̧ dekodowane i trafiaja̧ na wejście wzmacniacza dynamicznego (DAMP Dynamic Amplituner). Tam głośność dźwi˛eku jest wyrównywana do tego samego po3
ziomu, aby każda piosenka grała z taka̧ sama̧ głośnościa̧ (za ciche sa̧ rozgłaszane a za
głośne przyciszane). Tak znormalizowane dane dźwi˛ekowe trafiaja̧ na miksery, których
zadaniem jest odpowienie wymieszanie ich z danymi z innych strumieni, jeśli zachodzi
taka potrzeba. Po wyjściu z mikserów dane trafiaja̧ na korektor (EQ - Equalizer), nast˛epnie na blok nakładaja̧cy efekty (DSP - Digital Signal Processor) a stamta̧d na encoder
(ENC), jeśli maja̧ być zapisane do pliku. Strumień kończy drog˛e na urza̧dzeniu wyjściowym. Możliwe jest zamienianie miejscami bloków EQ, DSP oraz ENC i zestawianie ich
w nast˛epuja̧cych konfiguracjach: EQ->DSP->ENC, DSP->EQ->ENC, EQ->ENC->DSP,
DSP->ENC->EQ, ENC->EQ->DSP, ENC->DSP->EQ w zależności od potrzeb. W konfiguracji EQ->DSP->ENC dźwi˛ek b˛edzie nagrywany do pliku zmodyfikowany przez EQ
oraz DSP, w konfiguracji EQ->ENC->DSP dźwi˛ek b˛edzie nagrywany do pliku zmodyfikowany jednynie przez EQ, natomiast przy układzie ENC->EQ->DSP lub ENC->DSP>EQ dźwi˛ek b˛edzie nagrywany do pliku bez modyfikacji przez bloki DSP oraz EQ.
4
Opis bibliotek
Biblioteki BASS, z których autor skorzystał w celu napisania biblioteki MCPlayerEngine.dll, sa̧ dost˛epne na platformy takie jak Windows, MacOs, Linux. Można je pobrać
bezpośrednio ze strony producenta http://www.un4seen.com i wykorzystać przy pisaniu
własnego oprogramowania. Należy jednak pami˛etać, iż licencja umożliwia ich darmowe
wykorzystywanie jedynie w programach niekomercyjnych. Jeśli chodzi o wykorzystanie
komercyjne to należy si˛e zapoznać z licencja̧, która znajduje si˛e na stronie pod adresem
http://www.un4seen.com. Z tego powodu program Music Commander jest programem
bezpłatnym a jego autor nie pobiera żadnych korzyści finansowych z jego rozprowadzania.
Podczas pisania programu zostały wykorzystane nast˛epuja̧ce biblioteki:
• Bass.dll - (wersja 2.3.0.2) biblioteka podstawowa umożliwia dost˛ep do urza̧dzeń
dźwi˛ekowych, tworzy strumienie oraz dostawcza funkcje do zarza̧dzania nimi. Posiada możliwość ładowania wtyczek. Ich zadaniem jest zwi˛ekszenie ilości formatów plików dźwi˛ekowych, które można obsłużyć. W programmie zostały wykorzystane nast˛epuja̧ce wtyczki: bass_aac.dll, bass_ac3.dll, bass_ape.dll, bass_mpc.dll,
bass_spx.dll, bass_tta.dll, bass_wv.dll, basscd.dll, bassflac.dll, basswma.dll.
• Bass_fx.dll - (wersja 2.3.0.4) biblioteka stanowia̧ca rozszerzenie dla biblioteki bass.dll
dodaja̧ca możliwość dodawania bardziej zaawansowanych efektów dźwi˛ekowych
niż te, które posiada biblioteka podstawowa.
• Bassenc.dll - (wersja 2.3.0.4) rozszerzenie dla biblioteki bass.dll. umożliwia ponowne kodowanie strumienia w oparciu o wybrany enkoder wewn˛etrzny lub zewn˛etrzny (lame.exe, oggenc.exe) i zapisywanie tych danych do pliku lub wysyłanie
ich do serwera SHOUTcast.
• Tags.dll - (0.0.0.13) rozszerzenie dla biblioteki bass.dll posiadaja̧ca funkcje do odczytu informacji o pliku jak np. ID3v1 i ID3v2 dla plików mp3.
4
5
Wygla̧d programu
Program posiada możliwość zmiany wygla̧du interfejsu użytkownika poprzez obsług˛e
różnych skórek. Skórka definiuje oprócz wygla̧du poszczególnych komponentów okna
również jego rozmiary i elementy jakie b˛eda̧ widoczne. Możliwe sa̧ różne konfiguracje interfejsu w zależnosci od potrzeb użytkownika. Skórki sa̧ przechowynane w postaci skompresowanej w formacie archimum ZIP zabezpieczonego hasłem. Podczas uruchamiania
programu wybrana skórka jest rozpakowywana i ładowana do programu. Informacja o
wygla̧dzie skórki jest zapisywana w pliku w formacie XML. W tym pliku istnieje możliwość zapisania autora i wersji skórki. Należy tam również podać jak ma si˛e nazywać plik
archiwum skórki. Te informacje b˛eda̧ później wyświetlane w programie. Aby zbudować
skórk˛e należy napisać plik z informacja̧ o jej wygla̧dzie, stworzyć odpowiednia̧ grafik˛e do
niej i użyć programu Skin Packer, który został napisany w celu budowania plików skórek
do programu.
Rys. 3: Okno programu do tworzenia archimwum ZIP skórki zabezpieczonego hasłem.
W programie Skin Packer wskazujemy ścieżk˛e do naszego folderu z teksturami skórki,
ścieżk˛e do pliku opisuja̧cego jej wygla̧d, oraz ścieżk˛e gdzie ma zostać utworzona skórka. Konstrukcja skórki zapewnia, że plik b˛edzie si˛e nazywał tak jak jej autor sobie życzył. Jeśli na przykład autor określił, że skórka ma si˛e nazywać Zielona.zip to zmiana
jej nazwy na Czerwona.zip uniemożliwi jej załadowanie do programu. Podczas ładowania program wyświetli informacj˛e, że nazwa skórki nie jest oryginalna i poda oryginalna̧
nazw˛e określona̧ przez autora. Dopiero ponowna zmiana nazwy na oryginalna̧ umożliwi
jej załadowanie. Program Skin Packer jest używany do wypakowywania wybranej skórki podczas uruchamiania si˛e programu Music Commander. Brak programu Skin Packer
uniemożliwi poprawne uruchommienie si˛e programu Music Commander.
5
6
Skórki
Poniżej przedstawiono dwie skórki, które sa̧ automatycznie instalowane razem z programem. Pierwsza z nich to skórka domyślna, z która̧ program startuje w momencie pierwszego uruchomienia. Zawiera ona wszystkie komponenty jakimi dysponuje program. W
tej konfiguracji użytkownik ma do dyspozycji dwa odtwarzacze (Foreground oraz Background) przeznaczone do odtwarzania dźwi˛eku, dwa odtwarzacze (Input A oraz Input
B) przeznaczone do przechwytywania dźwi˛eku z urza̧dzeń wejściowych (np. mikrofon
podła̧czony do karty dźwi˛ekowej), korektory graficzne dla każdego odtwarzacza, panel
efektów dźwi˛ekowych oraz panel dziesi˛eciu sampli czyli krótkich dźwi˛eków, które moga̧
być mieszane z muzyka̧ na odtwarzaczach Foregroung i Background.
Rys. 4: Skórka domyślna programu z pełna̧ funkcjonalnościa̧.
Rys. 5: Skórka programu z okrojona̧ funkcjonalnościa̧.
6
Wygla̧d ten, chociaż umożliwiaja̧cy wykorzystanie wszystkich funkcji programu jest
jednak bardzo ucia̧żliwy dla użytkowników, którzy bardziej cenia̧ sobie prostot˛e i łatwość
obsługi ponad funkcjonalność. Dlatego razem z programem jest dost˛epna druga skórka o wiele prostsza. Definiuje ona mniejsze okno o wiele łatwiejsze w obsłudze, jednak
posiadaja̧ce bardzo okrojona̧ funkcjonalność. Użytkownik ma do dyspozycji tylko jeden
odtwarzacz, oraz tylko widok playlist. Nie ma tu możliwości zmiany parametrów odtwarzanego dźwi˛eku. Zaleta̧ tego wygla̧du jest jednak krótszy czas uruchamiania si˛e programu ponieważ zawiera ona mniej tekstur, które trzeba załadować.
7
Music Commander Monitor
Razem z programem Music Commander instalowany jest do tego samego katalogu program Music Commander Monitor (MCM.exe). Jego zadanie to monitorowanie pracy programu Music Commander i "sprza̧tanie" po nim jeśli nasta̧pi awaria odtwarzacza. Jednym
z jego zadań przy awarji programu jest przywrócenie rozdzielczości w systemie jeśli ta
została zmienioina przez odtwarzacz, a ten zawiesił si˛e i nie był w stanie sam przywrócić
oryginalnej rozdzielczości. Kolejnym zadaniem tego programu jest gromadzenie informacji o aktualej pracy programu, czyli jaka piosenka jest odtwarzana na jakim strummieniu i
jak długo już gra. Te informacje sa̧ zapisywane do pliku Crash.xml przez Music Commander Monitor i służa̧ do odtworzenia stanu programu po jego ponownym uruchomieniu.
Jest to zabezpieczenie, które ma na celu zachować cia̧głość pracy odtwarzwcza nawet
jeśli ten ulegnie awarji. W razie takiej sytuacji Music Commander Monitor wyświetla
stosowny komunikat użytkownikowi, aby ten podja̧ł decyzj˛e co ma zrobić.
Rys. 6: Komunikat programu w przypadku awarji programu Music Commander.
Po pojawieniu si˛e komunikatu użytkownik ma dost˛epne dwie opcje do wyboru:
• Uruchom ponowne program - zostanie utworzony plik Crash.xml, proces programu Music Commander zostanie zabity, zostana̧ przywrócone ustawienia systemu
sprzed uruchomienia odtwarzacza, zostanie zainicjowana procedura uruchomienia
programu Music Commander, Music Commander Monitor zakończy działanie, Music Commander uruchomi ponownie Music Commander Monitor i nawia̧że z nim
sesj˛e. Podczas uruchamiania Music Commander przeczyta plik Crash.xml, załaduje
dane na strumienie według informacji w tym pliku i usunie plik Crash.xml.
7
• Zakończ działanie programu - zostanie utworzony plik Crash.xml, proces programu Music Commander zostanie zabity, zostana̧ przywrócone ustawienia systemu
sprzed uruchomienia odtwarzacza, Music Commander Monitor zakończy działanie.
Music Commander Monitor jest uruchamiany przez odtwarzacz i pozostaje w pami˛eci
tak długo jak działa odtwarzacz. Music Commander cały czas sprawdza czy program
Music Commander Monitor działa. Jeśli z jakiegoś powodu monitor zostanie zamkni˛ety
Music Commander natychmiast wyświetla komunikat:
i kończy działanie. Ma to na celu wyeliminowanie przypadku, w którym Music Commander działał by bez żadnej kontroli.
8
Podsumowanie
Music Commander to program, z którego może korzystać każdy. Jest prosty i przyjemny
w obsłudze, chociaż pocza̧tkowo mnogość jego opcji może zdezorientować użytkownika i go odstraszyć. Jednak wystarczy tylko troch˛e ch˛eci, a już po kilku chwilach użytkownik może opanować interfejs programu całkowicie. Niewa̧tpliwa̧ zaleta̧ programu jest
możliwość tworzenia własnych skórek i dostosowywania go do własnych potrzeb. Prgoram posiada wygodny instalator, dzi˛eki któremu zainstalowanie odtwarzacza nie powinno
sprawić kłopotu nawet użytkownikom, którzy dopiero zaczynaja̧ swoja̧ przygod˛e z komputrem.
Literatura
[1] Dokumentacja do bibliotek BASS - http://www.un4seen.com
8

Podobne dokumenty