diff options
author | Joerg Mueller <nexyon@gmail.com> | 2011-07-28 17:58:59 +0400 |
---|---|---|
committer | Joerg Mueller <nexyon@gmail.com> | 2011-07-28 17:58:59 +0400 |
commit | bd6ca0570e089afc1d29b4f18b8bb6cc086545ea (patch) | |
tree | 30b512203aa9c5e73eb88fcb5e7a2afaf94770b9 /source/blender/blenkernel/intern/sound.c | |
parent | 90b64737f12f749b93e6a609b1b3680938ef6b85 (diff) |
3D Audio GSoC:
Implemented basic audio animation.
* AnimatableProperty: Propper cache writing and spline interpolation for reading (the solution for stair steps in audio animation)
* Animatable properties so far are: volume, pitch, panning
* Users note: Changing the pitch of a sound results in wrong seeking, due to the resulting playback length difference.
* Users note: Panning only works for mono sources, values are in the range [-2..2], this basically controls the angle of the sound, 0 is front, -1 left, 1 right and 2 and -2 are back. Typical stereo panning only supports [-1..1].
* Disabled animation of audio related ffmpeg output parameters.
* Scene Audio Panel: 3D Listener settings also for Renderer, new Volume property (animatable!), Update/Bake buttons for animation problems, moved sampling rate and channel count here
Diffstat (limited to 'source/blender/blenkernel/intern/sound.c')
-rw-r--r-- | source/blender/blenkernel/intern/sound.c | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/source/blender/blenkernel/intern/sound.c b/source/blender/blenkernel/intern/sound.c index 64ba9ed362a..6e8b26c6ca6 100644 --- a/source/blender/blenkernel/intern/sound.c +++ b/source/blender/blenkernel/intern/sound.c @@ -32,10 +32,11 @@ #include "BKE_context.h" #include "BKE_library.h" #include "BKE_packedFile.h" -#include "BKE_fcurve.h" #include "BKE_animsys.h" #include "BKE_sequencer.h" +// evil global ;-) +static int sound_cfra; struct bSound* sound_new_file(struct Main *bmain, const char *filename) { @@ -411,6 +412,31 @@ void sound_update_scene_sound(void* handle, struct bSound* sound) AUD_updateSequenceSound(handle, sound->playback_handle); } +void sound_set_cfra(int cfra) +{ + sound_cfra = cfra; +} + +void sound_set_scene_volume(struct Scene *scene, float volume) +{ + AUD_setSequencerAnimData(scene->sound_scene, AUD_AP_VOLUME, CFRA, &volume, (scene->audio.flag & AUDIO_VOLUME_ANIMATED) != 0); +} + +void sound_set_scene_sound_volume(void* handle, float volume, char animated) +{ + AUD_setSequenceAnimData(handle, AUD_AP_VOLUME, sound_cfra, &volume, animated); +} + +void sound_set_scene_sound_pitch(void* handle, float pitch, char animated) +{ + AUD_setSequenceAnimData(handle, AUD_AP_PITCH, sound_cfra, &pitch, animated); +} + +void sound_set_scene_sound_pan(void* handle, float pan, char animated) +{ + AUD_setSequenceAnimData(handle, AUD_AP_PANNING, sound_cfra, &pan, animated); +} + void sound_update_sequencer(struct Main* main, struct bSound* sound) { struct Scene* scene; |