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. 2001-02-07 development-root cuidado-root salto-root time_machine-root * Branches created.