* Initial work on infrastructure for spatialization, panning and
pitch shifting.
* Add ma_engine_sound_set_pitch()
Spatialization and panning is not yet implemented, but pitch shifting
should now be working.
This change makes it so MA_AT_END is returned when a non-looping data
source reaches the end. This is how the caller can know to do clean up
or whatnot.
* Add support for volume control to ma_mixer_mix_*().
* Add support for specifying an effect to apply before mixing.
* Add optimized pipeline for memory mappable data sources.
* Remove some unnecessary functions:
- ma_mixer_mix_pcm_frames_ex()
- ma_mixer_mix_callbacks()
- ma_mixer_mix_decoder()
- ma_mixer_mix_audio_buffer()
- ma_mixer_mix_waveform()
- ma_mixer_mix_noise()
- ma_mixer_mix_rb_ex()
The ma_audio_buffer object is used for storing raw audio data in memory
and reading from it like any other data source. It supports flexible
memory management, reading, seeking, memory mapping and looping.
See documentation under "Audio Buffers" for a detailed description.