Fri Jan 14 01:11:47 2000  Tim Janik  <timj@gtk.org>

	* bsepcmdevice-alsa.c: added compatibility defines for ALSA lib < 0.5.0
	to alias snd_pcm_playback_drain(), snd_pcm_channel_flush() work around
	lack of snd_card_get_longname() and snd_card_get_name().
	fixed up the rest to work with 0.5.0.

Thu Jan 13 18:12:51 2000  Tim Janik  <timj@gtk.org>

	* bsedevice.[hc]: new object, taking over part of BsePcmDevice's
	responsibilities as its parent type.

	* bsepcmdevice.[hc]:
	* bsepcmdevice-oss.[hc]:
	* bsepcmdevice-alsa.[hc]: minor adaptions because of the hirarchy
	change.

Wed Jan 12 23:11:31 2000  Tim Janik  <timj@gtk.org>

	* bseplugin.[hc]: exported enum types support.

	* bseexports.h: provide support for auto-generated exported enum
	types.

	* bseenums.[hc]: provide bse_enum_type_register() and
	bse_enum_complete_info() to register exported enums.

	* bsestorage.c (bse_storage_parse_param_value): humpf, flags value
	parsing case was missing.
	(bse_storage_put_param): store enum values by names to avoid
	ambiguities.

	* mkenums.pl (parse_trigraph): allow white spaces in nick names.

Sun Jan  9 22:58:42 2000  Tim Janik  <timj@gtk.org>

	* mkenums.pl: enforce real trigraphs (again), so /*< skip >*/
	is recognized while /* < skip > */ is not.

	* *.h: bunch of trigraphs adapted.

Sun Jan  9 13:42:01 2000  Tim Janik  <timj@gtk.org>

	* bsegconfig.c (bse_gconfig_do_default_revert): 
	(bse_gconfig_revert): walk *all* classes when reverting the parameters,
	not only the topmost one.

	* bseobject.c (bse_object_do_set_name): don't pass destroy notifier when
	name == NULL.

Sun Jan  9 12:49:29 2000  Tim Janik  <timj@gtk.org>

	* bsegconfig.[hc]: moved the BseGConfig object from bseglobals.[hc].
	implement object functions as methods in class so they can be overridden.

	* bseglobals.[hc]: cleanups, provide private interface for BseGConfig.

	* bseenums.[hc] (bse_error_from_errno): new function to map errno values
        to BSE_ERROR_* values.

Fri Jan  7 23:15:08 2000  Tim Janik  <timj@gtk.org>

	* bsepcmdevice-alsa.c (bse_pcm_device_alsa_retrigger): use ALSA's
	snd_pcm_channel_go() to retrigger input and output.

	* bseheart.c (bse_heart_dispatch): be a bit laxer in overrun detection,
	i.e. allow two (+1) extra input chunks.

	* bsepcmdevice.[hc]: scratched obsolete in_playback() method.

	* bsepcmdevice-alsa.c (bse_pcm_device_alsa_setup): operate in
	non-blocking mode.

	* bsepcmdevice-alsa.c (bse_pcm_device_alsa_update_state): fixed bug,
	return amount of bytes left to write.

Tue Jan  4 20:25:44 2000  Tim Janik  <timj@gtk.org>

	* bsetype.[hc] (bse_type_next_base): new function that works like
	bse_type_parent() but in the opposite direction for a given
	parent<->child inheritance path.

Mon Jan  3 17:08:08 2000  Tim Janik  <timj@gtk.org>

	* Makefile.am: removed bseconfigpaths.h build rule.
	removed building of TAGS file for now.

Thu Dec 30 19:19:22 1999  Tim Janik  <timj@gtk.org>

	* bsestorage.[hc]: prefix flag values, provide one to flag default
	value storage.

	* bseobject.c (bse_object_do_store_private): save object parameters
	even if tehy default when BSE_STORAGE_PUT_DEFAULTS (storage).

Thu Dec 30 05:47:24 1999  Tim Janik  <timj@gtk.org>

	* bseheart.[hc] (bse_heart_unregister_all_devices): provide function to
	perform necessary cleanups after all sources got detached.

Wed Dec 29 22:41:27 1999  Tim Janik  <timj@gtk.org>

	* bseglobals.[hc]: added BseGConfig object that exports the BseGlobals
	values through its parameter interface, and provides notification for
	when BseGlobals are locked/unlocked.

	* bseglobals.c (bse_globals_unlock): clear up hunk/chunk memory pool
	when BseGlobals are unlocked.

	* bseheart.c: squeezy squeezy, the GSource was stealing a BseHeart ref
	count that it didn't own.

	* bsepcmdevice-oss.c (bse_pcm_device_oss_update_state): grr, the es1371
	driver in 2.3.34 can report audio_buf_info.bytes greater than
	audio_buf_info.fragsize * audio_buf_info.fragstotal, which could
	cause int wrap arounds in calculations we perform.

Wed Dec 29 14:36:17 1999  Tim Janik  <timj@gtk.org>

	* bseheart.[hc]: completely revised the GSource part according to
	docs/bse-heart.txt, highlights are over- and under-run detection
	with retriggering and variable latency setting.
	(bse_heart_mix_chunks): changed semantics, we unref and free the
	chunk list now and return a newly created chunk.

	* bsepcmdevice.[hc]: removed a lot of cruft such as the _iready() and
	oready() interfaces and the capture cache.
	implemented high level data processing API with input and output queues
	according to docs/bse-heart.txt. added ability to retrigger input and
	output for over-/under-run situations.
	
	* bsepcmdevice-oss.c:
	* bsepcmdevice-alsa.c: bug fixes, minor adaptions to the BsePcmDevice
	structure changes, more debug messages.

Sun Dec 26 18:51:35 1999  Tim Janik  <timj@gtk.org>

	* bseobject.[hc]: finally introduce a get_icon() class function and
	provide icon_changed notification if necessary.

Wed Dec 22 18:57:10 1999  Tim Janik  <timj@gtk.org>

	* bsepcmdevice-oss.c (bse_pcm_device_oss_open): 
	(bse_pcm_device_oss_setup): open() the device always non-blocking, since newer
	kernels apparently don't return EBUSY upon opening anymore.

Tue Dec 21 06:54:26 1999  Tim Janik  <timj@gtk.org>

	* bseobject.[hc] (bse_object_get_name_or_type): added convenience function.

Fri Dec 17 16:57:59 1999  Tim Janik  <timj@gtk.org>

	* bseparam.[hc]: added parameter nick name for GUI uses.
	* *.c: bunch of adaptions to bse_param_spec_*() calls to supply nick names.

Fri Dec 17 08:48:29 1999  Tim Janik  <timj@gtk.org>

	* bsemixer.[hc] (bse_hunk_fill): new function to fill a hunk with a
	value.

Thu Dec 16 10:08:25 1999  Tim Janik  <timj@gtk.org>

	* bseplugin.c (bse_plugin_dir_list_files): return a sorted list of
	file names.

Sun Dec 12 09:06:29 1999  Tim Janik  <timj@gtk.org>

	* bsesource.c (bse_source_set_input): don't calc history here,
	we do that on demand.

Sun Dec 12 04:50:19 1999  Tim Janik  <timj@gtk.org>

	* bsepcmdevice-oss.c (bse_pcm_device_oss_open): start playback with
	read() here already, normally select(in) should do, but that is not
	the case for pseudo-OSS drivers in the kernel.

	* bsepcmdevice-oss.c (bse_pcm_device_oss_update_caps): fixed bug with
	max_fragment_size readout, this could stop OSS card drivers from
	working if they supported all fragment sizes we check for.

	* <sigh> duplex still doesn't work correctly here, this defers further
	work until i got a new machine that *does* work in duplex mode. it's
	certainly not the fault of all the 3 soundcards and 5 drivers that i
	eventually tested here ;(

Sat Dec 11 05:34:17 1999  Tim Janik  <timj@gtk.org>

	* bsetype.h (BSE_DUMMY_TYPE): install a dummy type, needed when normal
	type defs had to be disabled.

	* bsepcmdevice-alsa.[hc]: first implementation of an ALSA based pcm
	driver.

Fri Dec 10 16:19:51 1999  Tim Janik  <timj@gtk.org>

	* bsesource.c (bse_source_default_skip_chunk): hm, changed ckip_chunk()
	semantics, reinvoking calc_chunk() doesn't really go along with
	different source cycle indices. unless we change skip_chunk() to be
	comprehensively called for all BseHeart sources before the global
	index is increased, one basically can't call ref_chunk() from
	this method.

Fri Dec 10 08:26:00 1999  Tim Janik  <timj@gtk.org>

	* bsesnet.c (bse_snet_reset): reset all sources that we serve
	as a container for.

	* bsesource.c: we prepare isource in two cases, for osources that
	are already prepared and get a new isource, for osources that are
	currently being prepared and have isources as input.
	we mostly do not reset sources anymore.

Thu Dec  9 23:55:00 1999  Tim Janik  <timj@gtk.org>

	* bsepcmdevice.[hc]:
	(bse_pcm_device_iready):
	(bse_pcm_device_oready):
	return number of writable blocks instead of just boolean.
	(bse_pcm_device_write): 
	(bse_pcm_device_read): 
	adjust left space appropriatedly.

Thu Dec  9 16:34:15 1999  Tim Janik  <timj@gtk.org>

	* bsesource.[hc]:
	(bse_source_do_cycle): 
	(bse_source_do_prepare): 
	(bse_source_calc_history): 
	cleanups/optimizations to the ochannel history buffer. fixed a bug
	introduced with recent cleanups that completely disabled history.
	(bse_source_do_shutdown): do proper cleanups through function calls,
	and don't reinvent the wheel all over ;)

Thu Dec  9 03:23:30 1999  Tim Janik  <timj@gtk.org>

	* bsesource.c (bse_source_set_input): don't allow shortcircuiting
	within the same source (BSE_ERROR_SOURCE_BAD_LOOPBACK).

	* bseenums.[hc]: BSE_ERROR_STREAM_* cleanups.

	* bsechunk.[hc]: return chunk->hunk from bse_chunk_complete_hunk() 
	for convenience.

Sat Dec  4 23:48:57 1999  Tim Janik  <timj@gtk.org>

	* bseproject.[hc]: added functions
	(bse_project_start_playback): retrigger playback for all supers.
	(bse_project_stop_playback): reset all currently playing supers.

	* bsesnet.c:
	(bse_snet_prepare): lock object (and globals).
	(bse_snet_reset): unlock object (and globals).

	* bsesong.c:
	(bse_song_prepare): lock object (and globals).
	(bse_song_reset): unlock object (and globals).

	* bsesongsequencer.c: no need to do locking in
	bse_song_sequencer_destroy() and bse_song_sequencer_setup() that's what
	the BseSource PREPARED state cares about.

	* bsesource.c (bse_source_reset): finally got around to implement
	this function ;)

Sat Dec  4 20:59:22 1999  Tim Janik  <timj@gtk.org>

	* got rid of a bunch of dead sources: bsetext.[hc], bsestream.[hc],
	bsefilestream.[hc], bsenullstream.[hc], bsepcmstream.[hc],
	bsepcmstream-oss.[hc] and bsemaster.[hc].
	removed olaf's testmixer.c, look at ../test/testmixer.bse.

Sat Dec  4 16:30:14 1999  Tim Janik  <timj@gtk.org>

	* bsesource.[hc]: introduce (*skip_chunk)() member function. per cycle
	we now guarrantee that either calc_chunk() or skip_chunk() gets called
	per output channel. even if no output sources are connected to this
	channel.
	(bse_source_do_prepare): 
	(bse_source_do_reset): attach/detach to from BseHeart.

Fri Dec  3 23:44:22 1999  Tim Janik  <timj@gtk.org>

	* bsesource.[hc]: source flag cleanups, introduced *attached flags for
	BseHeart.

	* bsemain.c (bse_parse_args): construct the debug keys from generated
	enum list.

	* *.[hc]: generic objetc flags cleanups, s/BSE_DEBUG/BSE_IF_DEBUG/.

Thu Dec  2 21:36:00 1999  Tim Janik  <timj@gtk.org>

	* bsesource.[hc]: removed pausing junk.
	(bse_source_do_cycle): don't cycle input sources, this is done
	centrally by BseHeart now.

	* bseheart.[hc]: added pcm device registry.

Wed Dec  1 23:53:23 1999  Tim Janik  <timj@gtk.org>

	* bseheart.[hc]: started out on a new bse core engine, based on
	bstmaster.[hc] and bsemaster.[hc].

	* bseenums.[hc] (BseErrorType): cleaned up some of the stream error
	enums, added device errors enums.

Wed Dec  1 22:57:24 1999  Tim Janik  <timj@gtk.org>
	
	* bsepcmdevice-oss.[hc]: pcm device backend for OSS (based on
	duplex.c and bsepcmstream-oss.[hc]).
	
	* bsepcmdevice.[hc]: new base type for dealing with pcm devices
	(code redesigned, based on bsestream.[hc] and bsepcmstream.[hc]).

Sat Nov 27 09:11:32 1999  Tim Janik  <timj@gtk.org>

	* bseobject.c (bse_object_class_init): install parasite parsers.

	* bseparasite.c:
	(store_parasite_list): 
	(parasite_parser): implemented storing/parsing abilities for parasites.

	* bseobject.[hc]: cleaned up the custom parser interface.
	(bse_object_do_try_statement): feature custom parsers.
	(bse_object_store): emit store when storing.

Sat Nov 27 05:40:45 1999  Tim Janik  <timj@gtk.org>

	* bsestorage.c (bse_storage_flush_fd): terminate with newline if we
	don't have binary data.

	* bsesource.c:
	(bse_source_do_store_private): store input links here.
	(bse_source_do_restore_private): restore input links (deferred until
	project emits complete_restore).

	* bsesource.[hc]: new functions bse_source_get_ochannel_id and
	bse_source_get_ichannel_id to get channel ids from their names.

	* bseproject.c (bse_project_restore): emit complete_restore upon
	completion.

	* bsecontainer.c (bse_container_store_termination): eeek, need to chain
	parent class handler here.

Tue Nov 23 23:55:49 1999  Tim Janik  <timj@gtk.org>

	* bseparasite.[hc]: started parasite implementation. only floats
	are featured currently, and we need saving/parsing hooks.

	* bseobject.[hc] (bse_object_kill_qdata_no_notify): remove a certain
	data poriotn without notification.

Sat Nov 20 12:27:21 1999  Tim Janik  <timj@gtk.org>

	* bseparam.h (BseParamBits): added BSE_PARAM_HINT_RADIO.

	* bseutils.[hc]: added bse_note_from_freq(), bse_note_to_freq() and
	bse_note_to_tuned_freq(), we use the constants from bseglobals.c.

	* bseglobals.h (BSE_MAX_NOTE): changed this to 123=dis+7=19912.127Hz,
	so we stay below BSE_MAX_OSC_FREQ_d (and below 22050).
	added BSE_MAX_OSC_FREQ_d=20000 and BSE_MIN_OSC_FREQ_d=1/20000.

	* bseglobals.c (BSE_LN_OF_2_RAISED_TO_1_OVER_12_d): added constant for
	ln(2^(1/12)).

	* bsesource.c (bse_source_do_reset): 
	* bsesource.c (bse_source_init): default initialize ->index with 0 not
	-1, so we are always greater than ->start.

Sun Nov 14 19:44:51 1999  Tim Janik  <timj@gtk.org>

	* bseglobals.h: eeeek, bad change necessary: BSE_KAMMER_NOTE is actually
	A' not A-0, and it's MIDI code is actually 57, not 69. this displaces
	all saved songs by one octave, but there are hopefully not too much of
	them out there yet ;)

Sun Nov 14 05:52:23 1999  Tim Janik  <timj@gtk.org>

	* bsesnet.c (bse_snet_calc_chunk): use bse_hunk_mix () to do the
	mixing for us.

	* bsemixer.c (bse_hunk_mix): don't multiply added values of a qualified
	pointer with sizeof (*pointer).

Sun Nov 14 05:28:37 1999  Tim Janik  <timj@gtk.org>

	* bsepcmstream-oss.c (pcm_stream_oss_open_dsp): disable duplex for now.

	* bsedefs.h: make sure we have PI, BSE_MAX_SAMPLE_VALUE and
	BSE_MIN_SAMPLE_VALUE defined. oh, and i recently added BSE_EPSILON
	and BSE_EPSILON_CMP to provide generic double/float comparision
	against a certain quantity (BSE_EPSILON=1e-6).

Sat Nov 13 04:40:45 1999  Tim Janik  <timj@gtk.org>

	* bsepcmstream-oss.c: reordered stuff so initialization actually works
	with OSS as well.

Fri Nov 12 04:41:59 1999  Tim Janik  <timj@gtk.org>

	* bsemixer.[hc]: new files to cover common mixing requirements for
	hunks (maybe also generic buffers at a later point).
	this file is a good candidate to get partly generated upon compilation
	time in the future.

	* bsechunk.c (bse_hunk_free): reordered arguments so n_tracks comes
	always first.
	(bse_hunk_copy): same here.

Fri Nov 10 16:04:08 1999  Tim Janik  <timj@gtk.org>

	* bseenums.[hc]: minor fixes/additions to BSE_ERROR_ enum values.

	* bsepcmstream-oss.c: use new BSE_ERROR_ enum values.

Mon Nov  8 22:09:49 1999  Tim Janik  <timj@gtk.org>

	* bsepcmstream-oss.c (pcm_stream_oss_open_dsp): set blocking behaviour
	prior to any ioctl()s.
	(pcm_stream_oss_set_dsp): set BSE_PCMSA_FRAGMENT_SIZE right at the
	beginning (probably still not enough for OSS).

Mon Nov  8 02:42:44 1999  Tim Janik  <timj@gtk.org>

	* bsepcmstream.[hc]: 
	* bsepcmstream-oss.c: added an incredibly bad hack for the microphone
	source to plugin. this does give me the opportunity to test stuff untill
	the pcm side is redesigned.

Mon Nov  8 02:01:31 1999  Tim Janik  <timj@gtk.org>

	* bseobject.h (BSE_NOTIFY): don't notify objects that are destroyed.
	* bseobject.c (bse_object_do_shutdown): notify object of ::destroy,
	allthough it is of course destroyed (prevent the BSE_NOTIFY()
	sanity check for destroyed objects in this case).

	* bsesnet.[hc]: make the sole input channel we have a multi track
	channel (well, actually only stereo for the moment).
	(bse_snet_calc_chunk): mix input hunk to stereo if necessary.

	* bsesource.[hc]: added max_n_tracks field to BseSourceIChannelDef.
	enforced further usage of the BSE_SOURCE_*() macros, instead of direct
	class usage. renamed the class-> ichannels and ochannels fields to
	ichannel_defs and ochannel_defs to keep distinction to the ->ochannels
	member in sources (and because these are actually *definitions* only).
	moved BseSourceInput ->history field, this actually belongs into the
	BseSourceIChannelDef structure.
	got rid of the history argument to bse_source_set_input() and the
	->add_input() member function that way.
	made BSE_SOURCE_ICHANNEL_DEF() and BSE_SOURCE_OCHANNEL_DEF() return
	pointers.
	(bse_source_ref_state_chunk):
	(bse_source_ref_chunk): reduced code duplication by moving 98% percent
	of the code into an inlined bse_source_fetch_chunk().
	(bse_source_fetch_chunk): guard against negative indices.
	(bse_source_do_prepare): recalc history for all output channels.
	(bse_source_do_remove_input): notify the output source about io_changed.
	(bse_source_get_input): new function to return input handle for a given
	channel.

	* bseenums.[hc]: added BSE_ERROR_SOURCE_TOO_MANY_OTRACKS
	error case.

Sun Nov  7 08:12:21 1999  Tim Janik  <timj@gtk.org>

	* bsesnet.c (N_RAND_BLOCKS): uhg, don't kill my speakers with that
	test sound.

Sun Nov  7 03:05:39 1999  Tim Janik  <timj@gtk.org>

	* bsesnet.[hc]: create a mono input channel.

Sat Nov  6 19:21:06 1999  Tim Janik  <timj@gtk.org>

	* bsesource.c: notify outside world when input/output channels got
	added/removed. we simply notify "io_changed" in this case for now.

	* bseobject.c (bse_object_do_destroy): squeezed a bug that had been
	causing random crashes recently. basically, we left invalid pointers
	in the object name hash table.

Sat Nov  6 05:55:59 1999  Tim Janik  <timj@gtk.org>

	* icons/snet.xcf: 
	* icons/snet.c: slight color change.

Fri Nov  5 04:49:05 1999  Tim Janik  <timj@gtk.org>

	* bsesnet.[hc]: added necessary bits to serve as output source.

	* bsechunk.[hc] (bse_hunk_copy): new function to alloc a new hunk filled
	with sample data.

	* bsesource.h:
	renamed BSE_SOURCE_ICHANNEL() to BSE_SOURCE_ICHANNEL_DEF() and
	renamed BSE_SOURCE_OCHANNEL() to BSE_SOURCE_OCHANNEL_DEF().
	introduced BSE_SOURCE_OCHANNEL() to return a pointer to the source's
	output channel connection.

	* bsesource.c: pass normal ochannel_ids to calc_history as well,
	instead of hackery 0-starting indices. use BSE_SOURCE_OCHANNEL() over
	the place, instead of direct strcuture member adressing.

Wed Nov  3 21:50:38 1999  Tim Janik  <timj@gtk.org>

	* bseenums.[hc]: don't return const strings, this is extremely annoying.

	* bseplugin.c (bse_plugin_get_export_spec): fixed a bad bad bug here,
	we were walking the export specs by sizeof(BseExportSpec) instead of
	the appropriate sizeof(BseExportObject) or sizeof(BseExportProcedure),
	depending on what type of specs we actually handle. this led to only
	the first type being recognized (which was moderatedly mild, could
	have insanely crashed instead ;).

Wed Nov  3 20:05:14 1999  Tim Janik  <timj@gtk.org>

	* bsecategories.c (bse_categories_register_icon): category icons stay
	alive throughout a program's life time.

	* bseobject.c (bse_object_get_icon): removed icon cruft from object
	class and simply provided bse_object_get_icon(). there might be a
	notifier someday to indicate that an object's icon should get
	refetched.

	* bseutils.h: provide simple refcounting functions for BseIcons,
	facilitate permanent icon ref_counts.

Sun Oct 31 16:20:49 1999  Tim Janik  <timj@gtk.org>

	* bsestorage.c (bse_storage_parse_bin_data): eeek, fixed a bad bad bug.
	we weren't saving/restoring the current parsing position around binary
	block reads.
	(bse_storage_ensure_bin_offset): 
	(bse_storage_restore_offset): retrive/restore current file offset.

Fri Oct 29 11:27:47 1999  Tim Janik  <timj@gtk.org>

	* bseplugin.c: minor const correctness fixes.

Fri Oct 15 02:09:24 1999  Tim Janik  <timj@gtk.org>

	* bsemain.c (bse_parse_args): added --bse-debug and --bse-no-debug args
	and featuring of BSE_DEBUG and BSE_NO_DEBUG environment variables.

	* bseobject.c: wrapped up NOTIFY and OBJECTS debugging stuff.

	* bsetype.c: wrapped up CLASSES debugging stuff.

Fri Oct 15 00:20:30 1999  Tim Janik  <timj@gtk.org>

	* icons/Makefile.am: 
	* icons/Makefile.icons: setup ./icons subdirectory.

Fri Oct 15 00:00:41 1999  Tim Janik  <timj@gtk.org>

	* bsesnet.c: add category with ugly test-icon for an internal object.

Thu Oct 14 23:28:27 1999  Tim Janik  <timj@gtk.org>

	* bseutils.[hc]: added bse_icon_from_pixdata() to create a new icon
	structure from a pixdata buffer (and decode the run-length encoding).

Wed Oct 13 06:05:55 1999  Tim Janik  <timj@gtk.org>

	* Makefile.am: adapted some stuff so loging domains and fallback
	plugin names are featured for builtin plugins as well.

Tue Oct 12 20:15:34 1999  Tim Janik  <timj@gtk.org>

	* bseplugin.[hc]: recognize predefined plugin names, only evaluate
	plugin-name specification for strings for builtin_* plugins, create
	their symbols from their underscored file name.
	removed some export stuff.
	added object type support for plugins.

	* bseexports.h: moved lots of new stuff here, fixed up object types.

	* mkbuiltinlist.pl: output the actuall file name of builtin plugins
	as symbol part (with non-identifier chars converted into '_').

Fri Oct 8 15:04:40 1999  Tim Janik  <timj@gtk.org>

	* bseprocedure.[hc]: removed proecedure category implementation,
	adapted code to work with bsecategories.[hc].

Thu Oct  7 00:17:38 1999  Tim Janik  <timj@gtk.org>

	* glib-extra.[hc]:
	nuked g_pattern_spec_init() and g_pattern_spec_free_segs() in favour of
	g_pattern_spec_new() and g_pattern_spec_free() which create and free a
	newly allocated structure. also cleverly optimized g_pattern_spec_new()
	by counting tail and head wildcards and jokers. from these numbers, we
	can make better judgement whether to match from tail or head and also
	got rid of a bunch of strchr() calls.

Wed Oct  6 23:53:07 1999  Tim Janik  <timj@gtk.org>

	* bsecategories.[hc]: new files, implementing a more general
	categorization approach. intended to take over the procedure category
	administration and feature object categories as well (see also
	docs/bse-categories.txt on this topic).

Tue Oct  5 13:49:57 1999  Tim Janik  <timj@gtk.org>

	* bseexports.h: added export structure for objects.
	* bseplugin.h: extended macro magic to feature object types.
	* bseplugin.c: register, reinit, unload and complete exported
	and builtin object types.

Fri Oct  1 07:29:32 1999  Tim Janik  <timj@gtk.org>

	* bsemaster.c (bse_master_do_cycle): added ability to mix multiple
	stereo songs together.

	* some const corrections.

Thu Sep 30 09:18:58 1999  Tim Janik  <timj@gtk.org>

	* bsesample.c (bse_sample_do_shutdown): 
	* bsepattern.c (bse_pattern_do_shutdown): 
	* bseinstrument.c (bse_instrument_do_shutdown): 
	* bsesong.c (bse_song_do_shutdown): 
	* bseproject.c (bse_project_do_shutdown):
	remove/release items/objects in shutdown handler, rather than destroy.

	* bseobject.c (bse_object_unlock): release global lock *after* the
	->unlocked class method has been invoked.

	* bseobject.[hc]: changed destruction mechanism to using an intermediate
	->shutdown method. this eases class destruction, shutdown is invoked
	prior to the object's destroy notification and one ref_count is at least
	being held. once the final reference count dropps, the ->destroy method
	is actually invoked.
	(bse_object_set_valist): 
	(bse_object_set_param): check for non-destroyed object first.

	* bsecontainer.[hc] (bse_container_add_item_unrefed): new function for
	containers to manage (non-destroyed) items, without holding an extra
	ref count on them, we use destroy notification from BseItem for cleanup.

	* bseitem.c (bse_item_do_shutdown): remove item from container in
	->shutdown instead of ->destroy.

	* bsesource.c: added some !destroyed checks.
	(bse_source_do_shutdown): use ->shutdown instead of ->destroy.

Sat Sep 27 12:30:02 1999  Tim Janik  <timj@gtk.org>

	* bsesnet.[hc]: new super type to manage source networks (skeleton
	only).

Wed Sep 22 06:24:00 1999  Tim Janik  <timj@gtk.org>

	* bsetype.[hc]: lots of code cleanups and bug fixes over the last few
	days. significantly changed allocation system, so TypeNodes are not
	themselves relocatable anymore (certain structure parts are though).
	nodes get allocated with their supers list in one piece now.

Thu Sep 16 09:14:19 1999  Tim Janik  <timj@gtk.org>

	* bsetype.[hc]: started out on bse_type_class_lastref() as a
	preparation for delayed destruction.
	we need to catch FIXMEs.

Mon Sep 13 05:19:17 1999  Tim Janik  <timj@gtk.org>

	* Makefile.am: minor autogeneration fixups, use cp instead of mv.

1999-06-03    <timj@dhcpd7.redhat.com>

	* bsesong.c: fix typo.

1999-05-31    <timj@dhcpd7.redhat.com>

	* bsepcmstream-oss.c (pcm_stream_oss_set_dsp): ignore failing fragment
	size settigns for now, so we work with the OSS driver.
	
1999-05-28  Tim Janik  <timj@couch.wilmington.net>

	* bsepattern.c (save_note): don't prefix seq ids with an 0, which
	would make them octal nombers.

Mon May 17 02:52:49 1999  Tim Janik  <timj@gtk.org>

	* bunch of Makefile and configure changes so make distcheck works.
	BSE is version 0.2.0 now.

Sat May 15 23:23:05 1999  Tim Janik  <timj@gtk.org>

	* bsesongmixer.c (bse_mixer_activate_voice): don't set notes on inactive
	voices.

Wed May  5 09:16:41 1999  Tim Janik  <timj@gtk.org>

	* bseeffect*.[hc]: started out on effect objects, they are fairly
	lightweight (and somewhat uncommon) objects, in that they are managed
	by BsePattern and in principle serve as simple operators and id
	containers only. the reason to implement them as real objects, rather
	than plain auxillary structures is to provide the convenient BseObject
	facilities, i.e. a generalized parameter interface for GUI generation
	and state restauration as well as basic locking facilities during
	playing.
	next step is to featured effects in the song sequencer.

Wed May  4 16:43:45 1999  Tim Janik  <timj@gtk.org>

	* nuked inappropriate ChangeLog stuff (about 15 entries over the
	last year). To sum it up, BSE implements its own type system now,
	which features a bunch of different fundamental types, e.g. the
	generic parameters, enumeration and flags classes, objects with
	single inheritance, multiple interfaces and procedure classes.
	the generic parameter interface is used to route most of the setting
	and getting of BSE objects through a central point, which serves for
	object state recording to implement undo facilities and to serialize
	objects (though there are some tweaks to that since we have to feature
	inter-object links in the trees). the type system is layed out in a
	dynamic fashion, so that new types can be registerd by third party
	plugins and get their implementation loaded (and unloaded) on demand.
	the basic infra structure for modular synthesis sources and filters
	is also in place, though BseSong doesn't currently integrate very
	nicely into that and it deserves some serious testing.

Tue Mar 24 04:28:26 1998  Tim Janik  <timj@gtk.org>

	* started ChangeLog.
