Ongoing process

_
Test movie


Sound visualization _fluid from koosi_lab on Vimeo.

There are still some issues about noise echo and getting sound input.
The input only works when the sound really loud but loud sound gives noise echo.
it's like looping problem.
And i don't know why the video get noises when it gets high level.
Plus, I think the movie should be more dynamic(rotation maybe?) and bigger.


_
Concept

Melting / Fluid / Flexible

this is an experimental test for the concept
I made a fluid movie in Maya and time displacement(slit scanning) effect in After effect.


fluid from koosi_lab on Vimeo.


_
Process







I made a movie in Maya.
I used sphere surface and lattice to make a distortion which gives a feeling of melting or fluid.
then, appied a texture has transparency that shows backside which has more depth.
I can change the pattern whatever i want.

I don't know why the time displacement didn't work well in this video so i didn't use it. Maybe it's because of color..?


_
Interaction

Sound level controls the frames and opacity.


Because I couldn't know about Quartz composer well, I couldn't control images as much as I want.
so I decided to change into Flash and movie.

First of all, I need to connect to sound and Flash,

Microphone in Flash
http://help.adobe.com/ko_KR/AS3LCR/Flash_10.0/flash/media/Microphone.html

_
Action Script

import flash.events.ActivityEvent;
import flash.events.StatusEvent;
import flash.media.Microphone;
this.addEventListener(Event.ENTER_FRAME, showScene);
function showScene(event:Event) {
 trace(mic.activityLevel);
 //show current frame in text
 var cframe=mc.totalFrames/100*mic.activityLevel;
 lev.text=String(cframe);
 lev.x=850+int(Math.random()*100); //shaking text
 lev.y=50;

 //movieclip show - frame controlled by sound level
 mc.gotoAndPlay(cframe);
 mc.alpha=mic.activityLevel; //movieclip opacity - no input no image
}

var deviceArray:Array=Microphone.names;
trace("Available sound input devices:");
for (var i:int = 0; i < deviceArray.length; i++) {
 trace(" " + deviceArray[i]);
}
var mic:Microphone=Microphone.getMicrophone();
mic.gain=50;// volume controls, default=50
mic.rate=11; //speed kHz
mic.setUseEchoSuppression(true); //remove noise
mic.setLoopBack(true); // speaker out
mic.setSilenceLevel(0, 1000); //(minimum input sound, delay time)
mic.addEventListener(ActivityEvent.ACTIVITY, this.onMicActivity);
mic.addEventListener(StatusEvent.STATUS, this.onMicStatus);
var micDetails:String="Sound input device name: "+mic.name+'\n';
micDetails+="Gain: "+mic.gain+'\n';
micDetails+="Rate: "+mic.rate+" kHz"+'\n';
micDetails+="Muted: "+mic.muted+'\n';
micDetails+="Silence level: "+mic.silenceLevel+'\n';
micDetails+="Silence timeout: "+mic.silenceTimeout+'\n';
micDetails+="Echo suppression: "+mic.useEchoSuppression+'\n';
trace(micDetails);
function onMicActivity(event:ActivityEvent):void {
 trace("activating=" + event.activating + ", activityLevel=" +
         mic.activityLevel);
}
function onMicStatus(event:StatusEvent):void {
 trace("status: level=" + event.level + ", code=" + event.code);
}