Wednesday, December 15, 2010

Acoustic Echo Cancellation support for Flash Player

If you ever developed a Flash application with live audio/video communication you probably ran into trouble with acoustic echo/feedback.
The flash.media.useEchoSuppression property doesn't solve the problem Flash Player had no AEC support.
Maybe you tried some workarounds but faced the requirement that the user had to use a headset for a good experience.

Please read my latest post about the current implementation of the AEC feature.

Fortunately AEC support will be part of a Flash Player version in 2011.
MicrophoneEnhancedOptions and MicrophoneEnhancedMode are not included in the current beta version of the Flash Player (10.2) but according to this Jira ticket from the Adobe Flash Player Bug and Issue Management System this feature is developed and will be part of an upcoming player version in 2011.

The code, when both speaker and microphone are used simultaneously, might look like this:

...
import flash.media.Microphone;
import flash.media.MicrophoneEnhancedMode;
import flash.media.MicrophoneEnhancedOptions;
import flash.media.SoundCodec;
...
var microphone:Microphone = Microphone.getEnhancedMicrophone(deviceIndex);
microphone.codec = SoundCodec.SPEEX;
var enhancedOptions = new MicrophoneEnhancedOptions();
enhancedOptions.mode = MicrophoneEnhancedMode.FULL_DUPLEX;
microphone.enhancedOptions = enhancedOptions;
...

Example chat room using Red5 and Adobe Cirrus aka Stratus rendezvous service, i created for a small ActionScript 3 VideoChatAPI in February 2009.
I developed it for a collaboration software of Dorian. It's using the direct RTMFP peer to peer connection feature of Flash Player 10, the 10.1 multicast feature is not suitable in this case.

Wednesday, November 24, 2010

Skoda Fabia RS WebRallye - Augmented Reality

After an educational and sports focused summer break I developed an Augmented Reality game for a client in Hamburg. The task was to create an unusual test drive for the new Skoda Fabia rallye sports model.

The main focus was to implement the design and navigation specifications in conjunction with the effort of level design, runtime and bandwidth performance.
To enable the favoured appearance and ability to design the levels I developed an extensible bitmap render engine. This task was easy to perform because I worked a lot with 3d engines and particle systems before.
Due to the main goal to enable navigating the car with a virtual steering wheel, printed on paper, I used the FLARToolKit, a ported version of the ARToolKit. Even though this is the fastest way to implement this feature, it took a lot of time to adjust the desired behaviours. Fortunately we won the FWA 'Site of the Day' award.

An additional, meanwhile standard feature was to enable a personalised facebook wall integration via user image and achieved result.

Project

Client

PureMVC, FLARToolKit

Tuesday, November 23, 2010

ZELLULOID - FILM OHNE KAMERA

This summer I had the chance to work on an exciting project for Scholz&Volkmer again. While Vincent Rebers focused on the live installation and multiuser drawing tool I took the load off from him by developing the rest of the microsite. We not only had a great time, it's also honored by the Bronze DMMA-OnlineStar in the category Microsites.

An integrated, viral campaign related to the “CELLULOID. Cameraless film“ exhibition at Schirn art gallery.

"Your artwork at the Schirn!": With a multiuser realtime drawing application the visitors design their own artwork and publish it both on the Website and on a live installation as part of the art exhibition.

All visitors and users can take part in the exhibition at the art gallery and present one of their own artwork next to other great artists.

Project

Client

Flash Media Interactive Server

Thursday, April 15, 2010

MXML without Flex

Yesterday while working in Paris a co-worker seamed to be a bit surprised that it's possible to use MXML whithout extensive dependencies on the Adobe Flex Framework. So I made a tiny example app. Of course it's smaller than 20kb.

Surprisingly most people are more interested in using the component framework without MXML than the oposite. Maybe they haven't mentioned the advantages of declarative language features in the right development environment for tasks like composition, skinning and configuration. Don't get me wrong - most of the things I'm developing are programmed in Actionscript!

In this case the [DefaultProperty] and [ArrayElementType] Metatags are essential. Just have a look!

source


The next step is to focus a bit more on the Databinding feature.

source

In a real world application no one would use a code block inside of his MXML file by choice. Instead of this e.g. a Presentation Model or Presenter Pattern can be applied.

If you use the additional compiler argument -keep you will mention that several classes of the mx.core.* and mx.bindings.* package are imported in the generated code. but hey! do we really care about this hand full of kb?