diff --git a/lib/game_select_screen.dart b/lib/game_select_screen.dart index ce151fe..fc3e2fc 100644 --- a/lib/game_select_screen.dart +++ b/lib/game_select_screen.dart @@ -59,7 +59,7 @@ class GameSelectScreen extends StatelessWidget { ); } - Future> loadData([String? directory]) async { + Future> loadData({String? directory}) async { final List loadedGames = []; // 1. Always attempt to load bundled assets first (works on ALL platforms) diff --git a/lib/main.dart b/lib/main.dart index 29d4e7f..7ed25e3 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -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 diff --git a/packages/wolf_3d_synth/lib/src/imf_renderer.dart b/packages/wolf_3d_synth/lib/src/imf_renderer.dart index 1278700..547d21a 100644 --- a/packages/wolf_3d_synth/lib/src/imf_renderer.dart +++ b/packages/wolf_3d_synth/lib/src/imf_renderer.dart @@ -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(); }