Wrz 06 2009
fooaudio 0.1
Po pół roku obijania się, zmieniania koncepcji oraz marzeniu o sławie, chwale i bogactwie oto nadszedł dzień na pierwsze, oficjalne, wydanie fooaudio, opatrzone numerkiem 0.1.

Ale od początku. Do projektu dołączył Bartłomiej 'uzi' Zimoń, dzięki czemu zawsze znalazła się osoba która potrafiła pomardzić, że trzeba ruszyć projekt. Później zacząłem nową pracę. Co w połączeniu z wakacjami całkowicie zahamowało rozwój fooaudio. Paradoksalnie to właśnie praca przyczyniła się do szybszego wydania pierwszej wersji fooaudio.
Trzymanie na laptopie KDE, JBossa, Eclipse oraz Amaroka (bo moc odmówił współpracy po kolejnej aktualizacji) powodowało problemy z wydajnością (zmiana piosenki i powrót do pracy zajmowała procesorowi z dobrą minutę). Potrzebowałem więc małego i lekkiego zamiennika dla Amaroka. Postanowiłem zmodyfikować założenia fooaudio (a konkretnie to wrócić do pierwotnego planu) i zamiast silnika z moca wsadzić Phonona. Pierwsze dźwięki potrafił wydać już w zeszły weekend. Jednak z powodu słabej obsługi interfejsu i potrzeby rozwiązania obsługi wielu list odtwarzania nie nadawał się on do niczego innego niż odtwarzanie jednej piosenki, po czym trzeba było uruchomić jej odtwarzanie jeszcze raz. Dzięki pomocy Bartka udało się w weekend zrobić interfejs na tyle, żeby w miarę wygodnie można było odtwarzać kolejne piosenki. I tyle, cała reszta albo nie działa (co widać po nieaktywnych opcjach) albo brakuje pewnej funkcjonalności (którą jednak powinno się udać szybko dodać).
Dodatkowo pewną niedogodnością jest potrzeba wykorzystania Xine jako silnika. Niestety backend GStreamer jest w tak wczesnej fazie rozwoju, że praktycznie nic nie odtwarza.. Cierpi na tym jakość dźwięku, problemy z obsługą różnych formatów (sprawdzone na FLAC, chociaż mp3 działa całkiem zgrabnie). Czasami także aplikacja przy starcie potrafi się sama z siebie wysypać (rzadko i bardzo losowo, ale jednak).
W wersji 0.2 mamy zamiar zrobić porządną playlistę, wprowadzić usprawnienia w dodawaniu plików oraz możliwość odtwarzania z muzyki z płyt. I parę innych rzeczy które akurat wydadzą nam się pilnie potrzebne. ;]
Najnowsze źródła odtwarzacza można pobrać stąd (oczywiście pod postacią repozytorium gita): git://github.com/pingwinek/fooaudio.git. Jeżeli ktoś jest leniwy i nie chce instalować klienta gita może wejść na tą stronę, kliknąć w przycisk Download oraz poczekać na pobranie archiwum z kodem. Z racji braku lepszego miejsca błędy można zgłaszać tutaj. Może za jakiś czas dorobimy się jakiejś fajnej strony z bug tracerem.
Kompilacja źródeł jest bardzo prosta (wymagane jest Qt 4.5 oraz Phonon):
cd src/fooaudio qmake-qt4 make
I program zostanie zbudowany w głównym katalogu.
Na chwilę obecną to tyle. Miłego testowania/używania. Mam nadzieję, że kolejną wersję wypuścimy znacznie szybciej. :)



06 Wrz 2009, 16:27:49
Oj jak miło :) ... w końcu coś się ruszyło ;D
Dzieki Mat.
ps. a jak bedziesz niegrzeczny to zrobie forka :P ... a zapomnialem ze juz go mam :D
06 Wrz 2009, 16:30:29
Kod (prawie) bez komentarzy - trudno będzie go potem analizować. Warto o to zadbać już na starcie. No i nie ma zrzutu ekranu.
06 Wrz 2009, 16:39:56
@mmm: obrazek dodany. A komentarze kiedyś dodamy... może. ;D Na razie nie mamy jakiś większych problemów z tym związanych.
06 Wrz 2009, 17:27:47
Brakuje mi funkcji złap i puść, przynajmniej ja tak nie mogę dodać mp3 do playlisty. Czekam na kolejną wersje. Pozdrawiam
06 Wrz 2009, 17:38:44
@Czyżak: tego jeszcze nie ma (jak i paru innych funkcji które powinny być). Doszliśmy do wniosku, że pierwsza wersja ma przynajmniej potrafić grać. Cała reszta będzie wprowadzana później. Czy akurat drag&drop się załapie do 0.2 tego nie powiem, ale mam nadzieję, że wprowadzimy ją w miarę szybko.
06 Wrz 2009, 18:03:46
Klasa FooAudioEngine jest IMO źle zaprojektowana.
To główne okno powinno posiadać wskaźnik do FooAudioEngine i wykonywać operacje takie jak np. przeskakiwanie do następnego/poprzedniego utworu a nie odwrotnie (jak Ty masz teraz w kodzie, FooAudioEngine pobiera wskaźnik do okna).
FooAudioEngine powinno być niezależne od całego GUI
06 Wrz 2009, 20:08:01
jestem w szoku ktos sie za to wzial wkoncu, to jedyny program ktorego mi brakuje pod linuchem. ode mnie tylko dodam zeby bylo zarzadzanie biblioteka wedlug katalogow i bede wniebowziety.
jeszcze raz dzieki za to ze sie za to wzieliscie.
pozdro
06 Wrz 2009, 20:54:13
W 5 sekund mogę wyczynić RPMy dla Fedory autor chce? Bo jeżeli nie to nie będę robić :)
06 Wrz 2009, 20:57:24
@Piotrek: mi to nie robi. Nie używam tego distra. ;]
Ale jeżeli chcesz zrobić i dać linka tutaj to ja nie mam nic przeciwko.
06 Wrz 2009, 20:58:44
Bardzo fajny projekt:). Małe wymagania (biblioteki). Jak dla mnie, to przydało by się tylko menu kontekstowe po kliknięciu prawym przyciskiem myszki na playliste, z opcjami do dodawania/usuwania piosenek (nie powinno to być trudne do zaimplementowania ;) oraz moze ikonka w tray. Czekam na kolejne wersje.
Pozdrawiam
pablo
06 Wrz 2009, 21:49:27
Obawiam się, że zgłaszanie błędów na stronce, którą podałeś, nie działa.
Pozdrawiam
06 Wrz 2009, 21:51:59
@daimyo: działa, przed chwilą sprawdziłem. Ale jak coś, to zawsze możesz to wrzucić tutaj lub na e-mail/jabbera napisać.
06 Wrz 2009, 22:16:27
przepraszam Cię, ale jeżeli chodzi o zgłaszanie błędów to taki mój freak :D.
daimyo@katie:~$ dpkg -l | grep -i qt4
ii libpoppler-qt4-3 0.10.6-1 PDF rendering library (Qt 4 based shared library)
ii libqt4-assistant 4:4.5.2-2 Qt 4 assistant module
ii libqt4-core 4:4.5.2-2 transitional package for Qt 4 core non-GUI runtime libraries
ii libqt4-dbus 4:4.5.2-2 Qt 4 D-Bus module
ii libqt4-designer 4:4.5.2-2 Qt 4 designer module
ii libqt4-gui 4:4.5.2-2 transitional package for Qt 4 GUI runtime libraries
ii libqt4-network 4:4.5.2-2 Qt 4 network module
ii libqt4-opengl 4:4.5.2-2 Qt 4 OpenGL module
ii libqt4-qt3support 4:4.5.2-2 Qt 3 compatibility library for Qt 4
ii libqt4-script 4:4.5.2-2 Qt 4 script module
ii libqt4-sql 4:4.5.2-2 Qt 4 SQL module
ii libqt4-sql-mysql 4:4.5.2-2 Qt 4 MySQL database driver
ii libqt4-svg 4:4.5.2-2 Qt 4 SVG module
ii libqt4-test 4:4.5.2-2 Qt 4 test module
ii libqt4-webkit 4:4.5.2-2 Qt 4 WebKit module
ii libqt4-xml 4:4.5.2-2 Qt 4 XML module
ii qt4-qmake 4:4.5.2-2 Qt 4 qmake Makefile generator tool
ii qt4-qtconfig 4:4.5.2-2 Qt 4 configuration tool
daimyo@katie:~$ dpkg -l | grep -i phonon
ii libphonon4 4:4.5.2-2 Qt 4 Phonon module
ii phonon 4:4.5.2-2 Qt 4 Phonon module metapackage
ii phonon-backend-xine 4:4.3.1-4 Phonon Xine 1.1.x backend
katie:/home/daimyo/Pobrane/pingwinek-fooaudio-38c04f7233cce7ee2afae90c6fc8c5a00f8a4114/src/fooadio# qmake-qt4
katie:/home/daimyo/Pobrane/pingwinek-fooaudio-38c04f7233cce7ee2afae90c6fc8c5a00f8a4114/src/fooadio# make
g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_PHONON_LIB -DQT_GUI_LIB -DQT_CORE_LIB-I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/us/include/qt4/phonon -I/usr/include/qt4 -I. -I. -o fooabout.o fooabout.cpp
fooabout.cpp:10:28: error: QtGui/QBoxLayout: Nie ma takiego pliku ani katalogu
fooabout.cpp:11:27: error: QtGui/QKeyEvent: Nie ma takiego pliku ani katalogu
fooabout.cpp:12:24: error: QtGui/QLabel: Nie ma takiego pliku ani katalogu
fooabout.cpp:13:29: error: QtGui/QPushButton: Nie ma takiego pliku ani katalogu
fooabout.cpp:14:28: error: QtGui/QTabWidget: Nie ma takiego pliku ani katalogu
fooabout.cpp:15:27: error: QtGui/QTextEdit: Nie ma takiego pliku ani katalogu
In file included from fooabout.cpp:17:
fooabout.hpp:13:25: error: QtGui/QWidget: Nie ma takiego pliku ani katalogu
In file included from fooabout.cpp:17:
fooabout.hpp:16: error: expected class-name before ‘{’ token
fooabout.hpp:17: error: ISO C++ forbids declaration of ‘Q_OBJECT’ with no type
fooabout.hpp:19: error: expected ‘;’ before ‘void’
fooabout.hpp:22: error: expected `)' before ‘*’ token
fooabout.cpp:19: error: expected `)' before ‘*’ token
fooabout.cpp:120: error: variable or field ‘keyPressEvent’ declared void
fooabout.cpp:120: error: ‘QKeyEvent’ was not declared in this scope
fooabout.cpp:120: error: ‘ke_event’ was not declared in this scope
make: *** [fooabout.o] Błąd 1
06 Wrz 2009, 22:24:05
@daimyo: to raczej wina Twojego systemu niż nasza, bo my nie mamy takiego problemu. Weź spróbuj wywalić z pliku fooabout.hpp ciągu "QtGui/" i napisz czy pomogło.
06 Wrz 2009, 22:44:31
@daimyo u mnie był ten sam problem i jeśli używasz ubuntu to trzeba doinstalować z tego co pamiętam libqt4-dev i phonon ale też z dev, ale nie powiem Ci jaki dokładny pakiet, bo teraz nie mam dostepu do swojego kompa, pozdrawiam
07 Wrz 2009, 01:06:42
Kibicuje z calego serca, zeby powstal lekki program na bazie foobara bo juz mi sie rzygac chce jak program do odtwarzania muzyki zajmuje 100MB:/ Dajecie chlopaki!;)
07 Wrz 2009, 10:34:18
gratulacje z okazji wydania pierwszej wersji!
Kilka uwag: w kodzie zauważyłem kilka linii: if (cos == NULL) cerr << "Cos jest null"; else cerr << "cos nie jest null";. Jest jakiś szczególny powód dla którego zrezygnowaliście z asserta? IMO, to bardziej czytelne jest. Tym bardziej, że odwołanie się do fooMainWindow->fooTabWidget->nextFile gdy fooMainWindows==null jest raczej błędem krytycznym;)
Po drugie: drukowanie każdej informacji na konsole błędów także w wersji release (;)) jest trochę męczące. Może lepiej zrobić sobie jakieś makro w stylu PRINT_INFO, które będzie drukować informacje wtedy, kiedy flaga DEBUG będzie ustawiona. A do błędów analogiczne makro PRINT_ERROR. Na razie tyle.
07 Wrz 2009, 10:47:46
@matekm: te if(cos==NULL) były nam potrzebne na początku jak porobiliśmy parę błędów, więc ogólnie błędy krytyczne tam nie powinny występować. Teraz już ich tam nie ma, bo odłączyliśmy silnik od GUI.
A co do wywalania masy rzeczy na konsolę... raz, że taki program średnio ktoś będzie normalnie z konsoli odpalał, a dwa leniwi jesteśmy i nie chciało nam się tego zmieniać. ;] Wersja 0.1 (pewnie jak każda nieparzysta) jest bardziej rozwojowa niż stabilna i w kodzie mogą być różne wesołe rzeczy i coś nie działać (nie żeby w 0.2 będzie działało, ale 0.1 skupia się na wprowadzaniu funkcjonalności a 0.2 na jej poprawianiu).
07 Wrz 2009, 12:09:13
Jesli chodzi o programy muzyczne podobne do foobara to polecam aqualung. Posiada zakladki i jest mocno konfigurowalny.
07 Wrz 2009, 13:50:27
pomardzić ? o_0
07 Wrz 2009, 16:21:34
Czyżak: miałeś racje, po doinstalowaniu pakierow *-dev skompilowało się bez problemu.
Matthew: Ten błąd zmusił mnie do refleksji. Dlaczego przy takiej grafice korzystacie z API z qt4-dev? Prawdę powiedziawszy jest to pierwszy program, który widzę, który tego wymaga, a kompletnie nie widzę sensu.
07 Wrz 2009, 17:12:41
@daimyo: przy jakiej grafice? A w paczkach dev są nagłówki potrzebne do kompilacji jakiekogolwiek oprogramowania napisanego w Qt. Do tej pory pewnie korzystałeś tylko z binarek, więc nie musiałeś instalować nagłówków.
07 Wrz 2009, 17:36:52
bardzo ładnie :)
08 Wrz 2009, 14:17:57
Matthew, to teraz stawiaj traca albo na launchpad z tym. :>
08 Wrz 2009, 23:24:39
Poczepiam sie jeszcze:
if (!nextFile.isEmpty())
{
/* kod */
}
else
{
mediaObject->stop();
}
nie lepiej/ladniej/wygodniej:
if (nextFile.isEmpty()) {
mediaObject->stop();
return;
}
/* kod */
IMO, latwiej sie to czyta;>
09 Wrz 2009, 13:31:29
apropo tego wywalania debugow na cerr, to w Qt jest przeciez qDebug() do tego celu :). wywalasz potem flage DEBUG i jest spokoj :).
Bardzo fajnie się zapowiada, można się podłączyć? (w ostateczności forka zrobić)
09 Wrz 2009, 13:33:06
@bigfun: problem w tym że na qDebug() się sypie... chociaż teraz mamy jeszcze lepszy problem. Dodaliśmy masę rzeczy i nagle mi za każdym razem zaczęło się wywalać a Bartkowi cały czas działa.
09 Wrz 2009, 13:56:42
@Matthew: inna wersja kompilatora/Qt?
09 Wrz 2009, 13:58:04
@bigfun: to raczej nie to, bo coś działało i nagle przestało. Po prostu coś się sypie czego w jakiś magiczny sposób nie przewidzieliśmy (może coś z dbusem?). A co do podłenia się to napisz do mnie na e-mail albo jabbera.
09 Wrz 2009, 16:21:58
A nie lepiej skorzystać z xmms2 (wiki.xmms2.xmms.se)jako backendu? Xmms2 cierpi na brak dobrego klienta z GUI. Co prawda są teraz jakieś prace w ramach GSoC09 nad stworzeniem oficjalnego GUI dla xmms2, może byście połączyli siły ;) : http://greafine.wordpress.com/2009/07/12/calypso/
09 Wrz 2009, 16:24:01
@Sadhu: w tej chwili pracujemy nad całkowitym oddzieleniem GUI od silników, więc zrobienie z fooaudio backendu nie powinno być dużym problemem. Jedyną niedogodnością, będzie brak trzymania playlist po stronie takich silników (są trzymane w fooaudio).
09 Wrz 2009, 16:31:59
Music Player Daemon
Szukałem prostego i lekkiego odtwarzacza o dużych możliwościach. Na stabilną i w pełni funkcjonalną wersję fooaudio zarówno wtedy, jak i teraz, trzeba było jeszcze poczekać. Aż w pewnym momencie pojawił się pomysł, aby zastosować naj[...]
09 Wrz 2009, 18:57:27
matekm: poprawilem - kwestia taka ze nie wszystko zostalo jeszcze przepisane
11 Wrz 2009, 11:54:56
jak często updatujecie ten kod?:)
11 Wrz 2009, 12:49:16
matekm: Kilka/kilkanascie commitow dziennie leci.
11 Wrz 2009, 17:34:43
a to wy tego nie trzymacie pod tym serwisem co podany w notce? bo tam wersja ma z 4 dni;>?
11 Wrz 2009, 17:36:56
@matekm: mamy swoje deweloperskie repa, które służą nam do wymiany kodu. Gdy dojdziemy do wniosku, że w danym wydaniu zrobiliśmy wszystko co chcieliśmy a program jest w miarę stabilny przerzucam swoje repo do oficjalnego.
12 Wrz 2009, 14:39:19
@matekm: co nie zmienia faktu ze sa one dostepne dla innych ;)
@Matthew: moze jednak pchnij cos na tamto repo sporo bledow zostalo naprawioncyh przeciez ;)
18 Wrz 2009, 12:15:18
U mnie wystepuje taki blad:
dawid@dawid-desktop:~$ cd '/home/dawid/Pulpit/fooaudio'
dawid@dawid-desktop:~/Pulpit/fooaudio$ qmake-qt4
dawid@dawid-desktop:~/Pulpit/fooaudio$ make
g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_PHONON_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/phonon -I/usr/include/qt4 -I. -I. -o fooabout.o fooabout.cpp
fooabout.cpp:10:28: error: QtGui/QBoxLayout: No such file or directory
fooabout.cpp:11:27: error: QtGui/QKeyEvent: No such file or directory
fooabout.cpp:12:24: error: QtGui/QLabel: No such file or directory
fooabout.cpp:13:29: error: QtGui/QPushButton: No such file or directory
fooabout.cpp:14:28: error: QtGui/QTabWidget: No such file or directory
fooabout.cpp:15:27: error: QtGui/QTextEdit: No such file or directory
In file included from fooabout.cpp:17:
fooabout.hpp:13:25: error: QtGui/QWidget: No such file or directory
In file included from fooabout.cpp:17:
fooabout.hpp:16: error: expected class-name before ‘{’ token
fooabout.hpp:17: error: ISO C++ forbids declaration of ‘Q_OBJECT’ with no type
fooabout.hpp:19: error: expected ‘;’ before ‘void’
fooabout.hpp:22: error: expected `)' before ‘*’ token
fooabout.cpp:19: error: expected `)' before ‘*’ token
fooabout.cpp:120: error: variable or field ‘keyPressEvent’ declared void
fooabout.cpp:120: error: ‘QKeyEvent’ was not declared in this scope
fooabout.cpp:120: error: ‘ke_event’ was not declared in this scope
make: *** [fooabout.o] Błąd 1
Jak naprawic to mam. Program wyglada ciekawie.
18 Wrz 2009, 12:16:38
@DawidM jeśli masz ubuntu to patrz komentarze wyżej
18 Wrz 2009, 13:11:05
Nalezy doinstalowac paczki:libqt4-dev oraz libphonon4 z zalerznosciami. Testuje. Storzylem paczkie.deb Na jaki email wyslac moge. Przetestujecie.Program dziala.
30 Lis 2009, 21:47:38
jak fooaudio?