Everyone who worked with Java and MIDI was having problems when it comes to MIDI support on Mac OS X. It is simply not supported. So we were running into the same issue. Luckily Java has two nice features. The first is called Service Provider Interface (SPI) which allows you to create your own provider of MIDI devices for instance. The second feature is called Java Native Interface (JNI) which allows you to execute platform specific code.
Now I do not really know why there is no MIDI support on the Mac because the implementation is fairly simple. OS X comes with a lot of easy-to-use system libraries. One of those libraries is CoreMIDI. Now the only thing you have to do is wire everything together. Use SPI to talk over JNI with CoreMIDI and you are set.
I am not a Java programmer and not a Mac user at all. But I think I learned some common things during the last days.
- Synergy is awesome. A good friend told me about it half a year ago and now I finally tried it. One mouse and keyboard to control four screens which are connected to my Laptop and Macbook is pure luxury — but for free! Synergy is open-source and absolutely superior to a VNC solution.
- JNI is not hard to handle. It was not my first time using it but when it comes to threading you have to keep in mind that references to Java objects have to be marked global and everything from the call to your JNI method becomes invalid. Keeping a reference to the JVM and attaching the thread to it works very well.
- The Ant Jar task has a bug. Defining a service using the <service/> tag does not work because the folder in the jar will be named “service” and not “services“.
I am definitly not an expert when it comes to this kind of stuff but I had my problems especially with the Ant bug and calling a Java method from a different thread. The result is very nice on the one hand because it works for all kinds of MIDI messages now but on the other hand I still have to ask myself why nobody included this feature for the OS X Java VM in the first place.
The good news is that we will have a very robust MIDI implementation which will work crossplatform without the need to install any additional libraries.
Share This
PixelBender Outline is a simple view for Eclipse. It allows you to browse through compiled PixelBender kernel files (pbj). Usually it is quite annoying when working with PixelBender. You always have to debug the shader if you did not write it yourself to know about parameters and stuff. The PixelBender Outline view allows you to navigate through that information in a comfortable way.
PixelBender Outline is working with FDT only. Just grab the JAR file and place it into your Eclipse plugins folder (…/Eclipse/plugins/) to install it. After restarting Eclipse you can open the view using Window->Show View->Other->PixelBender->PixelBender Outline.
The outline is updated everytime you select a *.pbj file in the Flash Explorer.
Share This
At the end of my FOTB session I wanted to show you my latest tool called AS3V. Time was short and there was a small glitch so I could not show it. But now I can explain what AS3V really is without having to rush.
AS3V is basically a tool that can check for syntactical correctness. It will do with your code what a compiler does but it keeps formatting metadata. That way it can generate an XML skeleton of your code and apply rules on the XML.
You can have a look at the first output AS3V produces here. The original source code is included in the comment at the top.
As you can see it will be possible to force coding standards for instance and to warn if code could be optimized. I hope that it will be possible to have a first version of a stable parser soon. ANTLR is still giving me a lot of trouble but it is the first time for me working with such a tool as well.
Share This
Last night I spent about 9 hours writing a build script for the AudioTool allowing us to compile each plugin into its own SWF container. I think it is the first time a Flash project is taking more than 5 minutes for me to compile completly.
I figured out that it is definitly not easy to handle the mxmlc or compc in a way we needed it to be. The point is that we have for each plugin three modules A, B, C and a library D. A depends on D. B depends on A and D. C depends on A, B and D. Now to make it even more complex we have A, B, C and D in one project so that developing in this environment stays still simple. The solution to compile all modules in a way we need them to be was first generating unique entry points for the SWF files because we do not want to work with SWC libraries (or the SWF inside the SWC package). After having the unique entry points we compile D (and its dependencies as well) without including the source of A, B or C. Afterwards we can compile A. But B is dependent on A so we have to compile a SWF for A and then a SWC for A so B can link to A as an external library. C is also analog to this but needs B as a library as well. In the end it was 5am and I was happy to have the complete build working which generates a lot of SWF files and SWC libraries.
Since it is very hard to configure Ant for this (I was using XSL in the beginning for automated code generation) I started developing my own Ant tasks. I have to say that it is really simple and saved us hours of work. We have now one single XML file containing the dependencies and the Ant task will do the rest (code generation, compile tasks, etc.).
Share This
I have started working on AS3C at the end of last year. After a quick prototype the development stagnated and I added just several fixes and tests to the code. Basically I started AS3C as a complete C# newcommer and because of that the code is very ugly.
Due to the fact that I do not have much free time to continue developing AS3C I think it is the right time to release the source-code on the one hand and to let people experiment with it on the other hand.
You can either download the sources and build AS3C manually (you will need zlib.net) or download a binary from trunk/bin/.
When using AS3C you will need the ActionScript from the SVN. Remember that you write real ActionScript code which gets translated by AS3C. There is also one undocumented and very experimental feature existing. If you run as3c.exe -optimize main.swf you could get some speed improvements if you have heavy loops using the Math class. But it could also destroy the SWF so do not forget to make a backup :o)
Share This
Besides implementing OggVorbis I was working on an effect for a while. It is called the Rasselbock and will probably not make it into the next launch but since I love the device so much I have some top-secret recordings of what that little guy can do.
It is basically an IDM/glitch-type effect unit with a lot of cool features. It supports sequenced effects like gate, stutter, etc. and keeps them synchronized to the beat. A killer feature is that it includes also a sequenced mixing unit. This sounds maybe a little bit bizzare but once you can play with it you will probably love it.
All of these songs were made in about 5 minutes and are very cheap. Anyways it is a lot of fun to take any sort of instrument (like a metronome) and route it through the Rasselbock.
Share This
I am more than proud to announce that we won the Grimme Online Award in the category “Special”. It is the most prestigious award in Germany releated to new media. Hobnox has been picked out of 1900 nominees and we made it.
The category “Special” has been introduced to cover high quality and highly innovative projects which do not fit into any other category like “Information”, “Education” or “Entertainment”. Regarding to the press statement Hobnox has been picked not only because of its high quality content and design but also because of the Noxtools — and this makes me especially happy.
Share This
Hobnox is finally out of beta and open for everyone. You are now able to register an account even without an invite. We are still developing our next big update regarding the AudioTool. I hope to see more of those videos in the meantime!
Share This
Yay, the AudioTool made it on the WIRED blog. Read the article here. I am also happy that the author is mentioning the Adobe, MAKE SOME NOISE campaign. It means people begin to understand how important it is to include dynamic audio capabilities in Flash so that we can get rid of our Java server.
Update: Eliot Van Buskirk from WIRED wrote another article covering Adobe, MAKE SOME NOISE. Although I do not completly agree with the quote from Scott Gilbertson that it is very difficult to stream audio to the soundcard. It is not a question about open standards or proprietary technology (like FLV, which has just been opened). Streaming audio to the soundcard is usually done with raw amplitudes in a certain format — we do not need anything else than that and it is actually really simple if you have ever done it yourself.
Share This

Hooray! The Hobnox AudioTool has been updated. You will find the TR-808 now and also some of our new stompboxes like the Compressor and Crusher. The mixer has also been expanded to cover 16 channels.
There is a lot more stuff in the pipe and I am really excited about it. Developing the timeline and saving arrangements are the next big steps. Until then: have fun playing around and stay tuned!
Share This