Sorry your browser is not supported!

You are using an outdated browser that does not support modern web technologies, in order to use this site please update to a new browser.

Browsers supported include Chrome, FireFox, Safari, Opera, Internet Explorer 10+ or Microsoft Edge.

Geek Culture / Feedback on my music app

Author
Message
Phaelax
DBPro Master
16
Years of Service
User Offline
Joined: 16th Apr 2003
Location: Metropia
Posted: 23rd Apr 2019 17:29 Edited at: 5th May 2019 21:08
A couple weeks ago, I resurrected an old java project of mine. It was originally called jTunes, an iTunes clone. Harddrive crash and I lost a lot of java projects but had bits and pieces of older code on backups. I used those to jump start remaking the music app again, now called Echo. I probably changed just as much code as I reused. It's been 10 years since I initially wrote it and I've picked up a thing or two since then. Plus, Java has changed quite a bit since then, I had to learn all about generics and now wrap my head around lambda expressions. It's still very much a work in progress, especially the overall look of it. In the first pic, is my initial rewrite using java swing which is what I used the first time. It supports shared libraries through my own daap implementation. At the moment, it won't support shared libraries that require a login (but I plan to add that). My NAS has a Twonky media server on it (that's the znas-itunes icon you see). Supported audio types are whatever I can get java to support, which is a fair bit: MP3, FLAC, SPEEX(i think), AIFF, WAV, monkey audio (APE), OGG. I may or may not decide to implement video support in the future, but as of right now it's not on the agenda. Shoutcast internet streams are also support (under the radio option). Two problems with the shared libraries, firstly mine does not broadcast and share it's own, only playback from others. I do have plans to implement this however. The second issue is iTunes support, it's just not going to happen. Since iTunes 7, nobody has yet to crack apple's authentication method so it's impossible for a non-iTunes app to login successfully.

The second screenshot is my attempt at converting from Swing to JavaFX, I call it EchoX. It's been a bit of a learning curve but I think it has greater potential. The biggest benefit is being able to customize the appearance of the app using CSS. I don't know if anyone's ever tried to write their own java "look and feel", but it's not a simple task. My Swing version is using the Nimbus look and feel, the FX version I've been modifying to look similar to an iTunes dark theme I came across.

I almost have the FX version on par with the other one, it just needs the daap support added. The original version from 10 years ago did have partial support for the iTunes store, but I've dropped that ambition. The store has changed a lot since then and I imagine I'd run into authentication issues anyway.


Hopefully, I'll have a demo I can release in the next week or so. At the moment, library data is stored using serialization which is not a great idea (it was a quick way for testing without having to reparse mp3s every time). Plus I have some menus I still need to create. But tell me what you guys think so far on the design. Color suggestions or feature requests are welcome.


5-5-2019
Download:
https://www.zimnox.com/projects/echo/echo.zip (2.5MB)


Tiled TMX Importer V.2
XML Parser V.2
Base64 Encoder/Decoder
Purple Token - Free online hi-score database
Legend of Zelda

"I like offending people, because I think people who get offended should be offended." - Linus Torvalds

Attachments

Login to view attachments
TheComet
11
Years of Service
User Offline
Joined: 18th Oct 2007
Location: I`m under ur bridge eating ur goatz.
Posted: 24th Apr 2019 20:21
Is your real name Richard Hendricks? Have you broken 2.89 on the Weissman score?
"Jeb Bush is a big fat mistake" -- Donald Trump
https://vt.tumblr.com/tumblr_o2rvwdLLSF1rmjly4.mp4
Phaelax
DBPro Master
16
Years of Service
User Offline
Joined: 16th Apr 2003
Location: Metropia
Posted: 25th Apr 2019 18:29
How'd you know I worked for pied piper?! lol, I'm so behind on that show right now.
Tiled TMX Importer V.2
XML Parser V.2
Base64 Encoder/Decoder
Purple Token - Free online hi-score database
Legend of Zelda

"I like offending people, because I think people who get offended should be offended." - Linus Torvalds
Phaelax
DBPro Master
16
Years of Service
User Offline
Joined: 16th Apr 2003
Location: Metropia
Posted: 5th May 2019 21:13
Alright, I finally have a download available. Still quite a bit of little things to finish up but it is functional. I ran into an issue with flac playback that I'm looking into so right now it may or may not work for that file type. I've also discovered a library to playback AAC but haven't managed to make it work. Yet. You can add media though the file menu or drag and drop files into the library window. To add songs to a playlist, just drag n drop from the existing library.
Tiled TMX Importer V.2
XML Parser V.2
Base64 Encoder/Decoder
Purple Token - Free online hi-score database
Legend of Zelda

"I like offending people, because I think people who get offended should be offended." - Linus Torvalds
Phaelax
DBPro Master
16
Years of Service
User Offline
Joined: 16th Apr 2003
Location: Metropia
Posted: 13th May 2019 03:38
Finally got an undecorated window in java that responds properly to resizing events. Searching the net for a solution gave few results, most of which didn't work all that well. The only one I came across that looked promising was just too involved I thought. As I work with the class I keep adding little things to it to make it easier to use and more robust. I'm going to post the code on github because I think quite a few folks would benefit from it.



Tiled TMX Importer V.2
XML Parser V.2
Base64 Encoder/Decoder
Purple Token - Free online hi-score database
Legend of Zelda

"I like offending people, because I think people who get offended should be offended." - Linus Torvalds

Attachments

Login to view attachments
Kevin Picone
16
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Australia
Posted: 14th May 2019 16:19
looks cool.. so what's this undecorated window stuff ?

PlayBASIC To HTML5/WEB - Convert PlayBASIC To Machine Code
Phaelax
DBPro Master
16
Years of Service
User Offline
Joined: 16th Apr 2003
Location: Metropia
Posted: 17th May 2019 06:36
When you create an application in java, it's wrapped inside an OS-dependent window frame. This frame handles resizing events, minimize, maximize, and close. On Windows, this gives a blue border around the window with a blue titlebar (or whatever theme you're using). If I stuck with native looking UI controls, it'd look fine. But when you start customizing, it can make your app look weird. "undecorated" means to remove that window frame and as a result you lose the window controls and even the dropshadow effect that Windows applies to apps. You also can't move your app since there's no titlebar to grab. All this has to be manually created as Java has no native methods for adding these features.

The resizing was the tricky part, since you can't just add a mouse listener to the edges of the app. Not unless you left a border around the whole thing. Dug around the internet and found many requests for something like this but only about 2 or 3 examples of folks making an example. I never really got any of them to work completely. One example, though I couldn't get it to compile because I'm not familiar with Maven or FXML at all, but looked the most promising. I used his idea of using a StackPane, basically just a multi-layer of components, to add invisible borders on top of the app. Aside from simplifying the code to a simple copy n' paste, I added additional features such as a maximize (there's a native method to minimize already) and to add a drop shadow. As far as I'm aware, mine's the only one that implements a drop shadow

The red border seen here is hidden from the user. It simply listens for mouse events in those areas. The size of the border can be changed but I have it at 8px by default, which seemed reasonable.



Since you got me thinking about it, I finally made a repo for it.
Tiled TMX Importer V.2
XML Parser V.2
Base64 Encoder/Decoder
Purple Token - Free online hi-score database
Legend of Zelda

"I like offending people, because I think people who get offended should be offended." - Linus Torvalds

Attachments

Login to view attachments

Login to post a reply

Server time is: 2019-05-26 15:41:54
Your offset time is: 2019-05-26 15:41:54