У меня есть проект Python, который использует PySide2 для работы с пользовательским интерфейсом на основе Qt, а также QSoundEffect для воспроизведения звуков. Как я выяснил, я могу создавать и воспроизводить два звука одновременно, но когда я изменяю громкость одного из них, изменяется общая громкость всех звуков.
Это считается ошибкой, см., например, здесь: https://forum.qt.io/topic/46996/qsoundeffect-setvolume-setting-whole-app-volume/10.
Поэтому я решил сделать один звук с помощью QSoundEffect, а другой — с помощью ctypes модуля python, напрямую вызывая Windows DLL, например так:
from ctypes import c_buffer, windll
...
windll.winmm.mciSendStringA(....)
это также работает, и два звука воспроизводятся вместе, но, к моему удивлению, QSoundEffect.setVolume() по-прежнему управляет громкостью обоих звуков.
В принципе, я могу микшировать звуки по-разному, но не могу управлять их громкостью по отдельности.
Так что это не ошибка Qt, это что-то другое.
С другой стороны, если вы спросите на форумах MSDN, люди скажут вам, что в низкоуровневом Win API нет понятия отдельных звуков и микширования, это нужно делать вручную, а здесь я точно могу микшировать звуки.
Я -- НЕ -- спрашиваю о том, как правильно воспроизводить звуки в python, и -- НЕ -- ищу решение или стороннюю библиотеку, я знаю, что их много.
Я хочу понять, почему так происходит и с какой звуковой подсистемой Win (за неимением лучшего термина) я имею дело в данном случае, может быть, кто-нибудь, достаточно разбирающийся в этом вопросе, сможет пролить свет на это для меня.