Development Tool Pixelbender

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.

ToneMatrix arrived in Hobnox AudioTool

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:

  1. Better performance while scaling the desktop
  2. 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:

The amazing ride of ToneMatrix

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.

read more

Karplus-Strong Algorithm

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.

FITC Amsterdam Source Codes

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.

Now check out the sources. | And/or check the AudioTool itself.

Boing Bumm Tschak!

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?

Flash on the Beach – Miami!

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!

Fur like renderings

About 2 years ago I created a little SWF that generated cute little ‘fur balls’. I didn’t pay a lot of attention on this, moved to other stuff and lost it anywhere on a backup disk (not recovered yet). There was so much to discover in Actionscript 3.0 these days!
Last weekend I remembered and did some tests. It is actually quite simple. Move a lot of (millions!) particles and trace their path with a color. I am pretty sure, that software like Maya or several Photoshop plugins can do this as well. And probably much faster! Most of those tests below required hours of rendering. Anyway, I like the outcome of these three so far.

Flash Logo
Hobnox Logo
My Pixel counterpart

Flickr – Fur Collection

Make sure to watch them in 100%

FP10 SoundAPI changes

Without telling anyone, Adobe changed the Sound API on the recent released Flash Player 10. When we released our AudioTool yesterday we encountered a ridiculous long latency of almost one second. The latency time is the time between computation of the sound and the point where you can listen to the actual sound. It is important to keep this value low for live experience. After hours of research some people figure out, that the amount of samples you pass to the sound card is changing the latency dynamically BUT will never decrease. If you once pass a higher number of samples you cannot go back easily.

Here is how we handled sound creation before in the AudioTool
We simply passed 2048 samples (minimum amount) every time the SampleCallbackEvent was fired. The playback was stable – even when scrolling the desktop with a lot of devices. For processes that would block the CPU for some time (e.g. create new plugin instances), we passed 8192 sample (maximum amount) to remain stable playback and execute the processes after. So we dynamically increased the latency once to have more space for heavy computation. Afterward we went back to normal (2048 samples). In fact this worked great!

The Release Player changed all that
With the latest player, every time you increase the number of samples you will increase the overall latency. And there is no way of decreasing it again without stopping the SoundChannel. So now we just pass 3072 samples (~160ms latency) all the time. Meaning that critical processes won’t be caught and will cause gaps in playback.

Again we now have 4 times more latency, but playback is overall less stable.

The worst thing is, that nobody told us and I am still not sure, what that is all about. The new sound feature was great and worked great for all release candidates. And all the sudden they changed it – again – without telling anyone. If we had this information before, it would not have been so hard to accept it. And of course we may have found some workarounds.

Read also Joe Berkovitz post | Joa Ebert post | Kai-Philipp Schöllmann post

Hobnox AudioTool update out of the oven

Wheeeee! We are on. Excited!

DAMN!!! The latency is way off with the latest Flash Player 10. I am so disappointed!

Well, this is a weird consequence of Adobe not informing developers when things have changed. I will make a detailed blog post on this next days. In fact, the latency is great somehow okay when you consider the new changes to the Sound API.

Audiotool requires Flash Player 10.

Hobnox AudioTool Update ahead

Hobnox announcement

The news have been floating within team Hobnox for some time now and we can finally announce the news about the update of the Audiotool Beta that we’re about to roll out in the upcoming days. We’re still waiting for Adobe to release the new Flash Player but will share the details with you anyway. Speaking of Adobe, it really looks like the ‘Make Some Noise’ campaign was successful as you’ll read below and that Adobe finally managed to make some noise. Nice. Thanks to everyone who supported the developers.

New Features

  • Java applet is removed. Entire signal flow including sound output done in Flash
  • Complete refactoring of the CoreAudio programming
  • Optimized all plugins DSP code
  • Live session recording – Vorbis encoding – Hobnox Library upload
  • Plugin Shelf – add/remove plugins at runtime
  • New Plugins: Slope, Gate, Phaser, Merger, Splitter
  • Short overview of all features on startup

The Future

  • Sequencer (Notes, Automation, AudioTracks)
  • Remix stuff – Collaboration

We are set
I am quite sure we can launch our update the same day the Flash Player 10 ships.
We are probably the first forcing the user to upgrade to Flash Player 10. But I am also sure nobody will refuse.


What is wrong with the Matrix3D.transformVector?

I admit that I am not an expert on Matrix3D computation, but is it really me or just a bug?

In my understanding an inverted matrix can neutralize an already applied transformation to a Vector3D. So having a Vector3D transformed by a matrix and afterward to the inverted one returns the original Vector coordinates, right?

Check out this simple test.

Can anyone explain this or should I log a bug?

Update: If I use transformVectors instead – the computed values are as expected.

FDT Roadshow in Harvard

This is some location, right? Don’t miss it for any reason – it is totally for free to join us!


2:00pm – Introduction
2:10pm – Marcel Fahle – smart video streaming
2:40pm – Marcel Fahle – Boost your Workflows
3:15pm – Michael Plank – Web- and Desktop Applications
4:15pm – Chris Allen – Red5 in action
5:15pm – André Michelle – Making noise in Harvard
6:30pm – approximate end of the event
7:30pm a.k.a. „beer-thrity“ – party time


Tsai Auditorium (S010), Center for Government and International Studies, Harvard University, 1730 Cambridge St., Cambridge, MA, 02138

Taking place in Boston on October 7th, 2008

FOTB08 Sildes and Sources

Back in Germany, where it is much colder than in Brighton, I compiled the sources and slides as promised. Thanks everyone, who attended my session and for the overall good feedback on our work at Hobnox. It was a amazing experience to have a talk in The Dome. I also enjoyed a lot of other sessions. Flash on the Beach has become one of my favorite conference.

Continue reading “FOTB08 Sildes and Sources”

Flash on Tap postponed – Still coming to Boston for FDT Roadshow

Flash on Tap is rescheduled on next year. However the powerflasher guys let me fly to Boston for their FDT World Roadshow Prelude. So after canceling the actual conference in the last minute a new conference is born in no time. I am pretty sure, it will turn out best.

Welcome to the FDT World Roadshow Prelude!

We’re going to kick off in Boston on october 7th, 2008. We will host a free (!) half day event and invite every Flashcoder to show-up and meet with the FDT professionals. The first „Headline-Speaker“ is confirmed: We are bringing André Michelle with us, a true FDT friend, a Flash-Hero, and he will talk about the most recent developments about his „Hobnox-Audiotool“.

TB-303 new emulation testdrive

Just a quick snapshot with a TB-303 and a TR-808 creating a monotone acid track to check the new 303 emulation code. I spent more time to get the accent system better integrated, which is one of the most popular features in the 303 sound. The accent is riding in at about 2:10min. This is the most I can provide without doing heavy analysis of the circuits and measuring. I think it is pretty close. However I have the real thing next to me… Wooaaaooow!

TB-303 The real thing
Need to do some measuring and analysis ;)

Audio Physics

Yesterday, I played again with oscillating particles in audible range.
I introduced a very basic version on some conferences. I’ve embedded the system in the Hobnox AudioTool environment to add some effects. Well, this is certainly weird but interesting sound design. I like it.

Headphones required. There is a lot of stuff going on which you will miss when listening on standard computer audio systems.

Too late? Very simple but striking feature request for Flash10 3D!

Oh dear! Two simple additional optional parameters for the following methods would allow you to use native performance and save memory.

Thinking of a simple 3d viewing pipeline, you have something like

  • Setup geometrie, textures and lights
  • Transform local coordinates to camera space
  • Clipping against Frustum
  • Project and render

They are a lot of helpers that helps you doing the transformation and projection, especially

  • flash.geom.Matrix3D
  • flash.geom.Utils3D

I assume that Matrix3D.transformVectors and Utils3d.projectVectors are lightning fast, cause you can pass a Vector (sources and targets) to them. A single(!) Vector could contain the entire 3d world geometry as a list of (x,y,z,x,y,z,x,y,z,x,y,z,…). That is why I am thinking that the Flashplayer is able to execute this well formatted list extremely fast! Much faster than calling the methods to transform several Vector3D objects in a AS3 loop.

So far so good. Where is the problem?
The worst thing from the memorys point of view is the clipping part, cause vertices are added and just valid for a single frame (if the Camera or Geometry is moving). A big case for the garbage collection.
Trying to figure out the best data structure for a 3d engine in Flash, I thought of something like this: All 3d world vertices are stored in a single Vector. Furthermore I would also leave some extra space for the expected vertices in the clipping process (increase the Vector length). With this setup, you reserve memory space and there is no reason for the garbage collection to remove used clipping data. You can easily access the clipped vertices with an offset in the Vector.

Vector fixedSized
Note: The Vector would stay fixedSized. It is on you to allocate enough space for the clipping process when you setup.

But it won’t work for now
Imagine you already clipped geometry: Next time you transform the Vector into a new coordinate space, all the clipped data from the last frames will be transformed as well. Two simple optional parameter would change that.

Matrix3D.transformVectors(vin:Vector, vout:Vector, startIndex: uint, endIndex: uint):void
Utils3D.projectVectors(m:Matrix3D, verts:Vector, projectedVerts:Vector, uvts:Vector, startIndex: uint, endIndex: uint):void

Thats it! That simple!
Now you could force the Flashplayer only to transform the necessary range. You simply overwrite the new clipped data in the Vector every frame, project and draw them. If you know the region, where a 3d-object has allocated its vertices you could use the startIndex and endIndex value to transform it at once.

Too late? I guess so. Too bad I started so late…

I created an official feature request at Adobe bugbase. It would be a great feature!
Please vote. It may not be too late.

Flash10 Perspective-Texture-Mapping (No more rotating cubes)

Getting all the audio stuff to work, I completely forgot to check out the new features in Flash10. I waited so long for perspective texture mapping in Flash and now it arrived. This is the result of about 8 hours and at least 4 different approaches handling the 3d data in my little engine properly. To draw polygons perspective correct you can use the Graphics.drawTriangle method and pass 3 Vector (new typed Array class) instances providing all data, the Flashplayer needs to paint the triangle. This let me think of handling all 3d and texture data in Vectors and never use objects like a Vertex class for instance, just (int) pointers.

Continue reading “Flash10 Perspective-Texture-Mapping (No more rotating cubes)”


I lost sight of my recently bought Serato Scratch Live system way too long. It allows you to play almost any digital audio formats on well-known Technics SL-12010MK2 record players. It’s fun! I bought several minimal tracks at Beatport, a great online shop especially for electronic music – by the way – entirely built in Flash.

Afterall…enjoy 1:30h minimal tracksalternative download at soundcloud

First AudioTool live recorded, Vorbis encoded session

We were not sure if this ever gonna work. In about 4 days we ported more than 30.000 lines code of a Java Vorbis Encoder to AS3. We came across several issues when AS3 code is behaving completely different from Java code. Debugging code, you cannot understand is a pain in the ass! However, we optimized the horrible Java code quite a bit. The encoding takes now twice the time of the audio duration and it doesn’t take that much memory as before.

Why Audio Encoding?
We would like give the Hobnox AudioTool users the option to stream a live-session to their Hobnox Library. Unfortunately the Flashplayer doesn’t allow streaming data to the hard-drive and we didn’t wanted to fill the memory with uncompressed audio material (~10mb/min). We manage streaming by using (a lot of) SharedObjects, slicing the audio data into several packages, which are later transferred to the encoder for uploading.

Why Vorbis?
Vorbis has a better file reduction ratio AND sounds much better than MP3 files. I cannot hear any difference against the uncompressed audio data at Vorbis rate of 128kb/sec. Filesize was the reason in the first place, cause we cannot upload uncompressed audio data. It would take too long. Naturally in the end the server converts the audio file to MP3 that the Flashplayer is able to play it. I would love to see the Flashplayer playing back Vorbis in future releases. It sounds better and it is also able to loop. You know that MP3 is not loopable trouble-free.

Entirely in Flash (No Java anymore):
I admit: My session is actually boring. I quickly setup some beats and just one 303 without any effects to test the Streaming and Encoding. Download the OGG-file here. The next update is scheduled for September, 1st. This may shift as we need to wait for FlashPlayer 10. The current version of the AudioTool works with a Java applet to stream the AS3 generated audio to the sound card. We are looking forward to get rid of it.

I pretty sure we will share the encoder in time. It still needs some tweaking and optimizations.

Launching for Flashbelt in Minneapolis

I am looking forward to this years Flashbelt 2008 in Minneapolis. This is the second time I attend the conference. Organizer Dave Schroeder is doing a great job and I am quite sure the conference and parties will be as extraordinary as last year. Besides Shawn Sheely will be organizing the Minneapolis bicycle tour again. Looking forward for this as well!

My session will be about dynamic sound in Flash, of course. I’ve added details briefing regarding the changes in FlashPlayer 10 in my slides. I hope to spare the sound system this time, so you will be able to get the full experience of our Hobnox AudioTool Demo, I am going to present more elaborately.


Hobnox AudioTool Update

We finally released an update on our cute Flash audio application – AudioTool Demo.
As promised we’ve added an emulation of the famous Roland TR808. Besides you’ll find a new bitcrusher effect and a compressor with optional sidechain input.

For a better workflow we’ve added new buttons in the controlbar as undo/redo, three zoom states and a lock button to avoid accidental displacement of the editors.

It is still a demo, which means you cannot save your set. This is the most wanted feature we will address in the next update. A timeline to arrange modulation and pattern changes over time is in development too. Stay tuned!

Hobnox AudioTool

Finally you won’t need an invitation or register anymore to play with the Hobnox AudioTool Demo. The next update is scheduled in 2 weeks, bringing the TR-808 and some new effect devices to the stage. Also good news: Martin Heidegger has joined the team. You may remember the opensource framework a2lib he was working on with Simon Wacker. Joining forces for the greatest Flash application I can imagine. If you havn’t tested it yet give it a try now!

As a side note. We needed to change the domain name of our campaign Adobe, MAKE SOME NOISE. If you linked to our website please update the URL to

Digg it

FDT 3.0 Enterprise released

Powerflasher is proud to announce the final release of FDT 3.0! It took many months of hard work, tons of caffeine, red-rimmed eyes and some heated discussions to get there. With FDT 3.0 Enterprise you can debug your source-code like you might know it from your Java environment and the JDT. FDT’s debugger allows you to set breakpoints and analyse your code step-by-step. The second huge enhancement is the advanced refactoring. Tools like change method signature, extract interface or extract method helps you to easily alter your code.

Sounds great. It is no secret, that I support FDT, cause I really like developing with it instead of the FlexBuilder. Fortunately we all have an Enterprise version at Hobnox already ;)

Hobnox AudioTool Guided Tour (Video)

Finally we released our first video tutorial for the Hobnox AudioTool. You get a basic introduction of all devices and the desktop, where all comes together.

At this very moment I can spread around 25 invitation. So leave a comment with a valid email address and get started! And be so kind and fill out your profile, I like to know who you are.
Registration or invitation isn’t required anymore!

Related posts:
Adobe – Make some noise!
Hobnox Audio Teaser – Come and register for private beta
The silent death of onSoundComplete event – a petition

Flashbelt 08 – Envolving Flash Audio

I am happy to announce my attendance on the Flashbelt 08 in Minneapolis as last year.
Thanks Dave Schroeder to invite me again.

I will continue my mission convincing Adobe to add dynamic audio features to the FlashPlayer. We are currently thinking loud to move our music application to the Java platform entirely since there is no feedback from Adobe yet and we can’t wait much longer for a meaningful statement.

Adobe, make some noise!
I get used to Flash over the years, but that doesn’t prevent me to switch.

Away3D – A 3d demo convinces entirely

We all know the current hype on papervision3d and I really admire the effort the whole team put into it. However I spend a lot of time talking to Fabrice Closier on the last Flash conferences and he pointed me to their latest demo. He almost let me forget, that we all still need to deal with linear texture mapping in Flash. The perspective texture correction is so convincing, I am really impressed. It is actually very difficult to keep control of it, while moving the camera close to polygons. So keep an eye on this engine as well. Great work, Fabrice!

Away3D | Papervision3D

Adobe – Make some noise!

I am back from FITC, a great conference first time organized in Amsterdam. Thanks for all the feedback regarding our new audio application. I think you all get the point, that we are very serious about doing a reasonable online music software with Flash. So everyone who was lucky to get one of the t-shirts: Please do us a favour. Make a picture of yours wearing the shirt, post it in the comments or even better send directly an email to Adobe attaching your message.

Adobe – Make some noise! We need native sound support as soon as possible!

Check out Joa Eberts first RMX, recorded live with our AudioTool!

No freelance work anymore – as long as I hope to

I have given up my freelance status right now. I have been employed at hobnox, where we are currently building an audio application, which definitely is the most ass-kicking stuff, I could ever build. I said that before? Well, you can test it for yourself in the end of february. We will launch a teaser application to have some fun without all features we have in mind. Damm – I wish I could show you right now. Amazing graphics, great dynamic signal flow with cables, awesome sound. Enough superlatives. Unfortunately, we still have issues with the onSoundComplete event, which really troubles me. Some of you won’t have the experience, we have. However, this project is reliable for a long period, where we consistently add new features. Hopefully we will get some reliable sound features within an upcoming flashplayer version.

Another part of my new job is to lead the flash development team. It’s a great team working on several projects and I feel very comfortable with the new responsebilities knowing the skill of all developers. I am a lucky guy!

The silent death of onSoundComplete event – a petition

Back in the year 2002, where FlashMX was introduced, I was pleased to see the new event ‘onSoundComplete’. I had access to the beta version these days (cannot say where, cause I wasn’t in the beta group). I found out, that it simply did not work as expected. The event should be triggered, when a sound was completely played, but starting a new sound on the very same event caused a small gap in playback. What was the point? The ‘onSoundComplete’ event was only triggered at the beginning of a certain minimal timeframe (2048 samples on a PC ~ 46ms / 44.1KHz). Macromedia didn’t take my report seriously – more – they demanded that everything worked as expected. Well, no musicians worked at Macromedia those days.
Continue reading “The silent death of onSoundComplete event – a petition”


Oh my, even I wanted to have a cute looking computer sometime and an os, which doesn’t remind of its existence consistently. And after one day having Vista installed, the Windows world was crumbling and I was seriously looking for alternatives. And now it has happened. After 9 years of looking on Windows desktops, I have a brand-new MacBook Pro running Leopard. All I say is I’m pleased. It is good – and yes – maybe much better than I expected from a computer before seen by me as a toy.

One thing though. Does anyone know how to get aliased fonts in my eclipse environment without changing it for the whole OS ?

Flash on the Beach

I am back from Flash on the Beach in Brighton and also completed my move to cologne. Thanks to John Davey, who accomplished a wonderfull conference with an ingredible line-up and also invited me to present my latest audio stuff in Flash. I had a lot of nice discussions about my session with several people and the sound system was great to show the sound quality of the different audio processors, I’ve developed yet. Loud! I hope to be invited next year as well. I had a great time.

Get ready for classic Acid Tunes in spring 2008 and an incredible new audio application providing all the stuff I have shown somewhere in 2008 within your browser.

Short video section from the Flashkonferenz in Cologne 07

Rexel put together some example videos from the Flashkonferenz07DVD, including a lot of sessions of various speakers. Even you don’t speak german you nevertheless get the chance to listen to some acid tunes I made inside the Flashplayer. You can see the continuation of my sound experiments at Flash on the Beach in Brighton in a few days.

FDT 3.0 released

Powerflasher released a brandnew AS3 version of their flash development tool FDT. I am already working with FDT3.0 in my current project and it is – as FDT1.5 – a huge timesaver in writing and debugging code. Lots of new features! No more Flex curiosities. Give it a try and install the try version.

We surely took our time but now we proudly present the most sophisticated Flash IDE you can think of. “Enjoy pure coding comfort” – that’s what we had in mind when we first decided to put our efforts in developing the Eclipse plug-in for Flashcoders and that’s still what we’re aiming for. We’re very happy to provide you with FDT 3.0 which is – in our view – the best FDT you’ve ever worked with. We enhanced some of the features you already love about FDT 1.5. Then we took this FDT version and amplified its advantages by adding some really cool new features.
AS3 support, individually configurable formatter, semantic highlighting and improved auto completion are only a few of them. The table at the end of this e-mail gives you the best impression on what has changed radically from 1.5 to 3.

New project and my new TB-303

Today my TB-303 arrived and I cannot wait to analyse this amazing little device, that changed the way of listen to music in my opinion. There is a good reason why I am doing this. I started a new project at hobnox in cologne (germany), designing a new audio engine mixing up old and new ways of synthesizing sounds together. The TB-303 obviously is my favorite. Just in time for the flashconference in cologne (it was great by the way) I could enhance the quality of my flash 303 clone highly. Thanks to Mike from Audiorealism for his valued hints.

Remember 1992 when Hardfloor released one of their best Acidtechno track “Acperience 1” ? Listen to that demonstration, I recorded live from the flashplayer. 3 TB-303 with a TR-909 (just one pattern) playing well together at 10 (in words ten) percent CPU!

I am sorry to tell you, that you have to wait until the new application will launch (summer 08).

Acid will revive – in your browser!

Here is another oldschool 303 pattern with some effects

8Bitboy finally has a home

Our cute Modplayer 8Bitboy has a new home at Kim’s Lemon Amiga website dedicated to Amiga computers and games. You can browse through games and listen to their tunes. A perfect match. The actual 8Bitboy homebase has only a few visitors. I think most people still think it is a MP3Player with weird music. Well, you know better.

Lemon Amiga | Browse all games with music


Popforge Updates

Joa & I are very busy at the moment contributing more stuff to our little open source project PopForge. There are lots of new stuff in the line. For now, I recoded the 909 from the scratch – hopefully less CPU intensive and with better sound quality. The sound samples and grains are now stored into a single file, introducing Joa’s compressing FurnaceFormat. Quite elegant!

Source code 909 GUI | Source code Popforge package (including 909 processor)

Furthermore I have updated the AIR version of the 909. You can now stream a Wavefile to disk while playing your session. If AIR will be some day as distributed as the FlashPlayer, we will have good times. I like it. Joa is also preparing FUI, a smart and simple GUI Creationset to build UIs in actually no time. This will be a huge timesaver for creating and debugging synthesizer and effect devices.


Air909 – First Air Application

I decided to give AIR a try building my 909 as an AIR application. It comes now with a chromeless, shaped window and save/load functionality to store the whole content (including the parameter values) of the 909 permanently to your harddrive. I have rewritten the 909 engine for making it open source in the next time. Everything should sound as before, even better and less CPU intensive.

Make sure you have the Adobe Integrated Runtime (AIR) installed.

Install Air909 and share your beats!

Please update to the latest version. There was a serious playback bug, that causes clicks.
NEW: Hold SHIFT while clicking START to save a WAV – stream directly to your harddrive!

Note: Make sure you save the file with the *.909 extension.


David Rowald captured me while playing around with the 909 and put it on youtube. Damn you ;)

Splicemusic is online – DSP Audio with Flashplayer 9

# I admit, I am a bit late, but I needed some rest after 8 months of development. Splice is finally online! Truly Splicemusic is an awesome Web2.0 application. The audio gap is closed. However this could only be a start. Splice is extendable, working with a Plugin API developed by Bram de Jong. Yes, its true – unfortunately I didn’t have my hand on the audio core engine (except the 404, hehe), but believe me, Bram was and is the best man for this. He has a huge background in DSP programming, developing professional VST plugins. He learnt AS3 in three days!
So then, I was alone responsible for the whole UI and this was the worst trip I ever had. Starting as an actual newbie in complex design patterns and even AS3 was young, this application was my baby beneath my nightmares. There are nice things implemented as a liquid layout engine (try resizing) and an Action design pattern (thanks to Carsten Müller for this one), editors and device views for almost everything controllable (don’t forget to try the modulations!). Together with Bram, we wired all that stuff together into an application with more than 800 classes and countless lines. Thanks to version control, I could still work in chilly Berlin, while they was making party in Barcelona ;)

Splice has some ass-kicking new features, that you never saw in your browser. Based on the famous audio hack we provide realtime synthesizer, realtime effect plugins, realtime time-stretching and what not. A lot of small helpers are integrated everywhere and the team is still posting the features in our blog. Give it a try and let us know.

A big Thank You for Extrajetzt in Berlin, who supplied the whole graphic design in actual no time! Guido and David did an awesome job here. And I thank Bram, Mikko, Antti, Amiee, Ingrid and the rest of the team for giving me support in wicked times.

related external entries
create digital music | artswom | brokenfunction | jvm-neckar

Speaking at Flash on the Beach 07

John Davey invited me today to speak at Flash on the Beach in Brighton. I am excited to join this amazing line-up, he put together this year. Still I will speak about dynamic audio programming with AS3, introducing some new examples made with Joa’s and my open-source package popforge. I will care about a good sound system! First time in UK…is it possible?


Flashforum Konferenz 2007 (Germany)

Wunderbar. Wie jedes Jahr freue ich mich auf die Flashforum Konferenz, diesmal in Kölle. Ich werde einen Vortrag über Dynamic Audio Programmierung halten, passend zum Launch unseres Open Source Projektes. Es gibt natürlich eine Menge mehr zu erzählen als letztes Jahr.

Vorschläge für Vorträge und Workshops könnte ihr hier anmelden.

Wir sehen uns!


Popforge Opensouce Project

Acronym POP

Joa Ebert and I started a new project to have a better organization of our open sources.

Popforge is an Actionscript 3 code sandbox started by Andre Michelle and Joa Ebert.
Not all of our projects made it to here. We have a lot in the pipe we want to share with the community but still want to assure high quality content. Currently you will find the audio library sources online.

Continue reading “Popforge Opensouce Project”

What the Flashbelt!

I am back in Germany – tired – but with a lot of memories of an awesome conference. I had a great time in Minneapolis and I felt welcome. All credits and a big thank you to Dave Schroeder, who has accomplished that. Everything ran so smoothly and he took great care of all of us. I hope you enjoyed my session – the feedback was great anyway. Hopefully to see you next year again!


Flashbelt around the corner

Only a few days left towards Flashbeltconference in Minneapolis. And still, we are heavily developing splicemusic – launch date is just around the corner! I will talk about audio programming in flex2, showing a lot of audio experiments and of course giving a depth inside view on the new version of splicemusic. In any case I am sure, that Flashbelt will be an outstanding conference and it is for me the first time visiting the states at all. I still wonder if they let me in…

see also mario’s post

Weird behavior of numbers in as3

My colleague Bram de Jong at splicemusic did some tests with number types in arrays to find out, if we can save memory somehow. However his findings are rather not expected that way. Numbers can loose their type in an irreproducible way.

So lets try:

trace( getQualifiedClassName( uint( 0 ) ) ); // int
trace( '28bits', getQualifiedClassName( uint( 0x0fffffff ) ) ); // int
trace( '29bits', getQualifiedClassName( uint( 0x1fffffff ) ) ); // Number

Above all check this:

			var num: uint;

			for( var i: int = 0 ; i < 64 ; i++ )
				num = 1 << i;

				trace( i, getQualifiedClassName( num ) );

From 0 to 27 it is int
From 28 to 31 it is Number
From 32 to 59 it is int (again)
From 60 to 63 it is Number (again)

The disadvantage of this is that Numbers are slower in computation as well as reading, writing in an Array. And however it doesn't make any sense at all. Bram has already sent a note to adobe. I'll keep you updated.

SimpleMouseEvents (onReleaseOutside, onDragOut,…)

Some of the most confronted issues in AS3 are the missing mouse events as onReleaseOutside, onDragOut, onDragOver and so on. I saw that question over all boards. While coding the TR909, I had the same problem and I tried to figure out a common solution. I wrote a wrapper class, which adds itself as a listener to the passed target object. It takes care of the fact, that the stage can be null (required for releaseOutside) and the stage focus. It also provides (if necessary) the trackAsMenu mode to receive onDragOut, onDragOver, if the target itself doesn’t have the focus.

source code + sample application

Flash sound issues on vista

I installed Windows Vista today and besides having problems getting familiar with the new look and locations of stuff, I found that the onSoundComplete event is completely out of time on any player I tested. So even in the standalone with the classic design it is really glitchy. Damm, this breaks my flow in programming audio stuff for flash. I am really thinking of getting back to XP for the time it isn’t fixed. I found this blog entry, but I do not have the sound card settings as him.

Any change to get some official notes on this?

Umz tzz Buzz tzz Umz tzz Buzz

Finally I found some time to start another dream project of mine. Remember 1984 where Roland released the TR-909 drum machine? Well, probably not, but I remember 1988, where the first tapes (remember, do ya?) from Detroit and Chicago arrived with some ass kicking beats. Truly, a lot of house and techno tracks to date are based on the sound of Rolands TR909.

More than 20 years later it is time to start X0X-emulation in flash. I just finished my first approach and too proud – I figured out the design on myself. The instruments from the emulation are all sample based. But the bassdrum and snaredrum have a special role. They are based on a very short waveform to provide the pitch envelope the original has. The snare drum noise is created by a noise algorithm I found somewhere and is modified by a highpass-filter. Actually to bring it more close to the original I need the original TR909 to analyse the sounds. My model was Rebirth and I think it sounds already different than the original.

Live should be enhanced in future. I would like to add a SH-101, MC-202 or a TB-303, also produced by Roland even earlier than the TR909. And of course, this could be an endless game with recording parameter modulation and so on. But we are still developing Splicemusic, where I hope to embed the emulation as a plugin.

You should read the instruction. There are some hints using the shift-key in certain situation and how the memory works. Though I know, the pixel font is hard to read. Not much text anyway.

Wait I forgot something important to say… It is great!!! I love it! ;)

update: digg it!


Lack of information about Flex Compiler

Maybe I should calm down a bit, but it is really annoying not to find any adequate resources about flex compiler arguments or even how flex actually works. This time I wonder, if I am able to write compiler arguments into an Application class (like the SWF tag). Otherwise if I want to export a project with slightly different export settings, I had to create a new projects with slightly different compiler arguments and link the source folder to them. What a mess in my workspace!

Please Adobe:
Create more documents on the compiler settings and show AS3 examples as well. MXML is a pain to read.

Generate Accessible SWF does not generate a SWF

I am trying for hours to tell Flex, that I need an accessible SWF of my Flex-Library(There is a checkbox in the Actionscript Compiler options panel). But I only get a SWC file. So what is the deal ? Is there no solution to load a Flex Library at runtime without creating a new Project, where I merge the library into code ? The background is, that I want to exclude various classes with dependencies from my current project and export them into one SWF (without dependent classes) and load them in runtime. I want a simple solution without having XML exclude files or similar attacks on the compiler.

Joa pointed out, that the SWC is actually just a ZIP-file, where the SWF and a XML is included. So I tried to load the unpacked SWF and it seems to be possible, but no Event.COMPLETE or Event.INIT is fired. Now the magic: If I try to get my class after a setTimeout (to be sure the SWF is loaded), I effectively get the class. Furthermore both Events are fired after using getDefinition. How weird is that?

Any suggestions are welcome.

Here were my lovely code (as an Application class) to create a SWF with just one class (unfortunately not possible).

	import flash.display.Sprite;

	[Compiler(include com.domain.package.ClassName)]

	public class LoaderSatisfier extends Sprite
		public function LoaderSatisfier()

The goal were to have an Application class with some Meta-Tags to keep all classes except the certain classes from export into the SWF. What a timesaver!

FDT 3.0 finally announced!

Finally finally finally! No more annoying flex bugs! Powerflasher announces their fabulous tool FDT for Actionscript 3.0. I cannot count the days, I wait for this announcement. I really repressed my aversion about flex 2.0. It is killing my workflow almost every day and has no nice helping functionality for fast development as FDT. Furthermore it is buggy and hence overpriced.

But to be honest at this point: I also don’t like Eclipse. It isn’t very intuitive and sucks a lot of performance and memory. I actually don’t know why it is so popular. Maybe it is the only tool which is so expandable.

Remember: FDT 1.5 provides runtime-error-checking of your code, organize your imports over the whole project and has some really nice quick fixes. It actually writes a lot of your basic code. As far as I know the Powerflasher development team – they won’t abdicate any of these features and I am curious, what else they will bring into account in FDT 3.0 besides AS3 support.

Greetings to Nico, Carlo and the rest of the team.

more information | via Jens Franke

Speaking at FlashBelt and Flashconference

I’m happy to announce a new session at Flashbelt in Minneapolis about audio programming with AS3 on June, 18-20 2007. I’m looking forward to meet again some well known flashcoders as Mario Klingelmann, Jared Tarbell and of course the rest of the speakers I haven’t met before.
My session is explaining the idea of digital audio covering several aspects of sound synthesis and their history, including experimental sound creation in Flash9 – and I hope – some nice insights of (should be launched then as well).

There is also as every year at the fmx in Stuttgart in Germany on May, 4th the flashconference, where I talk about audio programming as well. Damm – it’s my birthday :)
However this time all sessions at the flashconference are hold in english!

flashfisix released

ozmic66 (flashkit username) releases the long expected physics engine Fisix.

The Fisix Engine is a 2D verlet physics engine for Flash. It is written completely in AS3 in order to make use of flash player 9’s improved cpu capabilities. Although Flash is still slower than platforms such as c/c++, or java, which means that you most likely won’t be able to make the next Half-Life in flash, it doesn’t mean you can’t do really cool stuff with 2D particles, constraints, rigid bodies, etc. and make great looking games and simulations.

Also open source but undocumented: {popshapes} & {revive} on my lab.