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
Last friday was an awesome day. It was my birthday, Microsoft released Photosynth which is a product I have been watching since two years and we won the FlashForward Award in the category Sound with our Audiotool.
The Audiotool development became a very interesting topic. We implemented so many things to keep stuff optimized not only on the code layer but also on the algorithm layer. I am really looking forward to talk about some techniques in my session “Audiotool’s Private Parts” at Flash on the beach and Flash on tap.
Share This
This FDT update makes me so happy that I have to post about it. The Powerflasher FDT developers implemented the new Vector.<T> syntax. Hooray — we can make full use of the Vector class!
FDT is implementing it also in a nice way. So for instance if you have a Vector.<int> named vec and you write var sprite: Sprite = vec[0] this will result in an error because FDT knows that your Vector was typed int.
There are still some glitches here and there but I hope this will be fixed soon as well.
By the way I am using the beta site to update my FDT — so if you want to have Vector support too you should use the beta update site.
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
A quine is a programm emitting its own source-code. I guess this is the most simple variant one could produce.
Continue reading ‘ActionScript 3 Quine’
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
As André already mentioned we have finally got an Ogg Vorbis Encoder in ActionScript 3. André wrote a lot about the benefits already.
Now what I really like about the encoder is the way we could minimize the encoding time by ~50%! I know two implementations of Ogg Vorbnis. One is written in C and another one in Java. What we did first was just getting it to work and it looked pretty much like the C/Java version. Then we started optimizing the code by comparing the encoding results always to reference files. I am quiet happy because on my machine we reduced the encoding time from 32sec to 16.5sec with simple optimizations and tricks.
Where to go from here? Of course we think the best we can do is to open-source the encoder. But there are a couple of other things in my mind. I started modifing Tamarin and added two functions to the Math class. Those convert a Number to its binary IEEE32 single-precision representation and vice versa. With those two functions we could get huge speed improvements for performance hungry tasks like this one. I hope Adobe will not forget about this as well — there seems to be general problem currently trying to support the simple Flash user on the one hand and the “Flash explorer” on the other hand.
I know you may ask what this feature could be good for, but doing floating point math using bitwise operations is a killer when it comes to performance. We are currently not allowed to do this and there is no reason for that.
Share This
Hooray! We are a finalist at the Flashforward Festival in the category “Sound”. Please vote for the AudioTool in the People’s Choice section as well.
Share This
Great news! Papervision3D developer Ralph Hauwert will come to Cologne to do a two days workshop. I think it is by far the best opportunity to learn more about Papervision and it is great that we will have Ralph here since most of the Papervision3D workshops from the core-team were always outside of Germany. The workshop will take place from July 30th to 31st.
Share This
Due to personal reasons I will not be able to attend the AUG Netherlands meeting 2008 and I am really sorry for the inconvenience. I would have loved to talk about Adobe PixelBender and meet-up with everyone but life is sometimes just unpredictable.
My best wishes for the conference — I hope you guys will enjoy it!
Share This