react-native-sound
react-native-sound copied to clipboard
Ducking Others Audios
:beetle: Description
Ducking (lower the volume from) others audios in background.
:beetle: What is the observed behavior?
The audio from other app (like Spotify) and from react-native-sound(RNS) are mix together, however there are at the same volume :
- The user put some music, from Spotify for example.
- The user come to my app and launch the game ( about every 3 minute a name is called).
- When a name is called from RNS audio, the Spotify's audio and RNS audio are at the same volume.
:beetle: What is the expected behavior?
- The user put some music, from Spotify for example.
- The user come to my app and launch the game ( about every 3 minute a name is called).
- When a name is called from RNS audio, the Spotify's audio would be ducked.
- At the end of RNS audio, the Spotify's audio will be set at his normal volume.
:beetle: Please post your code:
// The Sounds object
let whoosh;
// Import the react-native-sound module
let Sound = require('react-native-sound');
// Enable playback in silence mode, mixWithOthers and background
Sound.setCategory('Playback', true);
Sound.setMode('SpokenAudio');
// What is called every 3 minute
var whoosh = new Sound('./audios/actions/saxo.mp3', Sound.MAIN_BUNDLE, (error) => {
if (error) {
console.log('failed to load the sound', error);
return;
}
// Play the sound with an onEnd callback
whoosh.play((success) => {
if (success) {
console.log('successfully finished playing, go for another lauch TimeOut');
this._launchTimeOut();
} else {
console.log('playback failed due to audio decoding errors');
}
});
});
:bulb: Does the problem have a test case?
- Create a RNS object
- Put some music, from Spotify for example
- Launch RNS audio
- Confirm that duck is not working
:bulb: Possible solution
Maybe it would be possible that I didn't use the right mode when I called
Sound.setMode()
But I tried every mode they have :
//"Default", "VoiceChat", "VideoChat", "GameChat", "VideoRecording", "Measurement", "MoviePlayback", "SpokenAudio".
Or Maybe it would be possible that it was for this function
Sound.setCategory()
But I also tried every mode they have :
//"Ambient", "SoloAmbient", "Playback", "Record", "PlayAndRecord", "AudioProcessing", "MultiRoute".
:bulb: Is there a workaround?
I tried a lot of things but I completly stuck. If anyone succeeds to duck other audios in background it would be perfect.
:bulb: If the bug is confirmed, would you be willing to create a pull request?
Yes
Is your issue with...
- [X] iOS
- [X] Android
- [ ] Windows
Are you using...
- [X] React Native CLI (e.g.
react-native run-android
) - [ ] Expo
- [ ] Other: (please specify)
Which versions are you using?
- React Native Sound: "^0.11.0"
- React Native: "~0.61.4"
- iOS: 12.1.4
- Android: 10
- Windows: X
Does the problem occur on...
- [ ] Simulator
- [X] Device
If your problem is happening on a device, which device?
- Device: Iphone 7
i have the same issue. i tried every possible solution but it doesnt seem to duckOthers. this is not implemented yet it seems in the package.
I just created a new PR for this feature (only for iOS) #745 If there are any Android developers willing to add on to this fork that would be great!
if you want to test it out and provide any feedback just do
npm install https://github.com/EyadAlghamdi/react-native-sound
it will replace the main branch with the new branch to test it, later you can redo
npm install react-native-sound
and it will replace it back.
If you install the ducking branch. make sure you use the updated setCategory method which have a new parameters (3rd) named duckOthers
@param category — AVAudioSession category
@param mixWithOthers — Can be set to true to force mixing with other audio sessions.
@param duckOthers — Can be set to true to duck other sounds (iOS).
Sound.setCategory("Playback", true, true)
test it out and let me know if you face any issues so i can modify it :) cheers!
@EyadAlghamdi
npm install https://github.com/EyadAlghamdi/react-native-sound
Worked like a charm. Thanks a lot.
Hi @EyadAlghamdi, I am using your repo it work for me good, but I need duck and unDuck feature for IOS and android both, Now in my scenario, after ducking background sound it increases slowly slowly, and also not going to it original level of volume, and I am unable to fully unDuck the volume of background sound.
Can you help me in this scenario.
Hi @EyadAlghamdi,after ducking background sound it increases slowly slowly, and also not going to it original level of volume, and I am unable to fully unDuck the volume of background sound
Hello all, here's a patch file that incorporates @EyadAlghamdi changes + changes for Android. I've tested and it works on my devices. react-native-sound+0.11.2.patch