-
Notifications
You must be signed in to change notification settings - Fork 10
Developer information
Howl is a native Android app, which is written in Kotlin and uses Jetpack Compose. The files in the repository are for Android Studio, which is the recommended way to work on or build the app.
Howl includes a "REST style" remote API that developers can use to trigger functions of the app. This is documented on the Remote API wiki page.
The custom HWL format that the app uses for preconverted audio files is a very simple one.
The file starts with 8 byte header that always says "YEAHBOI!" (this is used by the app to identify if a file is an HWL file). This header is followed by any number of pulse objects (one for every 1/40th second the file lasts, to correspond to the Coyote 3's maximum update rate).
Each pulse object consists of 4x IEEE 754 single precision floating point values in little endian format, in the following order: -
- left_channel_amplitude: 0.0 to 1.0
- right_channel_amplitude: 0.0 to 1.0
- left_channel_frequency: 0.0 to 1.0
- right_channel_frequency: 0.0 to 1.0
A 1.0 value would correspond to the loudest part of the file for amplitude, or the highest frequency part of the file for frequency. These values are all just relative and we don't store the original frequencies (these frequencies are mapped into the range the user has chosen on the frequency slider control when the HWL file is played back by the Howl app).
HWL files are always stereo - mono source files are lazily supported by just storing the same values for both channels.