JSoundCard - Minimalist way to sync and create speaker microphone interactions

  • 1 Replies


  • Bumblebee
  • **
  • 38
This example code is included in 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.

/** 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;

« Last Edit: February 13, 2014, 01:20:29 pm by Freddy »



  • Administrator
  • **********************
  • Colossus
  • *
  • 6832
  • Mostly Harmless
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 !


Users Online

104 Guests, 0 Users

Most Online Today: 123. Most Online Ever: 2369 (November 21, 2020, 04:08:13 pm)