JSoundCard - Minimalist way to sync and create speaker microphone interactions

  • 1 Replies
  • 2684 Views
*

Ben.F.Rayfield

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

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;
}

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

*

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 !

 


Self similar structures
by frankinstien (General Chat)
Today at 05:35:53 am
So what if...
by chattable (General AI Discussion)
December 07, 2021, 10:16:30 pm
What's everyone up to ?
by ivan.moony (General Chat)
December 07, 2021, 04:15:34 am
I want one!
by frankinstien (General Chat)
December 03, 2021, 06:57:48 pm
Pattern based NLP
by MikeB (General Project Discussion)
December 03, 2021, 11:19:32 am
New cryopreservation method is much better
by LOCKSUIT (General Chat)
December 02, 2021, 11:42:58 am
Artificial God?
by MagnusWootton (General AI Discussion)
December 01, 2021, 07:02:41 pm
Project Acuitas
by WriterOfMinds (General Project Discussion)
November 29, 2021, 05:31:57 am

Users Online

42 Guests, 0 Users

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

Articles