Page 1 of 3

Supersonic 1.1.6 - Foobar2000 inspired multi-platform Player

PostPosted: Sun Jan 22, 2012 8:45 pm
by Athou
Supersonic 1.1.6

Hi !
I've been working on a subsonic client for myself and now that it's stable enough I'm releasing it. I wanted a player looking kinda like foobar2000 with the main window showing all songs available on subsonic, and with proxy support (with authentication).

The player is multi-platform and requires Java 1.6 (preferably Sun's over OpenJDK) to be installed.
I'll add features and fix bugs as I go. Feel free to post comments and requests here. I'll post updates here.

Image

Download

Downloads are available here and sources are hosted on GitHub here.
There's an executable for Windows and a shell script bundled in the package.

Code: Select all
1.1.6
Lots of new skins available
minor tweaks

Changelog
1.1.4
Seekbar now finally working
Displaying song download progress
Fix restore from systray
Updated various dependencies

1.1.1
HTTPS support
Library compression

1.1.0
- Incremental Library refresh
- Chat messages tab
- Now Playing tab
- Checks for software updates on startup
- Current playing song is downloaded asap and streamed from memory instead of read from the url when needed during playback

1.0.4
- HTTPS support
- Clicking on the cover preview opens the full size cover

1.0.3
- Added configurable global keybindings
- Added window state saving when closing application. State is restored during application startup.
- upgraded CDI (Weld) to 2.0.0

Re: Supersonic - Foobar2000 inspired multi-platform Java Pla

PostPosted: Fri Jan 27, 2012 5:01 pm
by neodawg
Looks good, perhaps it might be possible to include the chat system, so chat messages would appear in some part of the player as well? Not sure if the chat is part of the API or not, but would be cool to be able to have that feature.

Re: Supersonic - Foobar2000 inspired multi-platform Java Pla

PostPosted: Tue Jan 31, 2012 12:29 pm
by blightzero
Very nice Idea, I've been looking for a simple Client with just this feature set, but sadly:
It's not working for me.
I'm running on Linux/Ubuntu/Gnome Desktop, I tried to run it with openjdk 1.6 as well as with the Sun jdk 1.6. And the problems described are the same for both.

There seem to be multiple problems:
On an 4.5 Subsonic Server it doesnt seem to be able to get the Directory Listing, the Debug Listing is:
Code: Select all
DEBUG [SubsonicService:55] Invoking: getAlbumList

After that nothing ever happens and there is no Error Message that would indicate what the problem may be.

On my 4.6 Subsonic Server this does work, however nothing ever appears in the GUI. The Debug Output looks like this:
Code: Select all
DEBUG [SubsonicService:55] Invoking: getAlbumList
DEBUG [SubsonicService:55] Invoking: getMusicDirectory
DEBUG [SubsonicService:55] Invoking: getMusicDirectory
DEBUG [SubsonicService:55] Invoking: getMusicDirectory

This getMusicDirectory goes on for several minutes, then stops, however nothing ever appears in the GUI.
Again there is no Error Message. It's also kind of strange that the Window with the Status-Indicator disappears already after the getAlbumList was successful, but other than that nothing in the GUI shows up, and the DEBUG Output of "getMusicDirectory" keeps running for several minutes after that.

The second problem is that when I minimize the program it just disappears. It does have an Icon in the Notification Area, but the menu "Restore" just gives me a short animation of the window of the application minimizing into nothingness...

Re: Supersonic - Foobar2000 inspired multi-platform Java Pla

PostPosted: Tue Jan 31, 2012 3:35 pm
by Aethies
I am also getting nothing when trying to connect to my server. It doesn't show an error or anything. Just refreshes and everything is blank.

Re: Supersonic - Foobar2000 inspired multi-platform Java Pla

PostPosted: Tue Jan 31, 2012 9:39 pm
by neodawg
Aethies wrote:I am also getting nothing when trying to connect to my server. It doesn't show an error or anything. Just refreshes and everything is blank.



Same here. My server is using https would that be the issue?

Re: Supersonic - Foobar2000 inspired multi-platform Java Pla

PostPosted: Wed Feb 01, 2012 6:53 pm
by Athou
I'm going to check what's wrong later this week, when I have some time to work on this side project, stay tuned!

Re: Supersonic - Foobar2000 inspired multi-platform Java Pla

PostPosted: Fri Feb 03, 2012 6:51 pm
by JesterEE
I am getting a similar experience as the other connecting to my server on a Linux system. Looking forward to a fix to give it a shot. Really want a native app that I can do keybinds with in Linux!

Also, I was having a problem entering my password. The GUI wouldn't accept any typed characters in the dialog. I found the prefs.xml that stores this data under my .java directory and put in my password there. It seemed to work, but in the future I'd appreciate if the password data was encrypted when stored locally.

Great work thus far!
-JesterEE

Re: Supersonic - Foobar2000 inspired multi-platform Java Pla

PostPosted: Tue Feb 07, 2012 9:25 am
by Athou
OK I fixed several problems regarding Library refresh and some stability issues. Please test and let me know if your issues are fixed !
I'll start adding additional features when everytihing is stable enough. In the mean time I've released an updated beta available here.

Re: Supersonic 1.0.1 - Foobar2000 inspired multi-platform Pl

PostPosted: Tue Feb 07, 2012 6:33 pm
by blightzero
Hi, I tried it.
The "Test Connection" Button works. :)
Sadly I still can't update my Library. Here is the Logfile after a Run:
Code: Select all
2012-02-07 19:28:00,651 DEBUG [SubsonicService:98/SwingWorker-pool-2-thread-1] Invoking ping with 0 params []
2012-02-07 19:28:00,845 DEBUG [SubsonicService:57/SwingWorker-pool-2-thread-1] Response: <?xml version="1.0" encoding="UTF-8"?>
<subsonic-response xmlns="http://subsonic.org/restapi" status="ok" version="1.7.0">
</subsonic-response>

2012-02-07 19:28:07,509 DEBUG [SubsonicService:98/SwingWorker-pool-2-thread-2] Invoking getAlbumList with 2 params [type=newest,size=500]
2012-02-07 19:28:17,538 ERROR [SupersonicException:22/SwingWorker-pool-2-thread-2] Read timed out
java.net.SocketTimeoutException: Read timed out
   at java.net.SocketInputStream.socketRead0(Native Method)
   at java.net.SocketInputStream.read(SocketInputStream.java:146)
   at java.io.BufferedInputStream.fill(BufferedInputStream.java:235)
   at java.io.BufferedInputStream.read1(BufferedInputStream.java:275)
   at java.io.BufferedInputStream.read(BufferedInputStream.java:334)
   at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:688)
   at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:633)
   at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1162)
   at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:397)
   at be.hehehe.supersonic.service.SubsonicService.invokeBinary(SubsonicService.java:133)
   at be.hehehe.supersonic.service.SubsonicService.invoke(SubsonicService.java:50)
   at be.hehehe.supersonic.service.SubsonicService.invoke(SubsonicService.java:42)
   at be.hehehe.supersonic.service.Library$1.doInBackground(Library.java:83)
   at javax.swing.SwingWorker$1.call(SwingWorker.java:291)
   at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
   at java.util.concurrent.FutureTask.run(FutureTask.java:166)
   at javax.swing.SwingWorker.run(SwingWorker.java:330)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
   at java.lang.Thread.run(Thread.java:636)
2012-02-07 19:28:17,543 ERROR [SupersonicException:22/SwingWorker-pool-2-thread-2] Could not refresh library.
be.hehehe.supersonic.utils.SupersonicException: Read timed out
   at be.hehehe.supersonic.service.SubsonicService.invokeBinary(SubsonicService.java:143)
   at be.hehehe.supersonic.service.SubsonicService.invoke(SubsonicService.java:50)
   at be.hehehe.supersonic.service.SubsonicService.invoke(SubsonicService.java:42)
   at be.hehehe.supersonic.service.Library$1.doInBackground(Library.java:83)
   at javax.swing.SwingWorker$1.call(SwingWorker.java:291)
   at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
   at java.util.concurrent.FutureTask.run(FutureTask.java:166)
   at javax.swing.SwingWorker.run(SwingWorker.java:330)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
   at java.lang.Thread.run(Thread.java:636)

Re: Supersonic 1.0.1 - Foobar2000 inspired multi-platform Pl

PostPosted: Tue Feb 07, 2012 6:37 pm
by Athou
How many albums do you have ? If you have a lot of songs a timeout of 10 seconds is maybe not long enough.

Re: Supersonic 1.0.1 - Foobar2000 inspired multi-platform Pl

PostPosted: Tue Feb 07, 2012 7:10 pm
by blightzero
Hi,
my current stats are:
2.008 Artists
2.014 Albums
13.615 Songs
My Subsonic Server is a P4 2,8Ghz with 2Gigs of RAM, the Uploadrate on the connection is 1024kbit/sec.

My guess is that 10 secs is way too short.

Re: Supersonic 1.0.1 - Foobar2000 inspired multi-platform Pl

PostPosted: Tue Feb 07, 2012 8:04 pm
by Athou
Indeed. Let me increase the timeout and also remove the current 500 albums limit.

Re: Supersonic 1.0.1 - Foobar2000 inspired multi-platform Pl

PostPosted: Tue Feb 07, 2012 8:29 pm
by Athou
OK done, bumped the timeout to one minute and removed the album limit. Please update to 1.0.2 and let me know.

Re: Supersonic 1.0.1 - Foobar2000 inspired multi-platform Pl

PostPosted: Wed Feb 08, 2012 12:06 pm
by blightzero
Hi,

that did the trick for me, now I get to download the library, and I also get a Dialog where it says "Downloading x/y", but every 20 or so I get an Error Message with an Nullpointer Exception. The Application does not crash tough, and I am able to proceed. Then I can play a song from my library, but only one song. As soon as the next song is supposed to play, or I click on a different song for it to play, the application just completely freezes. The only thing I can do then is to kill the application.
There is no error message or debug output on that freezing however.

Re: Supersonic 1.0.1 - Foobar2000 inspired multi-platform Pl

PostPosted: Wed Feb 08, 2012 12:14 pm
by Athou
Could you try with Sun's JRE instead of OpenJDK please? I'm getting the same behavior with OpenJDK (regarding the freezing part). I'll investigate the issue.
Also, Could you please paste the relevant log part with the NullPointerException?