If you’ve been following this project for a while you know that it’s development has been sporadic since it first began. I tend to get myself involved in a lot of personal projects and my interest/motivation oscilates between projects. I’d still like to see this app get finished so I’m once again looking for Java developers to help out. I added the app to a site called Clusterify. If you’re interested in helping out, please check out the RPG Audio Mixer project page and join up!
I’m excited to share the news that the latest Java update for Mac (released last week) resolved the issue I was having with SWT and Audio playback. This means a Mac release is back in the game. We’re also planning to release it as a .app file, so no need to mess around on the command-line to get it running.
Although there haven’t been any “development releases” recently, work continues on RPG Audio Mixer. I’m currently working on splitting up the main class of the application which has become too big. Doing this requires some rewiring of how the application works and how the different components talk to each other, so doing a development release right now would result in a number of things not working.
I’ve recieved some code patches from a developer named Greg which has been a big help and a great motivator. He suggested breaking up the main class which was something I alwas thought about but never actually got around to doing.
There should be a number of improvements in the next development release including more drag and drop support, ignoring hidden files and folders in the Audio Explorer and removing the limitation/requirement of one top level folder in the Library. You can see a screenshot of the Library change here:
I made a small update this evening to RPGAM.
- There is now a View menu which lets you show/hide the Library Explorer and Audio Explorer.
- A change I made in the API affects the format of RAML files. “items” elements need to be renamed to “children” before attempting to load files from a previous development build. A simple search/replace in your favorite text editor will take care of that.
And thank you to the anonymous user who submitted a few enhancement tickets for RPGAM. I’ll be breaking those up into several tickets, each with a specific feature:
- Add drag and drop to Library Explorer
- Tagging and Dynamic playlists
- Set appropriate default directory for Audio Explorer
- Audio Explorer should remember last used folder between application sessions
- Audio Explorer should ignore hidden files and folders
- Add ability to hide panels (Library Explorer, Playlist Viewer, Song Player, Palette Viewer, Audio Explorer)
I’ve been having an issue with audio playback on the Mac. The problem boils down to SWT thread support in the Apple Java VM. It occurs in 1.5 of the VM, but not in 1.4. Unfortunately I am using some Java 1.5 features in my code which would make it difficult to run on 1.4. And SWT doesn’t yet have support for 1.6, which I don’t think is officially distribute for Macs yet anyways.
So, what are my choices?
Drop Mac support, for now
The main problem with this is that I know there are some Mac users out there, including myself!
Switch to using Swing instead of SWT
This would require a fair amount re-coding/re-learning. Swing also doesn’t look as nice as SWT. It would simplify the distribution a little bit, but I’ve already got that solved and automated. But Swing should work on Mac without a problem.
Switch to Java 1.4
This would also require some effort and be moving backwards. But it would allow Macs to run the app and play audio. At least until 1.4 is no longer supported/distributed by Apple…
What do you think I should do?
For the curious, you can see details of the problem here: https://bugs.eclipse.org/bugs/show_bug.cgi?id=238436
Thanks to Kevin Barnes of the Eclipse project for being so hopefully in tracking down the source of this problem!
Update:
I tried another approach. I tried using QuickTime for Java and ran into a similar problems where the UI and audio library don’t want to co-exist. I figured I’d use QuickTime for Mac and JavaZoom for Windows and Linux.
I did a little more work on the train in this morning and at home this evening.In this release:
- Added support for the FLAC audio format.
- Adventures are now Libraries and use the .raml extension (RPG Audio Mixer Library). I did this to make the application a little more generic and to open up the Library to organize for Systems, Genres, Campaigns, Adventures or whatever else a DM would like.
If you happen to have files in the previous format you need to do two things:
- Rename the file from whatever.raa to whatever.raml
- Edit the file (it’s XML) and change the opening and closing <adventure> tag to <library>.
Chec out the Download page to get the latest development release of RPG Audio Mixer!
I just got back from vacation, but even without my laptop I managed to squeeze a few bug fixes and tasks out. Here are some of the things I did this past week:
- Added validation to Rename Resource dialogs - doesn’t allow name to be blank
- Resource names are now validation when renaming AND at creation time.
- Added name validation for renaming Songs and Effects as well
- A lot of work in the project Wiki including: cleaning up the main page, creating pages like Program Requirements, Development Requirements, Functional Spec and Help Wanted.
- Updated the Downloads page with the new development releases.
- Fixed a bug when reading in Adventure files (missing JAR in Classpath)
- Work on the Ant script for building, deploying and uploading automatigically.
Here’s a screen shot of the current version:
I’ve made a download of the new development release here:
There’s a separate ZIP file for Windows, Mac and Linux. This version does NOT require QuickTime or the Java Media Framework. It only requires Java 1.5+.
This is a development release which means it is unstable and incomplete. The following bugs are known:
- Audio playback on Mac is broken.
If you discover any other bugs, please feel free to submit them via the ticketing system in our Trac site:
Also, I will soon be upgrading both the blog and forum software on the site.
I’m looking for competent Java developers to help work on RPG Audio Mixer. Recently I’ve been working on it and trying to get the project going again, including setting up a dedicated repository, making it work on Windows, Mac and Linux, switching to the JavaZoom audio library and automating the build & deployment of the product.
The truth is that I’m still a beginner/intermediate Java programmer and could really use to some help on various aspects of the app. I can see dividing up the app into the following aspects for people to focus on:
- Data Model
- Adventure
- Playlist
- Palette
- Audio Engine (JavaZoom or something equivalent)
- GUI (SWT/JFace, eventually RCP)
- Audio Explorer
- Resource Browser
- Playlist View
- Palette View
- Music/Effects Player
- Design Elements (icons, site, etc.)
- Cross Platform Support
- Windows
- Mac
- Linux
If you’re a competent Java developer with an interest in RPGs and the project, please send an email to polymonic AT gmail DOT com, with some information about previous Java apps you’ve worked on.
I’d like to keep the app free and maybe eventually release it under some kind of open source license.
I’ve got the new data structure in place now and finally am able to save and load it to a file.
Until yesterday, I was having a problem loading my data back in. I’m using XStream to write out the Adventure structure as XML. Writing it out was no problem, but when I loaded the data back in I kep getting a ClassCastException. Doing a Google search for “xstream classcastexception” took me on journey through many forums and email lists with no clear solution in sight. Did I need to write a custom ClassLoader? Was something wrong with my Classpath? I was starting to get bummed.
I asked a co-worker if he had ever used XStream. He hadn’t, but offered to look at the problem with me sometime. In preparation for that I decided to simplify the example so we could focus on the problem. I whipped up a quick example class that created an Adventure, saved it and then loaded it. I ran the program and it didn’t generate the ClassCastException!
After comparing the code between the two apps I noticed one thing I was doing in the real app that I wasn’t doing in the example after the data loaded - I was trying to assign the newly loaded data object as the input to a JFace TreeViewer, when I should been sending the object’s children. That’s what was causing the ClassCastException.
So I never actually talked to my co-worker about the problem but was able to solve it. I was explaining to my girlfriend who is called Rubber Ducking.
And I suspect that if I was using Unit Testing, I would’ve solved this problem a lot faster…

