Ai Dreams Forum

Software & Hardware => Sound Software => Topic started by: Ben.F.Rayfield on February 13, 2014, 03:10:25 am

Title: JSoundCard - Minimalist way to sync and create speaker microphone interactions
Post by: Ben.F.Rayfield on February 13, 2014, 03:10:25 am
This example code is included in http://sourceforge.net/projects/jsoundcard (http://sourceforge.net/projects/jsoundcard) version 0.4 (open source) which is a Jar file you double click and it demonstrates a feedback loop between speakers and microphone that doesnt get too quiet or loud. It adjusts so whatever it hears echos in an interesting converging way and you can really hear how it stabilizes.

I suggest using it with my GigaLineCompile and Audivolv softwares to define new musical instruments you play with the mouse, but by design JSoundCard is minimalist and you can write interactive audio effects with it alone.

Code
/** Ben F Rayfield offers JSoundCard under Apache 2, GNU LGPL, and/or Classpath Exception. */
package jsoundcard.example;
import jsoundcard.*;

public class ExampleSoundFuncAmplifyMicrophoneOn2Speakers implements SoundFunc{

double volume = .7;

//double averageAbsValMicrophoneAmplitude = .5;

double maxMicrophoneAmplitude = 1;

public int frameSize(){ return 3; }

//int frames=0;

public void readWriteFrame(double frame[]){
double microphoneAmplitude = frame[2];
int estimatedFramesPerSecond = 44100;
//if(frames++ % estimatedFramesPerSecond == 0) JSoundCard.log("microphoneAmplitude="+microphoneAmplitude);
double decaySeconds = .1;
double decay = 1/(estimatedFramesPerSecond*decaySeconds);
//averageAbsValMicrophoneAmplitude = averageAbsValMicrophoneAmplitude*(1-decay)
// + decay*Math.abs(microphoneAmplitude);
maxMicrophoneAmplitude = Math.max(maxMicrophoneAmplitude, microphoneAmplitude);
maxMicrophoneAmplitude = maxMicrophoneAmplitude*(1-decay);
frame[0] = microphoneAmplitude/maxMicrophoneAmplitude * volume;
frame[1] = microphoneAmplitude/maxMicrophoneAmplitude * volume;
}

}
Title: Re: JSoundCard - Minimalist way to sync and create speaker microphone interactions
Post by: Freddy on February 13, 2014, 01:22:56 pm
Hi Ben, welcome to Ai Dreams  :)

Thanks for your posts, I'll take some time to have read.

I just wanted to mention that if you post code, it works better if you surround the code with the code tag.

Just highlight your code and click on the # button when you are making your post. That will surround it with the [code][/code] tags and will show up as above (I edited your post). It also makes it easier to select the code to copy paste it.

Thanks !