CurrentIteration: 14 // ------------------------------------------------------------------------- // Stories // ------------------------------------------------------------------------- // ------------------------------------------------------------------ // stories to be planned // ------------------------------------------------------------------- * Release 0.90 library and the main 4 apps Iteration: 14 Estimation: 8 points Progress: 100% Quality: 70% * New web Totally reworked web, and new location http:\\clam.iua.upf.edu Iteration: 14 Estimation: 10 points Progress: 100% Quality: 10% * Compile the 4 clam apps (BUILD SYSTEM) Define resource locations Iteration: 14 Estimation: 1 points Progress: 100% Quality: 85% * Adapt runTests.py to the new BS (BUILD SYSTEM) Iteration: 14 Estimation: 1 points Progress: 100% Quality: 70% * liboscpack debian package (BUILD SYSTEM) Iteration: 14 Estimation: 1 points Progress: 100% Quality: 70% * clam debian packages (BUILD SYSTEM) Iteration: 14 Estimation: 1 points Progress: 100% Quality: 70% * 2 documents : (BUILD SYSTEM) - How to compile libs and apps from the tar.gz's - Simple example (tutorial) compiling against installed binaries Iteration: 14 Estimation: 1 points Progress: 100% Quality: 100% * Test in a non-debian linux (BUILD SYSTEM) Iteration: 14 Estimation: 1 points Progress: 20% Quality: 0% * Mac OSX port (BUILD SYSTEM) Iteration: 14 Estimation: 1 points Progress: 100% Quality: 100% * Prepare ICMC Demo - Look for efficiency traps with valgrind Iteration: 14 Estimation: 1 points Progress: 100% Quality: 50% * Jackify Prototyper - With hardcoded clam ports. Iteration: 14 Estimation: 1 points Progress: 100% Quality: 100% * Jackify NetworkEditor - Make network Editor to use the NetworkHost (Player) class Iteration: 14 Estimation: 1 points Progress: 100% Quality: 100% * Jack support in the build-system Iteration: 14 Estimation: 1 points Progress: 100% Quality: 100% * Code clean of #if USE_OSC and #if USE_JACK Iteration: 14 Estimation: 1 points Progress: 0% Quality: 0% * Real-time time-stretch Iteration: 14 Estimation: 2 points Progress: 0% Quality: 0% // ------------------------------------------------------------------ // done stories // ------------------------------------------------------------------ * Release 0.8 Prepare the NetEdit release Iteration: 13 Estimation: 3 point Progress: 100% Quality: 80% * NetEdit plots Enhance efficiency and functionality Iteration: 13 Estimation: 3 point Progress: 100% Quality: 70% * NetEdit synth Prepare NeteEdit synth paches to use with midi keyboard Iteration: 13 Estimation: 1 point Progress: 50% Quality: 60% * Jackify Network Make NetEditor Jack enabled Iteration: 13 Estimation: 3 point Progress: 5% Quality: 80% * Enhance sms transformations Make them sound better and solve efficiency issues Iteration: 13 Estimation: 3 point Progress: 20% Quality: 20% * Fix SMSTools (timestreach) Fix timestreach and maybe morph Iteration: 13 Estimation: 3 point Progress: 20% Quality: 40% * Annotator 0.1 Release tool for annotating descriptors to an audio file - Enhance the song loading process -- Convert textual format to XML using CLAM infrastructure. -- Remove initial dialog and add menu items --- Load Project (First simply a bunch of songs) --- Insert song into project --- Save project - Define a HLDescriptorScheme -- List of descriptors names + type - Load HLDescriptorScheme and init widgets - Add HLDescriptors to Pool - Unify LLD and HLD in a single scheme - Add menu items for loading scheme + descriptors -- Remove the Analysis items - Add segmentation marks to Pool (ask David) - Add everything to a single Project file: -- List of Song+Scheme+Pool - Save results of the editing process - Device a way in which sound files don't have to be loade every time Iteration: 13 Estimation: 3 point Progress: 100% Quality: 80% * Testing and fixing port automatic tests to windows - porting th auto-build script - check tests -- unit tests -- functional tests - check examples -- simple - SMSTools testing - Fix open bugs - run nightly tests in both linux and windows Iteration: 12 Estimation: 3 point Progress: 100% Quality: 80% * Migration Guide to CLAM 0.7 prepare documentation for release 0.7 - low level descriptors - processing constructors - ports-linking interface - others? Iteration: 12 Estimation: 2 point Progress: 100% Quality: 50% * Release 0.7 release the long expected major release - update changelog - merge cvs devel branch - update scripts for out-of-clam examples - generate doxygen -- generate devel doxygen Iteration: 12 Estimation: 1 point Progress: 100% Quality: 50% * Autoconf - merge .acu files, configure, srcdeps integration - test macOSX Iteration: 12 Estimation: 1 point Progress: 100% Quality: 70% * Review general doc now there are several non-updated parts Iteration: 12 Estimation: 3 point Progress: 100% Quality: 50% * Moving Descriptors pool from draft to public Make public the new description extraction system developed on the draft folder. http://www.iua.upf.es/mtg/clam/devel/doc/descriptors/Descriptors.html - Clean up descriptors binders - Providing XML input for the pool - Renaming classes and files - Doxigenize it - Move th files to src/Data/Descriptors/Pool - Compile and test on Windows - Regenerate doxygen on devel - Move the tests to the test folder - Move the test data files to the CLAM-TestData Iteration: 12 Estimation: 3 pt Progress: 100% Quality: 80% * ISMIR pseudo-story development team was busy in ISMIR conference related things Iteration: 11 Estimation: 15 points Progress: 100% Quality: 100% * Pseudo-story: CLAM devel team on hollidays Note the quality of implementation of this story. Iteration: 9 Estimation: 10 point Progress: 100% Quality: 100% * Network Editor saving widgets positions Very conveninent when you are working with a lot of processings in NetworkEditor - small refactoring in presentations - collect display positions - store / load xml data - move procs with loaded positions - new element in the network xml doc Iteration: 8 Estimation: 2 point Progress: 0% Quality: 0% * SMSAnalysis-Synthesis in streaming Perform the process without the SMSBase - pass functional tests - fix broken test in SMSBase (configs with bad filename) - complete publishers tests (constructors-destructors) - little refactoring of An/Syn tests Iteration: 8 Estimation: 1 point Progress: 70% Quality: 60% * Rythmic wrap up - offset detection extraction from OnsetDetector - xavi wants a diagram - research crash with big encoded files Iteration: 8 Estimation: 3 point Progress: 20% Quality: 40% * Supporting SIMAC scientific team - explain testing, doxygen - integrate scientific changes - random support Iteration: 8 Estimation: 3 point Progress: 60% Quality: 45% * Revision of low-level descriptors - revise statistics on basic proc data - "dead descriptors" clean up - setup testing framework for -- spectrum -- spectrum peaks Iteration: 8 Estimation: 3 point Progress: 100% Quality: 100% * Sumarization extractor (Descriptors) - access to rang - indirection and size - refactor hooks Iteration: 7 Estimation: 2 points Progress: 100% Quality: 90% * 1 to 1 extractor in same context (Descriptors) - hooks -- read only -- write -- iteration - extractor Iteration: 7 Estimation: 2 points Progress: 100% Quality: 90% * Test (back-to-back) SMSSynthesis using ports - set xml test similar to SMSAnalysis Iteration: 7 Estimation: 1 point Progress: 70% Quality: 0% * Network Editor with (ports) publishers - allow connect in/out ports publishers with other (real) ports and publishers Iteration: 7 Estimation: 1 point Progress: 50% Quality: 50% * Tick & beat information extraction - finalize last refactoring (names, silly vars, etc.) - separate Beats & Tick - what about DescriptorPool? Write two mini programs that analyze & dump - networks anyone Iteration: 7 Estimation: 2 point Progress: 100% Quality: 100% * Meter informaton extraction - identify the meter estimation code - setup datasets for functional tests - setup tests - convert to clamish if needed Iteration: 7 Estimation: 2 point Progress: 100% Quality: 100% * Onset detection (Rythm description) - extract normalization pass from processing - extract offset detection from processing - check that *costly* subbans analysis is needed - other algorithms -- qmul's icmc 2004 -- ircam's dafx 2003 Iteration: 7 Estimation: 3 point Progress: 100% Quality: 100% * SMSTools with long Audios note: As a result a couple of new stories have been added Iteration: 6 Estimation: 1 point Progress: 100% Quality: 60% * SMS Analysis-Synthesis in Network Editor - ports-publishers destruction management - fix bug in smsbase (config loading with bad path to files) Iteration: 6 Estimation: 2 points Progress: 100% Quality: 70% * BPF Unit Tests Write unit tests for the BPF Iteration: 6 Estimation: 1 point Progress: 100% Quality: 40% * BPM algorithm: Port to CLAMISH - identify an acceptable bpm alg. - setup datasets for functional tests - build the actual test whith available code - convert into CLAM if needed Iteration: 6 Estimation: 3 points Progress: 100% Quality: 50% * Merge new-ports to devel - merge in sandbox - commit in devel - resolve problems / pass tests new: - refactor SMSBase and associate tests - clean (reoganize) /build/Tests subdirs Iteration: 6 Estimation: 3 points Progress: 100% Quality: 90% * MAC OSX 10.3 Port CLAM to the 10.3 version of MAC OSX - Remove mascros from MpegCodec.cxx - Rebuild idblib binaries - Publish idblib binaries Estimation: 1 point Iteration: 5 Quality: 0% Progress: 65% * Descriptors storage proof of Concept Use the storage to do real processing (spectral analysis) as proof of concept - write Dummy Audio - write Frame Center - write spectrums - xml output - back to back (tests) Estimation: 3 point Iteration: 5 Quality: 90% Progress: 100% * Spectrum Conversions Tests - Add Tests FFT with BPF - Spec conv Test Suite - Bugfixing Estimation: 1 point Iteration: 5 Quality: 80% Progress: 100% * Publish Windows/Mac SMSTools Make available the SMSTools Binary for win and mac - Create SMSTools binaries CVS Module - Add Windows Binaries - Add Mac Binaries - Publisher script Estimation: 1 point Iteration: 5 Quality: 50% Progress: 85% * Community tasks: devel space Create the devel space and maintaining the web - CLAM roadmap - announce the devel space - update and keep in sync stories.txt Estimation: 1 point Iteration: 5 Quality: 100% Progress: 100% * Port "normal" processings to new ports Basically remove AttachData to ports - get SMSBase compiling - pass tests related to SMS - rewrite overlap-and-add - fix all the other processings Estimation: 2 points Iteration: 5 Progress: 100% Quality: 70% * Port SMSTransformations to new ports Just a quick hack using (downcast) to avoid ports in order to do the merge in short. - SMSTransformations functional tests in devel-branch - Get rid of ports in new-ports branch - Pass the func tests Estimation: 1 points Iteration: 5 Progress: 100% Quality: 60% * Same Context binder (Descriptors) Implement how to specify which data is needed to compute a given attribute using a given extractor. - Defining a same context binder - Scope iteration - Ask an attribute to the binder - Make the binder to adquire the binded attribute type - Protocol to check the binder type with the extractor hook type Iteration: 4 Estimation: 2 points Progress: 80% Quality: 80% * Define mandatory Processing behaviour. Define what is the common behaviour of all processings (how they should respond to messages depending on their state). Maybe this could result in unit tests and/or code janitors (Note: this is part of a bigger Processing Refactoring Story) - Personal propousals - discussion metting - Write the meeting minutes with agreements and disagreements - Processing base clean-up - Refactor Do's data instantation - Discuss the dissagreements Iteration: 4 Estimation: 3 points Quality: 20% Progress: 60% * Autoconf refactoring Refactor of our makefile generation scripts. After several years of development autoconf scripts show a worrying trend to become spaghetti code. This is dangerous since autoconf scripts are written in shell script powered by M4 macros - maybe this could led to the point that adding or improving the scripts will be unworkable. This refactoring should consider the following: # Remove code duplication in library detection routines # Structure the code so there is always the "regular" way and the "fail-safe" way # Expose more --enable-X/--disable-X so CLAM builds are more customizable Estimation: 2 point Iteration: 4 Progress: 80% Quality: 80% * Port SMS Analysis to new ports Merge new ports branch to devel Estimation: 2 points Iteration: 4 Progress: 100% Quality: 80% * Array cppunit testing Unit test for the Array - Write the test skeleton - Check instantiating non-memory owning - Check array copying - Check array resizing - Check array SetPtr - Check array GiveChunk et al. - Check array AddElem/DeleteElem Estimation: 2 points Iteration: 4 Quality: 100% Progress: 100% * Comunity tasks: devel space - devel web - update and keep in sync stories.txt - visual 6 discontinued announcement Estimation: 1 point Iteration: 3 Quality: 50% Progress: 100% * Support to internal MTG projects Porting VoctroApp to last QT and CLAM version. - start SemanticHiFi cvs module - automatic tests - bug-hunting - refactorings Iteration: 3 Estimation: 1 point Progress: 40% Quality: 50% * Descriptor document publishin - Define how to specify which data is needed to compute a given attribute using a given extractor. - Reestructure the Descriptors proposal document - Publish the descriptor proposal document - Define a final interface for the whole thing Iteration: 3 Estimation: 3 points Progress: 0% Quality: 0% * CLAM eXtreme stories progress tracker Make them aware of iterations and with a completion bar Completion bar should show quality in its color. Keep it as a simple (python) script. Get away of fancy db web apps ! CVS does it good. Estimation: 1 day Progress: 100% Quality: 70% Iteration: 2 * SMSTools Binary Prepare binary distribution for the release - windows - linux - macosx - macosx bundle - bug-fixing Estimation: 1 day Iteration: 2 Progress: 0% * Release 0.6.1: alias "VC7 support + Qt" - web: devel space - story script: bars, whole it estimation, multiple html docs - build system doc Estimation: 2 points Iteration: 2 Progress: 100% Quality: 50% * Srcdeps in VC7 & multiplatform & Qt Support for Visual7 and unify the two versions of srcdeps - write vcproj parser (writer) - port win libs - pass tests & examples - Qt support Estimation: 3 day Iteration: 2 Quality: 50% Progress: 100% * CUIDADO port (1) Working Examples + repository restructure - Working smaller examples - Finish repositiry re-structure Estimation: 1 points Iteration: 2 Progress: 100% Quality: 20% * Analize computation patterns on CUIDADO - trace rhythm descriptors computation - trace melody descriptors computation - trace morphological description computation - AudioClas descriptors not in CUIDAD - Retrieve feedback of projects on future descriptors Estimation: 3 points Iteration: 2 Progress: 40% Quality: 100% * MIDI I/O : final clean upp + docs Revision of MIDI Input (memory leaks) and (finish) implementing MIDI Output. - Finish code cleanup (privatize) - docs -- review MIDI in docs -- write MIDI out docs - confirm funct. with user feedback - MIDIOutControl - Low level MIDI out (multi-platform) Estimation: 2 points Iteration: 2 Progress: 100% Quality: 50% * Woody Support Complete Woody support based on user feedback Estimation: 1 day Iteration: 2 Progress: 100% Quality: 90% * Add QT support to build system (crossplatform) - srcdeps aware of env. vars - adding moc rules (generating moc_XX.cxx - QT support for VC6 Estimation: 3 points Iteration: 1 Progress: 100% * Descriptors prototype Build a prototype as proof of concepts for the pool of descriptors. - singletype pool - multitype pool - scope / attr registration Estimation: 5 points Iteration: 1 Progress: 100% * Port Network to new ports This includes using non audio ProcessingData. - Update processings used in Network examples - Port Network/FlowControl classes to new ports - Get NetworkEditor running Estimation: 1 points Iteration: 1 Progress: 100% * Integrate new ports to clam Integrate the work currently in draft. This includes: - Integrating to CLAM -- change syntax -- port tests to CppUnit -- make it compile in VC7 - Adding AudioWrapper to region Estimation: 4 points Iteration: 1 Progress: 100% * Autoconf Refactoring Disabling optional libraries and clean up the autoconf code # Small compilation tests # stl tests, std tests # integrate all changes configure <-> srcdeps # test in different situations Iteration: 7 Estimation: 2 points Progress: 0% Quality: 0% // ------------------------------------------------------------------ // Done or deprecated stories // ------------------------------------------------------------------- * Compile the 4 clam apps (BUILD SYSTEM) Iteration: 9 Estimation: 1 points Progress: 0% Quality: 0% * Adapt runTests.py to the new BS (BUILD SYSTEM) Iteration: 9 Estimation: 1 points Progress: 0% Quality: 0% * liboscpack debian package (BUILD SYSTEM) Iteration: 9 Estimation: 1 points Progress: 0% Quality: 0% * clam debian packages (BUILD SYSTEM) Iteration: 9 Estimation: 1 points Progress: 0% Quality: 0% * 2 * OUTDATED (done/deprecated) Refactor Do's data instantation Move instantation of big datas to ConcreteConfig Iteration: 999 Estimation: 2 points Progress: 0% Quality: 0% * OUTDATED (done/deprecated) RTAudio AudioDevice update (DOING SPIKE) Update the RTAudio to the last release - Try new RTAudio in all platforms - (if desired) update RTAudio Iteration: 999 * OUTDATED (done/deprecated) AudioIO Windows revision (DOING SPIKE) Simplify the 3 interface options for audio IO in Windows - compare / investigate the 3 different AudioDevices - remove obsolete - clearly recommend one Iteration: 999 * OUTDATED (done/deprecated) CUIDADO port (2) Clean & Refactor - clean-up commented code - refactor composites - refactor important processings - add doxygen docs Estimation: 3 points Iteration: 999 Progress: 5% Quality: 50% * OUTDATED (done/deprecated) dumb-linker-safe factories Implement the "hack" to our generic Factory so dumb linkers don't provoke disasters. This refers to subclass factories for "major" types, such as Processing, or Processing Data so that CLAM::Factory concept can be safely used by client applications, independently of how good is the linker in a given platform. Estimation: 1 day Iteration: 999 Progress: 0% Quality: 0% * OUTDATED (done/deprecated) SMS transformations using new ports - Inplace processing. New type of region is needed Estimation: 2 points Iteration: 999 * OUTDATED (done/deprecated) Bounds management in controls. - Integrate the mechanism on processings Estimation 3 points Iteration: 999 * OUTDATED (done/deprecated) CLAM binary deployment Design and implement tools for CLAM binary deployment. Nowadays CLAM is distributed in source code form *only*. This is a hindrance for users, since they must mix the build system of their applications - a thing that may be possible or not, depending on the project. Other problems caused by current CLAM distribution form is that is impossible to integrate CLAM ( as a library ) in a Unix distro ( since there is no clear way of building some libCLAM ). Also, that several users have to recompile several times the CLAM codebase, is a plain waste of time. A CLAM binary deployment should: # Offer the possibility to generate a set of headers and binaries ready to install wherever users see fit # Offer the different features of the framework in an orthogonal and clear way # Be highly customizable Depends on: library-safe factory, autoconf refactoring Estimation: 3 days Iteration: 999 * OUTDATED (done/deprecated) Improve SMSTools Robustness Estimation: 4 days Iteration: 999 * OUTDATED (done/deprecated) Automatic tests for windows For that we need that srcdeps supports Visual7 because Visual6 can't compile dsp files from command line - refactor runTests.py in order to facilitate adding new compilers front-ends support Some things shoud be worked out for a better estimation: # How to make crons for windows? Estimation: 2 day Iteration: 999 * OUTDATED (done/deprecated) Back-to-back tests tool Develop a helper tool for updating expected-audios. This will be useful in two scenarios - When a back-to-back test fails: the tool will ask if the processed audio should override the expected. - When creating tests: the user won't create the expected result by hand. But will be deferred to this tool. The tool must show audio attributes like length, sample-rate, draw the wave shape and specially must allow play the audios: the original, the old-expected (if exists) and the processed (not maching the old-expected). Morover it should give diagnostics of the differences. I.e. found sample too different. Estimation: 4 days Iteration: 999 * OUTDATED (done/deprecated) Polymorphic in DTs Integrate Polymorphics in DTs Finish and polish the Polymorphic concept. This sort of Polymorphic Object Adapter is very needed to achieve really flexible XML activation and passivation. Estimation: 2 days Iteration: 999 * OUTDATED (done/deprecated) Progress tracker class A class for tracking multilevel tasks progress. It could be a stack of todo/done tasks pairs one for each level. It should have a signal to be connected to a graphical widget or whatever. Estimation: 3 days * OUTDATED (done/deprecated) XML Error Handling Unifiying the way to report XML errors to the programer - Establish the common API for the user to get notified of errors - Port System Errors (file not found...) - Port Parsing Errors (not valid xml) - Port Validation Errors (XML structure not matching the expected one) - API to report semantic errors - Modify ProcessingConfig to report semantic based on ProcessingConfig::CheckValid Estimation: 3 days Iteration: 999 * OUTDATED (done/deprecated) Define behaviour of Spectral Processing classes What should they do when receiving a spectrum in a different representation...Promote this behaviour into all spectral processing classes Estimation: 5 days Iteration: 999 * OUTDATED (done/deprecated) Define mechanism for multi-algorithm Processings Strategy design pattern, template policy C++ idiom ? Fits well in CLAM? Estimation: 2 days * OUTDATED (done/deprecated) Code Janitor: Find unnecessary includes Find unnecessary included header because either it could be directly removed or make a forward decl. Estimation: 3 days Iteration: 999 * OUTDATED (done/deprecated) Constantly running automatic tests Hunt for the guilty when a test breaks ! - That would require a dedicated pc - Automatic tests for windows would be very desirable - A sliding tag would mark the previous stable point - Authors of commits between stable point and failures point are the guilties. Estimation: 3 days Iteration: 999 * OUTDATED (done/deprecated) Add loop option in file loaders Now when you execute a file loader processing (as AudioFileIn or the new ones from Miguel) it stops when the file is finished. Although this is the correct action for some apps (like SMSTools), it could be better if the config specifies whether the processing will run in loop mode or not. This is a needed feature for applications like Reactable, that will use these processings as samplers. Estimation: 1 day Iteration: 999 * OUTDATED (done/deprecated) Write Doxygen Modules * OUTDATED (done/deprecated) AudioManager Refactoring // end of stories in physical cards * List Unit Testing Write a unit test for the List. We need to improve the test coverage: some badly needed refactorings would become feasible if having this test. Estimation: Not considered yet * To boost:: or not to boost:: Consider that CLAM might need to use (part of) boost. Threading, signal & slots or regex boost modules could be put to use into CLAM. This is practical? Or we are already depending on too many third-party libraries? Estimation: Not considered yet * standard folder clean-up. Revise contents of standard folder. We have detected that there quite a few things implemented in standard/ which have not (i) ever been compiled or (ii) ever been used by anyone. We should either make that stuff to work and enforce its usage - making easier some refactorings - or just dump that code. * Windows buildtool Consider writing sort of buildtool specific for Windows users. One of the defects of current CLAM Windows deployment is that the process of installation and proper framework configuration are quite fragile - a misspelled word on the docs can wreak havoc, converting CLAM deployment into a painful, frustrating enterprise. This build tool should be able to: # Generate srcdeps .cfg files taking into account some specifications given by users. # Generate .dsp's for the tests and the examples Estimation: 1 week * Windows .vcproj generation Once binaries are achieved, .vcproj should be easily ( automatically ) generated. Much like Qt, we should also offer some tools that allows users to generate a .vcproj for their apps. Estimation: Unknown * CLAM integration into pkg-config Once binaries are achieved, CLAM compile and linking flags should be accessible from pkg-config. Just that. Pkg-config, the GNOME tool for easing compiling and linking tasks, seems to be a very promising development aid tool. Many projects already register their settings in a centralized place, easily accessible from autoconf scripts. Estimation: 1 day * Compressed formats encoding/decoding refactoring Refactor of low-level routines for decoding Vorbis and Mpeg audio files. The first low-level wrapper implemented was for libsndfile, which exposed file data as an interleaved samples array. This pattern was exactly the opposite to the approach we take in CLAM for handling multi channel audio data ( Structure of Arrays - CLAM - vs. Array of Structures - libsndfile ). So it was implemented an intermediate buffering layer that enabled to adapt libsndfile particularity to CLAM's own. However, since compressed formats rely on spectral processing, they used the same approach as CLAM for modeling multi channel audio data. But due to time constraints, it was seen easier to "bend" these formats into the intermediate buffering system. The tasks can be broken into: # Use the low-level libvorbis decoding API instead of the higher-level one # Move the buffering layer down to the PCMAudioStream abstraction # Remove the buffer adaptation for compressed file formats # Make the MpegAudioStream and OggVorbisAudioStream abstractions to access CLAM::Audio buffers Estimation: 6 days * Low-level file I/O components direct testing Make functional tests that test directly low-level I/O components. Now these components are tested indirectly from the functional tests for the file I/O Processings. Estimation: 2 days * Flexible retrieval of ID3/Vorbis Comment tags Allow clients to define which file-embedded metada to retrieve from Vorbis and Mpeg streams. Now the metadata to be retrieved is hardcoded into the AudioTextDescriptors DynamicType. Something more adaptable for client needs would be useful. Estimation: 4 days * Qt Plots Port currently available Plots to Qt. - Take advantage of DrawingSurface2D abstract class - Reuse of drawing algorithms written in OpenGL The major danger in this story lies in the fact that it is a proof of concept of VM architecture and conceptual model. Since mramirez feels uneasy about both of these, it is likely that this story provokes major VM reestructuration/rewriting. Estimation: 1 month * GNUplot Plots Add to Plots the ability of rendering into PNG or EPS files through GNUPlot. - Similar to Qt Plots story - OpenGL primitives must be translated into GNUplot primitives - Maybe OpenGL GL_FEEDBACK rendering mode could make this easier Estimation: 2 weeks * SMS analysis synthesis using new ports Not estimated. * SpectralDelay using new ports Not estimated * Improve Flow control algorithm This story includes: - Improve the performance of actual push flow control. -- Order of execution evaluated when topology changed. - Create new algorithms, as the one explained in OSW paper. Not estimated * Performance testing framework Do a parsing tool to extract from a valgrind-calltree log the time required to execute a given set of functions. Estimation: 5 days ? * Scoped XML Reading Load an XML file in a scoped way much like the XmlScoped writing does. - Provide a scoped reading context for a sax like parser - Provide primitive objects to use the context with C scopes There are some drawbacks to be solved like: - Destructors are executed after * Activation XML Errors Providing an interface for the XmlStorage to be used by the Component::LoadFrom rewriters in order to report broken semantical restrictions that can't be enforced by document structure. * Diagnosis API for XMLStorage Establish the interface to query XMLStorage for errors. * Uniform Validation XML Errors and Wellformedness error reporting Uniform Enhance the notification mechanisms to be uniform with Wellformedness errors. * Per stream overloads for XML static interface Currently XMLStorage has only an interface for abstract streams. Because it doesn't know the current stream kind and Xerces doesn't know to handle streams but filenames and memory regions, a copy is done on the whole stream is done. Implementing overloads for every kind of input would allow to use a more clever method. * Integrating Wavelets into CLAM The package available at http://www.scs.ryerson.ca/~lkolasa/CppWavelets.html seems quite complete and robust and it is being used in other frameworks. Estimation: 5 days * Integrating new Dynamic Types into CLAM Thus allowing inheritance and writing "real" constructors (and not Init methods) - This implies a change o interface (macros) This story COULD contain two or three other stories (currently not include) which is: - New class of "dynamic type" where attributes are implemented with normal-C++ attributs - New class "automatic-component" or the like, that their attributes are not dynamic. - Changing CLAM DTs to the appropiate classe Estimation: 3 days * Revision of processing classes involved in SMSTools Some classes (such as SynSineSpectrum or PhaseManagement) have very ugly things in them. Code should be checked and cleaned up. Estimation: 5 days * Qtdesigner integration with network editor A program that Loads a Network XML and a qt ui file and associates them in runtime to produce a prototype without compilation. The goal, to have a program that # loads at runtime: ## a CLAM network xml file edited with the NetworkEditor and ## a qt interface xml file (.ui) edited with the qt-designer, # joins them (using ui properties and port/control names or an specification) # executes them Ofering CLAM custom widget plugins to qtdesigner: - http://doc.trolltech.com/3.3/designer-manual-7.html On loading .ui files on runtime (the second part of this page): - http://doc.trolltech.com/3.3/designer-manual-6.html The class on the libqui library (not libqt!) that loads the ui interface and the class to extend in order the ui to create our custom widgets: - http://doc.trolltech.com/3.3/qwidgetfactory.html The class to extend in order to provide custom widgets: - http://doc.trolltech.com/3.3/qwidgetplugin.html Should be broken on substories? * Generating code from a network A program that given a network definition generates CLAM C++ code. It would be useful to convert a QtDesigner+Network prototype to a real fast application. The result of this program could be linked with the result of compiling the qt designer ui file with uic. * Add Open Sound Control support Open Sound Control is a protocol oriented to the communication between different sound applications using controls. It would permit use CLAM as sound engine for applications where some modules (GUI, for example) are executed in different machines. - http://www.cnmat.berkeley.edu/OpenSoundControl/ Estimation: Not estimated * Networks escalability One of the main objectives of the network should be its scalability (networks inside networks working as processings). This feature should have in mind these objects: - Network serialization - Different flow controls for each network? - Publication of ports/controls Estimation: Not estimated * Reduce compilation time The compilation time needs to be reduced drastically, in order to keep CLAM useable on slower hardware, and in order to speed up development. We should also investigate ways of doing this, but as a start we should reduce the number of unnecesary includes, and make more includes unnecesary by using more forward declarations. We should also investigate if this task can partly be automated. (See also: * Refactoring scripts) Estimation: Not estimated * Write refactoring script We have run into various possibilities of code improvement / refactoring that could be very well automated with scripts. (perl? python). As a first step, we should make an inventory of these possibilities. Estimation: Not estimated * Serialization of the GUI state in NetworkEditor When a network is stored with NetworkEditor the position of its widgets should be stored, too. Moreover, the kind of widget of each controlsender should be recreated when loading it from xml. Estimation: 3 days * Move processing factory declaration from the file src/Processing/Base/DefaultProcessingRegistration.cxx to each Processing definition. The way it works now is temporary; it could be better to add every processing to the processing factory from its concrete .cxx One problem can be that some processings only can be compiled/executed just in a particular platform (as LadspaLoader). Estimation: Not estimated. * Global configuration parameters Devise a system for sharing common configuration parameters such as SampleRate Estimation: 3 days * Revise documentation Identify missing and depracated documentation and reorganize it into either separate smaller documents or doxygen modules. Estimation: 3 days * libxml based XMLDocumentHandler Implementing the bindings for using libxml (or libxml++?) as XML backend instead XercesC. Current the xml implemantation has left hooks for pluging any DOM based parser by just defining three small classes. - Modify the build system to optionaly link libxml - Create a DocumentHandler for libxml (or libxml++) - Provide a settings.cfg based library selection Estimation: 4 days * Make AudioManager tranparent to the user So the user don't have to create the ugly singleton. Moreover, we should improve rebustness, so that audio out can cope with any audio buffer size provided. Independently of the physical low level buffers. This is documented in a RefactoringDoc Estimation: 4 days * Reading and Writing object on an XML path selection Needed for partial document reading and adding an object to an existing XML. XMLStorage::Select allows, giving an XPath (or something similar) to change the root node for a reading or writing action. Estimation: 3 days * Mantis DB's merging Merge bugs on both public Mantis and internal Mantis in a single server. Still different projects if needed. * Time representation A set of classes to represent time positions and durations without precission loss. Currently, time positions and durations are represented in milliseconds with a floating point number. There are several problems with that representation: First of all floating point is less precisse when the number is higher. Durations are very sensible to those imprecissions because they are the tiny difference between two unprecise huge values. Moreover, in despite of the convention not always the unit used for 'time' is miliseconds. This can lead to error that an explicit interface could expose. Also encapsulated conversions would be useful to avoid conversion errors. Often time positions and durations have a custom string representation that is different from the plain float. (ie. Mpeg7) This is partially implemented in Cuidado::TimePosition This story includes only the dessign of such classes its application should be an story in itself * Pitch representation A set of classes to encapsulate Pitch representations and conversions. Pitch has several representations - Frequency - Cents - Quantized: Pitch Class + Octave (Several scales) Conversions between them are scattered all over CLAM and Cuidado An starting version has been implemented for the FHHDescriptors calculation This story includes only the dessign of such classes its application should be an story in itself