TL;DR: The statement that "other libraries (and to extend, any other interrupt-driven software, for example your own) can potentially mess up SoftwareSerial's timing"interfere with SoftwareSerial" is correct.
YouIn your described case you will be fine, if you:
remove the usage ofgive up using
tone(), assumedor accept that you use nothing else with interruptsthe sound might be distorted during serial communication.use another (serial) communication method than SoftwareSerial for your own communication, and this must not use timely interrupts.
You might want to consider to write your own drivers. They must not use interrupts and should be resistant against other interrupts.
The transmission works with delay loops. During the transmission of a byte the interrupts are disabled.
AnyNo other interrupt servicecan be serviced during athis byte transmission will prolong the bit timing and most probably mess up the sent byte. ItThe duration depends on the time used by the interrupt service routine and the baudrate. In your case with 9600 baud, one bit time is 1 / (9600 1/s) = 104µs. Asynchronous serial communication works with a timing tolerance of about 10%, therefore angiving about 1ms interval without any interrupt service routine taking 10µs at maximum will by fine. However, the actual calculation is left as an exercise.
Any interrupt service during a byte receiving will prolong the bit timing and most probably mess upDuring the received byte receiving all interrupts are automatically disabled, see chapter 7. It7 of the data sheet. Again, the duration depends on the time used by the interrupt service routine and the baudrate. This happens ifIn your case this is about 1ms interval without any other interrupt has the same or higher priority than the pin change interruptservice.
But the source code does. Apparently it uses timer 2 on a ATmega328. The tone is generated through the interrupt handler on TIMER2_COMPA. If it is postponed during serial communication, the generated sound might not be what you expect.
Unfortunately the library provides no methods to pause listening to the player. Otherwise you could use that to communicate on another interface controlled by SoftwareSerial.
If you happen to begin() your own SoftwareSerial or start listen()ing after initializing the DFPlayMini library, you will effectively stop it listening of on its SoftwareSerial.
Otherwise, if you initialize the DFPlayMini library after your own communication, your own listening will be stopped. Of course, you could re-enable it, but see above.