Officially Temporary Closed

Over the last months I was watching myself surfing to my own blog hoping that I have written something new. I have not. The last months were filled with a lot of work in serving new technologies. Joa did quite a job on moving Audiotool to various platforms and there was not much time for new experiments or research. Besides providing general information and conference dates – talking about new stuff was the actual reason for this blog. However moving to new technologies means rewriting existing code to other languages. I could talk about the current situation as a developer. It might not be the easiest time, but even it was easy to target the only reasonable platform Flash in the past, the new options and possibilities are very promising.

To make it short: I’ll be back – probably in a different format than a blog.

And still there are Twitter, Facebook, Google+ and Audiotool for your entertainment.

Thanks for reading since 2005!

SoundSheets in Tonfall

I have uploaded a very rough demo of sound-sheets in Tonfall. The idea is to bring real instruments to Tonfall by using samples remaining a reasonable file size.
Usually you might think a single pitched sample can do the job, however pitching a sample one octave already means doubling the speed. It would sound very unnatural.
I decided to take 11 samples with a difference of 6 halftones (covering ~5 octaves). Hence the maximal speed difference (when the note is inside the provided range) is 25%. There is still space for improvements. The duration of each sample is fixed and needs to be small to respect the file-size. By looping a proper range of the samples after a certain attack duration, enough to maintain the characteristic of the instrument, it should reduce file-size again and sound better. However this will then implemented into Audiotool.

I’ve updated the DemoSuperMario to run SoundSheets. The synth is decoding MP3 in runtime. Samples are taking from Reason. Could be better…

Get Adobe Flash player

Listen to the piano.mp3 to get an idea how it works.

When I was 25

Before I started programming in 1998, I was completely into electronic dance music (formerly called Techno). I produced hours of tracks stored on digital audio tapes. Few weeks ago I bought a DAT-Player on ebay and now I am traveling back into the years 1995-1997. Most productions are just crap. Two tracks caught my attention though, since they were on an unlabeled DAT. I guess they must be from 1997. At least they sound like that time. Still like them, so I uploaded them on SoundCloud.

Click
DAT 1997

Construction of a Steiner Chain

The Steiner chain is a set of circles inside an outer circle, where all circles are touching their neighbor in a single point. Naturally the first version within Flash is already made by Mario Klingemann in 2002 to create some nice artwork. He also has a AS3 version in his libs.

My version is rather optimized for runtime purpose, does not create objects in runtime.

Press UP/DOWN to add/remove circles to the steiner chain.
Press RIGHT/LEFT to adjust the rotation speed.
Ensure keyboard focus (Click once in the Flash movie)

View this page in Romanian by courtesy of azoft.

Get Adobe Flash player

More references
Wiki | Wolfram

Download

Tonfall WAV-IO

Tonfall has a new feature called WAV-IO. It reads and writes audio data in wav-format.

Decoding a WAV results in the flash.media.Sound data format 44.1Khz,Stereo,32bit (float).
You can play it with the dynamic Sound API. Encoding can be done by simply passing the data you created in SAMPLE_DATA_EVENT to the encoder after specifying the target wav-format. You have to finalize the encoder after writing. Both processes are on the fly – processing block by block. They do not have to be processed in a single Flashplayer frame time.
Continue reading “Tonfall WAV-IO”

Phase Modulation

After having Tonfall released, I think it might be a good idea to go a bit deeper into some audio-dsp subjects. The easiest way to create a sound is by creating a wave out of an algorithm. You usually take a normalized variable between zero and one as the phase and pass it to a function. The phase itself must be incremented every sample by the following expression.

phase += frequency / samplingRate;
phase -= int( phase ); // [0,1]

amplitude = waveshaper( phase ); // [-1,+1]

Continue reading “Phase Modulation”

Drawing circles with Pixelbender

I am not sure, if this makes any sense at all, but if you ever need to draw antialiased circles in Pixelbender, here is a quite simple solution. I had the idea after watching Mario Klingemanns and Ralph Hauwerts sessions at Flash on the Beach. They were talking about the bad idea of using conditions like if/else in Pixelbender shaders. So this solution runs without any branches and makes just use of built-in functions min/max.
Continue reading “Drawing circles with Pixelbender”

Tonfall – Open Source Audio Framework

Tonfall is an opensource audio framework for Actionscript I have written for the Audio Code Clash Workshop at Flash on the beach to provide an entry point for the attendees on that subject.

Tonfall is not meant to be a fully implemented audio engine but you may learn a lot about signal processing and sequencing in common. It covers most questions I am receiving by email and is not that far away from the audio engine we use in Audiotool.

Features

  • Holding a list of processors and time information
  • SignalProcessor for audio generation taking TimeEvents (like notes) into account
  • Design Pattern to process polyphonic audio generation (e.g. synthesizer)
  • Static Delay as a template for other effects
  • Note to frequency mapping
  • WavFile Encoder
  • Samples of the Casio RZ1 drumcomputer
  • AmenBreak sample
  • Super Mario playing Sequencer
  • Fully launchable Metronome (Hello World of Audio DSP)
  • Simple implementation of ToneMatrix

Tonfall is built with FDT 4.0, which I highly recommended. I checked-in the project files as well to let you compile right away.

I also highly recommend to check out Justin Windle‘s AS3 Particle Node Sequencer, which is based on Tonfall and a very nice implementation of what you can do with it. Thanks again Justin!

FITC 2010 San Francisco

This years amazing Flashbelt 2010 has just ended and the next great conference is appearing at the horizon. FITC 2010 is landing in San Francisco in August and according to its schedule it will be an outstanding one. I am personally looking forward to meet Yugo Nakamura in person, the guy that makes me actually starting with Flash more than 10 years ago.

My session this time is called Pulsatile Crackle and will combine audio synthesis with physic simulations. And of course I give you a quick overview of what our cute baby Audiotool is already capable of. Never forget: Audio is the next big thing in Flash

Early bird price for this event ends Friday July 2nd, so get your tickets NOW. and use the code ‘andre-michelle’ for an extra 10% off!

Flashbelt 2010 coming soon!

One of my favorite conferences is just 5 weeks away and I am already excited to travel to Minneapolis for the fourth time. Dave Schroeder is always a very caring host, which makes Flashbelt a very social and special conference. I especially look forward to the parties where I suppose Keston Westdal to make live – music at one evening. They are amazing!

If you don’t have your ticket yet and are able to take a trip to Minneapolis, do not hesitate!

Visit Flashbelt.com

Flash on the Beach – Audio Workshop Sold Out!

John told me today that my workshop Audio Code Clash is already sold out! Great!

This will be some conference and I will also have my session Pulsatile Crackle!
I am really excited about all this. If you don’t have tickets yet, go sack them quickly. I am pretty sure, that they are leaving John’s hands right away.

Also, John was asking me how I find myself being Marilynized.
Ah! That’s it! Marilynized! Hell yes, I like that ;) That’s what makes FOTB so special, right?

Audiotool 1.0 (sound preview)

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.

Audiotool – Audio Performance Test by André Michelle

Check out joa’s as well…

ZwanzigZehn – TwentyTen

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,..).

Thanks to:
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.

AS3 Failure?

Intro
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.
Continue reading “AS3 Failure?”

Pitch MP3

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

{source code}
Continue reading “Pitch MP3”

Flash on tap, Flashbelt and a tiny insight of the states

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!
Continue reading “Flash on tap, Flashbelt and a tiny insight of the states”

Eclipse plugins you need

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.

MetaLaunch (free)
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.

Trip to the states Flash on Tap & Flashbelt

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.

FFK09 Karplus Strong Sources

As promised here are the sources from the 10 Hot Minutes session, where I presented a very simple Karplus-Strong algorithm implementation.

More sources from the session Boing Bumm Tschak can be downloaded here.

Endless Karplus Strong – Click to feed noise:

Get Adobe Flash player

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.

Andre & Mario

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!

Update
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.

Rock’N’Roll

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!

Schedule

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

Location

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.

Solution
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…

Update
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)”

130bpm

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.

Share:
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.

Flashbelt08

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 http://www.make-some-noise.info.

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

History
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”

sMACs sMACs sMAC!

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.

Rock’N’Roll!

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 code.google.com 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”