Allow for audio chaining by returning self
object from audio effects and audio mixer
#10635
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The idea of audio effect/mixer chaining was theorized in one of the first audio effects PRs, #9640 (comment), but never actually implemented.
The updates in this PR are relatively simple. Instead of returning
None
withinplay(...)
methods of audio objects which allow both input and output (effects and mixer), it instead returns a reference to itself.With this minor update, rather than building audio chains the old way:
You can instead directly chain each source into its destination:
Note: The only method that is missing this chaining ability is
audiomixer.MixerVoice.play
. I felt that it made sense to allowaudiomixer.Mixer.play
to support this but thought it would result in confusing implementation to supportMixerVoice
. (ie:dac.play(mixer.voice[0].play(sample))
vsdac.play(mixer.play(sample))
.