Closed specdrums closed 5 years ago
Oboe's goal is to provide the lowest possible latency so if there are other apps getting better latency than Oboe then we definitely have a problem. Please could you supply the source code which you use to create an AudioStream and I'll investigate.
One thing which immediately springs to mind is that if you're playing WAV files then presumably you are creating streams with a fixed sample rate. This can result in you not getting low latency streams because the system must do the resampling for you. To get the lowest latency you need to not specify the sample rate, query it after the stream has opened then, if necessary resample your WAV file to the stream's sample rate.
SoundPool objects are played directly through the FAST mixer. So they have pretty low latency. But you should be able to get the same latency or better with Oboe.
We will try to help but need more info so we can understand why you are seeing such high latency.
What version of Android are you running?
Which API is being used: OpenSL ES or AAudio? Call AudioStream.getAudioApi().
How many streams are you opening? Ideally just one and you are doing your own mixing of drums into that stream. If you open too many streams then you can run out of FAST tracks.
Which PerformanceMode did you request and what did you get? Call AudioStream.getPerformanceMode() to find out.
Are you triggering the sounds from MIDI or from the touch screen?
What is returned from mAudioStream->getFramesPerBurst()?
Feel free to paste a very short bit of logcat from when the stream was opened.
Here are responses to those questions I received from our developers. Any guidance would definitely be appreciated. Also - is there a know set of devices and/or versions of Android that have better latency which we should focus on to reduce our scope?
What version of Android are you running?
Which API is being used: OpenSL ES or AAudio? Call AudioStream.getAudioApi().
How many streams are you opening? Ideally just one and you are doing your own mixing of drums into that stream. If you open too many streams then you can run out of FAST tracks.
Which PerformanceMode did you request and what did you get? Call AudioStream.getPerformanceMode() to find out.
Are you triggering the sounds from MIDI or from the touch screen?
What is returned from mAudioStream->getFramesPerBurst()?
Feel free to paste a very short bit of logcat from when the stream was opened.
02-19 13:08:25.554 19074-19074/com.sphero.enterprise.specdrumsmix D/OboeAudio: openStream() OUTPUT -------- Oboe version 1.1.1 -------- 02-19 13:08:25.554 19074-19074/com.sphero.enterprise.specdrumsmix I/OboeAudio: AudioStreamOpenSLES::open(chans:2, rate:0) 02-19 13:08:25.559 19074-19074/com.sphero.enterprise.specdrumsmix D/OboeAudio: AudioStreamOpenSLES(): mFramesPerCallback = 192 02-19 13:08:25.559 19074-19074/com.sphero.enterprise.specdrumsmix D/OboeAudio: AudioStreamOpenSLES(): mBytesPerCallback = 768 02-19 13:08:25.559 19074-19074/com.sphero.enterprise.specdrumsmix W/OboeAudio: configurePerformanceMode() not supported until N_MR1 02-19 13:08:25.584 19074-19074/com.sphero.enterprise.specdrumsmix D/OboeAudio: AudioOutputStreamOpenSLES(): requestStart() called 02-19 13:08:25.584 19074-19074/com.sphero.enterprise.specdrumsmix D/OboeAudio: AudioOutputStreamOpenSLES(): setPlayState() 02-19 13:08:25.594 19074-19074/com.sphero.enterprise.specdrumsmix D/OboeAudio: AudioStream::fireDataCallback() scheduler = SCHED_OTHER 02-19 13:08:25.594 19074-19074/com.sphero.enterprise.specdrumsmix D/OboeAudio: AudioOutputStreamOpenSLES(): requestStart() returning 0 02-19 13:08:25.594 19074-19074/com.sphero.enterprise.specdrumsmix I/RhythmGame: OBOE Stream - Format: I16 02-19 13:08:25.594 19074-19074/com.sphero.enterprise.specdrumsmix I/RhythmGame: OBOE Stream - AudioApi: OpenSLES 02-19 13:08:25.594 19074-19074/com.sphero.enterprise.specdrumsmix I/RhythmGame: OBOE Stream - Performance mode: None 02-19 13:08:25.594 19074-19074/com.sphero.enterprise.specdrumsmix I/RhythmGame: OBOE Stream - Bytes per sample: 2 02-19 13:08:25.594 19074-19074/com.sphero.enterprise.specdrumsmix I/RhythmGame: OBOE Stream - Frames per burst: 192 02-19 13:08:25.594 19074-19074/com.sphero.enterprise.specdrumsmix I/RhythmGame: OBOE Stream - Frames per callback: 192 02-19 13:08:25.594 19074-19074/com.sphero.enterprise.specdrumsmix I/RhythmGame: OBOE Stream - Bytes per frame: 4 02-19 13:08:25.594 19074-19074/com.sphero.enterprise.specdrumsmix I/RhythmGame: OBOE Stream - Buffer Size in Frames: 384 02-19 13:08:25.594 19074-19074/com.sphero.enterprise.specdrumsmix I/RhythmGame: OBOE Stream - Buffer capacity in frames: 384 02-19 13:08:25.594 19074-19074/com.sphero.enterprise.specdrumsmix I/RhythmGame: OBOE Stream - Bytes sample rate: 48000 02-19 13:08:25.594 19074-19074/com.sphero.enterprise.specdrumsmix I/RhythmGame: OBOE Stream - Content type: 4 02-19 13:08:25.594 19074-19074/com.sphero.enterprise.specdrumsmix I/RhythmGame: OBOE Stream - Channel count: 2 02-19 13:08:25.594 19074-19074/com.sphero.enterprise.specdrumsmix I/RhythmGame: OBOE Stream - Sharing mode: Shared 02-19 13:08:25.594 19074-19074/com.sphero.enterprise.specdrumsmix I/RhythmGame: OBOE Stream - Usage: 1
Sorry, more questions to help diagnose this:
adb shell dumpsys media.audio_flinger
and paste the output here Also - is there a know set of devices and/or versions of Android that have better latency which we should focus on to reduce our scope?
Pixel devices and Samsung Galaxy S9, Note9 currently have the best audio latency of any Android devices.
Closing due to inactivity. Please reopen with the requested information if you still have issues.
Hi Don,
Thanks for the responses, and sorry about the delay. Here are the answers I got back for your questions, for the device we're getting the worst latency on. Any feedback would be appreciated! And fyi, we are measuring latency as the time measured from an audio recording between the start of a physical tap and the start of an audio file being played through the device. We've identified latency related to the hardware / bluetooth to be 25ms total.
• What Android device is this? Samsung Galaxy S5
• Did you follow the guidance here for setting the default sample rate and buffer size? Yes
• When the app is running can you type the following command into a terminal
Loudness Enhancer / The Android Open Source Project
UUID: fa415329-2034-4bea-b5dc-5b381c8d1e2c
TYPE: fe3199be-aed0-413f-87bb-11260eb63cf1
apiVersion: 00020000
flags: 00000008
Library soundalive_sec
SoundAlive / Samsung
UUID: cf65eb39-ce2f-48a8-a903-ceb818c06745
TYPE: c4da1d1f-7cdf-42e2-ba60-efc7eb3508a3
apiVersion: 00020000
flags: 00000208
Library soundalive
SoundAlive_EQ / Samsung
UUID: 0c117b70-f97f-11e0-be50-0002a5d5c51b
TYPE: 0bed4300-ddd6-11db-8f34-0002a5d5c51b
apiVersion: 00020000
flags: 00000210
SoundAlive_Virtualizer / Samsung
UUID: c747f6a0-418a-11e1-a621-0002a5d5c51b
TYPE: 37cc2c00-dddd-11db-8577-0002a5d5c51b
apiVersion: 00020000
flags: 00000210
SoundAlive_BassBoost / Samsung
UUID: a926a540-418a-11e1-b2f1-0002a5d5c51b
TYPE: 0634f220-ddd4-11db-a0fc-0002a5d5c51b
apiVersion: 00020000
flags: 00000210
Library mysound
MySound / Samsung
UUID: 263a88e0-50b1-11e2-bcfd-0800200c9a66
TYPE: d2bc05e0-50b0-11e2-bcfd-0800200c9a66
apiVersion: 00020000
flags: 00000210
Library pre_processing
Noise Suppression / NXP Software Ltd.
UUID: df0afc20-93ce-11e0-98de-0002a5d5c51b
TYPE: 58b4b260-8e06-11e0-aa8e-0002a5d5c51b
apiVersion: 00020000
flags: 00000203
Acoustic Echo Canceler / NXP Software Ltd.
UUID: d6dbf400-93ce-11e0-bcd7-0002a5d5c51b
TYPE: 7b491460-8d4d-11e0-bd61-0002a5d5c51b
apiVersion: 00020000
flags: 00000203
Automatic Gain Control / NXP Software Ltd.
UUID: 03b75f00-93ce-11e0-9fb8-0002a5d5c51b
TYPE: 0a8abfe0-654c-11e0-ba26-0002a5d5c51b
apiVersion: 00020000
flags: 00000203
Library output_processing
Far-End Noise Suppression / NXP Software Ltd.
UUID: cbcc5980-476d-11e1-82ee-0002a5d5c51b
TYPE: f88eb3c0-476b-11e1-9375-0002a5d5c51b
apiVersion: 00020000
flags: 00000248
Loudness Maximizer for Voice / NXP Software Ltd.
UUID: 989d9460-413d-11e1-8b0d-0002a5d5c51b
TYPE: 4c0aa460-413a-11e1-a29d-0002a5d5c51b
apiVersion: 00020000
flags: 00000250
Library downmix
Multichannel Downmix To Stereo / The Android Open Source Project
UUID: 93f04452-e4fe-41cc-91f9-e475b6d1d69f
TYPE: 381e49cc-a858-4aa2-87f6-e8388e7601b2
apiVersion: 00020000
flags: 00000008
Library visualizer
Visualizer / The Android Open Source Project
UUID: d069d9e0-8329-11df-9168-0002a5d5c51b
TYPE: e46b26a0-dddd-11db-8afd-0002a5d5c51b
apiVersion: 00020000
flags: 00000008
Library reverb
Insert Preset Reverb / NXP Software Ltd.
UUID: 172cdf00-a3bc-11df-a72f-0002a5d5c51b
TYPE: 47382d60-ddd8-11db-bf3a-0002a5d5c51b
apiVersion: 00020000
flags: 00000048
Auxiliary Preset Reverb / NXP Software Ltd.
UUID: f29a1400-a3bb-11df-8ddc-0002a5d5c51b
TYPE: 47382d60-ddd8-11db-bf3a-0002a5d5c51b
apiVersion: 00020000
flags: 00000001
Insert Environmental Reverb / NXP Software Ltd.
UUID: c7a511a0-a3bb-11df-860e-0002a5d5c51b
TYPE: c2e5d5f0-94bd-4763-9cac-4e234d06839e
apiVersion: 00020000
flags: 00000048
Auxiliary Environmental Reverb / NXP Software Ltd.
UUID: 4a387fc0-8ab3-11df-8bad-0002a5d5c51b
TYPE: c2e5d5f0-94bd-4763-9cac-4e234d06839e
apiVersion: 00020000
flags: 00000001
Library bundle
Volume / NXP Software Ltd.
UUID: 119341a0-8469-11df-81f9-0002a5d5c51b
TYPE: 09e8ede0-ddde-11db-b4f6-0002a5d5c51b
apiVersion: 00020000
flags: 00000050
Clients:
pid: 3668
pid: 4563
pid: 6020
pid: 23767
Notification Clients:
pid: 3668
pid: 4189
pid: 4563
pid: 5465
pid: 6020
pid: 23767
Global session refs:
session pid count packagename
836 6020 1 com.sec.android.inputmethod
848 6020 1 com.sec.android.inputmethod
852 6020 1 com.sec.android.inputmethod
1327 4563 1 com.android.systemui
1330 4563 1 com.android.systemui
1330 4563 1 com.android.systemui
1331 4563 1 com.android.systemui
1425 23767 1 com.sphero.enterprise.specdrumsmix
Hardware status: 0
Standby Time mSec: 3000
Output thread 0xb0300000 type 0 (MIXER):
Thread name: AudioOut_2
I/O handle: 2
TID: 4057
Standby: no
Sample rate: 48000 Hz
HAL frame count: 960
HAL format: 0x1 (pcm16)
HAL buffer size: 3840 bytes
Channel count: 2
Channel mask: 0x00000003 (front-left, front-right)
Format: 0x1 (pcm16)
Frame size: 4 bytes
Pending config events: none
Output device: 0x2 (SPEAKER)
Input device: 0 (NONE)
Audio source: 0 (default)
Normal frame count: 960
Last write occurred (msecs): 8
Total writes: 8207063
Delayed writes: 13
Blocked in write: yes
Suspend count: 0
Sink buffer : 0xb02c2000
Mixer buffer: 0x0
Effect buffer: 0x0
Fast track availMask=fe
AudioStreamOut: 0xb22e4620 flags 0x2 (PRIMARY)
Thread throttle time (msecs): 28667
AudioMixer tracks: 0x0000013f
FastMixer not initialized
Stream volumes in dB: 0:-3, 1:-inf, 2:-inf, 3:0, 4:-9, 5:-inf, 6:0, 7:-inf, 8:-inf, 9:-inf, 10:0, 11:-3, 12:-3, 13:-inf, 14:0, 15:0, 16:0
Normal mixer raw underrun counters: partial=0 empty=0
7 Tracks of which 1 are active
Name Active Client Type Fmt Chn mask Session fCount S F SRate L dB R dB Server Main buf Aux Buf Flags UndFrmCnt
2 yes 23767 3 0x00000005 0x00000003 1425 3544 A 3 44100 0 0 0x0013bdc8 0xb02c2000 0x00000000 0x00000 0
8 no 6020 1 0x00000001 0x00000001 852 3749 S 1 44100 -inf -inf 0x00000ea5 0xb02c2000 0x00000000 0x00600 0
0 no 3668 5 0x00000001 0x00000003 1330 8820 S 1 44100 0 0 0x00006035 0xb02c2000 0x00000000 0x00601 882
5 no 6020 1 0x00000001 0x00000001 848 3749 S 1 44100 -inf -inf 0x00000ea5 0xb02c2000 0x00000000 0x00600 0
3 no 4563 1 0x00000001 0x00000003 1327 67989 S 1 48000 -inf -inf 0x00010995 0xb02c2000 0x00000000 0x00600 0
4 no 6020 1 0x00000001 0x00000001 836 3749 S 1 44100 -inf -inf 0x00000ea5 0xb02c2000 0x00000000 0x00600 0
1 no 4563 2 0x00000001 0x00000003 1331 6216 S 1 44100 -inf -inf 0x00001848 0xb02c2000 0x00000000 0x00600 0
0 Effect Chains
AudioHardwareBase::dumpState
mMode: 0
AudioHardwareTinyALSA::dump
Mutex: unlocked
tty_mode: 0
CheckModemPath: false
CheckPcmClk: false, false line 0
BluetoothECOff: false
InputSource: 1
FactoryLoopbackMode: 0
isIncall: false
InCallDevices: 0
RingbackToneState: false
isRealCall: false
EnabledDualMic: true
VoIPRxActive: false
ProcType: 0
IsExtraVolumeMode: false
IsMicMuted: false
FactoryMode: 0
AllSoundMute: false
VoiceVolume: true
BluetoothSampleRate: 8000
wake up mic: false
wake up baby cry: false
AudioStreamOutALSA::dump
Mutex: locked
Standby: false
mHandle: -1358136704
PowerLock: true
ActiveDevice: 0x2
CurrentDevice: 0x2
MacBook:jams-android juanmartin$ adb shell dumpsys media.audio_flinger
Library loudness_enhancer
Loudness Enhancer / The Android Open Source Project
UUID: fa415329-2034-4bea-b5dc-5b381c8d1e2c
TYPE: fe3199be-aed0-413f-87bb-11260eb63cf1
apiVersion: 00020000
flags: 00000008
Library soundalive_sec
SoundAlive / Samsung
UUID: cf65eb39-ce2f-48a8-a903-ceb818c06745
TYPE: c4da1d1f-7cdf-42e2-ba60-efc7eb3508a3
apiVersion: 00020000
flags: 00000208
Library soundalive
SoundAlive_EQ / Samsung
UUID: 0c117b70-f97f-11e0-be50-0002a5d5c51b
TYPE: 0bed4300-ddd6-11db-8f34-0002a5d5c51b
apiVersion: 00020000
flags: 00000210
SoundAlive_Virtualizer / Samsung
UUID: c747f6a0-418a-11e1-a621-0002a5d5c51b
TYPE: 37cc2c00-dddd-11db-8577-0002a5d5c51b
apiVersion: 00020000
flags: 00000210
SoundAlive_BassBoost / Samsung
UUID: a926a540-418a-11e1-b2f1-0002a5d5c51b
TYPE: 0634f220-ddd4-11db-a0fc-0002a5d5c51b
apiVersion: 00020000
flags: 00000210
Library mysound
MySound / Samsung
UUID: 263a88e0-50b1-11e2-bcfd-0800200c9a66
TYPE: d2bc05e0-50b0-11e2-bcfd-0800200c9a66
apiVersion: 00020000
flags: 00000210
Library pre_processing
Noise Suppression / NXP Software Ltd.
UUID: df0afc20-93ce-11e0-98de-0002a5d5c51b
TYPE: 58b4b260-8e06-11e0-aa8e-0002a5d5c51b
apiVersion: 00020000
flags: 00000203
Acoustic Echo Canceler / NXP Software Ltd.
UUID: d6dbf400-93ce-11e0-bcd7-0002a5d5c51b
TYPE: 7b491460-8d4d-11e0-bd61-0002a5d5c51b
apiVersion: 00020000
flags: 00000203
Automatic Gain Control / NXP Software Ltd.
UUID: 03b75f00-93ce-11e0-9fb8-0002a5d5c51b
TYPE: 0a8abfe0-654c-11e0-ba26-0002a5d5c51b
apiVersion: 00020000
flags: 00000203
Library output_processing
Far-End Noise Suppression / NXP Software Ltd.
UUID: cbcc5980-476d-11e1-82ee-0002a5d5c51b
TYPE: f88eb3c0-476b-11e1-9375-0002a5d5c51b
apiVersion: 00020000
flags: 00000248
Loudness Maximizer for Voice / NXP Software Ltd.
UUID: 989d9460-413d-11e1-8b0d-0002a5d5c51b
TYPE: 4c0aa460-413a-11e1-a29d-0002a5d5c51b
apiVersion: 00020000
flags: 00000250
Library downmix
Multichannel Downmix To Stereo / The Android Open Source Project
UUID: 93f04452-e4fe-41cc-91f9-e475b6d1d69f
TYPE: 381e49cc-a858-4aa2-87f6-e8388e7601b2
apiVersion: 00020000
flags: 00000008
Library visualizer
Visualizer / The Android Open Source Project
UUID: d069d9e0-8329-11df-9168-0002a5d5c51b
TYPE: e46b26a0-dddd-11db-8afd-0002a5d5c51b
apiVersion: 00020000
flags: 00000008
Library reverb
Insert Preset Reverb / NXP Software Ltd.
UUID: 172cdf00-a3bc-11df-a72f-0002a5d5c51b
TYPE: 47382d60-ddd8-11db-bf3a-0002a5d5c51b
apiVersion: 00020000
flags: 00000048
Auxiliary Preset Reverb / NXP Software Ltd.
UUID: f29a1400-a3bb-11df-8ddc-0002a5d5c51b
TYPE: 47382d60-ddd8-11db-bf3a-0002a5d5c51b
apiVersion: 00020000
flags: 00000001
Insert Environmental Reverb / NXP Software Ltd.
UUID: c7a511a0-a3bb-11df-860e-0002a5d5c51b
TYPE: c2e5d5f0-94bd-4763-9cac-4e234d06839e
apiVersion: 00020000
flags: 00000048
Auxiliary Environmental Reverb / NXP Software Ltd.
UUID: 4a387fc0-8ab3-11df-8bad-0002a5d5c51b
TYPE: c2e5d5f0-94bd-4763-9cac-4e234d06839e
apiVersion: 00020000
flags: 00000001
Library bundle
Volume / NXP Software Ltd.
UUID: 119341a0-8469-11df-81f9-0002a5d5c51b
TYPE: 09e8ede0-ddde-11db-b4f6-0002a5d5c51b
apiVersion: 00020000
flags: 00000050
Clients:
pid: 3668
pid: 4563
pid: 6020
pid: 23767
Notification Clients:
pid: 3668
pid: 4189
pid: 4563
pid: 5465
pid: 6020
pid: 23767
Global session refs:
session pid count packagename
836 6020 1 com.sec.android.inputmethod
848 6020 1 com.sec.android.inputmethod
852 6020 1 com.sec.android.inputmethod
1327 4563 1 com.android.systemui
1330 4563 1 com.android.systemui
1330 4563 1 com.android.systemui
1331 4563 1 com.android.systemui
1425 23767 1 com.sphero.enterprise.specdrumsmix
Hardware status: 0
Standby Time mSec: 3000
Output thread 0xb0300000 type 0 (MIXER):
Thread name: AudioOut_2
I/O handle: 2
TID: 4057
Standby: no
Sample rate: 48000 Hz
HAL frame count: 960
HAL format: 0x1 (pcm16)
HAL buffer size: 3840 bytes
Channel count: 2
Channel mask: 0x00000003 (front-left, front-right)
Format: 0x1 (pcm16)
Frame size: 4 bytes
Pending config events: none
Output device: 0x2 (SPEAKER)
Input device: 0 (NONE)
Audio source: 0 (default)
Normal frame count: 960
Last write occurred (msecs): 14
Total writes: 8210495
Delayed writes: 13
Blocked in write: yes
Suspend count: 0
Sink buffer : 0xb02c2000
Mixer buffer: 0x0
Effect buffer: 0x0
Fast track availMask=fe
AudioStreamOut: 0xb22e4620 flags 0x2 (PRIMARY)
Thread throttle time (msecs): 28667
AudioMixer tracks: 0x0000013f
FastMixer not initialized
Stream volumes in dB: 0:-3, 1:-inf, 2:-inf, 3:0, 4:-9, 5:-inf, 6:0, 7:-inf, 8:-inf, 9:-inf, 10:0, 11:-3, 12:-3, 13:-inf, 14:0, 15:0, 16:0
Normal mixer raw underrun counters: partial=0 empty=0
7 Tracks of which 1 are active
Name Active Client Type Fmt Chn mask Session fCount S F SRate L dB R dB Server Main buf Aux Buf Flags UndFrmCnt
2 yes 23767 3 0x00000005 0x00000003 1425 3544 A 3 44100 0 0 0x0041edc8 0xb02c2000 0x00000000 0x00000 0
8 no 6020 1 0x00000001 0x00000001 852 3749 S 1 44100 -inf -inf 0x00000ea5 0xb02c2000 0x00000000 0x00600 0
0 no 3668 5 0x00000001 0x00000003 1330 8820 S 1 44100 0 0 0x00006035 0xb02c2000 0x00000000 0x00601 882
5 no 6020 1 0x00000001 0x00000001 848 3749 S 1 44100 -inf -inf 0x00000ea5 0xb02c2000 0x00000000 0x00600 0
3 no 4563 1 0x00000001 0x00000003 1327 67989 S 1 48000 -inf -inf 0x00010995 0xb02c2000 0x00000000 0x00600 0
4 no 6020 1 0x00000001 0x00000001 836 3749 S 1 44100 -inf -inf 0x00000ea5 0xb02c2000 0x00000000 0x00600 0
1 no 4563 2 0x00000001 0x00000003 1331 6216 S 1 44100 -inf -inf 0x00001848 0xb02c2000 0x00000000 0x00600 0
0 Effect Chains
AudioHardwareBase::dumpState
mMode: 0
AudioHardwareTinyALSA::dump
Mutex: unlocked
tty_mode: 0
CheckModemPath: false
CheckPcmClk: false, false line 0
BluetoothECOff: false
InputSource: 1
FactoryLoopbackMode: 0
isIncall: false
InCallDevices: 0
RingbackToneState: false
isRealCall: false
EnabledDualMic: true
VoIPRxActive: false
ProcType: 0
IsExtraVolumeMode: false
IsMicMuted: false
FactoryMode: 0
AllSoundMute: false
VoiceVolume: true
BluetoothSampleRate: 8000
wake up mic: false
wake up baby cry: false
AudioStreamOutALSA::dump
Mutex: locked
Standby: false
mHandle: -1358136704
PowerLock: true
ActiveDevice: 0x2
CurrentDevice: 0x2
Reroute submix audio module:
route[0] rate in=0 out=0, addr=[]
route[1] rate in=0 out=0, addr=[]
route[2] rate in=0 out=0, addr=[]
route[3] rate in=0 out=0, addr=[]
route[4] rate in=0 out=0, addr=[]
route[5] rate in=0 out=0, addr=[]
route[6] rate in=0 out=0, addr=[]
route[7] rate in=0 out=0, addr=[]
route[8] rate in=0 out=0, addr=[]
route[9] rate in=48000 out=48000, addr=[]
Hello,
We're currently using Oboe in our real-time music app (Specdrums) that plays samples from .wav files, but we're getting latencies that are almost always larger than our previous version of the app, which was using a standard Android audio player (looks to be SoundPool objects). In some cases, the new version using Oboe was much worse - for example, 204ms vs. 93ms on the Galaxy S9.
We're using the recommended buffer size for low latency:
What else can we do to lower latency so that it's at least on the level of our old version of the app that used a SoundPool object?
Also, when we used Rock Relay (a MIDI synth app on the Google Play store), we got very low latencies across all phones (in the 60-80ms range). Is it fair to use this performance as a baseline for how good Oboe could get? Not sure if performance would be different for apps that play audio from a file vs. (from my understanding) synthesizing the sounds on the spot?
Thanks, Steven Dourmashkin Product Manager | Specdrums