Warning: session_start(): open(/var/lib/php/sessions/sess_u5uln5vjabtukpl6d0m6flsmsp, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
static playAudioFromSampleMakingFunction_AudioLoop playAudioFromSampleMakingFunction(int bufSize, VF1 sampleMaker) {
playAudioFromSampleMakingFunction_AudioLoop loop = new(bufSize, sampleMaker);
loop.start();
ret loop;
}
sclass playAudioFromSampleMakingFunction_AudioLoop extends Thread implements AutoCloseable {
SourceDataLine out;
new Flag stopFlag;
byte[] buf;
VF1 sampleMaker;
*(int bufSize, VF1 *sampleMaker) {
out = javaSound_outputLine(javaSound_cdQuality(), bufSize);
buf = new byte[bufSize];
}
public void start { out.start°; super.start°; }
void stopPlaying { // "stop()" was taken
if (stopFlag.isUp()) ret;
stopFlag.raise°; out.close°;
print("Audio output loop stopped.");
}
public void close { stopPlaying(); }
public void run° {
print("Audio output loop started. Buffer size=" + l(buf) + " (" + iround(l(buf)/44100.0/4*1000) + " ms)");
double[] pair = new double[2];
while (licensed() && !stopFlag.isUp()) {
for (int i = 0; i < l(buf); i += 4) {
sampleMaker.get(pair);
short l = clipShort(pair[0]);
short r = clipShort(pair[1]);
buf[i] = (byte) l;
buf[i+1] = (byte) (l >> 8);
buf[i+2] = (byte) r;
buf[i+3] = (byte) (r >> 8);
}
//print("Writing " + l(buf) + " bytes");
int n = out.write(buf, 0, l(buf));
if (n != l(buf)) print("huh: " + n + " of " + l(buf));
}
}
}