||3 months ago|
|.idea||3 months ago|
|app||3 months ago|
|assets||4 months ago|
|gradle/wrapper||3 months ago|
|.gitignore||7 months ago|
|LICENSE||3 months ago|
|README.md||3 months ago|
|build.gradle||3 months ago|
|download.gmi||3 months ago|
|gradle.properties||7 months ago|
|gradlew||7 months ago|
|gradlew.bat||7 months ago|
|od.sh||3 months ago|
|oppen_noise_1_0.apk||7 months ago|
|oppen_noise_2_0_0.apk||7 months ago|
|oppen_skissnoise_release_1_0_3.apk||3 months ago|
|settings.gradle||7 months ago|
A noise generator and audio visualiser for Android based OS.
Install 1.0.3 (Android 6.0 API23 Android M/Marshmallow)
The Noise project name refers to both the audio and graphics:
The graphics are generated from a Perlin Noise flow field with additional lensing (noise scales up with distance from origin/screen centre), an FFT implementation analyses input from the device microphone and excites the particles in 16 bands (high frequencies in the centre, low frequencies at the screen edge)
The ui uses Skiss for the graphics and a 3rd party library, Noise, for the FFT analyisis of the microphone input. There's also a Kotlin Coroutine Flow implementation with debounce for the FFT, an RxJava free alternative to the demo included with the Noise library.
Most (if not all) the noise apps in Google Play actually just loop Mp3 files. This project generates noise randomly, and applies various filters to shape the sound.
To keep things smooth and reduce processor load the audio is generated in 5 second chunks, this makes realtime filtering of the audio impossible, but Android's AudioTrack does allow you to change playback rate in realtime, the on-screen slider allows you to change the rate (and therefore pitch) of the noise.
To keep the audio subtly shifting there's an additional 'Perlin Walk' where the playback rate meanders up and down from it's current value.
Most of the Kotlin algorithms were developed from implementations in other languages, each class (see the audio noise package) will refer to the original author and source in the file header.