engine.setPitchShiftSemitones(2.5f) // +2.5 semitones engine.setTimeStretchRatio(0.8f) // 20% slower
: It retains the signature "lo-fi" aesthetic, characterized by heavy scanlines, chromatic aberration, and pixelated gore that defines the "ribs" sub-genre of Sonic EXE fan games. Key Features Optimized Performance
# Requires Android NDK r25+ and CMake 3.22+ cd sonic-ribs-android ./gradlew assembleDebug # Native tests: adb shell /data/local/tmp/ribs_test --gtest_filter=*Latency*
The original sonic.ribs used arithmetic. Android Java layer prefers float .
engine.setPitchShiftSemitones(2.5f) // +2.5 semitones engine.setTimeStretchRatio(0.8f) // 20% slower
: It retains the signature "lo-fi" aesthetic, characterized by heavy scanlines, chromatic aberration, and pixelated gore that defines the "ribs" sub-genre of Sonic EXE fan games. Key Features Optimized Performance Sonic.ribs Android Port
# Requires Android NDK r25+ and CMake 3.22+ cd sonic-ribs-android ./gradlew assembleDebug # Native tests: adb shell /data/local/tmp/ribs_test --gtest_filter=*Latency* engine
The original sonic.ribs used arithmetic. Android Java layer prefers float . characterized by heavy scanlines