diff --git a/.idea/artifacts/TerrarumBuild.xml b/.idea/artifacts/TerrarumBuild.xml
index dfed15033..a83413779 100644
--- a/.idea/artifacts/TerrarumBuild.xml
+++ b/.idea/artifacts/TerrarumBuild.xml
@@ -13,80 +13,84 @@
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ModuleComputers/ModuleComputers.iml b/ModuleComputers/ModuleComputers.iml
index b6f9df865..bf956ac44 100644
--- a/ModuleComputers/ModuleComputers.iml
+++ b/ModuleComputers/ModuleComputers.iml
@@ -17,5 +17,6 @@
+
\ No newline at end of file
diff --git a/TerrarumBuild.iml b/TerrarumBuild.iml
index 1e2b58a3f..7dc4c4a4e 100644
--- a/TerrarumBuild.iml
+++ b/TerrarumBuild.iml
@@ -26,5 +26,6 @@
+
\ No newline at end of file
diff --git a/lib/annotations-23.0.0-javadoc.jar b/lib/annotations-23.0.0-javadoc.jar
new file mode 100644
index 000000000..a6bbdedff
--- /dev/null
+++ b/lib/annotations-23.0.0-javadoc.jar
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:631038d3c232e65f0f427885c397a9ea13a368b2e67a2748d6f874781cb884a2
+size 533632
diff --git a/lib/annotations-23.0.0.jar b/lib/annotations-23.0.0.jar
new file mode 100644
index 000000000..45d92b051
--- /dev/null
+++ b/lib/annotations-23.0.0.jar
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7b0f19724082cbfcbc66e5abea2b9bc92cf08a1ea11e191933ed43801eb3cd05
+size 29371
diff --git a/lib/kotlin-stdlib-1.8.20-javadoc.jar b/lib/kotlin-stdlib-1.8.20-javadoc.jar
new file mode 100644
index 000000000..7962e222d
--- /dev/null
+++ b/lib/kotlin-stdlib-1.8.20-javadoc.jar
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:69e1a62e5752ca3f43fb1607f161379bbe88b64af89c1a543c126160adf7cc53
+size 261
diff --git a/lib/kotlin-stdlib-1.8.20.jar b/lib/kotlin-stdlib-1.8.20.jar
new file mode 100644
index 000000000..72355b4b4
--- /dev/null
+++ b/lib/kotlin-stdlib-1.8.20.jar
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4395647b1961d9fb730a34e8dbe56c293157bc0759004cca63d9b5ee6653e5c7
+size 1670469
diff --git a/lib/kotlin-stdlib-common-1.8.20-javadoc.jar b/lib/kotlin-stdlib-common-1.8.20-javadoc.jar
new file mode 100644
index 000000000..7962e222d
--- /dev/null
+++ b/lib/kotlin-stdlib-common-1.8.20-javadoc.jar
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:69e1a62e5752ca3f43fb1607f161379bbe88b64af89c1a543c126160adf7cc53
+size 261
diff --git a/lib/kotlin-stdlib-common-1.8.20.jar b/lib/kotlin-stdlib-common-1.8.20.jar
new file mode 100644
index 000000000..be95678a1
--- /dev/null
+++ b/lib/kotlin-stdlib-common-1.8.20.jar
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fa20188abaa8ecf1d0035e93a969b071f10e45a1c8378c314521eade73f75fd5
+size 221491
diff --git a/lib/kotlin-stdlib-jdk7-1.8.20-javadoc.jar b/lib/kotlin-stdlib-jdk7-1.8.20-javadoc.jar
new file mode 100644
index 000000000..7962e222d
--- /dev/null
+++ b/lib/kotlin-stdlib-jdk7-1.8.20-javadoc.jar
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:69e1a62e5752ca3f43fb1607f161379bbe88b64af89c1a543c126160adf7cc53
+size 261
diff --git a/lib/kotlin-stdlib-jdk7-1.8.20.jar b/lib/kotlin-stdlib-jdk7-1.8.20.jar
new file mode 100644
index 000000000..605282774
--- /dev/null
+++ b/lib/kotlin-stdlib-jdk7-1.8.20.jar
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:af1ec40c3b951afdcc0c2a0173c7b81763c5281c2d5bafbf0a8544a24c5dcc0c
+size 963
diff --git a/lib/kotlin-stdlib-jdk8-1.8.20-javadoc.jar b/lib/kotlin-stdlib-jdk8-1.8.20-javadoc.jar
new file mode 100644
index 000000000..7962e222d
--- /dev/null
+++ b/lib/kotlin-stdlib-jdk8-1.8.20-javadoc.jar
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:69e1a62e5752ca3f43fb1607f161379bbe88b64af89c1a543c126160adf7cc53
+size 261
diff --git a/lib/kotlin-stdlib-jdk8-1.8.20.jar b/lib/kotlin-stdlib-jdk8-1.8.20.jar
new file mode 100644
index 000000000..92844be07
--- /dev/null
+++ b/lib/kotlin-stdlib-jdk8-1.8.20.jar
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e398b67977622718bf18ff99b739c7d9da060f33fb458a2e25203221c16af010
+size 969
diff --git a/lib/kotlinx-coroutines-core-1.7.3.jar b/lib/kotlinx-coroutines-core-1.7.3.jar
new file mode 100644
index 000000000..374a3c387
--- /dev/null
+++ b/lib/kotlinx-coroutines-core-1.7.3.jar
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f9522095aedcc2a6ab32c7484061ea698352c71be1390adb403b59aa48a38fdc
+size 87702
diff --git a/lib/kotlinx-coroutines-core-jvm-1.7.3-javadoc.jar b/lib/kotlinx-coroutines-core-jvm-1.7.3-javadoc.jar
new file mode 100644
index 000000000..25540b84c
--- /dev/null
+++ b/lib/kotlinx-coroutines-core-jvm-1.7.3-javadoc.jar
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6f4da9bdaa66e05b11baed1e3c49725756693e09c1b373f476c5262a45992b86
+size 261
diff --git a/lib/kotlinx-coroutines-core-jvm-1.7.3.jar b/lib/kotlinx-coroutines-core-jvm-1.7.3.jar
new file mode 100644
index 000000000..d0262d920
--- /dev/null
+++ b/lib/kotlinx-coroutines-core-jvm-1.7.3.jar
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1ab3acc38f3e7355c4f9d1ec62107a46fa73c899f3070d055e5d4373dfe67e12
+size 1551152
diff --git a/src/net/torvald/terrarum/audio/TerrarumAudioMixerTracks.kt b/src/net/torvald/terrarum/audio/TerrarumAudioMixerTracks.kt
index cfa507063..95608ce11 100644
--- a/src/net/torvald/terrarum/audio/TerrarumAudioMixerTracks.kt
+++ b/src/net/torvald/terrarum/audio/TerrarumAudioMixerTracks.kt
@@ -75,13 +75,17 @@ class TerrarumAudioMixerTracks(val isMaster: Boolean = false): Disposable {
it.isAccessible = true
it.get(Gdx.audio) as Int
}
- private val adev = OpenALBufferedAudioDevice(
- Gdx.audio as OpenALLwjgl3Audio,
- SAMPLING_RATE,
- false,
- deviceBufferSize,
- deviceBufferCount
- ) {}
+ private val adev: OpenALBufferedAudioDevice? =
+ if (isMaster) {
+ OpenALBufferedAudioDevice(
+ Gdx.audio as OpenALLwjgl3Audio,
+ SAMPLING_RATE,
+ false,
+ deviceBufferSize,
+ deviceBufferCount
+ ) {}
+ }
+ else null
/**
@@ -104,7 +108,7 @@ class TerrarumAudioMixerTracks(val isMaster: Boolean = false): Disposable {
get() = currentTrack?.gdxMusic?.isPlaying
override fun dispose() {
- adev.dispose()
+ adev?.dispose()
}
override fun equals(other: Any?) = this.hash == (other as TerrarumAudioMixerTracks).hash
@@ -158,12 +162,21 @@ class TerrarumAudioMixerTracks(val isMaster: Boolean = false): Disposable {
}
}
else {
+ adev!!.writeSamples(interleave(samplesL1, samplesR1), 0, samplesL1.size * 2)
+ withContext(Dispatchers.IO) {
+ Thread.sleep(12)
+ }
+
getSidechains().forEach {
it?.processContinuation?.resume(Unit)
}
}
}
}
+
+ private fun interleave(f1: FloatArray, f2: FloatArray) = FloatArray(f1.size + f2.size) {
+ if (it % 2 == 0) f1[it / 2] else f2[it / 2]
+ }
}
fun fullscaleToDecibels(fs: Double) = 10.0 * log10(fs)