But listen: In Audiotool 1.0 (Public on Thursday!) you can also control the Pulverisateur (our new synthesizer) with the simple user-interface from the ToneMatrix. It is fun!
We are coming closer to the release. Still a long todo-list, but I see light. While developing the last months, I sometimes completely forgot, what we are actually building. This morning I decided to play around for half an hour to test the usability, sounding and performance. Despite the new complex features like the sequencer and zoom-able desktop the performance seems to be outstanding.
So here is D'n'B at 175bpm, composed with two audio loops (heavily spliced), 303, two instances of our new synthesizer that I love and some effect devices.
Estimated release date early march 2010.
Happy new year everybody!
This will be a big year for me and the Audiotool team. After a long time of research, refactoring, conception, politics, rethinking and building frameworks of any kind, we will finally launch V1.0. We also expect to update the application in a more frequent manner 2010 since we are safe on core technologies as far as the Flashplayer is capable of. Flash is indeed the most widespread browser plugin, but actually the worst choice for a music application. You decide soon - if we did the necessary magic. In any case I hope, that the project will be a success so Adobe feels the need to enhance the Sound API in Flash11 again (Vorbis, Latency, Midi,..).
Joa Ebert, Kai-Philipp Schöllmann, Alan Ross, Andre Stubbe, Philipp Granzin, Axel Philipsenburg and to all organizing forces beyond us. You guys are simply amazing!
I have never been so busy and occupied by a project in my coding life. I am sorry for all the unanswered emails and the lack of posts on my blog in 2009.
According to the posts from Joa Ebert and Nicolas Cannasse I put my personal opinion on stack. Starting with Flash4 I see the long run of Actionscript for 10 years. It became truly a serious language since then. Back at the time, where no type-safe programming was possible and Actionscript errors were caught silently by the virtual machine, it was a pain in the ass to debug and create bigger projects. I was used to that, so I never complained the situation. I had no experience in other languages which features would make me jealous. Everything I have ever wanted were new features, new possibilities to create graphics and deal with sound. So every new Flash version extended my tool kit and I spent a lot of fun-time with the new toys. The only thing that annoyed me was that Actionscript was the slowest language thinkable. That has changed 2005 with Actionscript 3.0, which I am very thankful for. Actionscript 3.0 came with some stunning new features like dealing with bytes on the lowest level, manipulating the display-list in runtime without destroying the DisplayObjects and the fastest language in the Flashplayer since then. And with Flash10, my dream of dynamic audio programming came true, after ringing the bell.
So why complaining?
Actionscript is not solely a scripting language to extend your timeline compositing.
Several projects are out there that rely entirely on Actionscript, including our little baby - the Hobnox AudioTool. We are exactly doing what Adobe was hoping for. We create a rich internet application (RIA), based on the Flashplayer. That requires a lot of work and a lot of trust in the company that build the Flashplayer and its language. So far we have a lot of problems to solve, that were easier when having a more reliable language like Joa and Nicolas pointed out. I want to amplify every single issue they said without repeating them. Please make sure, you read the posts and make your own opinion. I continue to stack more issues we encountered.
Native Event System
The native Flashplayer event system is too complicated. Many people get lost in adding listeners to several events. For instance to provide a button with standard mouse events you have to add a lot of listeners and remove them when disposing the button. Above you have to add temporary events to the stage to get a ReleaseOutside event. This all leads to a unstable system, that is likely to throw some Null-Exceptions, when you forget something important that just pleases the system, the Flashplayer provides. We thought, it is actually not possible to write an advanced RIA with that system, so we have written our own. I highly recommend you to check out our event system opensource.hobnox.com, which simplifies the event flow and give you total control on capturing objects and event processing.
Custom Mouse Cursor
Since Mouse.hide and Mouse.show provides hiding the system cursor, people think that it is possible to attach a DisplayObject at the same position, creating this way a custom system MouseCursor. Well this is not entirely true. The visual update rate of the Flashplayer is different than the OS rate (updateAfterEvent doesn't help), so they might often be an offset between the system mouse position and the DisplayObject position. It simply doesn't feel very good, especially on lower FPS. Flash10 provides a very tiny set of new cursors, which amount is not satisfying. If you want to create RIA, you need a solid set of cursors like Zoom, Resizing, Busy and even custom BitmapData for special cases.
Vote for it @Adobe
Dealing with keyboard events is hell, especially when trying to add control keys like CTRL and ALT. But this is very important in software, where you want to provide shortcuts for faster document editing. It reacts different on every OS, sometimes on different computes with the same OS.
Any pointers to Flash11? As far as I can remember, it hadn't taken much time after a new Flashplayer version was released - the next versions feature list was at least already part of speculations. All we know is that Adobe is focusing on mobile. Well, you all saw the nice charts at several keynotes showing the big piece of a cake that is occupied by mobile applications. I am personally not interested in mobile programming, since I like to have space for the user interface. However I see, that there is a market for the Flashplayer and time will tell if the Flashplayer gets highly distributed on mobile devices.
However, has this stopped the big picture of Flash itself? A creative, media, runtime environment to create websites, games, applications, experiments and actually everything on any platform? I am afraid, that resources at Adobe were moved to mobile development and nobody is thinking or already developing on Flashplayer 11.
My biggest wish for FP11 is that it will be more reliable according to its language and existing features.
Actionscript 3.0 is not a failure in my opinion, but it needs more enhancements to make it, what it supposed to be. A creative toolkit to compete with existing languages. Since now, Flash is still the most ubiquitous plugin worldwide, but this can change soon. There is no reason to stay, when better environments arrive and are well distributed. On the other hand, we still love Flash. So lets hope Adobe will make some noise in the future as well.
Pitching MP3 (Not PitchShift!) is possible since Flash10s new Sound API. Today I saw Lee Brimelow's post about doing so, providing some source code. Cause we spend a lot of time to keep things running more smoothly in the AudioTool, I created another version which has some advantages.
- No objects are created in runtime (memory usage)
- The SampleDataEvent is receiving a static blocksize (steady latency)
- Linear interpolation (sound quality)
- Speed can go down to zero
(no preloader - music by basic channel) - Thanks Lee for pointing me!
Coming back from two weeks of traveling through the states with my co-worker Alan Ross. Starting in Boston, we attended Flash on Tap, where I spoke about Digital Audio Signal Processing in Flash10. FOT was great and the beer-tastings were delightful. A lot of local breweries shown up to present their beers. Cheers! Looking forward for next year. Thanks to Chris, Rebecca and the rest of the team!
My favorite session was Keith Peters (Bit-101), presenting fractals and hence philosophical views on the structure we are surrounded. Just great.
Afterwards we went by train to New York Manhattan, Harlem. Well, I have never been to NY, so it blowed my mind. There is maybe no better place to study the goings-on from human-beings in form of architecture, transportation and culture. We also visited the guys from BigSpaceShip, who are lucky having their office very close to the Brooklyn Bridge. After loosing a match in Fussball on their - for us - unorthodox table (three goal keeper in the last row?) and a very close lost of a ping-pong match (Damn it!), we left to the airport for Detroit.
We then had a long travel over the days to Minneapolis. Detroit, Lake Michigan, Chicago. We discovered nice places like Silver Lake, where we found beautiful houses to sell, direct to the lake. Looked like a place to retire, which of course will never happen, right?
Finally we arrived at Flashbelt. Dave Schroeder is a cordial host and we had a great time hanging around with parties, bicycle ride and what not. Especially the last evening is burned in my memory as one of the funniest evenings, I ever had at a conference. The conference itself was the best of Flashbelt, which is very hard to say when thinking of last year.
Ralph Hauwert's session really showed me how personal and technical views can be combined in a single hour. Even I am not into 3D-programming anymore, I loved his mixture of telling his story, why he is into programming while also providing technical insights.
I won't go into details of Hoss session and its never breaking up discussion on blogs and twitter. I just think, this is not a gender issue, more a culture thing. I cannot believe that something like this would have been even noticed in Europe. The only thing, that bothers me, that the discussion may have bad influence on Flashbelt itself. Well, I am pretty sure, that Dave will handle this and I would like to see Hoss invited next year as well!
Catchy title, worth to consider. While working on the AudioTool, we are continuously searching for better workflows. Joa Ebert has written two plugins for Eclipse that helps us a lot to deal with such a huge project.
To make it clear: I don't love Eclipse. It is still a love-hate relationship and I am often fighting against its philosophy. So far, nothing comparable platform-independent in sight.
If your project consists of a bunch of SWCs, you often want to compile them first and your application afterward. Use MetaLaunch to launch several Eclipse launchers from a list.
PBDT - PixelBender Development Tool (free)
Adobe PixelBender Toolkit is not event worth to consider as a code editor, I am afraid. PBDT instead supports semantic highlightning and basic refactoring for your PixelBender shader source code. It even compiles your code in the background. This gives you a very nice workflow in developing shaders.
FDT - Flash Development Tool
Not to forget the sophisticated Actionscript development tool by powerflasher. People often think, you need to be an expert in Actionscript to get benefit from it and still prefer to use the Flash IDE. On the contrary, using FDT helps you learning AS3 with tons of useful features.
Time flies! Yet two weeks and I am heading towards Boston to speak at Flash on tap.
Lucky me, Flashbelt in just one week ahead then. Thus I decided to stay in the states and try to find a way from Boston to Minneapolis with my colleague Alan Ross. It is more than 2.000 km, so I am pretty sure, there are a lot of things that we should visit on our way.
(Any suggestion where to rent a car for the trip?)
We are free for proposals. I am personally more interested in nature than visiting big American cities, but if you live nearby our route and offer food and accommodation we could hang around for some beers and chat.
Endless Karplus Strong - Click to feed noise:
[kml_flashembed fversion="10.0.0" movie="http://blog.andre-michelle.com/upload/KarplusStrong.swf" fid="example" targetclass="flashmovie" bgcolor="FFFFFF" useexpressinstall="true" publishmethod="static" width="32" height="32" play="false" loop="false" menu="false" quality="low" scale="noscale" wmode="transparent" devicefont="true" swliveconnect="false" allowscriptaccess="never"]
An enhanced version emulating a guitar can be found here.
It is basically the same code as above!
John Davey was able to make a very nice shot from Mario and me. Great conference indeed.
Bothering about the Pixel Bender Toolkit? It is just a pain in the ass to work with an code editor that even does not provide simplest text selecting features as textEdit.
Joa Ebert developed a very nice Eclipse Plugin for Pixelbender coding, which also compiles Pixelbender code before compiling and launching your SWF. This saves a LOT of time. There is no need to open the Pixel Bender Toolkit at all.
Last thing I am waiting for is a command line compiler from Adobe to allow one and two channel inputs. That would be great for audio processing. I am pretty sure, Joa would implement the compiler in no time.
Okay, we did it. The same simple ToneMatrix is now implemented in the Hobnox AudioTool. To be honest, I wish we had more time to add more features to it, but at least you can mix now the little cute toy with drumcomputers, the bassline and add a couple of effects. Furthermore, as a registered user of Hobnox you are able to record your session and upload it in the community.
Some new features besides:
- Better performance while scaling the desktop
- Autoconnect (Removing an effect device will connect the source and the target automatically
Alongside we have completely rewritten the audio engine form the scratch, which is not part of the update. This already allows us to add automation and modulation. The audio event system is running with its own garbage collection, pooling all events to reduce glitches from the real garbage collection.
Furthermore there is event postprocessing (Ever heard a super-mario midi file shuffling?). We are working hard to make 1.0 a serious application. I cannot wait to see, what you guys will do with all that new stuff.
Listen to what our team member Alan Ross did with it:
This proofs it. The simpler the better.
I visited the Frankfurter Musikmesse 2 weeks ago and played with the Yamaha TENORI-ON. I thought, it would be much nicer when the triggered notes would force a wavemap to oscillate. It took me just a few hours to implement. The sound generation is basically a polyphone synthesizer with a simple delay with a variing read-offset to make the tones vibrating in the end. I am already addicted for myself to the cute sequences it always generates.
After uploading it on my laboratory the run began. I am counting more than 250.000 impressions, endless feedback, suggestions and even videos on Youtube. I will definitely put the sequencer in our AudioTool. But don't expect an update before autumn. We are trying to make 1.0 a serious music application with sequencing, automation, modulation, audio-tracks, synthesizers and what not. So there is no time to enhance this little toy. But I have added at least Clipboard support to let you save your pattern to sequence of numbers. Unfortunately the audio output is very glitchy when the context-menu is running.
Audio is the next big thing in Flash.
At FITC Amsterdam I demoed my first and fairly simple implementation of a Karplus-Strong implementation. Together with KP, we were able to enhance it to sound more like a real guitar. I think, the result is already quite impressive, considering spending just a few hours. At some point I cannot hear a difference to a real guitar. This is even more impressive when you think of how it is accomplished.
A simple low-pass filtered feedback in a short delay line with the length of one period of the target frequency and some white noise do the first impression of a plugged string in common. For a guitar you need more tweaking, randomizing parameters and adding the guitar body resonance to get it more realistic. But the basic is done with an algorithm, discovered 1978!
I really like the elegance of the circuit. You basically bring in chaos (white noise contains all frequencies) and the system is going to stable itself and produces a nice waveform, perfectly suggesting a plugged string.
Naturally we are already planning an AudioTool plugin for synthesizing different guitars. But I am worried about the footprint of the algorithm. I stumbled over this comment which pointed out that the Karplus-Strong algorithm is patented. That is tough. At the time being this algorithm was a great accomplishment! But now where even Flash is able to playback code-generated audio data, I would think that someone may stumble over this method even by accident. It is better to commit our lawyer with this issue, but as the comment says, it is a really good example how bad code-patents are.
Listen and picture it for yourself. (Check the CPU!)
The implementation has a static set, but gives you some control on how the guitar is played. Nothing really magic. Definitely it would be a perfect addition to the AudioTool.
Still in Amsterdam, but enough time for my flight back to Germany to post the source codes from my session. Good conference! But what is up in Amsterdam at night? Ralph Hauwert did everything yesterday to get us in another location after the official FITC party was closed. However we messed up in different directions, where KP & I decided to head back to our hotels. Late enough, fair enough.
Long time no update. Long time being sick. I even had to cancel Adobe MAX and FITC Tokyo last week to cure my persistent cold. What a bummer! I am sorry for those who were looking forward to see my session. That sucks. I hope to get another chance to come to Japan in time.
Anyway I am getting back to work and I am looking forward now to FITC Amsterdam.
Btw: Have you seen this?
John Davey already revealed it at FOTB08. The next Flash on the Beach conference will be taking place in Miami. FOTB has always been one of my favorite conference and I am happy to attend as a speaker as well. You guess the subject - Audio in Flash 10. We are making great progress on the next AudioTool update. We will have collaboration features, a brand new sequencer unit to automate everything and finally you will be able to save your project and remix other user stuff. And much more...
Thank you John for your effort in making FOTB everytime a little bit better - which seems hard if attending just the current!
As promised here are the class files I used in my session about audio programming in Flashplayer 10. They are already embedded in a FDT project, but you might have different SDK locations. There should be no problem to compile them in Flash CS4 or Flex as well. Good luck!