@Override public void run () { final float frequency = 440; float increment = (float)(2 * Math.PI) * frequency / 44100; // angular increment for each sample float angle = 0; float samples[] = new float[1024]; while (!stop) { for (int i = 0; i < samples.length; i += 2) { samples[i] = 0.5f * (float)Math.sin(angle); samples[i + 1] = 2 * samples[i]; angle += increment; } device.writeSamples(samples, 0, samples.length); } device.dispose(); } });
@Override public void run () { while (true) { recorder.read(samples, 0, samples.length); device.writeSamples(samples, 0, samples.length); } } });
@Override public void pause () { device.dispose(); recorder.dispose(); }
public void open() { if(ad != null) { close(); } System.out.println("DEVICE OUTPUT: opening..."); int freq = World.freq; ad = Gdx.audio.newAudioDevice(freq, true); int lat = ad.getLatency(); System.out.println( "AudioDevice latency=" + lat + "samp/" + (1000 * lat / (float)freq) + " ms " + " freq=" + freq + " mono=" + ad.isMono() ); }
public boolean write(float []buffer, int offset, int size) { try { ad.writeSamples(buffer, 0, size); return true; } catch(Exception e) { System.err.println("ERROR " + e); return false; } }
public void close() { if(ad != null) { System.out.println("DEVICE OUTPUT: closing..."); ad.dispose(); ad = null; } } }