What are possible front ends for a java audio library?

I have a friend that has been dabbling with programming, and is interested making use of some functionality in a Java library that I wrote for mixing and playing back audio files.

I’m trying to brainstorm on some options for GUI building for him.

I don’t think he wants to try and tackle Swing (main thing I’ve used for the little apps I’ve made), but he seems somewhat interested in JavaFX. He has a bit of experience with Python, so JPython is another real possibility, I assume. I’ve never actually linked JPython and Java in a single program before though. Is it just a matter of importing libraries, that sort of thing?

He is also intrigued by JQuery/HTML5, but I am not seeing a clear path to connecting from there to functions presented in a Java .jar file without going through some very high latency steps. Perhaps the only way that might work as a front end is if the Java .jar file is converted to Android or JavaScript? I’m not clear if these languages are fast enough to handle audio processing at a reasonable latency.

Or am I mistaken, and if I convert the Java to Android, HTML5/JQuery is not an option, but instead Android’s own GUI language would be used?

To do that, you’d probably want to port your stuff to web audio.

Check these out (in a decent browser!)

http://webaudiodemos.appspot.com/midi-synth/index.html
http://www.audiosauna.com/studio/

Since your existing library uses Java client-side code, your options are much more restricted. You can either use Swing, JavaFX, an OpenGL wrapper like JOGL, a more involved wrapper like Processing or libGDX, or another option like the ones you mentioned.

The pros of Swing is that it’s tried-and-true and pretty easy to jump into. The cons is that it’s a bit dated at this point. This is probably what I would recommend, especially since it sounds like your friend is a bit of a novice. Being able to just google your problem is a huge bonus.

JavaFX is pretty much the opposite: it’s harder to find tutorials and whatnot, but it is a more modern solution for client-side Java. If your friend was a little more familiar with programming, this would probably be the way to go.

OpenGL wrappers are probably overkill for what you need, unless you want to do some fancy visualization stuff. You could also mix OpenGL stuff and Swing or JavaFX.

Processing might be an interesting choice, especially since it has such low overhead to get a window up and displaying animations. It’s not a typical choice for application-style GUIs, but there are some libraries that make it pretty doable.

It might be a worthwhile exercise for your friend to put together a simple “hello world” GUI in each of the above, just to see which he likes the best. As you know, at least half of programming is doing research, reading the documentation, and experimenting, so maybe the best thing you can do for him is to say “here are your options, start exploring them on your own”.