Commit Graph

1914 Commits

Author SHA1 Message Date
David Reid bc23d565e7 Minor optimization to ma_copy_pcm_frames() and update to documentation.
This changes makes ma_copy_pcm_frames() a no-op when the input and
output buffers are both set to the same pointer. This is useful for
some in-place no-ops for effects and filters.
2020-06-06 18:16:45 +10:00
David Reid b287d94fe8 Rename some functions for consistency. 2020-06-03 21:25:57 +10:00
David Reid fe06814325 Don't do filtering when pitch shifting for now.
This may be changed back to a first order LPF later on.
2020-06-03 20:50:44 +10:00
David Reid 5b1b160c62 Fix compilation errors with MA_NO_DEVICE_IO. 2020-06-03 20:01:36 +10:00
David Reid 31f08287da Have decoders use their native channel count in the high level API.
This is required so we can do different spatialization logic depending
on the channel count of the audio source.
2020-06-03 17:01:39 +10:00
David Reid c0ebf41633 Minor renaming. 2020-06-03 16:52:05 +10:00
David Reid 766420eb2b Update revision history. 2020-06-01 21:20:36 +10:00
David Reid cc8201738b Optimization to stereo panner. 2020-06-01 20:47:34 +10:00
David Reid 4d5433ae58 Use first order LPF for pitch shifting by default.
There is a bug that's causing glitches which appears to be something to
do with the second order LPF.
2020-06-01 20:38:37 +10:00
David Reid fefde682e3 Don't support such extreme resampling ratios.
This was affecting the stability of the internal low pass filters.
2020-06-01 20:20:43 +10:00
David Reid 54adbc3dfc Fix a possible infinite loop. 2020-06-01 18:03:43 +10:00
David Reid 352a776b52 Fix a bug in the linear resampler when changing rates.
This bug is happening due to the internal timer not being adjusted to
match the new sample rate.
2020-06-01 17:11:23 +10:00
David Reid 32e240d4ec Fix a bug when mixing a data source. 2020-06-01 01:05:01 +10:00
David Reid bf63ed17b9 Enable mmap mode for ma_audio_buffer data sources. 2020-06-01 00:09:03 +10:00
David Reid 1c26893930 Add initial implementation of stereo panning to the ma_engine API.
This currently only supports f32, but support for more formats will be
coming soon.
2020-05-31 23:54:29 +10:00
David Reid f4b0b271cd More work on the new engine API.
* 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.
2020-05-31 23:14:59 +10:00
David Reid 3a62d44959 Work on changes to the effect API. 2020-05-31 07:03:14 +10:00
David Reid 105d016e69 Updates to the new ma_engine API.
* The engine will now auto-start by default. This can be changed in
    the config by setting `noAutoStart` to true.

  * Initial implementation of ma_engine_play_sound() which can be used
    for fire-and-forget playback of sounds.

  * Add ma_engine_sound_at_end() for querying whether or not a sound
    has reached the end. The at-end flag is set atomically and
    locklessly in the mixing thread.
2020-05-30 13:56:41 +10:00
David Reid 8254324a5e Update release notes. 2020-05-30 13:40:30 +10:00
David Reid e2b37b5d6d Fix some warnings reported by GCC. 2020-05-30 13:40:02 +10:00
David Reid 9718ac2d64 Fix some warnings with GCC and -std=c89. 2020-05-30 13:34:23 +10:00
David Reid 3fcef2fc7e Add atomic compare and swap. 2020-05-30 13:25:02 +10:00
David Reid fda0c07626 Update ma_mixer_mix_data_source() return value.
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.
2020-05-30 13:01:56 +10:00
David Reid 29641e08dc Add documentation for log levels. 2020-05-30 09:49:01 +10:00
David Reid 803cd284bc Shorten a comment for easier viewing. 2020-05-29 19:51:37 +10:00
David Reid 967174368e Add looping example. 2020-05-29 19:50:04 +10:00
David Reid 8de49326d4 Add support for looping when reading data from data sources.
Updated APIs:
  * ma_data_source_read_pcm_frames()
  * ma_data_source_seek_pcm_frames()
2020-05-29 19:49:38 +10:00
David Reid 69253921de Update dr_wav in preparation for some new work. 2020-05-29 19:20:24 +10:00
David Reid 1cec172623 Add ma_data_source_seek_pcm_frames().
This commit also explicitly defines ma_data_source_read_pcm_frames() as
supporting an output buffer of NULL in which case a forward seek should
be performed.
2020-05-29 18:00:48 +10:00
David Reid aec20ea98c Add support for passing in NULL for output buffer when decoding.
This will cause a forward seek to occur instead of a read when calling
ma_decoder_read_pcm_frames() with the output buffer set to NULL.
2020-05-29 17:57:01 +10:00
David Reid 077ae13157 Clarify some wording. 2020-05-28 22:36:34 +10:00
David Reid 046bc0d7c6 Add initial experimental work on the ma_engine API. 2020-05-28 21:25:39 +10:00
David Reid 0d691012d6 Add support for effects when mixing memory mapped data sources. 2020-05-28 16:18:16 +10:00
David Reid 783aef728e Updates to the mixer API.
* 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()
2020-05-27 22:58:22 +10:00
David Reid c2aa044335 Have ma_audio_buffer_unmap to return MA_AT_END when the end is reached. 2020-05-27 21:19:16 +10:00
David Reid df9906a11e Add support for memory mapping to ma_data_source. 2020-05-27 21:13:06 +10:00
David Reid f572ac8709 Change pDeviceID to constant pointers in ma_device_config. 2020-05-27 17:44:41 +10:00
David Reid 51fea1b1bd Fix some warnings in ma_mixing.h. 2020-05-27 17:43:08 +10:00
David Reid 34fcf64c96 Update dr_wav and dr_mp3. 2020-05-27 17:37:47 +10:00
David Reid c530416acc Minor update to ma_mixer. 2020-05-25 22:45:40 +10:00
David Reid f333a5efc5 Version 0.10.7 2020-05-25 16:09:22 +10:00
David Reid e90aaccbb8 Silence a warning. 2020-05-24 16:14:23 +10:00
David Reid 8f5e64a15a Update revision history. 2020-05-24 16:13:33 +10:00
David Reid 069a436f3a Fix a compilation error in the C++ build. 2020-05-24 16:12:44 +10:00
David Reid 237f5a6152 Add pull request template. 2020-05-24 14:24:32 +10:00
David Reid 4883142f68 Merge branch 'dev' 2020-05-24 14:09:57 +10:00
David Reid aeed4457cd Update issue templates 2020-05-24 14:07:31 +10:00
David Reid 9a60cea91a Move CONTRIBUTING into the docs folder. 2020-05-24 13:05:22 +10:00
David Reid 0455697b55 Update contribution guidelines to be a bit more professional. 2020-05-24 13:04:39 +10:00
David Reid 3f96bdf8a7 Version 0.10.6 2020-05-24 11:39:40 +10:00