(Some of the audio features do a version check in do_versions
(usiblender.c, readfile.c) and depend on this to convert fields in older
(<2.28) files).
I also removed the "2.27.Newpy.1" line from headerbuttons.c, it now shows
"www.blender.org 228" again.
size of this;
Finally, the Sequencer audio support and global audio/animation sync stuff!
(See http://intrr.org/blender/audiosequencer.html)
Stuff that has been done:
./source/blender/blenloader/intern/writefile.c
./source/blender/blenloader/intern/readfile.c
Added code to make it handle sounds used by audio strips, and to convert
Scene data from older (<2.28) versions to init Scene global audio settings
(Scene->audio) to defaults.
./source/blender/include/BSE_seqaudio.h
./source/blender/src/seqaudio.c
The main audio routines that start/stop/scrub the audio stream at
a certain frame position, provide the frame reference for the current
stream position, mix the audio, convert the audio, mixdown the audio
into a file.
./source/blender/makesdna/DNA_sound_types.h
Introduced new variables in the bSound struct to accomodate the sample
data after converted to the scene's global mixing format (stream, streamlen).
Also added a new flag SOUND_FLAGS_SEQUENCE that gets set if the Sound
belongs to a sequence strip.
./source/blender/makesdna/DNA_scene_types.h
Added AudioData struct, which holds scene-global audio settings.
./source/blender/makesdna/DNA_sequence_types.h
Added support for audio strips. Some variables to hold Panning/Attenuation
information, position information, reference to the sample, and some flags.
./source/blender/makesdna/DNA_userdef_types.h
./source/blender/src/usiblender.c
Added a "Mixing buffer size" userpref. Made the versions stuff initialize
it to a default for versions <2.28.
./source/blender/makesdna/DNA_space_types.h
./source/blender/src/filesel.c
Added a Cyan dot to .WAV files. Any other suggestions on a better color? :)
./source/blender/src/editsound.c
Changes (fixes) to the WAV file loader, re-enabled some gameengine code that
is needed for dealing with bSounds and bSamples.
./source/blender/src/editipo.c
./source/blender/src/drawseq.c
./source/blender/src/editnla.c
./source/blender/src/space.c
./source/blender/src/drawview.c
./source/blender/src/renderwin.c
./source/blender/src/headerbuttons.c
- Created two different wrappers for update_for_newframe(), one which scrubs
the audio, one which doesn't.
- Replaced some of the occurences of update_for_newframe() with
update_for_newframe_muted(), which doesn't scrub the audio.
- In drawview.c: Changed the synchronization scheme to get the current audio
position from the audio engine, and use that as a reference for setting
CFRA. Implements a/v sync and framedrop.
- In editipo.c: Changed handling of Fac IPOs to be usable for audio strips as
volume envelopes.
- In space.c: Added the mixing buffer size Userpref, enabled audio scrubbing
(update_for_newframe()) for moving the sequence editor framebar.
./source/blender/src/editseq.c
Added support for audio strips and a default directory for WAV files which
gets saved from the last Shift-A operation.
./source/blender/src/buttons.c
Added Scene-global audio sequencer settings in Sound buttons.
./source/blender/src/sequence.c
Various stuff that deals with handling audio strips differently than
usual strips.
instead of drawing everything again, in all windows, it restricts to
the active and previous active object. when there are more objects to
be redrawn, it does a normal swapbuffers.
Result is it all redraws & selects a lot faster in complex scenes
* Little fix in "BallTable" routine when moving mouse vertical out of
the 3d window.
In fact, I made it working different, much more cooler!
-------The BallTable Method TM (patent pending)------------
This is a hybrid of the old turntable method (a virtual camara that rotates
around a table) and the trackball method. Mouse moving horizontal, gives
the turntable effect, but with vertical movement it works like a trackball.
So, vertically moving in the middle of the window exactly mimics old
turntable method, moving vertically in the window edge gives a 'twist'
rotation.
Try the turntable for fun! (is in user settings menu)
when you want a new Mesh.
Problem happened when over 16 materials are used for 'collect meshes'.
Blender does not support (yet) more than 16. For clarity, I added a
warning for the user when this occurs
(was bug 370)
* this apple method to do it generates unwanted events, so it could not
be used for the menu mouse-move trick. this is #ifdeffed
* we should re-evaluate if this mousemove should remain in blender...
there are better ways (scrolling contents of pup)
* plus: removed warnings from drawview.c
The problem was that the memory was allocated at the stack, but after the
Python object was created, the pointer to the memory goes invalid.
Thanks to Kester Maddoc for providing a patch - almost 2 weeks ago. Ouch,
I should read my mail a little bit better.
use the internal standards for ascii values > 127
* someone has to check how X11 returns these values! Otherise the old
Blender codes (alt+s = german S) will still work though.
* still have to check this for the buttons!
there)
* replaced with nice local (uiBlock) storage of what goes on in drawing.
it now only calls a glDrawBuffer() and glFinish() when it is actually
needed
Result: interface drawing in general is speedy again, especially for gfx
cards that dont allow frontbuffer drawing, and copy stuff to the frontbuf
with a glFinish() call.
Needs to be tested on all platforms... report to me when you see problems
like menus not drawing correctly, tooltips not drawing or not disappearing,
etc.