yomguy [Wed, 3 Mar 2010 12:29:10 +0000 (12:29 +0000)]
- fix waveform peaks and centroid
- remove unnecessary adapters
- tested WAV, FLAC, OGG and MP3, mono and stereo. decoder OK
- TODO : breaks spectrogram linearity
yomguy [Tue, 23 Feb 2010 16:31:41 +0000 (16:31 +0000)]
- adapt graph core to the new api
- WARNING, at the moment, the waveform peaks don't scale to the image width. Will be fixed later.
- add a test : tests/api/test_pipe_waveform.py
- rm tests/api/test_pipe2.py
- add example processor illustrating FixedSizeInputAdapter usage
- require IProcessor.processor() to always return a 2D array (even for 1 channel)
- fix example FileDecoder, so that it properly returns a 2D array when channels=1
- add FixedSizeInputAdapter utility
- make nframes() a common IProcessor method, and add an nframes argument to IProcessor.setup()
- release processors from Processor destructor
- remove IDecoder.duration(), redundant with nframes and samplerate
- add processing pipes support, using ProcessPipe and operator overloading
- add tests/api/test_pipe.py and rename tests/api/test.py to test_lolevel.py
- remove all buffersize constraints in core/api
- replace IProcessor.set_input_format() with setup(), which also resets the processor
- suppress IProcessor.input_format()
- replace IProcessor.output_format() with channels() and samplerate()
- remove IGrapher.set_nframes(), this is implementation specific
- add short guitar.wav (sweep samples drives my crazy ;)
- shorten example processor names (GainEffect -> Gain, etc...)
component:
- add ability ro register abstract classes. These can register as implementing
some interfaces, but are by default not listed by implementations()
- add automatic interface-to-component __doc__ propagation, with the
@interfacedoc method decorator
api:
- general idea: prepare for processor "pipes" high-level api
- move process() into IProcessor, make it a generic method
- add IProcessors methods that relate to buffersize, and input/output format
- add IDecoder.nframes()
- add IEffect, an interface for effect processors
tests:
- fix testnewcore.py
- add test and examples of processors implementing the new api and component
system
core: add processor buffersize (default 65536), required to be a power of 2 and >= 4096
for proper support of fft-based analyzers and similar
refactor api:
- improve documentation
- remove IEncoder.finish(), same as process() with nframes < buffersize
- remove format(), description() and such from IDecoder, a decoder can handle multiple
formats so this information is dynamic
- add duration(), samplerate(), channels() etc... to IDecoder, obsoleting all
corresponding analyzers
- add IGrapher.process()
- require IGrapher.render() to return a PIL image instead of streaming binary data,
and move the width/height arguments into the constructor
- add IAnalyzer.process()
- add IValueAnalyzer and let dc, maxlevel and meanlevel analyzers implement it
- move result() into IValueAnalyzer. This method may not be adequate for other types of analyzers
- merge all api's into timeside.api
- add core.get_processor()
- put all exceptions into exceptions.py
- use SubProcessError instead of EncodeProcesError, DecodeProcessError and VampProcessError
- rename TimeSideError to Error (= timeside.Error)
- move id() into to IProcessor, all processors are required to implement this static method
- MetaProcessor now ensures that all id's are wellformed and unique and raise an exception otherwise
- add id() to all encoders and decoders, and make it static in analyzers and graphers
- remove underscores and shorten a couple of id's, see the doc of IProcessor.id()