2008-??-?? CLAM 1.2.1 SVN $Revision$ '' * New processings: * ComplexSpectrumInverter: Inverts the phase of a ComplexSpectrum * Resampler: Resamples audio streams using libsamplerate (not stable) * Spherical2CartesianControl: Converts radix,azimut,elevation controls to x,y,z * Fix: NetEditor Windows installer should not install .def and .lib for plugins * Voice2MIDI crosscompiled windows binaries (no installer yet) * Template based processing/plugin generator 2008-02-05 CLAM 1.2.0 'GSoCket Plugged-in release' * SVN Revision: 11171 * Major changes summary: * Integrates GSoC students work. Thanks to Hernan Ordiales Bennet Kolasinsky, Greg Kellum, Andreas Calvo, Roman Goj, Abe Kazemzadeh and Google Inc. * It also integrates work done last month within the Acoustics team on the Barcelona Media center. * CLAM plugins: You can load your own processings and data types in an existing CLAM application such the Network Editor. (GSoC:acalvo) * Windows binaries crosscompile from Linux * NetworkEditor enhancements: * Enhanced online tutorial * Token data types expose a color to show in NetworkEditor * Port tooltips show also the data type * Suitable monitors are available at port context menu * Suitable controlers are available at control context menu or double clicking * The processing is automatically populated with available processings. (GSoC:acalvo) * Dialog to add processings has completion * New spectrogram view (GSoC:bkolasinsky) * Realtime port to some spectral processings and prototypes: * Harmonizer, pitch-discretization and morph (GSoC:hordia) * Chord analysis modularity, configurability and postprocessing improved (GSoC:rgoj) * Anotator enhancements (GSoC:bkolasinsky): * Multiple segmentation and low-level features panes * BarGraph is available as Instant View * Rulers are positioned at round numbers * Rulers have subticks for smaller not numbered divisions * Schema browsers shows Scopes (ie. Frame) as subtrees of their defining attribute (ie. Song::FrameDivision) * First plugins available: * guitardistortion: Cool guitar effects with prototyper interface. (GSoC:hordia) * continuousExcitationSynth: An SMS based synthesizer. (GSoC:gkellum) * speech: Experimental processings for speech synthesis and analysis (GSoC:akazemzadeh) * spacialization: 3D audio processing including * New spectral processings with simplifyied/explicit polar-complex representation, including windowing, fft, ifft, overlap-and-add and representation converters. * Real-time low latency convolution * Grid and polar impulse response database fetcher * Exibition processings to convert p+v format to 5:1, N-Surround and other exibition formats. * Several room databases are available, check the wiki. * Build system: * Windows binaries obtained by crosscompiling from linux * Windows external libs are deployed now as a posix tree * Relying on pkg-config to link dependencies * VisualC bits droped * Installing plugins * OSX uses macported Qt instead of Trolltech binaries 2007-06-07 CLAM 1.1.0 'More eye-candy, please' * SVN Revision: 10216 * New concise task oriented documentation (on the wiki) * Loading of faust (ladspa) modules * FLTK fully dropped * Qt3 based vmqt dropped (some files moved to SMSTools) * '_support' ending for scons configure options removed: with_jack_support, with_ladspa_support, with_osc_support became with_jack, with_ladspa, with_osc * Examples clean up * Realtime port to some processings: * SMSGenderChange, SMSPitchShift, SMSShapeShift 2007-03-20 CLAM 1.0.0 'The Berlin release' * SVN Revision: 9881 * Funtional Ladspa host 2007-03-18 CLAM 0.99.0 'That will be CLAM 1.0 release' * SVN Revision: 9864 * New binary in NetworkEditor/ called OfflinePlayer to batch-process clam network files given an input and output audio file. * Fixes in the modconf to work in suse (thanks Toni) * Updated Fedora Core packaging * PortAudio network player backend: * PortAudio available in all platforms, including Linux. * Network player gets priority boost in Linux. * Discarded OSS API so in linux it uses Alsa (#Closes 200). * Xruns are notified on the console. * Available apis and devices are notified on the console. * Stream is closed and open on network start and stop. * All network players * AudioSink/Sources does the copy on the Network 'Do' instead of an explicit one. * The player just sets the device buffer using the new * XNetworkPlayer::IsWorking to test whether a given NP is available. * Backends uses the framesize set by the backend * TopologyChanged protocol removed (Closes #174). * Flow control * Added a NaiveFlowControl which is less than optimal but it has been developed in a test driven way considering most of the cases PushFlowControl was failing and some others. See the test cases for more info. (Closes #175) * No need to explicitly set the flow control to a network; by default it has a Naive one. Now all CLAM code uses the default. * FFTW3 * Support for FFTW3 as FFTW_fftw3 and IFFTW_fftw3 classes. * FFT and IFFT processings inherits from the faster enabled implementation on the compile options (fftw3, fftw2, oura). * All the FFT implementations including the generic 'FFT' are available to the Processing Factory (and thus in NetEditor). * FFT and IFFT default sizes are set to 1024 instead 0. * Examples folder can be moved arround and build with a local SConstruct * Release automatization: * Version information includes svn revision * Version information is propagated to packages and tarballs * Build scripts take the svn revision from the server if available. * Mac Build: PPC/intel dmg names are selected automatically * Ladpa support: * New class LadspaPluginExplorer * New class LadspaFactory * New class LadspaWrapper * Added experimental HarmonicPeaksGenerator and VowelResonator * SpectralPeakArray: optimizations by not copying certain buffers * Removed XXNetworkPlayer::IsModified/SetModified methods. * Removed Processing::Pre/PostConcreteConfigure and associated state. * Applied eNone patch from Giulio Paci in PhaseManagement (thanks!) * Fix: NullProcessingConfig was duplicated on core and processing * Fix: 'NoneType' error on scons cleaned * CLAM_TEST_DATA environment var is not used any more for tests just the scons option 2007-02-09 CLAM 0.98.0 'Mac is here to stay' * Mac build based mostly on mac ports * MelFilterBank do initialization on Configure instead of Start * CepstralTransform do initialization on Configure instead of Start * Ogg and mp3 are enable by default in mac * Fix: SCons was not generating sonames and linker names for libraries * Fix: Lintian errors cleared * Fix: MultiChannel/MonoAudioFile reader were setting wrongly SetBeginTime * Fltk dropped from default build 2006-12-30 CLAM 0.97.0 'Debian Packages: less is more' * All library debian packages collapsed in one: libclam0 and libclam-dev * Adapted build system to build in macosx. Instructions in http://iua-share.upf.edu/wikis/clam_draft/Mac_OSX_BUILD * Fix: ByteOrder now support mac intel+ppc. Thanks Volker! 2006-12-22 CLAM 0.96.0 'The most stable NetworkEditor ever' * Network takes now the ownership of NetworkPlayer and applications use the Network interface instead NetworkPlayer for Stoping, Playing... * Fix: Networks stop if playing on 'letal' ops such processing add/rm/cfg, and control/port connection/Disconnection. * Fix: Lost control link when a processing were removed * Refactored dupplicated code on Network::AddProcessing overloads * Ligther doxygen (source browser disabled by default) 2006-12-04 CLAM 0.95.0 'California release' * Version information taken from changelog is available for apps. * Graceful loading of network (catchable exception instead aborting) * Using optimized versions (CLAM_func) for math functions * Tonal analysis (chord extraction) moved to the library from the Annotator * Network and NetworkPlayer usability ** OSCEnabledNetwork was removed. Use OSCControlDispatcher and bind it to a plain Network instead. ** Network errors now can be catched by applications ** Diagnosis methods * Most configuration errors are now addressed to user instead to developer * Audio IO ** ExternalAudioSink/Source -> AudioSink/Source ** PortAudio based NetworkPlayer is working again ** Handling properly Jack server disconnections ** On JACK server disconnections the connection state is kept * AudioFile review ** User friendly errors for AudioFile related processings ** AudioFile formats can be configurated ** AudioFileTarget and AudioFileSource instead using AudioFile * Ooura fft size is now enforced to be power of two * Fix: High priority was given to both the processing and gui threads * Fix: Disconnecting processing composites did not cleared lowlevel connections * Small bugfixes and refactorings 2006-06-14 CLAM 0.91.0 'Spectral transformations, annotator, packaging, and desktop integration release' * 30 new spectral transformations * Added Fedora Core packaging * Debian packaging reworked for debian and ubuntu * NSIS setups for windows reworked * Testfarm countinously compiles and runs applications and tests on the supported platforms, Windows, MacOsX and Linux (Ubuntu/Debian/Fedora) * Prototyper and QtPlugin moved to Network Editor tarball * Applications are integrated on the desktop. Icons and menu entries... * Applications tutorials * Applications examples are now installed with the apps * Segmentation classes moved to clam-core * New segmentation class UnsizedSegmentation * New data abstraction EquidistantPointsFunction (An array with units, optional limits and x axis information) * Examples, and tests (Unit/Functional) now compiles with scons 2006-02-07 CLAM 0.90.0 'New scons buildsystem and multiplaform again' * Building and packaging ** New build system based on scons ** Binary libraries ** Standard library installation ** CLAM applications just link against the libraries ** CLAM and all provided applications are working multiplatform (Linux/MacOSX/Windows) ** Easy to use installers for MacOSX, Windows and Linux (Debian) ** Ported to g++ 4.0 * Rappid prototyping infrastructure ** New external-generators/sinks and external-control-senders/receiver classes. *** They glue specific architecture (jack, portaudio, ladspa, vst) ports with a clam network. * New hierarchy of network-players classes, with these (final) classes: ** JACKNetworkPlayer, ** PortAudioNetworkPlayer, ** BlockingNetworkPlayer, * LADSPA Plugins (Linux): A generic plugin that embeds a network. It just needs the path to a valid network xml file. * VST Plugins (Mac/Windows): A generic plugin that embeds a network. It just needs the path to a valid network xml file. * MIDI files ** New classes to read/write standard MIDI files * Qt Visualization Module ** Support for multidisplay plots. ** BPFEditor: multiple BPF allowed ** Faster rendering of plots using buffered pixmaps * QtSMSTools2: New! A total rewrite of SMSTools2 GUI using the Qt toolkit. ** Multidisplay implementation sharing common axis *** Spectrogram (Color,Black&White) *** Improved player: audio and fundamental frequency *** More suitable dialogs to configure projects * NetworkEditor ** New callback audio-driving mode. This allow different modes (specified as command line options) *** Jack client mode (not in Windows) *** PortAudio mode *** Blocking mode * Annotator ** New segment editor: *** Different annotation restrictions depending on the schema. Right now: **** Continuous segmentation (no gap) **** Discontinous segmentation (gaps but not overlaps) *** Consistent dragging *** Tooltips are faster to appear *** Tooltips say just the position of the hovered element instead the cursor position. *** Hovering highlights the limit ** Optimizations on the song switching and on the display ** Inserting and removing segments now has its reflexion on the pool ** Playing the wav and the auralization on different channels. ** Description schema browser ** Now, viable projects can be built from the interface 2005-07-21 CLAM 0.8.0 'Prototyper with streaming SMS transformations' * SMS Transformations on the network editor: ** All SMS Transformations have been refactored in order to work in streaming mode and not only in offline mode. * New Prototyping way: ** Prototyper: Allows to bind a Qt desinger interface to a Network XML definition so you can have an CLAM GUI application up an running without a single line of code. Current features: *** It uses the widget names and classes to Automagically relate widgets to processings, ports and controls. *** Binds sliders, knobs and so to in-controls on the network *** Binds monitoring plots to out-ports on the network *** Binds buttons to play/stop actions on the network * QtPlots add-ons: ** Editable segmentation marks on all the plots ** QtSpectrogram: *** Plot to view sonogram (Color/B&W) ** BPFEditor: *** Editable/auralizable plot (Audio and MIDI support) * Compiler compatibility: ** CLAM and its applications now compiles in GNU g++3.4 (as well as 3.3) * Audio file I/O facilities: ** MP3 I/O: Bug fixed: that prevented XING headers from being used to compute duration ** MP3 I/O: Bug fixed in conversion from milliseconds to seconds ** Vorbis I/O: Feature addition: now the # of samples is computed for Vorbis bitstreams * Memory leak review: ** FFT internal buffer was not freed on destruction * XML related changes: ** Now XmlStorage::Dump does indentation by default. A new optional parameter disables indentation. ** XercesC 2.6 is required in order to pass the tests and be memory leak free (even 2.3 should be enough to compile and run CLAM). ** XML Storage Error Handling (This solves issue #0000022): *** Catchable CLAM::XmlStorageErr excepetions are thrown whenever: **** I/O error happens **** Malformed XML is readed **** Read elements or contents does not match with CLAM objects structure **** CLAM objects detect some semantic constraints. ** XPath (like) navigation (This solves issue #0000045): *** The implementation of XmlStorage::Select allows using: **** XmlStorage::AppendToDocument(object, path, filename) **** XmlStorage::RestoreFromFragment(object, path, istream) **** Using atomic primitives for doing some similar hacks like writing fragments of the XML for an object to disk. ** Alternative XML Backends (LibXml++) *** Unification of the way XmlStorage interfaces the library dependant code. *** LibXml++ Backend implemented. It is planned to be the default backend on future releases but still some work is needed to get the error messages correctly reported. * Network refactoring: ** Published{In|Out}{Controls|Ports} -> {In|Out}{Control|Port}Registry * Descriptors: ** SpectralDescriptors::HighFrequencyCoefficent -> HighFrequencyContent as specified by the original literature. * Other: ** ConnectPorts overloaded to connect free ports (that is not belonging to any processing, normally used for injecting or extracting data) * Build System: ** Changes in order to not abort ./configure script when some library is not found (and not specifyed with the --without-libname option) 2004-11-18 CLAM 0.7.0 'Easier deployment, better plots and Processing Networks' * Processing Ports Infrastructure Complete Rewrite: ** Now effectively works with any datatype (i.e. InPort) ** Shortcut CLAM::ConnectPorts with either ports numbers and names ** Shortcut CLAM::ConnectControls with either control numbers and names ** Underlying data structure for streaming tokens is specified using a Template-Policy *** Default policy is PhantomBuffer: an contiguous-memory circular buffer with some nice feature *** But also usable any STL container ** Internal (implementation) classes hierarchie has been simplified a lot. ** Thoroughly (unit) tested, and stress tested ** Stream class now can be policy-templatized to PhantomBuffer or any STL container ** New ports-linking schema : only out->in (and not out->data or in->data) *** Ports Attach(ProcessingData&) method has been deprecated. *** Please refer to the migration guide and doxygen docs ** New AudioIn/OutPorts. Similar tor In/OutPort but with richer interface ** New feature: In/OutPortPublisher *** A composite port that "publishes" one or more inner ports. *** When linking a port with a publisher it acts like a mediator for its published ports. ** New In/OutPort public interface *** Constructors. Now gets only two parameters, and not the window size anymore *** Size and Hop getters and setters, GetData, Consume, Produce, CanConsume, CanProduce, etc. * SMSAnalysis-Synthesis In Streaming: ** Till this release SMSAnalysis and SMSSynthesis needed a Segment as intermediate data now they can also use ports to process in streaming * NetworkEditor: ** Added SMSAnalysis and SMSSynthesis in the processings factory. But still some problemes needs to be sorted out. * AudioFile IO: ** AudioFile have easier and clearer interface: *** AudioFile::SetHeader is obsolete *** AudioFile::SetLocation is obsolete, instead use: *** AudioFile::OpenExisting *** AudioFile::CreateNew * Processing Interface Clean up: ** Removed Processing inheritance from Component ** Processing::FlattenObjects removed until needed ** Processing::SetPrototypes/UnsetPrototypes removed until needed ** Processing::MayDisableExecution removed until needed ** Processing::DisableExecution removed until needed ** Processing::LostData removed until needed ** Processing::StoreOn/LoadFrom removed until needed ** Processing::composite_begin/end moved to the ProcessingComposite * Low Level Descriptors Revision (Audio, Spectral and SpectralPeaks): ** Full doxygen documentation. ** Formulas revised and corrected. ** Most NaN singularities has ben solved. Check doxygen. ** Unit testing and back-to-back testing for every descriptor. ** Asserts that source data is in linear format ** SpectralDesc Skew/Kurstosis -> MagnitudeSkew MagnitudeKurtosis ** Spectral and Harmonic Tilts removed (Returned very unstable values) * Beta Qt Plots: ** Audio (playable). ** Fundamental (playable). ** Spectrum. ** Spectrum and peaks. ** Sinusoidal tracks. ** Some examples at CLAM/build/Examples/Simple/QtPlots ** Note that these widgets are in the initial development phase. ** Extra requirements: qwt library. * Standard: ** FormatData.hxx removed, also their useless uses ** Vector removed ** QSort removed, use stl's qsort instead * Test Framework: ** Qt testing GUI for Linux (activate USE_QT) ** Infrastructure for reading basic Data (wav,xml) ** Back to back testing infrastructure ** Improvements to the python script to run all tests and apps * Doxygen documentation: ** XML documentation modules added. ** Documentation module on Configurators: Autogenerated Qt/Fltk dialogs to edit DynamicTypes. ** More scatered changes and fixes. * Build System: ** Full rewrite of configure.ac. configure.ac is now generated from a perl-script which does a lot of code-reuse to create a consistent and uniform configure.ac. ** configure generates HAS_ values (in packages.cfg), which is used by srcdeps to make sure USE_ and HAS_ is consistent. Using USE_=$(HAS_ in settings.cfg can be used to make usage conditional. On windows the user should make sure that the build/packages-win.cfg file is reflecting his system ** configure has a new way to present the user with the possibity to disable the use of specific libraries. If the user does not have a specific library, it can tell configure not to use it. The generate HAS_ value will be false, and if a settings.cfg tries to use it, srcdeps will notice it. This allows to compile certain examples that don't use libraries you don't have. * MS Visual support: ** MS Visual 6 is no longer supported. 2004-04-13 CLAM 0.6_1 'qt && Visual 7 support' * General: ** Some memory leaks removed with Valgrind ** Added backward compatibility with gcc 2.95 * Build System: ** Added support for MS Visual 7. Srcdeps now generates .vcproj ** Support for QT library preprocessor steps in linux, mac and windows : visual6 and visual7: *** Moc objects generated automatically from mocable headers. *** Moc objects generated from UIC files. ** Integration of all the platforms code ( linux and mac Makefiles, windows .dsp and .vcproj generated from the same program). * XML: ** Fix: Storing arrays with size 1 crashes ** Fix: IterableAdapter joined array elements when basics * MIDI I/O: ** Added MIDI output ** Added virtual devices for midi-to-text out ** PortMIDI now also works on Linux ** Simplified MIDI input (see documentation) * Descriptors: ** More fixes on SpectralFlatness, LowFrequencyEnergiRelation and Rolloff: *** SpectralFlatness uses log10 instead log *** LowFrequencyEnergiRelation doesn't modify the incoming data *** RollOff uses Energy instead Moment and compares with the square ** Moved to Stats: Tilt, Slope, Flatness * SMSTools: ** Bug fixes related to the logics of menu's options activation/deactivation (related to the state of application). ** Solved a bug that crashed SMSTools when trying to load an XML analysis. 2004-02-18 CLAM 0.6.0 'Audio file formats: Reloaded' * Network Editor: ** Added support for ladspa plugins inside the GUI ** Support to change the name of processings ** Support for new Audio File I/O processings ** Now is possible to know the state of a given processing and the error message (if it exists). * Audio File I/O Support: ** Four new processings available for reading/writing from audio files: *** MonoAudioFileReader/Writer ( single channel reading and writing ) *** MultiChannelAudioFileReader/Writer ( multi channel reading and writing ) ** New AudioFile class. This class models the concept of 'audio file' which has attached attributes as 'Location' ( the path to the file ), 'Header' ( the concrete file header information such as length, samplerate, etc. ) and 'TextDescriptors' (text-based meta-data such as Artist, Title, Album, etc. ) ** New File formats supported: *** Almost any PCM-based audio data storage scheme encoding/decoding is supported through libsndfile ( http://www.zip.com.au/~erikd/libsndfile ) *** Ogg/Vorbis encoding and decoding support *** Mpeg Audio Layer 1/2/3 decoding support ** New Feature: Partial retrieval of textual metadata embedded in files. For now CLAM is just able to extract information such as Artist, Title, Album and Track number. Support for a wider range of textual descriptors extraction will be available soon. *** ID3 metadata frames retrieval from Mpeg bitstreams *** Vorbis Comments retrieval from Vorbis bitstreams MacOS X note: ID3 meta-data extraction only works for MacOS X 10.3 systems and above, since Apple did not include Unicode ( wchar_t ) support in their libstdc++ binary distribution. ** Three new examples showing how to use the new Processing's and the AudioFile class: *** examples/FileInfo_example.cxx *** examples/AudioFileReading_example.cxx *** examples/AudioFileWritiing_example.cxx their build projects can be found on the build/Examples/Simple folder * FFT refactored: ** Removed duplicated code and unused functionality and improved efficiency. * Salto: ** Fix: several potentially dangerous out-of-bounce array accesses in fltk G.interface * Processing Data: ** Documented (doxygen style) that the time unit is miliseconds in Audio, Frame and Segment * Processings: ** AudioFileIn stamps the sample-rate to the written audio * Descriptors: ** AttackTime is based on the envelope ** Fix: LogAttackTime recalculated the AttackTime always ** New AudioDescriptors: Decrease ** New SpectralDescriptors: Slope and Spread ** Functional tests added ** Fixes and precission enhancements * Tests: ** All unit and functional tests have been merged in only two executables (settings.cfg), namely: AllUnitTests and AllFunctionalTests 2004-01-15 CLAM 0.5.7 'Tomorrow MacOsX patch' * SMSTools: ** Fix: Closing window crashed on MacOsX. ** Fix: Storing output global sound stored sinusoidal in previous release * Base: ** [Experimental] Support for Polymorphic attributes in DT * XML: ** Abstract types thru Polymorphic attributes ** XMLStaticAdapter is deprecated * Network Editor: ** Better layout on processing configuration dialogs ** Fix: integer fiels on processing configuration dialogs were limited to 99. Now it uses std::numeric_limits ** Fix: Network serialization loading was broken ** Some processings still in draft moved to example files * Simple Examples: ** FlowControlExamples tree has been moved to draft since simpler and more concrete examples now exists: examples/NetworkUsage_example and examples/PortsAndControlsUsageExample/ ** Examples have been ported to use the XML static XMLStorage methods ** Some broken examples have been fixed, including compiling_against_clam and SpectralDelay. * Windows Build System: ** Updated .dsp Visual 6 projects that were outdated in previous release ** Fixed some minor problems in some settings.cfg files * Salto: ** Fix: Did not compile in previous release. Example in general is still outdated though. 2004-01-12 CLAM 0.5_6 'XML and Ladspa rewrite' * XML: ** Both, basic XMLStorage usage interface and customization interface have changed. Check 'Migration Guidelines' on the documentation and update your code. ** Ported to XercesC 2.3. Library dependant code is more isolated and structured so libxml or expat ports will be easy. ** Atomical operations are available so partial loading or document updating is now more feasible. ** One statement calls using static methods XMLStorage::Dump and XMLStorage::Restore ** Trapable error notification using exceptions. ** API Change: XMLStorage::Store and XMLStorage::Load receives a const-ref and a ref to adapters instead a pointer ** API Change: Component::StoreOn is now a const method. ** Scoped XML: [Experimental] allows (write only) fast XML generation without having to define CLAM data. ** Cppunit Tested and general code clean up * Network Editor: ** Smarter conections display (control conection with vertical tangent and that wires always goes outward the processing) ** Refactoring of the application structure. ** Bug fixing. ** Created Unit Tests for the entire application. * Processing Objects: ** GetName has been removed from all CLAM processing configurations because it was not really useful. ** Simplified Processing interface related to ports and controls. * Error handling: ** Failed assertions dump a backtrace in GNU/Linux. * SMSTools: ** Fix: SDIF storage was unconfigured on release mode. ** fixed compilation with g++ 2.95.4 (Debian Woody), fixed SMS Tools build * Descriptors: ** Added descriptors to compute on a whole segment. ** Added basic arithmetic operators to descriptors. ** General debugging. * LADSPA: ** Rewrited and simplified support to create LADSPA plugins using CLAM. ** New support for using LADSPA plugins as CLAM Processings. * Build system: ** Fix: some fltk-config nagging options removed on aclocal 2003-11-26 CLAM 0.5.5 * General: ** Code cleanup * Visualization Module: ** Bug that provoked Sinusoidal tracks to pop has been fixed ** Bug that prevented some code to compile fixed * Examples/NetworkEditor: ** Bug Fixing * Processing/Analysis: ** DescriptorsComputer added: now there is the possibility of computing statistics for Spectrums, SpectralPeakArrays, Frames, etc * MacOSX Support: ** build system changes ** RtAudio for Audio I/O * Audio I/O: ** A generic RtAAudioDevice for all platforms (includes some platform specific workarounds) 2003-11-06 CLAM 0.5.4 * Build system: ** Added 'Compiling_against_CLAM_example' subdir to the build dir. It contains an out-of-the-box example of how a CLAM external aplication can compile against the library. It contains a tutorial in its 'readme.html' file. Since now it was a separated tarball available in the web. Now integrated in the CLAM dir tree. ** Configuration: *** Use fltk-config to get the paths to fltk includes/paths *** QTDIR support ** Added rules to pre-process headers with moc (QT) ** Add .dsp files for many CLAM programs ** Fixed many settings.cfg files under Windows ** srcdeps: *** Run srcdeps when settings.cfg has changed *** Don't look through xerces include directories recursively *** Performance improvements *** Bugfixes *** Generate from empty dsp * Standard/Misc: ** Text: Added to the standard as substitution for std::string on those case when we need multiword strings on XML. (XML loads only one word for std::strings) ** BPF: Modified BPFTmpl<>::Insert() (both overloads) to return the index at which the element was actually inserted (i.e. the inserted element's index). ** CLAMMath: Fixed a bug in Round() and Chop() which caused the fpu control word to be changed when calling these functions (but only in debug build). ** Moved some includes from hxx's to cxx's and doing forward decl to improve compilation speed ** Working towards supporting MacOSX/PPC (including byte order issues) ** Added a FileMIDIDevice ** SoundFileIO improvements ( support for more sample formats added, better errors) ** Declare template specializations in header inline ( gcc 3.x compatibility issue ) * ProcessingData: ** SpectralPeakArray ProcessingData; when adding an IndexArray to an already existing SpectralPeakArray and calling InitIndices(), the IndexArray would be allocated to the actual number of elements in the other arrays, not their allocated size (i.e. the maximum elements they can hold without reallocating). ** Fundamental ProcessingData; removed two Dynamic Type attributes which were used to keep track of the size and allocated size (max size) of the Fundamental. These values are now derived from either of the arrays (freq/err). Also calling SetnCandidates() or SetnMaxCandidates() now actually affects the arrays instead of merely setting the size fields. This is more consistent with SpectralPeakArray for instance. ** Audio ProcessingData: bug fixed in GetAudioChunk method that left extracted chunks with uninitialized Sample Rate and Begin Time ** Spectrum Conversions: Added a method called Complex2LogMagPhase() which efficiently converts a complex spectrum to a log. magnitude (i.e. in dB's)/phase spectrum. * Processing: ** SMSAnalysis: fixed a bug that lead to divisions by zero * FlowControl: ** Added interface to network in order to connect/disconnect controls ** Serialization of network, including connections (ports/controls) and processing configurations. * Testing: ** CLAMTEST_ASSERT_XML_EQUAL to compare XML canonically ** Helpfull colors for finding differences on expected and obtained strings ** Added CppUnit workspace ** Added a shell-script to generate the dsp's. ** Created a project for all functional tests ** Several tests moved to "SupervisedTests" ** Visualization (Plots) ** XMLAdapters ** Threading ** PersistenceThroughDTs ** SMS Application FunctionalTests ** Morphing ** Several processing tests ** Network Serialization ** Text ** ProcessingController ** ControlAdapter ** Fl_FundFreq (supervised) * SMS: ** Removed MaxSines from peak detection configuration and replaced it with the much more useful MaxFreq ** Several bugfixes and code cleanups ** New transformations * New examples: ** FilePlayback ** ProcessingLifeCycle ** Persistence_Throught_DTs ** StereoToMonoFile * Examples - NetworkEditor ** Improved GUI ** Controls ** Configuration of processings from interface. ** Serialization 2003-10-4 CLAM 0.5.3 'Starting the new course' * Build system: ** Bug fix in srcdeps: uninitialized var in emptydsp.c ** Fix: 'configure' test for local sandbox fftw in linux, used wrong parameters order ** Added support to fltk-config in order to get fltk paths and flags ** Changed "release" flag compilation in gcc from -O6 to -O3 * Visualization Module: ** Next generation VM Plots available. Check the examples for indications on how to use them. ** SMS Tools widgets for Spectrum, Audio, etc. promoted to VM standard presentations. * Processing - General: ** Many ugly warnings removed ** CleanTracksConfig FreqDev parameter semantics changed to match the meaning of SinTrackingConfig FreqDev. * Processing - Analysis: ** New LPC_AutoCorrelation Processing object added to spectral analysis Processings set ** The SpectralPeakDetect Processing class now no longer alters it's given ProcessingData if it's different than expected, but instead checks it using an assert. Also, a bug was fixed which tried to use an uninitialized index variable when setting the values for the last spectral peak. ** The FFT_rfftw and FFT_ooura Processings were missing a return on SetPrototypes() which only generated a compiler error when CLAM_ASSERT was disabled. * Processing - Synthesis: ** The IFFT_rfftw Processing was missing a return on SetPrototypes() which only generated a compiler error when CLAM_ASSERT was disabled. * Processing - AudioFileIO: ** AudioFileIn should now be capable of loading PCM encoded files with sample formats of 8, 16, 24 or 32 bits/sample * ProcessingData - BasicProcessing: ** New LPModel (Linear Predicitve Model) ProcessingData object added to basic Processing data objects. Allows conversions to CLAM::Spectrum. * Standard: ** Bug fixed in BPF that caused applications to crash when trying to use the Spline value interpolation method * Examples - Miscellaneous: ** Usage example of FDFilterGen (Frequency Domain Filter Generator ) Processing object added to examples/ folder ** Usage example of FFT_rfftw Processing object updated ** Usage example of LPC_AutoCorrelation Processing object added to examples/ ** Example explaining how to play a given .wav file added to examples/ ** Example about Segment and SDIF I/O added to examples/ ** Examples explaining how to use new VM Plots added to examples/ 2003-07-25 CLAM 0.5.2 'Processing bug-fixing, SMSTools update' * Processing - Transformation - SMS: ** SMSMorph was not working by a side-effect of the introduction of the SMS Time Stretch. ** SMSMorph: All controls except Residual Spectral Shape are fully functional. * Processing - Analysis: ** SpectralPeakDetect infinite loop bug fixed. ** Added New Ooura FFT algorithm. * Standard: ** Stack, Queue and String removed. Use the STL ones instead. ** Obsoleted DescStats removed. * BuildSystem: ** Library generation for both Linux and Windows. (Still not CLAM binaries but user libraries) * Examples - Miscellaneous: ** AudioFileIO example, explaining how to load and save a sound file is available * SMSTools - v.0.1.1 ** GUI - Score Editor: *** UI screen texts tweaked so they result more informative *** Added new and improved SMS Morph transformation control widget, allowing user a finer grain level of control on that SMS transformation. Also SMS Morph transformation description has been completely rewritten. *** Bug fixed: under some circumstances configuration widgets might be unadvertendly duplicated, leading to invalid transformation scores *** Editor widget layout tweaked a bit to make bigger the screen area devoted to transformation parameters edition 2003-07-03 CLAM 0.5.1 'SMSTools update and Mac compilation issues' * Examples - SMS: ** Improved stability and performance. ** Fixed a few bugs in how some configurations were handled ** Removed some useless fields from configuration i.e. PhaseManagementType and changed AnalysisMaxSines for AnalysisPeakDetectMaxFrequency. ** Transformations Configurators: graphical widget for editing configurations. ** New view added (fundamental) ** SMSMorph transformation is now usable. ** SMSTime stretch is also usable. ** SMSEdu (from amora's career final project project) available as 'draft'. * Examples - Misc: ** NetworkEditor (from xrubio's career final project) available on 'examples' * Processing - All: ** Configs has been separated from their processings in a separate header to lower memory usage during SMSTools compilation in Mac. * Processing - Analysis: ** Spectral peak detect does not have MaxPeaks as a configurations parameter. Instead, you may indicate the maximum peak frequency you want to detect with MaxFreq. * Processing - Transformation -SMS: ** SMSTransformation chain is now able to acknowledge SMSTransformations that do not process inplace and have different processing rate. * Testing: ** Some more test has been moved to cppunit framework * Doxygen: ** Few doxygen inline documentation fixes * BuildSystem: ** Library generation under Linux available (still not for a CLAM lib but for generating user libraries) 2003-06-11 CLAM 0.5.0 'flashing new build system and SMSTools' * Build system: ** New flashing build system, fast, crossplatform and easy to use ** Configuration file for each binary is shared between platforms ** Automatic detection of binaries dependencies ** Automatic generation of dsp's and make dependencies ** See the documentation for more details ** Depends on FLTK 1.1.3 instead 1.0.X * Processing - All: ** Concreteconfigure should asserts false instead throwing bad_cast exceptions when a wrong type of configuration is provided. ** Provided a helper template function 'CopyAsConcreteConfig()' to be used in ConcreteConfigure instead using slow dynamic_cast's. ** Most Processing in CLAM adapted to use 'CopyAsConcreteConfig'. * Processing - Generator: ** Oscillator had a heavy compilation dependency since it used AudioManager for initializing sample-rate. Now it doesn't (uses 44100 as default) * Processing - Analysis and Synthesis: ** SMSAnalysis uses a StreamBuffer with one write region and two read regions ** SpectralAnalysis does not have an internal CircularBuffer anymore ** SpectralSynthesis does not have OverlapAdd as an internal Processing anymore ** Now SMSSynthesis has three OverlapAdd Processings for each component: global, sinusoidal and residual. ** OverlapAdd now uses a StreamBuffer with one WriteRegion, one AddRegion and one ReadRegion. ** CleanTracks is much more faster, (and then usable) * Flow - Network & FlowControl: ** New Network and FlowControls classes that works quite together: Network manages processings ownership, nodes, gives simple interface for stablishing processing topologies. FlowControls gets the topology from the associated network and does its processing-firing scheadule. The scheaduling algorithm is reimplementable now we have a pull-scheadule implementation ** Limitation: only tested for fixed buffer size. * Flow - Nodes: ** New pure virtual interface for attaching ports and traversing processings ** Some refactoring simplifying checking logic. Further refactoring in progress ** A new AddStreamRegion has been introduced (used for overlap and add). ** StreamRegions can be now used using center position logic. ** StreamRegions belonging to a StreamBuffer are now automatically initialized so the center time is zero and the first half of the biggest read region is already written with zeros. ** Limitation: Do using ports (supervised mode) only tested with fixed size buffers. * Factory: ** Added a general purpose factory which is templatized by the abstract product (returned type). Nested class Registrator helps registering concrete classes to the factory. * Standard: ** Added the Filename type to be used in configurations instead of std::string. Configurators detect them and use a suited widget. ** Flags: Flags derived classes should define the copy constructors explicitly. One parameter template constructors is not enough (it never was) ** Array: debugged the copy constructor when array does not own memory and introduced a CopyChunk method, similar to GiveChunk but with memory copying. * DynamicTypes: ** Fix: Definition of DynamicTypes on foreign namespaces leaded to compilation problems if you don't use the ugly 'using namespace CLAM;'. ** Fix: dynamic type self-assignation doesn't modify the object. * Examples - SMS (old AnalysisSynthesisExample): ** FlowControlExamples. Gives examples of use of networks and flow-control. ** Renamed as SMS. GUI is now SMSTools. ** Applies chained SMS transformations ** Menu reorganization ** New views: sinusoidal tracks, spectrum & peaks ** Frame navigator ** Fixes and performance enhancements * Examples - Other: ** Fix: The Tutorial4 didn't compile (used Complex in an old fashioned way). * XML: ** New method XMLStorage::UseIndentation to enable pretty XML formatting ** Obsoleted constructor receiving the root tag as parameter ** Obsoleted _restoreFrom and dumpOn, use Dump and Restore instead * Visualization Module: ** Major rework in several areas: * View concept has now been mapped into two different classes, ModelAdapter's whose mission is to wrap Core CLAM objects so they can have Visualization Module components attached, and ModelController's whose mission consists in allowing Visualization Module components to be controlled indirectly by the user from the GUI. From now on VM interface will be kept stable ( at least until CLAM 1.0 ) * Presentation semantics are preserved, but their nature of widgets is emphasized in several ways * Several new graphic representations of DSP concepts such as the sinusoidal tracks * OpenGL data renderers optimized and debugged * Old CbLib interface deprecated in favor of libSigSlot, CLAM own implementation of the C++ idiom of Signals & Slots * New plot's substitute the functionality offered by old snapshots * Most of VM code is now documented with Doxygen comments * Several new FLTK widgets, such as the Fl_Axis, Fl_SmartTile, etc. ** Configurators: New type suported: 'Filename' ** 'Formal' documentation will be soon made publicly available 2003-03-05 CLAM 0.4.2 'Cuidado merge update' * General ** Most classes ported to the GetClassName contsness * Processing - Base: ** TopLevelProcessing::GetInstance() returns a pointer instead a reference * Processings - Generators: ** Added AbleToExecute in Generator::Do * Processings - Spectral: ** Added Gaussian window to WindowGenerator ** Removed Synth window to WindowGenerator (not used) ** Added Maximizer Normalization to WindowGenerator * Processing - Transformation: ** Normalization moved from examples to src/Processing/Transformations ** Added SpectralEnvelopeApply, FDCombFilter, LPC, Levinstong_Durbin and AutocorrelationEvaluator ** SMS transformations added and refactored: SMSPitchShift, SMSFreqShift, and SMSOddEvenHarmonicRatio. * Processing - Analysis: ** SpectralEnvelopeExtract deprecates ExpectralEnvelopeExtractor * Processing - ArithOps: ** Fix: BinOps threw 'this' (the processing) on error instead exceptions ** Some concrete BinOps have Personalized names for the class ** Some concrete BinOps have Concrete Configuration alias (You can use AudioAdderConfig instead BinaryAudioOp < Add > ) * Processing Data: ** Added Correlation * Standard: ** TemplateCircularBuffer obsoleted by CircularBuffer * Signal-Slot Mechanims: ** CallbackHandler is obsolete * Examples ** ControlArrayExample added ** FlowControlExamples added ** LPC_Example added ** AutocorrelationExample added * AnalysisSynthesis example: ** Batch processing on Windows ** Removed patented icon formats (aka Gif) ** Added Spectrum View ** Added Signal/Slot facilities to coordinate Spectrum and Frame marker ** Added Transformations ** Lot of fixes * Visualization: ** Removed: FLDisplay, FLMultiDisplay, FLDisplayArray and CUIDADO_Snapshots ** Added new custom FLTK widgets: Fl_ZoomSlider and Fl_Range ** libsigslot added * FLTKConfigurator: ** Uses FL_Pack & FL_Scroll for managing the widgets position * AudioBrowser: ** New class added, derived from AudioPresentation, that includes a GLPortSigSlot and capabilities to get its Signals and its Slots. * GLPortSigSlot: ** New class added, derived from GLPort, that includes Signals and Slots, and the methods to work with them, as well as an overlay that draws the Frame marker. * MSVisualC++ build system ** Changed extended.c to extended.cxx. Used by Tools/AudioFileIO/AIFFFileIO ** CLAM_Windows.hxx used instead windows.h to work arraund some nasty defines * SpectralDelay ** QT dependencies removed from the .dsp. That includes build configurations and .cxx files. * Tests: ** New cppunit based infraestructure enabled and some tests ported ** Better DynamicType tests ** Better (non-cppunit) XMLAdapters tests * Misc: ** Modified boost::dir_it added as external included library (Only works for Windows... by now) 2003-01-23 CLAM 0.4.1 'Analysis Synthesis debuggin' * General: ** Fix: Component::GetClassName has changed the signature to const (#0111) ** GetClassName gets pure virtual on Component to reveal misredeclarations * Unix build system: ** Better support for external projects ** $(CLAM_PATH)/ prefix needs to be added on for each filename on '.files' files * Spectral Analysis: ** Fix: WindowGenerator Enums symbols had illegal spaces on their inside * AnalysisSynthesisExampleBase: ** default HopSize is now computed from residual window size ** SynthHopSize has disappeared: only frameSize is used (affects also SMSAnalysisSynthesisConfig.hxx) ** Max number of sines of Peak Detect and SineTracking are now configured using configuration value * Audio: ** GetAudioChunk now allows to ask for a chunk with begin time beyond the original audio limits. It just returns zeros but configures the chunk if necessary. * SMSAnalysisConfig: ** Buffer Size of both spectral analysis (sinusoidal and residual) is configured after the largest window size (this condition is necessary for handling different window sizes in both components). * SpectralPeakDetect: ** Added a condition so the loop breaks whenever we have more peaks than those indicated in MaxPeaks (Note: here the algorithm should be changed to decide what are the n best peaks, not the n first peaks: TODO) * SMSAnalysis: ** Sample rate was not correctly initialized under some conditions 2002-12-10 'Zero padding move' * Analysis Synthesis example: ** Removed useless synthesis zero padding factor ** Fixed some other bugs related to zero padding ** Did a little modification in the GUI so Audio displays are closed when editing configuration 2002-11-26 CLAM 0.4.0-rel 'Fly examples, fly to seattle' release * General: ** Directory reorganization ** CLAM_WARNING macros with customizable behaviour ** New integrated examples: Salto and Rappid * AnalisysSysthesis: ** Major rework * SpectralDelay: ** Stability and performance enhancements ** New filter control interface * Dynamic Types: ** Attribute visitors * Standard: ** Enum method to get the symbol mapping ** Added TabFunct to deal with precalculed function tables * SDIF: ** Added SDIF support for storing analysis result in a binary format * Visualization Module( GUI ) ** Automatic user interface generation for editing configurations ** A lot of bug fixes (see Mantis) * XML: ** Now a given order between sibling xml elements is always required to boost the performance a little ** Multiple XML implementations can be selected (currently XercesC++ and Gnome-libxml) ** DOMPrint is not used anymore ** XMLStorage internal refactoring to improve mantainability, clearness and future improvements ** Fix: Flags has implementation for Load (#47) ** Fix: XMLxxxAdapter constructor gets const C strings as parameters (#67) ** Fix: Non present optional elements don't break the XML loading ** Array and Lists uses the aggregated class name for subelements * Spectral processing ** PeakDetect renamed as SpectralPeakDetect * Time Domain Processing: ** AudioProduct is no more, use AudioMultiplier instead * LADSPA ** Added support for writing LASDPA plug-ins * Examples ** The following examples are now running and fairly debugged: SALTO, AnalysisSynthesis, SpectralDelay and Rappid * Unix build system ** Selective clean ** Include paths not shown on the command line ** Fix: FFTW_HEADER is not substituted bug * Windows build system ** Workspaces reorganization 2002-04-26 CLAM 0.3.0-rel * General: ** CLAM code is now released under GPL license. ** MTG namespace becomes CLAM namespace ** All library macros have 'CLAM_' as prefix ** PARANOID support has been dropped. ** New error handling macros. ** More tests and examples * Dynamic Types: ** New DT macros ** AddAll, RemoveAll ** User init-methods: DefaultInit, CopyInit. Macro-expanded-init: MandatoryInit ** InformAll, all dyn attributes are informed at construction time. ** SetPreallocateAllAttributes, to enhance time performance vs space performance. * Basic Types: ** TypeInfo, a template class to get static information from a type. ** Complex, Polar and Point templates, have default template parameters. ** Point works with only one template parameter or two. ** Complex<>, Polar<> and Point<> have TypeInfo for TData instance ** BPF now allows setting the lateral derivatives. ** Array initializes numeric data to zero again. * Processing Data classes ** Most ProcessingDataConfig classes have been removed, and their attirbutes are now in the processing data classes. * Processing classes ** Completed "EnvelopeExtractor", which calculates audio envelopes. ** Completed "EnvelopeModulator" class, which applies envelopes to audio. ** New MIDI input class. * XML: ** Dump and Restore deprecates dumpOn and restoreFrom ** Dump and Restore requires using the default XMLStorage constructor ** XML Load for any DynamicType using the new macros ** XML Load for Arrays, BPFs... ** Some XML Store formats changed to allow Loading: Array, BPF, * Documentation ** The documentation has been updated with all the changes in the library. * Visualization Module( GUI ) ** Major reworking of most of GUI classes ** Model-View-Presentation Architecture introduced ** Automatic Generic Snapshot Generation first attempt. It works for sure for Spectrum's, Audio's and Segment's. ** New GUI folder organisation: now it contains several subfolders *** src/GUI/Core - Visualization Module Core Classes *** src/GUI/GL - OpenGL renderers *** src/GUI/View - Set of actually implemented System Views ( Views Processings and PDs offered by CLAM ) *** src/GUI/Presentation - Set of presentations for representing standard CLAM concepts ( Processing's and PDs ) *** src/GUI/Widget - Some custom widgets, as well as wrappers for different Toolkits *** src/GUI/Util - Miscellaneous stuff ** Some old snapshots have been eliminated and is a TODO to port them to the new interface * Unix build system ** New configure arguments to set some compilation flags. ** External library dependencies can be tuned with autoconf. * Windows Build system: ** More reliable projects have been provided ** Tests projects now share .obj files between them, thus making faster the build process 2002-04-19 CLAM 0.2.2-rel * DynamicType class: ** Dynamic type accessor checks are now only done in debug mode. * Spectrum class: ** Removed again the old kludge for BPF self-references, and a related memory leak. ** Updated obsolete assertion condition macros. ** Fixed bug in SetType/Configure logic. * Audio class: ** Added silence initializations. ** Added optimisation flag to chunk getters. ** Added chunk setters. * AudioFile classes ** New configuration fields: SampleRate and Channels. ** Both mono and stereo Do() methods are now available. ** Improved error handling. * Array class: ** GetPtr has now a pure-const and a non-const versions. ** Fixed the STL implementation so that it compiles again. ** Implementing stream operators for your objects is no more needed if you don't want to use XML. * BPF class: ** Fixed a couple of initialization bugs. * Updated the documentation index with a new reference. * Time machine project: ** Added spectral analysis and synthesis related classes. * Build system: ** Added some VisualStudio projects for new tests. ** _DEBUG flag is now set by default in unix. * Documentation: ** Added Flow Control and Nodes design documents. ** Added doc about binary libraries in CVS. ** Updated versions of the Documentation index, the ErrorHandling document and the User tutorial. 2002-02-27 CLAM 0.2.1-rel * Array class: ** Changed the Resize/SetSize semantics, fixing some remaining bugs. This has important consequences: *** Order is now important! Do Resize() first, then SetSize(). *** You need to do SetSize() with a proper value before trying to access an element in the array. ** Added a STL based implementation (_MTG_USE_STL_ARRAY flag) ** Empty arrays do not dump an "Empty" string when Storing. ** Improved the tests. * FFT_rfftw/IFFT_rfftw classes: ** Fixed memory leak in destructors. * Audio, Spectrum, WindowGenerator, BPF, TestSpectrum, Envelope, EnvelopeExtractor, TestSpectrum ** Fixed Array SetSize/Resize calls order. * Assertion and Error classes and functions, in files Assert.hxx, Assert.cxx, Err.hxx, Err.cxx: ** C string arguments are now const, fixing compilation errors. * DynamicType: ** Fixed memory leak in destructor. * XMLArrayAdapter and XMLAdapter classes: ** Removed the extraction operator. This temporarily fixes some compilation errors. * Unix build system: ** Added automatic make tests target. 2002-02-20 * Array class: ** Fixed bug which caused data corruption when two consecutive Resizes with the same argument where called. ** Fixed wrong InsertElement initialization when mInitElems flags is false * SpectralPeak class: ** Fixed wrong REGISTER_NUM_ATTRIBUTES which caused dynamic type inconsistencies. * Updated the GUI Snapshot code. 2002-02-19 CLAM 0.2.0-rel * Array class: ** Fixed bug in memory reallocation and movement. ** Added speciiallization macro for fast implementation. ** TestArray is now an autotest. * Audio class: ** Fixed size modification bug (Thx, Gunter!). * Segment class: ** Fixed lost references bug (replacing Array with List) * Spectrum class: ** Removed a performance bottleneck in the data synchronization routines. * AudioIO classes ** Some more error condition checks. ** Added underrun/overrun recovery mechanism. * List class ** It is now tested and working. * Changes in the Documentation: ** Updated doxygen generation configuration. ** Updated coding recomendations. * Other: ** Fixed minor compilation problems in several source files. ** Fixed some missing binary dependencies in the UNIX build system.