import android.media.AudioTrack;
import android.media.AudioFormat;
import android.media.AudioManager;

import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

AudioTrack audioTrack;
int sr = 44100;
int buffsize = 8820;
double t=0.0;
Piano piano;
    private short[] puffer;
    private short[] puffer2;

int GESCHRIEBEN = 0;
String ERR="";
    /**
    *    Achtung: Saplerate ist 44100Hz, 16 Bit, Stereo.<br/>
    *    Die BYTEPUFFERGROESSE ist viermal so groß, wie double[] left bzw. double[] right in 
    *    AudioSource, bzw. Audioout.<br/>
    *    Also wenn left.length==1000 ist, ist BYTEPUFFERGROESSE=4000. <br/>
    *    Damit hier kein Fehler passiert, reicht Audioout einfach AudioSource weiter und
    *    left.length wird hier ausgelesen.<br/>
    */
public void setup()
{
   orientation(LANDSCAPE);
        puffer = new short[buffsize*2]; //4 Byte pro Sample == 16Bit Stereo  //2 * bei short
    println(buffsize);
  
//   buffsize = AudioTrack.getMinBufferSize(sr, AudioFormat.CHANNEL_OUT_STEREO,AudioFormat.ENCODING_PCM_16BIT);
   buffsize = 8820;
   
        try
        {
            audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, sr, 
                                    AudioFormat.CHANNEL_OUT_STEREO, 
                                    AudioFormat.ENCODING_PCM_16BIT, 
                                    buffsize*4, 
                                    AudioTrack.MODE_STREAM);
            audioTrack.setStereoVolume(1.0f, 1.0f);
            audioTrack.play();
            piano = new Piano();
        }
        catch(Exception ee)
        {
            System.out.println("FEHLER: "+ee);
            ERR=ee.toString();
        }
        
        //puffer = new byte[PUFFERGROESSE*4]; //4 Byte pro Sample == 16Bit Stereo 
        //11050...
        //puffer = new byte[buffsize*4]; //4 Byte pro Sample == 16Bit Stereo  //2 * bei short
        
    
}

public void draw()
{
    clear();
    background(255);
    stroke(0);
    fill(0);
    textSize(32);
    text("buffsize:"+buffsize+"\ngeschrieben="+GESCHRIEBEN+"\nERR="+ERR,100,100); 
}
