mirror of
https://git.eden-emu.dev/eden-emu/eden.git
synced 2025-07-21 20:25:47 +00:00
46 lines
1.6 KiB
Markdown
46 lines
1.6 KiB
Markdown
Soundboard
|
|
==========
|
|
Do you want to just jam with some digital tunes? Now you can!
|
|
|
|
This sample demonstrates how to obtain the lowest latency and optimal computational throughput by:
|
|
|
|
1) Leaving Oboe to choose the best default stream properties for the current device
|
|
2) Setting performance mode to LowLatency
|
|
3) Setting sharing mode to Exclusive
|
|
4) Setting the buffer size to 2 bursts
|
|
5) Using the `-Ofast` compiler optimization flag, even when building the `Debug` variant
|
|
|
|
The [following article explaining how to debug CPU performance problems](https://medium.com/@donturner/debugging-audio-glitches-on-android-ed10782f9c64) may also be useful when looking at this code.
|
|
|
|
Implementation details
|
|
---
|
|
The stream properties are left to Oboe as such the app must output audio data in a format which matches that of the stream.
|
|
|
|
Four different formats are supported:
|
|
|
|
|Channel count|Format|
|
|
|-------------|------|
|
|
|1 - Mono|16-bit int|
|
|
|2 - Stereo|16-bit int|
|
|
|1 - Mono|Float|
|
|
|2 - Stereo|Float|
|
|
|
|
The signal chain for mono streams is:
|
|
|
|
SynthSound->Mixer
|
|
|
|
For stereo chains a mono to stereo converter is added to the end of the chain:
|
|
|
|
SynthSound->Mixer->MonoToStereo
|
|
|
|
The compiler optimization flag `-Ofast` can be found in [CMakeLists.txt](CMakeLists.txt).
|
|
|
|
Each SynthSound is a series of 5 Oscillators, creating a pleasant sounding note when combined.
|
|
|
|
The number of notes depends on the shape of the screen, with G3 being the first note.
|
|
|
|
In order to determine whether a note should be played, MusicTileView demonstrates how to keep track of where each finger is.
|
|
|
|
Images
|
|
-----------
|
|

|