Sat Apr 11 10:50:51 2009 Stefan Westerfeld


* bsemidifile.c: Fixed control signal and pitch bend midi import.
Fixes #574242 - MIDI import doesn't import pitch bend and control signals

Thu Mar 19 16:40:17 2009 Stefan Westerfeld


* gsldatahandle-vorbis.c: Modified the vfile read function so that no
data beyond the end of the virtual file is read. This fixes the
problems BEAST sometimes has to read its own .bse files.
Fixes #575977 - Some .bse files written by BEAST cannot be loaded again

Wed Jun 11 14:04:31 2008 Stefan Westerfeld


* bsesequencer.cc:
* tests/firhandle.cc:
* tests/resamplehandle.cc:
* tests/filtertest.cc:
* bseprocidl.cc:
* bseloader-guspatch.cc:
* bseresamplerimpl.hh: Compile fixes for G++-4.3: Added a few standard
includes.

* bsecxxplugin.hh: Compile fixes for G++-4.3: Template specializations
can not have a storage class.

Thu Nov 15 23:44:54 2007 Stefan Westerfeld


* zintern/Makefile.am:
* zintern/wave-mono.bse: Remove obsolete wave-mono replay network.

Mon Nov 5 18:23:27 2007 Stefan Westerfeld


Support various play-types in bse, bug #433431.

* bsewaveosc.[hc]: Added done output (inverse gate), which makes it
easy to use only the wave oscillator without adsr envelope in an
instrument.

* zintern/Makefile.am:
* zintern/plain-wave-[12].bse:
* zintern/adsr-wave-[12].bse: Add zintern mono/stereo version for
replaying samples with adsr envelope, and zintern mono/stereo bse file
for replaying waves without envelope (for drum samples). Pitch bend
is +/- 200 cent exponential, replay volume compatible to beast-0.7.1.

* bsetrack.c: Use plain-wave-[12] and adsr-wave-[12] depending on
play-type xinfo of the bsewave file.

Mon Nov 12 21:00:10 2007 Stefan Westerfeld


Fix module reset when user presses play again, bug #336766.

* bseproject.c (bse_project_stop_playback): When this method is
called, we need to dismiss the contexts of the BseSuper classes
we previously created in bse_project_start_playback.

Mon Nov 5 18:54:39 2007 Stefan Westerfeld


Added necessary code for "fine-tune" xinfo, bug #450490.

* bsemathsignal.[hc]: Implemented bse_cent_tune(), which is similar to
bse_cent_tune_fast(), but accepts arbitary doubles as input because it
doesn't use a table internally.

* tests/misctests.cc: Added test for bse_cent_tune().

* gsldatahandle.[hc]: Implemented gsl_data_handle_fine_tune, which
returns a fine tuning measured in cent ("fine-tune" xinfo).

* gslwavechunk.[hc]: Cache the fine tune factor here, so that
GslWaveOsc can access it quickly.

* gslwaveosc.c (gsl_wave_osc_set_filter): Take fine tune factor of
the chunk into account for step computation (and thus for filter
computation).

Mon Nov 5 17:28:04 2007 Stefan Westerfeld


Merge BSE_FINE_TUNE_FACTOR() and bse_cent_factor(), bug #450490.

* bse/bseglobals.h:
* bsemathsignal.[hc]: Merge BSE_FINE_TUNE_FACTOR() and
bse_cent_factor() to bse_cent_tune_fast(). The resulting function
automatically clamps its input and uses the cent table to compute its
result.

* bse/bseinfo.c:
* bse/bsenote.cc:
* bse/bsepart.h:
* bse/bsesong.proc:
* bse/gsloscillator-aux.c:
* bse/tests/misctests.cc: Use bse_cent_tune_fast() where appropriate.

2007-09-20 20:41:30 Tim Janik


* bsebus.c:
* bsestorage.c:
* bseobject.h, bseobject.c: pass BseStorage version information on in
restore_finish() methods.

* bsecxxbase.hh, bsecxxbase.cc: introduced restore_finished() virtual
method, so C++ modules can execute version specific compat code after
after it has been restored from serialized object state.

2007-09-18 02:25:33 Tim Janik


* bse/bsecxxbase.hh:
* bse/bseengine.h:
* bse/bseitem.h: added G_GNUC_NULL_TERMINATED to function ellipsis,
patch by Stefan Westerfeld from bug #344388.

2007-09-18 02:01:08 Tim Janik


* bseproject.[hc]: removed bogus function decl.
bse_project_get_song(): new function to retrieve the first song of
a project if any. at some point this should become the sole song.

* bseproject.proc: reuse an existing song if possible when importing
MIDI files, effectively merging the import into the existing song.

2007-09-18 01:30:51 Tim Janik


* bseproject.proc:
* bsemidifile.c: removed/disabled debugging printouts.

Fri Sep 7 22:46:20 2007 Stefan Westerfeld


* bsemidifile.c: Assign newly created tracks to the master bus. Fixes
#441936.

Sat Aug 18 00:15:22 2007 Stefan Westerfeld


* bsecore.idl: Include ~/beast/plugins in the default plugin search
path, to make it easier for users and developers to install extra
plugins from source.

Sun Jun 24 00:17:40 2007 Stefan Westerfeld


* bsemath.h: Added ln (10)/20 constant for ArtsCompressor.

Wed Apr 11 15:46:31 2007 Stefan Westerfeld


* bsedatahandle-fir.cc: Fix a bug in seek() spotted by Tim: invalidate
m_input_data contents properly if a read error occurs during filling
it.

Sat Mar 31 15:18:54 2007 Stefan Westerfeld


* gsldatahandle.[hc]: Implemented gsl_data_handle_volume, which
returns a volume adjustment factor ("volume" xinfo).

* gslwavechunk.[hc]: Cache the volume adjustment factor here, so that
GslWaveOsc can access it quickly.

* gslwaveosc.c (gsl_wave_osc_set_filter): Adjust volume of the chunk
according to its volume adjustment.

Tue Feb 6 23:16:15 2007 Tim Janik


* bseloader-wav.c (wav_read_fmt_header): fixed byte_per_sample check.

Tue Feb 6 02:27:05 2007 Tim Janik


* bse/gsldatahandle.[hc]: added scaling data handle, the scaling
factor is provided at construction time.

* bse/gsldatautils.[hc]: added gsl_data_find_min_max() to detect
min and max signal range of a data handle.

Mon Feb 5 02:54:14 2007 Tim Janik


* bseloader-wav.c: support 32bit, 3byte 24bit and 4byte 24bit (with
unused upper byte) PCM-format WAV files.

* gsldatahandle.h: added GSL_WAVE_FORMAT_SIGNED_32,
GSL_WAVE_FORMAT_SIGNED_24_PAD4 and GSL_WAVE_FORMAT_SIGNED_24.

* gsldatahandle.c: read 24, 24_pad4 and 32 bit files.

* gsldatautils.h: extended to/from float/double with/without clip
conversion functions to also handle 24, 24_pad4 and 32bit data.

Mon Feb 5 01:22:24 2007 Stefan Westerfeld


* bsecxxmodule.*: Added the necessary API to find out the maximum
engine block size to Bse::Effect. The new function is called
Effect::max_block_size().

Sun Feb 4 03:01:38 2007 Tim Janik


* updated all licenses to GNU Lesser General Public License version 2.1
with permission from Stefan Westerfeld where required.

Sat Feb 3 04:26:38 2007 Tim Janik


* bsesequencer.cc (bse_sequencer_thread_main): properly take sequencer
forerun into account when starting a song so we won't delay song start
until it's definitely too late.

Sat Feb 3 04:22:16 2007 Tim Janik


* bsesequencer.cc: refined tracing information. provide more timing details.

Fri Feb 2 00:16:39 2007 Tim Janik


* bsemain.h, bsemain.cc: added support for debugging channels.
added --bse-trace-sequencer.

* bsesequencer.cc: added note on/off and control event tracing.

Thu Jan 25 01:23:08 2007 Stefan Westerfeld


* bseresamplerimpl.hh: Adjusted error bounds for the filter test,
because it failed sometimes although the implementation is ok. Be more
verbose when using verbose mode.

Tue Jan 16 23:57:40 2007 Tim Janik


* bseenginemaster.c: commented caveats.

Mon Dec 25 16:43:46 2006 Tim Janik


* bsebus.c (bse_bus_ensure_summation): use symbolic i/o channel identifiers
to avoid breakage in hardcoded channel numbers.

* bsepcmwriter.c (bse_pcm_writer_write): fixed calculation to avoid overflow.

Sun Dec 24 15:20:51 2006 Stefan Westerfeld


* bsebus.c: BseSummation was recently extended to have three output
channels (a new one computing the difference), which broke make
report. This change fixes it, by adapting the hardcoded channel number
in this file to match the new summation plugin.

Sat Dec 23 20:49:22 2006 Tim Janik


* bseserver.[hcp]*: added bse_server_start_recording() and
bse_server_stop_recording() functions to schedule WAV file
recording for a specific time intervall.
added bse-server-start-recording procedure.

* bsepcmwriter.[hc]: implemented time intervall
recording.

Tue Dec 19 14:18:53 2006 Stefan Westerfeld


* gsloscillator.c: Take transpose factor into account for table
lookups when the oscillator frequency is constant. Fixes #387364.

Tue Dec 19 02:10:33 2006 Tim Janik


* bsesong.[hc]: keep a flag around to detect the first sequencer underrun,
reset the flag when prepared.

* bsesequencer.cc (bse_sequencer_thread_main): always warn about
sequencer underruns, regardles of debugging state.

Mon Dec 18 20:14:34 2006 Stefan Westerfeld


* bsebiquadfilter.c:
* bseconstant.c:
* bsestandardosc.c:
* bseladspamodule.c: Spelling fix: the unit for frequencies is spelled
"Hertz" (not "Herz").

Sun Dec 17 20:58:40 2006 Tim Janik


* bsestandardosc.c (bse_standard_osc_update_modules): added missing
update of the transpose factor to update_modules(), fixes #386862.

Thu Dec 14 23:07:16 2006 Tim Janik


* gslcommon.c (gsl_error_from_errno): special case ENODATA, which is not
available on GNU/kFreeBSD, reported by Petr Salinger <Petr.Salinger@seznam.cz>.

* gsldatahandle-vorbis.c (gsl_vorbis1_handle_read): use EIO in unclear
error cases, because GNU/kFreeBSD lacks ENODATA.

Mon Dec 11 01:13:00 2006 Tim Janik


* tests/filtertest.cc (generic_filter_tests): added missing stopband
damping check for LOWPASS filters, caught by Stefan.

Wed Dec 13 23:55:15 2006 Tim Janik


* bseenginemaster.c (master_process_locked_node): set buffer start
fragments to zero for nodes that are partially suspended and have
pending probe jobs, so probes don't contain outdated junk data.

Wed Dec 13 21:30:39 2006 Tim Janik


* bseenginemaster.c (master_take_probes): fixup ostreams[].value
pointers before returning a probe, since those may have been altered
by process() routines.

* bseprobe.cc: added debugging field and a few assertions.

Tue Dec 12 08:50:45 2006 Tim Janik


* bseundostack.c: fix possible flat copies of pointers to deeply
nested object structures. in particular, this fixes potential GSList
node corruptions.

Tue Dec 12 01:18:22 2006 Tim Janik


* bsecore.idl, bsemathsignal.c: added musical tuning system tables
submitted by Hanno Behrens <pebbles@schattenlauf.de>:
12-TET, 7-TET, 5-TET, DIATONIC_SCALE, INDIAN_SCALE, PYTHAGOREAN_TUNING,
PENTATONIC_5_LIMIT, PENTATONIC_BLUES, PENTATONIC_GOGO,
QUARTER_COMMA_MEANTONE, SILBERMANN_SORGE, WERCKMEISTER_3,
WERCKMEISTER_4, WERCKMEISTER_5, WERCKMEISTER_6, KIRNBERGER_3
and YOUNG.

Mon Dec 11 00:51:36 2006 Tim Janik


* bsesong.[hc]: added musical_tuning property.

* bseutils.h, bseutils.c:
* bsenote.h, bsenote.c, bsenote.cc: converted bsenote to C++. added musical
tuning argument to all note/freq API functions and adapted internal logic
to cope with different tunings. removed unused BSE_FREQ*() macros.

* bsecore.idl: introduce Bse::MusicalTuningType. added musical_tuning
field to NoteDescription.

* bseserver.proc:
* bseprocedure.proc: added musical tuning arguments to various note
related procedures, moved note procedures from bseserver.proc to
bseprocedure.proc and got rid of their BseServer argument.

* bsemathsignal.h, bsemathsignal.c: made semitone and transpose tables
musical tuning sensitive.

* bsepart.[hc]: allow per-part semitone tables, and changed macros so that
part notes are converted to frequencies according to the musical tuning
specific to a part.

* bseitem.[hc]: provide bse_item_current_musical_tuning() and document
its caveats.

* bsesource.[hc]: added bse_source_prepared_musical_tuning() which
provides musical tuning setting for a source if and only if the
source is prepared. the tuning stays constant while the source is prepared.

* bsesequencer.cc: perform part specific note->freq conversion.

* bsemidifile.[hc]: added musical_tuning to use the new note API,
defaulting to equal temperament.

* bsemididecoder.c: hard code musical tuning to equal temperament,
since we have to provide notes to frequencies for MIDI events up front.

* bseconstant.c:
* bsestandardosc.c:
* bseladspamodule.c:
* bsebiquadfilter.c: adapt to new tuning relative note API, add a
warning to tooltips that informs about the musical tuning specific
interpretation of note properties.

* gsloscillator*.[hc]: changed configuration to contain a transpose_factor
and not a transpose index which needs to be looked up in conjunction with
a specific musical tuning.

* bseglobals.h: removed unused macros.

* bseinfo.c: adapt to new note API by defaulting to to equal temperament.

* tests/misctests.cc: test various musical tuning system properties and
note<->freq conversions.

Sun Dec 10 14:15:18 2006 Stefan Westerfeld


* tests/firhandle.cc: Added seek test.

Mon Dec 4 12:03:19 2006 Stefan Westerfeld


* gsldatahandle.h:
* bsedatahandle-fir.cc: Added a function which computes the filter
response in dB, given a FIR handle and a frequency.

* tests/firhandle.cc: Test that theoretical filter response (computed
by bse_data_handle_fir_response_db) and scanned response match.

Mon Dec 4 02:42:56 2006 Tim Janik


* gslvorbis-enc.h, gslvorbis-enc.c: added gsl_vorbis_encoder_version()
which has to go through some hoops to query the library version (encode
and decode a dummy file), but manages to return a version string.

* bseserver.proc: provide bse_server_get_vorbis_version().

Sun Dec 3 19:13:17 2006 Tim Janik


* bseexports.h: changed plugin mechanism to skip per-plugin names and
to provide feature flag masks to check plugin requirements (to check
for MMX/SSE support).

* bsecxxplugin.hh, bsecxxplugin.cc: changed symbol export mechanism to
use Bse::ExportTypeKeeper constructor and destructor instead of single
symbols. use bse_exports__add_node() and bse_exports__del_node() to
register/unregister the type nodes. this allows compilation of multiple
C++ plugin types into the same .so binary.

* bseplugin.h, bseplugin.c: rewrote plugin symbol lookup and type node
exports to support load time registration via bse_exports__add_node()
and bse_exports__del_node().

Sun Dec 3 21:13:32 2006 Stefan Westerfeld


* bsedatahandle-fir.cc: Made state size computation work correctly.
Added lowpass handle.

* tests/firhandle.cc: Extended tests to cover both, the highpass and
the lowpass handle.

Sat Dec 2 23:55:44 2006 Stefan Westerfeld


* tests/Makefile.am:
* tests/firhandle.cc: Added a test for the highpass performance.

* bsedatahandle-fir.cc: Optimized performance of the highpass handle.
It is plain FPU code (not SSE), though.

Sat Dec 2 22:03:57 2006 Stefan Westerfeld


* tests/firhandle.cc: Added a highpass test for multichannel signals.

* bsedatahandle-fir.cc: Fixed the code for n_channels != 1. Minor
code cleanups.

Tue Nov 28 21:05:16 2006 Stefan Westerfeld


* bsedatahandle-fir.cc: Some optimizations, more to come.

Mon Nov 27 22:32:24 2006 Stefan Westerfeld


* bsedatahandle-fir.cc:
* gsldatahandle.h:
* tests/firhandle.cc: Move highpass handle from gsl to bse namespace.

* bsedatahandle-fir.cc: Implement a "real" data handle. It is not yet
performance optimized, though.

Mon Nov 27 20:29:53 2006 Stefan Westerfeld


* gsldatahandle.[hc]: Added new gsl_data_handle_get_state_length
function for datahandles, with a corresponding vtable entry. For
filtering datahandles (such as lowpass handles), which are usually
stateful, it returns the filter state length.

* gsldatahandle-vorbis.c:
* gsldatahandle-mad.c:
* bsedatahandle-resample.cc:
* tests/loophandle.c: Implement the get_state_length datahandle
method.

* tests/resamplehandle.cc: Test the resampler get_state_length
function.

Mon Nov 27 15:19:47 2006 Stefan Westerfeld


* tests/firhandle.cc: Check that the filter is zero phase in the
passband (== no delay).

Sun Nov 26 19:08:01 2006 Stefan Westerfeld


* tests/Makefile.am:
* tests/firhandle.cc: Created test for the fir highpass handle.

* bsedatahandle-fir.cc: Fixed parameters passed to coefficient design
function. Filters have the right cutoff frequency now.

Sun Nov 26 16:32:00 2006 Stefan Westerfeld


* Makefile.am: Added bsedatahandle-fir.cc.

* gsldatahandle.h:
* bsedatahandle-fir.cc: Moved highpass handle here from
../tools/bseloopfuncs.[hc].

Sun Nov 26 15:51:39 2006 Stefan Westerfeld


* bsedatahandle-fir.cc: svn copy from ../tools/bseloopfuncs.c: prepare
for moving highpass handle here.

Wed Nov 22 21:40:17 2006 Tim Janik


* bseladspa.cc: made messages about ladspa compatibility debugging
messages. improved message clarity, supressed messages about plugin
registration. added missing 'extern "C"'.

Wed Nov 22 19:52:09 2006 Tim Janik


* bseladspa.cc: ported bseladspa.c to C++. use BIRNET_MAY_ALIAS to
work around strict aliasing warnings. load LADSPA modules with local
symbol bindings.

* bseladspa.h: fixed structure layout for C++.

* bsetype.h: use EXTERN_C in code generating macros, to account for
macro usage in C++.

Mon Nov 20 23:39:51 2006 Tim Janik


* bsemain.cc: ported bsemain.c to C++, use C++ Msg API.

* bsemain.h: API adaptions due to bsemain.cc porting.

* bsecore.idl:
* bsejanitor.proc:
* bseserver.c: ported to new sfi_msg_* API.

* bsesequencer.cc: use bse_message_setup_thread_handler().

* bseenginemaster.c: use bse_message_setup_thread_handler() and
BIRNET_STATIC_ASSERT().

Wed Nov 15 00:59:15 2006 Tim Janik


* ldscript.map: restrict typeinfo symbol exports to Sfi/Bse/Birnet
symbols. export vtable symbols to allow plugin building withou tlibtool.

Tue Nov 14 01:02:45 2006 Stefan Westerfeld


* bseresampler.[hc]*: Added Resampler2::find_precision_for_bits to the
API, and an precision enum -> string conversion function.

* bsedatahandle-resample.cc: Use find_precision_for_bits.

Mon Nov 13 20:05:53 2006 Stefan Westerfeld


* bseresamplerimpl.hh: Removed unnecessary delay. The stream delay for
both, upsampling and downsampling should be truely minimal now.

* bseresampler.hh: The guarantee that the upsampler delay is even was
removed from the API. The reason is that we can have a shorter stream
delay when the upsampler delay is odd.

* bsedatahandle-resample.cc: Introduced additional delay compensation
code, because compensating an odd upsampler delay wasn't necessary
when this code was initially written.

Wed Nov 8 23:28:05 2006 Stefan Westerfeld


* bseresampler.[hc]* bseresamplerimpl.hh: Added coefficient set for
linear interpolation. It will probably sound bad, but its useful for
testing.

Sun Nov 5 04:23:07 2006 Tim Janik


* tests/filtertest.cc (random_filter_tests): extended fixed orders to 32
and random orders to 64. cut the requested order for band filters in
half, because it's doubled upon design.

Sat Nov 4 20:09:33 2006 Tim Janik


* bsefilter-ellf.c: removed ellf-behavior special casing. switched
to higher precision constants. substituted bsemath.h constants.

* bsemath.h: provide ln(4), decibel10 and decibel20 factors.

Sat Nov 4 19:46:01 2006 Tim Janik


* bsefilter-ellf.c: replaced all ellf specific complex number
arithmetic by bse_complex*() calls.

* bsemath.h: provide BSE_COMPLEX_ONE for convenience.

Sat Nov 4 18:14:08 2006 Tim Janik


* gslmathtest.c: removed, this has been ported to bsemathtest and
is long unused.

Sat Nov 4 17:38:28 2006 Tim Janik


* bsemath.h: don't include neither of the C++ <complex> or the C99
<complex.h> header files. removed compat typedefs. we'll simply resort
to using BseComplex in headers and use <complex> in C++ files.

* bsefilter.h: use BseComplex for complex numbers in header files.

* bsefilter.cc: adaptions to BseComplex.

* bsefilter-ellf.c: use BseComplex instead of C99 complex.

* tests/filtertest.cc: adaptions to BseComplex. fixed elliptic filter
test to really use stopband_edges, not stopband_db.

Fri Nov 3 02:19:09 2006 Tim Janik


* bsefilter.h, bsefilter.cc: removed transfer function nominator and
denominator from public API, because they are useless for higher
order filters. added center-frequency to public API, which is the
middle frequency for band filters (used to evaluate gain ot stopband).

* bsefilter-ellf.c: provide BseIIRFilterDesign.center_frequency.
made some slight precision improvements for cgam evaluations.

* tests/filtertest.cc: special cased lengthy routines as slowtest.
removed any code (check, eval) related to filter transfer functions.
did some test split ups. added random filter tests for butterworth,
chebyshev1, elliptic. extended generic filter test to test passband
min/max from both sides. added some stopband tests.

* tests/filtercatalog.cc: random filter catalog generated with bse-ellf.

Thu Nov 2 22:56:55 2006 Tim Janik


* bsefilter-ellf.c: z_plane_zeros_poles_to_numerator_denomerator():
reimplemented gain calculation by evaluating the pole and zero
polinomials. this eliminates the precision artefacts which caused
gain miscalculations for high order filters.

Thu Nov 2 22:44:16 2006 Tim Janik


* bsemath.c: temporary fix against ring buffer overflow.

* bsefilter-ellf.c: replaced overly verbose debugging function
implementation by simple printf like macros. moved ellf compat
constant definitions.

* bsefilter.cc: cosmetic changes to bse_iir_filter_request_string().

* tests/filtertest.cc: compare filter zero/pole coefficients
instead of filter transfer function coefficients which are useless
for high order filters. zero/pole pairs for comparsion are
determined through nearest-neighbour searches.
use TABORT_HANDLER() to hook up print_filter_on_abort(), to print
out mismatching filters when tests fail. use T*_CMP() test macros
for more informative printouts. extended generic filter test to
cover more filter properties.
added predesigned filters where ellf miscalculates gain.

Tue Oct 31 13:52:17 2006 Stefan Westerfeld


* tests/filtertest.cc: Raise coefficient comparision epsilon ceps
8e-13 for Chebychev filters, as recommended by Tim, so that "make
check" on AMD64 passes again.

* tests/resamplehandle.cc: Use BseResampler delay compensation C API
where appropriate, instead of computing the delay from the filter
order.

Mon Oct 30 23:57:03 2006 Tim Janik


* tests/filtertest.cc: added brute_coefficient_tests() which can be
used to test massive amounts of test filters against the library
design algorithm.

Mon Oct 30 21:57:20 2006 Tim Janik


* tests/filtertest.cc: applied some corrections suggested by Stefan.
fixed frequency range loops to test both frequency bounds.
extended exit_with_iir_filter_gnuplot() to print the filter design.
assert allmost 0-gain for all filters. simplified tests somewhat.
added low/high pass and band stop/pass chebyshev1 filters.

Mon Oct 30 01:25:56 2006 Tim Janik


* tests/filtertest.cc: new test for the new IIR filter design API.
currently covers Butterworth low pass, high pass, band stop and
band pass filter tests. tests are based on coefficient comparisons,
filter transfer function analysis, and zero + pole function
analysis. for debugging purposes, provided the possibility to
prematurely abort filter tests and provide a gnuplot dump.

Mon Oct 30 00:55:01 2006 Tim Janik


* bsefilter.cc: implement bse_iir_filter_kind_string(),
bse_iir_filter_type_string(), bse_iir_filter_request_string(),
bse_iir_filter_design_string(). implemented bse_iir_filter_design()
as a thin wrapper around _bse_filter_design_ellf().

* bsemath.h: include complex.h or complex, depending on C / C++.
provide ComplexFloat, ComplexDouble, ComplexLongDouble and
Complex as alias for ComplexDouble.

Mon Oct 30 00:47:23 2006 Tim Janik


* bsefilter.h: new header for offering a unified IIR filter API.

* bsefilter-ellf.c: define _GNU_SOURCE instead of _ISOC99_SOURCE before
including any headers. this gets us the C99 API *and* GNU features
(i.e. the uint typedef).
split up the implementation so that the current stand-alone behavior
is preserved if ELLF_BEHAVIOR is defined and so that the necessary
contents from bseellipticfilter.h are inlined otherwise.
moved EllfDesignState here (from bseellipticfilter.h). renamed
EllfComplex.
_bse_filter_design_ellf(): implemented library function prototyped
in bsefilter.h to design butterworth, chebychev1 and elliptic filters.

* bseellipticfilter.h, bseellipticfilter.c: removed.

Sun Oct 29 22:26:09 2006 Tim Janik


* bsefilter-ellf.c: copied from bseellipticfilter.c.

Sat Oct 28 18:34:48 2006 Tim Janik


* bseellipticfilter.h: extended BseIIRFilterKind, renamed
* bseellipticfilter.c: extended BseIIRFilterKind, renamed
BseIIRFilterRequest, BSE_IIR_MAX_ORDER and BSE_IIR_CARRAY_SIZE.
added BseIIRFilterDesign structure which is the intended future
output API. renamed some DesignState fields to match BseIIRFilterDesign
more closely.

Thu Oct 26 00:15:53 2006 Stefan Westerfeld


* gslfilter.c (gsl_filter_sine_scan): More comments.

Tue Oct 24 23:52:58 2006 Tim Janik


* bseblockutils.hh, bseblockutils.cc: provide a blockutils
implementation name. usually "FPU" or "SSE".

* bsemain.c: add block utils implementaiton name as suffix to
the treport_*() CPU name.

* tests/Makefile.am:
* tests/blocktests.cc: conditionalized benchmarks, use treport_*().

* tests/blocktests.cc, tests/resamplehandle.cc: CPU name fixups.

Sun Oct 22 00:22:27 2006 Tim Janik


* bsemain.c: let allow_randomization default to TRUE, added
--bse-disable-randomization and --bse-enable-randomization args.

Sun Oct 22 00:04:49 2006 Tim Janik


* bsemain.h: added allow_randomization to BseMainArgs to configure
deterministic vs. non-deterministic behavor. mostly interesting
for physical modelling plugins.

Sat Oct 21 20:56:27 2006 Stefan Westerfeld


* tests/resamplehandle.cc: Improved comment.

Sat Oct 21 18:58:35 2006 Tim Janik


* tests/resamplehandle.cc: reworked to split performance tests from
ordinary tests. speed up ordinary tests if --test-slow was not
specified. fixed test program to use TASSERT() instead of silent exit
or return_if_fail on errors.

* tests/subnormals.cc: refactored a bit, split up performance tests.

Fri Oct 20 23:03:57 2006 Stefan Westerfeld


* gslfilter.c (gsl_filter_sine_scan): Fixed a small bug in block
volume computation.

Fri Oct 20 13:58:38 2006 Stefan Westerfeld


* gslfilter.[hc] (gsl_filter_sine_scan): Changed the API and
implementation of the sine scanning function to figure out how long to
scan by computing the volume for 0.1 second blocks, and waiting until
the volume doesn't change anymore.

Wed Oct 18 22:05:37 2006 Stefan Westerfeld


* bsedatahandle-resample.cc: Fixed my last commit. Sorry.

Wed Oct 18 21:47:15 2006 Stefan Westerfeld


* tests/resamplehandle.cc:
* bseresampler.hh: Improved comments on delay compensation.

* bsedatahandle-resample.cc: Reorganized delay compensation code in
open() a bit, improved comments.

Tue Oct 17 23:10:43 2006 Tim Janik


* bseellipticfilter.c: cosmetics, fixed constants.

Tue Oct 17 22:03:52 2006 Tim Janik


* bseellipticfilter.h:
* bseellipticfilter.c: turned remaining global variables into local
variables or structure members.

Tue Oct 17 02:12:24 2006 Tim Janik


* bseellipticfilter.h, bseellipticfilter.c: moved elliptic integral
values, chebyshev/elliptic phi and gain into the filter state structure.
eliminated other global variables by declaring them in local scopes.

Tue Oct 17 01:43:26 2006 Tim Janik


* bseellipticfilter.h: define MAX_ORDER and MAX_COEFFICIENT_ARRAY_SIZE.
added array for s-plane poles and zeros to DesignState.

* bseellipticfilter.c: added -ffloat-store to the compilation option to
keep compatibility with math.h-enabled ellf.c. resolved non-local double
variable fixmes. store s-plane zeros and poles as ds->zs. changed to use
MAX_COEFFICIENT_ARRAY_SIZE as array bound.

Tue Oct 17 00:50:08 2006 Tim Janik


* bseellipticfilter.c: changed static y[] array into local scope
variables/arrays.

Tue Oct 17 00:31:20 2006 Tim Janik


* bseellipticfilter.c: removed remaining static integers by using
either local variables or by using ds->z_counter. minor whitespace
fixups.

* bseellipticfilter.h: added and documented z_counter.

Tue Oct 17 00:17:23 2006 Tim Janik


* bseellipticfilter.c: whitespace and paranthese fixes.

Tue Oct 17 00:05:55 2006 Tim Janik


* bseellipticfilter.h, bseellipticfilter.c: white space fixups,
changed static zord to ds->n_solved_poles.

Sun Oct 15 23:17:39 2006 Tim Janik


* bseellipticfilter.h:
* bseellipticfilter.c: include math.h instead of declaring standard
math.h functions. print debugging/informative output through an
extra function. beefed up ARRSIZ once more for high order filters.
added custom function to print the transfer function coefficients
for debugging. fixed reading from stdin to use fgets().
reverted granularity changes in filter table printing. renamed all
complex functions to not clash with complex.h.
added some workarounds with fixme marks to stay value (error)
compatible with former versions of the ellf program, these can be
removed once we have filter tests in place. removed unecessary
comments, streamlined others. removed obsolete configuration
logic and other unecessary preprocessor cruft. removed unused
declarations, moved many variable and constant declarations into
an inner scope. renamed heavily abbreviated functions. renamed
and recoded main() into iir_filter_design() which does read all
design parameters from a structure. added a new main with simply
stdin-read logic to call iir_filter_design().
for the moment, moved structure declarations for filter design
parameters and filter calculation state into bseellipticfilter.h.

Sun Oct 15 22:52:53 2006 Tim Janik


* bseellipticfilter.h, bseellipticfilter.c: renamed from bseiirfilter.*.

Sun Oct 15 22:49:51 2006 Tim Janik


* bseieee754.h: added BSE_DOUBLE_EPSILON and BSE_FLOAT_EPSILON,
constants for the round-off error at 1.0.

Sun Oct 15 20:58:57 2006 Stefan Westerfeld


* gslfilter.c: Made implementation of gsl_filter_sine_scan() more
reliable by using two phase shifted signals (see comment in the
implementation).

Thu Oct 12 22:30:46 2006 Stefan Westerfeld


* bsedatahandle-resample.cc: Use the newly introduced
Resampler2::delay().

Thu Oct 12 21:48:54 2006 Stefan Westerfeld


* bseresampler.hh:
* bseresampler.cc:
* bseresamplerimpl.hh: Added a virtual function Resampler2::delay(),
which can be used for compensation of the resampler introduced delay.
Provide C API wrapper for the function: bse_resampler2_delay().

* tests/resamplehandle.cc: Test the delay compensation function.
Fix a buglet in another test (comparing signals needs fabs()).

Thu Oct 12 16:54:42 2006 Stefan Westerfeld


* gslfft.h: Improved documentation on FFT normalization.

Thu Oct 12 13:25:38 2006 Stefan Westerfeld


* bseiirfilter.c: Added some comments.

Thu Oct 12 02:23:15 2006 Tim Janik


* bseiirfilter.c: enlarged ARRSIZ so order 16 filters can be calculated.
renamed and reworked print_filter_table() to print the filter table with
much finer granularity.

Thu Oct 12 02:14:44 2006 Tim Janik


* bseiirfilter.c: more unused section removal. auto-fixed indentation.

Thu Oct 12 02:01:47 2006 Tim Janik


* bseiirfilter.c: streamlined first comment section. got rid of useless
definitions and preprocessor special cases.

Thu Oct 12 01:50:57 2006 Tim Janik


* bseiirfilter.c: streamlined some comments, fixed includes and
prototypes and constant tables to compile into a test program.

Thu Oct 12 01:44:17 2006 Tim Janik


* bseiirfilter.c: since the ellf program is shipped standalone and as
part of the cephes math library, with no copying restrictions, this
code is now put under an "AS IS" NO-WARRANTY license, properly
attributing Stephen L. Moshier.

Thu Oct 12 01:38:39 2006 Tim Janik


* bseiirfilter.c: added concatenated source code of the ellf filter
design program by Stephen L. Moshier. program homepage is:
http://www.moshier.net/ellfdoc.html

* bseiirfilter.h: new empty header file.

Sun Oct 8 21:20:14 2006 Stefan Westerfeld


* tests/resamplehandle.cc: Lessen the thresholds for downsampling
datahandle 24bit test, because AMD64, due to its -mfpmath=sse default,
doesn't get as good results as i386 machines do. With the new
thresholds, make check passes on AMD64, too.

Thu Oct 5 17:39:50 2006 Stefan Westerfeld


* gsldatahandle.h:
* bsedatahandle-resample.cc: Implemented factor 2 downsampling
datahandle. Moved common code into a base class for both datahandles.

* tests/resamplehandle.cc: Test downsampling datahandle.

Sat Sep 30 21:36:39 2006 Tim Janik


* bseautodoc.c: fixed -p and -s not taking effect.

Wed Sep 27 21:35:12 2006 Stefan Westerfeld


* bseblockutils.cc:
* bseblockutils.hh:
* bseresamplerimpl.hh: Only optionally produce output during the
filter implementation test.

Wed Sep 27 13:04:49 2006 Stefan Westerfeld


* bsedatahandle-resample.cc: Fixes and cleanups. Upsampling Datahandle
class Members are now prefixed with m_, all code that could possibly
be moved into the class - such as the C vtable - is now present as
static functions within the class, the destructor was made private
- because reference counting is supposed to be used.
Finally the class uses C style inheritance, by embedding m_dhandle.

Wed Sep 27 11:30:27 2006 Stefan Westerfeld


* tests/Makefile.am:
* tests/testresampler.cc: Moved testresampler.cc from bse/tests to
slowtests, to prepare it for automatic accuracy testing. Excessive
automatic testing will be quite slow, thus it needs to be in this
directory.

Wed Sep 27 11:27:35 2006 Stefan Westerfeld


* tests/testresampler.cc: Allow using --fpu instead of
--bse-force-fpu, because that means less typing.
In the accuracy test, print out the threshold given by the user, if
any (that way, it becomes easier to validate the "safety margin"
between the specified and the actual threshold)

Tue Sep 26 10:34:03 2006 Stefan Westerfeld


* bseblockutils.cc bseblockutils.hh: Provide hook for testing the
resampler2 implementation.

* tests/testresampler.cc bseresamplerimpl.hh: Moved SSE filter
implementation test to the new function fir_test_filter_sse, which
can then be properly compiled using -msse within the bseblockutils
plugin for the SSE case.

Fri Sep 22 15:25:19 2006 Stefan Westerfeld


* tests/testresampler.cc: Make resampler more user friendly, by using
more long options, explicit command names and improving the usage. For
instance testresampler ad becomes testresampler accuracy --down.
We also leave it up to bse to determine whether to use the SSE or FPU
variant; bse's decision can be influenced by --bse-force-fpu.
Print usage() to stdout, to make it less'able.

Sun Sep 17 16:42:36 2006 Stefan Westerfeld


* tests/testresampler.cc: Minor fix in usage() function.

Sun Sep 17 16:27:59 2006 Stefan Westerfeld


* tests/testresampler.cc: Added option parsing, to be able to specify
a lot more details on what test should be performed and how.
Use bse to instantiate the upsampler and downsampler; this allows us
to use bse's automatic SSE detection features, and bse's coefficient
sets. Added --precision option to select coefficient set.
Added --freq-scan option, to test accuracy of an entire frequency
range with one single call of the program.
Added --precision-assert-db option, which allows the test program to
be used in automated tests. If the accuracy is less than the specified
minimum precision, an assertion is triggered.

* tests/testresamplercoeffs.h: Remove this file, because the new
testresampler code uses the coefficients defined in bseresampler.cc.

Sat Sep 16 15:50:34 2006 Tim Janik


* tests/resamplehandle.cc: merged with resamplercapi.c. made internal
functions "static". fixed TSTART() usages. cleaned up main().

* tests/Makefile.am, tests/resamplercapi.c: removed resamplercapi.c.

Sat Sep 16 15:19:33 2006 Tim Janik


* bseresamplerimpl.hh: renamed bseresampler.tcc to bseresamplerimpl.hh
to match beast naming conventions, and because it effectively implements
parts of bseresampler.hh.

Sat Sep 16 14:45:49 2006 Tim Janik


* bseblockutils.cc: access Resampler2::create_impl() via derivation.

* bseresampler.tcc: whitespace fixups. fixed includes. fixed
unconditional use of __m128. renamed AlignedMem to AlignedArray because
this class implements aligned array accesses instead of a memory
allocator. adapted callers.

* bsedatahandle-resample.cc:
* bseresampler.cc, gsldatahandle.h: whitespace and comment fixups.

* bse/bseresampler.hh: whitespace fixups. made create_impl() non-public,
it can be accessed by blockutil implementations via derivation.

Sat Sep 16 09:25:17 2006 Stefan Westerfeld


* bseresampler.tcc bseresampler.cc bseresampler.hh: Added factor 2
resampling code (up- and downsampling), which can use SSE instructions
when available. The implementation was tuned for speed.

* gsldatahandle.h bsedatahandle-resample.cc: Provide a datahandle,
which does factor 2 upsampling.

* bseblockutils.cc bseblockutils.hh: Provide factory method for the
resampler, so that bse can automatically use the SSE version when SSE
instructions are available.

* tests/testresamplercoeffs.h tests/testresampler.cc: Standalone
interactive test code for the resampler.

* tests/resamplercapi.c tests/resamplehandle.cc: Tests for the
resampler C API and the resampler data handle.

* Makefile.am: Adapted Makefile rules for the new resampler sources.

* tests/Makefile.am: Adapted Makefile rules for the new resampler
tests. Fixed subnormals_CXXFLAGS, which now includes AM_CXXFLAGS.

Sun Sep 10 22:46:55 2006 Tim Janik


* gsldatautils.h, gsldatautils.c: added bse_wave_file_from_fbuffer() and
bse_wave_file_from_dbuffer() to easily save WAV files from memory.

Sat Jul 15 20:06:24 2006 Tim Janik


* gslwaveosc-aux.c: use doubles instead of floats to store temporary
filter state. this avoids artefacts for larger pitch values.

Sat Jul 15 04:11:06 2006 Tim Janik


* bsebiquadfilter.c (bse_biquad_filter_class_init):
disabled ::norm_type property because chenging it to something
non-default drives the filter unstable too easily.

Thu Jul 13 21:36:28 2006 Tim Janik


* bseautodoc.c: pass through --bse-rcfile to bse.

Sun Jul 9 14:53:26 2006 Tim Janik


* renamed the guile based bsesh to bsescm. adapted related build rules,
variable names, function names and documentation.

Sun Jul 9 02:44:41 2006 Tim Janik


* renamed bse_engine_garbage_collect() to bse_engine_user_thread_collect().

Sun Jul 9 02:24:00 2006 Tim Janik


* zintern/gus-patch.bse:
* bse/zintern/wave-mono.bse: updated to beast 0.7.0, clarified license.

Fri Jul 7 02:17:02 2006 Tim Janik


* gslcommon.c:
* bsepcmdevice-oss.c:
* bsemididevice-oss.c: use birnet_file_equals() and
birnet_file_check().

Thu Jul 6 22:45:17 2006 Tim Janik


* zintern/Makefile.am: use birnet-zintern.

* zintern/zintern.c: rmeoved.

Wed Jun 21 23:37:41 2006 Tim Janik


* bsestorage.c: type fixup.

Wed Jun 14 15:44:27 2006 Stefan Westerfeld


* bseitem.h(bse_item_undo_open): Added G_GNUC_PRINTF printf format
attribute.

Mon Jun 12 01:09:51 2006 Tim Janik


* bsecxxutils.hh: got rid of TEMPLATE_ERROR::* which is provided
by Birnet now.

* bsecxxarg.hh: use Birnet::TEMPLATE_ERROR::invalid_type().

Mon Jun 5 13:59:52 2006 Tim Janik


* bsecxxutils.hh: removed binary lookup templates which are
in Birnet now.

Wed May 31 03:04:03 2006 Tim Janik


* bseproject.c bse_project_restore(): force dirty project flag
after restoring/merging.

* gslfft.h: fixed documentation.

* tests/testfft.c: added resynthesis tests.

Wed May 31 00:39:24 2006 Tim Janik


* bseengine.c (bse_trans_merge): docu fixups.

Sat May 27 00:22:44 2006 Tim Janik


* gslfft.h: document that gsl_power2_fftsr() scales the output data
by 1.0/n_values.

Sun May 21 12:19:52 2006 Tim Janik


* bsesuper.c (super_compat_setup): added compat code for "license" and
"author" fields, loaded from BSE files < 0.7.0.

Sat May 20 15:49:07 2006 Tim Janik


* bse.h:
* bsemain.[hc]: merged config data from gsl into BSE config data. make
use of BirnetInitValue to allow non-argc/argv configuraiton upon initilaization.
removed bse_init_intern(). added bse_init_inprocess() and bse_init_test().
adapted dependent code.

* gslcommon.[hc]: removed config and initialization logica that moved to BSE.

* bseserver.c: prevent rcfile loading if
birnet_init_settings->stand_alone is true.

* bseobject.c: fixup "blurb" parameter handling, default to the
empty string and skip default when saving.

* bsesuper.c: fix up "license" and "author" defaults to empty strings.

* bsesuper.c: pre-initialize authors and license field when
creating objects.

* bsecore.idl: added configurable defaults for author and license fields.
removed "Stepping Rates" config section. adapted dependent code.

* bseutils.[hc]: provide initial default author and license values.

Fri May 12 16:49:38 2006 Tim Janik


* bseserver.c:
* bsemain.[hc]: permit specification of an rcfile via --bse-rcfile.

* bseplugin.c: fixed SSE vs. FPU filtering to also affect drivers.

Wed May 10 19:13:28 2006 Tim Janik


* bseengine.c: document that probe jobs may be freely reordered.

* bseenginemaster.c: simply prepend probe jobs to a node's probe
job list, compared to appending, this has O(1) instead of O(n^2)
complexity which makes a huge different for some scenarios that
trigger long probe job queues.
also, collect probe jobs unconditionally after probes have been
taken, since probing is not parallelized anymore.

* bseglobals.[hc]: introduced new (idle handler) priority
BSE_PRIORITY_NEXT. this essentially takes over the prio of the
previous "now" stage which now got bumped up to the topmost
priority. change bse_idle_next() and bse_idle_now() functions
and their callers accordingly.

* bseprobe.cc: shortened queue length to 3, so usually 3 client side
probe requests will be handled including notification in a row.
after 3 requests, the client should have managed to request new
probes if it can process them this fast.
fixed up low level job queueing to occour asyncronously with highest
priority, so it essentially happens immediately but still allowes
for aggregation of multiple probe requests. also fixed up queue length
handling which was previously buggy in requesting only partial queue
lengths which resulted in very short probe job queues on the engine
modules and lots of unerruns during probe evaluation. added assertions.

Wed May 10 15:34:12 2006 Stefan Westerfeld


* tests/blocktests.cc: Add benchmarks for fill and copy.

Wed May 10 15:29:24 2006 Stefan Westerfeld


* tests/blocktests.cc: Make testing different block sizes easier by
adding a const int for the block size.

Wed May 10 00:44:58 2006 Stefan Westerfeld


* bseblockutils.hh: Minor formatting fix.

Wed May 10 00:19:16 2006 Tim Janik


* bseprobe.cc:
* bseengineutils.c:
* bseladspamodule.c:
* bsecontextmerger.c: use bseblockutils.hh functions to increase performance.

Tue May 9 22:53:51 2006 Stefan Westerfeld


* bsemain.c (bse_init_core): Removed random generator seed
initialization for rand(), since it is now done by birnet_init.

Tue May 9 16:54:43 2006 Stefan Westerfeld


* bseblockutils.*: Added new block functions for subtracting and
multiplying blocks, as well as calculating square sum (useful for
determining the block energy) and minimum/maximum values.

* tests/blocktests.cc: Test newly added functions.

Mon May 8 03:25:51 2006 Tim Janik


* bseconstant.h: reduce the number of supported output channels to 4.

* bseplugin.h: allow type option specification for BSE_REGISTER_OBJECT*.

Mon May 8 02:21:59 2006 Tim Janik


* icons/Makefile.am:
* icons/summation.png, icons/summation.xcf:
* Makefile.am:
* bsesummation.idl, bsesummation.cc: removed BseSummation which now
resides in plugins/.

* bsesong.c: abort with g_error() if BseSummation can't be loaded.

Mon May 8 00:19:00 2006 Tim Janik


* icons/Makefile.am:
* icons/ampctrl.png, icons/ampctrl.xcf:
* Makefile.am:
* bse.idl:
* bseamplifier.idl, bseamplifier.cc: removed BseAmplifier which now
resides in plugins/.

* tests/testcxx.cc: create a BseBusModule as test object since
BseAmplifier is not part of the BSE core anymore.

Sun May 7 23:39:43 2006 Tim Janik


* tests/subnormals.cc: added bench test for the float-cancellation macros
used by BSE.

* tests/Makefile.am: compile subnormals.cc with -ffast-match because this
affects the subnormal cancellation benchmarks and because this option is
used when compiling plugins.

Sun May 7 03:37:18 2006 Tim Janik


* bseprobe.hh, bseprobe.cc: allmost complete rewrite to fix lots of
bugs and experimental code portions. several probe queues exist per
BseSource now, one for each output channel / block-size combination.
underruns in probe calculation are now detected and are zeroed out
where neccessary (e.g. in ffts). optimized quite some block copies,
fills and loops. for min/max and energie calculation loops, SIMD
variants are still needed. optimized probing logic for coalescing of
signal emissions. added "idle"-probing, i.e. continuous probe result
notification is now supported for unprepared sources without modules.
syncronized simulataneous probe requests on multiple sources.

* bseenginemaster.[hc]:
* bseenginenode.[hc]:
* bseengine.[hc]: reworked probing so probe jobs now simply replace
the BseOStream array of a node when probing. creation of probe jobs
and the probe callback was adapted accordingly. the user may take
over memory management for the resulting BseOStream array, release
then happens via the newly added bse_engine_free_ostreams(). fixed
lots of buglets on the way, made use of bseblockutils.hh.

* bseengine.[hc]: export bse_engine_const_zeros() to access a block
of 0 floats at least as big as any engine block.

* bsecxxmodule.hh:
* bsecxxmodule.cc: got rid of istreams, jstreams and ostreams
fields which just duplicated BseModule pointers for no good. since
bseengine.h is deliberately not included by bsecxxmodule.hh, use
the BSE_MODULE_GET_?STREAMSP() macros supplied by bsedefs.h.

* bsedefs.h: provide BSE_MODULE_GET_?STREAMSP() similar to
BSE_MODULE_GET_USER_DATA(), so some BseModule fields can be accessed
without inclusion of bseengine.h.

Sat Apr 22 18:06:39 2006 Tim Janik


* tests/blocktests.cc: function name fixups. print out timing
information about benchmark tests and calibration. assigned more
benchmarking time to increase accuracy.

Sat Apr 22 13:36:24 2006 Stefan Westerfeld


* tests/blocktests.cc: Introduce benchmark time calibration from
birnettests.h, so that the benchmarks take the same amount of time on
any processor.

Thu Apr 20 14:11:54 2006 Stefan Westerfeld


* bseblockutils.*(substitute): Tiny name fix: substrate is not the
right word for the argument here; substitute_impl is better.

Wed Apr 19 23:50:48 2006 Tim Janik


* bseblockutils.hh, bseblockutils.cc: new files which provide a couple
utility functions for operations on blocks of floats and ints.

* tests/blocktests.cc: test the new block utils.

* bseplugin.c: added hook nodes to allow specialized plugins.

* bseexports.h: added BseExportNodeHook.

* bsecxxplugin.hh: added BSE_CXX_REGISTER_STATIC_HOOK() and
BSE_CXX_REGISTER_HOOK().

* Makefile.am: fixed up clean rules so stamp files
are properly deleted and dependent files are properly built.

Wed Apr 19 02:41:55 2006 Tim Janik


* Makefile.am:
(CLEANFILES): don't add @PERLRULE@ to CLEANFILES, as this can cause
its contents to be partially commented out. instead, add
$(bse_proc_gen_sources) conditionally to MAINTAINERCLEANFILES
or CLEANFILES, depending on the AM conditional WITH_PERLRULE.

Sat Apr 15 03:11:18 2006 Tim Janik


* bse/bseplugin.c: use BirnetCPUInfo to determine whether to load
plugins with .SSE extension.

* bse/bsemain.[hc]: added BseMainArgs.force_fpu, settable
via --bse-force-fpu.

Fri Apr 14 02:18:51 2006 Tim Janik


* bsesequencer.cc: moved everything extern "C" and everything static
out of the anon namespace. leave just C++ class definitions inside
namespace anon. this fixes C API linking errors with gcc-4.2.

Thu Apr 13 23:56:01 2006 Tim Janik


* Makefile.am: fixed regeneration of files in srcdir.

* bseplugin.c: filter out plugins that don't end in .FPU.*.

Tue Apr 11 23:38:11 2006 Tim Janik


* tests/Makefile.am:
* Makefile.am: make dist fixes, conditionalize perl rules.

Sat Apr 8 02:09:15 2006 Tim Janik


* bseloader-mad.c:
* bseloader-wav.c: use basename instead of full file path for internal
wave names.

Tue Apr 4 21:59:39 2006 Tim Janik


* tests/cutvorbis.c:
* tests/magictest.c:
* tests/mathtests.c:
* Makefile.am: removed tools.

* tests/testfft.c:
* tests/subnormals.cc: changed to make use of test macros.

Tue Apr 4 02:06:45 2006 Tim Janik


* tests/Makefile.am: build and check loophandle, got rid of testwavechunk.

Mon Apr 3 21:51:28 2006 Tim Janik


* tests/subnormals.cc: first test for correctness, then for performance.

Mon Apr 3 15:50:14 2006 Stefan Westerfeld


* tests/subnormals.cc tests/subnormals-aux.cc: Added code which
verifies that subnormal elimination functions are correct.

Sun Apr 2 18:19:42 2006 Tim Janik


* bse/Makefile.am: some more dependency and minor build fixes.

Sun Apr 2 03:31:24 2006 Tim Janik


* Makefile.am: merged with gslmakefile.inc. fixed dependencies.
simplified build rules. integrated with Makefile.decl.

* *.hh *.cc: removed useless "mode: c++;" statement.
fixed Bse::* functions being implemented in anonymous namespaces.

* bsecxxmodule.cc: fixed non-static functions and static assertions.

* bsecxxmodule.hh: assert the correct object type in the
BSE_EFFECT_INTEGRATE_MODULE() macro via const_cast<>(this) instead
of by using bogus namespacing.

* bseieee754.h: work around gcc-4.2 not allowing "register" unions.

* bseloader-guspatch.cc: fixed compiler warning.

* gsldatahandle-mad.c:
* bseloader-mad.c: include topconfig.h for libmad presence.

* bsesequencer.cc: use offsetof() instead of G_STRUCT_OFFSET() which
gcc-4.2 doesn't seem to like.

* bsesong.c: fixed prototype scope.

* gslmakefile.inc: removed, merged into Makefile.am.

* gsldefs.h: include gslconfig.h, don't define BIRNET macros.

* gslwavechunk.c: fixed variable initialization.

Sat Apr 1 16:34:48 2006 Tim Janik


* tests/subnormals-aux.cc:
* tests/subnormals.cc: extended tests.

* bseieee754.h: renamed denormal-cancellation macros to
BSE_FLOAT_FLUSH() and BSE_DOUBLE_FLUSH().
added arithmetic and ?:-operator variants for denormal cancellation.
use the arithmetic variants by default, which seems to be the fastest
in most scenrios.

Sat Apr 1 14:23:57 2006 Tim Janik


* tests/subnormals-aux.cc:
* tests/subnormals.cc: added pure-arithmetic cancellation test.

Fri Mar 31 23:44:41 2006 Tim Janik


* bseieee754.h: added bse_float_zap_denormal() and
bse_double_zap_denormal() to get rid of denormal floating point
numbers.
added coarse but faster BSE_FLOAT_FLATTEN() and BSE_DOUBLE_FLATTEN()
macros to modify denormal float variables.

Fri Mar 31 21:57:36 2006 Tim Janik


* bseieee754.h: fix BSE_FLOAT_PARTS() and BSE_DOUBLE_PARTS() for C++
which needs constructors for union casts.

* tests/subnormals-aux.cc:
* tests/subnormals.cc: test for subnormal float performance.

Thu Mar 9 23:38:29 2006 Tim Janik


* tests/*: added missing or changed the license to LGPL.

Thu Mar 9 02:40:51 2006 Tim Janik


* Makefile.am: fix up -pthread -> -lpthread, required for libtool
library linkage. link against libbirnet.o and libsfi.o.

* bse/ldscript.map: export birnet symbols.

* *.[hc]*: adaptions to birnet_ namespace.

Tue Mar 7 03:04:13 2006 Tim Janik


* ldscript.map:
* Makefile.am: link libsfi.la and libbirnet.la into libbse.la.
export only symbols from the public namespaces.

Sat Mar 4 18:47:30 2006 Tim Janik


* tests/Makefile.am (plottest): added plottest rule
(moved here from gslmakefile.inc).

* gslmakefile.inc: removed gsltestoutput test rule.

* tests/filter-defs.gp: increase precision (10000 samples).

Sat Mar 4 18:41:59 2006 Tim Janik


* gsl.gnuplot:
* gslarrows: removed.

Sat Mar 4 18:41:08 2006 Tim Janik


* tests/filter-defs.gp:
* tests/arrows.gp: CVS copied.

Thu Feb 23 23:15:32 2006 Tim Janik


* bseautodoc.c (show_structdoc): fixed records being treated like sequences.

Wed Feb 15 23:43:08 2006 Tim Janik


* bseautodoc.c: unify pspec output. generate doxer digestible object
documentation.

Sun Feb 12 03:01:09 2006 Tim Janik


* bseautodoc.c: write out procedure and structure docu as python
parsable hash table/tuples. this allowes doxer to generate ordinary
API documentation from it.

* bsemain.c: allow script registratrion for bse_init_intern().

* *.c: added __FILE__ and __LINE__ when registering type blurbs.

* bseplugin.c:
* bseexports.h:
* bsecxxutils.[hc]*:
* bsescripthelper.[hc]:
store and pass on file/line information for type blurbs.

* bsetype.[hc]: store file and line information together with type blurbs.
adaped IDL compiler pspec constructors.

* mkcproc.pl: generate type blurb with file/line information.

Sat Jan 21 18:50:44 2006 Stefan Westerfeld


* gsldatacache.[hc]: Change caching code to handle 64 bit offsets.

Fri Jan 20 14:46:43 2006 Stefan Westerfeld


* gsldefs.h: GslLong is now 64-bit on any platform (before, it was
only 64 bit on 64 bit platforms).

* tests/testwavechunk.c:
* gsldatahandle-mad.c:
* gsldatahandle-vorbis.c:
* gsldatautils.c:
* gslwavechunk.c:
* gslwaveosc.c: Adapted printf format strings to the GslLong change
("%ld" -> "%lld").

* gsldatahandle.[hc]: Changed GslLong -> int64.

Fri Dec 23 00:57:58 2005 Tim Janik


* bseconstvalues.h: provide BSE_MIN_TRANSPOSE and BSE_MAX_TRANSPOSE
which currently allow a transposition range of 2 * 72 semitones, i.e.
+- 6 octaves.

* bseglobals.h: implement BSE_TRANSPOSE_FACTOR() which provides
the transposition factor for a semitone in the range -72..0..+72.
implement BSE_FINE_TUNE_FACTOR() and BSE_SEMITONE_FACTOR() in terms
of bsemathsignal.h functions.

* bseglobals.c: removed transposition and fine tune factor tables.

* bsemathsignal.c: added double precision tables for cent fine tune
factors and transposition by +-11 octaves. removed slow and sub-accurate
table initialization routines.

* bsemathsignal.h: const fixes for factor table pointers. added
transposition factor function for +-11 octaves.

* bsestandardosc.c: added transpose property.

* gsloscillator-aux.c, gsloscillator.h: added config setting for
transposition in semitones.

Thu Nov 17 18:10:56 2005 Stefan Westerfeld


* gslfilter.[hc]: Added new argument to gsl_filter_fir_approx, to
enable interpolation not "value linear" between the values in the
transfer functions, but "dB linear".

* tests/mathtests.c: Changed due to gsl_filter_fir_approx API change.

Sat Jul 23 17:04:06 2005 Tim Janik


* bseutils.c:
bse_icon_from_pixdata(): fixed overrun checks.

Wed Jun 22 23:12:00 2005 Tim Janik


* bseamplifier.cc: changed exponential volume curve from qcircle2 (which
aparently was false, compared to other exponential volume amplifiers) to
bse_approx_qcircle4().

* bse/bsewave.h, bse/bsewave.c: allow velocity dependent wave index
lookups, seperate osc_freq and velocity values used for lookups from
GslWaveChunk. adapted related code portions.

* gslwaveosc.c: wave chunk lookups currently are done with a hardcoded
velocity of 1.

Wed May 25 21:48:22 2005 Tim Janik


* bsecore.idl: added stamp_ticks to record SongTiming.

* bsesong.c: fill in stamp_ticks field of BseSongTiming struct.

* bsejanitor.c: added ::shutdown signal, similar to the old ::closed
signal, but signals the start of connection take down, so the connection
doesn't have to be closed.

* bseserver.proc: use BseJanitor::shutdown for script registration.

Mon May 23 19:37:50 2005 Tim Janik


* bsecore.idl: added MidiChannelEventType and MidiChannelEvent to export
midi events.

* bseproject.h, bseproject.c, bseproject.proc: allow fetching a projects
midi notifier.

* bsejanitor.[hc]: removed user-msg* properties and added status
message string property. removed ::close signal (which was unused and
stopped to provide proper notification).

* bsejanitor.proc: removed msg type from bse-script-set-status.

* bsemidireceiver.hh, bsemidireceiver.cc: removed notifier getter.
notify events in the correct order. properly wake up midi notifiers.

* bsemidinotifier.[hc]: emit notification about MIDI events, using a
MidiChannelEvent structure.

* bsemidievent.c: removed cruft.

* bseserver.c: setup midi notifier main loop source.

* bseglue.[hc]: removed rorecord and rosequence type registration
which were now unused.

Sat May 21 02:39:14 2005 Tim Janik


* bsemain.[hc]: introduced bse_init_textdomain_only(), which is used
internally and is usefull for programs like bsesh.

* bsescripthelper.c: translate script blurb and script parameter names
which are not translated by the scripts themselves. the reason is that
scripts shouldn't translate any strings during procedure registration
phase (only markup for translation). this allowes us to generate
reliable keywords for parameter names and procedure categories from
the english names, and provide the translated version by deferred
translation.

Thu May 19 23:07:12 2005 Tim Janik


* bsecore.idl: renamed UserMsgType to MsgType and synced message types
with SFI message types. renamed UserMsg to Message. added message type
identifier and label to Message.

* bsejanitor.proc: removed janitor arg from script internal methods.
renamed script internal methods to bse-script- procedures. changed
message handling to not require a round trip (for janitor handle) and
to support all fields of BseMessage.

* bseserver.h, bseserver.c: print out messages emitted as ::message
signal via sfi_msg_default_handler().

* *.h, *.c: adapted to new message and debugging API.

Mon May 16 21:01:35 2005 Tim Janik


* bsejanitor.c: try early reaping of child. removed unneccessary
::notify::connected notification.

* bseglue.c: use g_warning() for procedure invocation errors so
this can be properly traced in a debugger.

Mon May 16 20:12:51 2005 Tim Janik


* bsecore.idl: added janitor to UserMsg.

* bsemain.c: add janitor to user messages.

* bseserver.h, bseserver.c: made bse_server_user_message() reflect
(newly added) UserMsg fields.

* bsejanitor.proc: added (bse-janitor-message) to allow scripts to send
real error, warning etc. messages.

Mon May 16 17:27:49 2005 Tim Janik


* bsejanitor.h, bsejanitor.c, bsejanitor.proc:
added exit-code and exit-reason properties. logic cleanups so the
exit state is available for read outs once connected becomes FALSE.
API change so script_name and proc_name are always set together.

Sat May 14 20:52:56 2005 Tim Janik


* bseserver.c: improved error messages.

* bsedevice.c, bsedevice.h:
bse_device_set_opened(): enter OPEN state, stores device name.
device_open_args(): store device opening argument list, assert
bse_device_set_opened() is used.
bse_device_close(): cleanup device anme and device opening arguments.

* bseproject.proc: renamed bse-project-dirty to bse-project-is-dirty
to circumvent name coliisions in the C++ binding.

* bse*device-*.c: use bse_device_set_opened().

* *.c: adaptions to sfilog.h API changes.

Thu May 12 00:13:05 2005 Tim Janik


* bseserver.h, bseserver.c: support emission of user mesage signal
without constructing a user message via bse_server_send_user_message().
turned log messages about failure during PCM and MIDI device selection
into rich log message with primary, secondary text and details.

* bsecore.idl: adapted UserMsg record according to SfiLogMessage.

* bsemain.h, bsemain.c: adapted log handler.

Wed May 11 15:01:28 2005 Tim Janik


* bseproject.proc: added change-name() to alter a project name without
affecting undo.

Mon May 9 21:05:02 2005 Tim Janik


* bseproject.h, bseproject.c: properly implemented project dirty
state, based on the project's undo stack.

* bseproject.proc: added procedures to query and reset project
dirty state.

* bseundostack.h, bseundostack.c: implemented dirt counter plus
counter modification methods.

Mon May 9 18:24:00 2005 Tim Janik


* bsewave.c (bse_wave_get_index_for_modules): fixed stupid bug that
caused every second sample to be lost when saving.

Thu May 5 19:03:41 2005 Tim Janik


* bsestorage.c (bse_storage_put_data_handle): fix floats being saved via
localized printf(), instead of locale-independent putf/putd methods.

Tue Apr 19 16:30:51 2005 Tim Janik


* Makefile.am, gslmakefile.inc: fixed gsl headers not being uninstalled.

Tue Apr 19 15:44:46 2005 Tim Janik


* bsedefs.h: prototype BseLoader structures.

* bseloader.h, bseloader*.c:
* tests/magictest.c, tests/mathtests.c: loader rename to Bse.

* bsepcmwriter.c, bseserver.proc, bseutils.c, bsewave.c:
* bsewaverepo.proc, gsldatautils.c, gsldatautils.h: renamed loader
and wave file from gsl to bse.

* gslloader.c, gslloader.h:
* gslloader-wav.c, gslloader-oggvorbis.c:
* gslloader-aiff.c, gslloader-bsewave.c, gslloader-mad.c: removed.

* gslmakefile.inc: removed gslloader files and local install hook.

Tue Apr 19 14:39:39 2005 Tim Janik


* bseloader.h: CVS copied from gslloader.h.
* bseloader.c: CVS copied from gslloader.c.
* bseloader-aiff.c: CVS copied from bseloader-aiff.c.
* bseloader-bsewave.c: CVS copied from gslloader-bsewave.c.
* bseloader-mad.c: CVS copied from gslloader-mad.c.
* bseloader-oggvorbis.c: CVS copied from gslloader-oggvorbis.c.
* bseloader-wav.c: CVS copied from gslloader-wav.c.

Sun Apr 10 23:23:27 2005 Tim Janik


* bsebus.h, bsebux.c: save syncronization state across restore.
re-syncronize in restore_finish if required.

* bseobject.h, bseobject.c: introduced restore_start and resotore_finish
methods, and IN_RESTORE state.

* bsestorage.h, bsestorage.c: call restore_start before restoring
objects and call restore_finish after restoring.

Mon Mar 7 08:35:41 2005 Tim Janik


* renamed every occourance of *.gen-idl.h (C++ headers generated from
idl files) to *.genidl.hh.

Mon Mar 7 07:55:46 2005 Tim Janik


* removed obsolete .h C++ headers.

* adapted sources to compile against .hh C++ headers.

Tue Mar 1 15:24:23 2005 Tim Janik


* bsemidievent.c (bse_midi_signal_default): fixed wrong division for
CONTINUOUS_11 default value.

Sat Feb 5 14:46:13 2005 Tim Janik


* bseloader-guspatch.cc: disabled gus-patch specific xinfos, so gus
patch files are currently treated like ordinary samples.

Sat Jan 29 16:58:38 2005 Tim Janik


* bsesequencer.cc: work around compiler/linker bugs on SuSE 9.2.

Sat Jan 29 01:00:37 2005 Tim Janik


* bseloader-guspatch.cc (bse_init_loader_gus_patch): changed magic to
match v1.0 and v1.1 directly.

Tue Jan 25 00:51:29 2005 Tim Janik


* bsewave.c (bse_wave_store_private): don't store empty xinfos.

Mon Jan 24 22:59:12 2005 Tim Janik


* bseloader-guspatch.cc (fread_dword): fixed error codes and mixed case
function names.

Mon Jan 24 22:49:16 2005 Tim Janik


* bseloader-guspatch.cc: fixed function linkage and missing newlines.

Mon Jan 24 22:38:21 2005 Tim Janik


* bseproject.proc: implemented bse_project_inject_midi_control() to
submit extra midi events into a playing project.

* Makefile.am: added bseloader-guspatch.cc.

* bseloader-guspatch.cc:
* gslcommon.[hc]: initialize guspatch loader with
bse_init_loader_gus_patch().

* bsemididecoder.c:
* bsemidievent.c: zero initialize newly allocated midi events.

* bsetrack.c: wording fixup.

Fri Jan 21 00:48:43 2005 Tim Janik


* bsepart.proc: added bse-part-select-controls().

Thu Jan 20 17:52:14 2005 Tim Janik


* bsestorage.c: removed position arguemnt
from wstore_data_handle_reader(), adsed data length counter.

* gsldatahandle-vorbis.c: removed position arguemnt
from vorbis1_handle_reader().

* gsldatautils.c: removed position arguemnt
from wstore_context_reader(), adsed data length counter.

Thu Jan 20 17:12:24 2005 Tim Janik


* bsestorage.c: use sfi_wstore_putf() and sfi_wstore_putd() internally.
bse_storage_put_data_handle(): don't use printf and %g to store floats,
but use bse_storage_putf() so floats are stored locale independant.

Thu Jan 20 15:18:53 2005 Tim Janik


* bsestorage.c (bse_storage_printf): issue warnings if the format string
contains localised directives.

Thu Jan 20 05:10:27 2005 Tim Janik


* gslcommon.c (gsl_error_from_errno): return BSE_ERROR_NONE for an
errno of 0.

* bseproject.c (bse_project_store_bse): pass on storage errors.

* bsestorage.c (bse_storage_flush_fd): pass on storage errors.

Thu Jan 20 04:21:53 2005 Tim Janik


* bsestorage.c (restore_item_property): generate proper warnings
for non-writable properties.

* bsestandardosc.c (bse_standard_osc_class_init): disabled self
modulation mode which only produces huge amounts of aliasing.

Thu Jan 20 01:28:59 2005 Stefan Westerfeld


* bseloader-guspatch.cc: Make more data found in the GUS Patch headers
available as xinfos.

Thu Jan 20 00:30:50 2005 Tim Janik


* bse/gslloader-bsewave.c: changed BseWave magic to "#BseWave1".

Thu Jan 13 21:35:38 2005 Tim Janik


* gsldatautils.[hc]: added gsl_data_make_fade_ramp() and
gsl_data_clip_sample().

* bseenums.[hc]: turn FILE_EMPTY into its own error code, added
BSE_ERROR_DATA_UNMATCHED.

* gsldatahandle.c (insert_handle_close): don't free xinfo pointer
which we merely copied (but didn't deep-duplicate) upon open.

Wed Jan 12 02:08:21 2005 Tim Janik


* bsecore.idl: added part link structure and sequence.

* bsepart.[hcp]*: added ::links-changed signal for asyncronous
notification of part link changes. added procedurte to list all
part links, sorted by tick stamps. fixed idle handler maintenance.

* bsetrack.c: properly notify parts about part link changes.
added bse_track_list_part().

Sat Jan 8 04:44:14 2005 Tim Janik


* gslloader-pat.cc: removed.

Sat Jan 8 04:43:00 2005 Tim Janik


* bseloader-guspatch.cc: CVS copied from gslloader-pat.cc.

Fri Jan 7 02:53:05 2005 Stefan Westerfeld


* gslloader-pat.cc: Reimplemented data_offset storing in a way that is
both: fairly readable in the code, and based on the new style
loader_data array that replaces the loader_offset field.

Fri Jan 7 02:01:11 2005 Tim Janik


* bsestorage.c: store Ogg/Vorbis data handles with increasing serialnos.

* gsldatahandle-vorbis.[hc]: enforce specification of a serialno when
creating a store handle with gsl_vorbis1_handle_new().
gsl_vorbis_make_serialno(): new function which generates unique
serialnos (per program runtime).

* gslvorbis-cutter.[hc]: allow overriding the output serialno (by
default the same as the input) with a specific serialno via
gsl_vorbis_cutter_force_serialno().
gsl_vorbis_cutter_unfilter_serialno(): removed.

Fri Jan 7 01:11:04 2005 Tim Janik


* bsewave.header: fixed midi-note docs.

* gsldatahandle.c: removed midi-note xinfo handling, this doesn't
belong here.

* gslloader-bsewave.c: fixed osc-freq parsing. fallback to midi-note
frequency specification if osc-freq is not given.

Thu Jan 6 23:44:54 2005 Tim Janik


* gsldatahandle.[hc]: removed unused QData.

Thu Jan 6 23:28:03 2005 Tim Janik


* gslloader-bsewave.c: removed <= 0.6.4 compat code, since we haven't
released .bsewave files of that kind yet.

Thu Jan 6 23:03:36 2005 Tim Janik


* bse/gslloader-pat.cc:
* bse/bsetrack.c: use "gus-patch" play-type.

* zintern/mono-wave.bse:
* zintern/gus-patch-mono.bse: removed.

* zintern/gus-patch.bse: removed "-mono" suffix from object.

Thu Jan 6 23:02:30 2005 Tim Janik


* zintern/gus-patch.bse: CVS copied from gus-patch-mono.bse.

Thu Jan 6 22:27:53 2005 Stefan Westerfeld


* gslloader-pat.cc: Fix compilation: reintroduce data_offsets, as the
loader_offset field is no more. Changed xinfos of envelopes to
single comma delimited lists of floats.

Thu Jan 6 19:51:36 2005 Tim Janik


* bsewave.[hc]: keep inlined data handles opened, to protect against
.bse file overwriting.

* bsestorage.c (bse_storage_add_dblock): keep opened data handles
open to protect against overwriting.

Thu Jan 6 18:37:16 2005 Tim Janik


* bsestorage.c: store/parse Ogg/Vorbis data handles as in compressed
form, rather than unpacked.

* bsewave.[hc]: removed wave chunk url structures which were unused
anyway. store waves in order, sorted by oscillator frequency. use
SfiRing to hold the list of wave chunks.

* gsldatahandle-vorbis.[hc]: allow peeking of mix_freq from
gsl_data_handle_new_ogg_vorbis_zoffset(). added convenience function
gsl_vorbis1_handle_put_wstore().

* gslloader-bsewave.c: use "vorbis-link" as keyword for inlined
Ogg/Vorbis streams. minor cleanups.

Wed Jan 5 01:10:54 2005 Tim Janik


* bseenums.[hc]: added BSE_ERROR_WRONG_N_CHANNELS.

* gslloader-bsewave.c: make sure that chunks carry the required number
of channels.

* gsldatahandle-vorbis.c: pass on number of channels for
gsl_data_handle_new_ogg_vorbis_zoffset() handles.

* bsewave.c: slight warning fixup.

Mon Jan 3 23:59:39 2005 Tim Janik


* bsewave.header: document format changes.

* gslloader-bsewave.c: rewrote parsing code, cleaned up token list,
make use of xinfos. properly identify auto-detect and raw-sample files.

* bseutils.[hc]: added bse_xinfos_parse_assignment().

* gslloader.h: extended wave chunk data fields.

Sun Jan 2 14:41:59 2005 Tim Janik


* bsestorage.[hc]:
bse_storage_put_xinfos(): save xinfo arrays.
bse_storage_parse_xinfos(): load xinfo arrays.

* bsewave.[hc]: cleanups, removed per-chunk locator logic. added
finalize, added bse_wave_clear(). save and parse xinfo strings.
bse_wave_load_wave_file(): clear wave before loading, set locator
after successfull loading.

* bsewaverepo.proc: use bse_wave_load_wave_file().

Mon Jan 3 11:31:14 2005 Stefan Westerfeld


* gslloader-pat.cc: Since "the double free with gslloader.c" is fixed
in gslloader.c now, we don't need our mini workaround any longer.

Sun Jan 2 15:26:55 2005 Stefan Westerfeld


* bsetrack.c: Use different playback networks for GUS Patches and
normal waves, depending on play-type xinfo string.

* bsewave.h: Add xinfos field (needs implementation).

* gslloader-pat.cc: Set play-type to "gus-patch-mono".

Sun Jan 2 15:23:35 2005 Stefan Westerfeld


* zintern/Makefile.am:
* zintern/zintern.c: Use Scheme identifier style for zintern names.

* zintern/gus-patch-mono.bse: Add a network for GUS Patch playback.

Sun Jan 2 11:41:05 2005 Stefan Westerfeld


* gslloader-pat.cc: GUS Patches are only mono patches.

Sat Jan 1 21:59:43 2005 Tim Janik


* bseutils.[hc] bse_xinfos_dup_consolidated(): added flag to indicate
whether internal xinfos should be copied.

* gsldatahandle-mad.c:
* gsldatahandle-vorbis.c:
* gsldatahandle.[hc]:
* gslloader-bsewave.c:
moved bit_depth, mix_freq and needs_cache (back) into the
GslDataHandleSetup structure, because they are an integral part of
all wave data storage formats. turned osc-freq into a custom xinfo
string, because it is not.

Sat Jan 1 21:20:03 2005 Tim Janik


* zintern/wave-mono.bse: CVS copied from mono-wave.bse.

Fri Dec 31 16:39:21 2004 Tim Janik


* gsldatahandle.[hc]: removed bit_depth, osc_freq and mix_freq from
GslDataHandleSetup, removed gsl_data_handle_override(). these
values are accessible throuzgh accessors and stored in xinfos now.

* gslloader-bsewave.c: provide osc-freq via xinfo.

* gsldatahandle-vorbis.c:
* gsldatahandle-mad.c: set bit-depth, osc-freq and mix-freq via xinfos.

Fri Dec 31 13:44:16 2004 Tim Janik


* gsldatahandle.c:
(gsl_wave_handle_new_zoffset):
(gsl_wave_handle_new): provide dhandle xinfos without creating
an extra data handle.

Fri Dec 31 13:32:47 2004 Tim Janik


* bseutils.c (bse_xinfos_dup_consolidated): duplicate xinfo array and
remove empty/removal xinfos (i.e. "foo=" infos).

Fri Dec 31 01:40:33 2004 Tim Janik


* gsldatahandle-vorbis.c: cleanups. implemented GslVorbis1Handle which
can be used to store the compressed Ogg/Vorbis data of an Ogg/Vorbis
GslDataHandle. this uses GslVorbisCutter internally to properly rewrite
the Ogg stream.

* gslvorbis-cutter.[hc]: support non-cutting mode. support specification
of the logical bitstream to process by setting a serialno filter.

* tests/cutvorbis.c: added option handling for -s,-p-k,-S.

* gslloader-bsewave.c: allow loading of waves with an empty chunk list.

* gslloader.[hc]: support loading of waves with empty chunk list.

* gslcommon.c (gsl_error_from_errno): handle ENODATA.

Thu Dec 30 17:06:29 2004 Tim Janik


* gslloader.c (gsl_wave_dsc_free): remove bogus struct modification.

Thu Dec 30 04:05:50 2004 Tim Janik


* gslloader.c (gsl_wave_dsc_free): removed bogus g_strfreev().

Wed Dec 29 22:24:51 2004 Stefan Westerfeld


* gslloader.h:
* gslloader-pat.cc: Code cleanups and better error handling.

Wed Dec 29 12:52:01 2004 Stefan Westerfeld


* bsestorage.c: Include "gslcommon.h" for gsl_byte_order_to_string.
This fixes a segfault (and compile warning) on AMD64.

Wed Dec 29 11:37:55 2004 Stefan Westerfeld


* gslloader-pat.cc: Use the new xinfo API.

* bseieee754.h: Fix compiler warnings in bse_ftoi/bse_dtoi on AMD64.

Wed Dec 29 04:06:07 2004 Tim Janik


* gsldatacache.[hc]: tweaked caching algorithm, so 25% cache memory of
low persistency data handles is kept upon cache sweeps, this makes the
low persistency cache mode attractive enough for e.g. WAV files.
changed flags, there's a high_persistency flag now which is valid only
for opened data caches.

* gsldatahandle-vorbis.c:
* gsldatahandle-mad.c: set .needs-cache xinfo flag.

* gsldatahandle-mad.c:
* gsldatahandle-vorbis.c:
* gsldatahandle.h:
* gsldatahandle.c:
data handle cleanups and vtable consolidations. introduced
gsl_data_handle_get_source() which returns the source data handle if
availabele. the source data handle must have the exact same length and
values like the originating data handle to validly be handed out.
gsl_data_handle_needs_cache(): implemented in terms of returning
the .needs-cache xinfo flag.
gsl_wave_handle_new_zoffset():
gsl_wave_handle_new(): on __linux__, unset the .needs-cache xinfo
flag on wave handles to spare cache performance for OGGs and MP3s.

* bseutils.[hc]: moved *_xinfo_* accessor functions here.

Mon Dec 27 23:59:19 2004 Tim Janik


* gsldatahandle.[hc]: added xinfos[] array to opened data handles.
added gsl_data_handle_new_add_xinfos(),
gsl_data_handle_new_remove_xinfos() and
gsl_data_handle_new_clear_xinfos() to control the xinfos of a data
handle after loading.
added xinfos[] field to gsl_wave_handle_new_zoffset() and
gsl_wave_handle_new().

* gslloader-bsewave.c: support parsing of xinfos["key"] = "value"
statements.

* gslloader.[hc]: introduced xinfos for loader structures, provided
xinfos accessors. removed authors, license, blurb (comment) and
looping fields. this data is taken care of by xinfos now.

* gslloader-oggvorbis.c:
* gslloader-bsewave.c:
* gslloader-wav.c:
* gslloader-mad.c:
* gslloader-aiff.c: provide chunk->xinfos instead of accessing
chunk fields. support data-handles with xinfos.

* bseenums.[hc]: merged error enums with GslErrorType.

* gsldefs.h:
* gslcommon.[hc]: removed GslErrorType specific code.
include bseenums.h.

* bsemain.h: include fixes.

* tests/*.c:
* *.c: BseErrorType enum fixups.

Mon Dec 27 00:12:44 2004 Tim Janik


* gslloader-bsewave.c (gsl_wave_token): fix off-by-one error in reverse
token lookup.

Sun Dec 26 19:23:05 2004 Stefan Westerfeld


* gslloader-pat.cc: Fixes/Code cleanups: the deinitialization
code (freeing, closing files and so on) should work now.

Sun Dec 26 13:04:02 2004 Stefan Westerfeld


* gslwaveosc-aux.c: Fix ping pong looping: the code now should behave
correctly for backward playing (negative block dirstride).

Sat Dec 25 17:14:15 2004 Stefan Westerfeld


* gslloader-pat.cc: Handle format field correctly (support 8bit and
unsigned samples). Fix bug in tuning.

Fri Dec 24 22:39:48 2004 Tim Janik


* bsecontainer.c (bse_container_remove_backedup): force project
deactivation for choldren with automation properties, because
automation properties can't be setup on prepared objects.

* bseproject.[hcp]*: export undo-stack deactivation function
bse_project_push_undo_silent_deactivate(), so other code portions
can force project deactivation for specific undo steps.

* bsecxxplugin.hh: export *_choice_values() getter when declaring
enumeration types.

* bseplugin.c: provide choice value getter for exported enum types.
register enum transform functions for dynamic enum types (allowed
since glib-2.4).

* bseenginemaster.c: first discard the engine schedule, then
modify the master node list, so the old schedule doesn't point
at dangling nodes.

* bsemath.[hc]: added bse_float_gnuplot() to ease debugging.

* bseexports.h: added *_choice_values() getter function to
BseExportNodeEnum.

* bsemathsignal.[hc]: documentation updates.

Fri Dec 24 15:26:58 2004 Stefan Westerfeld


* gslloader-pat.cc: Added initial implementation of a GSL loader for
GUS patches (like those usually used in timidity patch sets).

Mon Dec 20 19:51:07 2004 Tim Janik


* bsemathsignal.h: removed bse_approx_exp2() and bse_signal_exp2().
added bse_approx2_exp2() .. bse_approx9_exp2() functions to approximate
2^x with varying precision and speed.
added bse_approx2_tanh() .. bse_approx9_tanh() functions to approximate
tanh(x) with varying precision and speed.
added bse_saturate_hard() and bse_saturate_branching() to implement
fast CLAMP()-ing.

Sun Dec 19 13:44:43 2004 Tim Janik


* bseparam.[hc]: added minimum and maximum parameters to
bse_param_spec_freq().

* bsetype.h: turned Frequency() parameters into logarithmic properties.

Sat Dec 18 23:58:04 2004 Tim Janik


* bseconstvalues.h: constant cleanups, removed _f and _d postfixes and
superfluous casts.

* bseglobals.h: removed deprectaed constants. deprecated time ranges
which are badly choosen and ADSR specific.

* bsemathsignal.h: consolidation of signal<->frequency
conversion macros.

* bseutils.h: define bbuffer size.

Fri Dec 17 21:19:25 2004 Tim Janik


* bsecxxutils.hh: removed assert_derivation() and assert_ptr_derivation().
added template class EnforceDerivedFrom<>; with partial derivation to check
for type derivations and pointers tehreof. implemented assert_derived_from<>()
in terms of class EnforceDerivedFrom<>; so it can check for derivation of
types and pointers thereof (without needing a partial specialization of
a function template which C++ doesn't allow).

* bsestandardosc.c (bse_standard_osc_class_init): added missing descriptions.

Thu Dec 16 02:11:26 2004 Tim Janik


* gsldatautils.h:
gsl_conv_from_double_clip():
gsl_conv_from_double():
gsl_conv_from_float_clip():
gsl_conv_from_float(): use bse_dtoi() for double->int conversion to
get faster rounding and to avoid C++ warnings.

Wed Dec 15 23:58:50 2004 Tim Janik


* zintern/mono-wave.bse: adapt to beast 0.6.4. this fixes song compat
code adding extra track->master connections to tracks using wave files.

Mon Dec 13 15:31:37 2004 Stefan Westerfeld


* bseprocidl.cc bsecore.idl: Info strings should be lower case.

Sun Dec 12 19:47:32 2004 Tim Janik


* removed gslwave.header and gslloader-gslwave.c, build from
gslloader-bsewave.c.

Sun Dec 12 19:38:22 2004 Tim Janik


* bsewave.header: CVS copied from gslwave.header.

* gslloader-bsewave.c: CVS copied from gslloader-gslwave.c.

Sun Dec 12 18:55:36 2004 Tim Janik


* bseenginemaster.c:
* bseengineutils.c:
general fixups to ensure probe/flow/boundary jobs are collected
in order and are given precedence over collecting transaction jobs.

* bseenginenode.h: turned probe jobs, acces jobs and boundary jobs into
a single union EngineTimedJob. this avoids breaking strict aliasing
rules which results in wrong code generation with gcc-3.3 and gcc-3.4.
adapted all structure usages.

Sun Dec 12 03:13:17 2004 Tim Janik


* bseengineutils.c: make sure pending user trash jobs are collected
before ordinary trash jobs are collected.

* bsesource.[hcp]*: added bse_source_has_output().

Sat Dec 11 22:45:46 2004 Tim Janik


* bsepart.c (bse_part_restore_private): parse velocity as int as well as float.

Sat Dec 11 15:35:16 2004 Tim Janik


* bseengine.[hc]: added block-size argument to probe callback.

* bseenginemaster.c: properly probe unscheduled nodes. optimized
probing by keeping a list of nodes with probe jobs.
altered probe job value counter maintenance.
clean up probe jobs upon discarding.

* bseengineutils.c: assert NULL probe jobs on discarded nodes.

* bseprobe.cc: properly handle probes from unscheduled nodes.

Fri Dec 10 15:24:35 2004 Tim Janik


* bseautodoc.c: fixed bugs, print out signals. print out
all BSE objects.

* bseprobe.idl, bseprobe.cc: deliver mix frequency with probes.

Mon Dec 6 23:46:11 2004 Tim Janik


* bseprobe.cc: block-size computation fixups. this fixes ffts beyond
block boundaries.

Mon Dec 6 22:47:00 2004 Stefan Westerfeld


* bseplugin.h: To allow implementing C-style plugins in C++ sources,
as required for the PortAudio driver, declare extern "C" linkage for
the symbol defined by BSE_DEFINE_EXPORTS when compiled within a C++
source. The extern "C" code was taken from bsecxxplugin.hh.

Fri Dec 3 21:31:26 2004 Tim Janik


* bsewaverepo.proc: don't override detailed errors.

* gsldatahandle-mad.[hc]: provide GslErrorType errors instead of
strings. added gsl_data_handle_new_mad_err(), improved debugging.

* gslloader-mad.c: pass on errors.

Mon Nov 29 21:45:25 2004 Tim Janik


* bseenginemaster.c: append probe jobs upon insertion, so probe data
isn't mixed up between multiple probe jobs, and probe jobs are
processed in order.

* bseprobe.cc: normalize fft by multiplying with 1/n.

* bseutils.[hc]: added bse_debug_dump_floats() to easily dump debugging
wave data to a file in /tmp/.

Sat Nov 27 20:02:04 2004 Tim Janik


* engine-mplan.txt: * reflect renames in the code base

Sat Nov 27 18:57:11 2004 Tim Janik


* bsepcmwriter.c (bse_pcm_writer_open): truncate .wav files when
opening. wrtie out the initial wav header with a very long data
block size, so abortion of the wav saving process (which needs
adaption of the data size later on) leaves a wav file with
non-0 data block length. (required for most programs to read
wav files).

Sat Nov 27 18:39:38 2004 Tim Janik


* bseprobe.idl:
* bseprobe.cc: implemented blackman windowed fft probes.
added support for varying probe block sizes.
removed artifical delay at probe start.

Sat Nov 20 07:29:15 2004 Tim Janik


* bseprobe.cc: shorten probe-queue length to 3 subsequent requests,
this should be sufficient to account for GUI scope request jitter
of approximately 1 block in size.

Wed Nov 17 01:19:53 2004 Tim Janik


* bseengine.c (bse_engine_constrain): don't align block sizes to
powers of 2, but simply to 4 to utilize CPU better.

Mon Nov 15 18:11:10 2004 Tim Janik


* bseengine.c (bse_job_integrate): set a flag to indicate node ownership
by the job.

* bseengineutils.c (bse_engine_free_job): free job-owned nodes.

* bseenginemaster.c (master_process_job):
(ENGINE_JOB_INTEGRATE): take over node ownership from job.
(ENGINE_JOB_DISCARD): pass on node ownership to job.

* bseenginenode.h: use an anonymous union in BseJob, adapted users.

Mon Nov 15 15:18:01 2004 Tim Janik


* bseengineutils.c: manage transaction trash list with a FIFO rather
than a stack, so execution order of user-callbacks and free handlers
is preserved.

Sun Nov 14 15:32:57 2004 Tim Janik


* bseengine.[hc]: documentation updates.
bse_job_boundary_discard(): implemented jobs to discard modules deferred.

* bsemidireceiver.cc: use bse_job_boundary_discard() to discard modules,
since extra jobs may be queued asyncronously from process()implementations.

Sat Nov 13 20:12:23 2004 Tim Janik


* bsecompat.c: added compat for DavChorus and DavBassFilter.

Sat Oct 30 13:40:13 2004 Tim Janik


* bsebusmodule.idl:
* bsebusmodule.cc:
* bsebus.c: turned left and right volume properties into real-valued
db-volume properties.

* bseglobals.h:
* bsecore.idl: provide MINDB constant.
got rid of unused constants.

* bsesong.hc]: removed unused volume properties.

* bsetype.h: provide DBVolume pspec constructor.

* bseamplifier.idl:
* bseamplifier.cc: added db-volume property ::master_volume. turned
::olevel into a compat property. documented last supporting version
for compat properties.

Sat Oct 16 11:17:21 2004 Tim Janik


* bsetrack.proc: provide ensure-output() which connects to master bus.

* bsesong.[hc]:
provide bse_song_ensure_master().
bse_song_compat_finish(): auto-connect old tracks to master bus.

* bsesong.proc: removed ensure-output-busses() which is really just
internal compat code.

* bseproject.c:
bse_project_restore(): allow supers to perform compat actions after
restoring from file.

* bsesuper.[hc]: added compat_finish() class method.

Sat Oct 16 10:02:06 2004 Tim Janik


* bsebus.proc: added ensure-output() to ensure a master bus connection.

* bsesong.proc:
remove-bus(): fixed up loosing ::master-output property across undo.
get-master-bus(): don't create a master bus.
ensure-master-bus(): create a master bus if required.

Sat Oct 16 08:34:40 2004 Tim Janik


* bsebus.c: allow ::solo property editing on master.

* bsesong.c: allow master as solo track which makes sense since tracks,
can be connected directly to master. don't mute master if another track
is the solo track.

Sat Oct 16 00:50:40 2004 Tim Janik


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

* bsesong.proc: clear undo after ensuring bus, track and part
connectivity, since we don't maintain proper undo state across
these operations. implemented ensure-track-links().
added find-any-track-for-part() which is faster than
find-track-for-part() and can be used for orphaned part checks.

* bsetrack.[hc]: provide bse_track_get_last_tick().

* bsetrack.proc: added list-parts-uniq().

* bseutils.[hc]: provide bse_item_seq_from_ring().

* bseprobe.cc:
* bsebus.c: adapt to sfi changes.

Fri Oct 15 03:55:11 2004 Tim Janik


* bsepart.c: fixed negative control events and fine tune parsing.

* bsewaveosc.[hc], bsewaveosc.proc: introduced channel property
to control playback channel for multi-channel samples (stereo).
changed seek-API to support syncronous seeking of multiple wave
oscillators.

* gslwaveosc.c, gslwaveosc-aux.c: properly clamp the configured channel.

Fri Oct 15 01:27:52 2004 Tim Janik


* bsesnet.c: don't serialize auto-activate=#f property value.

* bsesource.c: reduce serialization precision for pos-x/y to float.

Fri Oct 15 01:13:56 2004 Tim Janik


* bsemidisynth.c: request polyphonic voice processing for the
selected midi channel.

* bseproject.c: stay in playback mode even if only snets and no song
need processing.

Wed Oct 13 21:28:37 2004 Tim Janik


* bseserver.c (bse_server_close_devices): wait until pcm module is
discarded before destroying teh pcm writer.

Tue Oct 12 10:51:55 2004 Tim Janik


* gsl-fftgen.pl:
* mkcalls.pl:
* mkcproc.pl:
* mktypes.pl:
don't generate "/** ...*/" comments, as two-asterisc comments are used
as documentation generator magic.

Fri Oct 8 18:57:40 2004 Tim Janik


* bsepcmmodule.c (bse_pcm_imodule_process): fixed recently broken value
count for bse_pcm_handle_read().

* bsecore.idl: renamed PropertyCandidates.label from nick,
adapted users.

Fri Oct 8 14:21:06 2004 Tim Janik


* bseobject.[hc]: added bse_object_strdup_debug_handle() for
threrad-safe debugging handle generation.

* bsesequencer.h:
* bsesequencer.cc: reduces track position debugging verbosity.
added underrun detection and underrun debugging messages.
made BSE_SEQUENCER_FUTURE_BLOCKS private.

Fri Oct 8 13:37:40 2004 Tim Janik


* bsepcmmodule.c: check for a readable pcm device upon resetting the
PCM input module. handle partial read requests. properly zero initialize
newly allocated structures.

* bseserver.[hc]: implemented bse_server_require_pcm_input(), which
issues an appropriate warning if PCM recordingis reduced to a silent
input stream.

Fri Oct 8 11:38:07 2004 Tim Janik


* bsedefs.h: don't include <math.h>. files needing math functions
should include <bse/bsemath.h> instead.

* bsemath.[hc]: removed BSE_EPSILON_CMP().
moved contents from gslmath.h and gslmath.c here and changed namespace
to bse. adapted users.

* bseieee754.h: changed namespace to bse, adapted users.
use signbit() if available.

* bsemathsignal.[hc]: changed namespace to bse, adapted users.

* gslmath.h, gslmath.c, gslsignal.h, gslsignal.c, gslieee754.h: removed.

* gsl-fftconf.sh: include bsemath.h in generated source.

* tests/mathtests.c: disabled ellipsis and complex root finding tests.

Fri Oct 8 10:01:37 2004 Tim Janik


* bseieee754.h: CVS copied from gslieee754.h.

Fri Oct 8 09:55:43 2004 Tim Janik


* bsemathsignal.h: CVS copied from gslsignal.h.

* bsemathsignal.c: CVS copied from gslsignal.c.

Fri Oct 8 06:52:09 2004 Tim Janik


* bsesequencer.cc:
* gslloader-aiff.c:
* bseenginemaster.c: use g_static_assert().

Mon Oct 4 03:46:52 2004 Tim Janik


* bsestorage.c: fixed version string parsing.

* bsecore.idl: provide user-message types and record.

* bseserver.[hc]: extended user message notifications.

* bsemain.c:
* bsesequencer.cc:
* bseenginemaster.c: set log handler for the various threads.

Sat Oct 2 21:12:13 2004 Tim Janik


* *.c: adapt to logging API changes.

Wed Sep 29 21:01:28 2004 Tim Janik


* bsesequencer.cc: make wake-up pipe non-blocking. properly wake up
sequencer thread, so it stops polling on removed io watch fds.

Wed Sep 29 19:59:42 2004 Tim Janik


* bsesequencer.h: CVS copied from bsessequencer.h.

* bsesequencer.cc: CVS moved from bsessequencer.cc.

* bsessequencer.h: removed.

Wed Sep 29 19:16:23 2004 Tim Janik


* bsessequencer.cc: renamed symbols from ssequencer to sequencer,
adapted users. added io watch API:
bse_sequencer_add_io_watch(): install poll-fds and a handler.
bse_sequencer_remove_io_watch(): remove an io watch handler.

* bsemididevice-oss.c: ported to use BseSequencer io watch API.

* bsemididevice.h: added midi_decoder field to handle.

Wed Sep 29 11:44:23 2004 Tim Janik


* bsessequencer.c: removed.
* bsessequencer.cc: ported from C to C++.

* Makefile.am: build bsessequencer.cc instead of bsessequencer.c.

Wed Sep 29 11:37:44 2004 Tim Janik


* bsessequencer.cc: CVS copied from bsessequencer.c.

Tue Sep 28 23:01:23 2004 Tim Janik


* bsemain.[hc]: added --bse-override-plugin-globs <glob> and
--bse-override-script-path <path> options.

* bseplugin.c: allow plugin path overriding.

* bsescripthelper.c: allow script path overriding.

Tue Sep 28 20:38:45 2004 Tim Janik


* gslcommon.[hc]: moved file tests to sfi:
gsl_error_from_errno(): some errno reassignbements, for EBADF, ENOTDIR
and ENODEV, return fallback to indicate operation failure (rather than
"not found" or internal error). adapted users.
gsl_check_file_equals(): removed, use sfi_file_equals() instead.
gsl_file_check(): renamed from gsl_check_file(), use sfi_file_check()
internally.

Tue Sep 28 18:26:23 2004 Tim Janik


* bsedefs.h: added n_fds to BseIOWatch, adapted users.

* bseplugin.c bse_plugin_path_list_files(): allow *.o plugins besides *.so.

Mon Sep 27 20:36:55 2004 Tim Janik


* bsedevice.[hc]:
bse_device_open(): if no arguments are specified, try opening the device
with the arguments povided by its listed device entries.
made bse_device_split_args() non-public.

* bsemididevice.h: removed public midi_fd from handle, fixed users.

Mon Sep 27 18:26:56 2004 Tim Janik


* bsemidireceiver.cc (bse_midi_receiver_voices_pending): don't try to
check busy state of NULL voices.

Mon Sep 27 06:38:57 2004 Tim Janik


* bsepcmdevice.[hc]: removed queue_length field from handle, as it's
OSS specific. turned req_queue_length field into req_latency_ms, i.e.
requested latency in milliseconds.

* bsemididevice-oss.c: added queue_length field to handle. adapt
to BsePcmDevice.req_latency_ms.

Mon Sep 27 01:09:39 2004 Tim Janik


* bsepcmdevice-oss.c: fixed hardcoded n_channels=2 and a number of buglets.

Sun Sep 26 06:00:46 2004 Tim Janik


* bsedevice.c: fixed logic that collapses multiple 'auto' drivers.
don't skip auto-list drivers after trying to open 'auto', users
may have provided special device arguments.

* bsepcmdevice-oss.c: API updates. added underrun detection and handling.
added hs - hard-sync option to initiate retriggers on underruns.
fixed read/write opening mode logic. moved poll timeout calculation
logic from bsepcmmodule.c here. simplified code by using number of
frames all over the place. take latency settings into account
and honour them if the device has been opened readable. ensure block
writing is always paired with a previous block read to stabelize
latency queue length.

* bsepcmdevice.[hc]: added req_block_length field for a tentative
block_length request and req_queue_length field to request queue
lengths according to the current latency settings.
bse_pcm_device_request(): allow latency and block-length requisitions.
bse_pcm_device_get_mix_freq(): mix frequency accessor.
bse_pcm_device_get_handle(): require block_length specification.
bse_pcm_handle_read():
bse_pcm_handle_write(): removed n_values argument, which is now always
handle->block_length, as setup from bse_pcm_device_get_handle().
bse_pcm_handle_status(): removed status() method alltogether.
bse_pcm_handle_check_io(): introduced check_io() which to some extend
merges logic from the former status() and bse_pcm_module_poll()
functions. check_io() returns whether a block may be read or
needs to be written and the timeout until arrival of such an event
if data may not immeditely be processed.
bse_pcm_handle_latency() added latency() method which is used to
return the current full amount of latency introduced by the device.
bse_pcm_handle_set_watermark(): removed watermarks, handled internally
by check_io() now.
bse_pcm_freq_mode_from_freq():
bse_pcm_freq_from_freq_mode(): removed frequency mode indirection.
bse_pcm_device_frequency_align(): new function to align mix frequencies
to common device values.

* bsepcmmodule.c: removed watermark based timeout calculation, the
pcm layer handles stuff now. work around non-readable device handles.

* bseserver.c: added latency and block_size to pcm device requests.
keep the first device error we encounterted. allow free-form mix
frequencies at first, fallback to aligned frequencies if no device
could be opened.

* bsessequencer.[hc]: allow queries about how bad the sequencer
is lagging behind his scheduled future stamp.

* bsepcmdevice-null.c: adapt to new BsePcmDevice API, sleep
cooperatively since we might run at nice level -20.

* bseengine.c: docu updates.

Fri Sep 24 10:41:18 2004 Tim Janik


* bseserver.c (bse_server_open_pcm_device): fallback to write-only mode
if opening in read-write mode failed.

Fri Sep 24 09:14:14 2004 Tim Janik


* bsedevice.[hc]: added groups to device entries. adjusted device
list dump.

* bseenums.[hc]: adapted device errors, so they better correspond
to user defined configuration settings.

* bsemain.[hc]: load drivers from drivers dir before dumping device
list.

* bseplugin.[hc]: extended bse_plugin_path_list_files() to support
BSE_PATH_DRIVERS.

* bsepcmdevice-oss.c: don't list ENODEV devices.

* bsemididevice-oss.c: don't list ENODEV devices.

Thu Sep 23 15:43:02 2004 Tim Janik


* bsedevice.[hc]: added base class for BseMidiDevice and BsePcmDevice.
move open() and close() (former suspend()) methods here. implemented
automated device selection and listing.

* bsepcmdevice-null.[hc]: added null PCM device.

* gslcommon.[hc]:
gsl_check_file(): added char device, block device and pipe checks.
gsl_check_file_equals(): check whether two files point to the same inode.

* bse*device-*.[hc]: adaptions to new device API.

* bsemididevice.[hc]:
* bsepcmdevice.[hc]: adaptions to bsedevice.[hc].

* bsemain.c: implemented proper device listing.

* bseserver.c: adaptions to new device API.

* bsessequencer.[hc]: provide bse_sequencer_thread_lagging() for
null PCM device integration.

Wed Sep 22 14:28:11 2004 Tim Janik


* bsegconfig.[hc]: added bse_gconfig_merge_args() to merge
configuration with command line arguments.

* bsemain.[hc]: provide BseMainArgs globally, setup from argv parsing.
parse --bse-latency, --bse-mixing-freq, --bse-control-freq,
--bse-driver-list, --bse-pcm-driver and --bse-midi-driver.

* bseserver.c: merge argv arguments into global config after
parsing rc file.

Wed Sep 22 02:58:07 2004 Tim Janik


* bsetrack.c:
bse_track_context_create():
bse_track_context_dismiss(): enable poly voices not only for snets, but
also for waves supplied by the user.

Wed Sep 22 02:13:59 2004 Tim Janik


* bsessequencer.[hc]: rewrote and majorly simplified playback
object maintenance. simply allow removal and additions of
songs to the sequencer, adapted callers.

* bsesuper.[hc]: removed sequencer specific code and API,
adapted callers.

* bsesong.[hc]: adapted to new sequencer API.

* bseproject.[hc]: simplified and adapted to new sequencer API.

Tue Sep 21 23:59:09 2004 Tim Janik


* bsestorage.c: store and restore property automation setups.

Tue Sep 21 04:41:29 2004 Tim Janik


* bsemidireceiver.[hc]*: introduced explicit enabling of polyphonic
voice handling. avoid warning about unavailable voices for disconnected
tracks, or if polyphonic handling was not enabled.

* bsetrack.c: request polyphonic midi channel handling iff the track
provides a synth mesh and is prepared.

* bseproject.c: bse_project_start_playback(): ensure all modules are
properly intergrated into the engine before starting the sequencer.

* bsesource.c: guard objects with PREPARED flag until after reset()
invocation.

* bseengine.[hc]: added bse_module_is_scheduled() and bse_job_nop().

* bseengineutils.c:
* bseenginemaster.c: handle nop jobs properly.

Tue Sep 21 02:40:05 2004 Tim Janik


* bsemidireceiver.cc: don't throw invalid warnings.
voice_input_module_access_U():
change_voice_input_L(): mono voices may receive note-on while busy.

Tue Sep 21 02:18:37 2004 Tim Janik


* bsemidireceiver.cc: added documentation blurb on voice states and
table entries, in relation to note-on, note-off and done=1 events.
added missing _U and _L locking marks to function names (except
midi receiver methods which are all implicitely _L).
voice_input_module_access_U():
voice_switch_module_reuse_U():
voice_input_enter_sustain_U():
voice_input_enter_idle_U(): added mssing locking guards.

Tue Sep 21 01:03:30 2004 Tim Janik


* bsemidireceiver.[hc]*: BseFreeFunc fixup, ensured the free function
is called from the user thread (BSE core thread) without any locks
still held.

Mon Sep 20 01:38:14 2004 Tim Janik


* bseproject.proc:
undo_do_deactivate(): properly deactivate via bse_project_deactivate(),
not just bse_project_stop_playback() which doesn't reset PREPARED state
anymore.
project_push_undo_silent_deactivate(): stop playback before undo *and*
redo execution.

* bsesource.proc: undo fixup for set-automation.

Mon Sep 20 00:44:12 2004 Tim Janik


* completed infrastructure for automation.

* bseengine.[hc]: return tick_stamp of transaction execution from
bse_trans_commit().

* bseenginemaster.c: provide a boolean to _engine_pop_job(), indicating
whether the internal tick stamp returned by bse_trans_commit() may be
updated.

* bseengineutils.[hc]: implemented tick_stamp return handling for
bse_trans_commit().

* bsemidireceiver.[hc]*: removed minimum and maximum from
bse_midi_receiver_add_control_handler(). instead, return whether
user data is setup for this handler or not. at the moment, this
seems to be sufficient to implement automation.

* bsesource.[hc]: added property_updated() class function. fixed
automation property maintenance.

* Makefile.am: fixed dependencies, install bsecore.genidl.hh.

* bsecxxmodule.cc: include bsecore.genidl.hh through bsecxxplugin.hh,
so bsecore.genidl.hh is publically available.

* bsecore.idl: use bse_intern_path_user_data() instead of macros from
topconfig.h.

* bseutils.[hc]: provide bse_intern_path_user_data()
for bsecore.genidl.hh.

* bsecxxbase.[hc]*: only flag writable properties as G_PARAM_CONSTRUCT.
added set_accessors() to setup per inheritance level property
handling functions. supplied trampoline templates to generate class
method calls.

* bsecxxmodule.[hc]*: update BSE properties through
BseSourceClass.property_updated() in free() handler of automation
property flow accessor. properly quantize automated bool property
values. fixed user_data setup of midi control handler.
record tick_stamp of last module update.

* bsecxxplugin.hh: removed function definition macros. instead, use
trampoline generation templates. include <bse/bsecore.genidl.hh>
after defining all required macros, implement get_candidate()
trampoline template which depends on class PropertyCandidates,
supplied by bsecore.genidl.hh.

* bsecxxutils.[hc]*: comment updates. removed function definition
macros which are replaced by trampoline templates.

Thu Sep 16 15:41:38 2004 Tim Janik


* bsecxxmodule.[hc]*: accessor->closure rename where appropriate.
moved MidiControlJobData into SynthesisModule.
renamed module_configurator() to make_module_config_closure().
use bse_midi_receiver_set_control_handler_data() to provide an
auto_update() function handle for midi_control_handler().
(SynthesisModule): provide an auto_update_accessor() template, to be
used as flow job function on engine modules to call auto_update().
specialised template so an auto_update() method is required only
for objects with the NeedAutoUpdateTag category.

* bsedefs.h: provide BSE_MODULE_GET_USER_DATA().
* bseengine.c: double check BSE_MODULE_GET_USER_DATA().

* bsemidireceiver.[hc]*: added extra user_data to midi control handler,
required by bsecxxmodule: bse_midi_receiver_set_control_handler_data().

Wed Sep 15 22:48:41 2004 Tim Janik


* *.idl: removed SFI_PARAM_ prefix from option constants.

Tue Sep 14 19:06:12 2004 Tim Janik


* bsesource.proc:
* bsesource.[hc]: switched automation API over to BseMidiControlType.

* bsecore.idl: added i18n markup. added MidiControlType, which
duplicates the portions of MidiSignalType that are usable by automation.

* bsecxxplugin.hh: provide enum value initialization funciton, instead
of initializing from static constructor (and calling i18n code prema-
turely).

* bseexports.h (BseExportNodeEnum): offer an enum value list
initialization function instead of a pointer to already initialized
enums values.

* bseplugin.c: call enum value list initializer.

Tue Sep 14 13:42:11 2004 Tim Janik


* bsemidireceiver.cc: cleanup control handler if the last module is
removed from the control handler module list.

* bsesource.c: count :automate: properties as :prepared: properties.

* bsesource.proc: provide bse_source_is_prepared(),
bse_source_set_automation(), bse_source_get_automation_channel() and
bse_source_get_automation_control().

Tue Sep 14 09:24:27 2004 Tim Janik


* bsesource.[hc]: allow a MIDI channel to be specified together with
automation properties.

* bsecxxmodule.cc: support automation property specific MIDI channels.

Tue Sep 14 01:40:18 2004 Tim Janik


* bse/bsemidireceiver.[hc]*: partially reverted last change of
introducing BseMidiControlData. instead, implemented value
clamping before calling midi control handlers.

* bsecxxmodule.cc: removed value clamping logic, pass on minimum
and maximum to bse_midi_receiver_add_control_handler().

Tue Sep 14 01:13:26 2004 Tim Janik


* bsecxxmodule.idl:
* bsecxxmodule.cc: more effect automation work, generate debugging
message from module flow access function, properly constrain control
event values.

* bsemidireceiver.[hc]*: support midi control data structure per
control handler instead of just a module pointer.

Mon Sep 13 02:37:28 2004 Tim Janik


* bsemidireceiver.h:
* bsemidireceiver.cc: provide a mechanism to register, unregister and
notify handlers about midi control changes.

* bsesource.[hc]: collect :automate: properties, and maintain an
automate-property => midi-control-number association.

* bsecxxmodule.cc: first steps in implementing automation
infrastructure, currently only debugging messages are generated.
integrate_engine_module():
dismiss_engine_module(): queue job with accessor function to register
and unregister a midi receiver control handler for the module.

* bseitem.[hc]: added bse_item_get_snet().

* bseenums.[hc]: more errors.

Wed Sep 8 21:50:10 2004 Tim Janik


* bsecompat.[hc]: added bse_compat_rewrite_ichannel_ident() and
bse_compat_rewrite_ochannel_ident() with compat code for the
new BseArtsCompressor.
bse_compat_rewrite_type_name(): take a BseStorage argument. added
ArtsCompressor => BseArtsCompressor and
ArtsStereoCompressor => BseArtsCompressor rules for versions <= 0.6.2.

* bsesource.[hc]:
resolve_osource_input(): improved error messages, call input/
output channel compat code.

* bsestorage.[hc]: provide bse_storage_item_get_compat_type() to
figure the original module type to be restored, prior to compat
code type name rewriting.

Wed Sep 8 16:52:32 2004 Tim Janik


* bsecxxutils.hh: changed TEMPLATE_ERROR::invalid_type() and
TEMPLATE_ERROR::invalid_argument_type() to throw an error upon
instantiation and not parsing with g++-3.4.

Wed Sep 8 15:38:01 2004 Tim Janik


* bsecore.idl: use g_intern_printf() to reformat i18n strings which
contain G_SEARCHPATH_SEPARATOR_S, so intltool can do the right thing
for translators.

Tue Sep 7 01:19:24 2004 Tim Janik


* bsebus.c: don't store defaults for solo, mute and sync properties.

* bsesubsynth.c: throw out default values for unused proeprties.

Mon Sep 6 09:13:05 2004 Tim Janik


* bsebus.[hc]: implemented ::outputs property. provided logic in
functions that may be shared with BseTrack. proxy notifies from
parent for master bus.

* bsetrack.[hc]: implemented ::outputs property based on functions
provided by bsebus.[hc].

Sat Sep 4 04:54:34 2004 Tim Janik


* bsecore.idl: option cleanups. provide NOTE_*() macros for Note()
properties.

* bsetype.h: pspec constructor cleanups and adaptions.

* bseinfo.c: provide octave info.

Fri Sep 3 14:30:34 2004 Tim Janik


* bsebus.[hc]: added store/restore support for ::inputs. made
::inputs a GUI-only property.
bse_bus_connect(): check the input object against our candidate list.
bse_bus_connect_unchecked(): connect without checking against candidate
list.

* bsestorage.c: process item links in the order they were parsed in.

Fri Sep 3 03:12:49 2004 Tim Janik


* zintern/mono-wave.bse: remove useless wave-repo. fixed synth name.

Thu Sep 2 22:50:43 2004 Tim Janik


* bsetrack.[hc]: derive from BSeContextMerger. this turns BseTrack
into a BseSource, including preparation and reset. this gets rid of
a bunch of special cases and state related buglets.

* bsesubiport.[hc]:
* bsesuboport.[hc]: prepare for derived objects with varying
numbers of input and output channels. some cleanups.

* bsesubsynth.[hc]: dito. move premature releasing of port
names to finalize.

* bsesource.[hc]: added bse_source_class_inherit_channels().

* bsesong.c: adapt to BseTrack is_a BseSource now.

* bsesnet.c: cleanups. report i/o port leaks at finalization
time, as ports may be left at bse_snet_release_children() from
inetrnal children.

* bseinstrumentoutput.c:
* bseinstrumentinput.c: adaptions, cleanups.

Thu Sep 2 04:14:29 2004 Tim Janik


* bsebus.[hc]: added ::mute, ::solo and ::sync properties.
implement bse_bus_editable_property() to toggle ::solo
editability for master bus. moved song<->master connection
logic here.

* bsebusmodule.cc: special case left/right volume factors of
0 (BSE_MIN_VOLUME_dB) to set constant 0 outputs.

* bsesong.c: support solo busses.

* bseitem.proc: provide bse-item-editable-property() to figure
whether a property is currently editable.

* bsesource.c: support "unprepared" option by implementing
source_check_pspec_editable() to check for an objects prepared
state, and by notifying property changes when preparing and
resetting objects.

* bseitem.c: default initialize get_candidates() to NULL.

* bsemidisynth.c:
* bsesubsynth.c:
* bsetrack.c:
* bsesong.c: added missing "unprepared" option to properties.

* bseobject.[hc]: implemented bse_object_editable_property() to
figure via a chainable class handler (check_pspec_editable)
and a per-class handler (editable_property) whether a property
is currently editable.

Wed Sep 1 14:37:24 2004 Stefan Westerfeld


* gslsignal.h: Don't use UNLIKELY in headers (but G_UNLIKELY), as this
breaks compilation for external code, as LIKELY/UNLIKELY are
convenience macros only defined when compiling bse itself.

Wed Sep 1 14:25:49 2004 Tim Janik


* bsebus.c: proxy changes on input objects onto notify::inputs.

Wed Sep 1 01:44:46 2004 Tim Janik


* bsebus.c (bse_bus_set_property): use new sfi_ring_reorder() API.

Tue Aug 31 23:55:52 2004 Tim Janik


* bsebus.c: added BseTrack and BseBus to the ::inputs candidate
type partitions. added missing ::inputs change notifications.

* bsecore.idl: added TypeSeq and type partitions to PropertyCandidates.

* bseitem.c: default initialize type partition structure.

Tue Aug 31 12:09:38 2004 Tim Janik


* bsewaverepo.proc:
load_file(): set wave name from filename directly.

* gsldatacache.c:
data_cache_new_node_L(): copy over overlapping data from adjacent node
instead of re-reading data from data-handle (which forces a slow
backward seek on the handle). based on a patch by stefan westerfeld.
gsl_data_cache_free_olders(): unlock properly, reported by stefan.

Tue Aug 31 09:37:02 2004 Tim Janik


* bsesource.*:
* bsecxxmodule.*: cleanups.

Tue Aug 31 08:50:26 2004 Tim Janik


* bsecxxeffect.*: applied slightly modified patch from stefan.
applied const fixes to various methods.

Sun Jul 18 21:47:54 2004 Stefan Westerfeld


* bsecxxeffect.*:
Added Effect::block_size(), so that effects (not their modules) can
obtain the block size. Provide prepare1/prepare2 and reset1/reset2
hooks for effects, so they can execute code before/after prepare/
reset.

Tue Aug 31 07:13:37 2004 Tim Janik


* bseproject.c (bse_project_activate): disabled timed auto-activate
csynth starts. simply commit the transaction before the sequencer
is started.
this fixes lost notes at song start with mono-synths (BseMidiInput).

Mon Aug 30 01:20:08 2004 Tim Janik


* bsemidireceiver.cc:
MidiChannel::adjust_note(): only queue voice-pressure, voice-sustain or
voice-off changes on busy voice input modules.
check_voice_input_improvement(): perform rating according to the
queue_state which is maintained in the UserThread.
voice_switch_module_process(): use UserThread callbacks to clean up
disconnected state and to remove vinput modules from the frequency
reverse lookup table.
create_voice_input(): keep a pointer to the reverse lookup table per
vinput module, so removal frmo that table may occour from callbacks.
change_voice_input(): defer removal from table until the module's
internal state has been updated.

* bseengineschedule.c:
determine_suspension_state(): query keep-state (avoid-reset) from
recently updated nodes also. use determine_suspension_reset() to
determine whether a node wants its inputs to keep-state.
determine_suspension_reset(): for virtual nodes, needs_reset is
determined by looking at the virtual node's output node's needs_reset.

* bseengine.[hc]: added bse_engine_add_garbage().

Sun Aug 29 12:49:36 2004 Tim Janik


* bsebus.c: made parent's BseSubSynth::snet a private property that's
ignored by storage and GUI.

* bsesong.c: save loop setup.

Sun Aug 29 04:19:57 2004 Tim Janik


* bsebus.c (bse_bus_get_stack): ensure the summation module gets build.

Sat Aug 28 23:12:03 2004 Tim Janik


* bsesong.proc: don't create busses while prepared.

Sat Aug 28 22:08:40 2004 Tim Janik


* bsebus.c: fixup internal reordering of input objects.

* bseundostack.c: caller adaption.

Sat Aug 28 14:54:39 2004 Tim Janik


* bseutils.c (bse_item_seq_to_ring): implemented ::inputs property
handling.

* bsecore.idl: added PropertyCandidates structure.

* bseitem.[hc]: replaced bse_item_list_items() by
bse_item_get_candidates() which has additional support for an i18n
label and tooltip for the candidates.

* bseitem.proc: provide get-property-candidates() instead of list-items().

* bseutils.[hc]: added helper functions: bse_property_candidate_relabel(),
bse_item_seq_remove(), bse_item_seq_to_ring().

* bsesong.c:
* bsetrack.c:
* bsewaveosc.c:
* bsesubsynth.c:
* bsemidisynth.c: get_candidates() adaptions, cleanups.

* bsesong.c: i18n fixups.

Wed Aug 25 23:24:23 2004 Stefan Westerfeld


* bseenginemaster.c: Fix memcpy in master_take_probes to copy the
right amount of probe data (each sample is sizeof (gfloat) bytes).

Wed Aug 25 18:15:00 2004 Tim Janik


* bsetype.h: added dB property type.

* bsebus.[hc]: construct effect stack csynth and add a volume
module into it. update the volume effect from volume properties.

* bsebusmodule.idl:
* bsebusmodule.cc: implement module functionality needed by busses.

* bsecontainer.c: fix base-name handling in
bse_container_new_child_bname() for objects with default names.

* bseproject.[hc: implement bse_project_create_intern_csynth().

* bsesong.c: trigger effect stack creation of busses after adding
them to songs.

Sun Aug 22 19:26:23 2004 Tim Janik


* bsebus.[hc]: made bus input channels private to avoid undo or disk
storage of channel states. busses maintain connections on their own.
added ::master-output bool property to set whether a bus is the master
bus of a song.
added bse_bus_disconnect_outputs() and bse_bus_list_outputs().

* bseenums.[hc]: const-corrections. added i18n markup to error blurbs.
added BSE_ERROR_SOURCE_PRIVATE_ICHANNEL and bse_assert_ok().

* bsesong.[hc]: got rid of master_bus member. detect master-bus-ness
through signal connections. removed bse_song_get_master(), added
bse_song_find_master() and bse_song_connect_master().

* bsesong.proc: create master bus undoable.

* bsesource.[hc]: added bse_source_get_input(). cleaned up
bse_source_must_set_input(). added PRIVATE_INPUTS flag, skipped
channel storage/restoring for private inputs.

Fri Aug 20 18:31:59 2004 Tim Janik


* bsebus.[hc]: added left/right db-volume properties.

* bseconstvalues.h: increased min/max db constants.

* bseenginemaster.c: fixed NULL-pointer check.

* bseglobals.[hc]: renamed bse_db_to_factor() and bse_db_from_factor().
fixed up calculated dB values (use a factor of 20 not 10 for peaks).
adapted callers.

Tue Aug 17 17:38:39 2004 Tim Janik


* bsebus.c: prototyped ::inputs property. i18n fixups.

* bseitem.c: docu fixups.

* bsetrack.c: i18n fixups.

Sun Jul 25 16:43:52 2004 Stefan Westerfeld


* bsemidireceiver.cc: Properly NULL initialize the module list in the
constructor of struct ControlValue. This fixes the segfaults on AMD64
that occur when playing the demosong (and probably others).

Sat Jul 24 20:00:22 2004 Tim Janik


* bseprobe.idl:
* bseprobe.cc: added signal energie to probed values. fixed up
value colelction and min/max for discarded modules.

Sat Jul 24 11:40:50 2004 Tim Janik


* bsesniffer.idl:
* bsesniffer.cc: removed BseSniffer code.

Sat Jul 24 08:16:14 2004 Tim Janik


* bseengine.[hc]: added n_delay and n_probes arguments to
bse_job_probe_request(), so the user can request block sizes
and probe spacings.

* bseenginenode.h:
* bseenginemaster.c: implemented variable length probe blocks and
probe block spacings.

* bseprobe.cc: for now, request engine block size big probe
blocks, with a 3/4 spacing ratio. fixed request handling.

Sat Jul 24 05:33:58 2004 Tim Janik


* gsldefs.h: removed if_reject() and if_expect() variants.
G_LIKELY() and G_UNLIKELY() may be used instead. provide
LIKELY(), ISLIKELY() and UNLIKELY() for convenience.

* *.[hc]*: fixed if_reject() and if_expect() usage.

Fri Jul 23 20:05:53 2004 Tim Janik


* *.h, *.c, *.cc: globally renamed GSL Engine to BSE Engine.

Fri Jul 23 19:05:23 2004 Tim Janik


* *.[hc]:
* Makefile.am: use bseengine*.[hc] instead of gsl*.[hc] files.

* gslengine.[hc]:
* gslopnode.h:
* gsloputil.[hc]:
* gslopmaster.[hc]:
* gslopschedule.[hc]: removed.

Fri Jul 23 18:39:30 2004 Tim Janik


* bseengine.h:
* bseengine.c: CVS copied from gslengine.[hc].

* bseenginenode.h: CVS copied from gslopnode.h

* bseenginemaster.h:
* bseenginemaster.c: CVS copied from gslmaster.[hc].

* bseengineschedule.h:
* bseengineschedule.c: CVS copied from gslopschedule.[hc].

* bseengineutils.c:
* bseengineutils.h: CVS copied from gsloputil.[hc].

Tue Jul 20 06:33:25 2004 Tim Janik


* bseprobe.idl:
* bseprobe.cc: turned channel_ages into a C++ vector. fixed up handling of
invalidated source handles due to asyncronous requests.

Sat Jul 17 19:03:33 2004 Tim Janik


* bseprobe.cc: fix C++ LessThanComparable implementation for sort().

Sat Jul 17 12:40:38 2004 Tim Janik


* bse/bsebus.[hcp]*: fixed track/bus argument type for bse_bus_connect()
and bse_bus_disconnect().

* bse.idl: make bseprobe.idl public core API. bsehack.idl must be the
last file being included, so all idl types are defined once it's parsed.

* bseprobe.idl:
* bseprobe.cc: implemented auxillary BseSourceProbes logic for
BseSource. this manages generic signal probe handling for sources.
the code is integrated with BseSource via implementation of
bse_source_probes*() functions.

* bsesource.[hc]: introduce and call bse_source_probes*() from various
parts of the BseSource code.

* bsetrack.proc: provide get-output-source() instead of create-sniffer().

* gslopnode.h: record the number of output channels to be probed with
probe jobs, required to release job resources.

* gslengine.[hc]: add more docs. allocate probe blocks individually, so
user code can "steal" allocated blocks.

* gslopmaster.[hc]: fixed up sample block probing code to work on
virtual nodes (and return processed probe jobs from "unprocessed"
nodes). added minor optimization to output buffer pointer virtualisation
logic.

* gslopschedule.[ch]: added virtual nodes to debugging output of
schedules. properly connect even virtual node inputs, so the outputs can
be probed without walking virtual node input connections.

* gsloputil.c: properly free probe job blocks.

Thu Jul 15 01:15:01 2004 Tim Janik


* bsesniffer.cc:
* bsesniffer.idl: disabled any code that depended on reply jobs,
this essentially breaks sniffers.

* bsesource.[hc]: reordered code for brevity. added BseSourceProbes*
structure member (currently unused).

* gslopnode.h:
* gslengine.[hc]: removed reply jobs. added probe jobs. changed
all uses of GslReplyFunc as free func back to GslFreeFunc.

* gslopmaster.[hc]: nuked reply jobs. implemented probe job handling
which means returning an output block copy to the user thread after
each node calculation. execute module profiling code after all nodes
have been processed.

* gsloputil.[hc]: nuked reply jobs. handle probe jobs and ordinary
free functions. sort unscheduled nodes with probe jobs with nodes
which have flow jobs pending.

Wed Jul 14 01:43:05 2004 Tim Janik


* bsecore.idl: added thread id to ThreadInfo.

* bsecore.cc (collect_thread_totals:.exec): pass on thread_id.

Wed Jul 14 00:14:29 2004 Tim Janik


* bsesongbus.h:
* bsesongbus.c:
* bsesongbus.proc: removed in favour of bsebus.*.

Tue Jul 13 23:12:52 2004 Tim Janik


* bsebus.proc: copied from bsesongbus.proc.

Tue Jul 13 22:58:15 2004 Tim Janik


* bsebus.c:
* bsebus.h: CVS copied from bsesongbus.[hc]:

Tue Jul 13 21:59:07 2004 Tim Janik


* bsecontainer.proc:
* bsecontainer.[hc]: renamed bse_container_list_items() to
bse_container_list_children(), since there's a corresponding
BseItem method already. adapted callers.

* bsesong.proc:
* bsesong.[hc]: got rid of track merger object, as the master
bus takes care of merging track outputs now. s/SongBus/Bus/.
(bse_song_create_summation): funciton name fixup.
(ensure-output-busses): fixup procedure for GUIs.
(ensure-track-links): fixup procedure for GUIs, not currently
functional.

* bsesongbus.proc:
* bsesongbus.[hc]: s/SongBus/Bus/.
implemented proper connect/disconnect handling of busses and tracks.
can stand some optimization, so that 1:1 conenction don't use a
summation object (which means an extra block copy in engine modules).

* bsesource.[hc]: implemented bse_source_test_input_recursive() to
catch cycles before they are created.
(bse_source_set_input): catch cyclic connections and return BAD_LOOPBACK.

* bsetrack.[hc]: got rid of the merger arg in bse_track_add_modules().
(bse_track_get_output): provide ouput module.

Sun Jul 11 23:42:58 2004 Tim Janik


* bsesource.[hc]: support flat (direct) input object collection.

* bsesong.proc:
* bsesong.[hc]: added master-bus concept.

Sat Jul 10 20:01:47 2004 Tim Janik


* bsecontainer.[hc]: added bse_container_new_child_bname() which allowes
to specify a base-name for the newly created child.
turned bse_container_new_child() into a macro.

* bsesong.[hc]: added convenience function bse_song_create_merger().

* bsetrack.c: provide base-names when creating snets, so the
generated snet name numbers match the track number.

Sat Jul 10 18:27:53 2004 Tim Janik


* icons/summation.xcf:
* icons/summation.png:
* bsesummation.idl:
* bsesummation.cc: new routing effect to summ up multiple signals.

Sat Jul 10 17:19:07 2004 Tim Janik


* bsesong.c (bse_song_forall_items): don't iterate over song busses
which are of BseSource types and thusly handled by chaining to the
parent class handler.

Mon Jul 5 08:55:53 2004 Tim Janik


* bsesong.[hcp]: added support for song busses.

* bsesongbus.[hc]: new source, intended to be used for
mixing song tracks.

Tue Jun 29 01:51:29 2004 Tim Janik


* bsepart.c: flag fixes.

* bsetrack.proc: provide get-last-tick() to calc the last tick
in a track.

Sat Jun 12 19:46:42 2004 Tim Janik


* bseserver.c (bse_server_class_init): provide wave_file property
with a tooltip. hint towards filename.

Fri Jun 11 04:35:46 2004 Tim Janik


* bsecore.idl:
* bsecore.cc: added API to report CPU usage statistics.

* bsessequencer.[hc]: export bse_ssequencer_thread handle.

* bsetype.h: fixed sfidl_pspec_Choice().

* gslengine.[hc]: renamed threads. provide gsl_engine_get_threads().

* gslopmaster.c: do thread accounting.

Thu May 20 13:36:35 2004 Tim Janik


* bsedefs.h: got rid of BsePixdata.

* bseexports.h: provide means for export nodes to fill in
translatable strings through a callback.

* bseplugin.[hc]: register internationalized categories and invoke a
callback to retrieve type blurb/authors/license strings.

* mkcproc.pl:
* bseladspa.c:
* bsecxxutils.cc:
* bsescripthelper.c:
* bsecategories.[hc]: added internationalized category strings
to registration functions. got rid of BsePixData. fixed callers.
(bse_categories_register_stock_module): new function to register
internal modules and do the right thing wrg translation.

* bsecxxplugin.hh: provide a callback function to fill in translatable
strings of export node structures, so gettext isn't invoked until
after bse has been initialized.

* bsesnooper.c:
* bsestandardosc.c:
* bsesubiport.c:
* bsesuboport.c:
* bsesubsynth.c:
* bseconstant.c:
* bsebiquadfilter.c:
* bseinstrumentinput.c:
* bseinstrumentoutput.c:
* bsemidicontroller.c:
* bsemidiinput.c:
* bsepcminput.c:
* bsepcmoutput.c:
* bsewaveosc.c:
register objects with bse_categories_register_stock_module() and
changed code to use generated pixstream files in icons/.

* bsemain.c: properly assert that the textdomain is setup (bse
was initialized) when translating a string.

* bseutils.[hc]: moved BsePixdata from public API to private helper.

* icons/Makefile.am: got rid of CVS hosted .c images and Makefile.icons.
generate C source image files from .png files directly.

* icons/*.c: removed all CVS hosted C sources.

* icons/*.png: added png files for all required C sources.

Wed May 5 18:17:31 2004 Tim Janik


* bsemain.c (bse_async_parse_args): fixed parsing bug.

* gslcommon.c (gsl_error_from_errno): made ENODEV a
GSL_ERROR_NOT_FOUND error.
(gsl_error_select): new function to select the most descriptive
error in multi error scenarios.

* bsemididevice-oss.c (bse_midi_device_oss_open): debugging fixes.
use gsl_error_select() to select error messages from multiple
devices.

Wed May 5 15:27:08 2004 Tim Janik


* *.c: adapted log, error, warning and debugging messages.

* bseenums.h: adapt message types to new logging system.

* bsemain.c: added support for $BSE_NO_DEBUG and --bse-no-debug.

Sun May 2 14:50:25 2004 Tim Janik


* gslopmaster.c: clean up debugging code, minor ops.

Fri Apr 9 12:04:19 2004 Tim Janik


* tests/testwavechunk.c (run_tests): allocate large structures on the
heap, not the stack. based on a patch by Rasmus Kaj <kaj@e.kth.se>.

Sat Mar 6 12:17:46 2004 Tim Janik


* bsecore.idl: remove gconfig option synth_block_size, added
synth_latency and synth_control_freq.

* gslengine.[hc], gslopnode.h: removed sub-sample cruft. export just
GSL_CONTROL_CHECK(), gsl_engine_control_mask() and
gsl_engine_control_raster(), changed callers. added SYNC jobs.
removed configuration parameters from gsl_engine_init().
added gsl_engine_constrain() to calculate and constrain block and
control blocck sizes.
added gsl_engine_configure() to reconfigure engine configuration
parameters.
removed cruft from Stream structures. changed GSL_STREAM_MAX_VALUES
to 1024.

* gslopmaster.c: implement ENGINE_JOB_SYNC, needed to reconfigure
the engine.

* gsloputil.[hc]: prepare for gsl_engine_block_size() changes, allow
complete nukage of all const-value blocks.

* bseserver.[hc]: remove pcm-latency property. properly reconfigure
engine with gsl_engine_configure().

* bsepcmdevice.[hc]: added minimum watermark field to constrain
watermark in bse_pcm_handle_set_watermark() for devices with
fragment sizes, where too small watermarks can confuse the
fill/poll calculation code.

* bsepcmdevice-oss.c: request the smallest possible fragment size.
retrigger device operation after open, setup minimum playback
watermark.

* bsecxxmodule.hh: adapt to gslengine.h API changes.

Tue Mar 2 12:59:38 2004 Tim Janik


* bsepart.c (bse_part_insert_note): ensure enough octaves are present
to insert a note.

Tue Mar 2 10:48:19 2004 Tim Janik


* bseautodoc.c: i18n fixes and blurb output fixes.

* bsecore.idl: provide just BLURB not HELP for records, work
around a texitheque bug.

Tue Mar 2 10:23:55 2004 Tim Janik


* bseautodoc.c: changed callers of sfi_boxed_make_record(),
sfi_boxed_get_record_info(), sfi_info_string_find(),
sfi_boxed_make_sequence() and sfi_boxed_get_sequence_info()
which got removed.

Mon Mar 1 20:08:12 2004 Tim Janik


* switched the native C binding for idl types to a C wrapper
binding which is based on a C++ binding for core idl types.

* bsecore.idl: turn ProxySeq into a ItemSeq for proper typing.

* bsecxxbase.idl:
* bseamplifier.idl: bring up to par with recent idl fixes.

* bsecore.cc: new file, needed to implement bsecore.idl contents
and the C wrapper bindings.

* bsecxxplugin.hh: provide constants used in idl files. fixed namespace
issues in BSE_CXX_DECLARED_*_TYPE() macros by making them absolute.

* bsegconfig.c: retrieve record fields via bse_gconfig_get_fields() now.

* Makefile.am: added rules to generate bsegencore.cc. this implements
the C functions from bsegentypes.h on top of the C++ core binding.

* bsemain.[hc]: initialize C wrapper types.

* bsesong.c:
* bsetrack.c:
* bsesubsynth.c:
* bsemidisynth.c:
* bseproject.proc:
* bseitem.[hcp]*:
* bsewaveosc.c:
* bsecontainer.[hcp]*: adapt to BseItemSeq changes.

* bsetype.c: removed cruft.

* bserecords.idl: removed, replaced by bsecore.idl.

Fri Feb 27 11:23:01 2004 Tim Janik


* bsecore.idl: CVS copied from bserecords.idl.

Fri Feb 27 06:19:32 2004 Tim Janik


* bseautodoc.c:
* bsebiquadfilter.c:
* bseconstant.c:
* bsecontextmerger.c:
* bsecxxbase.cc:
* bsecxxbase.hh:
* bsecxxmodule.hh:
* bseinstrumentinput.c:
* bseinstrumentoutput.c:
* bseladspamodule.c:
* bsemidicontroller.c:
* bsemidiinput.c:
* bsemidivoice.c:
* bsepcminput.c:
* bsepcmoutput.c:
* bsesnooper.c:
* bsesource.c:
* bsesource.h:
* bsesource.proc:
* bsestandardosc.c:
* bsesubiport.c:
* bsesuboport.c:
* bsesubsynth.c:
* bsewaveosc.c: grand fix of channel names. channels have ident,
label and blurb, where label and blurb are subject to i18n. this fixes
the demo song not working in locales!=C due to channel identifiers
being translated. added missing i18n markups.

Thu Feb 26 20:35:51 2004 Tim Janik


* bsepart.c:
* bsewave.c:
* bsetrack.c:
* bseplugin.c:
* bsestorage.c:
* bseparasite.c:
* bsedatapocket.c:
* gslloader-gslwave.c: fixed 64bit integer scanning.

* bserecords.idl: added MAXINT, MININT, MAXNUM and MINNUM constants.

Wed Feb 25 14:43:23 2004 Tim Janik


* bsemain.[hc]: new function bse_main_getpid() which returns a thread id.

* bseserver.c: if possible, slightly drop priorities after engine
initilization, so the BSE thread doesn't get into the way of the sequencer
or synthesis threads.

Wed Feb 25 06:00:15 2004 Tim Janik


* bsescripthelper.c: invoke bsesh with BSE version as
$BSE_PATH_BINARIES/bsesh-$BSE_VERSION.

Wed Feb 25 03:40:31 2004 Tim Janik


* bsemidifile.c (bse_midi_file_setup_song): fix note insertion
(use bse-part-insert-note-auto).

Mon Feb 23 05:13:34 2004 Tim Janik


* bsedefs.h:
* bsemain.[hc]: use bse_gettext() to translate strings, so we can
catch places triggering translations prematurely (before
bindtextdomain() is called), e.g. due to static C++ constructors.

* bsepart.[hc]: support per-channel matches for note-specific events
in bse_part_list_controls().
* bsepart.proc: removed get-range-controls() which is a clone of
list-controls(). added get-channel-controls() to get note-specific
control events.

Sun Feb 22 02:03:51 2004 Stefan Westerfeld


* Makefile.am: Use new sfidl options.

Tue Feb 17 01:48:50 2004 Tim Janik


* bsepart.[hc]:
(bse_part_list_notes):
(bse_part_select_notes):
(bse_part_select_notes_exclusive): added support for channel arguments,
to limit effect of these functions to a specific channel, unless
channel=~0 was passed. adapted callers.

* bserecords.idl: enrich PartNote by a channel field. adapted callers.

Thu Feb 12 10:48:26 2004 Tim Janik


* bsepart.[hc]:
(bse_part_list_notes): renamed from bse_part_list_notes_crossing(),
added an argument include_crossings. fixed possible dups of notes
starting exactly at tick for include_crossings.

Wed Feb 11 01:43:49 2004 Tim Janik


* 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


* 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


* 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


* 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


* 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


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

Tue Jan 27 16:03:01 2004 Tim Janik


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

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

* bsecxxutils.hh: tweak InvalidArgument() exception.

* bsesniffer.cc: implement combined requests.

* bsetype.c: fixed transform function registration.

Mon Jan 26 02:36:07 2004 Tim Janik


* 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.hh: 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


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

Sun Jan 25 05:28:23 2004 Tim Janik


* 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


* bsecxxplugin.hh: 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


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

* bsecxxplugin.hh: 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


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

Fri Jan 23 02:28:58 2004 Tim Janik


* bsecxxplugin.hh: 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


* bsecxxplugin.hh (BSE_CXX_DECLARE_RECORD): implementation fixups.

Tue Jan 20 15:30:44 2004 Tim Janik


* 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.hh: started implementing RECORD type registration.

Tue Jan 20 05:47:04 2004 Tim Janik


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

Tue Jan 20 04:52:45 2004 Stefan Westerfeld


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

Tue Jan 20 03:05:25 2004 Stefan Westerfeld


* 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


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

Mon Jan 19 20:31:28 2004 Stefan Westerfeld


* 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


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

* bsecxxutils.hh: provide assert_ptr_derivation().

* bsecxxvalue.hh: 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


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

Fri Jan 16 19:42:30 2004 Tim Janik


* 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


* 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


* 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


* 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


* 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


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

Sun Jan 4 12:30:30 2004 Tim Janik


* 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


* 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


* 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


* 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


* 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.hh.

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

* bsetype.h: support FBlock pspecs.

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

Sun Dec 28 10:24:29 2003 Tim Janik


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

Thu Dec 25 07:25:51 2003 Tim Janik


* 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


* 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


* bsecxxplugin.hh: 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


* 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


* 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


* 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


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

Wed Dec 17 19:14:11 2003 Tim Janik


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

Tue Dec 16 11:59:43 2003 Tim Janik


* bsecxxplugin.hh: 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


* 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


* 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


* 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


* 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


* 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


* 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


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

Wed Nov 26 22:14:44 2003 Stefan Westerfeld


* bserecords.idl: Proxy is gone.

Wed Nov 26 13:40:11 2003 Stefan Westerfeld


* 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


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

Tue Nov 18 18:51:53 2003 Tim Janik


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

* bseobject.proc: removed.

Sun Nov 16 13:30:00 2003 Christian Neumair


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

Mon Oct 27 22:12:48 2003 Tim Janik


* 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


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

Sun Oct 26 09:38:12 2003 Stefan Westerfeld


* 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


* bsesuper.c: introduce copyright compat property.

Sat Oct 25 02:05:14 2003 Tim Janik


* 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


* *.*: 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


* 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


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

Fri Oct 17 22:05:10 2003 Tim Janik


* 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


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

Tue Oct 14 21:16:44 2003 Tim Janik


* 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


* 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


* 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


* 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


* fixes according to pspec hints->options change.

* bserecords.idl: fixed indentation.

Sat Oct 11 22:10:18 2003 Tim Janik


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

Fri Oct 10 16:47:53 2003 Tim Janik


* 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


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

Fri Oct 10 00:22:03 2003 Tim Janik


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

Thu Oct 9 23:28:10 2003 Tim Janik


* 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


* tests/.cvsignore: Added missing file.

Mon Oct 6 02:55:49 2003 Tim Janik


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

* bse/bsecxxplugin.hh: 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


* bseamplifier.c: fix property defaults.

Sun Oct 5 08:18:12 2003 Tim Janik


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

Sun Oct 5 07:00:40 2003 Tim Janik


* bseutils.[hc]: added balance property utility functions.

* bsetype.h: added balance pspec creator.

Sat Oct 4 04:13:00 2003 Tim Janik


* 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


* 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


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

Fri Oct 3 07:37:37 2003 Tim Janik


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

Sun Sep 21 04:42:33 2003 Tim Janik


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

Tue Sep 9 05:22:07 2003 Tim Janik


* bsecxxutils.hh: 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


* 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


* 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


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

Sun Sep 7 15:45:26 2003 Tim Janik


* 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


* 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


* 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


* 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.hh: 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


* 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.hh: 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


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

Mon Aug 25 20:01:58 2003 Tim Janik


* 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


* 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


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

Fri Aug 22 05:01:14 2003 Tim Janik


* 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


* 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


* 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


* 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


* 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


* 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


* 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


* 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


* gsldatahandle.c (gsl_data_handle_override): fix locking.

Fri Jul 18 06:41:08 2003 Tim Janik


* 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


* 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


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

Tue Jul 15 03:34:24 2003 Tim Janik


* 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


* 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


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

Mon Jul 7 16:42:05 2003 Tim Janik


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

Sat Jul 5 02:49:20 2003 Tim Janik


* 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


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

Tue Jun 24 23:25:54 2003 Tim Janik


* 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


* 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


* 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


* 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


* 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


* 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.