Wed Feb 11 01:43:49 2004  Tim Janik  <timj@gtk.org>

	* bseamplifier.idl: let base_level properly default to 0.
	
	* bseprocedure.proc: implement accessors for authors and license
	about types.

Sun Feb  8 03:32:11 2004  Tim Janik  <timj@gtk.org>

	* bseconstvalues.h: provide float and double versions of 
	BSE_MAX_FINE_TUNE.

	* bsepart.[hc]:
	comletely reimplemented the basic data structures. switched to binary
	searchable arrays rather than implementing one from scratch.
	keep control events in their own array.
	create an array per channel, each channel array may only contain one
	note per tick, so polyphonic notes require multiple channels.
	keep a list of crossing siblings per note to avoid O(n_notes)
	complexity to expand regions. added ::n_channels property.
	coalesce multiple control events of the same type at the same tick.
	changed serialization format to be more compact for storing multiple
	notes and control events. kept compat code to parse old format.

	* bsepart.proc: adapted to BsePart API changes. added a channel argument
	to insert-note(), introduced insert-note-auto() which preserves the old
	channel-agnostic behaviour of insert-note().

	* bsessequencer.c: adapt to BsePart API changes.

Tue Feb  3 23:29:30 2004  Tim Janik  <timj@gtk.org>

	* bsemain.c (bse_init_core): minor improvement in passing gettimeofday
	entrophy into srand().

	* bseprocedure.[hc]: implemented procedure class caching, which keeps
	procedure classes alive for ca. 500ms after their last call. this gets
	rid of a lot of unnecessary class (and paramspec) creations and
	destructions.
	
Sat Jan 31 23:37:22 2004  Stefan Westerfeld  <stefan@space.twc.de>

	* bseprocedure.c (call_proc): Fixed bug in validation: instead of
	validating the procedure input values before and after the procedure
	call, validate the procedure inputs values before, and procedure
	output values after executing a procedure.

Wed Jan 28 11:10:18 2004  Tim Janik  <timj@gtk.org>

	* bsesniffer.cc: don't swallow requests while inactive, send replies
	with 0-length fblocks instead (fixes GUI loosing track of sniffer
	data after stopping the synth).

Tue Jan 27 16:41:45 2004  Tim Janik  <timj@gtk.org>

	* bsetrack.c (bse_track_class_init): increased default number of voices
	to 16 (from 8).

Tue Jan 27 16:03:01 2004  Tim Janik  <timj@gtk.org>

	* bsecxxbase.h: added instance_is_a(), value_get_gobject<>()
	and value_set_gobject().

	* bseexports.h:
	* bsecxxplugin.h: adapted to sficxx.h changes, don't call
	record/sequence functions from static constructor as the
	type system may not yet be initialized.

	* bsecxxutils.h: tweak InvalidArgument() exception.

	* bsesniffer.cc: implement combined requests.

	* bsetype.c: fixed transform function registration.

Mon Jan 26 02:36:07 2004  Tim Janik  <timj@gtk.org>

	* bsecxxmodule.idl: new idl file to define Bse::Effect.

	* bsecxxbase.idl: new idl file to define Bse::CxxBase.

	* bseeffectbalance.[hc]:
	* bseeffectfinetune.[hc]:
	* bseeffectnotevolume.[hc]:
	* bseeffectpatternbreak.[hc]:
	* bseeffectpatternjump.[hc]:
	* bseeffectvolumedelta.[hc]:
	* bseeffect.[hc]: remove all bseeffect* files, all the code within
	was outdated and unused for several years.

	* bse.idl: added bsecxxbase.idl and bsecxxmodule.idl.

	* bsecxxbase.[hc]*: make gobject() const. implement value_get_object(),
	value_set_object() and value_set_casted().

	* bsecxxvalue.h: removed g_value_get_object<>() template.

	* bsecxxmodule.[hc]: provide conventional BSE_TYPE_EFFECT and base class.

	* bsesniffer.idl: removed parentation hacks by including
	bsecxxmodule.idl, added Sniffer (object) field in record.

Sun Jan 25 08:36:28 2004  Tim Janik  <timj@gtk.org>

	* bsesniffer.idl: enable record and sequence generation, still
	need to comment out object references though.

Sun Jan 25 05:28:23 2004  Tim Janik  <timj@gtk.org>

	* bseplugin.c: use new boxed registration functions.

	* bsetype.[hc]: GType doesn't really support dynamic boxed types, so
	register boxed types from plugins statically and plug their
	implementations internally. tidied up pspec constructors.

Sat Jan 24 19:14:46 2004  Tim Janik  <timj@gtk.org>

	* bsecxxplugin.h: remove TypeName argument from BSE_CXX_DECLARE_RECORD()
	and BSE_CXX_DECLARE_SEQUENCE(), get the type names via type_name().

Sat Jan 24 07:04:59 2004  Tim Janik  <timj@gtk.org>

	* bseexports.h: specify the field array of boxed types directly
	in BseExportNodeBoxed.

	* bsecxxplugin.h: adaptions due to bseexport.h changes.

	* bsetype.c:
	(bse_type_reinit_boxed): 
	(bse_type_uninit_boxed): register and unregister extra info about
	boxed records and sequences with sfi.

	* bseglue.c: adapt to sfi_boxed_type_get_rec_fields() and
	sfi_boxed_type_get_seq_element().

	* bseparam.c: likewise.

Fri Jan 23 22:38:57 2004  Tim Janik  <timj@gtk.org>

	* bseplugin.c (bse_plugin_check_load): added debugging output for
	--bse-debug=plugins.

Fri Jan 23 02:28:58 2004  Tim Janik  <timj@gtk.org>

	* bsecxxplugin.h: complete record and sequence registration macros.

	* bseexports.h: boxed types supply SfiBoxedFields.

	* bsetype.h: fixed sfidl pspec constructors.

Wed Jan 21 03:35:59 2004  Tim Janik  <timj@gtk.org>

	* bsecxxplugin.h (BSE_CXX_DECLARE_RECORD): implementation fixups.

Tue Jan 20 15:30:44 2004  Tim Janik  <timj@gtk.org>

	* bseexports.h: added BseExportNodeBoxed for records and
	sequences.

	* bseparam.c:
	* bseglue.c: honour sfi_boxed_type_get_fields().

	* bseplugin.[hc]: implement un-initialization of types
	upon unloading (needed by boxed). added BSE_EXPORT_NODE_RECORD
	and BSE_EXPORT_NODE_SEQUENCE handling.

	* bsetype.[hc]: implement dynamic boxed.

	* bsecxxplugin.h: started implementing RECORD type registration.

Tue Jan 20 05:47:04 2004  Tim Janik  <timj@gtk.org>

	* bsesniffer.cc: adapt to C++ type changes.

Tue Jan 20 04:52:45 2004  Stefan Westerfeld  <stefan@space.twc.de>

	* bserecords.idl bseamplifier.idl: Add "using namespace Sfi;".

Tue Jan 20 03:05:25 2004  Stefan Westerfeld  <stefan@space.twc.de>

	* bsecxxsmart.h Makefile.am: Removed obsolete code.

	* tests/testsmart.cc tests/Makefile.am: Removed test for obsolete
	code.

Tue Jan 20 00:58:49 2004  Stefan Westerfeld  <stefan@space.twc.de>

	* bsecxxsmart.h: Remove redundant typedefs (now in sfi/sficxx.h).

Mon Jan 19 20:31:28 2004  Stefan Westerfeld  <stefan@space.twc.de>

	* Makefile.am bseprocidl.c: Exclude types which are from bse.idl (and
	not define from bsehack.idl) automatically, instead of maintaining a
	type list in bseprocidl (uses sfidl --list-types).

Mon Jan 19 18:54:11 2004  Tim Janik  <timj@gtk.org>

	* Makefile.am: generate bsehack.idl from procidl.
	made bse.idl the canonical client-binding API idl file.

	* bsecxxutils.h: provide assert_ptr_derivation().

	* bsecxxvalue.h: use assert_ptr_derivation() in
	g_value_get_object<>() to fix object offset.

	* bsemidireceiver.cc: fix assertion.

	* bseprocidl.cc: skip BseSniffer and BseSnifferType.

	* bsesniffer.cc, bsesniffer.idl: recode process() to handle multiple
	requests per block. queue requests before prepare(). added
	sniffer_get_mix_freq().

	* bsesong.proc:
	* bsetrack.proc: moved sniffer creation from song to track.

Mon Jan 19 15:31:20 2004  Tim Janik  <timj@gtk.org>

	* bseautodoc.c: beautify float output. s/Name/Identifier/ for
	property/channel identifiers. fixed plugin loading.

Fri Jan 16 19:42:30 2004  Tim Janik  <timj@gtk.org>

	* gsldatahandle.[hc]: added support for alaw and ulaw sample formats.
	(wave_format_byte_width): the byte width needs not be deductable from
	the bit-depth (i.e. is different for alaw/ulaw).
	(wave_handle_read): removed conversion cases by means of using
	gsl_conv_to_float() instead.

	* gsldatautils.[hc]: implement alaw/ulaw decoding.

	* gslloader-wav.c: added support for ALAW and ULAW encoded WAV files.

	* gslloader-gslwave.c: started support for additional fields.

	* gslwave.header: document newly supported fields.

Fri Jan 16 17:51:53 2004  Tim Janik  <timj@gtk.org>

	* engine-mplan.txt: fixed typo.

	* gslengine.c: fixed documentation.

	* gslopmaster.c: make needs_reset unconditionally indicate whether a
	module needs a reset() call. check whether a module flagged needs_reset
	has a reset() function before calling it. defer forced resets until
	shortly before process().

	* gslopschedule.c: propagate needs_reset() down a branch similar to
	suspension state. this fixes missing reset()s of voices where both
	a suspend and resume job for a voice fell into the same block boundary.

Fri Jan 16 04:32:05 2004  Tim Janik  <timj@gtk.org>

	* gslopmaster.c (master_process_flow): execute flow jobs scheduled at
	block boundary at the start of the new block, not at the end of the old
	block (and with that, *after* corresponding accessor or boundary jobs).

Thu Jan 15 14:54:01 2004  Tim Janik  <timj@gtk.org>

	* gslwavechunk.c: in fill_block() step through the sample with a step
	width of 1 instead of n_channels, since n_channels wide stepping is
	performed later on through dirstride values > 1. fixes "clicks" at
	the start/end of unlooped stereo samples (and looped stereo samples).

	* gslwaveosc.[hc]: 
	* gslwaveosc-aux.c: support channel selection offset in config struct.

Sun Jan 11 06:18:05 2004  Tim Janik  <timj@gtk.org>

	* bsestorage.c (parse_raw_data_handle): properly setup return values,
	even for empty waves.

	* bsewave.c (parse_wave_chunk): fixed error handling to not mess up
	scanner state.

Tue Jan  6 01:33:47 2004  Stefan Westerfeld  <stefan@space.twc.de>

	* bsecxxsmart.h: Add typedefs for Sfi::Int, Sfi::Num and similar.

Sun Jan  4 12:30:30 2004  Tim Janik  <timj@gtk.org>

	* bseautodoc.c (show_plugindoc): added plugin documentation generation.
	
	* bseamplifier.idl: refine tooltip.

	* bsestandardosc.c: added i18n markup.

Fri Jan  2 19:04:16 2004  Tim Janik  <timj@gtk.org>

	* bsewave.[hc]: added bse_wave_set_description_bits() to set comment and
	similar information from wave file descriptions.
	(bse_wave_load_wave_file): call bse_wave_set_description_bits() if
	requested.
	* bsewave.proc: call bse_wave_set_description_bits() when loading waves.

	* bsewaverepo.proc: call bse_wave_set_description_bits() when loading waves.

	* gslloader.[hc]: added authors, license and comment fields to
	wave descriptions.

	* tests/magictest.c: added -t option to test load file info.

	* gslcommon.[hc]: register AIFF file loader.

	* gslloader-aiff.c: new file loader for AIFF files.

Wed Dec 31 01:06:51 2003  Nedko Arnaudov  <nedko@users.sourceforge.net>

        * bsemididevice-oss.c:
        * bsepcmdevice-oss.c: Use configure detection of OSS emulation
        that is not implemented in sys/soundcard.h but in soundcard.h

Tue Dec 30 23:48:17 2003  Tim Janik  <timj@gtk.org>

	* bsecxxmodule.[hc]*: use GslModule type, strip unnecessary casts,
	added block_size(), tick_stamp() and gslmodule() accessors.
	added wrappers around BseSource accessor macros.

	* bsecxxplugin.[hc]*: changed procedure registration macro to
	BSE_CXX_REGISTER_PROCEDURE() and adapted it to put everything into the
	Procedure namespace.

	* bsecxxutils.[hc]*: provided convenience typedefs to ease procedure
	writing in the Procedure namespace.

	* bsemidireceiver.cc: removed casts.

	* bsesniffer.[hc]*: implemented stereo sniffing routine, as well as
	the corresponding procedures and signal + emission thereof.

	* bsesong.proc: added bse-song-create-sniffer() to create a sniffer
	for a specific track.

	* bsesource.c: removed unnecessary casts.

	* bsetrack.[hc]: added bse_track_connect_sniffer().

	* gslopmaster.c:
	* gslengine.[hc]: made gsl_job_flow_access() and gsl_job_boundary_access()
	take a GslReplyFunc() as free function, made gsl_job_request_reply()
	match their argument ordering. renamed gsl_externvar_block_size.
	provided gsl_module_peek_reply().

Mon Dec 29 21:00:23 2003  Tim Janik  <timj@gtk.org>

	* bsesniffer.idl:
	* bsesniffer.cc: start at a module to report current sample data
	or statistics thereof. this needs to have its own procedures, signals,
	and a context merging module.

	* opnode.[hc]:
	* gslopmaster.c:
	* gslengine.[hc]: implemented ENGINE_JOB_REQUEST_REPLY and
	gsl_job_request_reply() to support delayed round trip jobs.
	unified destruction logic of reply jobs and timed jobs.
	(gsl_module_process_reply): new function to send a reply job
	back to the client.

	* gslopmaster.c: claim ownership for a node in ENGINE_JOB_INTEGRATE.

	* gsloputil.[hc]:
	renamed _engine_mnl_reorder() to _engine_mnl_node_changed() since it
	also collects trash reply jobs now.
	(free_node): free unused reply jobs, fixed leaks of job data from
	discarded transactions for ENGINE_JOB_INTEGRATE, ENGINE_JOB_FLOW_JOB
	and ENGINE_JOB_BOUNDARY_JOB.
	(gsl_engine_garbage_collect): call reply job handlers as early as
	possible.

	* bsecxxbase.[hc]: renamed add_param(). implemented add_signal().

	* bseobject.[hc]: export bse_object_marshal_signal() to allow C++
	object signals.

	* bsecxxmodule.[hc]*: added lots of GslModule related hooks so
	more advanced modules dealing with BseSource or engine internals can
	still be written in C++.
	moved BSE_CXX_DEFINE_CREATE_MODULE(), BSE_EFFECT_INTEGRATE_MODULE()
	and BSE_CXX_DEFINE_MODULE_CONFIGURATOR() here from bsecxxplugin.h.

	* bsemidireceiver.cc (voice_switch_module_free): fix free'd
	memory access.

	* bse/bsetype.h: support FBlock pspecs.

	* bseprocidl.cc: guard against already-destroyed signals.

Sun Dec 28 10:24:29 2003  Tim Janik  <timj@gtk.org>

	* bserecords.idl:
	* bsesong.[hc]:
	* gslfilter.c: s/nominator/numerator/.

Thu Dec 25 07:25:51 2003  Tim Janik  <timj@gtk.org>

	* bsemidifile.[hc]: new files, containing a MIDI file parser (based on
	BseMidiDecoder) and a rudimentary MIDI file to BseSong converter.

	* bsemidievent.[hc]: comment fixups. added SMF meta event types.
	renamed event tick_stamp field to delta_time. added global macros
	to check for channel-voice, system-common and system-realtime
	messages.
	(bse_midi_signal_default): adjusted #7 (volume) default and added
	defaults for #10 (Panorama) and #11 (Expression).
	(boxed_copy_midi_event): fix bogus allocation and copying.
	(bse_midi_free_event): properly free the new event types.

	* bsemididecoder.[hc]: lots of fixes, added SMF delta time and meta
	event parsing. turned the decoder into a proper state machine.

	* bsessequencer.c:
	* bsemidireceiver.cc: cosmetic fixups, adapt to renames.

	* bseproject.proc: added import-midi-file() procedure.
	
	* bsemidievent.h:
	* bserecords.idl: fixed midi signal type names, added some.

Tue Dec 23 05:24:53 2003  Tim Janik  <timj@gtk.org>

	* bseplugin.[hc] (bse_plugin_check_load): disabled .la loading, expect
	readily loadable .so files instead.
	(bse_plugin_path_list_files): allow plugin path to contain executable
	files (instead of directories).

	* bseprocedure.[hc]: removed blurb, name, authors, help and license
	fields from procedures as these informations are kept on types now.
	provide BSE_PROCEDURE_NAME() for easy name access.

	* bsescripthelper.[hc]: introduced "options" field for scripts.

	* mkcproc.pl: 
	* bseplugin.[hc]:
	* bsescripthelper.[hc]:
	* bseexports.h: unified type info field order, keep blurb etc. only
	via bse_type_*() accessors.

	* mkcproc.pl: support OPTIONS.

	* *.proc: BLURB => HELP fixes.

	* bseautodoc.c: don't generate @refBlurb{} andymore since procedures
	only have "help" now.

	* bsequery.c: added -:f option for fatal warnings.

	* bseparasite.proc: removed i18n markup, which is not supported for C
	procedures (procedures need to be ported to C++ long-term).

	* *.c: fixes about accessing authors/license/blurb through bsetype.h,
	removed code to keep type info on procedures.

Mon Dec 22 23:59:28 2003  Tim Janik  <timj@gtk.org>

	* bsecxxplugin.h: initialize options field in export nodes.

	* bseplugin.c: register type options from plugins.

	* bseplugin.h: let C plugins default to NULL options.

	* mkcproc.pl: let C procedures default to NULL options.

	* bseprocedure.proc: provide bse-type-options().

	* bsetype.[hc]: allow for storing per-type options.

Sun Dec 21 20:41:46 2003  Stefan Westerfeld  <stefan@space.twc.de>

	* bsecxxsmart.h tests/testsmart.cc: Cleaned up the Bse::Sequence
	template. No more iterators. They were not working anyway.

Sat Dec 20 20:47:25 2003  Stefan Westerfeld  <stefan@space.twc.de>

	* bsecxxsmart.h: Added size_type typedef and size() function to our
	Sequence template (like in std::vector).

	* bseprocidl.cc: Support for properties (although without grouping).
	Reenable (most) signals.

Wed Dec 17 23:54:22 2003  Tim Janik  <timj@gtk.org>

	* bsecategories.c (bse_category_from_id): set the icon to NULL instead
	of creating a degenerated one. removed degenerated dummy-icon hacks.

Wed Dec 17 19:55:58 2003  Tim Janik  <timj@gtk.org>

	* bseglue.c (bglue_exec_proc): make messages warnings in debugging mode.

Wed Dec 17 19:14:11 2003  Tim Janik  <timj@gtk.org>

	* bse/bsetype.h: allow options argument for Trigger pspecs.

Tue Dec 16 11:59:43 2003  Tim Janik  <timj@gtk.org>

	* bsecxxplugin.h: assign authors and license fields in BseExportNode.

	* bseexports.h: added authors and license fields.

	* bseitem.proc: provide get-type-authors() and get-type-license()
	procedures on items.

	* bseplugin.[hc]: register plugin authors and license with types.

	* bsetype.[hc]: provide bse_type_{add|get}_{blurb|authors|license}().
	_blurb variants got renamed, changed callers.

Tue Dec 16 02:16:25 2003  Tim Janik  <timj@gtk.org>

	* bsesong.c (bse_song_class_init): make playback properties skip-undo.

	* bseitem.c:
	* bseproject.c:
	* bsesource.c:
	* bsestorage.[hc]: removed BSE_STORAGE_SKIP_DEFAULTS flag and macro,
	since skipping default values is now indicated by the :skip-default:
	property option.

Mon Dec 15 22:42:37 2003  Tim Janik  <timj@gtk.org>

	* bsemidicontroller.c:
	* bsepcminput.c:
	* bsepcmoutput.c:
	* bsesong.c:
	* bsesource.c:
	* bsestandardosc.c:
	* bsemidiinput.c:
	* bsesubiport.c:
	* bsesuboport.c:
	* bsesubsynth.c:
	* bsesuper.c:
	* bsetrack.c:
	* bsemidisynth.c:
	* bseobject.c: flagged :skip-default: properties.

	* bseparam.c: make object properties skip-default automatically.

	* bseitem.c: skip undo recording for :skip-undo: properties.

	* bserecords.idl: provide SKIP_DEFAULT and SKIP_UNDO constants.

	* bsestorage.c: don't serialize defaulting :skip-default: properties.

	* bsetype.h: skip undo/redo for :trigger: properties.

Mon Dec 15 21:16:49 2003  Tim Janik  <timj@gtk.org>

	* bseundostack.h: remove 64bit fields from BseUndoStep data union and
	added long/ulong fields to reduce memory usage on 32bit systems.

	* bseitem.c: 
	* bsecontainer.c: use v_long/v_ulong data fields in BseUndoStep.

Mon Dec 15 16:00:48 2003  Tim Janik  <timj@gtk.org>

	* bseamplifier.idl: stripped "/Module" prefix from categories as this
	is auto-prepended by the idl compiler now and shouldn't be translated.
	completed i18n markup of info strings, streams and parameter groups.

Tue Dec  2 23:28:37 2003  Tim Janik  <timj@gtk.org>

	* bse/bseprocidl.cc: don't error out on SfiRec arguments.
	
	* bseitem.[hc]: renamed bse_item_uncross() to bse_item_uncross_links().

	* bseparasite.[hc]: implemented new undo-able parasite interface,
	which supports SfiRec as parasite data and uses a file-path alike
	nameing scheme for the parasites. storage not yet implemented.

	* bseparasite.proc: added procedures to list, set, add and get new
	parasite records.

Fri Nov 28 03:34:15 2003  Tim Janik  <timj@gtk.org>

	* tests/testcxx.cc: reenabled closure test, use BSE_TYPE_AMPLIFIER as
	test object which is implemented in c++.

Fri Nov 28 00:53:37 2003  Stefan Westerfeld  <stefan@space.twc.de>

	* bsecxxsmart.h: Added resize() for sequences.

Wed Nov 26 22:14:44 2003  Stefan Westerfeld  <stefan@space.twc.de>

	* bserecords.idl: Proxy is gone.

Wed Nov 26 13:40:11 2003  Stefan Westerfeld  <stefan@space.twc.de>

	* bsecxxsmart.h: Added (template) classes for SmartPtr, RefCountable,
	Sequence, ... used for records.

	* tests/testsmart.cc: Test for the smartpointer stuff.

	* Makefile.am tests/Makefile.am: Corresponding Makefile entries.

Tue Nov 18 20:03:38 2003  Tim Janik  <timj@gtk.org>

	* engine-mplan.txt: renamed (from gsl-mplan.txt).

Tue Nov 18 18:51:53 2003  Tim Janik  <timj@gtk.org>

	* bsequery.c (main): fix root type handling.

	* bseobject.proc: removed.

Sun Nov 16 13:30:00 2003  Christian Neumair  <chris@gnome-de.org>

	* bsebiquadfilter.c: added xgettext keyword (no-c-format) comment
	to a string.

Mon Oct 27 22:12:48 2003  Tim Janik  <timj@gtk.org>

	* bseamplifier.[ic]*: from 0.5.5 on, let the amplifier default to
	multiply (and-ing) the two control inputs.

Mon Oct 27 00:39:10 2003  Tim Janik  <timj@gtk.org>

	* gslloader-oggvorbis.c: added application/ogg.

Sun Oct 26 09:38:12 2003  Stefan Westerfeld  <stefan@space.twc.de>

	* bserecords.idl: Using // within a string now works (no longer
	treated as C++ comment start by sfidl).

Sat Oct 25 17:30:21 2003  Tim Janik  <timj@gtk.org>

	* bsesuper.c: introduce copyright compat property.

Sat Oct 25 02:05:14 2003  Tim Janik  <timj@gtk.org>

	* bsebiquadfilter.[hc]: nuked frequency fine-tune setting which was
	rather pointless.

	* bseamplifier.idl: fix compat balance ranges.

Sat Oct 25 01:49:50 2003  Tim Janik  <timj@gtk.org>

	* *.*: changed "copyright" field of procedures, scripts and objects
	into a "license" field which better reflects what we're asking for.

Sat Oct 18 05:06:27 2003  Tim Janik  <timj@gtk.org>

	* bsestorage.[hc]: keep track of items stored so far, and of items
	referenced so far.

	* bseproject.[hcp]*: implemented dependency storing.
	(bse_project_store_bse): if the item to store is not the project,
	store all out-of-branch objects it referes to.

Sat Oct 18 04:45:29 2003  Stefan Westerfeld  <stefan@space.twc.de>

	* bsetype.h: Added "scale" hint to Freq param spec. Added LogScale
	param spec.

Fri Oct 17 22:05:10 2003  Tim Janik  <timj@gtk.org>

	* bseserver.proc: export demo path and custom directories for
	effects and instruments.

	* bsetrack.proc: docu fix.

Tue Oct 14 21:51:23 2003  Tim Janik  <timj@gtk.org>

	* bseamplifier.cc: more 0.5.4-compatibility handling, audio-gain used to
	default to 50%.

Tue Oct 14 21:16:44 2003  Tim Janik  <timj@gtk.org>

	* examplepeakfilter.[hc]*: removed first c++ example module, there's
	plenty of other example code now (bsebalance.[ic]*, bseamplifier.[ic]*).
	
	* bsehelloworld.proc: removed first example procedures, there're plenty
	of others available, examples in scheme even.
	
Mon Oct 13 16:09:38 2003  Tim Janik  <timj@gtk.org>

	* bseproject.proc: use bse_undo_stack_push_add_on() to push the undo step
	to deactivate a project after playback started.

	* bseundostack.[hc]: added bse_undo_stack_push_add_on() which merges its
	undo step to the last pushed step if there is any.

Sun Oct 12 16:37:29 2003  Tim Janik  <timj@gtk.org>

	* bseutils.[hc]: removed old search path mathing code.
	sfi_file_crawler_list_files() does a better job on this.

	* bseladspa.[hc]:
	* bseplugin.[hc]:
	* bsescripthelper.[hc]: provide bse_*_path_list_files() functions
	which take care of extended path specifications and use SfiFileCrawler
	to properly expand ~/ etc.

	* bsemain.c:
	* bseserver.proc: use new bse_*_path_list_files() functions.

	* bserecords.idl: indentation fixes.
	added 6 "Search Paths" properties to BseGConfig, to allow users to
	configure sample/script/plugin/etc. paths directly.

	* bseserver.proc: added procedures to query file paths from bse
	and bse/mp3-handler versions.

	* gsldatahandle-mad.[hc]: export MAD version string.

Sun Oct 12 14:17:19 2003  Tim Janik  <timj@gtk.org>

	* bsedefs.h: 
	* bsemain.c: use BSE_GETTEXT_DOMAIN instead of unversioned "bse" and
	bind gettext charset to UTF-8.

	* bseconfig.h.in: provide BSE_GETTEXT_DOMAIN.
	
	* bsedefs.h: include bseconfig.h globally.
	
Sun Oct 12 01:12:15 2003  Tim Janik  <timj@gtk.org>

	* fixes according to pspec hints->options change.

	* bserecords.idl: fixed indentation.

Sat Oct 11 22:10:18 2003  Tim Janik  <timj@gtk.org>

	* bsemain.c: bind gettext domain "bse" to BST_PATH_LOCALE.

Fri Oct 10 16:47:53 2003  Tim Janik  <timj@gtk.org>

	* icons/inport.c:
	* icons/outport.c:
	* icons/subsynth.c:
	* icons/virtual.xcf: replaced virtual in/out/subsynth icons.

	* icons/inport.xcf:
	* icons/outport.xcf:
	* icons/inoutport.c:
	* icons/icons/inoutport.xcf: removed.

Fri Oct 10 00:53:56 2003  Tim Janik  <timj@gtk.org>

	* bseamplifier.idl (Bse): *sigh* workaround bse/bse.idl include.

Fri Oct 10 00:22:03 2003  Tim Janik  <timj@gtk.org>

	* bseprocidl.cc (printInterface): *sigh* prevent BseAmplifier from
	being generated.

Thu Oct  9 23:28:10 2003  Tim Janik  <timj@gtk.org>

	* Makefile.am: added rules to build C++ modules from idl files.

	* bsecxxbase.[hc]*: wrap BseItem.compat_setup().

	* bsecxxmodule.[hc]*: allow setting the output buffer of a module.

	* bsecxxplugin.[hc]*: support in core "plugins", i.e. builtins.

	* bseitem.[hc]: added a method bse_item_compat_setup() to patch up
	object state during parsing according to an old *.bse version.

	* bseplugin.[hc]: provide export identity node for builtin types
	and initialize them.

	* bsestorage.[hc]: compat_setup() items after creation.

	* bseamplifier.cc, bseamplifier.idl: ported bseamplifier.[hc] to
	idl based C++ code. changed property setup to match BseBalance
	where appropriate. optimized inner loop, used C++ templates and
	bseincluder.h to generate processing loop special cases.
	added compat code to ensure compatibility with <=0.5.4 stored
	BseAmplifier setups.

	* bseamplifier.[hc]: removed.

	* bseincluder.h: generate switch()-able function calls with
	a constant integer argument (usefull for C++ templates) in
	the range 0..4096.

	* bse/icons/ampctrl.c: removed.
	* bse/icons/ampctrl.png: added.

2003-10-08  Christian Neumair  <chris@gnome-de.org>

	* tests/.cvsignore: Added missing file.

Mon Oct  6 02:55:49 2003  Tim Janik  <timj@gtk.org>

	* bsecategories.c: adapt to new documented toplevel category set.
	check category fundamental types.

	* bse/bsecxxplugin.h: remove namespace prefix from effect and procedure
	registration macros.

	* bse/bseitem.c: make seqid a non-gui property.

Sun Oct  5 10:51:06 2003  Tim Janik  <timj@gtk.org>

	* bseamplifier.c: fix property defaults.

Sun Oct  5 08:18:12 2003  Tim Janik  <timj@gtk.org>

	* bsetype.h (sfidl_pspec_Frequency): new pspec creator.

Sun Oct  5 07:00:40 2003  Tim Janik  <timj@gtk.org>

	* bseutils.[hc]: added balance property utility functions.
	
	* bsetype.h: added balance pspec creator.

Sat Oct  4 04:13:00 2003  Tim Janik  <timj@gtk.org>

	* bsecompat.c (bse_compat_rewrite_type_name): enter renamed
	object type names.

	* bseinstrumentinput.[hc]: implement BseInstrumentInput.
	* bsesubkeyboard.[hc]: removed.

	* bseinstrumentoutput.[hc]: implement BseInstrumentOutput.
	* bsesubinstrument.[hc]: removed.

	* bsemidiinput.[hc]: implement BseMidiInput.
	* bsemonokeyboard.[hc]: removed.
	
	* bsemidicontroller.[hc]: implement BseMidiController.
	* bsemidiicontroller.[hc]: removed.

	* bsecontainer.c (bse_container_add_item): when creating
	automatic names for modules, strip "Bse" namespace.

Sat Oct  4 03:00:03 2003  Tim Janik  <timj@gtk.org>

	* copied files in CVS repository for object renames:
	BseMonoKeyboard    -> BseMidiInput
	BseMidiIController -> BseMidiController
	BseSubKeyboard     -> BseInstrumentInput
	BseSubInstrument   -> BseInstrumentOutput

	* bsemidiinput.[hc]: copy of bsemonokeyboard.[hc].
	* bsemidicontroller.[hc]: copy of bsemidiicontroller.[hc].
	* bseinstrumentinput.[hc]: copy of bsesubkeyboard.[hc].
	* bseinstrumentoutput.[hc]: copy of bsesubinstrument.[hc].

Fri Oct  3 13:34:53 2003  Tim Janik  <timj@gtk.org>

	* bseproject.c (bse_project_dispose): stop and deactivate playing
	projects before attempting to dispose.

Fri Oct  3 07:37:37 2003  Tim Janik  <timj@gtk.org>

	* bsemidireceiver.cc (bse_midi_receiver_leave_farm): fix wrong assertion.

Sun Sep 21 04:42:33 2003  Tim Janik  <timj@gtk.org>

	* Makefile.am (libbseinclude_HEADERS): include bse.idl.

Tue Sep  9 05:22:07 2003  Tim Janik  <timj@gtk.org>

	* bsecxxutils.h: implemented binary-search templates.

	* bsemidireceiver.cc: more C++-ification, properly namespaced
	stuff. uses stl types in a couple places now.
	keep currently playing voice input modules in a map, handle
	duplicate note-ons. squashed remaining stability bugs.

Mon Sep  8 14:59:42 2003  Tim Janik  <timj@gtk.org>

	* bsemidireceiver.[hc]: made reamining structures private (moved
	to .cc file). renamed voice-input and voice-switch modules and
	their API to make the code more consistent and readable.

Mon Sep  8 00:11:45 2003  Stefan Westerfeld  <stefan@space.twc.de>

	* bsemidireceiver.cc: cvs copy of bsemidireceiver.c.

	* bsemidireceiver.c: removed.

	* bsemidireceiver.*: adapted to compile with a C++ compiler.
	made _BseMidiReceiver private.

Sun Sep  7 19:35:04 2003  Tim Janik  <timj@gtk.org>

	* bsemidireceiver.c (check_mono_synth_improvement):
	fix pointer==enum typo.

Sun Sep  7 15:45:26 2003  Tim Janik  <timj@gtk.org>

	* bsemidireceiver.c (activate_switch_module): fix switch module
	activation by using boundary jobs to check connection state.

	* gslopmaster.c (master_update_node_state): really fix all cases where
	reset() could be called after a flow job for an active tick by merging
	reset invocation into the flow job handling function.

	* gslopnode.h:
	* gslopengine.[hc]: added gsl_job_boundary_access().

	* gslopmaster.c: implemented boundary job handling.

	* gslopnode.h:
	* gsloputils.[hc]:
	* gslopmaster.[hc]:
	* gslopschedule.[hc]: 
	* gslopengine.[hc]: cleaned up flow job implementation,
	there're no resume flow jobs anymore and we need jobs
	with time stamps at other places. so the underlying structure
	is a TimedJob now.

Sat Sep  6 20:18:00 2003  Tim Janik  <timj@gtk.org>

	* bsemidireceiver.[hc]: allow sub voices per switchable voice.
	major code cleanup. merge voice module and mono synth module.
	introduces designated structure for midi channels.

	* bsemidivoice.[hc]: adapt to new midi receiver API.
	let the switch module handle voice creation on the midi receiver.

	* bsemonokeyboard.c: adapt to ne midi receiver API.

	* bsesnet.h: add voice_id to midi context.

	* gslengine.[hc]: added gsl_module_has_source(), changed
	suspend/resume job creators to gsl_job_suspend_now() and
	gsl_job_resume_at().

	* gslopmaster.c: propagate activation time sptamps for suspend
	and resume jobs. ensure that module->counter is updated
	before invoking any callbacks. fix reset() methods to be executed
	before flow jobs for a specific tick stamp. enfore initial reset()
	after node integration.

	* gslopnode.h: adapt nodes and jobs to allow suspend/activation
	tick stamps instead of just flags.

	* gslopschedule.c: calculate and propagate activation stamps instead
	of suspend flags. fixed suspend calculation for cycles.

	* gsl-mplan.txt: explain introduction of activation stamps used to
	implement suspend state for nodes.

Thu Sep  4 18:55:56 2003  Tim Janik  <timj@gtk.org>

	* bsesnet.[hc]: introduce BseMidiContext structure which holds
	the midi_receiver, midi_channel, etc. for a (synthesis) context.
	changed context creation, branch cloning and midi-retrival API
	to use BseMidiContext.

	* bsemidivoice.[hc]: give the voice input a voice switch handle,
	rather than the other way around. allocate midi voice from voice
	switch code, and for midi channel of voice switch module. got
	rid of midi_receiver references by means of BseMidiContext usage.

	* bsesubsynth.[hc]: forgo midi-receiver reference, use BseMidiContext.
	allow midi-channel overriding for sub snets.

	* bsetrack.[hc]: fix code according to voice input/switch changes.
	use BseMidiContext, fix midi-channel updates.

	* bsesong.c:
	* bseproject.c:
	* bsemonokeyboard.c:
	* bsemidiicontroller.c: BseMidiContext related fixes.

	* bsemidisynth.c: adapt to new midi voice input/switch code.
	fix midi channel handling. BseMidiContext related fixes.

	* bsemidireceiver.c: assert midi_channel and voice_id to be >= 1.

	* bsemidievent.c: assert midi_channel to be >= 1.

Thu Sep  4 14:34:36 2003  Tim Janik  <timj@gtk.org>

	* bsenote.[hc]: newly added files. these take over note utility
	fucntions from bseutils.[hc] and at some point probably also note
	specific functions from sfi. implemented frequency array, based
	on the GDArray code.

	* bsewave.[hc]: use BseFreqArray to match frequencies now, since
	GDArray is gone.

	* bsetype.h: added pspec constructors for Trigger and Perc.
	removed Frequency constructor, there's one for Freq.

	* bsecxxplugin.h: support static data i ninitialization of generated classes.

	* bseutils.h:
	* bseutils.c:
	* bsecompat.h: removed note specific stuff.

Wed Sep  3 00:59:09 2003  Tim Janik  <timj@gtk.org>

	* bsecxxbase.[hc]*: provide public conversion function for GObject
	to CxxBase.

	* bsecxxmodule.[hc]*: renamed Module to SynthesisModule so plugins
	can simply define "Module" objects. don't register abstract BseEffect
	with categories.

	* bsecxxplugin.[hc]*: unify type registration for classes, enums and
	procedures in plugins.

	* bsecxxutils.[hc]*: fix category registration. get rid of C++ classes
	having to prototye a get_type() function.

	* bsecxxvalue.h: provide g_value_get_object<>() template to retrieve
	specific Cxx classes from values.

	* bseexports.h: mostly cosmetic patchups on the new export structure.

	* bsemain.c (bse_init_intern): allow automated core plugin registration.

	* bseparam.[hc]: remove all enum hackery.

	* bseplugin.c: fixed plugin loading error handling.

	* bseprocedure.[hc]: reference value types prior to use to properly
	support plugin types in procedures.

	* bseprocidl.cc: fixed up type special casing. however this still lacks
	fundamental supprot for records and sequences, so signal generation
	needs to be disabled at the moment.

	* bsequery.c: fixed plugin registration.

	* bsetype.[hc]: provide enum pspecs creators.

	* mkcproc.pl: fixed recently introduced bug that swallowed procedure infos.

Sun Aug 31 15:53:17 2003  Tim Janik  <timj@gtk.org>

	* mkcproc.pl: fix recently introduced bug that prevented
	HELP/AUTHORS etc. assignemtns in procedure definitions.

Mon Aug 25 20:01:58 2003  Tim Janik  <timj@gtk.org>

	* bseladspa.c (bse_ladspa_plugin_check_load): 
	* bseplugin.c (bse_plugin_check_load): for type registration, module
	symbols may be bound lazy.

Mon Aug 25 19:04:24 2003  Tim Janik  <timj@gtk.org>

	* mkbuiltinlist.pl: removed.
	* Makefile.am: get rid of mkbuiltinlist.pl, use mkcproc.pl instead.

	* Makefile.am:
	* mkcproc.pl: generate procedure file type init functions.

	* bsecategories.[hc]:
	(bse_categories_register): feature a pixdata stream argument as icon.

	* bsecxxbase.[hc]*: added add() variant to CxxBaseClass to add already
	grouped pspecs 	to a class.

	* bsecxxutils.[hc]: streamlined type creation macros, so they can be
	resued by bsecxxplugin.[hc].

	* bseexports.h: complete revamp of the symbols and structures exported
	by plugins. there's only a single structure BseExportIdentity now, which
	links to variants of BseExportNode to hold exported type data.

	* bseobject.[hc]: added bse_object_class_add_grouped_property().

	* bseplugin.[hc]: simplified builtin type registration, we use a
	single init function for each procedure file now.
	greatly simplified symbol lookup in modules and type registration,
	according to the new structures in bseexports.h.
	removed the majority of magic type builtin-registration and export
	macros. plugin-alike registration for builtin types is not anymore
	supported, and for plugins, exports boild down to 2 macros.

	* bseprocedure.[hc]: adaptions to the new bseexports.h.

	* bseutils.[hc]: since BSE doesn't link against gdkpixbuf, added a
	small function bse_icon_from_pixstream() that extracts a BsePixdata
	structure from a pixstream as generated by gdk-pixbuf-csource.
	supports only 8bit RGBA images (possibly RLE encoded).
	
Fri Aug 22 08:06:29 2003  Tim Janik  <timj@gtk.org>

        * bse.idl:
        * bserecords.idl:
        * Makefile.am: renamed *.sfidl to *.idl.

Fri Aug 22 05:01:14 2003  Tim Janik  <timj@gtk.org>

	* examplepeakfilter.[hc]*: implementation of a peak filter, and example
	effect implemented in C++.

        * bsecxxmodule.[hc]*: implement Module, the C++ base class for engine
        modules. implement Bse::Effect, mostly a wrapper around BseSource
        functionality to allow effect implementations in C++.
        
	* bsecxxvalue.[hc]*: C++ GValue wrapper.

	* bsegenclosures.h: generated closure templates to allow signal
	connections in C++ code with many different signatures.

	* bsecxxclosure.[hc]*: implement base signal handler closure,
	and generation code for bsegenclosures.h.

	* bsecxxarg.[hc]*: implement function argument templates to be
	used by signal handler closures.

	* tests/testcxx.cc: new test program to perform cxx tests.

	* bsecxxbase.[hc]*: implement signal connections with type checking.
	implemented class functions to add i/o channels.

	* bsecxxutils.[hc]*: put out a message upon uncaught exceptions.
	added template and exception utilities. allow for better
	parameterization upon type registration.

	* bsesource.[hc]: allow GslClass caching in BseSourceClass.

	* bseexample.[hc]*: removed bad test code, there's a better example
	module now.

	* *.cc: use an anonymous namespace for local (static)
	functions/variables.

	* gslengine.[hc]: implement force-reset jobs to allow forcing
	reset of a module.

	* gslopmaster.[hc]: implement forced resetting of modules.

Thu Jul 31 18:08:28 2003  Tim Janik  <timj@gtk.org>

	* added BSE gruntwork to get C++ plugins going.

	* bsemain.c: initialize Cxx stuff.

	* bse/bseexample.[hc]*: two C++ example classes.

	* bse/bsecxxbase.[hc]*: base class for C++ objects.

	* bse/bsecxxutils.[hc]*: BSE C++ utilities, type registration etc.

Wed Jul 30 05:08:54 2003  Tim Janik  <timj@gtk.org>

	* bseexports.h (struct _BseExportEnum): fix constantness.

	* bsetype.[hc]: export sfidl_pspec constructors, so
	plugins may use them.
	
	* gslloader-gslwave.c: fix symbols.

Tue Jul 29 13:59:34 2003  Tim Janik  <timj@gtk.org>

	* bsepart.proc: added get-range-controls() to list events
	wthint a tick-duration range.

	* gsldatahandle-mad.c: fix setup.* fields being 0 during
	open().

Sun Jul 27 02:11:21 2003  Tim Janik  <timj@gtk.org>

	* bsemidiicontroller.[hc]: fix midi channel handling.

	* bsemonokeyboard.[hc]: new module. monophonic midi keyboard input
	module with selectable midi channel.

	* bsemidireceiver.[hc]: implemented monophonic synth (keyboard) module.

	* bseproject.c: fix default midi channel.

Sat Jul 26 04:33:03 2003  Tim Janik  <timj@gtk.org>

	* bsemididecoder.c (bse_midi_decoder_construct_event): count
	midi channels starting from 1 for decoded events.

	* bsetrack.[hc]: added midi-channel property to allow custom
	midi channel assignments.

Fri Jul 25 01:05:22 2003  Tim Janik  <timj@gtk.org>

	* bsemididevice-oss.c: push data into a midi decoder.

	* bsemididevice.c: provide default midi decoder (not midi receiver)
	for midi devices.

	* bsemididecoder.[hc]: new files. moved midi event decoding from
	bsemidireceiver.[hc] to here. uses bse_midi_receiver_farm_process_events()
	and bse_midi_receiver_farm_distribute_event() to have the events handled
	by all interested midi receivers.

	* bsemidievent.[hc]: added functions to copy and allocate midi events.

	* bsemidireceiver.[hc]: removed midi event decoding functionality.
	added midi-receiver-farm functions. a global midi event input queue.

	* bseproject.c: add project default decoder to midi receiver farm.

	* bseserver.c: removed default server midi receiver.

Thu Jul 24 01:28:33 2003  Tim Janik  <timj@gtk.org>

	* bsemidievent.[hc]: remove MIDI_MAX_CHANNEL assertions, up this to 99.

	* bsemidireceiver.[hc]: remove MIDI_MAX_CHANNEL assertions.
	add voice module ref counting.
	(bse_midi_receiver_voices_pending): check poending voices for a specific
	midi-channel.

	* bsemidivoice.c: don't export private functions.

	* bseproject.[hc]: provide a single midi-receiver for the whole project.

	* bsetrack.[hc]: don't provide own midi receiver, use the one from our
	song instead. added midi-channel property per track, per default, an
	internal midi-channel > MIDI_MAX_CHANNEL is used.

	* bsesong.[hcp]*: fetch midi-receiver from project once parent changes.
	provide tracks with midi receiver when creating voices. honour
	midi-channels of tracks.

	* bsessequencer.c: operate on the song's midi receiver, honour
	midi-channels of tracks.

Fri Jul 18 07:09:01 2003  Tim Janik  <timj@gtk.org>

	* gsldatahandle.c (gsl_data_handle_override): fix locking.

Fri Jul 18 06:41:08 2003  Tim Janik  <timj@gtk.org>

	* gslloader-gslwave.c: override osc_freq of external data handles.

	* gsldatahandle.[hc]:
	(gsl_data_handle_override): new function to allow overriding of
	setup parameters for closed data handles.
	(gsl_data_handle_open): support overriding of bit_depth, mix_freq
	and osc_freq.
	(gsl_data_handle_close): zero out ->setup.

Thu Jul 17 03:50:23 2003  Tim Janik  <timj@gtk.org>

	* bsemidievent.[hc]: added bse_midi_event_signal() to create
	non-note events. disabled enum BseMidiSignalType typedef which
	is in idl file now. added internal MIDI event type
	BSE_MIDI_X_CONTINUOUS_CHANGE to better facilitate continuous controls.

	* bsemidireceiver.[hc]: buglet fixups.
	support BSE_MIDI_X_CONTINUOUS_CHANGE events.

	* bsepart.[hc]: major API cleanup. added functions for control events.
	added support to save and load control events.

	* bsepart.proc: API cleanup. added procedures for control events.

	* bseprocidl.cc: hacked around BSE_TYPE_MIDI_SIGNAL_TYPE definition
	in idl file. improved overall code readability.

	* bserecords.sfidl: added control event definition, sependant sequence
	and MidiSignalType choice definition.

	* bsessequencer.c: fixup of velocity handling. added support for
	control events.

	* bsestorage.[hc]: added small helper bse_storage_check_parse_negate().

	* bsetype.c: support default Choice pspecs.

	* bseutils.[hc]: added convenience functions bse_part_control() and
	bse_part_control_seq_take_append().

Wed Jul 16 18:05:09 2003  Tim Janik  <timj@gtk.org>

	* bsepart.c (bse_part_restore_private): fix parsing bug wrg negative
	fine-tune values.

Tue Jul 15 03:34:24 2003  Tim Janik  <timj@gtk.org>

	* bsepart.[hcp]*: removed bse_part_find_note_at() which caused us to
	fail to find long overlapped notes. bse_part_list_notes_crossing() does
	find all required notes without bugs.

Mon Jul 14 14:37:19 2003  Tim Janik  <timj@gtk.org>

	* bsepcmdevice-oss.c (bse_pcm_device_oss_close): added third argument
	to ioctl(), since on NetBSD (when soundcard.h is included) it's a
	3-argument macro, reported by collver1@comcast.net.
	
Tue Jul  8 02:31:30 2003  Tim Janik  <timj@gtk.org>

	* bsemidisynth.[hc]: added slot for postprocessing synthesizer.
	default to 16 voices.

Mon Jul  7 16:42:05 2003  Tim Janik  <timj@gtk.org>

	* bsestorage.c (wstore_data_handle_reader): remove debugging code.

Sat Jul  5 02:49:20 2003  Tim Janik  <timj@gtk.org>

	* bsesong.[hc]: added pnet property to set postprocessing synthesis
	network per song. added sub synth (null-shortcut) after track merger
	to hold pnet.

	* bsetrack.[hc]: added pnet property and sub synth to support post
	processing synthesis networks like above.

	* bsesubsynth.[hc]: added bse_sub_synth_set_null_shortcut(). this
	enables automatic signal-through connections if no snet is set.

Wed Jun 25 00:18:11 2003  Tim Janik  <timj@gtk.org>

	* bseserver.proc: seperate ladspa and core plugin loading.

Tue Jun 24 23:25:54 2003  Tim Janik  <timj@gtk.org>

	* bseserver.proc (register_scripts): fixed memleak in if() branch.

	* bsecategories.c (bse_category_from_id): free category fields before
	overwriting them.

Mon Jun 23 20:33:33 2003  Tim Janik  <timj@gtk.org>

	* bsejanitor.proc:
	* bsejanitor.[hc]: cleaned up connection shutdown logic. spew connection
	aborts to stderr. reap remote child (with small delay after killing if
	necessary). 

Fri Jun 20 00:00:31 2003  Tim Janik  <timj@gtk.org>

	* gsldatahandle-mad.c: fix BSE not compiling without libmad,
	reported by Daniel MacDonald <danboid@yahoo.co.uk>.

Thu Jun 19 23:21:39 2003  Tim Janik  <timj@gtk.org>

	* bsecategories.proc: get rid of debugging junk.

	* bsemidiicontroller.c:
	* bsepcminput.c:
	* bsepcmoutput.c:
	* bsesubinstrument.c:
	* bsesubiport.c:
	* bsesubkeyboard.c:
	* bsesuboport.c:
	* bsesubsynth.c: fix GType ids still being stored in 32bit integers,
	which breaks on alpha where type ids are 64bit.
	tracked down by Sam Hocevar <sam@zoy.org>.

Tue Jun 17 14:40:26 2003  Tim Janik  <timj@gtk.org>

	* bseserver.c (engine_init): turn assertion into warning, so we don't
	take down the whole application upon mix frequency changes.

Tue Jun 17 04:33:46 2003  Tim Janik  <timj@gtk.org>

	* bsecategories.[hc]:
	(categories_match): removed unneccessary value copying.
	(bse_categories_match): match categories via predicate.

	* bsecategories.proc: added bse-categories-match-method() to list
	procedure categories by object.

Mon Jun 16 20:55:48 2003  Tim Janik  <timj@gtk.org>

	* bsemidisynth.c:
	* bsesong.c: use bse_snet_intern_child() to mark internal children,
	since we also need to keep them alive across dispose.
	
	* bsesnet.c: added bse_snet_intern_child() to mark a child internal
	and to protected from automatic removal at dispose time.
	
	* bsemidisynth.c:
	* bsesubsynth.c: use cross-refs to keep track of snets.
	
	* bsemidisynth.c (bse_midi_synth_list_proxies): 
	* bsesubsynth.c (bse_sub_synth_list_proxies): 
	* bsetrack.c (bse_track_list_proxies): collect synthesis networks (and
	change ::snet property types) of type BseCSynth, not BseSNet (which is
	abstract and includes songs and midi synths).
	
	* bseitem.c (bse_item_gather_proxies): don't gather internal items.

	* bseitem.c: renamed BSE_ITEM_AGGREGATE() to BSE_ITEM_INTERNAL().
	added bse_item_set_internal() to set whether an item is internal
	and made this flag affect whole branches.
	added bse_item_needs_storage() and ->needs_storage(), so items can
	refuse to get stored without flagging themselves as "aggregate".
	don't store undo for internal items. changed callers.

	* bseitem.proc: added bse-item-internal() to check whether an
	item is internal.

	* bseproject.c: made bse_project_create_intern_synth() flag the
	newly created synth as internal.

	* bseeditablesample.c: don't flag editable samples as aggregate.

	* bsesnooper.c: don't flag as aggregate, just refuse storage via
	implementing ->needs_storage().

	* bsewave.c: don't flag as aggregate. just refuse storage for
	empty waves by implementing ->needs_storage().

	* bsedatapocket.c: don't flag as aggregate, implement ->needs_storage()
	instead.

Fri Jun 13 20:01:58 2003  Tim Janik  <timj@gtk.org>

	* bseitem.proc: use bse_item_exec(), not bse_item_exec_void() to keep
	the return value after procedure execution.

Tue Jun 10 22:08:18 2003  Tim Janik  <timj@gtk.org>

	* bseitem.c: renamed bse_item_exec_void_proc() to bse_item_exec_void().

	* bseitem.proc: added undo, redo, clear-undo, undo-depth and redo-depth
	procedures.

Mon Jun  9 18:08:27 2003  Tim Janik  <timj@gtk.org>

	* bsepart.[hcp]*: allocate part ids in LIFO scheme to provide correct
	ids for undo state rollbacks. added bse_part_query_note() and implemented
	undo for modifying procedures.

Mon Jun  9 03:50:49 2003  Tim Janik  <timj@gtk.org>

	* BseWave undo fixup, we now support full undo on waves by keeping
	referenced data handles in memory.

	* bseitem.c:
	(bse_item_backup_to_undo): backup to BSE_STORAGE_DBLOCK_CONTAINED storage,
	so it may later be turned readable.
	(bse_item_push_undo_storage): turn the undo storage readable instead of
	just handing on text, this keeps data handles intact.
	(undo_restore_item): restore item from BseStorage instead of just text.

	* bsestorage.[hc]: added DBLOCK storage mode which keeps data handle
	references in memory.
	added bse_storage_turn_readable() to read out a previously written to
	storage (requires DBLOCK mdoe).
	reorganized data handle parsing code somewhat, got rid of half-baked
	bse_storage_mem_flush().

Sun Jun  8 19:56:27 2003  Tim Janik  <timj@gtk.org>

	* bseitem.c:
	* bseproject.c:
	* bsestorage.[hc]: error cosmetics.

Sun Jun  8 17:27:15 2003  Tim Janik  <timj@gtk.org>

	* bsestorage.[hc]: reimplementation on top of SfiRStore and SfiWStore.
	added compat code for <=0.5.1 binary data handling, removed lots of cruft.

	* bsebindata.[hc]: removed entirely.

	* bseenums.[hc]: removed BseEndianType.

	* gsldatahandle.[hc]: added osc_freq and mix_freq as fixed members to
	data handles. changed constructors and callers accordingly.
	cosmetic fixups to wave format strings.

	* *.[hc]: made mix_freq, osc_freq ordering in argument lists consistent.

	* gslloader.[hc]:
	* gslloader-mad.c:
	* gslloader-wav.c:
	* gslloader-gslwave.c:
	* gslloader-oggvorbis.c:
	* gsldatahandle-vorbis.[hc]:
	* gsldatahandle-mad.[hc]: provide osc_freq and mix_freq in datahandles.

	* bse/gslcommon.c: cosmetic fixups to endianess strings.

	* bsewave.[hc]: changed storage format, since bse_storage_parse_data_handle()
	now stores mix_freq, osc_freq etc. all automatically.
	left compat code in place to parse <=0.5.1 files.

	* bsesong.proc: fix NULL termination in call to bse_container_new_child().

	* bseproject.c: adapt to BseStorage changes. removed cruft.

	* bsedefs.h: removed BseTokenType, there's SfiTokenType. adapt
	BseTryStatement() to SfiStoreParser() signature.

	* *.c: fixup code due to removal of BseTokenType and other BseStorage
	changes.

Wed Jun  4 21:54:51 2003  Tim Janik  <timj@gtk.org>

	* bseproject.c:
	* bseitem.c: simplify code by using BseStorage methods.

	* bseprocedure.[hc]: cleaned up dead/unused code.

	* bsestorage.[hc]: code cleanups. removed unused mechanisms.

	* bsewave.c: adapt to bse_storage_parse_rest() changes.

Fri May 30 18:55:52 2003  Tim Janik  <timj@gtk.org>

	* implemented undo for BSE. We've got unlimited undo/redo for most
	functions now, undo is still missing out for: BseDataPocket and
	BsePart. restoring BseWave from undo only works partially.

	* bsewaverepo.proc: made load-file() and remove-wave() undo aware.

	* bseproject.proc: made create-song(), create-midi-synth(), play(),
	create-csynth(), remove-snet(), activate() and start-playback() undo
	aware. renamed ensure-wave-repo() to get-wave-repo(). added undo(),
	redo(), undo-depth(), redo-depth() and clear-undo().
	made restore-from-file() clear undo stack, because we can't maintain
	undo across merging.
	
	* bsesnet.proc: made create-source() and remove-source() undo aware.

	* bsesong.proc: made create-part(), remove-part(), create-track() and
	remove-track() undo aware.

	* bsesource.proc: made set-input-by-id(), unset-input-by-id(),
	set-input(), unset-input(), clear-inputs() and clear-outputs() undo
	aware. added undo-aware set-pos() to set ::pos-x and ::pos-y.

	* bsetrack.proc: changed procedures to use part link IDs.
	made insert-part(), remove-tick() and remove-link() undo aware.

	* bseitem.proc: added group-undo() and ungroup-undo() procedures for
	BSE clients to request undo grouping as well. internally we don#t open
	up actual undo groups for this, that could mess up internal state.
	instead, if group-undo() was called, everytime we're closing an undo
	group internally, we merge it with a previously queued undo group.

	* bsewaveosc.[hc]: fixed up cross links and signal reemissions.

	* bsetype.[hc]: added BSE_TYPE_PACKED_POINTER which is an undo
	implementation specific string type.

	* bsestorage.[hc]: restoring items generally does not queue undo/redo
	steps. added function to save an object entirely to memory.

	* bsetrack.[hc]: added IDs to part links.

	* bsesource.[hc]: added bse_source_backup_ichannels_to_undo(),
	bse_source_backup_ochannels_to_undo() and
	bse_source_input_backup_to_undo() which save i/o channels to undo
	without queueing subsequent redo though. added bse_source_check_input().

	* bseundostack.[hc]: new files, implementing a simple undo stack.

	* bsecontainer.[hc]: added undo aware functions to create/remove
	and uncross items. renamed ::item-removed to ::item-remove.

	* bseglue.[hc]:
	(bglue_proxy_set_property): set properties undo-aware.

	* bseobject.[hc]: changed ::uname setter. basically, we have a new uname
	convention now, unames may not contain ':' and the first character (if
	any) must be >=\007.
	fixed up reemission of property notify signals.

	* bseprocedure.[hc]: added bse_procedure_collect_input_args() which 
	just collects procedurer call args from the stack.

	* bseproject.[hc]: added undo/redo stacks and ::dirty property.
	::dirty doesn't work like expected currently, but provides reliable
	change notification for undo changes.

	* bseitem.[hc]: added bse_item_get_toplevel(), and facilities
	to queue procedure calls to undo/redo stack. added bse_item_undo_open()
	and bse_item_undo_close() which are used to group any undoable
	operation. added ->get_undo() method to retrieve the current
	undo stack. fixed up bse_item_get_project() to work on projects
	as well. cleaned up procedure code.
	added undo aware property setters, the current implementation
	ignores resetting a property to a value it already has (for a limited
	property set at least), which saves the user lots of undo operations.

	* *.c: changed g_object_set() to undo aware bse_item_set() where
	appropriate and marked the intentionaly unchanged rest with /* no undo */

Tue May 27 03:33:52 2003  Tim Janik  <timj@gtk.org>

	* bseladspa.c: applied patch from Sam Hocevar <sam@zoy.org> which
	fixes wrong error messages and crashes on some of the cmt.so
	plugins.
	added cosmetic fixups, refined debugging messages, minor optimizations.

	* bseladspa.[hc]: put code under LGPL.

Tue May 27 02:57:00 2003  Tim Janik  <timj@gtk.org>

	* bsetrack.c (bse_track_list_proxies):
	* bsesubsynth.c (bse_sub_synth_list_proxies): 
	* bsewaveosc.c (bse_wave_osc_list_proxies): 
	* bsemidisynth.c (bse_midi_synth_list_proxies):
	gather proxies with bse_item_gather_proxies_typed(), now
	that BseSNet is abstract and the type checks don't need
	to resort to BSE_TYPE_SNET== hacks anymore.

	* bseitem.c (bse_item_gather_proxies_typed): don't gather
	ancestors of the originating item (unless allow_ancestor
	is passed as TRUE).

Tue May 27 02:22:37 2003  Tim Janik  <timj@gtk.org>

	* bseproject.proc: added bse-project-remove-snet.

Tue May 27 01:36:56 2003  Tim Janik  <timj@gtk.org>

	* bseglue.c (bglue_proxy_set_property): warning cosmetics.

	* bseproject.proc: added bse-project-is-active.

Sun May 25 15:04:37 2003  Tim Janik  <timj@gtk.org>

	* bsecompat.[hc]: added bse_compat_rewrite_type_name() to handle
	types from different BSE file versions.
	handle BseSNet->BseCSynth for 0.5.2.

	* bsecontainer.c: inhibit restauration of abstract child types.

	* bsemididevice.[hc]:
	* bsecontainer.[hc]:
	* bsepcmdevice.[hc]:
	* bseobject.[hc]:
	* bsesource.[hc]:
	* bsesuper.[hc]:
	* bseitem.[hc]: flagged types appropriately as abstract.

	* bsesnet.[hc]: turned BseSNet into an abstract type.

	* bsecsynth.[hc]: new type, deriving from BseSNet to implement
	custom (user) synth functionality.

	* bseproject.proc: provide csynth instead of snet procedures now.

	* bsequery.c: indicate abstract types.

	* bsetype.[hc]: added bse_type_register_abstract().

	* bsestorage.[hc]: implemented bse-version handling.

Tue May 20 18:39:03 2003  Tim Janik  <timj@gtk.org>

	* tests/magictest.c: moved here from bsemagictest.c.

	* tests/mathtests.c: moved here from gsltests.c.

	* tests/testfft.c: moved here from gslffttest.c.

	* tests/testwavechunk.c: moved here from gslwchunk.c.

	* tests/Makefile.am: added testwavechunk testfft to TESTS so
	make check runs these automatically.

	* removed: bsemagictest.c, gsltests.c, gslffttest.c and gslwchunk.c.

Tue May 20 17:46:12 2003  Tim Janik  <timj@gtk.org>

	* tests/cutvorbis.c: added test program for ogg/vorbis file cutting.

	* tests/: new directory to accumulate BSE related test programs.

Tue May 20 15:08:01 2003  Tim Janik  <timj@gtk.org>

	* port code to gcc-3.3.

	* gsldefs.h: provide gcc specific prefetch macros and rename _EXPECT()
	and _REJECT() macros to _EXPECT1() and _EXPECT0() respectively. removed
	parenthesis around macro arguments to catch inline assignments.

	* gslcommon.[hc]: allow precision specification with progress functions.

Sun May 18 04:55:45 2003  Tim Janik  <timj@gtk.org>

	* bseprocedure.proc: added bse-string-extract-number() to deal with
	command line argumens and midi notes.

	* gslcommon.[hc]: added simple progress api for comand line apps.

	* gsldatahandle-vorbis.[hc]: changed API, now a data handle relates
	to a logical ogg/vorbis stream specified by either the logical stream
	number or a zero-offset relative file section.

	* gsldatautils.h: reduced peek buffer size from 8192 to 2048 for
	better cache utilization.

	* gslloader-gslwave.c: support inlined (binary appendix) raw sample data
	via "rawlink" key word, and added support for inlined ogg/vorbis sample
	data via "ogglink". adjust binary appendix syntax parsing.
	
	* gslwave.header: minor description fixes, describe ogglink and rawlink.

	* gslvorbis-enc.[hc]: Ogg/Vorbis encoder API front end.

	* gslvorbis-cutter.[hc]: Ogg/Vorbis stream cutting implementation
	currently supports tail cutting at sample, packet and page boundaries.

Sun May 11 18:45:40 2003  Tim Janik  <timj@gtk.org>

	* gsldefs.h:
	* bseenums.[hc]:
	* gslcommon.[hc]: added GSL_ERROR_IS_DIR and BSE_ERROR_FILE_IS_DIR
	errors. return GSL_ERROR_IS_DIR for EISDIR from gsl_error_from_errno().
	special case GSL_ERROR_IS_DIR in gsl_check_file().

Sun May 11 14:22:12 2003  Tim Janik  <timj@gtk.org>

	* bseitem.c: removed ::seqid-changed signal, added readable property
	::seqid that also emits change notification.

Tue May  6 04:17:19 2003  Tim Janik  <timj@gtk.org>

	* bsemain.c (bse_init_intern): 
	(bse_init_async): don't override previously set prgnames.

	* bserecords.sfidl: added SampleFileInfo record.

	* bsewaverepo.proc: provide bse-sample-file-info() to retrive
	info about a sample file prior to loading.

Mon May  5 03:52:24 2003  Tim Janik  <timj@gtk.org>

	* bseglue.c (bglue_proxy_request_notify): canonify signal names before
	attempting matches, fixes remaining "spurious signal" warnings. minor
	optimizations.

Mon Apr 28 22:15:52 2003  Tim Janik  <timj@gtk.org>

	* gsltests.c (main): added exp() timing loops.

	* gslcommon.c (gsl_init): properly initialize random numbers by
	calling srand() with usec fractions.

Mon Apr 28 05:02:28 2003  Tim Janik  <timj@gtk.org>

	* zintern/mono-wave.bse: updates to be used by BseTrack.

	* bsetrack.[hc]: support BseWave property concurrently to the
	"snet" property. "wave" tracks are played through an internal
	standard mono synth.

	* bseproject.[hc]: added bse_project_create_intern_synth() to merge
	an internal standard synth into the project.

	* bsestandardsynths.[hc]: renamed bse_standard_synth_lookup()
	to bse_standard_synth_inflate().

	* bsestorage.c (restore_container_child): check container's child
	filter before restoring a child.

	* bsecontainer.[hc]: added check_restore() methods to prevent
	certain children from being restored.

Sun Apr 27 22:23:08 2003  Tim Janik  <timj@gtk.org>

	* gslosctable.[hc]: added gsl_osc_wave_form_name(), improved debugging
	messages.

	* gsldatautils.[hc] (gsl_wave_file_dump_data): new function to write data
	portion of a WAVE file from a float block.

Sun Apr 27 02:52:31 2003  Tim Janik  <timj@gtk.org>

	* bsepcmdevice-oss.c: split up debugging messages into "oss" and
	"latency" keys.

	* bsepcmdevice.[hc]: added bse_pcm_device_request() to request
	specific sampling rates and number of channels.

	* bseserver.c: make the mixing frequency preference setting
	actually take effect on the PCM device.

Fri Apr 18 19:48:59 2003  Tim Janik  <timj@gtk.org>

	* bsepcmwriter.[hc]: new object dumping PCM output to a WAV file.

	* bsepcmmodule.c: route PCM data into a BsePcmWriter if given.

	* bseserver.[hc]: added WAV file name property and support for
	BsePcmWriter.

	* gslloader-wav.c: fixed WAV header file length check.

	* gsldatautils.[hc]:
	(gsl_wave_file_dump_header): new function to write out RIFF/WAVE
	headers, fixing up the file_length logic which was broken in
	gsl_data_handle_dump_wav().
	(gsl_wave_file_patch_length): new function to change the data length
	information in a RIFF/WAVE file after the header was written (changes
	file position pointer).
	(gsl_data_handle_dump): return normal errno.
	(gsl_data_handle_dump_wav): return normal errno, use
	gsl_wave_file_dump_header() to write the wav header.

	* bseproject.c (bse_project_store_bse): use bse_error_from_errno() to
	translate errno to BseErrorType.

Wed Apr 16 19:24:12 2003  Tim Janik  <timj@gtk.org>

	* bsewaverepo.proc (load_file): fix usage of g_basename().

	* bseobject.c (bse_object_type_register): added missing cast.
	* bseprocedure.c (bse_procedure_type_register): same here.

Sun Apr 13 23:48:07 2003  Tim Janik  <timj@gtk.org>

	* bsepcmdevice-oss.c (bse_pcm_device_oss_open): fallback to check
	/dev/dsp[0-3] if /dev/dsp couldn't be opened.

Fri Apr 11 14:10:07 2003  Tim Janik  <timj@gtk.org>

	* bsemididevice-oss.c (bse_midi_device_oss_open): fallback to check
	/dev/midi[0-3] if /dev/midi couldn't be opened.

Sun Apr  6 13:56:09 2003  Tim Janik  <timj@gtk.org>

	* bsesource.[hc]: added i/o channel identifier to public API.
	fixed up bse_source_class_add_jchannel_ident() and
	bse_source_class_add_ichannel_ident().

	* bseladspamodule.c (bse_ladspa_module_class_init_from_info): 
	actually *use* the port identifier as identifier for i/o channels.

	* bseladspa.c (bse_ladspa_info_port_2str): complete flag list.

Sat Apr  5 17:48:45 2003  Tim Janik  <timj@gtk.org>

	* bseladspamodule.c: adjust property construction to better hinting
	and pre-/post-process audio signals that have the rate_relative hint
	set.

	* bseladspa.c (bse_ladspa_info_add_port): use the ladspa port index to
	construct a unique port identifier instead of the port name, according
	to a recommendation from Steve Harris <S.W.Harris@ecs.soton.ac.uk>.

	* bseladspa.[hc] (bse_ladspa_info_add_port): provide a sample rate
	relative hint and set frequency hint if we have good indications for
	a frequency control input port.

Fri Apr  4 19:25:52 2003  Tim Janik  <timj@gtk.org>

	* bseparasite.c (bse_parasite_restore): removed pre-0.5.0 compat
	parsing code.

	* gsldatahandle-vorbis.c: require ogg/vorbis >= 1.0.0rc4 now.
	
	* bseutils.c: documentation fixes.

Fri Apr  4 10:25:00 2003  Tim Janik  <timj@gtk.org>

	* ladspa.h: added LADSPA API Version 1.1 header file.

	* bseladspa.[hc]: implemented BseLadspaInfo assembler and
	GTypePlugin to load LADSPA plugins.

	* bseladspamodule.[hc]: implemented BseLadspaModule base type
	and derived methods used by BseLadspaModule_* implementations.
	a working LADSPA module is then derived from BseLadspaModule
	using these methods and equipped with BseLadspaInfo.

	* bseserver.proc (register-plugins): register ladspa plugins after
	registering BSE plugins.

	* gslopmaster.c (master_process_job): when integrating nodes,
	flag suspension_update, so the scheduler updates their suspension
	state. also, flag them initially as outputs_suspended, in order to
	trigger reset() method activation prior to the first process()
	call.

Mon Mar 17 07:06:43 2003  Tim Janik  <timj@gtk.org>

	* bsepcmdevice.[hc]: derive from BseItem, so device can later be valid
	BseServer children and be exported through the middleware.

	* gslwaveosc.c: turn debugging prints into DEBUG() calls.

Thu Mar 13 21:30:14 2003  Tim Janik  <timj@gtk.org>

	* Makefile.am (gslincludedir): install gsl headers under bse/.

Thu Mar 13 21:13:33 2003  Tim Janik  <timj@gtk.org>

	* bsepcmdevice-oss.c (bse_pcm_device_oss_open): if opening in read-write
	mode fails, try falling back to write-only mode.

	* gslcommon.c (gsl_error_from_errno): return fallback error for EINVAL.

Thu Mar 13 19:42:30 2003  Tim Janik  <timj@gtk.org>

	* bsemidisynth.c (bse_midi_synth_init): set sequencer flag on midi
	synths.

	* bsesong.[hc]:
	* bsesuper.[hc]: move sequencer_pending_SL field from song to super.

	* bsessequencer.[hc]: handle sequencing of supers (there's nothing
	to do for non-song supers, but we need to allow having them in the
	sequencer loop).

Thu Mar 13 18:39:10 2003  Tim Janik  <timj@gtk.org>

	* bseproject.c (bse_project_finalize): urgs, remove project from
	auto-stop list, rather than adding to it.

	* bseparasite.c: fixed newly introduced parasite parsing bugs.

Thu Mar 13 13:51:49 2003  Tim Janik  <timj@gtk.org>

	* bsestorage.[hc]: added bse_storage_putf(), bse_storage_putd() and
	bse_storage_putr() to store floats, doubles and Reals in a locale
	independent fashion.

	* *.c: fixed storage code by using bse_storage_put{f|d|r}() to store
	float numbers.

	* bsestorage.c (bse_storage_prepare_write): fix bse version storage.

	* bsestandardosc.c (bse_standard_osc_class_init): add SFI_PARAM_FLOAT
	for Real properties which are stored in floats 'cause they don't need
	full double precision.
	
	* bseamplifier.c (bse_amplifier_class_init): remove bogus pspec flags.

Sun Mar  9 09:53:41 2003  Tim Janik  <timj@gtk.org>

	* bsestorage.c (bse_storage_resolve_item_links): 
	* bsesource.c (resolve_osource_input): fix link resolution messages.

	* bsepcmdevice-csl.[hc]: removed CSL driver code (in
	accordance with stefan).
	
	* bserecords.sfidl: added pspec groups to preferences.

	* bsemain.c (bse_async_parse_args): allow enabling of BSE
	developer extensions via developer-extensions field in
	the config record passed in.

Fri Mar  7 21:44:24 2003  Stefan Westerfeld  <stefan@space.twc.de>

	* bsetype.c: adapted sfidl_xxx macros to pspec group support

Fri Mar  7 14:52:43 2003  Tim Janik  <timj@gtk.org>

	* *.[hc]: removed old debugging cruft. switched things over
	to SFI debugging functions.
	
	* bsemain.c: debugging options revamp.
	
Fri Mar  7 03:37:47 2003  Tim Janik  <timj@gtk.org>

	* bsesuper.[hc]: removed cruft. fix time types.

	* bseutils.[hc]: removed already replaced timing functions.

Thu Mar  6 05:59:44 2003  Tim Janik  <timj@gtk.org>

	* bsetrack.c: removed ::part property hack.
	ignore snet changes while our internal sub synth is prepared
	(locked) since changes have no effect then anyway.

Mon Mar  3 23:17:18 2003  Stefan Westerfeld  <stefan@space.twc.de>

	* bsepcmdevice-csl.c: slightly beautified mutex init code.

Mon Mar  3 22:42:25 2003  Stefan Westerfeld  <stefan@space.twc.de>

	* bsepcmdevice-csl.c: initialize CSL with a mutex, as BSE is
	multithreaded.

Wed Feb 26 22:57:54 2003  Tim Janik  <timj@gtk.org>

	* bseautodoc.c: provide a pspec nick as blurb if no blurb is given.

	* bserecords.sfidl: added BseSongTiming record.

	* bsesong.[hc]: support tact nominator and denominator properties,
	added BseSongTiming retrieval function and procedure. removed cruft.

	* bsetrack.proc: provide get-part() procedure to lookup a specific tick.
	provide get-timing() for convenience.

	* bsepart.proc: provide get-timing() for convenience.

Sat Feb 22 17:10:34 2003  Tim Janik  <timj@gtk.org>

	* bsesong.[hc]: added properties for song looping and exported
	son gposition pointer, accompanied by a signal ::pointer-changed
	for realtime updates.

	* bsessequencer.[hc]: support song looping.

Tue Feb 18 17:47:17 2003  Stefan Westerfeld  <stefan@space.twc.de>

	* bseautodoc.c bsebindata.c bseconstant.c bsecontextmerger.c
	bsedatapocket.c bseitem.c bsemagictest.c bseparasite.c
	bsepcmdevice-oss.c bsequery.c bseserver.c bsestandardsynths.c
	bsesubinstrument.c bsesubiport.c bsesubkeyboard.c bsesuboport.c
	bsesubsynth.c bsewave.c gslffttest.c gslfilter.c
	gslloader-oggvorbis.c gslloader-wav.c gslwaveosc.c gslwchunk.c
	zintern/zintern.c: fixes to build without warnings on gcc-3.2.

Tue Feb 18 16:56:22 2003  Tim Janik  <timj@gtk.org>

	* bsessequencer.c (bse_ssequencer_process_track_SL): don't forget
	following parts when checking whether a track is done.

Tue Feb 18 16:29:34 2003  Tim Janik  <timj@gtk.org>

	* bsecontainer.c:
	(bse_container_do_remove_item): decrement n_items _after_ uncrossing
	to keep n_items checks in uncrossing logic working.
	(_bse_container_cross_unlink): give precedence to recursively unlinked
	cross references over further existing cross links.
	(_bse_container_uncross_descendant):
	(_bse_container_uncross): reload BseContainerCrossLinks* which might
	have been reallocated during callbacks.

	* bsetrack.c:
	(track_uncross_part): stop after the first part to uncross was found.

Tue Feb 18 01:09:06 2003  Stefan Westerfeld  <stefan@space.twc.de>

	* bsepcmdevice-csl.c: use BSE_PCM_DEVICE_CSL_SUPPORT (which is in the
	BSE namespace) instead of HAVE_LIBCSL

Mon Feb 17 22:52:02 2003  Stefan Westerfeld  <stefan@space.twc.de>

	* Makefile.am: libcsl support

	* bsepcmdevice-csl.[hc]: new PCM device implementation for
	libcsl (Common Sound Layer). This for instance allows using
	beast with aRts.

	* bsepcmdevice-oss.c: bugfix: close filedescriptor when >= 0,
	not when < 0.

Mon Feb 17 18:34:46 2003  Tim Janik  <timj@gtk.org>

	* bseplugin.c (bse_plugin_register_exports): register choice<=>enum
	transform functions for dynamic enum types.

	* bsestorage.[hc]: keep internal hash table of objects and their unames
	created during parsing. resolve uname paths via internal hash table if
	possible to give storage scope objects precedence over existing objects.
	removed BSE_OBJECT_FLAG_FIXED_UNAME hackery.

Mon Feb 17 15:31:41 2003  Tim Janik  <timj@gtk.org>

	* bseobject.c:  use global ID allocator.

	* bsesnet.[hc]: nuke per-object id allocator, use global ID allocator.

	* bseutils.[hc]: removed old functions. updated bse_string_hash().
	added global ID allocator.

Fri Feb 14 07:50:29 2003  Tim Janik  <timj@gtk.org>

	* bsestorage.[hc]: major overhaul. made BseStorage an object.
	moved GObject property storage and parsing logic to here.
	provide highlevel storage and parsing primitives and keep the
	basic storage/parsing logic in a single place (bse_storage_store_item()
	and item_restore_try_statement()). use sfi_storage_scanner_config.

	* bseproject.[hcp]*: adapt to new BseStorage code, simplified parsing
	logic.

	* bsesong.c: removed uneccessary parsing hooks.

	* bseparasite.[hc]: just provide bse_parasite_restore() amd
	bse_parasite_store() and rely on BseStorage to invoke parasite
	parsing/storage code when apropriate.

	* bseobject.[hc]:
	* bseitem.[hc]: removed lots of the complicated parsing and storage
	logic.

	* bsecontainer.[hc]: removed serialization methods.
	just provide bse_container_store_children() to loop over all children
	that need to be stored.

	* bsewave.c:
	* bsepart.c:
	* bsetrack.c:
	* bsesource.c:
	* bsedatapocket.c: cleanup and fix restore_private() implementation.

Thu Feb 13 10:43:23 2003  Tim Janik  <timj@gtk.org>

	* bsequery.c: support "synthlist" and "synth" qualifiers to retrieve
	dumps of standard synth definitions.

	* bsestandardsynths.[hc]: nuked old synth generation code. added
	bse_standard_synth_get_list() and bse_standard_synth_lookup() to
	retrieve standard synth definitions.

	* zintern/mono-wave.bse: added mono wave synth.

	* zintern/zintern.c: small utility to generate C source to inline
	file contents, supporting libz compression of the file contents.

	* zintern/Makefile.am: added new subdir zintern/ for inlined BSE
	files (synth definitions).

Thu Feb 13 02:22:41 2003  Tim Janik  <timj@gtk.org>

	* bsemidireceiver.[hc]: provide bse_midi_receiver_voices_pending()
	which also accounts for pending events, instead of
	bse_midi_receiver_has_active_voices().

	* bsesong.proc (find-track-for-part): adapt to using
	bse_track_find_part().

	* bsessequencer.c: split sequencing code into distinct functions for
	songs, tracks and parts. use bse_track_get_part_SL() to step through
	the parts of a track.

	* bsetrack.[hc]: provide bse_track_find_part() to retrieve the tick
	start of a certain part. provide bse_track_get_part_SL() for sequencer
	lookups.
	got rid of ->part_SL member.

Tue Feb 11 06:58:09 2003  Tim Janik  <timj@gtk.org>

	* bseobject.[hc]: added bse_object_reemit_signal() and
	bse_object_remove_reemit() to forward signal emissions
	from one object to another.
	added convenience functions bse_object_proxy_notifies() and
	bse_object_unproxy_notifies() to forward signals relevant
	for an object reference.

	* bsetrack.c: fixed up cross-references. keep cross
	references on inserted parts, fixup finalization leaks.
	proxy name changes and last-tick changes from parts to
	::changed.

	* bseitem.[hc]: renamed cross-ref to cross-link in public API.
	removed bse_item_list_cross_owners() and bse_item_has_cross_owners().
	bse_item_uncross() now removes _all_ existing cross links,
	bse_item_cross_unlink() now requires uncross_func passed in to
	a previous call to bse_item_cross_link().

	* bsecontainer.[hc]: reworked and cleaned up cross links.
	allow removal of cross-links during uncross_func() invocation.
	removed bse_container_cross_forall().

Mon Feb 10 21:37:54 2003  Tim Janik  <timj@gtk.org>

	* bseglue.c (bglue_proxy_set_property): handle invalid value
	types with sfi_warn() and do lax value validation.

	* bsessequencer.c (bse_ssequencer_process_song_SL): don't play
	notes of muted tracks.

	* bsetrack.[hc]: added ::muted property to silence a track during
	playback.

Thu Feb  6 20:29:00 2003  Tim Janik  <timj@gtk.org>

	* bseprocidl.cc: g++-3.2 wants std:: namespacing for strings and sets.

Tue Feb  4 18:20:31 2003  Tim Janik  <timj@gtk.org>

	* bseitem.proc: provide bse-item-set-name().

Fri Jan 31 19:37:31 2003  Tim Janik  <timj@gtk.org>

	* bsetrack.[hcp]*: implemented part lists.

	* bsetrack.proc: added track procedures to modified part list.

	* bsepart.[hc]: get rid of ppqn which is provided by songs now.

	* bsesong.[hc]: provide tpqn (ticks per quarter note) and qnpt
	(quarter notes per tact) properties.

	* misc doc fixes.

Thu Jan 23 01:40:09 2003  Alper Ersoy <dirt@gtk.org>

	* bseautodoc.c: adjusted linebreaks around revision lines.

Wed Jan 22 23:24:50 2003  Tim Janik  <timj@gtk.org>

	* bsecontainer.[hc]: supply sequential ID with ::item-removed as this
	can't be retrieved afterwards.

	* bsecontainer.proc: export proc to actually fetch an item via its type
	and sequential id.

Tue Jan 21 03:42:08 2003  Tim Janik  <timj@gtk.org>

	* bsemidireceiver.c (bse_midi_receiver_process_events): keep
	processing events until the specified max_tick_stamp is reached.

	* bseproject.[hc]: bse_project_keep_activated() keep the project
	from automatic deactivation until a certain tick stamp is reached.

	* bsesong.proc: added procedures to find a track for a part, suitable
	for live playing of notes and to synthesize track notes for immediate
	playback.

Mon Jan 20 11:18:02 2003  Tim Janik  <timj@gtk.org>

	* bseproject.[hcp]: changed playback and activation logic.
	project playback happens in stages activate, start_playback,
	stop_playback and deactivate. a project can be automatically
	stopped due to the sequencer reaching song ends, and a project
	can be automatically deactivated through a timeout.
	export the new interface in procedures.

	* bseglobals.[hc] (bse_idle_timed): added timeout functions.

Thu Jan 16 23:27:51 2003  Tim Janik  <timj@gtk.org>

	* bseproject.[hcp]*:

	* bsemain.c (bse_main_loop): start sequencer thread.

	* bsemididevice.[hc]: removed cruft.

	* bsemidireceiver.[hc]: added accessor to check whether some
	voices are still active.

	* bsepart.[hc]: keep track of the last tick and export it as
	property. more _SL fixes for functions/memebers protected by
	the sequencer lock.

	* bsemidisynth.c: set early context creation flag.

	* bsesnet.c: maintain user context creation setting.

	* bsesong.[hc]: integrate with sequencer updates.
	(bse_song_init): set early context creation and sequencing flags.

	* bsessequencer.[hc]: start switching sequencer code over from
	songs to supers. detect song playback ends.

	* bsesuper.[hc]: introduce flags to indicate need of early or
	sequencer context creation and need for sequencing. could remove
	auto_activate field after introduction of the flags.

	* bsetrack.c: cause the sequencer to re-check whether a track is
	done after properties were altered.

	* bsewaverepo.c: nuke auto_activate setting.

	* bseserver.[hc]: simplify device management by exporting just
	bse_server_open_devices() and bse_server_close_devices() and
	suport use counting for them.

	* bseserver.proc: scratch run/halt-project procedures since
	projects export the necessary mechanisms themselves now.

Wed Jan  8 20:15:01 2003  Tim Janik  <timj@gtk.org>

	* bseenums.[hc]:
	* gsldefs.[hc]:
	* gslcommon.[hc]:
	* gsl*.c:
	* bse*.c: error code cleanups, improved error code handling.

Mon Jan  6 00:16:17 2003  Tim Janik  <timj@gtk.org>

	* bseproject.[hcp]*: introduce activation state. added state
	notification.

Sat Jan  4 15:34:28 2003  Tim Janik  <timj@gtk.org>

	* bsemidireceiver.c (process_midi_control_L): 
	* bsemidievent.c (bse_midi_signal_default):
	* bserecords.sfidl (GConfig): added config option invert_sustain to
	support sustain pedals which report inverted sustain events.

Fri Jan  3 19:10:03 2003  Tim Janik  <timj@gtk.org>

	* bsessequencer.[hc]: new song sequencer implementation, based on the
	old song sequencing thread from bsesongthread.[hc].

	* bseproject.c: queue song sequencer jobs to start song playback and
	don't start synthesis networks any earlier than song playback.

	* bsesong.[hc]: use the new song sequencer.

	* gsloputils.[hc]:
	* gslopmaster.[hc]:
	* gslengine.[hc]: implemented engine timers, delayed commits and
	transaction merging.

	* gslengine.[hc]: (gsl_job_add_poll): leak fix, don't forget
	the free_func.

	* bsesongthread.[hc]: removed this.

Tue Dec 31 03:03:39 2002  Tim Janik  <timj@gtk.org>

	* Makefile.am, toyprof.*: remove toyprof code.

Mon Dec 30 00:42:19 2002  Tim Janik  <timj@gtk.org>

	* bseglue.c:
	(bglue_proxy_processed_notify):
	(bclosure_notify_marshal):
	(bclosure_marshal): keep objects alive across remote notifications
	via use-count increment.

	* bseitem.[hcp]*: expose bse_item_unuse().

	* bseobject.[hc]: removed pre-GObject compat code, fixed callers.

Thu Dec 26 21:59:32 2002  Tim Janik  <timj@gtk.org>

	* gslengine.c (gsl_engine_init): provide master thread with user thread
	handle for wakeups.

	* gslopmaster.c (_engine_master_thread): wakeup user thread if jobs
	need to be collected.

	* bseglobals.[hc]: added NORMAL priority for idle handlers.

	* bseserver.[hcp]*: emit ::registration while registering
	scripts and plugins.
	added bse-server-register-scripts() and bse-server-register-plugins()
	procedure which register asyncronously.

	* bsewaveosc.[hc]: pass on the current tick stamp when emitting pcm
	position notification.

Tue Dec 24 04:57:02 2002  Tim Janik  <timj@gtk.org>

	* bsejanitor.[hc]: emit ::closed once the connection is terminated.

	* *.c: 
	* bsemarshal.*:
	* bseobject.[hc]: remove marshaller generation code, use SFI marshaling.

Tue Dec 24 00:11:50 2002  Tim Janik  <timj@gtk.org>

	* bsepcmoutput.c:
	* gslopmaster.c: misc bug fixes and adaptions due to SFI changes.

Mon Dec 23 03:35:41 2002  Tim Janik  <timj@gtk.org>

	* bseglue.[hc]: support new poll fd api. removed GSource integration
	which is being provided by BseJanitor now. provide generic conversion
	functions bse_value_from_sfi() and bse_value_to_sfi(). support context
	destruction. 

	* bsemain.c: let BseJanitor handle connections now.

	* bsescriptcontrol.[hcp]*: removed, purpose filled by BseJanitor now.

	* bseserver.[hcp]*: use BseJanitor instead of script-control, fixed
	bse_server_run_remote() somewhat. provide procedures to register
	scripts and plugins.

	* bswcommon.[hc]: removed entirely.

	* bsescripthelper.[hc]: integrate with BseJanitor, use SFI
	serialization to pass procedure args via client message. removed
	comwire dispatcher cruft.

	* bsejanitor.[hcp]*: implemented client connection manager object,
	based on the old script-control object.

	* bseprocedure.[hc]:
	* mkcproc.pl:
	* *.proc: got rid of DATE argument to procedures, support multiple
	authors.

Tue Dec 17 08:27:20 2002  Tim Janik  <timj@gtk.org>

	* gslfilehash.c: locking fixes.

	* gslopmaster.c: handle wakeup pipe from gsl_engine_init().

	* gslengine.c: create a pipe to wakeup the master thread
	in gsl_engine_init(), since the threading layer doesn't
	provide a pipe anymore.

	* bsesnet.c: use bse_idle_remove().

	* bseserver.[hc]: use BSE's main loop context for GSources.

	* bse.h: added public prototypes.
	* bsemain.[hc]: cleaned up intialization routines.
	* *.c: changed callers.

	* bsemain.[hc]:
	(bse_init_async): start asyncronous BSE thread.
	(bse_init_glue_context): provide a glue context connected to
	the asyncronously running BSE thread.
	(bse_init_intern): function resembling the old bse_init(), left
	in place for internal utilities.

	* bseglobals.[hc]: provide bse_idle_remove() and attach idle
	handlers to BSE's main loop context.

	* bseglue.[hc]: completed glue layer table implementations, fixed
	signal handling.
	(bse_glue_context_create): create glue contexts together with a glue
	decoder and a main loop source.

	* bsescripthelper.[hc]:
	* bsescriptcontrol.[hc]: disabled code that has yet to be replaced.

Fri Dec 13 08:08:34 2002  Tim Janik  <timj@gtk.org>

	* gslcommon.[hc]: moved thread layer and memory block allocator from
	here into SFI.

	* *.[hc]: adapted callers accordingly.

Thu Dec 12 15:36:16 2002  Tim Janik  <timj@gtk.org>

	* remove gslglue.[hc], gslgluecodec.[hc] and gslgluesignal.c which
	are replaced by new SFI code.
	
	* gslcommon.[hc]: removed GslRing code, we have SfiRing now.
	* *.[hc]: changed callers.

	* remove unused gslconvert.[hc].
	
	* removed gslglib.[hc], gslglibhash.cc and gslglibhashtest.cc
	 which GSL doesn't support anymore.
	
Tue Dec 10 03:30:14 2002  Tim Janik  <timj@gtk.org>

	* bsecomwire.[hc]: removed these files, communication went into Sfi.

	* *.[hc]: ported BseComWire uses over to SfiComWire.

Mon Dec  9 07:15:40 2002  Tim Janik  <timj@gtk.org>

	* bsewaveosc.c (bse_wave_osc_set_property): changing waves is very
	expensive, so ignore resetting the same value.

	* gslloader-gslwave.c: support inlined data handles through a
	new keyword "binlink".
	* gslwave.header: added description for "binlink".

	* gsldatahandle.[hc]: added gsl_wave_format_bit_depth() and
	gsl_wave_format_byte_width() as public API, added
	gsl_wave_handle_new_zoffset() to refer to first-zero-byte offset.

	* gslfilehash.[hc]: added gsl_hfile_zoffset() to retrieve and
	cache offset of first zero byte in a file.

	* gsldatautils.[hc]: return -errno in case of failure from
	gsl_data_handle_dump() and gsl_data_handle_dump_wav().
	added gsl_data_handle_dump_wstore() which adds data handle
	to the binary appendix of a SfiWStore.

Sun Dec  8 05:46:32 2002  Tim Janik  <timj@gtk.org>

	* bsegconfig.[hc]: nuked object implementation, implemented
	global configuration based on BseGConfig record.

	* bseglobals.[hc]: config/gconfig cleanups.

	* bserecords.sfidl: added BseGConfig record.

	* bseserver.[hcp]*: added bse-preferences property, load
	rc-file, offer procedure to save rc-file.

Sat Dec  7 17:49:04 2002  Tim Janik  <timj@gtk.org>

        * gsldatacache.c (gsl_data_cache_from_dhandle): fix dcache loop
        iterations.

        * bseautodoc.c:
        * bsemidivoice.c:
        * bsesnet.c:
        * bsesongthread.c:
        * bsesource.c:
        * gslcommon.c:
        * gslcommon.h:
        * gsldatacache.c:
        * gslgluecodec.c:
        * gslmagic.c:
        * gslopschedule.c:
        * gsltests.c: fix arg ordering in gsl/sfi_ring_walk().

Wed Dec  4 16:32:07 2002  Tim Janik  <timj@gtk.org>

        * bse/gslloader.[hc]: add gsl_wave_file_info_loader().

        * bse/bseautodoc.c: Fixed @revision placement at bottom (alper).

Tue Dec  3 02:44:39 2002  Tim Janik  <timj@gtk.org>

	* bseautodoc.c: added --seealso argument.

Tue Dec  3 01:33:31 2002  Tim Janik  <timj@gtk.org>

	* bseautodoc.c: fixes from alper for document font.

Tue Dec  3 01:02:58 2002  Tim Janik  <timj@gtk.org>

	* bsetype.c: fixed pspec default hints.

Sun Dec  1 22:44:42 2002  Stefan Westerfeld  <stefan@space.twc.de>

	* bseprocidl.cc: support "Neutral" for choices.

	* bseutils.c: changed resizing of note sequences to to use the
	sfidl generated code - default to SFI_KAMMER_NOTE instead of
	SFI_NOTE_VOID

Sun Dec  1 05:10:12 2002  Tim Janik  <timj@gtk.org>

	* bseobject.c (bse_object_do_set_property): 
	* bsesuper.c (bse_super_set_property): use g_strdup_*strip* if needed.

	* bseutils.[hc]: removed bse_strdup_stripped().

Sun Dec  1 02:42:49 2002  Stefan Westerfeld  <stefan@space.twc.de>

	* bseprocidl.cc: capitalized keywords Info, Const, Out, In.

	* Makefile.am: generate public API to bse.sfidl with bseprocidl.

Sat Nov 30 22:42:33 2002  Tim Janik  <timj@gtk.org>

	* bse*.[cp]: fix pspec_note constructors.
	
	* bseconstant.c: fix void note properties.

Sun Dec  1 00:08:00 2002  Stefan Westerfeld  <stefan@space.twc.de>

	* Makefile.am: match new sfidl options

	* bseitem.proc: property is an sfidl keyword, renamed parameter

Sun Nov 24 22:52:04 2002  Tim Janik  <timj@gtk.org>

	* bsewave.c (bse_wave_dispose): NULLify freed values.
	* bsewave.proc: add wave chunk accessors.

	* bseautodoc.c: minor line spacing tweak fro alper.

Sun Nov 24 02:26:14 2002  Tim Janik  <timj@gtk.org>

	* Makefile.am: reorder sources to speed up parallel compilation.

	* bseautodoc.c: identify and dump records and sequences as
	boxed type names. fix up missing pointer indirection for sequences
	in dumped types.

	* bsecontainer.c: patched up serialization keywords with compat code.
	bseproject.c: same here, serialization fixes.

	* bseobject.c: minor serialization fix.

	* bseparasite.c: add compat code for module positions.

	* bseprocedure.c: storage API adaptions.

	* bserecords.sfidl: fixup types and docs for icons and BseNoteSequence.

	* bsestorage.[hc]: fixup serialization by using SFI. got rid of old
	unused code.

	* bsewave.c: set/get property fixes.

Wed Nov 13 23:28:28 2002  Stefan Westerfeld  <stefan@space.twc.de>

	* bseprocidl.cc: remove BSE_ from enum value names, to avoid
	double namespacing

Wed Nov 13 20:14:06 2002  Stefan Westerfeld  <stefan@space.twc.de>

	* bsecategories.c: don't put null pointers as icons, as copying
	them does not work

Tue Nov  5 08:44:40 2002  Tim Janik  <timj@gtk.org>

	* bsescriptcontrol.c (bse_script_control_class_init): 
	* bsedatapocket.c (bse_data_pocket_class_init): 
	* bsewaveosc.c (bse_wave_osc_class_init): 
	* bsepart.c (bse_part_class_init): 
	urg, move TYPE_UINT signal arguments to TYPE_INT, since
	UINTs can't be serialized. hope that this doesn't introduce
	subtle breakage.

Tue Nov  5 05:34:53 2002  Tim Janik  <timj@gtk.org>

	* bseautodoc.c: patch from Alper Ersoy for structure markup.

Mon Nov  4 11:36:16 2002  Tim Janik  <timj@gtk.org>

	* bserecords.sfidl: provide BLURBs and HELPs for some records.

	* bseautodoc.c (show_structdoc): add ability to dump structure
	documentation.

	* bseautodoc.c (show_procdoc): fix C argument names so they contain
	'_' not '-'. change order of scheme and C prototypes.

	* bseautodoc.c: applied patch from alper ersoy which uses new
	reference documentation texi macros.

Mon Nov  4 07:24:12 2002  Tim Janik  <timj@gtk.org>

	* bsetrack.c (bse_track_finalize): remove the aggregate midi receiver
	in finalize, not dispose.

	* bsecontainer.c (bse_container_remove_item): allow removal of items
	during finalization phase by explicitely catching ref_count==0.

	* bsesnet.c (bse_snet_release_children): only remove non-aggregate
	children.

	* bseglue.c (bglue_proxy_notify): don't export
	::notify(SfiProxy,GParamSpec*), but
	::property_notify(SfiProxy,const gchar*) as GObject
	property notification signal.
	(bglue_describe_iface): don't export iface signals.

	* bseitem.[hc]: s/ITEM_STORAGE_IGNORE/ITEM_AGGREGATE/, changed
	related files.

Mon Nov  4 00:00:20 2002  Tim Janik  <timj@gtk.org>

	* bseobject.c (bse_object_do_get_icon): return a static BseIcon, and
	not freed data (bse_categories_from_type() fix).

	* bsecategories.c:
	(bse_categories_from_type): 
	(categories_match): properly copy category fields, so static data
	doesn't get freed with the returned category sequence.

	* bsesource.c: introduce x/y position properties.

Sun Nov  3 21:00:25 2002  Tim Janik  <timj@gtk.org>

	* bsecontainer.c (container_release_children): provide default impl,
	so chaining from derived classes works.

Sun Nov  3 19:08:25 2002  Tim Janik  <timj@gtk.org>

	* bsesource.c: preserve vital data across dispose() and
	free in finalize().

	* bseitem.c (bse_item_set_parent): dispose items that are
	unparented.

	* bsemidisynth.c: remove internal children in finalize(), not
	dispose().

	* bseproject.c: remove children in release_children().

	* bsesong.c: remove children in release_children() and internal
	children in finalize().

	* bsesuper.c (bse_super_finalize): only remove from global super list
	upon finalize(), not dispose().

	* bsecontainer.c (bse_container_dispose): invoke release_children() if
	no use_count is being held on the container.

Sun Nov  3 07:03:42 2002  Tim Janik  <timj@gtk.org>

	* bseglue.c (bglue_proxy_notify): 
	* bseglue.c (fetch_proxy): connect normal signals !RUN_AFTER and proxy
	release notification as !RUN_AFTER, so the signal has a chance of being
	delivered to user code before the glue layer is informed about proxy
	releases.
	release notification still doesn't work properly, regardless.

	* bserecords.sfidl:
	* bsecategories.c: assign unique IDs to categories.

	* bseobject.c (bse_object_from_id): use SfiUStore instead of a hash
	table for object id maintenance.

	* bseobject.[hc]: remove ::destroy signal and method.
	emit ::release upon ->dispose().

	* bseitem.[hcp]*: don't emit ::set_parent() anymore. auto-remove items
	from containers upon dispose. run ->dispose() if an item is orphaned,
	i.e. lost its parent and has no use_count.

	* bsecontainer.c: remove destroy() method.

	* *.c: const fixes, turned destroy() implementations into dispose()
	or finalize().

Sat Nov  2 00:06:12 2002  Tim Janik  <timj@gtk.org>

	* bse.h: remove all include files, we'll only export a handfull
	of public functions now.

	* *.c, *.cc: fixup includes.

	* bseglue.c (bglue_proxy_list_properties): fix off-by-one array
	access.

	* bseserver.c: disable BSE internal glue context.

Fri Nov  1 17:51:26 2002  Tim Janik  <timj@gtk.org>

	* bseglue.c: fix sginal -> glue event delivery.

Sun Nov  3 00:01:20 2002  Stefan Westerfeld  <stefan@space.twc.de>

	* Makefile.am: switch to sfidl long options

Sat Nov  2 22:00:52 2002  Stefan Westerfeld  <stefan@space.twc.de>

	* bsetype.c: sfidl_pspec_(Rec|Seq) -> sfidl_pspec_Boxed(Rec|Seq)

Sat Nov  2 00:05:20 2002  Stefan Westerfeld  <stefan@space.twc.de>

	* bsecategories.proc: need to have a boxed type for returning
	BseCategorySeq

	* bseprocidl.cc: generate code to define choices, class forward
	declarations and class help strings

Thu Oct 31 18:27:52 2002  Stefan Westerfeld  <stefan@space.twc.de>

	* bserecords.sfidl: added a documentation example.

Wed Oct 30 00:49:04 2002  Tim Janik  <timj@gtk.org>

	* bseautodoc.c: apply patch from Alper Ersoy to change generated
	texi format.

Tue Oct 29 00:23:16 2002  Tim Janik  <timj@gtk.org>

	* bseautodoc.c: new program, generate texinfo procedure documentations.

Mon Oct 28 04:38:42 2002  Tim Janik  <timj@gtk.org>

	* bseglue.c (fetch_proxy): export proxy references if a proxy
	has a parent or a use count.

	* bseserver.c (bse_server_init): add an internal static use count
	on the server singleton.

Sun Oct 27 23:12:03 2002  Stefan Westerfeld <stefan@space.twc.de>

	* bseprocidl.cc: use Bse namespace, MAXINT/MININT support

	* bserecords.sfidl: removed typedef to match new sfidl syntax

	* bsetype.c: sfi_pspec_* -> sfidl_pspec_*

Sun Oct 27 16:52:33 2002  Tim Janik  <timj@gtk.org>

	* *.c: fix _log_scale() pspec usage.

	* bsecategories.proc: introduce bse-categories-match().

	* bseglue.[hc]: adapt to new glue layer code in SFI.

	* bseobject.[hc]:
	* bseparam.[hc]: remove old log-scale code.

	* bseprocedure.proc: introduce bse-type-blurb().

	* bsescripthelper.c:
	* bseserver.c:
	* bseprocidl.cc: fix glue context creation.

	* bsesource.proc: introduce BseSource+has-outputs().

Thu Oct 24 18:02:41 2002  Tim Janik  <timj@gtk.org>

	* moved gbsearcharray.h into SFI.

	* fix gbsearcharray.h usages.

Sun Oct 27 00:35:01 2002  Stefan Westerfeld <stefan@space.twc.de>

	* bseprocidl.cc: use "signal" rather than "signal void" in the
	sfidl file, as we only have signals without return value.

Sat Oct 26 23:09:34 2002  Stefan Westerfeld <stefan@space.twc.de>

	* Makefile.am bseprocidl.cc: new program that builds an sfidl file
	containing all classes/procedures found by introspection
	
	* bsecategories.proc bsecontainer.proc bseitem.proc bsepart.proc
	bseproject.proc bseserver.proc: put return values into the appropriate
	boxed types (i.e. BSE_TYPE_PART_NOTE_SEQ) and use boxed param specs.
	This allows bseprocidl to figure out the type correctly.

Sun Oct  6 06:32:19 2002  Tim Janik  <timj@gtk.org>

	* bsecategories.[hc]:
	* bsecategories.proc: switch this over to SFIDL generated structures
	and implement procedures to query categories.

	* bseinstrument.h[hc]: don't compile this anymore.

Sat Oct  5 02:34:19 2002  Tim Janik  <timj@gtk.org>

	* bseeditablesample.proc: use SfiFBlock for return values from
	collect-stats() and read-samples().

	* bseprocedure.proc (bse-note-to-freq): 
	* bseserver.proc (describe-note), (note-from-freq), (note-from-string),
	(construct-note): use generated BseNoteDescription instead of
	BswNoteDescription.

	* bsecontainer.proc (list-items):
	* bsecontainer.[hc] (bse_container_list_items):
	* bseproject.proc (match-items-by-uname): 
	* bseitem.[hc] (bse_item_gather_proxies), (bse_item_list_proxies):
	* bseitem.proc (list-proxies):
	* *.c (->list_proxies):
	use BseProxySeq instead of a proxy iter to list items.

	* bseproject.proc (list-uname-paths): 
	* bseproject.[hc] (bse_project_list_upaths): 
	use BseStringSeq instead of a string iter.
	
	* bsepart.[hc]:
	* bsepart.proc: use BsePartNote and BsePartNoteSeq instead
	of BswIterPartNote in the interfaces.

Fri Oct  4 09:35:24 2002  Tim Janik  <timj@gtk.org>

	* *.[hc]: removed a bunch of code that went into SFI.

	* bsecompat.h: provide short-term compatibility defines.

Wed Oct  2 06:50:39 2002  Tim Janik  <timj@gtk.org>

	* bseitem.proc (get-type): return the type as interface
	name rather than gulong.
	* bseproject.proc: same for list-uname-paths() and
	match-items-by-uname().

	* *.c: changed nearly all param_spec_*() conmstructors from
	GLib and Bse variants over to their Sfi counterparts.

Wed Sep 25 17:51:56 2002  Tim Janik  <timj@gtk.org>

	* bseprocedure.c (bse_procedure_init): ref and sink the procedures
	param specs.

Sun Sep 15 06:02:16 2002  Tim Janik  <timj@gtk.org>

	* bsebindata.h:
	* bsecontainer.h:
	* bseexports.h:
	* bseitem.h:
	* bsescriptcontrol.h:
	* bsesuper.h: fix extern "C" and constants in structures to fix
	compilation with C++ sources.

	* bseglue.[hc]:
	* gslgluecodec.[hc]:
	* gslglue.[hc]:
	together with Stefan Westerfeld, started out to revise the glue
	layer implementation.
	don't operate on GslGlueValue and GslGlueParam in place, but
	make them seperately allocated objects in their own respect.
	turn GslGlueSeq into a ref counted structure.
	implement deep-copy variants.
	implement constructors for the various data structures.
	implement simplisitic garbage colleciton boundary which frees
	all temporarily kept values returned from the glue layer.

	* *.c: fixed assorted code according to glue layer changes.

Thu Sep 12 01:57:36 2002  Tim Janik  <timj@gtk.org>

	* bsestandardosc.c: implement standard_osc_reset().

	* gsloscillator.[hc]: added gsl_osc_reset() for module resets.

	* bsebiquadfilter.c: fix reset function name.

	* bseamplifier.c: reorder GUI fields.

Sat Sep  7 16:00:47 2002  Tim Janik  <timj@gtk.org>

	* bseenums.[hc]: get rid of BSE_ERROR_USER_* values.

	* bseprocedure.[hc]: remove exec status signalling code.

	* bsescriptcontrol.[hcp]*: maintain script_name and proc_name
	fields. remove error_status. add ::progress signal.

	* bseserver.[hc]: remove ::exec-status signal and related code.
	add ::script-start and ::script-error signals and proper
	handling code.
	(bse_server_run_remote): fix ref count leakage on script controls.

	* bsescripthelper.[hc]: adapt to BseServer and
	BseScriptControl changes.

	* *.c, *.proc: remove procedure exec status skipping/blocking code.

Mon Sep  2 06:17:55 2002  Tim Janik  <timj@gtk.org>

	* bseitem.c (bse_item_store_property): fix missing newline in
	output.

Fri Aug 30 10:29:33 2002  Tim Janik  <timj@gtk.org>

	* gslmagic.[hc]: added gsl_magic_list_brute_match() to facilitate
	exhaustive matches.

	* gsltests.c: add ring sorting test.

	* gslcommon.[hc]: provide gsl_ring_split(), gsl_ring_sort() and
	gsl_ring_tail().

Fri Aug 30 03:18:09 2002  Tim Janik  <timj@gtk.org>

	* *.[hc]: update copyrights and license headers.

Fri Aug 23 13:39:59 2002  Tim Janik  <timj@gtk.org>

	* gslopschedule.c (update_suspension_state): 
	* gslopmaster.c: suspension update and reset() invokation fixes.
	whenever we change node->local_suspend or node->outputs_suspended,
	update node->needs_reset.
	* gsl-mplan.txt: keep a note about remaining suspension bugs.

	* gslwaveosc.c (gsl_wave_osc_process): auto-trigger oscillator
	if no sync input is present.
	(gsl_wave_osc_config): reset sync level if the new config caused
	a retrigger.
	(gsl_wave_osc_reset): new function to reset filter state and
	saved signal levels.

	* bsewaveosc.c: slight rename, implement wosc_reset() function
	to retrigger the oscillator.

	* bsetrack.[hc]: support user setting for number of voices.

Thu Aug 22 04:24:58 2002  Tim Janik  <timj@gtk.org>

	* bsesongthread.c: support multiple tracks per song.

	* gslopschedule.c (update_suspension_state): update
	suspension flag before recursing into cycles that may
	lead back to an object up in the stack trace.

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 retrieve 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): retrieve 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 retrieve 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/retrieve 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 retrieve 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 retrieve 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 retrieve 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 retrieve 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): retrieve 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): retrieve/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.
