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