David Reid
553c7f0093
Add some new APIs.
...
* ma_sound_set_start_time_in_milliseconds()
* ma_sound_set_stop_time_in_milliseconds()
* ma_sound_group_set_start_time_in_milliseconds()
* ma_sound_group_set_stop_time_in_milliseconds()
2021-02-05 20:29:06 +10:00
David Reid
76640272be
Rename some APIs for consistency with other APIs.
...
* ma_sound_set_fade_in_frames() > ma_sound_set_fade_in_pcm_frames()
* ma_sound_get_time_in_frames() > ma_sound_get_time_in_pcm_frames()
* ma_sound_set_start_time() > ma_sound_set_start_time_in_pcm_frames()
* ma_sound_set_stop_time() > ma_sound_set_stop_time_in_pcm_frames()
* ma_sound_group_set_fade_in_frames() > ma_sound_group_set_fade_in_pcm_frames()
* ma_sound_group_get_time_in_frames() > ma_sound_group_get_time_in_pcm_frames()
* ma_sound_group_set_start_time() > ma_sound_group_set_start_time_in_pcm_frames()
* ma_sound_group_set_stop_time() > ma_sound_group_set_stop_time_in_pcm_frames()
2021-02-05 19:33:37 +10:00
David Reid
cc2365b2b8
Fix a warning due to use of non-standard functionality.
2021-02-05 19:19:33 +10:00
David Reid
59db61d9f3
Add ma_sound_get_engine().
2021-02-05 19:17:28 +10:00
David Reid
fbb953ff01
Fix an unused variable warning.
2021-02-05 18:30:23 +10:00
David Reid
3265107cbd
Fix a bug in ma_sound_is_playing().
...
This bug is due to the current time not being taken into account when
determining the node state.
Public issue https://github.com/mackron/miniaudio/issues/269
2021-02-05 17:16:30 +10:00
David Reid
1bd587e59f
Fix the C++ build.
2021-01-31 19:52:35 +10:00
David Reid
626463a13e
Fix a bug where a base node is being uninitialized twice.
2021-01-29 17:40:14 +10:00
David Reid
6281ed3165
Add some optimizations to inlined sounds.
2021-01-28 17:59:28 +10:00
David Reid
0f29839549
Remove the notification parameter from ma_sound_init_from_file().
...
This is buggy and unsafe. A complete rethink of the resource management
notification system needs to be done.
2021-01-28 17:46:09 +10:00
David Reid
8f6f72f188
Fix compilation error.
2021-01-27 18:12:58 +10:00
David Reid
8cd72f46a0
Temporary hack to fix some clicking glitches relating to resampling.
2021-01-26 17:21:31 +10:00
David Reid
243df7ebe0
Fix a copy/paste bug in ma_sound/group_set_positioning().
2021-01-26 15:12:04 +10:00
David Reid
a364b4ef96
Fix a bug with pitch shifting.
...
This bug results in the first period of samples being pitched at 1.0
regardless of whether or not ma_sound_set_pitch() had been called. What
happens is that the first period is processed at a rate of 1.0, and
then the pitch is applied after the fact. Then, the next period comes
along and resamples at the pitch set by ma_sound_set_pitch() which
results in a harsh sounding glitch.
2021-01-26 09:27:49 +10:00
David Reid
9fcb167476
Fix a bug relating to doppler pitching.
2021-01-26 08:20:51 +10:00
David Reid
bd80a409d3
Remove some stale and misleading comments.
2021-01-25 16:04:53 +10:00
David Reid
78910a922a
Simplify some APIs.
2021-01-25 15:39:42 +10:00
David Reid
d571435566
Remove a debugging printf().
2021-01-25 15:02:55 +10:00
David Reid
cfff5f3192
Add support for angular attenuation to the spatializer.
2021-01-25 15:01:40 +10:00
David Reid
525dd7cb23
Add support for multiple listeners.
2021-01-25 11:38:18 +10:00
David Reid
33025bace2
Add support for doppler effect to the engine.
2021-01-25 10:12:05 +10:00
David Reid
4cdd892c54
Prep work in preparation for doppler effect.
2021-01-25 09:18:22 +10:00
David Reid
9677cdc1e9
Initial work on spatialization.
...
This does not yet support the following:
* Cone based attenuation
* Doppler effect
* Multiple listeners
2021-01-24 21:06:15 +10:00
David Reid
8bd061b6c8
Add support for channel maps to ma_convert_pcm_frames_channels_f32().
2021-01-24 16:54:33 +10:00
David Reid
f040e3a1c1
Clean up in preparation for some spatialization work.
2021-01-24 09:03:32 +10:00
David Reid
722089d928
Fix the duplex_effect example.
...
This had the naming of source and excite the wrong way around.
2021-01-24 09:00:43 +10:00
David Reid
9ab7866237
Minor changes to resource_manager_advanced example.
2021-01-22 09:32:54 +10:00
David Reid
f194a8bb59
Fix a bug in the resource_manager_advanced example.
2021-01-22 09:29:28 +10:00
David Reid
1b185878a1
Update the resource_manager_advanced example.
2021-01-22 07:19:01 +10:00
David Reid
a389b65a75
Fix some bugs with notifications.
2021-01-20 19:43:18 +10:00
David Reid
776d7ddd91
Fix compilation errors with the C++ build.
2021-01-19 19:22:52 +10:00
David Reid
ef9099a6f2
Bug fix an update documentation.
2021-01-18 21:42:56 +10:00
David Reid
da42dfcd4b
Add support for wide strings (wchar_t) to the engine.
2021-01-17 21:20:11 +10:00
David Reid
3eb0f400e6
Add support for wide strings (wchar_t) to the resource manager.
2021-01-17 21:11:21 +10:00
David Reid
361983f770
Update the resource manager example to work with Emscripten.
2021-01-17 18:51:44 +10:00
David Reid
30b55db681
Fix a bug with looping streaming sounds.
2021-01-17 18:38:17 +10:00
David Reid
13126b4ddf
Fix a bug with the resource manager.
...
This was not setting the NON_BLOCKING flag correctly when NO_THREADING
is set.
2021-01-17 18:18:14 +10:00
David Reid
dc0ca7072b
Add support for running the resource manager without a job thread.
...
This is useful for platforms that do not have support for threading or
programs that do not want to use an extra thread for resource
management and would rather process jobs manually.
When configuring the resource manager to not use threading, the
MA_RESOURCE_MANAGER_FLAG_NO_THREADING flag must be set in the config.
This implicitly enables the MA_RESOURCE_MANAGER_FLAG_NON_BLOCKING flag
because it requires programs to manually call
ma_resource_manager_process_next_job(), and since it's assumed that
won't ever be called from another thread, you'd never want that to be
blocking.
This sets up a framework for getting the resource manager working with
Emscripten.
2021-01-17 13:41:09 +10:00
David Reid
9e6042f698
Remove loop detection code for now.
...
This needs a rethink. My test is no longer looping. Needs further
investigation.
2021-01-17 10:29:09 +10:00
David Reid
dd52456571
Start using the onGetRequiredInputFrameCount callback for nodes.
...
This is an optional callback and is used by miniaudio as a hint to help
it determine how many input frames to read at a time. Without this,
miniaudio needs to guess how many frames to read, and in certain
situations may end up overestimating. This callback is only useful for
nodes that process input and output frames at different rates, i.e.
nodes that perform resampling.
2021-01-17 09:10:38 +10:00
David Reid
c85993ccf4
Scale the volume up a bit for the vocoder example.
2021-01-16 21:54:08 +10:00
David Reid
c4a07387f6
Get the bus order correct on the vocoder example.
2021-01-16 21:41:02 +10:00
David Reid
ec077e7974
Fix some warnings with GCC.
2021-01-16 21:15:38 +10:00
David Reid
306922e024
Clarification to the duplex_effect example.
2021-01-16 20:40:53 +10:00
David Reid
2e22affe38
Update ma_audio_buffer_ref_init() to take a buffer.
...
This saves a mandatory call to ma_audio_buffer_ref_set_data(). With
this change, an ma_audio_buffer_ref_init() call is all that is required
to initialize a usable data source.
2021-01-16 20:36:19 +10:00
David Reid
6a8d450e87
Add some documentation for ma_vocoder_node.
2021-01-16 20:13:57 +10:00
David Reid
6c4bdaf7e0
Add vocoder node and duplex example.
2021-01-16 19:48:12 +10:00
David Reid
d3d98ee3a2
Add ma_audio_buffer_ref.
...
This is a data source whose backing data is an application-controlled
pointer. No data is copied. It's a way of efficiently wrapping a raw
buffer and using it as a data source.
2021-01-16 17:51:50 +10:00
David Reid
aeb51a8eeb
Simplify ma_node_config_init().
2021-01-16 15:56:30 +10:00
David Reid
9a1885ebdc
Revert the recent metadata functionality.
...
Change of mind on how this should work.
2021-01-16 15:05:26 +10:00