53 lines
1.2 KiB
Haxe
53 lines
1.2 KiB
Haxe
package kha.audio2;
|
|
|
|
import kha.Sound;
|
|
import kha.internal.IntBox;
|
|
|
|
class Audio {
|
|
public static var disableGcInteractions = false;
|
|
static var intBox: IntBox = new IntBox(0);
|
|
static var buffer: Buffer;
|
|
|
|
public static function _init() {
|
|
var bufferSize = 1024 * 2;
|
|
buffer = new Buffer(bufferSize * 4, 2, samplesPerSecond);
|
|
}
|
|
|
|
public static function _callCallback(samples: Int): Void {
|
|
if (buffer == null)
|
|
return;
|
|
if (audioCallback != null) {
|
|
intBox.value = samples;
|
|
audioCallback(intBox, buffer);
|
|
}
|
|
else {
|
|
for (i in 0...samples) {
|
|
buffer.data.set(buffer.writeLocation, 0);
|
|
buffer.writeLocation += 1;
|
|
if (buffer.writeLocation >= buffer.size) {
|
|
buffer.writeLocation = 0;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public static function _readSample(): FastFloat {
|
|
if (buffer == null)
|
|
return 0;
|
|
var value: FastFloat = buffer.data.get(buffer.readLocation);
|
|
++buffer.readLocation;
|
|
if (buffer.readLocation >= buffer.size) {
|
|
buffer.readLocation = 0;
|
|
}
|
|
return value;
|
|
}
|
|
|
|
public static var samplesPerSecond: Int;
|
|
|
|
public static var audioCallback: IntBox->Buffer->Void;
|
|
|
|
public static function stream(sound: Sound, loop: Bool = false): kha.audio1.AudioChannel {
|
|
return null;
|
|
}
|
|
}
|