Thu Aug 15 21:21:46 2002  Tim Janik  <timj@gtk.org>

	* Makefile.am: add mkcproc.pl to EXTRA_DIST.

	* bsestandardosc.c (bse_standard_osc_update_modules):
	pass on transaction.

Thu Aug  8 18:14:48 2002  Tim Janik  <timj@gtk.org>

	* gslmagic.c (magic_create): fix out-of-bound string access.

Wed Aug  7 11:20:59 2002  Tim Janik  <timj@gtk.org>

	* toyprof.h: flag conditional enum ToyprofBehaviour to be skipped by
	the glib-mkenums.

Tue Aug  6 18:48:13 2002  Tim Janik  <timj@gtk.org>

	* bsepart.h:
	* bseinfo.c:
	* bseconstvalues.h:
	* bseserver.proc:
	* bseutils.[hc]:
	* bswcommon.[hc]:
	* bseglobals.[hc]:
	* gslmath.[hc]: s/halftone/semitone/

	* bsemain.c: adjust dcache node size to 4000 so the node's data plus
	padding will normally fit into a page.

	* gsldatacache.c: wow, gross buggyness in caching logic detected. we
	badly miscalculated the current cache size and thus triggered lots of
	sensless cache sweeps. fixed updating of aged nodes in case of
	GSL_DATA_CACHE_PEEK, introduced AGE_EPSILON which prevents sensless
	aging when frequently accessing the same block, added low_persistency
	flag for dcaches that don't really need to cache data (figured through
	gsl_data_handle_needs_cache()). altered caching logic so we do a
	moderately good job at distributed node sweeping around the upper
	cache memory mark. fixed documentation.

	* gsldatahandle-mad.c: 
	* gsldatahandle-vorbis.c: 
	* gsldatahandle.[hc]: introduce recurse() method on data handles which
	has to be implemented for all data handles that use other data handles
	by invoking a user supplied callback on them. introduce ojob() method
	which can be implemented by data handles to support certain optimization
	jobs. remove coarse_seek() method, if this is really required, it can
	be implemented as an optimization job.

	* gsldatahandle.[hc]: introduce gsl_data_handle_needs_cache() which
	figures whether a data handle will actually benefit from caching (not
	true for data handles which don't do IO themselves, e.g. because they
	are using static memory, a dcache or other data handles).

	* gsldatahandle-mad.c: 
	* gsldatahandle-vorbis.c: 
	* gsldatahandle.c (wave_handle_ojob): return TRUE for the
	GSL_DATA_HANDLE_NEEDS_CACHE ojob query.

	* bseconstant.c (bse_constant_class_init): plug string leakage.

	* bsewaveosc.c (pcm_pos_access_free): plug leakage of position struct.

Sun Aug  4 21:01:56 2002  Tim Janik  <timj@gtk.org>

	* gslloader-mad.c (_gsl_init_loader_mad): flag this loader with
	GSL_LOADER_SKIP_PRECEEDING_NULLS to deal with broken mp3 files.

	* gslmagic.[hc]: implement gsl_magic_list_match_file_skip() which
	allowes for checking magics in files after an initial offset.

	* gslloader.[hc]: support GSL_LOADER_SKIP_PRECEEDING_NULLS loader flag
	to skip preceeding 0s before attempting magic matches.
	this is implemented as a worst case fallback mechanism to deal with
	some broken mp3 files.

Sun Aug  4 11:56:27 2002  Tim Janik  <timj@gtk.org>

	* gslwavechunk.c: add fix from stefan so tail and head blocks are
	actually read out.

	* gslwavechunk.[hc] (struct _GslWaveChunk): rename ->start and ->end
	fields to ->first and ->last since they both point to the first/last
	position meant to be read out within that block (rather than the start
	and upper boundary of the block).

Sat Aug  3 17:16:13 2002  Tim Janik  <timj@gtk.org>

	* bsepcmdevice-oss.c (bse_pcm_device_oss_open):
	* bsemididevice-oss.c (bse_midi_device_oss_open): translate errno
	via bse_error_from_errno().

	* bseserver.[hc]: fallback to null midi device if the real
	midi device can't be opened.

	* gsl-mplan.txt: fix typos.

	* gsldatahandle-vorbis.c: adapt to changes in ov_read_float() in
	libvrobis v1.0.0.

Fri Aug  2 18:21:19 2002  Tim Janik  <timj@gtk.org>

	* bseitem.[hc]: add per-class list_proxies() method to retrive a list
	of possible proxies for object properties.
	add list_proxies() function and procedure.
	bse_item_gather_proxies(): new convenience function to add predicate
	filtered proxies to an iterator.

	* bsemidisynth.c: support list_proxies() for synth net property.

	* bseproject.[hc]: provide bse_project_get_wave_repo().

	* bsesubsynth.[hc]: lock synth net property during playback, catch
	infinite recursion during context creation. support list_proxies() for
	synth net property.

	* bsetrack.[hc]: support list_proxies() for synth net and part properties.

	* bsewaveosc.c: support list_proxies() for wave property.

Tue Jul 30 01:20:48 2002  Tim Janik  <timj@gtk.org>

	* bsewaveosc.[hcp]*: support percentual seekage.

	* gslwavechunk.c: fix uint/GslLong bug and non-loop initialization for
	enter mem block.
	
	* gsl*.[hc]: miscellanous const fixes.

	* gslloader-oggvorbis.c (_gsl_init_loader_oggvorbis): add MIME
	types application/x-ogg and audio/x-vorbis.

Sat Jul 27 18:17:49 2002  Tim Janik  <timj@gtk.org>

	* Makefile.am: distcheck-fixing: include -I., prefix
	deps with srcdir, fix file arguments wrg srcdir
	prefixing.

	* mktypes.pl:
	* bsetype.h: fixup builtin type macros.

	* gslmakefile.inc: add missing files.

Sat Jul 27 12:48:07 2002  Tim Janik  <timj@gtk.org>

	* bswcommon.[hc]: support callback notification from
	bsw_register_scripts() and bsw_register_plugins().

Sat Jul 27 06:26:10 2002  Tim Janik  <timj@gtk.org>

	* gsldatahandle.[hc]: redesigned some basic things.
	data handles correspond to samples now, they carry n_values,
	n_channels and bit_depth, provided accessors for those and
	the data handle name. these values are only valid for opened
	data handles now though, implementations have to fill in a
	setup structure upon openening to provide those values.
	(gsl_data_handle_new_mem): new data handle for constant data
	since gsl_data_handle_new_insert() doesn't allow a NULL src_handle
	anymore.

	* gslwavechunk.[hc]: life time redesign. wave chunks are ref counted
	now and have to be explicitely opened.

	* gslfilehash.c: remove debugging code.

	* gslloader.c: adapt to new wave chunk API.

	* bseeditablesample.[hcp]*: adaptions accroding to the new wave chunk
	API. users have to explicitely open and editable sample now.

	* gslloader-gslwave.c:
	* gsldatautils.c:
	* gsldatahandle-vorbis.c:
	* gsldatahandle-mad.c:
	* gsldatacache.c:
	* bsestorage.[hc]: adaptions to the new data handle API.

	* bsewave.[hc]: adaptions to the new data handle and wave chunk API.
	callers must explicitely announce interest in the wave chunk index now.

	* bsewaveosc.[hc]: use new BseWave API, cleanup and fix object
	reference handling. use new GslWaveChunk API.
	(wmod_process): pass NULL for non-connected input buffers.

	* gslwaveosc*.[hc]: fix read out of constant default frequency,
	frequency signal and modulation signal updates and the frequency
	argument to gsl_wave_osc_retrigger() (was expected as signal frequency).

	* gslwchunk.c: test case fixup according to new APIs.
	
	* some ChangeLog cleanups.

Thu Jul 25 01:12:51 2002  Tim Janik  <timj@gtk.org>

	* gslfilehash.[hc]: new files, implementing GslHFile, an MT-safe
	pread() wrapper FILE type which shares unix file descriptors (to
	reduce usage thereof), and GslRFile, piggyback implementation
	on top of GslHFile that supports the more common read()+seek() API.

	* gsldatahandle.[hc]: use GslHFile for raw wave handles.
	nuke data handle caching code. remove mtime from data handles.
	make gsl_data_handle_open() and associated method return GslErrorType
	instead of errno.

	* gsldatahandle-vorbis.c: translate ogg/vorbis error codes into
	GSL error codes. use GslRFile instead of unix FILE*.

	* gsldatahandle-mad.c: use GslHFile instead of unix file descriptors.

	* gslcommon.[hc]: provide gsl_error_from_errno(), get rid of
	gsl_check_file_mtime(). sync gsl_strerror() with new error codes.

	* *.c: adaptions due to gsl_wave_handle_new() changes.

	* bseenums.[hc]: sync errors with new GSL errors.
	use gsl_error_from_errno() from bse_error_from_errno().

	* gslmultiwave.[hc]: remove unused code.

	* gsldatahandle.[hc]: instead of gsl_data_handle_new_translate() with
	mildly inconvenient parameters, offer gsl_data_handle_new_crop() and
	gsl_data_handle_new_cut() with intuitive arguments.

Tue Jul 23 07:47:55 2002  Tim Janik  <timj@gtk.org>

	* bse.h:
	* Makefile.am: remove (currently) unused code from build setup:
	BseInstrument, BseEffect*, BsePattern*.

	* bseconstvalues.[hc]: new files, taking over many constants and note
	related macro definitions from bseglobals.[hc].

	* bsemain.c: initialize GSL with proper kammer frequency/note.

	* bseutils.[hc]: removed duplicated constants, added
	bse_note_fine_tune_from_note_freq ().

	* bswcommon.[hc] bswprivate.h: change BswPartNote to have a note
	and a fine_tune field instead of frequency.

	* bsetype.h:
	* bseparam.[hc]: don't introduce BSE_TYPE_NOTE as fundamental
	type, having a pspec variant is sufficient. added convnience
	function to easily create pspecs for notes and frequencies.

	* bsesongthread.c:
	* bsepart.[hcp]*: ported this over from using frequencies to
	using notes.

	* bsesong.[hcp]*: remove dependancies on unused code.

	* bsemath.h: added more accurate constants for 2^(1/12),
	ln(2^(1/12)) and ln(2^(1/1200)), minor cleanups.

	* bseglobals.[hc]: removed math constants. provide a constant,
	high-accuracy semitone factor table and fine tune factor table
	at compile time. got rid of 16bit-fixed semitone factor table.
	removed lots of MIN/MAX defines, note, fine tune and frequency
	macros.

	* bseglue.c: BseNote fixes.

	* bseconstant.[hc]: remove unused sequencer methods.

	* *.c: constant fixes/adaptions, use new param spec constructors.

	* bseinfo.c: added lots of (inactive) debugging code to check
	note/frequency/table validity.

Sun Jul 21 04:39:59 2002  Tim Janik  <timj@gtk.org>

	* bseglobals.[hc]: provide saner (and clearer) GSource priorities
	and bse_idle_*() helper functions to install async handlers at
	the various priority levels.

	* *.c: use bse_idle_* functions to queue async handlers.

	* bsepart.[hcp]*: provide notes with event ids, select notes by
	ids and not by range.
	
Mon Jul 15 05:07:37 2002  Tim Janik  <timj@gtk.org>

	* bsecontextmerger.[hc]: new internal module which merges signal
	outputs of multiple module contexts.

	* bsemidimodule.[hc]:
	* bsemidisynthinput.[hc]: remove old midi voice implementation modules.

	* bsetrack.[hc]: first start at implementing tracks for songs, which
	arrange song parts.

	* bsemidivoice.[hc]: internal wrapper objects for midi receiver modules.

	* bsecontainer.[hc]: added class method to list children for context
	creation propagation (overriden by BseSNet context branch
	implementation).

	* bseenums.[hc]: remove MIDI related enums.

	* bseglobals.[hc]:
	* gslcommon.[hc] (gsl_init):
	fix MIDI note number for kammer note.

	* bseglue.[hc]: support boxed->GslGlueSequence conversions. fix up
	record and sequence usage.

	* *midi*.[hc]: remove old BseMidiDecoder code.

	* bsemidievent.[hc]: remove old MIDI channel/note/decoder implementations.
	use float values for MIDI event fields.
	add event constructors, remove global MIDI notifier hook.
	add MIDI_SIGNAL enum and default values for the various control
	signals supported per midi channel.

	* bsemidiicontroller.[hc]: adaptions to work with the new MIDI_SIGNAL
	enum and MidiReceiver.

	* bsemidinotifier.[hc]: adaptions to work with the new MidiREceiver.

	* bsemidireceiver.[hc]: actually deploy the new midi receiver
	implementation. added event processing implementation, support float
	values for midi event fields.
	(bse_midi_receiver_push_data): translate system time to engine ticks
	here. process newly enqueued events (this might need to change).
	add API to push and process event structures.
	implement midi control value module.
	reimplement midi voice and switch modules, make use of the engine's
	new virtual module implementation.
	implement midi notifier hooks per midi receiver.
	support continuous midi controls (convert LSB and MSB part to float).
	support "all sound off" and "all notes off" control triggers, abuse
	"local control switch" for debugging output of active voices.
	support sustain pedal for active voices.
	move BseMidiEvent structure back into bsemidievent.[hc].

	* bsemidisynth.[hc]: implement multiple midi voices via branch
	contexts. got rid of the maximum_voices=4 limitation. this also
	requires midi voice synth networks to properly put out the
	"done" signal to figure reusable voices. get rid of "clicks"
	at note boundaries when reusing voices by means of the engine's
	reset() method for modules.

	* bseobject.[hc] (bse_object_debug_name): debugging convenience
	function which describes (partly invalid) object references.

	* bsepart.[hcp]*: support selection rectangle.

	* bseprocedure.proc: add convenience procedure to convert notes into
	frequencies.

	* bseserver.[hcp]*: remove MidiDecoder code, properly support
	BseMidiReceiver.

	* bsesnet.[hc]: added bse_snet_context_clone_branch() and
	bse_snet_context_is_branch() to support context branches for
	selected modules within a synthesis network.

	* bsesong.[hc]: implement voices via MidiReceiver modules
	and context branches.
	* bsesong.proc: add procs for track addition/removal.

	* bsesongthread.[hc]: implement playback of part notes via
	midi note on/off events. fetch part via BseTracks.

	* bsesource.[hc]: added convenience macro bse_source_must_set_input()
	fo rinternal module connections.
	support setting of context data for sources with 0 input and output
	channels. to be used by BseSNet solely (for context branches).
	bse_source_collect_inputs_recursive() traversal function to construct
	a list of modules that form inputs of a given modules.

	* bsesubsynth.[hc]: pass on MidiReceiver per context to custom synth
	networks.

	* bswcommon.[hc]: support iterator->GslGlueSequence conversion.

	* gslcommon.[hc]: 
	add flow job debug key.
	(gsl_time_system): retrive system time in micro seconds.
	(gsl_tick_stamp_last): get the last tick stamp update together with
	the system time of that update.

	* gslgluecodec.c:
	* gslgluesignal.c:
	* gslglue.[hc]: don't fix the element type of sequences.
	ref-count records (should do the same at least for sequences).
	use sequences for compound signal/procedure arguments.
	support field names in record implementation (should use quarks
	for efficiency).

	* gslopnode.h:
	* gslengine.[hc]:
	* gslopmaster.[hc]:
	* gslopschedule.[hc]:
	* gsloputils.[hc]: change GSL Engine license to GPL.

	* gslengine.[hc]: more documentation. make/flag thread-safe functions.
	make garbage collection explicit.
	(gsl_module_new_virtual): really implement cirtual modules.
	(gsl_engine_dispatch): garbag collect here.
	(gsl_engine_tick_stamp_from_systime): translate system time to engine
	tick stamps, based on the last tick stamp update.

	* gslopnode.h:
	* gslopmaster.[hc]: update output stream connected flags during within
	scheduler.
	clenup pending flow jobs when discarding engine modules.
	reimplement resumption implementation.
	fixup flow job implementation.
	implement stream virtualization for virtual modules.
	implement module suspension.

	* gslopnode.h:
	* gslopschedule.[hc]:
	support scheduling virtual modules and ouput stream connected flag
	updates.

	* gsloputil.[hc]: implement proper flow job and garbage collection.

	* gsl-mplan.txt: document virtual modules.

Wed Jul  3 05:34:10 2002  Tim Janik  <timj@gtk.org>

	* bsemidireceiver.[hc]: new MIDI event handling core which creates
	the required engine modules on demand (not currently deployed).

	* bsemain.[hc]: delay plugin initialization and initialize MIDI core.

	* bsemididevice-oss.c: pipe event data into the new midi receiver.

	* bsemididevice.[hc]: add BseMidiReceiver property.

	* bsemidievent.[hc]: rename, this code is scheduled for removal once
	the new MIDI core is deployed.

	* bseproject.c: create synth nets together with a default MIDI
	receiver.

	* bseserver.[hc]: add API to manage default MIDI receiver.

	* bsesnet.[hc]: add API to maintain an associated MIDI receiver
	per context.

	* bsesubsynth.c: create contexts on the target snet with the
	MIDI receiver and midi_channel from the current context of
	the sub synth.

	* gsl-mplan.txt: describe reset(), describe suspension,
	fix consumer node definition, TODO cleanups.

	* gslcommon.[hc]: add gsl_ring_insert_sorted().

	* gslopmaster.[hc]:
	* gslopschedule.[hc]:
	* gsloputil.[hc]:
	* gslengine.[hc]: implement first stab at virtual modules (not
	yet completed). complete suspension and resume job implementations.

Wed Jun 19 03:47:45 2002  Tim Janik  <timj@gtk.org>

	* incorporated fixes/changes suggested by stefan and
	Hans Meine <hans_meine@gmx.net>.

	* gsldatahandle-mad.c (create_seek_table): fix // comments.

	* gslengine.h: 
	* gslopmaster.c: sigh, remove const integer fields from structures,
	this is simply not C++ compatible.

	* gslloader.[hc]: make GslWaveFileInfo a ref-counted structure.

Thu Jun 13 07:28:34 2002  Tim Janik  <timj@gtk.org>

	* bsemidinotifier.[hcp]*: new object, emitting notification of incomming
	MIDI events.

	* bsescriptcontrol.[hcp]*: new object, proxying running scripts and
	allowing for user side control of scripts.

	* *.c: more i/o channel name fixups.

	* bsebindata.c: code cleanups.

	* bsecategories.c: check type name syntax.

	* bsecomwire.[hc]: removed temporary hacks, slight fixup to
	random request id generation.

	* bsecontainer.proc: added lookup procedure to find a named child
	of a container.

	* *.proc: const cleanups.

	* bseenums.[hc]: added user error enum values.

	* bseitem.proc: added is_a check procedure.

	* bsemidimodule.c:
	* bsemididevice-oss.c: changes due to new timestamped and thread-safe
	MIDI decoder API.

	* bsemidievent.[hc]: midi decoder API extensions to provide
	time stamped MIDI events. explicitely marked mutex-affected
	functions and implemented thread-safety measures.

	* bseobject.[hc] (bse_object_do_dispose): set the
	BSE_OBJECT_FLAG_DISPOSED flag on objects, since we don't support
	resurrection in general.
	(bse_object_class_add_dsignal): allow addition of detailed signals.
	(bse_object_from_id): don't hand out disposed objects.

	* bseparasite.c: fixed string-escaping bug.

	* bsepart.[hc]: for now, limit the maximum tick count to 0x7fffffff,
	which is a valid signed integer.

	* bsescripthelper.[hc]: properly support the GslGlue layer and
	BseScriptControl.

	* bseserver.[hcp]*: support container usage of the server.
	moved script handling into bsescriptcontrol.c.
	implment procedure to retrive a MIDI notifier obejct.

	* bsesongthread.c: silence debugging output.

	* bsesource.proc: allow setting a module's input by name.
	added more getters for channels.

	* bsestorage.c: fix string escaping bug.

	* bswcommon.c: added handler to convert a BswNoteDescription
	into a GslGlueRecord.

Wed Jun 12 06:31:34 2002  Tim Janik  <timj@gtk.org>

	* GSL Glue layer introduction. the code is mature enough for
	our scheme bindings, but still evolving.

	* gslglue.[hc]: new files implementing the GslGlue layer.
	the GslGlue layer is a presumably simple API abstraction
	which allowes acces to foreign object systems with notification
	signals, object properties and object procedures.

	* gslgluecodec.[hc]: serialization/deserialization layer
	which allowes GslGlue to be used from remote processes
	transparently.
	
	* gslgluesignal.c: implementation of signal notification.

	* bseglue.[hc]: new file, imlpementing the GslGlueVTable backend
	for BSE.

Mon May 27 16:45:48 2002  Tim Janik  <timj@gtk.org>

	* glib-extra.[hc]: remove the buggy and old g_strdup_quoted() function.
	changed callers to use g_strescape (string, NULL) instead.

	* bsequery.c (show_procdoc): fallback to procedure blurb if there's
	no help available.

	* mkcproc.pl: support procedure BLURBs.

	* gslcommon.[hc]: added function to return main thread handle.

	* gsl*.[hc]: nuked GslPollFD, use GPollFD instead.

Mon May 27 08:34:28 2002  Tim Janik  <timj@gtk.org>

	* bseprocedure.c (call_proc): provide the procedure execution status
	from the procedure's BseErrorType output if any.

	* bseprocedure.[hc]: allow NULL values for
	bse_procedure_marshal_retval() and bse_procedure_unmarshal_retval().

	* bseserver.[hcp]*: added ::user-message signal with wrapper function
	bse_server_user_message(). added bse_server_run_remote() to start
	a script interpreter. added bse_server_queue_kill_wire() to kill the
	connection to a currently running child process. added interpreter
	wire dispatch source to handle remote connections from the main loop.
	renamed script-status to exec-status.

	* bsestorage.[hc]: fix precision in float/double value storage.
	fix validation of storage values to support G_PARAM_LAX_VALIDATION.

	* bseutils.[hc]: provide documentation for bse_search_path_*().

	* bswcommon.h[hc]: added bsw_register_scripts().
	moved bsw_type_name_to_sname() into this place.

	* bseplugin.[hc] (bse_plugin_dir_list_files): simply use
	bse_search_path_list_files() to find plugin libraries.

	* bseparam.c (param_note_validate): fix validation code to revert
	to BSE_NOTE_VOID.

	* bsemain.c (bse_init): record the current directory for spawning
	child processes.

	* bsemagictest.c (main): use bsw_register_plugins() to load plugins.

	* bsecategories.c (category_strip_toplevels): added /Scripts/ toplevel
	category.

	* bsescripthelper.[hc]: implementation of script registration (currently
	limited to scheme) and wrapper stubs to invoke script functions as
	BseProcedure.

	* bsecomwire.[hc]: implementation of communication stubs to spawn a
	child and talk with it through pipes.
	
	* bseprocedure.proc: implement utility procedures, mostly for scripts.

	* bsehelloworld.proc: remove bse-progressor a left-over from test-cases
	of an old procedure concept.

	* bsestorage.c (bse_storage_parse_param_value): fix negating unsigned
	ints bug in FLOAT or DOUBLE parsing.

Wed May 22 07:49:50 2002  Tim Janik  <timj@gtk.org>

	* bsequery.c: use bsw_register_plugins() to load plugins and convert
	procedure names to scheme names for --procdoc.

	* bseplugin.[hc]: fix const for bse_plugin_check_load().

	* bse.h: added missing files.

	* bseprocedure.[hc]: added bse_procedure_eval() to call procedures from
	strings, and bse_procedure_marshal_retval() and it's counterpart
	bse_procedure_unmarshal_retval() to store/retrive procedure call returns
	in/from strings.

	* bsestorage.c (bse_storage_parse_param_value): allow pspec to be NULL.

	* bswcommon.c (bsw_proxy_get_type): register value transform functions
	for BswProxy <-> BseObject. added bsw_register_plugins() to reduce
	duplication of this code. added function that should go into glib:
	g_type_name_to_cname(), g_type_name_to_sname(), g_type_name_to_cupper(),
	g_type_name_to_type_macro().

Tue May 21 08:13:51 2002  Tim Janik  <timj@gtk.org>

	* final object reference cleanup. get rid of ulocs, allow freeform
	name for objects with the exception of ":" and uniqueness within
	children of a container. BseObject just has an ::uname property
	for this purpose now, and no ::name or ::uloc properties anymore.

	* bseobject.[hc]: ::uloc/::name/::uname cleanup and changes. virtualize
	property storage.
	
	* bsecontainer.[hc]: store child references as strings with apropriate
	prefix (bse-container-restore).
	introduce retrieve_child() class function to resolve a (type,uname) pair
	into an existing or a new child.
	removed bse_container_item_from_handle(), bse_container_item_from_path()
	and bse_container_make_item_path(). introduced:
	bse_container_retrieve_child(): same purpose as the new class function.
	bse_container_resolve_upath(): resolve a colon seperated list of unames,
	by following the associated named objects (children).
	bse_container_make_upath(): construct an upath for a (non-immediate)
	child of a container.

	* bseitem.[hc]: remove bse_item_make_handle() and
	bse_item_make_uloc_path().

	* bsecontainer.[hc]:
	* bseitem.[hc]: remove unused PARENT_REF hack.

	* bseproject.[hc]:
	* bsewaverepo.[hc]: moved single-child-per-project hack into
	bseproject.c and cleaned this up some.

	* bsestorage.[hc]: disallow storing/parsing object values through
	bse_storage_put_param()/bse_storage_parse_param_value().
	introduced bse_storage_put_item_link() and bse_storage_parse_item_link()
	for this purpose, where the latter takes a function for deferred
	invocation to resolve object references after all have been created.
	added bse_storage_input_text() and bse_storage_warn_skipc().

	* bseitem.c: implement bse_item_store_property() and
	bse_item_restore_property() to implement object properties via
	BseStorage's _item_link functions.

	* bsedatapocket.c: handle object links according to the new storage API.

	* bse*.[hc], bse*.proc: various uname/upath/uloc fixes. changed
	BseStorage uses to store/retrieve object references via
	bse_storage_put_item_link() and bse_storage_parse_item_link().

Sun May 19 23:57:10 2002  Tim Janik  <timj@gtk.org>

	* bswcommon.[hc], bswprivate.h: reworked the iterators.
	we now have BswIter as an abstract base, which introduces generic
	iterator functions. there's no boxed iterator type, instead, each
	boxed type that needs an iterator has to be implemented from scratch
	(failry easy though). with that, we currently just need BswIterPartNote.

	* bse*.[hc]: fixes due to iterator changes.

Sat May 18 02:18:00 2002  Tim Janik  <timj@gtk.org>

	* bswcommon.[hc]: renamed BseSequence to BswNoteSequence and moved it
	into this file.

	* bsesequence.[hc]: removed these files.

	* bsestorage.[hc]: storage format fixups:
	- valid boolean values: #t, #f, #T, #F
	- store notes as strings
	- store flags as lists
	- store BswNoteSequence as list of notes

	* bseparasite.[hc]:
	* bsedatapocket.c: fix character storage, using #\c.

	* bsestorage.[hc]: added bse_storage_parse_eval() to parse
	procedures.

	* bsemain.c: make sure the server is alive.

Fri May 17 20:56:39 2002  Tim Janik  <timj@gtk.org>

	* gsl*.*: incorporate fixes from stefan.

Thu May 16 23:15:33 2002  Tim Janik  <timj@gtk.org>

	* bseserver.h: introduced ::script_status signal for GUI notification,
	(not that we could currently execute scripts ;) this is currently used
	to notify about procedure exit codes via BSE_SCRIPT_STATUS_PROC_END.

	* bseprocedure.[hc]: procedure API and implementation cleanups.
	
	* bsestorage.[hc]: some additions to store procedures.
	
	* *.c: misc fixes due to procedure changes.

Tue May 14 21:36:51 2002  Tim Janik  <timj@gtk.org>

	* bsesource.c: defer resolution of the input
	channel until resolve_dinput() and provide a better error
	message.

	* documentation fixes.

Tue May 14 04:17:08 2002  Tim Janik  <timj@gtk.org>

	* bsestandardosc.c (bse_standard_osc_class_init): channel order fixup.
	* bseamplifier.c (bse_amplifier_class_init): same here.

Mon May 13 23:27:47 2002  Tim Janik  <timj@gtk.org>

	* icons/biquad.c:
	* bsebiquadfilter.c: fix the biquad filter icon.

Mon May 13 23:06:49 2002  Tim Janik  <timj@gtk.org>

	* gslmakefile.inc: added $(PERL) invocation fix from stefan.

Mon May 13 22:07:36 2002  Tim Janik  <timj@gtk.org>

	* gslengine.[hc], gslopmaster.c: reserve space for
	process_defer() in GslClass and provide a reconnect()
	class function, serving as notifier when a module got
	reconnected. adapted related code portions.
	added sub sampling argument to gsl_engine_init().

	* bsestandardosc.c: boost up the range of modulatable
	octaves to 5.

	* gslfilter.[hc]: fix argument ordering of _eval()
	functions. added lowpass and highpass biquad types.

	* gslloader-wav.c: skip unknown sub-chunk rather than
	aborting.

	* gslsignal.[hc]: added implementation of
	GslFrequencyModulator which can prerender a frequency
	buffer out of various frequency modulation settings/inputs.

	* bsebiquadfilter.[hc]: new filter implementation, supporting
	biquad filter types and frequency and gain (modulation) input
	signals.

Sun May 12 20:48:34 2002  Tim Janik  <timj@gtk.org>

	* bsepcmoutput.c (bse_pcm_output_context_connect): connect to
	joint channels of the internal PCM output module.

	* bsepcmmodule.c: use joint input channels for the internal PCM
	output module.

Fri May 10 17:46:01 2002  Tim Janik  <timj@gtk.org>

	* gslsignal.h: provide gsl_approx_exp2() to approximate 2^x.
	gsl_signal_exp2() is supposed to be deprecated.
	gsl_approx_exp2() has slightly greater error within -0.5..0.5,
	but is faster and covers a wider range.

Fri May 10 17:41:11 2002  Tim Janik  <timj@gtk.org>

	* gslieee754.h: make gsl_ftoi() operate on floats and provide
	gsl_dtoi().

Wed May  8 00:34:09 2002  Tim Janik  <timj@gtk.org>

	* gslmath.h: accuracy fixes of constants, added more constants.

Mon May  6 13:01:28 2002  Tim Janik  <timj@gtk.org>

	* icons/instrument.xcf: use a speaker different from the
	PcmOutput icon for sub instruments.

Sun May  5 20:31:57 2002  Tim Janik  <timj@gtk.org>

	* bsewaveosc.[hcp]*: moved this here from ../plugins/ because
	it introduces procedures and otehr core components rely on it.

Sun May  5 08:07:39 2002  Tim Janik  <timj@gtk.org>

	* bsemidievent.[hc]: provide initialization values other than 0
	for pitch_bend, voume and balance on all MIDI channels.
	allocate the channel controls with the decoder.

Sun May  5 06:18:17 2002  Tim Janik  <timj@gtk.org>

	* bseamplifier.[hc], bseamplifier-aux.c: new amplifier module, BSE's
	VCA equivalent.

	* gslincluder.c: add facility to reject certain cases with GSL_INCLUDER_REJECT().

	* gslsignal.[hc]: add approximation functions for atan1(), and all
	four quadrants of a circle.

Wed Apr 24 08:13:26 2002  Tim Janik  <timj@gtk.org>

	* bsesource.c (bse_source_reset): before invoking the ->reset() method,
	wait_on_trans()-action completions unconidionally.

	* bseproject.c (bse_project_stop_playback): eeek, forgot to
	wait_on_trans() after dismissing contexts, before calling
	bse_source_reset().

	* gsldatahandle.[hc]: for consistency, change:
	s/gsl_data_handle_new_reversed/gsl_data_handle_new_reverse/.

	* gsldatahandle.c (gsl_data_handle_new_dcached): make use of
	the padding around a node's value block.

	* gslopmaster.[hc]:
	* gslengine.[hc], gslopnode.h:
	* gslopschedule.[hc]:
	* gsloputil.[hc]:
	major namespace cleanup.

Sun Apr 21 21:10:17 2002  Tim Janik  <timj@gtk.org>

	* bseglobals.[hc]: change fine-tune to match GSL fine-tune
	cent table.

	* bsesource.[hc]: complete joint channel implementation.

	* bsestandardosc.[hc]: add fine-tune property, allowing
	for slight detunes of multiple oscillators.

	* gslopnode.h:
	* gsloputil.c:
	* gslopschedule.c:
	* gslopmaster.[hc]:
	* gslengine.[hc]: complete joint channel implementation.
	NULL terminate the jstream gfloat**values; pointer array.

	* gsloscillator.h:
	* gsloscillator-aux.c: implement oscillator fine-tune.
	* gsloscillator.c: fix sync-update clicks.

	* gslsignal.[hc]: implement semitone cent fine-tune factor
	table, available as gsl_cent_factor().

Tue Apr 16 12:51:17 2002  Tim Janik  <timj@gtk.org>

	* bsesnooper.[hc]: move this module from plugins to BSE.

	* bsesubiport.[hc]: virtual sub network input ports.

	* bsesubiport.[hc]: virtual sub network output ports.

	* bsesubkeyboard.[hc]: convenience virual input for instruments.

	* bseinport.[hc], bseoutport.[hc], bsemidikeyboard.[hc]:
	scratch these, they are replaced by the new modules now.

	* bsesubinstrument.[hc]: convenience virual output for instruments.

	* bsecategories.[hc]: provide leaf index of category names.

	* bsesnet.[hc]: provide functions to test for registered port names
	and provide notification when port names got unregistered.

	* bsesource.c:
	(bse_source_set_context_imodule):
	(bse_source_set_context_omodule):
	(bse_source_set_context_module):
	be laxer about module IO checks, only demand the
	GSL module has at least as many input/output channels as the
	BseSource.

	* bsestandardsynths.c: use the new modules.

	* *.c: category fixes.

Mon Apr 15 14:43:18 2002  Tim Janik  <timj@gtk.org>

	* bsestandardosc.h (enum): get rid of BSE_STANDARD_OSC_NONE.

Mon Apr 15 09:43:15 2002  Tim Janik  <timj@gtk.org>

	* gslosctable.[hc]: create anti-aliased filter tables for the
	following wave forms: sine, triangle, saw, peak, moog saw and
	square/pulse variants.

	* gsloscillator.[hc], gsloscillator-aux.c: new oscillator code,
	supporting sync out and various inputs: freq, freq modulation,
	sync and pulse width modulation. the wave to use for oscillation
	is supplied via a GslOscTable.

	* gslincluder.c: helper file for sources that need to comile
	various forms of the same function.

	* gslcommon.[hc]: supply debug keys for the debug options.

	* gslieee754.h: mark gsl_ftoi() GNUC_CONST.

	* gslsignal.h: mark gsl_signal_exp2() GNUC_CONST.

	* gbsearcharray.h: minor naming fix.

	* bsemidiicontroller.[hc]: provide midi control inputs.

	* bseconstant.c: allow logarithmic scaling of the input values
	as frequencies.

	* bseenums.h: provide BseMidiControlType enum.

	* bsemain.c: use GSL supplied debug keys.

	* bsemidimodule.c: fix BSE_MIDI_SIGNAL_PITCH_BEND setting, so we put out
	values between -1 and +1 for this.

	* bsestandardosc.[hc]: use new GSL oscillator code for this (and
	support all its bells and whistles).

Fri Apr 12 04:45:04 2002  Tim Janik  <timj@gtk.org>

	* gsl-fftconf.sh (gsl_power2_fftc_big): fix a missing NULL check to skip
	first fft stage on input values.
	(gsl_power2_fftsr): invoke gsl_power2_fftc_big() with n_cvalues instead
	of n_values like we do for all other ffts as well.

Mon Apr  8 14:04:30 2002  Tim Janik  <timj@gtk.org>

	* gsldefs.h: define if_expect() and if_reject() if GSL_EXTENSIONS
	is defined, to make these usable in third-party code.

	* gslsignal.[hc]: added windowing functions to implement the
	windows: blackman, cos, bartlett, hamming, sinc and rectangle.

Fri Apr  5 07:42:16 2002  Tim Janik  <timj@gtk.org>

	* gsldatahandle-mad.c: disable file contents if !GSL_HAVE_LIBMAD.

	* gslloader-mad.c (_gsl_init_loader_mad): don't register the MAD MPEG
	loader if !GSL_HAVE_LIBMAD.

Fri Apr  5 06:45:29 2002  Tim Janik  <timj@gtk.org>

	* gsldatahandle-mad.[hc]: libmad based mp3 datahandle implementation.

	* gslloader-mad.c: gsldatahandle-mad.[hc] based mp3 loader.

	* gslcommon.[hc]: introduce new debugging mechanism and rework
	GSL messages.

	* gslop*.[hc], gslengine.[hc]: fixup old debugging code.

	* gsldatautils.[hc]: new function gsl_data_find_block().

	* bsesnet.[hc], bsesnet.proc:
	got rid of BSE_SNET_FLAG_FINAL. introduced BSE_SNET_FLAG_USER_SYNTH
	to indicate user editable synthesis networks.
	disallow procedures to modify a synthesis network unless
	BSE_SNET_FLAG_USER_SYNTH or BSE_DVL_EXT are set.

Thu Apr  4 23:02:54 2002  Tim Janik  <timj@gtk.org>

	* bseinport.[hc], bseoutport.[hc]:
	* bsesubsynth.[hc], bsemidikeyboard.[hc]: use the new BseSNet port API.

	* bsemain.c (bse_init): initialize random numbers properly.

	* bsemidievent.c: add debugging for note on/off events.

	* bsesnet.[hc]: rewrote port handling, changed API.
	provide bse_snet_create_context() to create contexts with an ID provided
	by the snet. added simple ID allocation algorithm to reuse freed IDs.

	* bsesongthread.c: some cleanups.

	* bsesource.[hcp]*: allow only one i/o module for all i/o channels now.
	add more jstream support (still not complete though).
	API cleanups and simplifications.
	redid context management code so context IDs are freely assignable by
	synthesis networks.
	(bse_source_set_context_omodule): allow resetting the module to NULL.
	(bse_source_set_context_imodule): allow resetting the module to NULL.
	
	* bseinport.c:
	* bseoutport.c:
	* bsesubsynth.c: fix port name changes during playback.
	
	* gbsearcharray.h: new file from/for GLib with binary searchable array
	implementation.

Sun Mar 31 19:44:44 2002  Tim Janik  <timj@gtk.org>

	* bseitem.c (bse_item_uncross): new function to remove a cross reference
	by invoking the cross notifier.

Sat Mar 30 05:57:45 2002  Tim Janik  <timj@gtk.org>

	* bsepart.[hc], bsepart.proc: new song related object which stores a
	list of notes to play.

	* bsestandardosc.[hc]: moved and renamed plugins/bsesimpleosc.[hc]
	to BseStandardOsc since BSE needs a default oscillator.

	* bsestandardsynths.[hc]: new file, adding functions that construct
	standard synthesis components for songs.

	* bsesong.proc: provide procedures to create/delete child components.

	* bseglobals.[hc], bsegconfig.[hc]: remove outdated definitions.

	* bseinstrument.[hc]: some cleanups. provide synthesis networks
	for song to play.

	* bseitem.proc: added procedure to retrive an item's sequential ID.

	* bsemain.c: define _XOPEN_SOURCE 600 only if
	GSL_HAVE_MUTEXATTR_SETTYPE is > 0, since this seems to break random
	stuff on some systems.

	* bsepattern.c: remove old defines, soon to be deprecated.

	* bseserver.proc: fix loader lookup, provide procedures to
	examine notes.

	* bsesong.[hc]: add support for BsePart.

	* bsesongthread.[hc]: start supporting BsePart.

	* bseutils.c: some cleanups.

	* bswcommon.[hc]: added uspport for iterators over boxed types.
	added boxed types BswPartNote and BswNoteDescription.

	* gslcommon.c: made gsl_alloc_report() more elaborate.
	(gsl_thread_new): do _not_ create joinable threads.
	initialize _gsl_init_loader_mad().

	* gslloader.[hc]: changed GslLoader, so we support lists of
	file extensions, file magics and mime types.

	* gslloader-wav.c:
	* gslloader-oggvorbis.c: 
	* gslloader-gslwave.c: prefix function names with loader
	name. adapt code to GslLoader changes.

	* gslloader-wav.c: add "audio/wav" mime type, fix file magic to
	demand PCM format.

	* gslmagic.[hc]:
	(magic_parse_test): off-by-one error in string tests.
	(magic_parse_type): fix *short data size. disable "size" type. fix
	errors for mask handling.
	(magic_create): improve warnings.
	(magic_read_data): fix *short byte swapping.

	* bsemagictest.c: some minor improvements.

Tue Mar 26 12:22:12 2002  Tim Janik  <timj@gtk.org>

	* removed unneeded files: bsechunk.[hc], bsehunkmixer.[hc],
	bsebuffermixer.[hc] and bsecapture.[hc].

	* bseobject.[hc]:
	(bse_object_class_add_signal):
	(bse_proxy_marshaller_lookup): mandate specification of a BswProxy
	marshaller besides the normal marshaller when introducing signals.
	provide lookup facility to retrive the proxy marshaller of a signal.

	* *.c: changed class_init() function which introduce signals to provide
	a proxy marshaller.

Thu Mar 21 08:36:55 2002  Tim Janik  <timj@gtk.org>

	* gslmakefile.inc: sort things out, document interfacing, generate
	gslconfig.h from configure.in checks. provide install hook for GSL
	headers.

	* Makefile.am: adapt to changes in gslmakefile.inc.
	install gsl headers correctly.

	* bsemain.c: define _XOPEN_SOURCE to 600 to make use of Unix98
	pthread API. provide a pthread function vtable for GSL upon
	GSL init if we have pthread available.

	* gslcommon.[hc]: together with stefan, fix alignment problems in the
	memblock caching allocator which lead to segfaults on solaris.

	* gslcommon.[hc]: slim down the implementations for mutexes, recursive
	mutexes and conditions. allow pluggable thread function table for these
	constructs which allow direct use of pthread functions if they are
	available. fixed up condition initialization and timed wait
	implementation.

	* gsldatacache.c: fix GslCond usage.

	* gslglib.c:
	* gsldefs.h: cleanups, use gslconfig.h values.

	* gslengine.h, gslopmaster.c: fix assignment of const structure fields.

	* gsloputil.c: together with stefan, fix and majorly improve the
	constant value block cache algorithm. fix GslCond usage.

Sun Mar 10 10:08:32 2002  Tim Janik  <timj@gtk.org>

	* bseeditablesample.[hc], bseeditablesample.proc: new object
	exporting the necesary interface to edit samples, i.e.
	GslWaveChunks. (or at least, it'll soon gain interface additions
	towards this end).

	* bseitem.[hc]: export bse_item_use() for non-item procedures.

	* bseplugin.[hc]: fix type registration order, so newly introduced
	procedures can use newly introduced objects.

	* bseserver.proc: supply a procedure to check for loader matches.

	* bsewave.proc: added procedure to retrive a BseEditableSample.

	* bswcommon.[hc]: made BseIcon into a BswIcon structure, so this
	can be shared and exported through the wrapper code.
	introduced BswValueBlock, which is basically a ref-counted array
	of floats.

	* gsldatacache.[hc]: support checking for presence of nodes without
	affecting the number of queued nodes (schrooedingers katze ;)
	fix dhandle naming.

	* fix BseIcon vs. BswIcon.

Wed Feb 13 18:12:16 2002  Tim Janik  <timj@gtk.org>

	* gsltests.c: 
	* gslfilter.c: applied patch from stefan with bug fixes and doc
	additions.

Wed Feb 13 17:32:45 2002  Tim Janik  <timj@gtk.org>

	* bsecontainer.proc: add list-items() procedure.

	* bsecontainer.[hc]:
	* bseitem.[hc]:
	* bseproject.[hc]:
	fix functions returning lists of values.

	* bseproject.proc: added procedures for item handling via
	uloc paths.

	* bseitem.proc: bug fixes. provide get-uloc-path().

	* bsedatapocket.c: omit extraneous changed notification from
	_bse_data_pocket_entry_set().

	* bsedatapocket.proc: bug fixes.

	* bsestorage.[hc]: export scanner convenience macros.

	* gslloader-wav.c:
	* bsewave.c: disable debugging output.

Tue Feb 12 06:42:33 2002  Tim Janik  <timj@gtk.org>

	* bswcommon.[hc] bswprivate.h: provide low-level glue code at the
	BSE layer, to reduce wrapping complexity.
	implement BswVIter, a value iterator which is used to return
	lists of values from procedures.

	* bsedatapocket.c:
	(bse_data_pocket_do_store_private): 
	(bse_data_pocket_do_restore_private): implement storage and parsing
	abilities.

Tue Feb 12 06:40:09 2002  Tim Janik  <timj@gtk.org>

	* bseproject.c (bse_project_find_item): fix bad uninitialized variable.

Mon Feb 11 22:31:37 2002  Tim Janik  <timj@gtk.org>

	* gsltests.c (main): applied changes from stefan to support filter
	function scans.
	changed file test to use gsl function.

	* gslloader-wav.c: remove junk code.

	* gslglib.[hc]: more compat stuff from stefan.

	* gslfilter.[hc] (gsl_filter_sine_scan): added filter scanning
	function from stefan.

Mon Feb 11 18:20:57 2002  Tim Janik  <timj@gtk.org>

	* bseitem.proc: add common-ancestor() procedure.

	* bseobject.[hc]: add bse_object_class_set_param_log_scale() to set
	logarithmic scale parameters for a proeprty.

	* bseparam.[hc] (bse_param_spec_set_log_scale): support logarithmic
	parameters on property scales. add bse_param_spec_get_log_scale()
	for read-out.

	* bseproject.[hc]: remove useless bse_project_add/remove_super()
	functions.
	support ordinary items (non-supers) as children of a project.
	add new function bse_project_find_item().

	* bseproject.proc: ad procedure get-data-pocket() to retrive a
	named data pocket object from a project.

	* bsequery.c: minor improvement to procedure doc generation.

	* bsetype.h: flags cleanup.

	* gslcommon.[hc]: support gsl_thread_self() for the main thread
	in a way that's also suitable for aRts.

	* gsldatautils.c: fix peekbuffer fill size.

	* gsldatautils.c: minor speed improvement for tailmatch_score_loop().

	* gslfilter.c: fox band pass/stop filter scaling, so that b[0]==1.0.

	* gslfilter.[hc]: implement filter evaluation routine for first direct
	canonical form.

	* gslieee754.h: use static inline instead of extern inline in the GCC
	case, so this works with --finstrument-functions.

	* gslloader-gslwave.c: correctly handle relative chunk file paths.

	* gslloader-wav.c: fix gcc-ism.

	* gslloader.h: make loop_start/end GslLongs.

	* gslmath.c: up the default %f precision in stringifaction.

	* gsltests.c: support multiple file names for the wave-scan command.

	* gslwavechunk.[hc]: add strngification functions for GslWaveLoopType.

	* gslwaveosc.h: fix FIXMEs.

	* bsecontainer.c (uncross_ref): important fix to only invoke
	uncross notifier when uncrossing, not when unreffing the cross
	ref.

	* bsedatapocket.[hc] bsedatapocket.proc: new object to hold view
	specific, generic data. currently lacks storage ability.

Wed Feb  6 04:52:37 2002  Tim Janik  <timj@gtk.org>

	* bsestorage.c (bse_storage_parse_param_value): allow floats when
	parsing int/uint, to ease backwards compatibility.

Wed Feb  6 04:38:01 2002  Tim Janik  <timj@gtk.org>

	* gslfilter.[hc]: added gsl_iir_filter_eval() plus _change and
	_setup variants to calculate IIR filters (second canonical
	direct form).

	* gslmakefile: fix tschebyscheff type II steepness in the
	gsltestoutput rule.

Tue Feb  5 04:32:04 2002  Tim Janik  <timj@gtk.org>

	* remove bsesample.[hc] from the tree as it's hopelessly
	outdated and has been superceeded by BseWave.

	* removed bsevoice.[hc], though songs don't work yet, they
	don't use BseVoice anymore.

	* added BseSequence, a new property type (boxed) containing
	sequences of notes.

	* bsesong.c: fix auto activation property.

	* gslopmaster.c: eeek, added a FIXME about not freeing flow
	jobs when discarding modules.

Sun Feb  3 23:01:45 2002  Tim Janik  <timj@gtk.org>

	* bseitem.[hc]:
	* bseprocedure.[hc]: support procedures up to BseObject.

	* bseobject.proc: new file to implement BseObject+is_a().

	* *.c:
	* bseobject.[hc]: changed object->name to object->uloc, a non
	user-editable propety which is a unique identifier for the
	objects whithin its container. added a simple string property
	object::name that has no uniquenes or character constrains
	anymore.

	* bsecontainer.[hc]: nuke item_seqid() and get_item() methods,
	we solve this once and for all here and don't need special casing
	in derived objects anymore.
	sequential ids are now handed out per exact type of a child in
	a container.

Sat Feb  2 12:22:11 2002  Tim Janik  <timj@gtk.org>

	* bseproject.[hc]:
	(bse_project_store_bse): add argument on whether to save wave
	files per reference or inlined.
	BseProject+store-bse: provide a procedure to actually store
	a project.

	* bsestorage.h: added a flag and macro BSE_STORAGE_SELF_CONTAINED()
	to indicate that objects shouldn't store references.
	* bsestorage.c: convert sample data via gsl_conv_from_float_clip().

	* bsewave.c: fix up the raminings of deciding between inlined storage
	or file references, works with BSE_STORAGE_SELF_CONTAINED() now.

Sat Feb  2 11:22:10 2002  Tim Janik  <timj@gtk.org>

	* bsemididevice-null.[hc]: new NULL midi device. basically allowes
	beast to operate with PCM without the need for /dev/midi.

Sat Feb  2 09:21:39 2002  Tim Janik  <timj@gtk.org>

	* gslcommon.[hc] (gsl_check_file): new function for elaborate
	error messages.

	* gsldatautils.[hc] (gsl_data_handle_dump_wav): dump a data handle
	as .wav file.
	const fixes for gsl_conv_*().

	* bsepcmdevice-oss.c (oss_device_write): use
	gsl_conv_from_float_clip() to improve accuracy and speed.

	* gsldatahandle.h: add hooks for linear read data handles,
	provide GSL_DATA_HANDLE_READ_LINEAR() to identify them and
	introduce GslDataHandleFuncs.coarse_seek() to reposition
	such handles.

	* gsldatahandle-vorbis.[hc]: Ogg/Vorbis data handle. using this
	with dcaches is suboptimal currently as dcaches warp back in pcm
	positions on block boundaries. so this should be used in conjunction
	with a linear-read-buffer handle only (which is of course not yet
	implemented ;).

	* gslloader-gslwave.c: GslLoader implementation for Ogg/Vorbis files.

	* gslopmaster.c (master_process_flow): assert that rounding mode is
	round-to-nearest, if this assertion is triggered, some software
	didn't cleanup after itself and should be fixed.

	* gsldatautils.c (gsl_data_handle_dump): clip values before saving,
	to avoid nasty value wraps.

	* gsldatautils.h: gsl_conv_from_{float|double}*() use gsl_ftoi()
	for the rounding now, which is more accurate and, at least on i386,
	slightly faster.

	* gslieee754.h: provide fpu rounding functions, most importantly
	gsl_ftoi() to round a float to interger in round-to-nearest mode.
	we also have gsl_fpu_setround()/gsl_fpu_restore() now, to force
	round-to-nearest mode, but that shouldn't be necessary as it's
	the default for ieee754 (and on i387).

Fri Feb  1 02:43:38 2002  Tim Janik  <timj@gtk.org>

	* gslfilter.[hc]: 
	* gslmath.[hc]: moved frequency/epsilon z/s plane transformations
	from gslmath.* to gslfilter.*.

	* gslfilter.[hc]: added gsl_filter_tscheb2_steepness_db() and
	gsl_filter_tscheb2_steepness() from stefan, which calculate the
	required steepness factor for gsl_filter_tscheb2_rp() and variants
	thereof.

Fri Feb  1 02:11:07 2002  Tim Janik  <timj@gtk.org>

	* bseconstant.[hc]: support stamped flow jobs to set an output by
	frequency, value or note.

	* gslopmaster.c (master_handle_flow_jobs): implement rudimentary flow
	job handling.
	(master_process_locked_node): handle flow jobs, fix output buffer
	virtualization for partial calculations (this is SLOW, desperately
	needs fixing).
	fixed stupid mistake where flow jobs weren't sorted by their tick_stamps
	upon insertion.

	* gslengine.h (struct _GslOStream): removed zero_initialize:1 flag
	from ostreams as modules can easily memset(,0,) themselves and the
	engine just becomes slower by checking this.

	* bsesong.c (song_set_n_channels): grmm, initialize channel constants
	with 0.0 (not the default 1.0).

	* bsesongthread.c: major timing fixes.

	* bseserver.[hc]: removed API/implementation about a magic-matched
	loader procedures (loaders are plugged into GSL now).

	* bsewave.[hc] (bse_wave_load_wave): new function to load a defined
	set of chunks from a wave in a file, uses the GslLoader.

	* bsewave.proc (load-wave): simply use bse_wave_load_wave() and get
	rid of the GValueArrays passed in.

	* bsesource.[hc]: provide bse_source_flow_access_modules() to commit
	access flow jobs.
	removed unused bse_source_access_imodules() and
	bse_source_update_imodules() functions.

	* bseutils.[hc]: provide bse_darrays_match_freq() that operates
	on GDArray instead of value arrays.

	* gslcommon.h: define GSL_MAX_TICK_STAMP.

Thu Jan 31 17:43:46 2002  Tim Janik  <timj@gtk.org>

	* bsepcminput.[hc]: new module, providing recording abilities,
	(still has latency issues though).

	* bsecapture.[hc]: disabled this (outdated) module, i.e. don't
	enter a category for it.

	* bsepcmoutput.[hc]: code fixes and cleanups.

	* bsepcmdevice-oss.c:
	* bsepcmdevice.[hc]: provide number of values read upon reading
	from a pcm handle.

	* bsepcmmodule.c: provide pcm input module.
	* bseserver.[hc]: use/support pcm input modules.

	* bsesong.[hc]: create left/right mixer.

	* bsesource.c: fix stupid bug that caused deletion of some
	source links to fail.

	* gslopmaster.c: consumer list handling fixes.

Thu Jan 31 01:15:24 2002  Tim Janik  <timj@gtk.org>

	* gslloader-wav.c: deal gracefully with overlong headers.

	* bseconstant.c: fix variable names.
	
	* bsewave.[hcp]*: export n_channels.
	
Tue Jan 29 15:16:51 2002  Tim Janik  <timj@gtk.org>

	* gslengine.[hc], gslopmaster.c: make consumer property a per module
	property, changable via gsl_job_set_consumer().
	
	* *.c: changed modules accordingly to set consumership where
	necessary.

	* bsesubsynth.[hc]: make number of input/output channels compile time
	configurable.
	
	* bsesong.[hc]: more work on the required synthesis network.
	
	* *.[hc]: s/BSE_ITEM_NEVER_STORE/BSE_ITEM_STORAGE_IGNORE/.

Fri Jan 25 07:13:25 2002  Tim Janik  <timj@gtk.org>

	* bseconstant.[hc]: moved this from ../plugins/ to here, since
	we refer to it from the core. changed module to deal with multiple
	outputs.

Thu Jan 24 11:04:41 2002  Tim Janik  <timj@gtk.org>

	* bseenums.[hc]: added more source conneciton errors, removed
	unneeded errors.

	* bsesource.[hc]: add joint (multi-connect) input channels.
	this still needs implementing on the engine side, i.e.
	jchannel->jstream, but the BSE side of things should be fully
	intact.

	* bsesource.proc: added a couple more procedures to let
	callers deal with ichannels and jchannels correctly.

Thu Jan 24 05:59:45 2002  Tim Janik  <timj@gtk.org>

	* gsl*.*: applied a good bunch of build fixes, and gcc-ism fixes
	and aRts special casing patches from stefan.

	* gsltests.c: feature fir aproximation, this still needs fixing though.

Thu Jan 24 01:13:47 2002  Tim Janik  <timj@gtk.org>

	* mkcproc.pl: output #line directives after stripping a comment.

	* gslwchunk.c: don't implement your own data handle. reduce
	stack size usage so this works in threading mode as well.
	fix ping-pong loop specification.

	* gslwavechunk.c: fix ping-pong loop assertions.

	* gsltests.c: use new loader API for wave file scan.
	
	* gslmagic.[hc]: new implementation of a magic(5) matcher,
	required by GslLoader. (formerly, this code was in bsemagic.[hc]).

	* gslloader.[hc]: new loader API implementation.
	(gslloader.c used to be a non-functional test program, removed
	that setup.)
	FIXME: should we fallback to other loaders after the first failed?
	FIXME: datahandle/dcache integration is somewhat suboptimal currently.

	* gsldefs.h: moved GslErrorType enum to here, added a couple
	of new structure prototypes.

	* gslglib.h: provide "GSL" log domain.

	* gsldatautils.c: fix gcc-isms.

	* gsldatahandle.[hc]: redid cache implementation, made it generic
	by supporting a hash structure filled in by data handle implementations
	to use as cache keys. provide public API cache entry points.
	fixed logic in data handle creation functions that could cause leaks
	under rare circumstances.
	provide gsl_wave_format_to_string() and gsl_wave_format_from_string(),
	formerly in gslwavedsc.[hc]).
	removed GslDataHandleLoader proposal API.
	FIXME: there needs to be decided how to handle mtime correctly.
	(gsl_wave_handle_new_cached): removed this as public API.
	(gsl_wave_handle_new): don't create a translation handle if not
	required.

	* gslcommon.[hc]: updated errors. provide gsl_byte_order_to_string()
	and gsl_byte_order_from_string() (formerly in gslwavedsc.[hc]).
	bootup .gslwave and .wav loaders.

	* bsewaverepo.proc: use new GslLoader API to load waves.

	* bsewaverepo.c: strip junk.

	* bsewave.proc: use new GslLoader API to load waves.
	renamed gslwave-loader to load-wave.

	* bsewave.c: use new load-wave procedure.

	* bseserver.[hc]: use GSL magics now.

	* bsemagictest.c: use GSL magics now, loader adaptions.

	* bseinfo.c: silence compiler.

	* bseenums.[hc]: merged GSL errors into BSE errors.

	* bsecategories.c: support new /Modules/ toplevel category.

	* bsemagic.[hc]: files removed.

	* gslwavedsc.[hc]: nuked files.

	* gslloader-wav.c: new file, implementing a RIFF/WAVE file loader.

	* gslloader-gslwave.c: new file, implementing a .gslwave file loader,
	most code migrated from gslwavedsc.[hc].

	* gslwave.header: updated this to reflect syntax changes, mainly, for
	raw sample chunks, byte_order, format and n_channels have to be the
	same for all chunks.

	* gslwaveosc-aux.c: don't abort on non-mono dirstrides. the oscillator
	still needs fixing to let the user specify the channel to use for
	playback.

Tue Jan 15 17:27:02 2002  Tim Janik  <timj@gtk.org>

	* bsecontainer.c (forall_prepare): ignore already prepared
	children.

	* bseparam.h: grr, gimme bse_param_spec_boolean().

	* bseproject.c (bse_project_prepare): give preparation precedence
	to BseWaveRepos, so synth modules can fetch their wave index
	from BseWave in BseSource.prepare().

	* gslfilter.[hc]: added gsl_filter_fir_approx() from stefan, which
	approximates an FIR filter from a frequency transfer function, given
	in freely-spaced transfer function samples.
	get rid of GSL_SIGNAL_EPSILON and GSL_SIGNAL_KAPPA.

	* gslmath.h: provide GSL_LN2.

	* gslopmaster.c: added debugging/trace facility to catch the slowest
	module in the current schedule.

	* gslsignal.[hc]: new file to aid signal processing. provides macros
	to test for signal edges and changes. also provides gsl_signal_exp2(),
	a fast but limited approximation of exp2f().

	* gslwaveosc*.[hc]: seperated wave oscillator code out of
	plugins/bsewaveosc.c into independantly callable functions. fixed up
	the code somewhat and added modulation.
	this is still missing an LP->LP transformation function in gslfilter.h
	to adjust the filter during modulation.

Sat Jan 12 11:22:18 2002  Tim Janik  <timj@gtk.org>

	* bseinstrument.[hc]: get rid of old sample and synth inputs. support
	BseWave now. removed a bunch of old/dead code.

	* bsesong.[hc]: create partial (non-savable) synthesis modules to
	play a song now.

	* gslfilter.[hc]: do gsl_trans_zepsilon2ss() in the public filter
	functions automatically, so users are to pass epsilon in z-space
	now, as they are to pass frequencies in z-space already.
	commented out an assertion that triggers an internal compiler error
	(bug reported to gcc-bugs).
	adjusted steepness argument for tschebyscheff type II filters, so
	it's a real factor, based on the first frequency given.

Fri Jan 11 06:17:23 2002  Tim Janik  <timj@gtk.org>

	* bsecontainer.h: provide object flags user shift macro.
	
	* *.c: reset TypeInfo prealloc configurations.
	
	* bseinstrument.c: tiny cleanup.
	
	* bsemain.[hc]: provide sequencer mutex.
	
	* bsepattern.c: insert sequencer locks as apropriate.
	
	* bsepatterngroup.c: same here.
	
	* bsepcmoutput.c: doh, fix off-by-one buffer access.
	
	* bsesnet.[hc]: change code to allow derivation.
	
	* bsesong.[hc]: derive from BseSNet. protect portions
	by sequencer lock. spwan sequencer thread upon playback.
	
	* bsesource.c: fix parser warning about failing connections.
	
	* bsestorage.c: fix off-by-one string access.
	
	* bsesuper.h: provide object flag user shift macro.
	
	* gsl-mplan.txt: updates, mention flow jobs.
	
	* gslcommon.[hc]: fix gsl_delete_struct/gsl_delete_structs.
	(gsl_ring_find): nw function to find data in a ring.
	(gsl_thread_new): return a thread handle.
	(gsl_thread_self): same here.
	(gsl_thread_sleep): sleep until timeout expires or woken up.
	(gsl_thread_aborted): should the thread abort?
	(gsl_thread_queue_abort): queue abort event on a thread.
	(gsl_thread_abort): abort a thread and wait until it finished.
	(gsl_thread_wakeup): wake up a sleeping thread.
	(gsl_thread_awake_after): queue wakeup of self after a certain
	tick_stamp.
	(gsl_thread_awake_before): queue wakeup of self before a certain
	tick_stamp.
	(gsl_thread_get_pollfd): retrive wakeup pollfd for self.
	(gsl_tick_stamp): return current tick stamp counter.
	(GSL_TICK_STAMP): get current tick stamp counter without
	lock protection (should be used within GModule only).
	
	* *.c: gsl_delete_struct*() adaptions.

	* gsldefs.h: provide GslThread handle.
	(if_reject): if() statement that is unlikely to succeede.
	(if_expect): if() statement that is likely to succeede.
	
	* gslengine.c: fix stream buffer allocations.
	doc fixes. added proper tick_stamp support.
	(gsl_flow_job_access): queue a time stamped flow job on
	a module to access module data.
	(gsl_flow_job_suspend): queue a time stamped flow job on
	a module to suspend it.
	(gsl_flow_job_resume): queue a time stamped flow job on
	a module to resume it.
	
	* gslopnode.h: buncha renaming and fields order changing.
	added flow jobs.
	
	* gslopmaster.c: removed master node list code. handle
	flow jobs. misc fixes. changed wakeup mechanism.
	walk unscheduled nodes with flow jobs at the end of dispatching.
	
	* gslopschedule.c: care of keping master node list sorted. dump
	schedule for debugging once it changed.
	
	* gsloputil.[hc]: plugged memleak. removed gross over-allocation
	of buffers. handle flow job trash queue. added function for
	master node list maintenance: _gsl_mnl_remove(), _gsl_mnl_integrate()
	and _gsl_mnl_reorder(). the list is partially sorted now.
	(gsl_engine_garbage_collect): do proper trash collection from
	user thread. removed old wakeup code.
	
	* gslfilter.h: added GSL_SIGNAL_EPSILON and GSL_SIGNAL_KAPPA
	to compare valid signals against.
	
	* gslmath.[hc]: make gsl_bit_depth_epsilon() return doubles.
	
Thu Dec 20 06:40:04 2001  Tim Janik  <timj@gtk.org>

	* gslmath.[hc]: include gslieee754.h.
	(gsl_bit_depth_epsilon): grumble, make this return doubles.

	* gslieee754.h: new file, containing all the necessary bits to provide
	and check for inf/nan, normal and subnormal numbers on ieee754 floats
	and doubles.

Fri Dec 14 08:49:49 2001  Tim Janik  <timj@gtk.org>

	* bsemididevice-oss.c: use BseServer IO watch to monitor device.
	this should have its own thread some day, but for now a high
	prioritized main loop source is pretty fine already.

	* bsepcmdevice.[hc]: support setting watermarks on pcm handles.

	* bsepcmdevice-oss.c: fix up to PCM changes.

	* bsepcmmodule.c: yay, fixup poll function, finally! supports
	watermark now.

	* bseserver.[hc]: added pcm_latency property. implemented io watch
	handlers through a main loop source for now, should be a thread
	someday.

Fri Dec 14 04:09:52 2001  Tim Janik  <timj@gtk.org>

	* gslengine.c (gsl_engine_prepare): fix loop filling for the
	threaded case, we don't need to be processed at all, so return
	a timeout of -1.

Wed Dec 12 04:44:08 2001  Tim Janik  <timj@gtk.org>

	* fft.h: added tentative float convenience wrapers.

	* gslwavedsc.[hc]: added stringification and parsing functions for
	byte order and wave format.

	* gslcommon.[hc]: added gsl_ring_length(), gsl_ring_nth(),
	and gsl_ring_nth_data(), fixed other gsl_ring_* functions.

	* gsldatautils.h: add double conversion variants gsl_conv_from_double,
	gsl_conv_from_double_clip and gsl_conv_to_double.

Tue Dec 11 01:17:43 2001  Tim Janik  <timj@gtk.org>

	* gsldatautils.[hc]: new files containing general sample data/
	data handle utility functions, some of these functions are
	based on code from Stefan Westerfeld.
	(gsl_data_detect_signal): detects signal start and end position within
	a data handle.
	(gsl_data_find_sample): find sample values or ranges thereof within
	a data handle.
	(gsl_data_find_tailmatch): determine loop points to aproximate a data
	handle's tail.
	(gsl_data_handle_dump): write out data handle contents to a file
	descriptor.
	(gsl_data_handle_peek_value): function to read a single sample out of a
	data handle. needs temporary peekbuffer variable to perform block-wise
	reads behind the scenes.

	* gsllooper.[hc]: removed these files.

	* gsldatahandle.h: added wave format loader hook proposal.

Tue Dec 11 00:52:02 2001  Tim Janik  <timj@gtk.org>

	* FFT mania:

	* gsl-fftgen.pl: perl script to generate speed-optimized fft
	calculating routines.

	* gsl-fftconf.sh: configuration file to invoke gsl-fftgen.pl,
	and to provide public FFT routine frontends.

	* gslfft.h: publically exported FFT function header file.
	* gslfft.c: autogenerated FFT calculation code.

	* gslffttest.c: test code for FFT accuracy.

Mon Dec 10 23:01:44 2001  Tim Janik  <timj@gtk.org>

	* changes done together with Stefan Westerfeld.

	* gslmath.[hc]:
	(gsl_complex_reciprocal): new function to compute the reciprocal
	value of a complex number.
	(gsl_complex_id): new function, returning the passed in complex number.
	(gsl_poly_mul): function changed and fixed to deal with variable length
	polynomials and work in place.
	(gsl_cpoly_mul): complex variant of gsl_poly_mul().
	(gsl_float_sign): extract sign of a float or double.

	* gslfilter.[hc]: scratched old filter variants.
	(gsl_filter_butter_rp):
	(gsl_filter_tscheb1_rp):
	(gsl_filter_tscheb2_rp): new functions to compute roots and poles for
	butterworth, and the both tschebyscheff types filters.
	(gsl_filter_butter_lp):
	(gsl_filter_tscheb1_lp):
	(gsl_filter_tscheb2_lp): added lowpass filter functions.
	(gsl_filter_butter_hp):
	(gsl_filter_tscheb1_hp):
	(gsl_filter_tscheb2_hp): added highpass filter functions.
	(gsl_filter_butter_bp):
	(gsl_filter_tscheb1_bp):
	(gsl_filter_tscheb2_bp): added bandpass filter functions.
	(gsl_filter_butter_bs):
	(gsl_filter_tscheb1_bs):
	(gsl_filter_tscheb2_bs): added bandstop filter functions.

	* gsltests.c: support new filter types.

Mon Nov 26 10:04:42 2001  Tim Janik  <timj@gtk.org>

	* bsecontainer.c: fix things to not cast GType into UINT.
	* bseobject.c: 
	* bseserver.c:
	* bseproject.c: same here.

Mon Nov 26 05:08:50 2001  Tim Janik  <timj@gtk.org>

	* gsldatahandle.[hc] (gsl_data_handle_new_insert):  implemented new
	handle for insertion of a small fixed value block.

	* gslmath.[hc] (gsl_bit_depth_epsilon): new function for epsilons at
	certain bit depths.

Sun Nov 25 23:47:16 2001  Tim Janik  <timj@gtk.org>

	* gsl*.[hc]: applied patch from stefan to use g_newa() instead
	of g_alloca() and fix other minor portability issues.

Sun Nov 25 23:36:57 2001  Tim Janik  <timj@gtk.org>

	* bsetype.h: fix fundamental type IDs accoring to recent
	glib changes.

Wed Nov 14 10:37:24 2001  Tim Janik  <timj@gtk.org>

	* gslcommon.[hc]: add more error types.
	
	* gslconvert.[hc]: preliminary UTF8 conversion.

Wed Nov 14 08:36:41 2001  Tim Janik  <timj@gtk.org>

	* gsl*.[hc]: applied heavily modified patch from stefan to make
	things more portable and get rid of various GCC-isms.

Wed Nov 14 03:37:14 2001  Tim Janik  <timj@gtk.org>

	* bsequery.c (show_procdoc): s/param_get/param_spec_get/.

Tue Nov 13 01:44:01 2001  Tim Janik  <timj@gtk.org>

	* gsllooper.[hc]: minor fixes.

Mon Oct 29 22:45:37 2001  Tim Janik  <timj@gtk.org>

	* gsldatahandle.h: provide GSL_DATA_HANDLE_OPENED() to
	check whether a handle is open.
	added bit_depth member to GslDataHandle, so the information
	about the number of significant bits doesn't get lost by using
	floats.

	* gsldatahandle.c: implement reversed data handle.
	gsl_data_handle_open(): return errno instead of GslErrorType
	(so code portions that want to, can produce more elaborate
	messages).
	(gsl_data_handle_read): fixed a bug with boundary alignment.
	(gsl_data_handle_common_init): added bit_Depth argument, so
	an apropriate format can be choosen at save time.
	
	* gsldefs.h: nuke GSL_BYTE_ORDER, we have G_BYTE_ORDER even
	in the glib-compat code.

	* gsllooper.[hc]: renamed gsl_loop_find_tailmatch to
	gsl_data_find_tailmatch() should probably have a gsldata.[hc]
	file for this.
	added gsl_data_find_sample() to search for a certain sample
	in a GslDataHandle.
	provide gsl_data_peek_value() which is a macro to be used to
	extract single data samples from a GslDataHandle (it needs a
	user supplied stack buffer GslDataPeekBuffer which needs to be
	0-initialized). this avoids wiritng custom buffering code
	over and over when looping over a data handle's values.

	* gslwave.header: provide a sample for how gslwave headers
	are structured.

	* gsltests.c: add midi2freq function.

Mon Oct 29 22:40:52 2001  Tim Janik  <timj@gtk.org>

	* gslcommon.c (gsl_init): don't crash on NULL options.
	

Sat Oct  6 14:27:39 2001  Tim Janik  <timj@gtk.org>

	* gslglibhash.cc: new GHashTable implementation in c++ from
	stefan, that doesn't use SGI specific classes.

	* gslglibhashtest.cc (main): new file from stefan to test hashtable.
	
	* bseitem.proc: add procedure to retrieve type blurb of an item.

Thu Sep 27 13:10:43 2001  Tim Janik  <timj@gtk.org>

	* MANY fixes, new APIs and cleanups.

	* we're now using GSL, a common sound stuff backend for, at this
	point, at least aRts and BSE. GSL comes with an abstraction to
	sound file handles, file caches (that're designed for asyncronous
	prereading), wavechunk looping, multi-sample waves and a flow
	module operation engine. there're little docs on this yet, however
	for the engine, the public guts are in engine.h and gsl-mplan.txt
	gives a conceptual overview of the engine.
	the core rationale for GSL is code sharing between BSE and aRts
	to reduce required effords by both projects, and for the engine
	specifically, the need to process modules of huge networks and
	cycles tehreof, asyncronously and efficiently with full support
	for multi processor systems.

	* rough summary:
	- we're using GSL now for data file caching, format conversion
	  and similar things and filter calculation.
	- we're just having GObject and GLib as BSE dependancy again,
	  as the GObject move is completed now and remains of blib got
	  backmerged into BSE.
	- we're using the GSL engine at the core now. most things work
	  again or better, except for songs. songs have to be implemented
	  a whole lot differently using engine concepts, the exact outcome
	  of this is not yet clear.
	- a basic midi backend is supplied now
	- BSE objects now just generally serve as templates for GSL module
	  networks to be created. this allowes for the same synthesis network
	  object to be plugged into different contexts and be realized
	  multiple times.
	- instead of BseSample, samples are now gotten from BseWaveRepo
	  and BseWave now, which deals with samples, multi-samples and
	  collection thereof via GSL.

Sun Nov  5 02:30:38 2000  Tim Janik  <timj@gtk.org>

	* Makefile.am: parallel build fix, bseenum_arrays.c wouldn't get
	initially created.

	* mktypes.pl: include perl script name when dieing. to figure parent
	types, just match /_type_register_static/ so we catch bse_ and g_.

Sun Jul 23 02:57:16 2000  Tim Janik  <timj@gtk.org>

	* bsesongsequencer.c (bse_song_sequencer_step_row): seperated code for
	row stepping, we do the checking of the bse_effect_jump_sequencer()
	return values on the fly now.

	* bseeffect.c (bse_effect_jump_sequencer): don't return a boolean value
	on whether the arguments changed.

Mon May 29 02:37:01 2000  Tim Janik  <timj@gtk.org>

	* bsepattern.c: save and load effect list with notes.

	* bseeffect.[ch]: object framework cleanup, we really just derive from
        BseObject and that's it. provide class methods for effect settings.
	scratched the BseEffectType idea, we use real methods instead of
	hardcoded object type special casing in sequencer and front ends.

	* bseeffectfinetune.c:
	* bseeffectpatternbreak.c:
	* bseeffectbalance.c:
	* bseeffectnotevolume.c: completed effect implementation.

	* bseeffectpatternjump.c:
	* bseeffectvolumedelta.c: unimplemented, still on hold.

	* bsevoice.[hc]: fine_tune bug squeezed (API cleanup), support arbitrary
	effect settings.

	* bsesongsequencer.c (bse_song_mixer_activate_voice): inserted effect
	hooks for sequencer stepping and initial voice setup.

Sat May 27 16:16:01 2000  Tim Janik  <timj@gtk.org>

	* bsevoice.c (bse_voice_make_poly_and_renew): simply reset voices that
	haven't started playing yet.

	* mkenums.pl (parse_entries): urg, don't hang on multi line comments,
	but read them up.

Fri May 26 07:58:14 2000  Tim Janik  <timj@gtk.org>

	* bsepattern.[hc]: provide effect management functions:
	(bse_pattern_note_get_n_effects): number if effects on note.
	(bse_pattern_note_get_effect): get effect by index.
	(bse_pattern_note_find_effect): get effect by type.
	(bse_pattern_note_actuate_effect): install effect type.
	(bse_pattern_note_drop_effect): drop effect type.

	* bsecategories.c (category_strip_toplevels): handle /Effect toplevel
	categories.

	* bse.h: only export the BseEffect basis type to the rest of the world.

Thu May 25 02:56:18 2000  Tim Janik  <timj@gtk.org>

	* bsebuffermixer.[hc]: 
	* bsebuffermixercore.c: mixer function cleanup, implemented cubic
	interpolation.

Wed May 24 06:40:11 2000  Tim Janik  <timj@gtk.org>

	* bsebuffermixercore.c: squeezed half_step thinko in linear
	interpolation. optimized linear interpolation by trading a
	multiplication for a bitshift.

	* bsevoice.c (bse_voice_set_note): set BseMixSource's block_padding
	field from the munk's bin_data object.

	* bsebuffermixer.[hc] (struct _BseMixVolume): added block_padding field,
	since certain interpolation can only be run with sufficient start and
	end padding on the sample data.

	* bsestorage.c (bse_storage_create_rblock): set bin data padding on
	newly created bin_data objects to BSE_DFL_BIN_DATA_PADDING.

	* bsebindata.[hc]: support zero padding at start and end of data block
	by a certain amount of bytes.
	(bse_bin_data_set_byte_padding): set padding if no data was
	allocated yet.

Tue May 23 18:17:24 2000  Tim Janik  <timj@gtk.org>

	* bseenums.h (enum): new enum BseInterpolType.

	* bseinstrument.[hc]: made the interpoltion field an enum.

Fri Apr 28 21:27:16 2000  Tim Janik  <timj@gtk.org>

	* bseobject.c (bse_object_add_notifier_i): list all valid characters in
	call to g_strcanon().

Thu Apr 20 00:35:20 2000  Tim Janik  <timj@gtk.org>

	* bsecontainer.c (bse_container_do_remove_item): remove child source's
	input/output channels, regardless of the prepared state of the
	container.

Thu Apr 13 01:11:22 2000  Tim Janik  <timj@gtk.org>

	* bseobject.c (bse_object_do_shutdown): assert no further ref_count
	increments.

Tue Apr 11 04:02:47 2000  Tim Janik  <timj@gtk.org>

	* ported everything BSE over to the new GLib type system.

	* BseParam* got nuked.

	* *.[hc]: port over to use GValue instead of BseParam, use
	GParamSpec* and BParamSpec structures instead of BseParamSpec*
	and BseObjectParamSpec.
	pitfall: [bg]_param_spec_* () creation functions in general
	take minimum, maximum, default_value, stepping_rate now (swapped
	stepping_rate and default_value from the old bse_param_spec_*()
	functions).

	* *.[hc]: port objects over to GType and GObject, most objects
	perform their cleanups in BseObjectClass.destroy() now.
	finalize() got moved to GObject.
	shutdown() got moved to GObject and shouldn't normally be
	used by object implementations.
	BseObject is a derived type of GObject now.

	* bseobject.[hc]: apart from porting this over to GObject derivation,
	a bunch of its implementation vanished, such as parameter set/get
	facilities, reference counting and finalization.
	nuked old BseInterface cruft.

	* bseprocedure.[hc]: port over to GValue from BseParam, that means
	in/out values are now matched by position, and automated value
	conversion is performed where applicable.

	* bsestorage.[hc]: port over from BseParam to GValue. we still
	provide all means for loading and saving in this place, rather
	than implementing it as virtual functions in the ParamSpec
	classes. to switch() identify the non-fundamental param types,
	we now use BLib's B_SEQ_PARAM_* id facility.

	* bsetype.[hc]: nuked most of the rest of the file contents,
	all param types are now introduced and implemented in BLib.

	* miscellaneous related code cleanups.

Mon Apr  3 17:05:32 2000  Tim Janik  <timj@gtk.org>

	* bsemagic.[hc]: file magic implementation to figure file types
	from contents. provides simple TRUE/FALSE match results, optimized
	for running multiple match types on a single file.

	* bseexports.h:
	* bseplugin.[hc]: started out on load/save handler plugin
	facilities.

	* bseplugin.h: provided one liner descriptions for the complex
	macro magic we use for loading plugins.

Sun Apr  2 04:53:12 2000  Tim Janik  <timj@gtk.org>

	* Makefile.am: removed glib-* entries that went into blib.
	* glib-*.[hc]: files removed.

Fri Apr 28 21:33:52 2000  Tim Janik  <timj@gtk.org>

	* glib-extra.h: more adaptions for GLib 1.3.1 compatibility.
	* glib-extra.c (g_strcanon): only allow characters passed as
	valid_chars.

	* glib-gparam.c (g_param_spec_internal): 
	* glib-gparam.c (g_param_spec_hash_table_lookup): list all valid
	characters in call to g_strcanon().

Mon Apr 17 20:45:50 2000  Tim Janik  <timj@gtk.org>

	* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
	n_params prior to destructing them.

Tue Apr 11 04:28:10 2000  Tim Janik  <timj@gtk.org>

	* fixed a coupole of bugs in the initial parameter/object
	implementations, after getting beast running on GObject and GValue.

	* btype.[hc]: miscellaneous B* type stuff, provide sequential
	is for B_TYPE_PARAM_* types, so code can switch() on them.

Fri Apr  7 04:27:49 2000  Tim Janik  <timj@gtk.org>

	* glib-gobject.[hc]: completed parameter set/get implementations,
	along with asyncronous parameter changed notification queue.

Mon Apr  2 02:07:55 2000  Tim Janik  <timj@gtk.org>

	* bparam.[hc]: BParamSpec implementations, some of them are just
	simple extensions of the GLib parameter specifications.

Sun Apr  2 04:54:36 2000  Tim Janik  <timj@gtk.org>

	* glib-includes.h: mangle GLib extension files together.

	* glib-gobject.[hc]: GObject implementation, that is facilities
	for setting/getting quarked data and reference counting.

	* glib-gparamspecs.[hc]: first actuall parameter implementations
	for GLib, so far we have: char, uchar, bool, int, uint, long,
	ulong, enum, flags, float, double, string and object. each of these
	GParamSpecs is a new instantiatable type in its own respect,
	so the .c file derives 13 new types from G_TYPE_PARAM and
	defines over 50 (*2) conversion facilities.

	* glib-gvaluecollector.h: generic varargs handling stubs for
	GParamSpecs, private header file (does get installed for
	inclusion into user code though).

	* glib-gvalue.[hc]: GValue functionality implementation.

	* glib-gparam.[hc]: basis GParamSpec implementation for
	the virtual base type G_TYPE_PARAM.

        * glib-genums.[hc]: enum/flags type implementation, based on
	bseenum.[hc].

	* glib-extra.[hc]: GLib additions, including 1.3 compatibility
	routines and various other functions, from string manipulation
	over list manipulation up to a unix signal GSource.

	* glib-gtype.[hc]: GLib Type System implementation, heavily
	based on BSE's dynamic type system.

Tue Mar 28 14:39:38 2000  Tim Janik  <timj@gtk.org>

	* bsestorage.c (bse_storage_put_bin_data): corrected byte order
	bugs when saving.

	* bsebindata.c (bse_bin_data_set_values_from_fd): correct some
	byte order bugs. this object still needs some clean ups.
	(bse_bin_data_init_values): new function to pre-initialize the
	object with a specified number of 0 values.

Tue Mar 28 05:38:07 2000  Tim Janik  <timj@gtk.org>

	* glib-gobject.[hc]: GObject implementation.

	* builtin_bsepattern.c: capitalize procedure categories.

Sat Mar 25 10:31:40 2000  Tim Janik  <timj@gtk.org>

	* glib-genums.[hc]: new files, takling over most of the bseenum.[hc]
	functionality.

	* bsequery.c: quickly added facility to iterate over the
	fundamental types.

	* bseplugin.c (bse_plugin_register_types): register enums and flags
	types inline.

	* *.[hc]: port over to G_TYPE_ENUM and G_TYPE_FLAGS.

Fri Mar 24 09:19:55 2000  Tim Janik  <timj@gtk.org>

	* bsetype.[hc]: ported the BSE type system over to use the GLib
	one, bsetype.c is now < 200 lines, hoehoe ;)

	* *.[hc]: port over from BSE to GLib type system.

Fri Mar 24 06:00:07 2000  Tim Janik  <timj@gtk.org>

	* glib-gtype.[hc]: finished GLib Type System implementation, now
	on to the testing.

Mon Mar 13 00:05:37 2000  Tim Janik  <timj@gtk.org>

	* bsesongsequencer.c (bse_song_sequencer_step): handle songs with
	empty playlists (pattern==NULL). we still simply loop the song
	at the end though...

	* bsepatterngroup.[hc] (bse_pattern_group_get_nth_pattern): new function
	to return pattern by play index.

	* bsesong.c (bse_song_get_pattern_from_list): implemented this in
	terms of fetching the current pattern to play from the pattern groups.

Sun Mar 12 16:07:50 2000  Tim Janik  <timj@gtk.org>

	* bseinstrument.c (bse_instrument_class_init): disabled synthesis
	input facility.
	* bsesinstrument.c (BSE_BUILTIN_TYPE): don't register a category
	for this object yet.

Fri Mar 10 22:48:33 2000  Tim Janik  <timj@gtk.org>

	* bsesong.c: 
	* bsesnet.c:
	* bseheart.c:
	* bsesample.c:
	* bsepattern.c:
	* bseinstrument.c:
	* bsepatterngroup.c:
	* bseeffectfinetune.c:
	* bseeffectnotevolume.c:
	* bseeffectpatternjump.c:
	* bseeffectvolumedelta.c:
	* bseeffectpatternbreak.c:
	preallocation adjustments.

	* bseglobals.h (BSE_PREALLOC_N_SUPERS): added object preallocation
	defines so memory can be trimmed if desired.

	* bseutils.c (bse_icon_ref_static):
	s/bse_icon_static_ref/bse_icon_ref_static/ and changed callers.
	
	* TODO: cleanups.

Wed Mar  8 14:57:50 2000  Tim Janik  <timj@gtk.org>

	* bsepatterngroup.c: implemented bse_pattern_group_store_private()
	and bse_pattern_group_restore_private() to store tha pattern list.

	* bsesong.c: implemented bse_song_restore_private(),
	bse_song_store_after() and bse_song_restore() to save and load
	the pattern group list.

	* bseobject.[hc]: semantic change, substituted store_termination()
	method with store_after(), so second stage saving can be used
	in the same way as store_private() (derived widgets can store
	stuff even after chaining the parent handler).
	(bse_object_store): after invoking store_after(), store
	the actual termination.

Wed Mar  8 12:28:19 2000  Tim Janik  <timj@gtk.org>

	* bsesong.c (bse_song_remove_item): remove references to
	removed pattern from pattern groups.

Mon Mar  6 23:47:46 2000  Tim Janik  <timj@gtk.org>

	* bsesong.[hc]: added pattern group support:
	bse_song_get_default_pattern_group(),
	bse_song_insert_pattern_group_link(),
	bse_song_insert_pattern_group_copy() and
	bse_song_remove_pattern_group_entry().
	
	* bsepatterngroup.[hc]: new maintenance object to keep track of
	patterns, grouped together for arranger parts.

	* bseitem.[hc] (bse_item_queue_seqid_changed): made seqid_changed() an
	async notification.

Tue Feb 22 07:28:03 2000  Tim Janik  <timj@gtk.org>

	* builtin_bsepattern.c: added Tools/Fill random procedure, formerly
	in fldbsepattern.c as a test procedure.

Tue Feb 22 04:58:22 2000  Tim Janik  <timj@gtk.org>

	* bsebuffermixer.[hc]: new files, containing abstracted and optimized 
	BseMixValue buffer mixing functions, based on the former song mixing
	core.
	* bsebuffermixercore.c: actuall mixer function implementation, compiled
	multiple times with different optimization setups.

	* bsehunkmixer.[hc]: removed BseMixValue related mixing functions,
	s/bse_hunk_clip_mix_buffer()/bse_hunk_clip_from_mix_buffer()/.

	* bsesongsequencer.c: moved a bunch of the former bsesongmixer.c
	fucntions here, cleaned code up a bit by using bse_mix_buffer_*()
	functions.
	temporarily disabled synth instruments.

	* bsevoice.[hc]: major cleanups and rewrites, use BseMix* type
	structures for certain value sets. some preparation for note effect
	support.

Wed Feb  9 12:58:48 2000  Tim Janik  <timj@gtk.org>

	* bseparam.[hc]: major parameter cleanups, scratched the param_group,
	param_id and parent_type memebers so params are more appropriate for
	general use.

	* bseobject.[hc]: changed the way we store per-class parameter specs,
	so we can still suply a param_id and a param_group, and have the
	object_type for hash lookups.
	got rid of the IN_PARAM_CHANGED flag.
	we pass the param_id as a seperate argument to the classes
	get_param() and set_param() functions now.
	(bse_object_class_get_n_param_specs):
	(bse_object_class_get_param_spec): accessors for param specs.

	* *.c: changed all get_param() and set_param() functions accordingly.

Wed Feb  9 03:17:18 2000  Tim Janik  <timj@gtk.org>

	* bseparam.c (param_exchange_lookup): a conversion rule for
	BSE_TYPE_PARAM_UINT <=> BSE_TYPE_PARAM_UINT was missing.
	optimized exchange function table lookups by returning
	param_exch_copy() right away for equal types.
	(bse_param_values_exchange): validate parameters after exchanging.

Wed Feb  9 00:53:20 2000  Tim Janik  <timj@gtk.org>

	* bsepattern.h (struct _BsePatternClass): put a comment to not confuse
	people about current_channel and current_row.

Tue Feb  8 09:23:25 2000  Tim Janik  <timj@gtk.org>

	* bseutils.[hc]: return the referenced icon from bse_icon_static_ref()
	and bse_icon_ref().

	* bsesnet.c:
	(BSE_BUILTIN_TYPE): don't add to categories.
	(bse_snet_class_init): 
	(bse_snet_do_get_icon): return synthesis network icon.

Mon Feb  7 02:57:43 2000  Tim Janik  <timj@gtk.org>

	* bsepattern.[hc]: reintroduce bse_pattern_select_note() and
	bse_pattern_unselect_note() to modify note selections on individual
	notes.
	(bse_pattern_restore_selection): use bse_pattern_select_note() or
	bse_pattern_unselect_note() so notifiers get invoked.
	(bse_pattern_has_selection): new function to quickly check whether
	selected notes are present at all.

	* bsedefs.h: introduced BseNotify_note_selection_changed() notifier.

Thu Feb  3 09:19:49 2000  Tim Janik  <timj@gtk.org>

	* glib-extra.[hc]:
	s/signal/usignal/ for glib's unix (user) signal loop source.
	compat code to make g_datalist_id_remove_no_notify() return
	the data for !1.3.1 glib.

	* bseobject.[hc]:
	* bsesource.c:
	* bseparasite.c:
	* bsecontainer.c:
	qdata_remove_no_notify fixups.

Wed Feb  2 23:59:48 2000  Tim Janik  <timj@gtk.org>

	* builtin_bsepattern.c (multi_select_exec): added Select/All,
	Select/None and Select/Invert procedures.

	* bsepattern.[hc]: revamped selection API, we only store the
	selection for procedure invokations now.

	* bseexports.h: 
	* bseprocedure.[hc]: added private_id field to procedure class and
	export type for multipurpose procedures.

Wed Feb  2 05:37:02 2000  Tim Janik  <timj@gtk.org>

	* bsepattern.[hc]:
	(bse_pattern_unselect_except): new (internal) function.

	* *.c: altered seom copyright years.

Tue Feb  1 02:35:04 2000  Tim Janik  <timj@gtk.org>

	* bsepattern.[hc] (bse_pattern_modify_note): disentangle note selection
	from note modifications.

	* builtin_bsepattern.c: change accordingly.

Mon Jan 31 19:09:37 2000  Tim Janik  <timj@gtk.org>

        * bsesongsequencer.[hc]:
        * bsesongmixer.c:
        * bsevoice.[hc]: play bsesinstrument blocks for synthesis instruments,
        we still have some fading problems here.

Thu Jan 27 19:20:45 2000  Tim Janik  <timj@gtk.org>

	* bsesnet.c:
	(bse_snet_remove_item): don't reset items, let BseContainer take
	care of this.

	* bseproject.c: only rprepare/reset the prject itself for playback, the
	rest is taken care off by the BseContainer implementation.

	* bsecontainer.c:
	(bse_container_prepare): prepare all BseSource children.
	(bse_container_reset): rest all BseSource children.
	(bse_container_do_add_item): prepare items if necessary.
	(bse_container_do_remove_item): reset item if necessary, clear input
	and output channels for non-container children.

Mon Jan 24 20:07:48 2000  Tim Janik  <timj@gtk.org>

	* bseobject.c (bse_object_queue_param_changed): do param_changed
	notification fully asyncronous from an idle handler (not only
	compressed for multiple param specs).

	* bseproject.[hc]:
	(bse_project_list_nick_paths):
	(bse_project_item_from_nick_path): new functions to list nick path of
	all items of a specific type contained in this project, and to find
	the items again from their nick paths.

	* bseitem.[hc] (bse_item_make_nick_path): create an item path made up of
	object names only.

	* bsecontainer.c: fixed uncross bug.

	* bsesongsequencer.[hc]:
	* bsesongmixer.c:
	* bsevoice.[hc]:
	recoded the voice allocation scheme, so we keep the association of
	poly voices with their original channels.
	major source cleanups, fixed a bunch of bugs.
	added support for voice inputs from other objects than samples.

	* bsesong.[hc] (bse_song_update_sequencer): provide possibility for
	external sequencer syncronization.

	* icons/mic.*:
	* bsecapture.[hc]:
        moved capturing source from plugin dir to BSE proper.
        
	* bsepattern.[hc]: s/BseNote/BsePatternNote/.
        *.[hc]: bunch of BsePatternNote fixups and signedness corrections for
        notes in general.

        * bseglobals.h:
        * bsecontainer.c:
        * bseheart.c: priority fixups.
        
Mon Jan 17 15:01:11 2000  Tim Janik  <timj@gtk.org>

	* bsedefs.h:
	* bsecontainer.c: provide asyncronous notification of cross-link
	changes through a "cross_changes" notifier.

	* glib-extra.[hc]: added g_slist_remove_any() to walk the whole list
	and remove items, in case an item got added twice or more times.
	added G_STRLOC macro that expands to a string, describing its current
	source file location.

	* bseitem.[hc]: supply bse_item_has_cross_owners() and
	bse_item_list_cross_owners(), the return value needs to be
	g_list_free()ed, no references are held on the items though.

	* bsecontainer.[hc]: implemented bse_container_cross_forall() to walk
	all cross references (do *not* modify the cross references during
	execution of this function).

	* bsesongmixer.c (bse_song_mixer_activate_voice): deal with NULL samples
	in instruments.

	* bsesongsequencer.c:
	* bsesongmixer.c (bse_song_mixer_fill_buffer): namespace fixups.

Mon Jan 17 12:59:16 2000  Tim Janik  <timj@gtk.org>

	* bsechunk.[hc]: provide bse_chunk_get_trigger_state() that returns
	whether a specified track of a chunk carries a positive trigger signal
	or not.

Mon Jan 17 11:07:16 2000  Tim Janik  <timj@gtk.org>

	* bsehunkmixer.h: provide BSE_CLIP_SAMPLE_VALUE().

	* bsehunkmixer.c: make use of BSE_CLIP_SAMPLE_VALUE().

	* bseglobals.h: provide BSE_MIX_FREQ_f, BSE_TRACK_LENGTH_f,
	BSE_MIX_FREQ_d and BSE_TRACK_LENGTH_d.

Sun Jan 16 06:36:54 2000  Tim Janik  <timj@gtk.org>

	* bsecontainer.[hc]:
	(bse_container_shutdown): destroy remaining cross references.
	(bse_container_do_remove_item): uncross item when removing it.
	(bse_container_cross_ref): install a cross reference.
	(bse_container_cross_unref): destroy a cross reference.
	(bse_container_uncross_item): destroy all cross references that
	contain item (or any of its children) and another item that
	is not part of the hirarchy branch spawned by item.

	* bseitem.[hc]:
	(bse_item_cross_ref):
	(bse_item_cross_unref): new functions to maintain cross references
	(a special kind of weak reference between two hirarchy branches)
	between items within the same project.

	* bseinstrument.c (bse_instrument_set_param): use cross references to
	keep a pointer to the sample.

Sat Jan 15 18:42:28 2000  Tim Janik  <timj@gtk.org>

	* bsemixer.[hc]: 
	* bsehunkmixer.[hc]: renamed bsemixer.[hc] to bsehunkmixer.[hc].
	added bse_hunk_clip_mix_buffer() and bse_mix_buffer_fill().

	* bseheart.c (bse_heart_mix_chunks): use bse_hunk_clip_mix_buffer().
	* bsesongsequencer.c (bse_song_sequencer_fill_hunk): same here.

	* bsesnet.[hc]: added master volume (finally!).

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.
