Fix sound rendering for web

Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
This commit is contained in:
2026-03-15 12:46:38 +01:00
parent 0dcc19dd37
commit a7506b475e
3 changed files with 10 additions and 4 deletions

View File

@@ -59,7 +59,7 @@ class GameSelectScreen extends StatelessWidget {
);
}
Future<List<WolfensteinData>> loadData([String? directory]) async {
Future<List<WolfensteinData>> loadData({String? directory}) async {
final List<WolfensteinData> loadedGames = [];
// 1. Always attempt to load bundled assets first (works on ALL platforms)

View File

@@ -3,6 +3,8 @@ import 'package:flutter_soloud/flutter_soloud.dart';
import 'package:wolf_dart/game_select_screen.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await SoLoud.instance.init(
sampleRate: 44100, // Audio quality
bufferSize: 2048, // Buffer size affects latency

View File

@@ -69,10 +69,14 @@ class ImfRenderer {
bytes.add('data'.codeUnits);
bytes.add(_int32ToBytes(dataSize));
// Append the actual raw audio data
for (int sample in pcmData) {
bytes.add(_int16ToBytes(sample));
// Append the actual raw audio data (Blazing Fast version)
final byteData = ByteData(dataSize);
for (int i = 0; i < pcmData.length; i++) {
// Multiply by 2 because each Int16 takes up 2 bytes.
// Endian.little is strictly required for the standard WAV format.
byteData.setInt16(i * 2, pcmData[i], Endian.little);
}
bytes.add(byteData.buffer.asUint8List());
return bytes.toBytes();
}