!7 // Original source: AudioLoop from jsresources.org static int DEFAULT_INTERNAL_BUFSIZ = 40960, DEFAULT_EXTERNAL_BUFSIZ = 40960; p { new AudioLoop(javaSound_cdQuality(), DEFAULT_INTERNAL_BUFSIZ, DEFAULT_EXTERNAL_BUFSIZ).start(); } sclass AudioLoop extends Thread { TargetDataLine in; SourceDataLine out; new Flag stopFlag; int externalBufferSize; byte[] buf; *(AudioFormat format, int internalBufferSize, int *externalBufferSize) { out = javaSound_outputLine(format, internalBufferSize); buf = new byte[internalBufferSize]; } public void start { out.start°; super.start°; } void stopPlaying { out.close°; stopFlag.raise°; } // "stop()" was taken long count; double nextSample() { ret Math.sin(count++/44100.0*440*2*pi())*0.5; } public void run° { while (licensed() && !stopFlag.isUp()) { for (int i = 0; i < l(buf); i += 4) { double f = nextSample(); int x = iround(max(0, min(1, f))*32767); buf[i] = buf[i+2] = (byte) x; buf[i+1] = buf[i+3] = (byte) (x >> 8); } print("Writing " + l(buf) + " bytes"); int n = out.write(buf, 0, l(buf)); if (n != l(buf)) print("huh: " + n + " of " + l(buf)); } } }