From: yomguy Date: Thu, 11 Mar 2010 14:41:26 +0000 (+0000) Subject: add epydoc HTML docs X-Git-Tag: 0.3.2~166 X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=a6d9b032da98c53cb0f735e567d7c73bb8dd186a;p=timeside.git add epydoc HTML docs --- diff --git a/doc/epydoc/api-objects.txt b/doc/epydoc/api-objects.txt new file mode 100644 index 0000000..8c9a4ae --- /dev/null +++ b/doc/epydoc/api-objects.txt @@ -0,0 +1,929 @@ +timeside timeside-module.html +timeside.analyze timeside.analyze-module.html +timeside.analyze.channels timeside.analyze.channels-module.html +timeside.analyze.core timeside.analyze.core-module.html +timeside.analyze.dc timeside.analyze.dc-module.html +timeside.analyze.duration timeside.analyze.duration-module.html +timeside.analyze.encoding timeside.analyze.encoding-module.html +timeside.analyze.format timeside.analyze.format-module.html +timeside.analyze.max_level timeside.analyze.max_level-module.html +timeside.analyze.mean_level timeside.analyze.mean_level-module.html +timeside.analyze.resolution timeside.analyze.resolution-module.html +timeside.analyze.samplerate timeside.analyze.samplerate-module.html +timeside.analyze.vamp timeside.analyze.vamp-module.html +timeside.analyze.vamp.core timeside.analyze.vamp.core-module.html +timeside.api timeside.api-module.html +timeside.component timeside.component-module.html +timeside.component.implements timeside.component-module.html#implements +timeside.component.extend_unique timeside.component-module.html#extend_unique +timeside.component.find_implementations timeside.component-module.html#find_implementations +timeside.component.abstract timeside.component-module.html#abstract +timeside.component.implementations timeside.component-module.html#implementations +timeside.component.interfacedoc timeside.component-module.html#interfacedoc +timeside.core timeside.core-module.html +timeside.core.implements timeside.core-module.html#implements +timeside.core.get_processor timeside.core-module.html#get_processor +timeside.core.processors timeside.core-module.html#processors +timeside.core._processors timeside.core-module.html#_processors +timeside.core.abstract timeside.core-module.html#abstract +timeside.core.interfacedoc timeside.core-module.html#interfacedoc +timeside.decode timeside.decode-module.html +timeside.decode.core timeside.decode.core-module.html +timeside.decode.flac timeside.decode.flac-module.html +timeside.decode.mp3 timeside.decode.mp3-module.html +timeside.decode.ogg timeside.decode.ogg-module.html +timeside.decode.wav timeside.decode.wav-module.html +timeside.encode timeside.encode-module.html +timeside.encode.core timeside.encode.core-module.html +timeside.encode.flac timeside.encode.flac-module.html +timeside.encode.mp3 timeside.encode.mp3-module.html +timeside.encode.ogg timeside.encode.ogg-module.html +timeside.encode.wav timeside.encode.wav-module.html +timeside.exceptions timeside.exceptions-module.html +timeside.grapher timeside.grapher-module.html +timeside.grapher.color_schemes timeside.grapher-module.html#color_schemes +timeside.grapher.core timeside.grapher.core-module.html +timeside.grapher.core.color_schemes timeside.grapher.core-module.html#color_schemes +timeside.grapher.core.interpolate_colors timeside.grapher.core-module.html#interpolate_colors +timeside.grapher.spectrogram_audiolab timeside.grapher.spectrogram_audiolab-module.html +timeside.grapher.spectrogram_audiolab.color_schemes timeside.grapher.spectrogram_audiolab-module.html#color_schemes +timeside.grapher.waveform_audiolab timeside.grapher.waveform_audiolab-module.html +timeside.grapher.waveform_audiolab.color_schemes timeside.grapher.waveform_audiolab-module.html#color_schemes +timeside.metadata timeside.metadata-module.html +timeside.tests timeside.tests-module.html +timeside.tests.alltests timeside.tests.alltests-module.html +timeside.tests.api timeside.tests.api-module.html +timeside.tests.api.examples timeside.tests.api.examples-module.html +timeside.tests.api.examples.color_schemes timeside.tests.api.examples-module.html#color_schemes +timeside.tests.api.examples.implements timeside.component-module.html#implements +timeside.tests.api.examples.interfacedoc timeside.component-module.html#interfacedoc +timeside.tests.api.gstreamer timeside.tests.api.gstreamer-module.html +timeside.tests.api.gstreamer.implements timeside.component-module.html#implements +timeside.tests.api.gstreamer.interfacedoc timeside.component-module.html#interfacedoc +timeside.tests.api.test_lolevel timeside.tests.api.test_lolevel-module.html +timeside.tests.api.test_lolevel.nframes timeside.tests.api.test_lolevel-module.html#nframes +timeside.tests.api.test_lolevel.destination timeside.tests.api.test_lolevel-module.html#destination +timeside.tests.api.test_lolevel.use_gst timeside.tests.api.test_lolevel-module.html#use_gst +timeside.tests.api.test_lolevel.nchannels timeside.tests.api.test_lolevel-module.html#nchannels +timeside.tests.api.test_lolevel.eod timeside.tests.api.test_lolevel-module.html#eod +timeside.tests.api.test_lolevel.max_level timeside.tests.api.test_lolevel-module.html#max_level +timeside.tests.api.test_lolevel.effect timeside.tests.api.test_lolevel-module.html#effect +timeside.tests.api.test_lolevel.analyzer timeside.tests.api.test_lolevel-module.html#analyzer +timeside.tests.api.test_lolevel.source timeside.tests.api.test_lolevel-module.html#source +timeside.tests.api.test_lolevel.decoder timeside.tests.api.test_lolevel-module.html#decoder +timeside.tests.api.test_lolevel.frames timeside.tests.api.test_lolevel-module.html#frames +timeside.tests.api.test_lolevel.samplerate timeside.tests.api.test_lolevel-module.html#samplerate +timeside.tests.api.test_lolevel.encoder timeside.tests.api.test_lolevel-module.html#encoder +timeside.tests.api.test_lolevel.gain timeside.tests.api.test_lolevel-module.html#gain +timeside.tests.api.test_pipe timeside.tests.api.test_pipe-module.html +timeside.tests.api.test_pipe.duration timeside.tests.api.test_pipe-module.html#duration +timeside.tests.api.test_pipe.source timeside.tests.api.test_pipe-module.html#source +timeside.tests.api.test_pipe.encoder timeside.tests.api.test_pipe-module.html#encoder +timeside.tests.api.test_pipe.gain timeside.tests.api.test_pipe-module.html#gain +timeside.tests.api.test_pipe.decoder timeside.tests.api.test_pipe-module.html#decoder +timeside.tests.api.test_pipe.maxlevel timeside.tests.api.test_pipe-module.html#maxlevel +timeside.tests.api.test_pipe.use_gst timeside.tests.api.test_pipe-module.html#use_gst +timeside.tests.api.test_pipe.fixed timeside.tests.api.test_pipe-module.html#fixed +timeside.tests.api.test_pipe.subpipe timeside.tests.api.test_pipe-module.html#subpipe +timeside.tests.api.test_pipe_spectrogram timeside.tests.api.test_pipe_spectrogram-module.html +timeside.tests.api.test_pipe_spectrogram.spectrogram timeside.tests.api.test_pipe_spectrogram-module.html#spectrogram +timeside.tests.api.test_pipe_spectrogram.source timeside.tests.api.test_pipe_spectrogram-module.html#source +timeside.tests.api.test_pipe_spectrogram.image_file timeside.tests.api.test_pipe_spectrogram-module.html#image_file +timeside.tests.api.test_pipe_spectrogram.decoder timeside.tests.api.test_pipe_spectrogram-module.html#decoder +timeside.tests.api.test_pipe_spectrogram.use_gst timeside.tests.api.test_pipe_spectrogram-module.html#use_gst +timeside.tests.api.test_pipe_waveform timeside.tests.api.test_pipe_waveform-module.html +timeside.tests.api.test_pipe_waveform.waveform timeside.tests.api.test_pipe_waveform-module.html#waveform +timeside.tests.api.test_pipe_waveform.source timeside.tests.api.test_pipe_waveform-module.html#source +timeside.tests.api.test_pipe_waveform.image_file timeside.tests.api.test_pipe_waveform-module.html#image_file +timeside.tests.api.test_pipe_waveform.decoder timeside.tests.api.test_pipe_waveform-module.html#decoder +timeside.tests.api.test_pipe_waveform.use_gst timeside.tests.api.test_pipe_waveform-module.html#use_gst +timeside.tests.listprocessors timeside.tests.listprocessors-module.html +timeside.tests.listprocessors.list_processors timeside.tests.listprocessors-module.html#list_processors +timeside.tests.test timeside.tests.test-module.html +timeside.tests.test.mimetype timeside.tests.test-module.html#mimetype +timeside.tests.testcomponent timeside.tests.testcomponent-module.html +timeside.tests.testinputadapter timeside.tests.testinputadapter-module.html +exceptions.AssertionError exceptions.AssertionError-class.html +exceptions.AssertionError.__init__ exceptions.AssertionError-class.html#__init__ +exceptions.AssertionError.__new__ exceptions.AssertionError-class.html#__new__ +timeside.analyze.channels.ChannelAnalyser timeside.analyze.channels.ChannelAnalyser-class.html +timeside.core.Processor.__metaclass__ timeside.core.MetaProcessor-class.html +timeside.analyze.channels.ChannelAnalyser.render timeside.analyze.channels.ChannelAnalyser-class.html#render +timeside.core.Processor.process timeside.core.Processor-class.html#process +timeside.core.Processor.channels timeside.core.Processor-class.html#channels +timeside.analyze.channels.ChannelAnalyser.unit timeside.analyze.channels.ChannelAnalyser-class.html#unit +timeside.core.Processor.samplerate timeside.core.Processor-class.html#samplerate +timeside.analyze.channels.ChannelAnalyser.id timeside.analyze.channels.ChannelAnalyser-class.html#id +timeside.analyze.core.AudioProcessor.pre_process timeside.analyze.core.AudioProcessor-class.html#pre_process +timeside.core.Processor.nframes timeside.core.Processor-class.html#nframes +timeside.core.Processor.__del__ timeside.core.Processor-class.html#__del__ +timeside.analyze.core.AudioProcessor.__init__ timeside.analyze.core.AudioProcessor-class.html#__init__ +timeside.analyze.core.AudioProcessor.spectral_centroid timeside.analyze.core.AudioProcessor-class.html#spectral_centroid +timeside.analyze.core.AudioProcessor.peaks timeside.analyze.core.AudioProcessor-class.html#peaks +timeside.analyze.core.AudioProcessor.read timeside.analyze.core.AudioProcessor-class.html#read +timeside.core.Processor.__or__ timeside.core.Processor-class.html#__or__ +timeside.analyze.core.AudioProcessor.get_mono_samples timeside.analyze.core.AudioProcessor-class.html#get_mono_samples +timeside.analyze.core.AudioProcessor.get_samples timeside.analyze.core.AudioProcessor-class.html#get_samples +timeside.analyze.channels.ChannelAnalyser.name timeside.analyze.channels.ChannelAnalyser-class.html#name +timeside.core.Processor.setup timeside.core.Processor-class.html#setup +timeside.core.Processor.release timeside.core.Processor-class.html#release +timeside.analyze.core.AudioProcessor timeside.analyze.core.AudioProcessor-class.html +timeside.core.Processor.__metaclass__ timeside.core.MetaProcessor-class.html +timeside.core.Processor.process timeside.core.Processor-class.html#process +timeside.core.Processor.channels timeside.core.Processor-class.html#channels +timeside.core.Processor.samplerate timeside.core.Processor-class.html#samplerate +timeside.analyze.core.AudioProcessor.__init__ timeside.analyze.core.AudioProcessor-class.html#__init__ +timeside.core.Processor.nframes timeside.core.Processor-class.html#nframes +timeside.core.Processor.__del__ timeside.core.Processor-class.html#__del__ +timeside.analyze.core.AudioProcessor.pre_process timeside.analyze.core.AudioProcessor-class.html#pre_process +timeside.analyze.core.AudioProcessor.spectral_centroid timeside.analyze.core.AudioProcessor-class.html#spectral_centroid +timeside.analyze.core.AudioProcessor.peaks timeside.analyze.core.AudioProcessor-class.html#peaks +timeside.analyze.core.AudioProcessor.read timeside.analyze.core.AudioProcessor-class.html#read +timeside.core.Processor.__or__ timeside.core.Processor-class.html#__or__ +timeside.analyze.core.AudioProcessor.get_mono_samples timeside.analyze.core.AudioProcessor-class.html#get_mono_samples +timeside.analyze.core.AudioProcessor.get_samples timeside.analyze.core.AudioProcessor-class.html#get_samples +timeside.core.Processor.setup timeside.core.Processor-class.html#setup +timeside.core.Processor.release timeside.core.Processor-class.html#release +timeside.analyze.dc.MeanDCShiftAnalyser timeside.analyze.dc.MeanDCShiftAnalyser-class.html +timeside.core.Processor.__metaclass__ timeside.core.MetaProcessor-class.html +timeside.analyze.dc.MeanDCShiftAnalyser.render timeside.analyze.dc.MeanDCShiftAnalyser-class.html#render +timeside.core.Processor.process timeside.core.Processor-class.html#process +timeside.core.Processor.channels timeside.core.Processor-class.html#channels +timeside.core.Processor.samplerate timeside.core.Processor-class.html#samplerate +timeside.analyze.dc.MeanDCShiftAnalyser.id timeside.analyze.dc.MeanDCShiftAnalyser-class.html#id +timeside.analyze.core.AudioProcessor.pre_process timeside.analyze.core.AudioProcessor-class.html#pre_process +timeside.core.Processor.nframes timeside.core.Processor-class.html#nframes +timeside.core.Processor.__del__ timeside.core.Processor-class.html#__del__ +timeside.analyze.dc.MeanDCShiftAnalyser.unit timeside.analyze.dc.MeanDCShiftAnalyser-class.html#unit +timeside.analyze.core.AudioProcessor.spectral_centroid timeside.analyze.core.AudioProcessor-class.html#spectral_centroid +timeside.analyze.core.AudioProcessor.peaks timeside.analyze.core.AudioProcessor-class.html#peaks +timeside.analyze.core.AudioProcessor.read timeside.analyze.core.AudioProcessor-class.html#read +timeside.core.Processor.__or__ timeside.core.Processor-class.html#__or__ +timeside.analyze.core.AudioProcessor.get_mono_samples timeside.analyze.core.AudioProcessor-class.html#get_mono_samples +timeside.analyze.core.AudioProcessor.get_samples timeside.analyze.core.AudioProcessor-class.html#get_samples +timeside.analyze.dc.MeanDCShiftAnalyser.name timeside.analyze.dc.MeanDCShiftAnalyser-class.html#name +timeside.core.Processor.setup timeside.core.Processor-class.html#setup +timeside.analyze.core.AudioProcessor.__init__ timeside.analyze.core.AudioProcessor-class.html#__init__ +timeside.core.Processor.release timeside.core.Processor-class.html#release +timeside.analyze.duration.DurationAnalyzer timeside.analyze.duration.DurationAnalyzer-class.html +timeside.core.Processor.__metaclass__ timeside.core.MetaProcessor-class.html +timeside.analyze.duration.DurationAnalyzer.render timeside.analyze.duration.DurationAnalyzer-class.html#render +timeside.core.Processor.process timeside.core.Processor-class.html#process +timeside.core.Processor.channels timeside.core.Processor-class.html#channels +timeside.core.Processor.samplerate timeside.core.Processor-class.html#samplerate +timeside.analyze.duration.DurationAnalyzer.id timeside.analyze.duration.DurationAnalyzer-class.html#id +timeside.analyze.core.AudioProcessor.pre_process timeside.analyze.core.AudioProcessor-class.html#pre_process +timeside.core.Processor.nframes timeside.core.Processor-class.html#nframes +timeside.core.Processor.__del__ timeside.core.Processor-class.html#__del__ +timeside.analyze.duration.DurationAnalyzer.unit timeside.analyze.duration.DurationAnalyzer-class.html#unit +timeside.analyze.core.AudioProcessor.spectral_centroid timeside.analyze.core.AudioProcessor-class.html#spectral_centroid +timeside.analyze.core.AudioProcessor.peaks timeside.analyze.core.AudioProcessor-class.html#peaks +timeside.analyze.core.AudioProcessor.read timeside.analyze.core.AudioProcessor-class.html#read +timeside.core.Processor.__or__ timeside.core.Processor-class.html#__or__ +timeside.analyze.core.AudioProcessor.get_mono_samples timeside.analyze.core.AudioProcessor-class.html#get_mono_samples +timeside.analyze.core.AudioProcessor.get_samples timeside.analyze.core.AudioProcessor-class.html#get_samples +timeside.analyze.duration.DurationAnalyzer.name timeside.analyze.duration.DurationAnalyzer-class.html#name +timeside.core.Processor.setup timeside.core.Processor-class.html#setup +timeside.analyze.core.AudioProcessor.__init__ timeside.analyze.core.AudioProcessor-class.html#__init__ +timeside.core.Processor.release timeside.core.Processor-class.html#release +timeside.analyze.encoding.EncodingAnalyser timeside.analyze.encoding.EncodingAnalyser-class.html +timeside.core.Processor.__metaclass__ timeside.core.MetaProcessor-class.html +timeside.analyze.encoding.EncodingAnalyser.render timeside.analyze.encoding.EncodingAnalyser-class.html#render +timeside.core.Processor.process timeside.core.Processor-class.html#process +timeside.core.Processor.channels timeside.core.Processor-class.html#channels +timeside.core.Processor.samplerate timeside.core.Processor-class.html#samplerate +timeside.analyze.encoding.EncodingAnalyser.id timeside.analyze.encoding.EncodingAnalyser-class.html#id +timeside.analyze.core.AudioProcessor.pre_process timeside.analyze.core.AudioProcessor-class.html#pre_process +timeside.core.Processor.nframes timeside.core.Processor-class.html#nframes +timeside.core.Processor.__del__ timeside.core.Processor-class.html#__del__ +timeside.analyze.encoding.EncodingAnalyser.unit timeside.analyze.encoding.EncodingAnalyser-class.html#unit +timeside.analyze.core.AudioProcessor.spectral_centroid timeside.analyze.core.AudioProcessor-class.html#spectral_centroid +timeside.analyze.core.AudioProcessor.peaks timeside.analyze.core.AudioProcessor-class.html#peaks +timeside.analyze.core.AudioProcessor.read timeside.analyze.core.AudioProcessor-class.html#read +timeside.core.Processor.__or__ timeside.core.Processor-class.html#__or__ +timeside.analyze.core.AudioProcessor.get_mono_samples timeside.analyze.core.AudioProcessor-class.html#get_mono_samples +timeside.analyze.core.AudioProcessor.get_samples timeside.analyze.core.AudioProcessor-class.html#get_samples +timeside.analyze.encoding.EncodingAnalyser.name timeside.analyze.encoding.EncodingAnalyser-class.html#name +timeside.core.Processor.setup timeside.core.Processor-class.html#setup +timeside.analyze.core.AudioProcessor.__init__ timeside.analyze.core.AudioProcessor-class.html#__init__ +timeside.core.Processor.release timeside.core.Processor-class.html#release +timeside.analyze.format.FormatAnalyser timeside.analyze.format.FormatAnalyser-class.html +timeside.core.Processor.__metaclass__ timeside.core.MetaProcessor-class.html +timeside.analyze.format.FormatAnalyser.render timeside.analyze.format.FormatAnalyser-class.html#render +timeside.core.Processor.process timeside.core.Processor-class.html#process +timeside.core.Processor.channels timeside.core.Processor-class.html#channels +timeside.core.Processor.samplerate timeside.core.Processor-class.html#samplerate +timeside.analyze.format.FormatAnalyser.id timeside.analyze.format.FormatAnalyser-class.html#id +timeside.analyze.core.AudioProcessor.pre_process timeside.analyze.core.AudioProcessor-class.html#pre_process +timeside.core.Processor.nframes timeside.core.Processor-class.html#nframes +timeside.core.Processor.__del__ timeside.core.Processor-class.html#__del__ +timeside.analyze.format.FormatAnalyser.unit timeside.analyze.format.FormatAnalyser-class.html#unit +timeside.analyze.core.AudioProcessor.spectral_centroid timeside.analyze.core.AudioProcessor-class.html#spectral_centroid +timeside.analyze.core.AudioProcessor.peaks timeside.analyze.core.AudioProcessor-class.html#peaks +timeside.analyze.core.AudioProcessor.read timeside.analyze.core.AudioProcessor-class.html#read +timeside.core.Processor.__or__ timeside.core.Processor-class.html#__or__ +timeside.analyze.core.AudioProcessor.get_mono_samples timeside.analyze.core.AudioProcessor-class.html#get_mono_samples +timeside.analyze.core.AudioProcessor.get_samples timeside.analyze.core.AudioProcessor-class.html#get_samples +timeside.analyze.format.FormatAnalyser.name timeside.analyze.format.FormatAnalyser-class.html#name +timeside.core.Processor.setup timeside.core.Processor-class.html#setup +timeside.analyze.core.AudioProcessor.__init__ timeside.analyze.core.AudioProcessor-class.html#__init__ +timeside.core.Processor.release timeside.core.Processor-class.html#release +timeside.analyze.max_level.MaxLevelAnalyzer timeside.analyze.max_level.MaxLevelAnalyzer-class.html +timeside.core.Processor.__metaclass__ timeside.core.MetaProcessor-class.html +timeside.analyze.max_level.MaxLevelAnalyzer.render timeside.analyze.max_level.MaxLevelAnalyzer-class.html#render +timeside.core.Processor.process timeside.core.Processor-class.html#process +timeside.core.Processor.channels timeside.core.Processor-class.html#channels +timeside.core.Processor.samplerate timeside.core.Processor-class.html#samplerate +timeside.analyze.max_level.MaxLevelAnalyzer.id timeside.analyze.max_level.MaxLevelAnalyzer-class.html#id +timeside.analyze.core.AudioProcessor.pre_process timeside.analyze.core.AudioProcessor-class.html#pre_process +timeside.core.Processor.nframes timeside.core.Processor-class.html#nframes +timeside.core.Processor.__del__ timeside.core.Processor-class.html#__del__ +timeside.analyze.max_level.MaxLevelAnalyzer.unit timeside.analyze.max_level.MaxLevelAnalyzer-class.html#unit +timeside.analyze.core.AudioProcessor.spectral_centroid timeside.analyze.core.AudioProcessor-class.html#spectral_centroid +timeside.analyze.core.AudioProcessor.peaks timeside.analyze.core.AudioProcessor-class.html#peaks +timeside.analyze.core.AudioProcessor.read timeside.analyze.core.AudioProcessor-class.html#read +timeside.core.Processor.__or__ timeside.core.Processor-class.html#__or__ +timeside.analyze.core.AudioProcessor.get_mono_samples timeside.analyze.core.AudioProcessor-class.html#get_mono_samples +timeside.analyze.core.AudioProcessor.get_samples timeside.analyze.core.AudioProcessor-class.html#get_samples +timeside.analyze.max_level.MaxLevelAnalyzer.name timeside.analyze.max_level.MaxLevelAnalyzer-class.html#name +timeside.core.Processor.setup timeside.core.Processor-class.html#setup +timeside.analyze.core.AudioProcessor.__init__ timeside.analyze.core.AudioProcessor-class.html#__init__ +timeside.core.Processor.release timeside.core.Processor-class.html#release +timeside.analyze.mean_level.MeanLevelAnalyser timeside.analyze.mean_level.MeanLevelAnalyser-class.html +timeside.core.Processor.__metaclass__ timeside.core.MetaProcessor-class.html +timeside.analyze.mean_level.MeanLevelAnalyser.render timeside.analyze.mean_level.MeanLevelAnalyser-class.html#render +timeside.core.Processor.process timeside.core.Processor-class.html#process +timeside.core.Processor.channels timeside.core.Processor-class.html#channels +timeside.core.Processor.samplerate timeside.core.Processor-class.html#samplerate +timeside.analyze.mean_level.MeanLevelAnalyser.id timeside.analyze.mean_level.MeanLevelAnalyser-class.html#id +timeside.analyze.core.AudioProcessor.pre_process timeside.analyze.core.AudioProcessor-class.html#pre_process +timeside.core.Processor.nframes timeside.core.Processor-class.html#nframes +timeside.core.Processor.__del__ timeside.core.Processor-class.html#__del__ +timeside.analyze.mean_level.MeanLevelAnalyser.unit timeside.analyze.mean_level.MeanLevelAnalyser-class.html#unit +timeside.analyze.core.AudioProcessor.spectral_centroid timeside.analyze.core.AudioProcessor-class.html#spectral_centroid +timeside.analyze.core.AudioProcessor.peaks timeside.analyze.core.AudioProcessor-class.html#peaks +timeside.analyze.core.AudioProcessor.read timeside.analyze.core.AudioProcessor-class.html#read +timeside.core.Processor.__or__ timeside.core.Processor-class.html#__or__ +timeside.analyze.core.AudioProcessor.get_mono_samples timeside.analyze.core.AudioProcessor-class.html#get_mono_samples +timeside.analyze.core.AudioProcessor.get_samples timeside.analyze.core.AudioProcessor-class.html#get_samples +timeside.analyze.mean_level.MeanLevelAnalyser.name timeside.analyze.mean_level.MeanLevelAnalyser-class.html#name +timeside.core.Processor.setup timeside.core.Processor-class.html#setup +timeside.analyze.core.AudioProcessor.__init__ timeside.analyze.core.AudioProcessor-class.html#__init__ +timeside.core.Processor.release timeside.core.Processor-class.html#release +timeside.analyze.resolution.ResolutionAnalyser timeside.analyze.resolution.ResolutionAnalyser-class.html +timeside.core.Processor.__metaclass__ timeside.core.MetaProcessor-class.html +timeside.analyze.resolution.ResolutionAnalyser.render timeside.analyze.resolution.ResolutionAnalyser-class.html#render +timeside.core.Processor.process timeside.core.Processor-class.html#process +timeside.core.Processor.channels timeside.core.Processor-class.html#channels +timeside.core.Processor.samplerate timeside.core.Processor-class.html#samplerate +timeside.analyze.resolution.ResolutionAnalyser.id timeside.analyze.resolution.ResolutionAnalyser-class.html#id +timeside.analyze.core.AudioProcessor.pre_process timeside.analyze.core.AudioProcessor-class.html#pre_process +timeside.core.Processor.nframes timeside.core.Processor-class.html#nframes +timeside.core.Processor.__del__ timeside.core.Processor-class.html#__del__ +timeside.analyze.resolution.ResolutionAnalyser.unit timeside.analyze.resolution.ResolutionAnalyser-class.html#unit +timeside.analyze.core.AudioProcessor.spectral_centroid timeside.analyze.core.AudioProcessor-class.html#spectral_centroid +timeside.analyze.core.AudioProcessor.peaks timeside.analyze.core.AudioProcessor-class.html#peaks +timeside.analyze.core.AudioProcessor.read timeside.analyze.core.AudioProcessor-class.html#read +timeside.core.Processor.__or__ timeside.core.Processor-class.html#__or__ +timeside.analyze.core.AudioProcessor.get_mono_samples timeside.analyze.core.AudioProcessor-class.html#get_mono_samples +timeside.analyze.core.AudioProcessor.get_samples timeside.analyze.core.AudioProcessor-class.html#get_samples +timeside.analyze.resolution.ResolutionAnalyser.name timeside.analyze.resolution.ResolutionAnalyser-class.html#name +timeside.core.Processor.setup timeside.core.Processor-class.html#setup +timeside.analyze.core.AudioProcessor.__init__ timeside.analyze.core.AudioProcessor-class.html#__init__ +timeside.core.Processor.release timeside.core.Processor-class.html#release +timeside.analyze.samplerate.SampleRateAnalyzer timeside.analyze.samplerate.SampleRateAnalyzer-class.html +timeside.core.Processor.__metaclass__ timeside.core.MetaProcessor-class.html +timeside.analyze.samplerate.SampleRateAnalyzer.render timeside.analyze.samplerate.SampleRateAnalyzer-class.html#render +timeside.core.Processor.process timeside.core.Processor-class.html#process +timeside.core.Processor.channels timeside.core.Processor-class.html#channels +timeside.core.Processor.samplerate timeside.core.Processor-class.html#samplerate +timeside.analyze.samplerate.SampleRateAnalyzer.id timeside.analyze.samplerate.SampleRateAnalyzer-class.html#id +timeside.analyze.core.AudioProcessor.pre_process timeside.analyze.core.AudioProcessor-class.html#pre_process +timeside.core.Processor.nframes timeside.core.Processor-class.html#nframes +timeside.core.Processor.__del__ timeside.core.Processor-class.html#__del__ +timeside.analyze.samplerate.SampleRateAnalyzer.unit timeside.analyze.samplerate.SampleRateAnalyzer-class.html#unit +timeside.analyze.core.AudioProcessor.spectral_centroid timeside.analyze.core.AudioProcessor-class.html#spectral_centroid +timeside.analyze.core.AudioProcessor.peaks timeside.analyze.core.AudioProcessor-class.html#peaks +timeside.analyze.core.AudioProcessor.read timeside.analyze.core.AudioProcessor-class.html#read +timeside.core.Processor.__or__ timeside.core.Processor-class.html#__or__ +timeside.analyze.core.AudioProcessor.get_mono_samples timeside.analyze.core.AudioProcessor-class.html#get_mono_samples +timeside.analyze.core.AudioProcessor.get_samples timeside.analyze.core.AudioProcessor-class.html#get_samples +timeside.analyze.samplerate.SampleRateAnalyzer.name timeside.analyze.samplerate.SampleRateAnalyzer-class.html#name +timeside.core.Processor.setup timeside.core.Processor-class.html#setup +timeside.analyze.core.AudioProcessor.__init__ timeside.analyze.core.AudioProcessor-class.html#__init__ +timeside.core.Processor.release timeside.core.Processor-class.html#release +timeside.analyze.vamp.core.VampCoreAnalyzer timeside.analyze.vamp.core.VampCoreAnalyzer-class.html +timeside.analyze.vamp.core.VampCoreAnalyzer.name timeside.analyze.vamp.core.VampCoreAnalyzer-class.html#name +timeside.analyze.vamp.core.VampCoreAnalyzer.render timeside.analyze.vamp.core.VampCoreAnalyzer-class.html#render +timeside.analyze.vamp.core.VampCoreAnalyzer.get_wav_path timeside.analyze.vamp.core.VampCoreAnalyzer-class.html#get_wav_path +timeside.analyze.vamp.core.VampCoreAnalyzer.get_plugins_list timeside.analyze.vamp.core.VampCoreAnalyzer-class.html#get_plugins_list +timeside.analyze.vamp.core.VampCoreAnalyzer.core_process timeside.analyze.vamp.core.VampCoreAnalyzer-class.html#core_process +timeside.analyze.vamp.core.VampCoreAnalyzer.unit timeside.analyze.vamp.core.VampCoreAnalyzer-class.html#unit +timeside.analyze.vamp.core.VampCoreAnalyzer.id timeside.analyze.vamp.core.VampCoreAnalyzer-class.html#id +timeside.analyze.vamp.core.VampCoreAnalyzer.__init__ timeside.analyze.vamp.core.VampCoreAnalyzer-class.html#__init__ +timeside.api.IAnalyzer timeside.api.IAnalyzer-class.html +timeside.api.IAnalyzer.name timeside.api.IAnalyzer-class.html#name +timeside.api.IProcessor.process timeside.api.IProcessor-class.html#process +timeside.api.IProcessor.setup timeside.api.IProcessor-class.html#setup +timeside.api.IProcessor.nframes timeside.api.IProcessor-class.html#nframes +timeside.api.IProcessor.channels timeside.api.IProcessor-class.html#channels +timeside.api.IAnalyzer.__init__ timeside.api.IAnalyzer-class.html#__init__ +timeside.api.IProcessor.release timeside.api.IProcessor-class.html#release +timeside.api.IProcessor.samplerate timeside.api.IProcessor-class.html#samplerate +timeside.api.IProcessor.id timeside.api.IProcessor-class.html#id +timeside.api.IAnalyzer.unit timeside.api.IAnalyzer-class.html#unit +timeside.api.IDecoder timeside.api.IDecoder-class.html +timeside.api.IDecoder.encoding timeside.api.IDecoder-class.html#encoding +timeside.api.IProcessor.process timeside.api.IProcessor-class.html#process +timeside.api.IProcessor.channels timeside.api.IProcessor-class.html#channels +timeside.api.IProcessor.samplerate timeside.api.IProcessor-class.html#samplerate +timeside.api.IProcessor.id timeside.api.IProcessor-class.html#id +timeside.api.IDecoder.__init__ timeside.api.IDecoder-class.html#__init__ +timeside.api.IProcessor.nframes timeside.api.IProcessor-class.html#nframes +timeside.api.IDecoder.metadata timeside.api.IDecoder-class.html#metadata +timeside.api.IDecoder.format timeside.api.IDecoder-class.html#format +timeside.api.IProcessor.release timeside.api.IProcessor-class.html#release +timeside.api.IProcessor.setup timeside.api.IProcessor-class.html#setup +timeside.api.IDecoder.resolution timeside.api.IDecoder-class.html#resolution +timeside.api.IEffect timeside.api.IEffect-class.html +timeside.api.IEffect.name timeside.api.IEffect-class.html#name +timeside.api.IProcessor.process timeside.api.IProcessor-class.html#process +timeside.api.IProcessor.setup timeside.api.IProcessor-class.html#setup +timeside.api.IProcessor.nframes timeside.api.IProcessor-class.html#nframes +timeside.api.IProcessor.channels timeside.api.IProcessor-class.html#channels +timeside.api.IProcessor.release timeside.api.IProcessor-class.html#release +timeside.api.IProcessor.samplerate timeside.api.IProcessor-class.html#samplerate +timeside.api.IProcessor.id timeside.api.IProcessor-class.html#id +timeside.api.IEffect.__init__ timeside.api.IEffect-class.html#__init__ +timeside.api.IEncoder timeside.api.IEncoder-class.html +timeside.api.IProcessor.process timeside.api.IProcessor-class.html#process +timeside.api.IEncoder.file_extension timeside.api.IEncoder-class.html#file_extension +timeside.api.IProcessor.channels timeside.api.IProcessor-class.html#channels +timeside.api.IProcessor.samplerate timeside.api.IProcessor-class.html#samplerate +timeside.api.IProcessor.id timeside.api.IProcessor-class.html#id +timeside.api.IEncoder.__init__ timeside.api.IEncoder-class.html#__init__ +timeside.api.IProcessor.nframes timeside.api.IProcessor-class.html#nframes +timeside.api.IEncoder.set_metadata timeside.api.IEncoder-class.html#set_metadata +timeside.api.IEncoder.mime_type timeside.api.IEncoder-class.html#mime_type +timeside.api.IEncoder.description timeside.api.IEncoder-class.html#description +timeside.api.IEncoder.format timeside.api.IEncoder-class.html#format +timeside.api.IProcessor.setup timeside.api.IProcessor-class.html#setup +timeside.api.IProcessor.release timeside.api.IProcessor-class.html#release +timeside.api.IGrapher timeside.api.IGrapher-class.html +timeside.api.IGrapher.name timeside.api.IGrapher-class.html#name +timeside.api.IGrapher.render timeside.api.IGrapher-class.html#render +timeside.api.IProcessor.process timeside.api.IProcessor-class.html#process +timeside.api.IGrapher.set_colors timeside.api.IGrapher-class.html#set_colors +timeside.api.IProcessor.setup timeside.api.IProcessor-class.html#setup +timeside.api.IProcessor.nframes timeside.api.IProcessor-class.html#nframes +timeside.api.IProcessor.channels timeside.api.IProcessor-class.html#channels +timeside.api.IProcessor.release timeside.api.IProcessor-class.html#release +timeside.api.IProcessor.samplerate timeside.api.IProcessor-class.html#samplerate +timeside.api.IProcessor.id timeside.api.IProcessor-class.html#id +timeside.api.IGrapher.__init__ timeside.api.IGrapher-class.html#__init__ +timeside.api.IProcessor timeside.api.IProcessor-class.html +timeside.api.IProcessor.process timeside.api.IProcessor-class.html#process +timeside.api.IProcessor.setup timeside.api.IProcessor-class.html#setup +timeside.api.IProcessor.nframes timeside.api.IProcessor-class.html#nframes +timeside.api.IProcessor.channels timeside.api.IProcessor-class.html#channels +timeside.api.IProcessor.release timeside.api.IProcessor-class.html#release +timeside.api.IProcessor.samplerate timeside.api.IProcessor-class.html#samplerate +timeside.api.IProcessor.id timeside.api.IProcessor-class.html#id +timeside.api.IValueAnalyzer timeside.api.IValueAnalyzer-class.html +timeside.api.IAnalyzer.name timeside.api.IAnalyzer-class.html#name +timeside.api.IProcessor.process timeside.api.IProcessor-class.html#process +timeside.api.IValueAnalyzer.__str__ timeside.api.IValueAnalyzer-class.html#__str__ +timeside.api.IProcessor.nframes timeside.api.IProcessor-class.html#nframes +timeside.api.IProcessor.channels timeside.api.IProcessor-class.html#channels +timeside.api.IProcessor.id timeside.api.IProcessor-class.html#id +timeside.api.IValueAnalyzer.result timeside.api.IValueAnalyzer-class.html#result +timeside.api.IAnalyzer.__init__ timeside.api.IAnalyzer-class.html#__init__ +timeside.api.IProcessor.release timeside.api.IProcessor-class.html#release +timeside.api.IProcessor.samplerate timeside.api.IProcessor-class.html#samplerate +timeside.api.IProcessor.setup timeside.api.IProcessor-class.html#setup +timeside.api.IAnalyzer.unit timeside.api.IAnalyzer-class.html#unit +timeside.component.Component timeside.component.Component-class.html +timeside.component.Component.__metaclass__ timeside.component.MetaComponent-class.html +timeside.component.ComponentError timeside.component.ComponentError-class.html +timeside.component.Interface timeside.component.Interface-class.html +timeside.component.MetaComponent timeside.component.MetaComponent-class.html +timeside.component.MetaComponent.abstract timeside.component.MetaComponent-class.html#abstract +timeside.component.MetaComponent.implementations timeside.component.MetaComponent-class.html#implementations +timeside.component.MetaComponent.__new__ timeside.component.MetaComponent-class.html#__new__ +timeside.component.MetaComponent.implements timeside.component.MetaComponent-class.html#implements +timeside.core.FixedSizeInputAdapter timeside.core.FixedSizeInputAdapter-class.html +timeside.core.FixedSizeInputAdapter.process timeside.core.FixedSizeInputAdapter-class.html#process +timeside.core.FixedSizeInputAdapter.nframes timeside.core.FixedSizeInputAdapter-class.html#nframes +timeside.core.FixedSizeInputAdapter.__init__ timeside.core.FixedSizeInputAdapter-class.html#__init__ +timeside.core.MetaProcessor timeside.core.MetaProcessor-class.html +timeside.component.MetaComponent.abstract timeside.component.MetaComponent-class.html#abstract +timeside.component.MetaComponent.implementations timeside.component.MetaComponent-class.html#implementations +timeside.core.MetaProcessor.__new__ timeside.core.MetaProcessor-class.html#__new__ +timeside.component.MetaComponent.implements timeside.component.MetaComponent-class.html#implements +timeside.core.MetaProcessor.valid_id timeside.core.MetaProcessor-class.html#valid_id +timeside.core.ProcessPipe timeside.core.ProcessPipe-class.html +timeside.core.ProcessPipe.run timeside.core.ProcessPipe-class.html#run +timeside.core.ProcessPipe.__ior__ timeside.core.ProcessPipe-class.html#__ior__ +timeside.core.ProcessPipe.__or__ timeside.core.ProcessPipe-class.html#__or__ +timeside.core.ProcessPipe.__init__ timeside.core.ProcessPipe-class.html#__init__ +timeside.core.Processor timeside.core.Processor-class.html +timeside.core.Processor.__metaclass__ timeside.core.MetaProcessor-class.html +timeside.core.Processor.process timeside.core.Processor-class.html#process +timeside.core.Processor.setup timeside.core.Processor-class.html#setup +timeside.core.Processor.nframes timeside.core.Processor-class.html#nframes +timeside.core.Processor.channels timeside.core.Processor-class.html#channels +timeside.core.Processor.__del__ timeside.core.Processor-class.html#__del__ +timeside.core.Processor.__or__ timeside.core.Processor-class.html#__or__ +timeside.core.Processor.release timeside.core.Processor-class.html#release +timeside.core.Processor.samplerate timeside.core.Processor-class.html#samplerate +timeside.decode.core.DecoderCore timeside.decode.core.DecoderCore-class.html +timeside.core.Processor.__metaclass__ timeside.core.MetaProcessor-class.html +timeside.decode.core.DecoderCore.process timeside.decode.core.DecoderCore-class.html#process +timeside.core.Processor.setup timeside.core.Processor-class.html#setup +timeside.core.Processor.nframes timeside.core.Processor-class.html#nframes +timeside.core.Processor.channels timeside.core.Processor-class.html#channels +timeside.core.Processor.__del__ timeside.core.Processor-class.html#__del__ +timeside.core.Processor.__or__ timeside.core.Processor-class.html#__or__ +timeside.core.Processor.release timeside.core.Processor-class.html#release +timeside.core.Processor.samplerate timeside.core.Processor-class.html#samplerate +timeside.decode.core.DecoderCore.__init__ timeside.decode.core.DecoderCore-class.html#__init__ +timeside.decode.core.SubProcessPipe timeside.decode.core.SubProcessPipe-class.html +timeside.decode.core.SubProcessPipe.__init__ timeside.decode.core.SubProcessPipe-class.html#__init__ +timeside.decode.flac.FlacDecoder timeside.decode.flac.FlacDecoder-class.html +timeside.core.Processor.__metaclass__ timeside.core.MetaProcessor-class.html +timeside.decode.core.DecoderCore.process timeside.decode.core.DecoderCore-class.html#process +timeside.decode.flac.FlacDecoder.file_extension timeside.decode.flac.FlacDecoder-class.html#file_extension +timeside.core.Processor.channels timeside.core.Processor-class.html#channels +timeside.core.Processor.samplerate timeside.core.Processor-class.html#samplerate +timeside.decode.flac.FlacDecoder.id timeside.decode.flac.FlacDecoder-class.html#id +timeside.decode.core.DecoderCore.__init__ timeside.decode.core.DecoderCore-class.html#__init__ +timeside.decode.flac.FlacDecoder.get_file_info timeside.decode.flac.FlacDecoder-class.html#get_file_info +timeside.core.Processor.nframes timeside.core.Processor-class.html#nframes +timeside.decode.flac.FlacDecoder.mime_type timeside.decode.flac.FlacDecoder-class.html#mime_type +timeside.decode.flac.FlacDecoder.description timeside.decode.flac.FlacDecoder-class.html#description +timeside.decode.flac.FlacDecoder.format timeside.decode.flac.FlacDecoder-class.html#format +timeside.core.Processor.__del__ timeside.core.Processor-class.html#__del__ +timeside.core.Processor.__or__ timeside.core.Processor-class.html#__or__ +timeside.core.Processor.setup timeside.core.Processor-class.html#setup +timeside.core.Processor.release timeside.core.Processor-class.html#release +timeside.decode.mp3.Mp3Decoder timeside.decode.mp3.Mp3Decoder-class.html +timeside.core.Processor.__metaclass__ timeside.core.MetaProcessor-class.html +timeside.decode.core.DecoderCore.process timeside.decode.core.DecoderCore-class.html#process +timeside.decode.mp3.Mp3Decoder.file_extension timeside.decode.mp3.Mp3Decoder-class.html#file_extension +timeside.core.Processor.channels timeside.core.Processor-class.html#channels +timeside.core.Processor.samplerate timeside.core.Processor-class.html#samplerate +timeside.decode.mp3.Mp3Decoder.id timeside.decode.mp3.Mp3Decoder-class.html#id +timeside.decode.mp3.Mp3Decoder.__init__ timeside.decode.mp3.Mp3Decoder-class.html#__init__ +timeside.decode.mp3.Mp3Decoder.get_file_info timeside.decode.mp3.Mp3Decoder-class.html#get_file_info +timeside.core.Processor.nframes timeside.core.Processor-class.html#nframes +timeside.decode.mp3.Mp3Decoder.mime_type timeside.decode.mp3.Mp3Decoder-class.html#mime_type +timeside.decode.mp3.Mp3Decoder.description timeside.decode.mp3.Mp3Decoder-class.html#description +timeside.decode.mp3.Mp3Decoder.format timeside.decode.mp3.Mp3Decoder-class.html#format +timeside.core.Processor.__del__ timeside.core.Processor-class.html#__del__ +timeside.core.Processor.__or__ timeside.core.Processor-class.html#__or__ +timeside.core.Processor.setup timeside.core.Processor-class.html#setup +timeside.core.Processor.release timeside.core.Processor-class.html#release +timeside.decode.ogg.OggDecoder timeside.decode.ogg.OggDecoder-class.html +timeside.core.Processor.__metaclass__ timeside.core.MetaProcessor-class.html +timeside.decode.core.DecoderCore.process timeside.decode.core.DecoderCore-class.html#process +timeside.decode.ogg.OggDecoder.file_extension timeside.decode.ogg.OggDecoder-class.html#file_extension +timeside.core.Processor.channels timeside.core.Processor-class.html#channels +timeside.core.Processor.samplerate timeside.core.Processor-class.html#samplerate +timeside.decode.ogg.OggDecoder.id timeside.decode.ogg.OggDecoder-class.html#id +timeside.decode.core.DecoderCore.__init__ timeside.decode.core.DecoderCore-class.html#__init__ +timeside.decode.ogg.OggDecoder.get_file_info timeside.decode.ogg.OggDecoder-class.html#get_file_info +timeside.core.Processor.nframes timeside.core.Processor-class.html#nframes +timeside.decode.ogg.OggDecoder.mime_type timeside.decode.ogg.OggDecoder-class.html#mime_type +timeside.decode.ogg.OggDecoder.description timeside.decode.ogg.OggDecoder-class.html#description +timeside.decode.ogg.OggDecoder.format timeside.decode.ogg.OggDecoder-class.html#format +timeside.core.Processor.__del__ timeside.core.Processor-class.html#__del__ +timeside.core.Processor.__or__ timeside.core.Processor-class.html#__or__ +timeside.core.Processor.setup timeside.core.Processor-class.html#setup +timeside.core.Processor.release timeside.core.Processor-class.html#release +timeside.decode.wav.WavDecoder timeside.decode.wav.WavDecoder-class.html +timeside.core.Processor.__metaclass__ timeside.core.MetaProcessor-class.html +timeside.decode.core.DecoderCore.process timeside.decode.core.DecoderCore-class.html#process +timeside.decode.wav.WavDecoder.file_extension timeside.decode.wav.WavDecoder-class.html#file_extension +timeside.core.Processor.channels timeside.core.Processor-class.html#channels +timeside.core.Processor.samplerate timeside.core.Processor-class.html#samplerate +timeside.decode.wav.WavDecoder.id timeside.decode.wav.WavDecoder-class.html#id +timeside.decode.core.DecoderCore.__init__ timeside.decode.core.DecoderCore-class.html#__init__ +timeside.decode.wav.WavDecoder.get_file_info timeside.decode.wav.WavDecoder-class.html#get_file_info +timeside.core.Processor.nframes timeside.core.Processor-class.html#nframes +timeside.decode.wav.WavDecoder.mime_type timeside.decode.wav.WavDecoder-class.html#mime_type +timeside.decode.wav.WavDecoder.description timeside.decode.wav.WavDecoder-class.html#description +timeside.decode.wav.WavDecoder.format timeside.decode.wav.WavDecoder-class.html#format +timeside.core.Processor.__del__ timeside.core.Processor-class.html#__del__ +timeside.core.Processor.__or__ timeside.core.Processor-class.html#__or__ +timeside.core.Processor.setup timeside.core.Processor-class.html#setup +timeside.core.Processor.release timeside.core.Processor-class.html#release +timeside.encode.core.EncoderCore timeside.encode.core.EncoderCore-class.html +timeside.core.Processor.__metaclass__ timeside.core.MetaProcessor-class.html +timeside.core.Processor.process timeside.core.Processor-class.html#process +timeside.core.Processor.setup timeside.core.Processor-class.html#setup +timeside.core.Processor.nframes timeside.core.Processor-class.html#nframes +timeside.core.Processor.channels timeside.core.Processor-class.html#channels +timeside.core.Processor.__del__ timeside.core.Processor-class.html#__del__ +timeside.encode.core.EncoderCore.core_process timeside.encode.core.EncoderCore-class.html#core_process +timeside.core.Processor.__or__ timeside.core.Processor-class.html#__or__ +timeside.core.Processor.release timeside.core.Processor-class.html#release +timeside.core.Processor.samplerate timeside.core.Processor-class.html#samplerate +timeside.encode.core.SubProcessPipe timeside.encode.core.SubProcessPipe-class.html +timeside.encode.core.SubProcessPipe.__init__ timeside.encode.core.SubProcessPipe-class.html#__init__ +timeside.encode.flac.FlacEncoder timeside.encode.flac.FlacEncoder-class.html +timeside.core.Processor.__metaclass__ timeside.core.MetaProcessor-class.html +timeside.encode.flac.FlacEncoder.process timeside.encode.flac.FlacEncoder-class.html#process +timeside.encode.flac.FlacEncoder.file_extension timeside.encode.flac.FlacEncoder-class.html#file_extension +timeside.core.Processor.channels timeside.core.Processor-class.html#channels +timeside.core.Processor.samplerate timeside.core.Processor-class.html#samplerate +timeside.encode.flac.FlacEncoder.id timeside.encode.flac.FlacEncoder-class.html#id +timeside.encode.flac.FlacEncoder.__init__ timeside.encode.flac.FlacEncoder-class.html#__init__ +timeside.encode.flac.FlacEncoder.get_file_info timeside.encode.flac.FlacEncoder-class.html#get_file_info +timeside.core.Processor.nframes timeside.core.Processor-class.html#nframes +timeside.encode.core.EncoderCore.core_process timeside.encode.core.EncoderCore-class.html#core_process +timeside.encode.flac.FlacEncoder.mime_type timeside.encode.flac.FlacEncoder-class.html#mime_type +timeside.encode.flac.FlacEncoder.description timeside.encode.flac.FlacEncoder-class.html#description +timeside.encode.flac.FlacEncoder.format timeside.encode.flac.FlacEncoder-class.html#format +timeside.core.Processor.__del__ timeside.core.Processor-class.html#__del__ +timeside.encode.flac.FlacEncoder.write_tags timeside.encode.flac.FlacEncoder-class.html#write_tags +timeside.core.Processor.__or__ timeside.core.Processor-class.html#__or__ +timeside.encode.flac.FlacEncoder.get_args timeside.encode.flac.FlacEncoder-class.html#get_args +timeside.core.Processor.setup timeside.core.Processor-class.html#setup +timeside.core.Processor.release timeside.core.Processor-class.html#release +timeside.encode.mp3.Mp3Encoder timeside.encode.mp3.Mp3Encoder-class.html +timeside.core.Processor.__metaclass__ timeside.core.MetaProcessor-class.html +timeside.encode.mp3.Mp3Encoder.process timeside.encode.mp3.Mp3Encoder-class.html#process +timeside.encode.mp3.Mp3Encoder.file_extension timeside.encode.mp3.Mp3Encoder-class.html#file_extension +timeside.core.Processor.channels timeside.core.Processor-class.html#channels +timeside.core.Processor.samplerate timeside.core.Processor-class.html#samplerate +timeside.encode.mp3.Mp3Encoder.id timeside.encode.mp3.Mp3Encoder-class.html#id +timeside.encode.mp3.Mp3Encoder.__init__ timeside.encode.mp3.Mp3Encoder-class.html#__init__ +timeside.encode.mp3.Mp3Encoder.get_file_info timeside.encode.mp3.Mp3Encoder-class.html#get_file_info +timeside.core.Processor.nframes timeside.core.Processor-class.html#nframes +timeside.encode.core.EncoderCore.core_process timeside.encode.core.EncoderCore-class.html#core_process +timeside.encode.mp3.Mp3Encoder.mime_type timeside.encode.mp3.Mp3Encoder-class.html#mime_type +timeside.encode.mp3.Mp3Encoder.description timeside.encode.mp3.Mp3Encoder-class.html#description +timeside.encode.mp3.Mp3Encoder.format timeside.encode.mp3.Mp3Encoder-class.html#format +timeside.core.Processor.__del__ timeside.core.Processor-class.html#__del__ +timeside.encode.mp3.Mp3Encoder.write_tags timeside.encode.mp3.Mp3Encoder-class.html#write_tags +timeside.core.Processor.__or__ timeside.core.Processor-class.html#__or__ +timeside.encode.mp3.Mp3Encoder.get_args timeside.encode.mp3.Mp3Encoder-class.html#get_args +timeside.core.Processor.setup timeside.core.Processor-class.html#setup +timeside.core.Processor.release timeside.core.Processor-class.html#release +timeside.encode.ogg.OggVorbisEncoder timeside.encode.ogg.OggVorbisEncoder-class.html +timeside.core.Processor.__metaclass__ timeside.core.MetaProcessor-class.html +timeside.encode.ogg.OggVorbisEncoder.process timeside.encode.ogg.OggVorbisEncoder-class.html#process +timeside.encode.ogg.OggVorbisEncoder.file_extension timeside.encode.ogg.OggVorbisEncoder-class.html#file_extension +timeside.core.Processor.channels timeside.core.Processor-class.html#channels +timeside.core.Processor.samplerate timeside.core.Processor-class.html#samplerate +timeside.encode.ogg.OggVorbisEncoder.id timeside.encode.ogg.OggVorbisEncoder-class.html#id +timeside.encode.ogg.OggVorbisEncoder.__init__ timeside.encode.ogg.OggVorbisEncoder-class.html#__init__ +timeside.encode.ogg.OggVorbisEncoder.get_file_info timeside.encode.ogg.OggVorbisEncoder-class.html#get_file_info +timeside.core.Processor.nframes timeside.core.Processor-class.html#nframes +timeside.encode.core.EncoderCore.core_process timeside.encode.core.EncoderCore-class.html#core_process +timeside.encode.ogg.OggVorbisEncoder.mime_type timeside.encode.ogg.OggVorbisEncoder-class.html#mime_type +timeside.encode.ogg.OggVorbisEncoder.description timeside.encode.ogg.OggVorbisEncoder-class.html#description +timeside.encode.ogg.OggVorbisEncoder.format timeside.encode.ogg.OggVorbisEncoder-class.html#format +timeside.core.Processor.__del__ timeside.core.Processor-class.html#__del__ +timeside.encode.ogg.OggVorbisEncoder.write_tags timeside.encode.ogg.OggVorbisEncoder-class.html#write_tags +timeside.core.Processor.__or__ timeside.core.Processor-class.html#__or__ +timeside.encode.ogg.OggVorbisEncoder.get_args timeside.encode.ogg.OggVorbisEncoder-class.html#get_args +timeside.core.Processor.setup timeside.core.Processor-class.html#setup +timeside.core.Processor.release timeside.core.Processor-class.html#release +timeside.encode.wav.WavEncoder timeside.encode.wav.WavEncoder-class.html +timeside.core.Processor.__metaclass__ timeside.core.MetaProcessor-class.html +timeside.encode.wav.WavEncoder.process timeside.encode.wav.WavEncoder-class.html#process +timeside.encode.wav.WavEncoder.file_extension timeside.encode.wav.WavEncoder-class.html#file_extension +timeside.core.Processor.channels timeside.core.Processor-class.html#channels +timeside.core.Processor.samplerate timeside.core.Processor-class.html#samplerate +timeside.encode.wav.WavEncoder.id timeside.encode.wav.WavEncoder-class.html#id +timeside.encode.wav.WavEncoder.__init__ timeside.encode.wav.WavEncoder-class.html#__init__ +timeside.encode.wav.WavEncoder.get_file_info timeside.encode.wav.WavEncoder-class.html#get_file_info +timeside.core.Processor.nframes timeside.core.Processor-class.html#nframes +timeside.encode.core.EncoderCore.core_process timeside.encode.core.EncoderCore-class.html#core_process +timeside.encode.wav.WavEncoder.mime_type timeside.encode.wav.WavEncoder-class.html#mime_type +timeside.encode.wav.WavEncoder.description timeside.encode.wav.WavEncoder-class.html#description +timeside.encode.wav.WavEncoder.format timeside.encode.wav.WavEncoder-class.html#format +timeside.core.Processor.__del__ timeside.core.Processor-class.html#__del__ +timeside.core.Processor.__or__ timeside.core.Processor-class.html#__or__ +timeside.core.Processor.setup timeside.core.Processor-class.html#setup +timeside.core.Processor.release timeside.core.Processor-class.html#release +timeside.exceptions.ApiError timeside.exceptions.ApiError-class.html +timeside.exceptions.Error timeside.exceptions.Error-class.html +timeside.exceptions.SubProcessError timeside.exceptions.SubProcessError-class.html +timeside.exceptions.SubProcessError.__str__ timeside.exceptions.SubProcessError-class.html#__str__ +timeside.exceptions.SubProcessError.__init__ timeside.exceptions.SubProcessError-class.html#__init__ +timeside.grapher.core.Noise timeside.grapher.core.Noise-class.html +timeside.grapher.core.Noise.read_frames timeside.grapher.core.Noise-class.html#read_frames +timeside.grapher.core.Noise.get_samplerate timeside.grapher.core.Noise-class.html#get_samplerate +timeside.grapher.core.Noise.get_nframes timeside.grapher.core.Noise-class.html#get_nframes +timeside.grapher.core.Noise.seek timeside.grapher.core.Noise-class.html#seek +timeside.grapher.core.Noise.__init__ timeside.grapher.core.Noise-class.html#__init__ +timeside.grapher.core.Noise.get_channels timeside.grapher.core.Noise-class.html#get_channels +timeside.grapher.core.SpectralCentroid timeside.grapher.core.SpectralCentroid-class.html +timeside.grapher.core.SpectralCentroid.process timeside.grapher.core.SpectralCentroid-class.html#process +timeside.grapher.core.SpectralCentroid.__init__ timeside.grapher.core.SpectralCentroid-class.html#__init__ +timeside.grapher.core.SpectrogramImage timeside.grapher.core.SpectrogramImage-class.html +timeside.grapher.core.SpectrogramImage.process timeside.grapher.core.SpectrogramImage-class.html#process +timeside.grapher.core.SpectrogramImage.save timeside.grapher.core.SpectrogramImage-class.html#save +timeside.grapher.core.SpectrogramImage.draw_spectrum timeside.grapher.core.SpectrogramImage-class.html#draw_spectrum +timeside.grapher.core.SpectrogramImage.__init__ timeside.grapher.core.SpectrogramImage-class.html#__init__ +timeside.grapher.core.WaveformImage timeside.grapher.core.WaveformImage-class.html +timeside.grapher.core.WaveformImage.draw_peaks timeside.grapher.core.WaveformImage-class.html#draw_peaks +timeside.grapher.core.WaveformImage.peaks timeside.grapher.core.WaveformImage-class.html#peaks +timeside.grapher.core.WaveformImage.process timeside.grapher.core.WaveformImage-class.html#process +timeside.grapher.core.WaveformImage.__init__ timeside.grapher.core.WaveformImage-class.html#__init__ +timeside.grapher.core.WaveformImage.save timeside.grapher.core.WaveformImage-class.html#save +timeside.grapher.core.WaveformImage.draw_anti_aliased_pixels timeside.grapher.core.WaveformImage-class.html#draw_anti_aliased_pixels +timeside.grapher.core.WaveformImage.color_from_value timeside.grapher.core.WaveformImage-class.html#color_from_value +timeside.grapher.spectrogram_audiolab.SpectrogramGrapherAudiolab timeside.grapher.spectrogram_audiolab.SpectrogramGrapherAudiolab-class.html +timeside.core.Processor.__metaclass__ timeside.core.MetaProcessor-class.html +timeside.grapher.spectrogram_audiolab.SpectrogramGrapherAudiolab.render timeside.grapher.spectrogram_audiolab.SpectrogramGrapherAudiolab-class.html#render +timeside.core.Processor.process timeside.core.Processor-class.html#process +timeside.core.Processor.channels timeside.core.Processor-class.html#channels +timeside.core.Processor.samplerate timeside.core.Processor-class.html#samplerate +timeside.grapher.spectrogram_audiolab.SpectrogramGrapherAudiolab.id timeside.grapher.spectrogram_audiolab.SpectrogramGrapherAudiolab-class.html#id +timeside.grapher.spectrogram_audiolab.SpectrogramGrapherAudiolab.set_colors timeside.grapher.spectrogram_audiolab.SpectrogramGrapherAudiolab-class.html#set_colors +timeside.core.Processor.nframes timeside.core.Processor-class.html#nframes +timeside.grapher.spectrogram_audiolab.SpectrogramGrapherAudiolab.color_scheme timeside.grapher.spectrogram_audiolab.SpectrogramGrapherAudiolab-class.html#color_scheme +timeside.core.Processor.__del__ timeside.core.Processor-class.html#__del__ +timeside.grapher.spectrogram_audiolab.SpectrogramGrapherAudiolab.bg_color timeside.grapher.spectrogram_audiolab.SpectrogramGrapherAudiolab-class.html#bg_color +timeside.core.Processor.__or__ timeside.core.Processor-class.html#__or__ +timeside.grapher.spectrogram_audiolab.SpectrogramGrapherAudiolab.name timeside.grapher.spectrogram_audiolab.SpectrogramGrapherAudiolab-class.html#name +timeside.core.Processor.setup timeside.core.Processor-class.html#setup +timeside.core.Processor.release timeside.core.Processor-class.html#release +timeside.grapher.waveform_audiolab.WaveFormGrapherAudiolab timeside.grapher.waveform_audiolab.WaveFormGrapherAudiolab-class.html +timeside.core.Processor.__metaclass__ timeside.core.MetaProcessor-class.html +timeside.grapher.waveform_audiolab.WaveFormGrapherAudiolab.render timeside.grapher.waveform_audiolab.WaveFormGrapherAudiolab-class.html#render +timeside.core.Processor.process timeside.core.Processor-class.html#process +timeside.core.Processor.channels timeside.core.Processor-class.html#channels +timeside.core.Processor.samplerate timeside.core.Processor-class.html#samplerate +timeside.grapher.waveform_audiolab.WaveFormGrapherAudiolab.id timeside.grapher.waveform_audiolab.WaveFormGrapherAudiolab-class.html#id +timeside.grapher.waveform_audiolab.WaveFormGrapherAudiolab.set_colors timeside.grapher.waveform_audiolab.WaveFormGrapherAudiolab-class.html#set_colors +timeside.core.Processor.nframes timeside.core.Processor-class.html#nframes +timeside.grapher.waveform_audiolab.WaveFormGrapherAudiolab.color_scheme timeside.grapher.waveform_audiolab.WaveFormGrapherAudiolab-class.html#color_scheme +timeside.core.Processor.__del__ timeside.core.Processor-class.html#__del__ +timeside.grapher.waveform_audiolab.WaveFormGrapherAudiolab.bg_color timeside.grapher.waveform_audiolab.WaveFormGrapherAudiolab-class.html#bg_color +timeside.core.Processor.__or__ timeside.core.Processor-class.html#__or__ +timeside.grapher.waveform_audiolab.WaveFormGrapherAudiolab.name timeside.grapher.waveform_audiolab.WaveFormGrapherAudiolab-class.html#name +timeside.core.Processor.setup timeside.core.Processor-class.html#setup +timeside.core.Processor.release timeside.core.Processor-class.html#release +timeside.metadata.Metadata timeside.metadata.Metadata-class.html +timeside.tests.TestCase timeside.tests.TestCase-class.html +unittest.TestCase.failureException exceptions.AssertionError-class.html +timeside.tests.TestCase.assertSameList timeside.tests.TestCase-class.html#assertSameList +timeside.tests.TestRunner timeside.tests.TestRunner-class.html +timeside.tests.TestRunner._makeResult timeside.tests.TestRunner-class.html#_makeResult +timeside.tests.TestRunner.run timeside.tests.TestRunner-class.html#run +timeside.tests.TestRunner.__init__ timeside.tests.TestRunner-class.html#__init__ +timeside.tests._TextTestResult timeside.tests._TextTestResult-class.html +timeside.tests._TextTestResult.separator1 timeside.tests._TextTestResult-class.html#separator1 +timeside.tests._TextTestResult.separator2 timeside.tests._TextTestResult-class.html#separator2 +timeside.tests._TextTestResult.__init__ timeside.tests._TextTestResult-class.html#__init__ +timeside.tests._TextTestResult.printErrorList timeside.tests._TextTestResult-class.html#printErrorList +timeside.tests._TextTestResult.addSuccess timeside.tests._TextTestResult-class.html#addSuccess +timeside.tests._TextTestResult.getDescription timeside.tests._TextTestResult-class.html#getDescription +timeside.tests._TextTestResult.addFailure timeside.tests._TextTestResult-class.html#addFailure +timeside.tests._TextTestResult.addError timeside.tests._TextTestResult-class.html#addError +timeside.tests._TextTestResult.startTest timeside.tests._TextTestResult-class.html#startTest +timeside.tests._TextTestResult.printErrors timeside.tests._TextTestResult-class.html#printErrors +timeside.tests._WritelnDecorator timeside.tests._WritelnDecorator-class.html +timeside.tests._WritelnDecorator.writeln timeside.tests._WritelnDecorator-class.html#writeln +timeside.tests._WritelnDecorator.__getattr__ timeside.tests._WritelnDecorator-class.html#__getattr__ +timeside.tests._WritelnDecorator.__init__ timeside.tests._WritelnDecorator-class.html#__init__ +timeside.tests.api.examples.Duration timeside.tests.api.examples.Duration-class.html +timeside.core.Processor.__metaclass__ timeside.core.MetaProcessor-class.html +timeside.core.Processor.process timeside.core.Processor-class.html#process +timeside.core.Processor.channels timeside.core.Processor-class.html#channels +timeside.tests.api.examples.Duration.result timeside.tests.api.examples.Duration-class.html#result +timeside.core.Processor.samplerate timeside.core.Processor-class.html#samplerate +timeside.tests.api.examples.Duration.id timeside.tests.api.examples.Duration-class.html#id +timeside.tests.api.examples.Duration.unit timeside.tests.api.examples.Duration-class.html#unit +timeside.core.Processor.nframes timeside.core.Processor-class.html#nframes +timeside.core.Processor.__del__ timeside.core.Processor-class.html#__del__ +timeside.core.Processor.__or__ timeside.core.Processor-class.html#__or__ +timeside.tests.api.examples.Duration.name timeside.tests.api.examples.Duration-class.html#name +timeside.tests.api.examples.Duration.setup timeside.tests.api.examples.Duration-class.html#setup +timeside.core.Processor.release timeside.core.Processor-class.html#release +timeside.tests.api.examples.FileDecoder timeside.tests.api.examples.FileDecoder-class.html +timeside.core.Processor.__metaclass__ timeside.core.MetaProcessor-class.html +timeside.tests.api.examples.FileDecoder.encoding timeside.tests.api.examples.FileDecoder-class.html#encoding +timeside.tests.api.examples.FileDecoder.process timeside.tests.api.examples.FileDecoder-class.html#process +timeside.tests.api.examples.FileDecoder.channels timeside.tests.api.examples.FileDecoder-class.html#channels +timeside.tests.api.examples.FileDecoder.samplerate timeside.tests.api.examples.FileDecoder-class.html#samplerate +timeside.tests.api.examples.FileDecoder.id timeside.tests.api.examples.FileDecoder-class.html#id +timeside.tests.api.examples.FileDecoder.__init__ timeside.tests.api.examples.FileDecoder-class.html#__init__ +timeside.tests.api.examples.FileDecoder.nframes timeside.tests.api.examples.FileDecoder-class.html#nframes +timeside.tests.api.examples.FileDecoder.metadata timeside.tests.api.examples.FileDecoder-class.html#metadata +timeside.tests.api.examples.FileDecoder.format timeside.tests.api.examples.FileDecoder-class.html#format +timeside.core.Processor.__del__ timeside.core.Processor-class.html#__del__ +timeside.core.Processor.__or__ timeside.core.Processor-class.html#__or__ +timeside.tests.api.examples.FileDecoder.setup timeside.tests.api.examples.FileDecoder-class.html#setup +timeside.tests.api.examples.FileDecoder.release timeside.tests.api.examples.FileDecoder-class.html#release +timeside.tests.api.examples.FileDecoder.resolution timeside.tests.api.examples.FileDecoder-class.html#resolution +timeside.tests.api.examples.FixedInputProcessor timeside.tests.api.examples.FixedInputProcessor-class.html +timeside.core.Processor.__metaclass__ timeside.core.MetaProcessor-class.html +timeside.tests.api.examples.FixedInputProcessor.process timeside.tests.api.examples.FixedInputProcessor-class.html#process +timeside.core.Processor.channels timeside.core.Processor-class.html#channels +timeside.tests.api.examples.FixedInputProcessor.BUFFER_SIZE timeside.tests.api.examples.FixedInputProcessor-class.html#BUFFER_SIZE +timeside.core.Processor.samplerate timeside.core.Processor-class.html#samplerate +timeside.tests.api.examples.FixedInputProcessor.id timeside.tests.api.examples.FixedInputProcessor-class.html#id +timeside.core.Processor.nframes timeside.core.Processor-class.html#nframes +timeside.core.Processor.__del__ timeside.core.Processor-class.html#__del__ +timeside.core.Processor.release timeside.core.Processor-class.html#release +timeside.core.Processor.__or__ timeside.core.Processor-class.html#__or__ +timeside.tests.api.examples.FixedInputProcessor.setup timeside.tests.api.examples.FixedInputProcessor-class.html#setup +timeside.tests.api.examples.Gain timeside.tests.api.examples.Gain-class.html +timeside.core.Processor.__metaclass__ timeside.core.MetaProcessor-class.html +timeside.tests.api.examples.Gain.process timeside.tests.api.examples.Gain-class.html#process +timeside.core.Processor.channels timeside.core.Processor-class.html#channels +timeside.core.Processor.samplerate timeside.core.Processor-class.html#samplerate +timeside.tests.api.examples.Gain.id timeside.tests.api.examples.Gain-class.html#id +timeside.tests.api.examples.Gain.__init__ timeside.tests.api.examples.Gain-class.html#__init__ +timeside.core.Processor.nframes timeside.core.Processor-class.html#nframes +timeside.core.Processor.__del__ timeside.core.Processor-class.html#__del__ +timeside.core.Processor.release timeside.core.Processor-class.html#release +timeside.core.Processor.__or__ timeside.core.Processor-class.html#__or__ +timeside.tests.api.examples.Gain.name timeside.tests.api.examples.Gain-class.html#name +timeside.core.Processor.setup timeside.core.Processor-class.html#setup +timeside.tests.api.examples.MaxLevel timeside.tests.api.examples.MaxLevel-class.html +timeside.core.Processor.__metaclass__ timeside.core.MetaProcessor-class.html +timeside.tests.api.examples.MaxLevel.process timeside.tests.api.examples.MaxLevel-class.html#process +timeside.core.Processor.channels timeside.core.Processor-class.html#channels +timeside.tests.api.examples.MaxLevel.result timeside.tests.api.examples.MaxLevel-class.html#result +timeside.core.Processor.samplerate timeside.core.Processor-class.html#samplerate +timeside.tests.api.examples.MaxLevel.id timeside.tests.api.examples.MaxLevel-class.html#id +timeside.tests.api.examples.MaxLevel.unit timeside.tests.api.examples.MaxLevel-class.html#unit +timeside.core.Processor.nframes timeside.core.Processor-class.html#nframes +timeside.core.Processor.__del__ timeside.core.Processor-class.html#__del__ +timeside.core.Processor.__or__ timeside.core.Processor-class.html#__or__ +timeside.tests.api.examples.MaxLevel.name timeside.tests.api.examples.MaxLevel-class.html#name +timeside.tests.api.examples.MaxLevel.setup timeside.tests.api.examples.MaxLevel-class.html#setup +timeside.core.Processor.release timeside.core.Processor-class.html#release +timeside.tests.api.examples.Spectrogram timeside.tests.api.examples.Spectrogram-class.html +timeside.core.Processor.__metaclass__ timeside.core.MetaProcessor-class.html +timeside.tests.api.examples.Spectrogram.render timeside.tests.api.examples.Spectrogram-class.html#render +timeside.tests.api.examples.Spectrogram.process timeside.tests.api.examples.Spectrogram-class.html#process +timeside.core.Processor.channels timeside.core.Processor-class.html#channels +timeside.core.Processor.samplerate timeside.core.Processor-class.html#samplerate +timeside.tests.api.examples.Spectrogram.id timeside.tests.api.examples.Spectrogram-class.html#id +timeside.tests.api.examples.Spectrogram.__init__ timeside.tests.api.examples.Spectrogram-class.html#__init__ +timeside.tests.api.examples.Spectrogram.set_colors timeside.tests.api.examples.Spectrogram-class.html#set_colors +timeside.core.Processor.nframes timeside.core.Processor-class.html#nframes +timeside.core.Processor.__del__ timeside.core.Processor-class.html#__del__ +timeside.tests.api.examples.Spectrogram.FFT_SIZE timeside.tests.api.examples.Spectrogram-class.html#FFT_SIZE +timeside.core.Processor.__or__ timeside.core.Processor-class.html#__or__ +timeside.tests.api.examples.Spectrogram.name timeside.tests.api.examples.Spectrogram-class.html#name +timeside.tests.api.examples.Spectrogram.setup timeside.tests.api.examples.Spectrogram-class.html#setup +timeside.core.Processor.release timeside.core.Processor-class.html#release +timeside.tests.api.examples.WavEncoder timeside.tests.api.examples.WavEncoder-class.html +timeside.core.Processor.__metaclass__ timeside.core.MetaProcessor-class.html +timeside.tests.api.examples.WavEncoder.process timeside.tests.api.examples.WavEncoder-class.html#process +timeside.core.Processor.channels timeside.core.Processor-class.html#channels +timeside.core.Processor.samplerate timeside.core.Processor-class.html#samplerate +timeside.tests.api.examples.WavEncoder.id timeside.tests.api.examples.WavEncoder-class.html#id +timeside.tests.api.examples.WavEncoder.__init__ timeside.tests.api.examples.WavEncoder-class.html#__init__ +timeside.core.Processor.nframes timeside.core.Processor-class.html#nframes +timeside.tests.api.examples.WavEncoder.set_metadata timeside.tests.api.examples.WavEncoder-class.html#set_metadata +timeside.tests.api.examples.WavEncoder.file_extension timeside.tests.api.examples.WavEncoder-class.html#file_extension +timeside.tests.api.examples.WavEncoder.mime_type timeside.tests.api.examples.WavEncoder-class.html#mime_type +timeside.tests.api.examples.WavEncoder.description timeside.tests.api.examples.WavEncoder-class.html#description +timeside.core.Processor.__del__ timeside.core.Processor-class.html#__del__ +timeside.core.Processor.__or__ timeside.core.Processor-class.html#__or__ +timeside.tests.api.examples.WavEncoder.setup timeside.tests.api.examples.WavEncoder-class.html#setup +timeside.core.Processor.release timeside.core.Processor-class.html#release +timeside.tests.api.examples.Waveform timeside.tests.api.examples.Waveform-class.html +timeside.core.Processor.__metaclass__ timeside.core.MetaProcessor-class.html +timeside.tests.api.examples.Waveform.render timeside.tests.api.examples.Waveform-class.html#render +timeside.tests.api.examples.Waveform.process timeside.tests.api.examples.Waveform-class.html#process +timeside.core.Processor.channels timeside.core.Processor-class.html#channels +timeside.core.Processor.samplerate timeside.core.Processor-class.html#samplerate +timeside.tests.api.examples.Waveform.id timeside.tests.api.examples.Waveform-class.html#id +timeside.tests.api.examples.Waveform.__init__ timeside.tests.api.examples.Waveform-class.html#__init__ +timeside.tests.api.examples.Waveform.set_colors timeside.tests.api.examples.Waveform-class.html#set_colors +timeside.core.Processor.nframes timeside.core.Processor-class.html#nframes +timeside.core.Processor.__del__ timeside.core.Processor-class.html#__del__ +timeside.tests.api.examples.Waveform.FFT_SIZE timeside.tests.api.examples.Waveform-class.html#FFT_SIZE +timeside.core.Processor.__or__ timeside.core.Processor-class.html#__or__ +timeside.tests.api.examples.Waveform.name timeside.tests.api.examples.Waveform-class.html#name +timeside.tests.api.examples.Waveform.setup timeside.tests.api.examples.Waveform-class.html#setup +timeside.core.Processor.release timeside.core.Processor-class.html#release +timeside.tests.api.gstreamer.FileDecoder timeside.tests.api.gstreamer.FileDecoder-class.html +timeside.core.Processor.__metaclass__ timeside.core.MetaProcessor-class.html +timeside.tests.api.gstreamer.FileDecoder.encoding timeside.tests.api.gstreamer.FileDecoder-class.html#encoding +timeside.tests.api.gstreamer.FileDecoder.process timeside.tests.api.gstreamer.FileDecoder-class.html#process +timeside.tests.api.gstreamer.FileDecoder.discover timeside.tests.api.gstreamer.FileDecoder-class.html#discover +timeside.tests.api.gstreamer.FileDecoder.discovered timeside.tests.api.gstreamer.FileDecoder-class.html#discovered +timeside.tests.api.gstreamer.FileDecoder.audioformat timeside.tests.api.gstreamer.FileDecoder-class.html#audioformat +timeside.tests.api.gstreamer.FileDecoder.samplerate timeside.tests.api.gstreamer.FileDecoder-class.html#samplerate +timeside.tests.api.gstreamer.FileDecoder.id timeside.tests.api.gstreamer.FileDecoder-class.html#id +timeside.tests.api.gstreamer.FileDecoder.__init__ timeside.tests.api.gstreamer.FileDecoder-class.html#__init__ +timeside.tests.api.gstreamer.FileDecoder.nframes timeside.tests.api.gstreamer.FileDecoder-class.html#nframes +timeside.tests.api.gstreamer.FileDecoder.audiorate timeside.tests.api.gstreamer.FileDecoder-class.html#audiorate +timeside.tests.api.gstreamer.FileDecoder.MAX_DISCOVERY_TIME timeside.tests.api.gstreamer.FileDecoder-class.html#MAX_DISCOVERY_TIME +timeside.tests.api.gstreamer.FileDecoder.gst_buffer_to_numpy_array timeside.tests.api.gstreamer.FileDecoder-class.html#gst_buffer_to_numpy_array +timeside.tests.api.gstreamer.FileDecoder.metadata timeside.tests.api.gstreamer.FileDecoder-class.html#metadata +timeside.tests.api.gstreamer.FileDecoder.audionframes timeside.tests.api.gstreamer.FileDecoder-class.html#audionframes +timeside.tests.api.gstreamer.FileDecoder.format timeside.tests.api.gstreamer.FileDecoder-class.html#format +timeside.core.Processor.__del__ timeside.core.Processor-class.html#__del__ +timeside.core.Processor.__or__ timeside.core.Processor-class.html#__or__ +timeside.tests.api.gstreamer.FileDecoder.mimetype timeside.tests.api.gstreamer.FileDecoder-class.html#mimetype +timeside.tests.api.gstreamer.FileDecoder.channels timeside.tests.api.gstreamer.FileDecoder-class.html#channels +timeside.tests.api.gstreamer.FileDecoder.setup timeside.tests.api.gstreamer.FileDecoder-class.html#setup +timeside.tests.api.gstreamer.FileDecoder.audiochannels timeside.tests.api.gstreamer.FileDecoder-class.html#audiochannels +timeside.tests.api.gstreamer.FileDecoder.release timeside.tests.api.gstreamer.FileDecoder-class.html#release +timeside.tests.api.gstreamer.FileDecoder.resolution timeside.tests.api.gstreamer.FileDecoder-class.html#resolution +timeside.tests.api.gstreamer.WavEncoder timeside.tests.api.gstreamer.WavEncoder-class.html +timeside.core.Processor.__metaclass__ timeside.core.MetaProcessor-class.html +timeside.tests.api.gstreamer.WavEncoder.process timeside.tests.api.gstreamer.WavEncoder-class.html#process +timeside.tests.api.gstreamer.WavEncoder.file_extension timeside.tests.api.gstreamer.WavEncoder-class.html#file_extension +timeside.core.Processor.channels timeside.core.Processor-class.html#channels +timeside.core.Processor.samplerate timeside.core.Processor-class.html#samplerate +timeside.tests.api.gstreamer.WavEncoder.id timeside.tests.api.gstreamer.WavEncoder-class.html#id +timeside.tests.api.gstreamer.WavEncoder.__init__ timeside.tests.api.gstreamer.WavEncoder-class.html#__init__ +timeside.core.Processor.nframes timeside.core.Processor-class.html#nframes +timeside.tests.api.gstreamer.WavEncoder.set_metadata timeside.tests.api.gstreamer.WavEncoder-class.html#set_metadata +timeside.tests.api.gstreamer.WavEncoder.numpy_array_to_gst_buffer timeside.tests.api.gstreamer.WavEncoder-class.html#numpy_array_to_gst_buffer +timeside.tests.api.gstreamer.WavEncoder.mime_type timeside.tests.api.gstreamer.WavEncoder-class.html#mime_type +timeside.tests.api.gstreamer.WavEncoder.description timeside.tests.api.gstreamer.WavEncoder-class.html#description +timeside.core.Processor.__del__ timeside.core.Processor-class.html#__del__ +timeside.core.Processor.__or__ timeside.core.Processor-class.html#__or__ +timeside.tests.api.gstreamer.WavEncoder.setup timeside.tests.api.gstreamer.WavEncoder-class.html#setup +timeside.core.Processor.release timeside.core.Processor-class.html#release +timeside.tests.test.TestAnalyzers timeside.tests.test.TestAnalyzers-class.html +timeside.tests.test.TestAnalyzers.analyzers timeside.tests.test.TestAnalyzers-class.html#analyzers +timeside.tests.test.TestAnalyzers.list timeside.tests.test.TestAnalyzers-class.html#list +timeside.tests.test.TestAnalyzers.run timeside.tests.test.TestAnalyzers-class.html#run +timeside.tests.test.TestDecoders timeside.tests.test.TestDecoders-class.html +timeside.tests.test.TestDecoders.export timeside.tests.test.TestDecoders-class.html#export +timeside.tests.test.TestDecoders.get_decoder timeside.tests.test.TestDecoders-class.html#get_decoder +timeside.tests.test.TestDecoders.decoders timeside.tests.test.TestDecoders-class.html#decoders +timeside.tests.test.TestDecoders.list timeside.tests.test.TestDecoders-class.html#list +timeside.tests.test.TestEncoders timeside.tests.test.TestEncoders-class.html +timeside.tests.test.TestEncoders.list timeside.tests.test.TestEncoders-class.html#list +timeside.tests.test.TestEncoders.get_encoder timeside.tests.test.TestEncoders-class.html#get_encoder +timeside.tests.test.TestEncoders.encoders timeside.tests.test.TestEncoders-class.html#encoders +timeside.tests.test.TestEncoders.run timeside.tests.test.TestEncoders-class.html#run +timeside.tests.test.TestGraphers timeside.tests.test.TestGraphers-class.html +timeside.tests.test.TestGraphers.graphers timeside.tests.test.TestGraphers-class.html#graphers +timeside.tests.test.TestGraphers.list timeside.tests.test.TestGraphers-class.html#list +timeside.tests.test.TestGraphers.run timeside.tests.test.TestGraphers-class.html#run +timeside.tests.testcomponent.C1 timeside.tests.testcomponent.C1-class.html +timeside.component.Component.__metaclass__ timeside.component.MetaComponent-class.html +timeside.tests.testcomponent.C10 timeside.tests.testcomponent.C10-class.html +timeside.component.Component.__metaclass__ timeside.component.MetaComponent-class.html +timeside.tests.testcomponent.C10.teststatic timeside.tests.testcomponent.C10-class.html#teststatic +timeside.tests.testcomponent.C10.test timeside.tests.testcomponent.C10-class.html#test +timeside.tests.testcomponent.C11 timeside.tests.testcomponent.C11-class.html +timeside.component.Component.__metaclass__ timeside.component.MetaComponent-class.html +timeside.tests.testcomponent.C2 timeside.tests.testcomponent.C2-class.html +timeside.component.Component.__metaclass__ timeside.component.MetaComponent-class.html +timeside.tests.testcomponent.C3 timeside.tests.testcomponent.C3-class.html +timeside.component.Component.__metaclass__ timeside.component.MetaComponent-class.html +timeside.tests.testcomponent.C4 timeside.tests.testcomponent.C4-class.html +timeside.component.Component.__metaclass__ timeside.component.MetaComponent-class.html +timeside.tests.testcomponent.C5 timeside.tests.testcomponent.C5-class.html +timeside.component.Component.__metaclass__ timeside.component.MetaComponent-class.html +timeside.tests.testcomponent.C6 timeside.tests.testcomponent.C6-class.html +timeside.component.Component.__metaclass__ timeside.component.MetaComponent-class.html +timeside.tests.testcomponent.C7 timeside.tests.testcomponent.C7-class.html +timeside.component.Component.__metaclass__ timeside.component.MetaComponent-class.html +timeside.tests.testcomponent.C8 timeside.tests.testcomponent.C8-class.html +timeside.component.Component.__metaclass__ timeside.component.MetaComponent-class.html +timeside.tests.testcomponent.C9 timeside.tests.testcomponent.C9-class.html +timeside.component.Component.__metaclass__ timeside.component.MetaComponent-class.html +timeside.tests.testcomponent.I1 timeside.tests.testcomponent.I1-class.html +timeside.tests.testcomponent.I10 timeside.tests.testcomponent.I10-class.html +timeside.tests.testcomponent.I10.teststatic timeside.tests.testcomponent.I10-class.html#teststatic +timeside.tests.testcomponent.I10.test timeside.tests.testcomponent.I10-class.html#test +timeside.tests.testcomponent.I11 timeside.tests.testcomponent.I11-class.html +timeside.tests.testcomponent.I2 timeside.tests.testcomponent.I2-class.html +timeside.tests.testcomponent.I3 timeside.tests.testcomponent.I3-class.html +timeside.tests.testcomponent.I4 timeside.tests.testcomponent.I4-class.html +timeside.tests.testcomponent.I5 timeside.tests.testcomponent.I5-class.html +timeside.tests.testcomponent.I6 timeside.tests.testcomponent.I6-class.html +timeside.tests.testcomponent.I7 timeside.tests.testcomponent.I7-class.html +timeside.tests.testcomponent.I8 timeside.tests.testcomponent.I8-class.html +timeside.tests.testcomponent.I9 timeside.tests.testcomponent.I9-class.html +timeside.tests.testcomponent.TestComponentArchitecture timeside.tests.testcomponent.TestComponentArchitecture-class.html +timeside.tests.testcomponent.TestComponentArchitecture.testInterfaceDoc timeside.tests.testcomponent.TestComponentArchitecture-class.html#testInterfaceDoc +unittest.TestCase.failureException exceptions.AssertionError-class.html +timeside.tests.testcomponent.TestComponentArchitecture.testImplementationRedundancy timeside.tests.testcomponent.TestComponentArchitecture-class.html#testImplementationRedundancy +timeside.tests.testcomponent.TestComponentArchitecture.testAbstractImplementation timeside.tests.testcomponent.TestComponentArchitecture-class.html#testAbstractImplementation +timeside.tests.testcomponent.TestComponentArchitecture.testImplementationInheritance timeside.tests.testcomponent.TestComponentArchitecture-class.html#testImplementationInheritance +timeside.tests.testcomponent.TestComponentArchitecture.testInterfaceDocBadMethod timeside.tests.testcomponent.TestComponentArchitecture-class.html#testInterfaceDocBadMethod +timeside.tests.testcomponent.TestComponentArchitecture.testTwoImplementations timeside.tests.testcomponent.TestComponentArchitecture-class.html#testTwoImplementations +timeside.tests.testcomponent.TestComponentArchitecture.testInterfaceInheritance timeside.tests.testcomponent.TestComponentArchitecture-class.html#testInterfaceInheritance +timeside.tests.testcomponent.TestComponentArchitecture.testIntefaceDocReversed timeside.tests.testcomponent.TestComponentArchitecture-class.html#testIntefaceDocReversed +timeside.tests.TestCase.assertSameList timeside.tests.TestCase-class.html#assertSameList +timeside.tests.testcomponent.TestComponentArchitecture.testInterfaceDocStatic timeside.tests.testcomponent.TestComponentArchitecture-class.html#testInterfaceDocStatic +timeside.tests.testcomponent.TestComponentArchitecture.testOneInterface timeside.tests.testcomponent.TestComponentArchitecture-class.html#testOneInterface +timeside.tests.testcomponent.TestComponentArchitecture.testTwoInterfaces timeside.tests.testcomponent.TestComponentArchitecture-class.html#testTwoInterfaces +timeside.tests.testinputadapter.TestFixedSizeInputAdapter timeside.tests.testinputadapter.TestFixedSizeInputAdapter-class.html +timeside.tests.testinputadapter.TestFixedSizeInputAdapter.testPadding timeside.tests.testinputadapter.TestFixedSizeInputAdapter-class.html#testPadding +timeside.tests.testinputadapter.TestFixedSizeInputAdapter.assertIOEquals timeside.tests.testinputadapter.TestFixedSizeInputAdapter-class.html#assertIOEquals +unittest.TestCase.failureException exceptions.AssertionError-class.html +timeside.tests.testinputadapter.TestFixedSizeInputAdapter.setUp timeside.tests.testinputadapter.TestFixedSizeInputAdapter-class.html#setUp +timeside.tests.TestCase.assertSameList timeside.tests.TestCase-class.html#assertSameList +timeside.tests.testinputadapter.TestFixedSizeInputAdapter.testTwoChannels timeside.tests.testinputadapter.TestFixedSizeInputAdapter-class.html#testTwoChannels +timeside.tests.testinputadapter.TestFixedSizeInputAdapter.testSizeMultiple timeside.tests.testinputadapter.TestFixedSizeInputAdapter-class.html#testSizeMultiple diff --git a/doc/epydoc/class-tree.html b/doc/epydoc/class-tree.html new file mode 100644 index 0000000..ec56078 --- /dev/null +++ b/doc/epydoc/class-tree.html @@ -0,0 +1,414 @@ + + + + + Class Hierarchy + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  + + + + +
[hide private]
[frames] | no frames]
+
+
+ [ Module Hierarchy + | Class Hierarchy ] +

+

Class Hierarchy

+ + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/crarr.png b/doc/epydoc/crarr.png new file mode 100644 index 0000000..26b43c5 Binary files /dev/null and b/doc/epydoc/crarr.png differ diff --git a/doc/epydoc/epydoc.css b/doc/epydoc/epydoc.css new file mode 100644 index 0000000..86d4170 --- /dev/null +++ b/doc/epydoc/epydoc.css @@ -0,0 +1,322 @@ + + +/* Epydoc CSS Stylesheet + * + * This stylesheet can be used to customize the appearance of epydoc's + * HTML output. + * + */ + +/* Default Colors & Styles + * - Set the default foreground & background color with 'body'; and + * link colors with 'a:link' and 'a:visited'. + * - Use bold for decision list terms. + * - The heading styles defined here are used for headings *within* + * docstring descriptions. All headings used by epydoc itself use + * either class='epydoc' or class='toc' (CSS styles for both + * defined below). + */ +body { background: #ffffff; color: #000000; } +p { margin-top: 0.5em; margin-bottom: 0.5em; } +a:link { color: #0000ff; } +a:visited { color: #204080; } +dt { font-weight: bold; } +h1 { font-size: +140%; font-style: italic; + font-weight: bold; } +h2 { font-size: +125%; font-style: italic; + font-weight: bold; } +h3 { font-size: +110%; font-style: italic; + font-weight: normal; } +code { font-size: 100%; } +/* N.B.: class, not pseudoclass */ +a.link { font-family: monospace; } + +/* Page Header & Footer + * - The standard page header consists of a navigation bar (with + * pointers to standard pages such as 'home' and 'trees'); a + * breadcrumbs list, which can be used to navigate to containing + * classes or modules; options links, to show/hide private + * variables and to show/hide frames; and a page title (using + *

). The page title may be followed by a link to the + * corresponding source code (using 'span.codelink'). + * - The footer consists of a navigation bar, a timestamp, and a + * pointer to epydoc's homepage. + */ +h1.epydoc { margin: 0; font-size: +140%; font-weight: bold; } +h2.epydoc { font-size: +130%; font-weight: bold; } +h3.epydoc { font-size: +115%; font-weight: bold; + margin-top: 0.2em; } +td h3.epydoc { font-size: +115%; font-weight: bold; + margin-bottom: 0; } +table.navbar { background: #a0c0ff; color: #000000; + border: 2px groove #c0d0d0; } +table.navbar table { color: #000000; } +th.navbar-select { background: #70b0ff; + color: #000000; } +table.navbar a { text-decoration: none; } +table.navbar a:link { color: #0000ff; } +table.navbar a:visited { color: #204080; } +span.breadcrumbs { font-size: 85%; font-weight: bold; } +span.options { font-size: 70%; } +span.codelink { font-size: 85%; } +td.footer { font-size: 85%; } + +/* Table Headers + * - Each summary table and details section begins with a 'header' + * row. This row contains a section title (marked by + * 'span.table-header') as well as a show/hide private link + * (marked by 'span.options', defined above). + * - Summary tables that contain user-defined groups mark those + * groups using 'group header' rows. + */ +td.table-header { background: #70b0ff; color: #000000; + border: 1px solid #608090; } +td.table-header table { color: #000000; } +td.table-header table a:link { color: #0000ff; } +td.table-header table a:visited { color: #204080; } +span.table-header { font-size: 120%; font-weight: bold; } +th.group-header { background: #c0e0f8; color: #000000; + text-align: left; font-style: italic; + font-size: 115%; + border: 1px solid #608090; } + +/* Summary Tables (functions, variables, etc) + * - Each object is described by a single row of the table with + * two cells. The left cell gives the object's type, and is + * marked with 'code.summary-type'. The right cell gives the + * object's name and a summary description. + * - CSS styles for the table's header and group headers are + * defined above, under 'Table Headers' + */ +table.summary { border-collapse: collapse; + background: #e8f0f8; color: #000000; + border: 1px solid #608090; + margin-bottom: 0.5em; } +td.summary { border: 1px solid #608090; } +code.summary-type { font-size: 85%; } +table.summary a:link { color: #0000ff; } +table.summary a:visited { color: #204080; } + + +/* Details Tables (functions, variables, etc) + * - Each object is described in its own div. + * - A single-row summary table w/ table-header is used as + * a header for each details section (CSS style for table-header + * is defined above, under 'Table Headers'). + */ +table.details { border-collapse: collapse; + background: #e8f0f8; color: #000000; + border: 1px solid #608090; + margin: .2em 0 0 0; } +table.details table { color: #000000; } +table.details a:link { color: #0000ff; } +table.details a:visited { color: #204080; } + +/* Fields */ +dl.fields { margin-left: 2em; margin-top: 1em; + margin-bottom: 1em; } +dl.fields dd ul { margin-left: 0em; padding-left: 0em; } +dl.fields dd ul li ul { margin-left: 2em; padding-left: 0em; } +div.fields { margin-left: 2em; } +div.fields p { margin-bottom: 0.5em; } + +/* Index tables (identifier index, term index, etc) + * - link-index is used for indices containing lists of links + * (namely, the identifier index & term index). + * - index-where is used in link indices for the text indicating + * the container/source for each link. + * - metadata-index is used for indices containing metadata + * extracted from fields (namely, the bug index & todo index). + */ +table.link-index { border-collapse: collapse; + background: #e8f0f8; color: #000000; + border: 1px solid #608090; } +td.link-index { border-width: 0px; } +table.link-index a:link { color: #0000ff; } +table.link-index a:visited { color: #204080; } +span.index-where { font-size: 70%; } +table.metadata-index { border-collapse: collapse; + background: #e8f0f8; color: #000000; + border: 1px solid #608090; + margin: .2em 0 0 0; } +td.metadata-index { border-width: 1px; border-style: solid; } +table.metadata-index a:link { color: #0000ff; } +table.metadata-index a:visited { color: #204080; } + +/* Function signatures + * - sig* is used for the signature in the details section. + * - .summary-sig* is used for the signature in the summary + * table, and when listing property accessor functions. + * */ +.sig-name { color: #006080; } +.sig-arg { color: #008060; } +.sig-default { color: #602000; } +.summary-sig { font-family: monospace; } +.summary-sig-name { color: #006080; font-weight: bold; } +table.summary a.summary-sig-name:link + { color: #006080; font-weight: bold; } +table.summary a.summary-sig-name:visited + { color: #006080; font-weight: bold; } +.summary-sig-arg { color: #006040; } +.summary-sig-default { color: #501800; } + +/* Subclass list + */ +ul.subclass-list { display: inline; } +ul.subclass-list li { display: inline; } + +/* To render variables, classes etc. like functions */ +table.summary .summary-name { color: #006080; font-weight: bold; + font-family: monospace; } +table.summary + a.summary-name:link { color: #006080; font-weight: bold; + font-family: monospace; } +table.summary + a.summary-name:visited { color: #006080; font-weight: bold; + font-family: monospace; } + +/* Variable values + * - In the 'variable details' sections, each varaible's value is + * listed in a 'pre.variable' box. The width of this box is + * restricted to 80 chars; if the value's repr is longer than + * this it will be wrapped, using a backslash marked with + * class 'variable-linewrap'. If the value's repr is longer + * than 3 lines, the rest will be ellided; and an ellipsis + * marker ('...' marked with 'variable-ellipsis') will be used. + * - If the value is a string, its quote marks will be marked + * with 'variable-quote'. + * - If the variable is a regexp, it is syntax-highlighted using + * the re* CSS classes. + */ +pre.variable { padding: .5em; margin: 0; + background: #dce4ec; color: #000000; + border: 1px solid #708890; } +.variable-linewrap { color: #604000; font-weight: bold; } +.variable-ellipsis { color: #604000; font-weight: bold; } +.variable-quote { color: #604000; font-weight: bold; } +.variable-group { color: #008000; font-weight: bold; } +.variable-op { color: #604000; font-weight: bold; } +.variable-string { color: #006030; } +.variable-unknown { color: #a00000; font-weight: bold; } +.re { color: #000000; } +.re-char { color: #006030; } +.re-op { color: #600000; } +.re-group { color: #003060; } +.re-ref { color: #404040; } + +/* Base tree + * - Used by class pages to display the base class hierarchy. + */ +pre.base-tree { font-size: 80%; margin: 0; } + +/* Frames-based table of contents headers + * - Consists of two frames: one for selecting modules; and + * the other listing the contents of the selected module. + * - h1.toc is used for each frame's heading + * - h2.toc is used for subheadings within each frame. + */ +h1.toc { text-align: center; font-size: 105%; + margin: 0; font-weight: bold; + padding: 0; } +h2.toc { font-size: 100%; font-weight: bold; + margin: 0.5em 0 0 -0.3em; } + +/* Syntax Highlighting for Source Code + * - doctest examples are displayed in a 'pre.py-doctest' block. + * If the example is in a details table entry, then it will use + * the colors specified by the 'table pre.py-doctest' line. + * - Source code listings are displayed in a 'pre.py-src' block. + * Each line is marked with 'span.py-line' (used to draw a line + * down the left margin, separating the code from the line + * numbers). Line numbers are displayed with 'span.py-lineno'. + * The expand/collapse block toggle button is displayed with + * 'a.py-toggle' (Note: the CSS style for 'a.py-toggle' should not + * modify the font size of the text.) + * - If a source code page is opened with an anchor, then the + * corresponding code block will be highlighted. The code + * block's header is highlighted with 'py-highlight-hdr'; and + * the code block's body is highlighted with 'py-highlight'. + * - The remaining py-* classes are used to perform syntax + * highlighting (py-string for string literals, py-name for names, + * etc.) + */ +pre.py-doctest { padding: .5em; margin: 1em; + background: #e8f0f8; color: #000000; + border: 1px solid #708890; } +table pre.py-doctest { background: #dce4ec; + color: #000000; } +pre.py-src { border: 2px solid #000000; + background: #f0f0f0; color: #000000; } +.py-line { border-left: 2px solid #000000; + margin-left: .2em; padding-left: .4em; } +.py-lineno { font-style: italic; font-size: 90%; + padding-left: .5em; } +a.py-toggle { text-decoration: none; } +div.py-highlight-hdr { border-top: 2px solid #000000; + border-bottom: 2px solid #000000; + background: #d8e8e8; } +div.py-highlight { border-bottom: 2px solid #000000; + background: #d0e0e0; } +.py-prompt { color: #005050; font-weight: bold;} +.py-more { color: #005050; font-weight: bold;} +.py-string { color: #006030; } +.py-comment { color: #003060; } +.py-keyword { color: #600000; } +.py-output { color: #404040; } +.py-name { color: #000050; } +.py-name:link { color: #000050 !important; } +.py-name:visited { color: #000050 !important; } +.py-number { color: #005000; } +.py-defname { color: #000060; font-weight: bold; } +.py-def-name { color: #000060; font-weight: bold; } +.py-base-class { color: #000060; } +.py-param { color: #000060; } +.py-docstring { color: #006030; } +.py-decorator { color: #804020; } +/* Use this if you don't want links to names underlined: */ +/*a.py-name { text-decoration: none; }*/ + +/* Graphs & Diagrams + * - These CSS styles are used for graphs & diagrams generated using + * Graphviz dot. 'img.graph-without-title' is used for bare + * diagrams (to remove the border created by making the image + * clickable). + */ +img.graph-without-title { border: none; } +img.graph-with-title { border: 1px solid #000000; } +span.graph-title { font-weight: bold; } +span.graph-caption { } + +/* General-purpose classes + * - 'p.indent-wrapped-lines' defines a paragraph whose first line + * is not indented, but whose subsequent lines are. + * - The 'nomargin-top' class is used to remove the top margin (e.g. + * from lists). The 'nomargin' class is used to remove both the + * top and bottom margin (but not the left or right margin -- + * for lists, that would cause the bullets to disappear.) + */ +p.indent-wrapped-lines { padding: 0 0 0 7em; text-indent: -7em; + margin: 0; } +.nomargin-top { margin-top: 0; } +.nomargin { margin-top: 0; margin-bottom: 0; } + +/* HTML Log */ +div.log-block { padding: 0; margin: .5em 0 .5em 0; + background: #e8f0f8; color: #000000; + border: 1px solid #000000; } +div.log-error { padding: .1em .3em .1em .3em; margin: 4px; + background: #ffb0b0; color: #000000; + border: 1px solid #000000; } +div.log-warning { padding: .1em .3em .1em .3em; margin: 4px; + background: #ffffb0; color: #000000; + border: 1px solid #000000; } +div.log-info { padding: .1em .3em .1em .3em; margin: 4px; + background: #b0ffb0; color: #000000; + border: 1px solid #000000; } +h2.log-hdr { background: #70b0ff; color: #000000; + margin: 0; padding: 0em 0.5em 0em 0.5em; + border-bottom: 1px solid #000000; font-size: 110%; } +p.log { font-weight: bold; margin: .5em 0 .5em 0; } +tr.opt-changed { color: #000000; font-weight: bold; } +tr.opt-default { color: #606060; } +pre.log { margin: 0; padding: 0; padding-left: 1em; } diff --git a/doc/epydoc/epydoc.js b/doc/epydoc/epydoc.js new file mode 100644 index 0000000..e787dbc --- /dev/null +++ b/doc/epydoc/epydoc.js @@ -0,0 +1,293 @@ +function toggle_private() { + // Search for any private/public links on this page. Store + // their old text in "cmd," so we will know what action to + // take; and change their text to the opposite action. + var cmd = "?"; + var elts = document.getElementsByTagName("a"); + for(var i=0; i...
"; + elt.innerHTML = s; + } +} + +function toggle(id) { + elt = document.getElementById(id+"-toggle"); + if (elt.innerHTML == "-") + collapse(id); + else + expand(id); + return false; +} + +function highlight(id) { + var elt = document.getElementById(id+"-def"); + if (elt) elt.className = "py-highlight-hdr"; + var elt = document.getElementById(id+"-expanded"); + if (elt) elt.className = "py-highlight"; + var elt = document.getElementById(id+"-collapsed"); + if (elt) elt.className = "py-highlight"; +} + +function num_lines(s) { + var n = 1; + var pos = s.indexOf("\n"); + while ( pos > 0) { + n += 1; + pos = s.indexOf("\n", pos+1); + } + return n; +} + +// Collapse all blocks that mave more than `min_lines` lines. +function collapse_all(min_lines) { + var elts = document.getElementsByTagName("div"); + for (var i=0; i 0) + if (elt.id.substring(split, elt.id.length) == "-expanded") + if (num_lines(elt.innerHTML) > min_lines) + collapse(elt.id.substring(0, split)); + } +} + +function expandto(href) { + var start = href.indexOf("#")+1; + if (start != 0 && start != href.length) { + if (href.substring(start, href.length) != "-") { + collapse_all(4); + pos = href.indexOf(".", start); + while (pos != -1) { + var id = href.substring(start, pos); + expand(id); + pos = href.indexOf(".", pos+1); + } + var id = href.substring(start, href.length); + expand(id); + highlight(id); + } + } +} + +function kill_doclink(id) { + var parent = document.getElementById(id); + parent.removeChild(parent.childNodes.item(0)); +} +function auto_kill_doclink(ev) { + if (!ev) var ev = window.event; + if (!this.contains(ev.toElement)) { + var parent = document.getElementById(this.parentID); + parent.removeChild(parent.childNodes.item(0)); + } +} + +function doclink(id, name, targets_id) { + var elt = document.getElementById(id); + + // If we already opened the box, then destroy it. + // (This case should never occur, but leave it in just in case.) + if (elt.childNodes.length > 1) { + elt.removeChild(elt.childNodes.item(0)); + } + else { + // The outer box: relative + inline positioning. + var box1 = document.createElement("div"); + box1.style.position = "relative"; + box1.style.display = "inline"; + box1.style.top = 0; + box1.style.left = 0; + + // A shadow for fun + var shadow = document.createElement("div"); + shadow.style.position = "absolute"; + shadow.style.left = "-1.3em"; + shadow.style.top = "-1.3em"; + shadow.style.background = "#404040"; + + // The inner box: absolute positioning. + var box2 = document.createElement("div"); + box2.style.position = "relative"; + box2.style.border = "1px solid #a0a0a0"; + box2.style.left = "-.2em"; + box2.style.top = "-.2em"; + box2.style.background = "white"; + box2.style.padding = ".3em .4em .3em .4em"; + box2.style.fontStyle = "normal"; + box2.onmouseout=auto_kill_doclink; + box2.parentID = id; + + // Get the targets + var targets_elt = document.getElementById(targets_id); + var targets = targets_elt.getAttribute("targets"); + var links = ""; + target_list = targets.split(","); + for (var i=0; i" + + target[0] + ""; + } + + // Put it all together. + elt.insertBefore(box1, elt.childNodes.item(0)); + //box1.appendChild(box2); + box1.appendChild(shadow); + shadow.appendChild(box2); + box2.innerHTML = + "Which "+name+" do you want to see documentation for?" + + ""; + } + return false; +} + +function get_anchor() { + var href = location.href; + var start = href.indexOf("#")+1; + if ((start != 0) && (start != href.length)) + return href.substring(start, href.length); + } +function redirect_url(dottedName) { + // Scan through each element of the "pages" list, and check + // if "name" matches with any of them. + for (var i=0; i-m" or "-c"; + // extract the portion & compare it to dottedName. + var pagename = pages[i].substring(0, pages[i].length-2); + if (pagename == dottedName.substring(0,pagename.length)) { + + // We've found a page that matches `dottedName`; + // construct its URL, using leftover `dottedName` + // content to form an anchor. + var pagetype = pages[i].charAt(pages[i].length-1); + var url = pagename + ((pagetype=="m")?"-module.html": + "-class.html"); + if (dottedName.length > pagename.length) + url += "#" + dottedName.substring(pagename.length+1, + dottedName.length); + return url; + } + } + } diff --git a/doc/epydoc/exceptions.AssertionError-class.html b/doc/epydoc/exceptions.AssertionError-class.html new file mode 100644 index 0000000..f05f676 --- /dev/null +++ b/doc/epydoc/exceptions.AssertionError-class.html @@ -0,0 +1,289 @@ + + + + + exceptions.AssertionError + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + exceptions :: + AssertionError :: + Class AssertionError + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class AssertionError

+
+   object --+            
+            |            
+BaseException --+        
+                |        
+        Exception --+    
+                    |    
+        StandardError --+
+                        |
+                       AssertionError
+
+ +
+

Assertion failed.

+ + + + + + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
__init__(...)
+ x.__init__(...) initializes x; see x.__class__.__doc__ for signature
+ + +
+ +
+ a new object with type S, a subtype of T + + + + + + +
__new__(T, + S, + ...) + + +
+ +
+

Inherited from BaseException: + __delattr__, + __getattribute__, + __getitem__, + __getslice__, + __reduce__, + __repr__, + __setattr__, + __setstate__, + __str__ +

+

Inherited from object: + __hash__, + __reduce_ex__ +

+
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from BaseException: + args, + message +

+

Inherited from object: + __class__ +

+
+ + + + + + +
+ + + + + +
Method Details[hide private]
+
+ +
+ +
+ + +
+

__init__(...) +
(Constructor) +

+
  +
+ +

x.__init__(...) initializes x; see x.__class__.__doc__ for + signature

+
+
Overrides: + object.__init__ +
+
+
+
+ +
+ +
+ + +
+

__new__(T, + S, + ...) +

+
  +
+ + +
+
Returns: a new object with type S, a subtype of T
+
Overrides: + object.__new__ +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/frames.html b/doc/epydoc/frames.html new file mode 100644 index 0000000..d339ea3 --- /dev/null +++ b/doc/epydoc/frames.html @@ -0,0 +1,17 @@ + + + + + API Documentation + + + + + + + + + diff --git a/doc/epydoc/help.html b/doc/epydoc/help.html new file mode 100644 index 0000000..0409ca9 --- /dev/null +++ b/doc/epydoc/help.html @@ -0,0 +1,268 @@ + + + + + Help + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  + + + + +
[hide private]
[frames] | no frames]
+
+ +

API Documentation

+ +

This document contains the API (Application Programming Interface) +documentation for this project. Documentation for the Python +objects defined by the project is divided into separate pages for each +package, module, and class. The API documentation also includes two +pages containing information about the project as a whole: a trees +page, and an index page.

+ +

Object Documentation

+ +

Each Package Documentation page contains:

+
    +
  • A description of the package.
  • +
  • A list of the modules and sub-packages contained by the + package.
  • +
  • A summary of the classes defined by the package.
  • +
  • A summary of the functions defined by the package.
  • +
  • A summary of the variables defined by the package.
  • +
  • A detailed description of each function defined by the + package.
  • +
  • A detailed description of each variable defined by the + package.
  • +
+ +

Each Module Documentation page contains:

+
    +
  • A description of the module.
  • +
  • A summary of the classes defined by the module.
  • +
  • A summary of the functions defined by the module.
  • +
  • A summary of the variables defined by the module.
  • +
  • A detailed description of each function defined by the + module.
  • +
  • A detailed description of each variable defined by the + module.
  • +
+ +

Each Class Documentation page contains:

+
    +
  • A class inheritance diagram.
  • +
  • A list of known subclasses.
  • +
  • A description of the class.
  • +
  • A summary of the methods defined by the class.
  • +
  • A summary of the instance variables defined by the class.
  • +
  • A summary of the class (static) variables defined by the + class.
  • +
  • A detailed description of each method defined by the + class.
  • +
  • A detailed description of each instance variable defined by the + class.
  • +
  • A detailed description of each class (static) variable defined + by the class.
  • +
+ +

Project Documentation

+ +

The Trees page contains the module and class hierarchies:

+
    +
  • The module hierarchy lists every package and module, with + modules grouped into packages. At the top level, and within each + package, modules and sub-packages are listed alphabetically.
  • +
  • The class hierarchy lists every class, grouped by base + class. If a class has more than one base class, then it will be + listed under each base class. At the top level, and under each base + class, classes are listed alphabetically.
  • +
+ +

The Index page contains indices of terms and + identifiers:

+
    +
  • The term index lists every term indexed by any object's + documentation. For each term, the index provides links to each + place where the term is indexed.
  • +
  • The identifier index lists the (short) name of every package, + module, class, method, function, variable, and parameter. For each + identifier, the index provides a short description, and a link to + its documentation.
  • +
+ +

The Table of Contents

+ +

The table of contents occupies the two frames on the left side of +the window. The upper-left frame displays the project +contents, and the lower-left frame displays the module +contents:

+ + + + + + + + + +
+ Project
Contents
...
+ API
Documentation
Frame


+
+ Module
Contents
 
...
  +

+ +

The project contents frame contains a list of all packages +and modules that are defined by the project. Clicking on an entry +will display its contents in the module contents frame. Clicking on a +special entry, labeled "Everything," will display the contents of +the entire project.

+ +

The module contents frame contains a list of every +submodule, class, type, exception, function, and variable defined by a +module or package. Clicking on an entry will display its +documentation in the API documentation frame. Clicking on the name of +the module, at the top of the frame, will display the documentation +for the module itself.

+ +

The "frames" and "no frames" buttons below the top +navigation bar can be used to control whether the table of contents is +displayed or not.

+ +

The Navigation Bar

+ +

A navigation bar is located at the top and bottom of every page. +It indicates what type of page you are currently viewing, and allows +you to go to related pages. The following table describes the labels +on the navigation bar. Note that not some labels (such as +[Parent]) are not displayed on all pages.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
LabelHighlighted when...Links to...
[Parent](never highlighted) the parent of the current package
[Package]viewing a packagethe package containing the current object +
[Module]viewing a modulethe module containing the current object +
[Class]viewing a class the class containing the current object
[Trees]viewing the trees page the trees page
[Index]viewing the index page the index page
[Help]viewing the help page the help page
+ +

The "show private" and "hide private" buttons below +the top navigation bar can be used to control whether documentation +for private objects is displayed. Private objects are usually defined +as objects whose (short) names begin with a single underscore, but do +not end with an underscore. For example, "_x", +"__pprint", and "epydoc.epytext._tokenize" +are private objects; but "re.sub", +"__init__", and "type_" are not. However, +if a module defines the "__all__" variable, then its +contents are used to decide which objects are private.

+ +

A timestamp below the bottom navigation bar indicates when each +page was last updated.

+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/identifier-index.html b/doc/epydoc/identifier-index.html new file mode 100644 index 0000000..7c30b72 --- /dev/null +++ b/doc/epydoc/identifier-index.html @@ -0,0 +1,1665 @@ + + + + + Identifier Index + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  + + + + +
[hide private]
[frames] | no frames]
+
+ +
+

Identifier Index

+
+[ + A + B + C + D + E + F + G + H + I + J + K + L + M + N + O + P + Q + R + S + T + U + V + W + X + Y + Z + _ +] +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

A

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

B

+ + + + + + + + +

C

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

D

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

E

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

F

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

G

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

I

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

L

+ + + + + + + + + + + + +

M

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

N

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

O

+ + + + + + + + + + + + +

P

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

R

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

S

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

T

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

U

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

V

+ + + + + + + + +

W

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

_

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/index.html b/doc/epydoc/index.html new file mode 100644 index 0000000..d339ea3 --- /dev/null +++ b/doc/epydoc/index.html @@ -0,0 +1,17 @@ + + + + + API Documentation + + + + + + + + + diff --git a/doc/epydoc/module-tree.html b/doc/epydoc/module-tree.html new file mode 100644 index 0000000..c419144 --- /dev/null +++ b/doc/epydoc/module-tree.html @@ -0,0 +1,176 @@ + + + + + Module Hierarchy + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  + + + + +
[hide private]
[frames] | no frames]
+
+
+ [ Module Hierarchy + | Class Hierarchy ] +

+

Module Hierarchy

+ + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/redirect.html b/doc/epydoc/redirect.html new file mode 100644 index 0000000..52cf83a --- /dev/null +++ b/doc/epydoc/redirect.html @@ -0,0 +1,38 @@ +Epydoc Redirect Page + + + + + + + + +

Epydoc Auto-redirect page

+ +

When javascript is enabled, this page will redirect URLs of +the form redirect.html#dotted.name to the +documentation for the object with the given fully-qualified +dotted name.

+

 

+ + + + + diff --git a/doc/epydoc/timeside-module.html b/doc/epydoc/timeside-module.html new file mode 100644 index 0000000..60edb0d --- /dev/null +++ b/doc/epydoc/timeside-module.html @@ -0,0 +1,194 @@ + + + + + timeside + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Package timeside

source code

+ + + + + + + +
+ + + + + +
Submodules[hide private]
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside-pysrc.html b/doc/epydoc/timeside-pysrc.html new file mode 100644 index 0000000..44db7b1 --- /dev/null +++ b/doc/epydoc/timeside-pysrc.html @@ -0,0 +1,126 @@ + + + + + timeside + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside + + + + + + +
[hide private]
[frames] | no frames]
+
+

Source Code for Package timeside

+
+ 1  # -*- coding: utf-8 -*- 
+ 2   
+ 3  from core import * 
+ 4  from metadata import Metadata 
+ 5  import decode 
+ 6  import encode 
+ 7  import analyze 
+ 8  import grapher 
+ 9   
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.analyze-module.html b/doc/epydoc/timeside.analyze-module.html new file mode 100644 index 0000000..81e2708 --- /dev/null +++ b/doc/epydoc/timeside.analyze-module.html @@ -0,0 +1,142 @@ + + + + + timeside.analyze + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package analyze + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Package analyze

source code

+ + + + + + + +
+ + + + + +
Submodules[hide private]
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.analyze-pysrc.html b/doc/epydoc/timeside.analyze-pysrc.html new file mode 100644 index 0000000..85f6307 --- /dev/null +++ b/doc/epydoc/timeside.analyze-pysrc.html @@ -0,0 +1,156 @@ + + + + + timeside.analyze + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package analyze + + + + + + +
[hide private]
[frames] | no frames]
+
+

Source Code for Package timeside.analyze

+
+ 1  # -*- coding: utf-8 -*- 
+ 2  from timeside.analyze.core import * 
+ 3  from timeside.analyze.channels import * 
+ 4  from timeside.analyze.format import * 
+ 5  from timeside.analyze.encoding import * 
+ 6  from timeside.analyze.resolution import * 
+ 7  from timeside.analyze.samplerate import * 
+ 8  from timeside.analyze.duration import * 
+ 9  from timeside.analyze.max_level import * 
+10  from timeside.analyze.mean_level import * 
+11  from timeside.analyze.dc import * 
+12   
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.analyze.channels-module.html b/doc/epydoc/timeside.analyze.channels-module.html new file mode 100644 index 0000000..67fad1a --- /dev/null +++ b/doc/epydoc/timeside.analyze.channels-module.html @@ -0,0 +1,131 @@ + + + + + timeside.analyze.channels + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package analyze :: + Module channels + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Module channels

source code

+ + + + + + + + + +
+ + + + + +
Classes[hide private]
+
+   + + ChannelAnalyser
+ Media item analyzer driver interface +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.analyze.channels-pysrc.html b/doc/epydoc/timeside.analyze.channels-pysrc.html new file mode 100644 index 0000000..4f4a5d0 --- /dev/null +++ b/doc/epydoc/timeside.analyze.channels-pysrc.html @@ -0,0 +1,179 @@ + + + + + timeside.analyze.channels + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package analyze :: + Module channels + + + + + + +
[hide private]
[frames] | no frames]
+
+

Source Code for Module timeside.analyze.channels

+
+ 1  # -*- coding: utf-8 -*- 
+ 2  # 
+ 3  # Copyright (c) 2007-2009 Guillaume Pellerin <yomguy@parisson.com> 
+ 4   
+ 5  # This file is part of TimeSide. 
+ 6   
+ 7  # TimeSide is free software: you can redistribute it and/or modify 
+ 8  # it under the terms of the GNU General Public License as published by 
+ 9  # the Free Software Foundation, either version 2 of the License, or 
+10  # (at your option) any later version. 
+11   
+12  # TimeSide is distributed in the hope that it will be useful, 
+13  # but WITHOUT ANY WARRANTY; without even the implied warranty of 
+14  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
+15  # GNU General Public License for more details. 
+16   
+17  # You should have received a copy of the GNU General Public License 
+18  # along with TimeSide.  If not, see <http://www.gnu.org/licenses/>. 
+19   
+20  # Author: Guillaume Pellerin <yomguy@parisson.com> 
+21   
+22  from timeside.analyze.core import * 
+23  from timeside.api import IAnalyzer 
+24  import numpy 
+
25 +26 -class ChannelAnalyser(AudioProcessor): +
27 """Media item analyzer driver interface""" +28 +29 implements(IAnalyzer) +30 +31 @staticmethod +
32 - def id(): +
33 return "nchannels" +
34 +
35 - def name(self): +
36 return "Channels" +
37 +
38 - def unit(self): +
39 return "" +
40 +
41 - def render(self, media_item, options=None): +
42 self.pre_process(media_item) +43 if self.channels == 1: +44 return 'mono' +45 if self.channels == 2: +46 return 'stereo' +47 else: +48 return self.channels +
49 +
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.analyze.channels.ChannelAnalyser-class.html b/doc/epydoc/timeside.analyze.channels.ChannelAnalyser-class.html new file mode 100644 index 0000000..c252b5f --- /dev/null +++ b/doc/epydoc/timeside.analyze.channels.ChannelAnalyser-class.html @@ -0,0 +1,307 @@ + + + + + timeside.analyze.channels.ChannelAnalyser + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package analyze :: + Module channels :: + Class ChannelAnalyser + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class ChannelAnalyser

source code

+
+         object --+            
+                  |            
+component.Component --+        
+                      |        
+         core.Processor --+    
+                          |    
+        core.AudioProcessor --+
+                              |
+                             ChannelAnalyser
+
+ +
+

Media item analyzer driver interface

+ + + + + + + + + + +
+ + + + + +
Nested Classes[hide private]
+
+

Inherited from core.Processor: + __metaclass__ +

+
+ + + + + + + + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
name(self) + source code + +
+ +
+   + + + + + + +
unit(self) + source code + +
+ +
+   + + + + + + +
render(self, + media_item, + options=None) + source code + +
+ +
+

Inherited from core.AudioProcessor: + __init__, + get_mono_samples, + get_samples, + peaks, + pre_process, + read, + spectral_centroid +

+

Inherited from core.Processor: + __del__, + __or__, + channels, + nframes, + process, + release, + samplerate, + setup +

+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Static Methods[hide private]
+
+   + + + + + + +
id() + source code + +
+ +
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.analyze.core-module.html b/doc/epydoc/timeside.analyze.core-module.html new file mode 100644 index 0000000..30f54dc --- /dev/null +++ b/doc/epydoc/timeside.analyze.core-module.html @@ -0,0 +1,130 @@ + + + + + timeside.analyze.core + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package analyze :: + Module core + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Module core

source code

+ + + + + + + + + +
+ + + + + +
Classes[hide private]
+
+   + + AudioProcessor +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.analyze.core-pysrc.html b/doc/epydoc/timeside.analyze.core-pysrc.html new file mode 100644 index 0000000..8676d52 --- /dev/null +++ b/doc/epydoc/timeside.analyze.core-pysrc.html @@ -0,0 +1,351 @@ + + + + + timeside.analyze.core + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package analyze :: + Module core + + + + + + +
[hide private]
[frames] | no frames]
+
+

Source Code for Module timeside.analyze.core

+
+  1  # -*- coding: utf-8 -*- 
+  2  # 
+  3  # Copyright (c) 2007-2009 Guillaume Pellerin <yomguy@parisson.com> 
+  4   
+  5  # This file is part of TimeSide. 
+  6   
+  7  # TimeSide is free software: you can redistribute it and/or modify 
+  8  # it under the terms of the GNU General Public License as published by 
+  9  # the Free Software Foundation, either version 2 of the License, or 
+ 10  # (at your option) any later version. 
+ 11   
+ 12  # TimeSide is distributed in the hope that it will be useful, 
+ 13  # but WITHOUT ANY WARRANTY; without even the implied warranty of 
+ 14  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
+ 15  # GNU General Public License for more details. 
+ 16   
+ 17  # You should have received a copy of the GNU General Public License 
+ 18  # along with TimeSide.  If not, see <http://www.gnu.org/licenses/>. 
+ 19   
+ 20  # Authors: 
+ 21  #   Bram de Jong <bram.dejong at domain.com where domain in gmail> 
+ 22  #   Guillaume Pellerin <yomguy at parisson.com> 
+ 23   
+ 24  from timeside.core import * 
+ 25  import optparse, math, sys 
+ 26  import numpy 
+ 27  import scikits.audiolab as audiolab 
+ 28   
+ 29  # FIXME: AudioProcessor: wrong name, should be Analyzer or AnalyzerCore 
+
30 -class AudioProcessor(Processor): +
31 +
32 - def __init__(self): +
33 self.fft_size = 2048 + 34 self.window_function = numpy.ones + 35 self.window = self.window_function(self.fft_size) + 36 self.spectrum_range = None + 37 self.lower = 100 + 38 self.higher = 22050 + 39 self.lower_log = math.log10(self.lower) + 40 self.higher_log = math.log10(self.higher) + 41 self.clip = lambda val, low, high: min(high, max(low, val)) +
42 +
43 - def pre_process(self, media_item): +
44 wav_file = media_item + 45 self.audio_file = audiolab.sndfile(wav_file, 'read') + 46 self.frames = self.audio_file.get_nframes() + 47 self.samplerate = self.audio_file.get_samplerate() + 48 self.channels = self.audio_file.get_channels() + 49 self.format = self.audio_file.get_file_format() + 50 self.encoding = self.audio_file.get_encoding() +
51 +
52 - def get_samples(self): +
53 samples = self.audio_file.read_frames(self.frames) + 54 return samples +
55 +
56 - def get_mono_samples(self): +
57 # convert to mono by selecting left channel only + 58 samples = self.get_samples() + 59 if self.channels > 1: + 60 return samples[:,0] + 61 else: + 62 return samples +
63 +
64 - def read(self, start, size, resize_if_less=False): +
65 """ read size samples starting at start, if resize_if_less is True and less than size + 66 samples are read, resize the array to size and fill with zeros """ + 67 + 68 # number of zeros to add to start and end of the buffer + 69 add_to_start = 0 + 70 add_to_end = 0 + 71 + 72 if start < 0: + 73 # the first FFT window starts centered around zero + 74 if size + start <= 0: + 75 if resize_if_less: + 76 return numpy.zeros(size) + 77 else: + 78 return numpy.array([]) + 79 else: + 80 self.audio_file.seek(0) + 81 + 82 add_to_start = -start # remember: start is negative! + 83 to_read = size + start + 84 + 85 if to_read > self.frames: + 86 add_to_end = to_read - self.frames + 87 to_read = self.frames + 88 else: + 89 self.audio_file.seek(start) + 90 + 91 to_read = size + 92 if start + to_read >= self.frames: + 93 to_read = self.frames - start + 94 add_to_end = size - to_read + 95 + 96 try: + 97 samples = self.audio_file.read_frames(to_read) + 98 except IOError: + 99 # this can happen for wave files with broken headers... +100 if resize_if_less: +101 return numpy.zeros(size) +102 else: +103 return numpy.zeros(2) +104 +105 # convert to mono by selecting left channel only +106 if self.channels > 1: +107 samples = samples[:,0] +108 +109 if resize_if_less and (add_to_start > 0 or add_to_end > 0): +110 if add_to_start > 0: +111 samples = numpy.concatenate((numpy.zeros(add_to_start), samples), axis=1) +112 +113 if add_to_end > 0: +114 samples = numpy.resize(samples, size) +115 samples[size - add_to_end:] = 0 +116 +117 return samples +
118 +119 +
120 - def spectral_centroid(self, seek_point, spec_range=120.0): +
121 """ starting at seek_point read fft_size samples, and calculate the spectral centroid """ +122 +123 samples = self.read(seek_point - self.fft_size/2, self.fft_size, True) +124 +125 samples *= self.window +126 fft = numpy.fft.fft(samples) +127 spectrum = numpy.abs(fft[:fft.shape[0] / 2 + 1]) / float(self.fft_size) # normalized abs(FFT) between 0 and 1 +128 length = numpy.float64(spectrum.shape[0]) +129 +130 # scale the db spectrum from [- spec_range db ... 0 db] > [0..1] +131 db_spectrum = ((20*(numpy.log10(spectrum + 1e-30))).clip(-spec_range, 0.0) + spec_range)/spec_range +132 +133 energy = spectrum.sum() +134 spectral_centroid = 0 +135 +136 if energy > 1e-20: +137 # calculate the spectral centroid +138 +139 if self.spectrum_range == None: +140 self.spectrum_range = numpy.arange(length) +141 +142 spectral_centroid = (spectrum * self.spectrum_range).sum() / (energy * (length - 1)) * self.samplerate * 0.5 +143 +144 # clip > log10 > scale between 0 and 1 +145 spectral_centroid = (math.log10(self.clip(spectral_centroid, self.lower, self.higher)) - self.lower_log) / (self.higher_log - self.lower_log) +146 +147 return (spectral_centroid, db_spectrum) +
148 +149 +
150 - def peaks(self, start_seek, end_seek): +
151 """ read all samples between start_seek and end_seek, then find the minimum and maximum peak +152 in that range. Returns that pair in the order they were found. So if min was found first, +153 it returns (min, max) else the other way around. """ +154 +155 # larger blocksizes are faster but take more mem... +156 # Aha, Watson, a clue, a tradeof! +157 block_size = 4096 +158 +159 max_index = -1 +160 max_value = -1 +161 min_index = -1 +162 min_value = 1 +163 +164 if end_seek > self.frames: +165 end_seek = self.frames +166 +167 if block_size > end_seek - start_seek: +168 block_size = end_seek - start_seek +169 +170 if block_size <= 1: +171 samples = self.read(start_seek, 1) +172 return samples[0], samples[0] +173 elif block_size == 2: +174 samples = self.read(start_seek, True) +175 return samples[0], samples[1] +176 +177 for i in range(start_seek, end_seek, block_size): +178 samples = self.read(i, block_size) +179 +180 local_max_index = numpy.argmax(samples) +181 local_max_value = samples[local_max_index] +182 +183 if local_max_value > max_value: +184 max_value = local_max_value +185 max_index = local_max_index +186 +187 local_min_index = numpy.argmin(samples) +188 local_min_value = samples[local_min_index] +189 +190 if local_min_value < min_value: +191 min_value = local_min_value +192 min_index = local_min_index +193 +194 if min_index < max_index: +195 return (min_value, max_value) +196 else: +197 return (max_value, min_value) +
198 +
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.analyze.core.AudioProcessor-class.html b/doc/epydoc/timeside.analyze.core.AudioProcessor-class.html new file mode 100644 index 0000000..971a89b --- /dev/null +++ b/doc/epydoc/timeside.analyze.core.AudioProcessor-class.html @@ -0,0 +1,412 @@ + + + + + timeside.analyze.core.AudioProcessor + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package analyze :: + Module core :: + Class AudioProcessor + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class AudioProcessor

source code

+
+         object --+        
+                  |        
+component.Component --+    
+                      |    
+         core.Processor --+
+                          |
+                         AudioProcessor
+
+ +
Known Subclasses:
+
+ +
+ +
+ + + + + + + + + +
+ + + + + +
Nested Classes[hide private]
+
+

Inherited from core.Processor: + __metaclass__ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
__init__(self)
+ x.__init__(...) initializes x; see x.__class__.__doc__ for signature
+ source code + +
+ +
+   + + + + + + +
get_mono_samples(self) + source code + +
+ +
+   + + + + + + +
get_samples(self) + source code + +
+ +
+   + + + + + + +
peaks(self, + start_seek, + end_seek)
+ read all samples between start_seek and end_seek, then find the + minimum and maximum peak in that range.
+ source code + +
+ +
+   + + + + + + +
pre_process(self, + media_item) + source code + +
+ +
+   + + + + + + +
read(self, + start, + size, + resize_if_less=False)
+ read size samples starting at start, if resize_if_less is True and + less than size samples are read, resize the array to size and fill + with zeros
+ source code + +
+ +
+   + + + + + + +
spectral_centroid(self, + seek_point, + spec_range=120.0)
+ starting at seek_point read fft_size samples, and calculate the + spectral centroid
+ source code + +
+ +
+

Inherited from core.Processor: + __del__, + __or__, + channels, + nframes, + process, + release, + samplerate, + setup +

+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + +
+ + + + + +
Method Details[hide private]
+
+ +
+ +
+ + +
+

__init__(self) +
(Constructor) +

+
source code  +
+ +

x.__init__(...) initializes x; see x.__class__.__doc__ for + signature

+
+
Overrides: + object.__init__ +
(inherited documentation)
+ +
+
+
+ +
+ +
+ + +
+

peaks(self, + start_seek, + end_seek) +

+
source code  +
+ +

read all samples between start_seek and end_seek, then find the + minimum and maximum peak in that range. Returns that pair in the order + they were found. So if min was found first, it returns (min, max) else + the other way around.

+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.analyze.dc-module.html b/doc/epydoc/timeside.analyze.dc-module.html new file mode 100644 index 0000000..b642f1d --- /dev/null +++ b/doc/epydoc/timeside.analyze.dc-module.html @@ -0,0 +1,131 @@ + + + + + timeside.analyze.dc + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package analyze :: + Module dc + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Module dc

source code

+ + + + + + + + + +
+ + + + + +
Classes[hide private]
+
+   + + MeanDCShiftAnalyser
+ Media item analyzer driver interface +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.analyze.dc-pysrc.html b/doc/epydoc/timeside.analyze.dc-pysrc.html new file mode 100644 index 0000000..9e46392 --- /dev/null +++ b/doc/epydoc/timeside.analyze.dc-pysrc.html @@ -0,0 +1,163 @@ + + + + + timeside.analyze.dc + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package analyze :: + Module dc + + + + + + +
[hide private]
[frames] | no frames]
+
+

Source Code for Module timeside.analyze.dc

+
+ 1  # -*- coding: utf-8 -*- 
+ 2  # 
+ 3  # Copyright (c) 2007-2009 Guillaume Pellerin <yomguy@parisson.com> 
+ 4   
+ 5  # This file is part of TimeSide. 
+ 6   
+ 7  # TimeSide is free software: you can redistribute it and/or modify 
+ 8  # it under the terms of the GNU General Public License as published by 
+ 9  # the Free Software Foundation, either version 2 of the License, or 
+10  # (at your option) any later version. 
+11   
+12  # TimeSide is distributed in the hope that it will be useful, 
+13  # but WITHOUT ANY WARRANTY; without even the implied warranty of 
+14  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
+15  # GNU General Public License for more details. 
+16   
+17  # You should have received a copy of the GNU General Public License 
+18  # along with TimeSide.  If not, see <http://www.gnu.org/licenses/>. 
+19   
+20  # Author: Guillaume Pellerin <yomguy@parisson.com> 
+21   
+22  from timeside.analyze.core import * 
+23  from timeside.api import IValueAnalyzer 
+24  import numpy 
+
25 +26 -class MeanDCShiftAnalyser(AudioProcessor): +
27 """Media item analyzer driver interface""" +28 +29 implements(IValueAnalyzer) +30 +31 @staticmethod +
32 - def id(): +
33 return "dc" +
34 +
35 - def name(self): +
36 return "Mean DC shift" +
37 +
38 - def unit(self): +
39 return "%" +
40 +
41 - def render(self, media_item, options=None): +
42 self.pre_process(media_item) +43 samples = self.get_mono_samples() +44 return numpy.round(100*numpy.mean(samples),4) +
45 +
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.analyze.dc.MeanDCShiftAnalyser-class.html b/doc/epydoc/timeside.analyze.dc.MeanDCShiftAnalyser-class.html new file mode 100644 index 0000000..9f65dd0 --- /dev/null +++ b/doc/epydoc/timeside.analyze.dc.MeanDCShiftAnalyser-class.html @@ -0,0 +1,307 @@ + + + + + timeside.analyze.dc.MeanDCShiftAnalyser + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package analyze :: + Module dc :: + Class MeanDCShiftAnalyser + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class MeanDCShiftAnalyser

source code

+
+         object --+            
+                  |            
+component.Component --+        
+                      |        
+         core.Processor --+    
+                          |    
+        core.AudioProcessor --+
+                              |
+                             MeanDCShiftAnalyser
+
+ +
+

Media item analyzer driver interface

+ + + + + + + + + + +
+ + + + + +
Nested Classes[hide private]
+
+

Inherited from core.Processor: + __metaclass__ +

+
+ + + + + + + + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
name(self) + source code + +
+ +
+   + + + + + + +
unit(self) + source code + +
+ +
+   + + + + + + +
render(self, + media_item, + options=None) + source code + +
+ +
+

Inherited from core.AudioProcessor: + __init__, + get_mono_samples, + get_samples, + peaks, + pre_process, + read, + spectral_centroid +

+

Inherited from core.Processor: + __del__, + __or__, + channels, + nframes, + process, + release, + samplerate, + setup +

+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Static Methods[hide private]
+
+   + + + + + + +
id() + source code + +
+ +
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.analyze.duration-module.html b/doc/epydoc/timeside.analyze.duration-module.html new file mode 100644 index 0000000..9c19dc2 --- /dev/null +++ b/doc/epydoc/timeside.analyze.duration-module.html @@ -0,0 +1,131 @@ + + + + + timeside.analyze.duration + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package analyze :: + Module duration + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Module duration

source code

+ + + + + + + + + +
+ + + + + +
Classes[hide private]
+
+   + + DurationAnalyzer
+ Media item analyzer driver interface +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.analyze.duration-pysrc.html b/doc/epydoc/timeside.analyze.duration-pysrc.html new file mode 100644 index 0000000..bd455b1 --- /dev/null +++ b/doc/epydoc/timeside.analyze.duration-pysrc.html @@ -0,0 +1,169 @@ + + + + + timeside.analyze.duration + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package analyze :: + Module duration + + + + + + +
[hide private]
[frames] | no frames]
+
+

Source Code for Module timeside.analyze.duration

+
+ 1  # -*- coding: utf-8 -*- 
+ 2  # 
+ 3  # Copyright (c) 2007-2009 Guillaume Pellerin <yomguy@parisson.com> 
+ 4   
+ 5  # This file is part of TimeSide. 
+ 6   
+ 7  # TimeSide is free software: you can redistribute it and/or modify 
+ 8  # it under the terms of the GNU General Public License as published by 
+ 9  # the Free Software Foundation, either version 2 of the License, or 
+10  # (at your option) any later version. 
+11   
+12  # TimeSide is distributed in the hope that it will be useful, 
+13  # but WITHOUT ANY WARRANTY; without even the implied warranty of 
+14  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
+15  # GNU General Public License for more details. 
+16   
+17  # You should have received a copy of the GNU General Public License 
+18  # along with TimeSide.  If not, see <http://www.gnu.org/licenses/>. 
+19   
+20  # Author: Guillaume Pellerin <yomguy@parisson.com> 
+21   
+22  from timeside.analyze.core import * 
+23  from timeside.api import IAnalyzer 
+24  import numpy 
+25  import datetime 
+
26 +27 -class DurationAnalyzer(AudioProcessor): +
28 """Media item analyzer driver interface""" +29 +30 implements(IAnalyzer) +31 +32 @staticmethod +
33 - def id(): +
34 return "duration" +
35 +
36 - def name(self): +
37 return "Duration" +
38 +
39 - def unit(self): +
40 return "h:m:s" +
41 +
42 - def render(self, media_item, options=None): +
43 self.pre_process(media_item) +44 media_time = numpy.round(float(self.frames)/float(self.samplerate),0) +45 return datetime.timedelta(0,media_time) +
46 +
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.analyze.duration.DurationAnalyzer-class.html b/doc/epydoc/timeside.analyze.duration.DurationAnalyzer-class.html new file mode 100644 index 0000000..027e2ef --- /dev/null +++ b/doc/epydoc/timeside.analyze.duration.DurationAnalyzer-class.html @@ -0,0 +1,307 @@ + + + + + timeside.analyze.duration.DurationAnalyzer + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package analyze :: + Module duration :: + Class DurationAnalyzer + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class DurationAnalyzer

source code

+
+         object --+            
+                  |            
+component.Component --+        
+                      |        
+         core.Processor --+    
+                          |    
+        core.AudioProcessor --+
+                              |
+                             DurationAnalyzer
+
+ +
+

Media item analyzer driver interface

+ + + + + + + + + + +
+ + + + + +
Nested Classes[hide private]
+
+

Inherited from core.Processor: + __metaclass__ +

+
+ + + + + + + + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
name(self) + source code + +
+ +
+   + + + + + + +
unit(self) + source code + +
+ +
+   + + + + + + +
render(self, + media_item, + options=None) + source code + +
+ +
+

Inherited from core.AudioProcessor: + __init__, + get_mono_samples, + get_samples, + peaks, + pre_process, + read, + spectral_centroid +

+

Inherited from core.Processor: + __del__, + __or__, + channels, + nframes, + process, + release, + samplerate, + setup +

+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Static Methods[hide private]
+
+   + + + + + + +
id() + source code + +
+ +
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.analyze.encoding-module.html b/doc/epydoc/timeside.analyze.encoding-module.html new file mode 100644 index 0000000..37902f2 --- /dev/null +++ b/doc/epydoc/timeside.analyze.encoding-module.html @@ -0,0 +1,131 @@ + + + + + timeside.analyze.encoding + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package analyze :: + Module encoding + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Module encoding

source code

+ + + + + + + + + +
+ + + + + +
Classes[hide private]
+
+   + + EncodingAnalyser
+ Media item analyzer driver interface +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.analyze.encoding-pysrc.html b/doc/epydoc/timeside.analyze.encoding-pysrc.html new file mode 100644 index 0000000..ff343b5 --- /dev/null +++ b/doc/epydoc/timeside.analyze.encoding-pysrc.html @@ -0,0 +1,165 @@ + + + + + timeside.analyze.encoding + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package analyze :: + Module encoding + + + + + + +
[hide private]
[frames] | no frames]
+
+

Source Code for Module timeside.analyze.encoding

+
+ 1  # -*- coding: utf-8 -*- 
+ 2  # 
+ 3  # Copyright (c) 2007-2009 Guillaume Pellerin <yomguy@parisson.com> 
+ 4   
+ 5  # This file is part of TimeSide. 
+ 6   
+ 7  # TimeSide is free software: you can redistribute it and/or modify 
+ 8  # it under the terms of the GNU General Public License as published by 
+ 9  # the Free Software Foundation, either version 2 of the License, or 
+10  # (at your option) any later version. 
+11   
+12  # TimeSide is distributed in the hope that it will be useful, 
+13  # but WITHOUT ANY WARRANTY; without even the implied warranty of 
+14  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
+15  # GNU General Public License for more details. 
+16   
+17  # You should have received a copy of the GNU General Public License 
+18  # along with TimeSide.  If not, see <http://www.gnu.org/licenses/>. 
+19   
+20  # Author: Guillaume Pellerin <yomguy@parisson.com> 
+21   
+22  from timeside.analyze.core import * 
+23  from timeside.api import IAnalyzer 
+24  import numpy 
+
25 +26 -class EncodingAnalyser(AudioProcessor): +
27 """Media item analyzer driver interface""" +28 +29 implements(IAnalyzer) +30 +31 @staticmethod +
32 - def id(): +
33 return "encoding" +
34 +
35 - def name(self): +
36 return "Encoding format" +
37 +
38 - def unit(self): +
39 return "" +
40 +
41 - def render(self, media_item, options=None): +
42 self.pre_process(media_item) +43 return self.encoding +
44 +
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.analyze.encoding.EncodingAnalyser-class.html b/doc/epydoc/timeside.analyze.encoding.EncodingAnalyser-class.html new file mode 100644 index 0000000..f28abc4 --- /dev/null +++ b/doc/epydoc/timeside.analyze.encoding.EncodingAnalyser-class.html @@ -0,0 +1,307 @@ + + + + + timeside.analyze.encoding.EncodingAnalyser + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package analyze :: + Module encoding :: + Class EncodingAnalyser + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class EncodingAnalyser

source code

+
+         object --+            
+                  |            
+component.Component --+        
+                      |        
+         core.Processor --+    
+                          |    
+        core.AudioProcessor --+
+                              |
+                             EncodingAnalyser
+
+ +
+

Media item analyzer driver interface

+ + + + + + + + + + +
+ + + + + +
Nested Classes[hide private]
+
+

Inherited from core.Processor: + __metaclass__ +

+
+ + + + + + + + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
name(self) + source code + +
+ +
+   + + + + + + +
unit(self) + source code + +
+ +
+   + + + + + + +
render(self, + media_item, + options=None) + source code + +
+ +
+

Inherited from core.AudioProcessor: + __init__, + get_mono_samples, + get_samples, + peaks, + pre_process, + read, + spectral_centroid +

+

Inherited from core.Processor: + __del__, + __or__, + channels, + nframes, + process, + release, + samplerate, + setup +

+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Static Methods[hide private]
+
+   + + + + + + +
id() + source code + +
+ +
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.analyze.format-module.html b/doc/epydoc/timeside.analyze.format-module.html new file mode 100644 index 0000000..3593afe --- /dev/null +++ b/doc/epydoc/timeside.analyze.format-module.html @@ -0,0 +1,131 @@ + + + + + timeside.analyze.format + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package analyze :: + Module format + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Module format

source code

+ + + + + + + + + +
+ + + + + +
Classes[hide private]
+
+   + + FormatAnalyser
+ Media item analyzer driver interface +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.analyze.format-pysrc.html b/doc/epydoc/timeside.analyze.format-pysrc.html new file mode 100644 index 0000000..998f3b3 --- /dev/null +++ b/doc/epydoc/timeside.analyze.format-pysrc.html @@ -0,0 +1,174 @@ + + + + + timeside.analyze.format + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package analyze :: + Module format + + + + + + +
[hide private]
[frames] | no frames]
+
+

Source Code for Module timeside.analyze.format

+
+ 1  # -*- coding: utf-8 -*- 
+ 2  # 
+ 3  # Copyright (c) 2007-2009 Guillaume Pellerin <yomguy@parisson.com> 
+ 4   
+ 5  # This file is part of TimeSide. 
+ 6   
+ 7  # TimeSide is free software: you can redistribute it and/or modify 
+ 8  # it under the terms of the GNU General Public License as published by 
+ 9  # the Free Software Foundation, either version 2 of the License, or 
+10  # (at your option) any later version. 
+11   
+12  # TimeSide is distributed in the hope that it will be useful, 
+13  # but WITHOUT ANY WARRANTY; without even the implied warranty of 
+14  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
+15  # GNU General Public License for more details. 
+16   
+17  # You should have received a copy of the GNU General Public License 
+18  # along with TimeSide.  If not, see <http://www.gnu.org/licenses/>. 
+19   
+20  # Author: Guillaume Pellerin <yomguy@parisson.com> 
+21   
+22  from timeside.analyze.core import * 
+23  from timeside.api import IAnalyzer 
+24  import numpy 
+
25 +26 -class FormatAnalyser(AudioProcessor): +
27 """Media item analyzer driver interface""" +28 +29 implements(IAnalyzer) +30 +31 @staticmethod +
32 - def id(): +
33 return "format" +
34 +
35 - def name(self): +
36 return "File format" +
37 +
38 - def unit(self): +
39 return "" +
40 +
41 - def render(self, media_item, options=None): +
42 self.pre_process(media_item) +43 return self.format +
44 +
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.analyze.format.FormatAnalyser-class.html b/doc/epydoc/timeside.analyze.format.FormatAnalyser-class.html new file mode 100644 index 0000000..c7c8542 --- /dev/null +++ b/doc/epydoc/timeside.analyze.format.FormatAnalyser-class.html @@ -0,0 +1,307 @@ + + + + + timeside.analyze.format.FormatAnalyser + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package analyze :: + Module format :: + Class FormatAnalyser + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class FormatAnalyser

source code

+
+         object --+            
+                  |            
+component.Component --+        
+                      |        
+         core.Processor --+    
+                          |    
+        core.AudioProcessor --+
+                              |
+                             FormatAnalyser
+
+ +
+

Media item analyzer driver interface

+ + + + + + + + + + +
+ + + + + +
Nested Classes[hide private]
+
+

Inherited from core.Processor: + __metaclass__ +

+
+ + + + + + + + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
name(self) + source code + +
+ +
+   + + + + + + +
unit(self) + source code + +
+ +
+   + + + + + + +
render(self, + media_item, + options=None) + source code + +
+ +
+

Inherited from core.AudioProcessor: + __init__, + get_mono_samples, + get_samples, + peaks, + pre_process, + read, + spectral_centroid +

+

Inherited from core.Processor: + __del__, + __or__, + channels, + nframes, + process, + release, + samplerate, + setup +

+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Static Methods[hide private]
+
+   + + + + + + +
id() + source code + +
+ +
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.analyze.max_level-module.html b/doc/epydoc/timeside.analyze.max_level-module.html new file mode 100644 index 0000000..7a8ee9d --- /dev/null +++ b/doc/epydoc/timeside.analyze.max_level-module.html @@ -0,0 +1,131 @@ + + + + + timeside.analyze.max_level + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package analyze :: + Module max_level + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Module max_level

source code

+ + + + + + + + + +
+ + + + + +
Classes[hide private]
+
+   + + MaxLevelAnalyzer
+ Media item analyzer driver interface +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.analyze.max_level-pysrc.html b/doc/epydoc/timeside.analyze.max_level-pysrc.html new file mode 100644 index 0000000..7343c28 --- /dev/null +++ b/doc/epydoc/timeside.analyze.max_level-pysrc.html @@ -0,0 +1,164 @@ + + + + + timeside.analyze.max_level + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package analyze :: + Module max_level + + + + + + +
[hide private]
[frames] | no frames]
+
+

Source Code for Module timeside.analyze.max_level

+
+ 1  # -*- coding: utf-8 -*- 
+ 2  # 
+ 3  # Copyright (c) 2007-2009 Guillaume Pellerin <yomguy@parisson.com> 
+ 4   
+ 5  # This file is part of TimeSide. 
+ 6   
+ 7  # TimeSide is free software: you can redistribute it and/or modify 
+ 8  # it under the terms of the GNU General Public License as published by 
+ 9  # the Free Software Foundation, either version 2 of the License, or 
+10  # (at your option) any later version. 
+11   
+12  # TimeSide is distributed in the hope that it will be useful, 
+13  # but WITHOUT ANY WARRANTY; without even the implied warranty of 
+14  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
+15  # GNU General Public License for more details. 
+16   
+17  # You should have received a copy of the GNU General Public License 
+18  # along with TimeSide.  If not, see <http://www.gnu.org/licenses/>. 
+19   
+20  # Author: Guillaume Pellerin <yomguy@parisson.com> 
+21   
+22  from timeside.analyze.core import * 
+23  from timeside.api import IValueAnalyzer 
+24  import numpy 
+
25 +26 -class MaxLevelAnalyzer(AudioProcessor): +
27 """Media item analyzer driver interface""" +28 +29 implements(IValueAnalyzer) +30 +31 @staticmethod +
32 - def id(): +
33 return "max_level" +
34 +35 @staticmethod +
36 - def name(): +
37 return "Maximum peak level" +
38 +
39 - def unit(self): +
40 return "dB" +
41 +
42 - def render(self, media_item, options=None): +
43 self.pre_process(media_item) +44 samples = self.get_samples() +45 return numpy.round(20*numpy.log10(numpy.max(samples)),2) +
46 +
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.analyze.max_level.MaxLevelAnalyzer-class.html b/doc/epydoc/timeside.analyze.max_level.MaxLevelAnalyzer-class.html new file mode 100644 index 0000000..6592c8e --- /dev/null +++ b/doc/epydoc/timeside.analyze.max_level.MaxLevelAnalyzer-class.html @@ -0,0 +1,307 @@ + + + + + timeside.analyze.max_level.MaxLevelAnalyzer + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package analyze :: + Module max_level :: + Class MaxLevelAnalyzer + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class MaxLevelAnalyzer

source code

+
+         object --+            
+                  |            
+component.Component --+        
+                      |        
+         core.Processor --+    
+                          |    
+        core.AudioProcessor --+
+                              |
+                             MaxLevelAnalyzer
+
+ +
+

Media item analyzer driver interface

+ + + + + + + + + + +
+ + + + + +
Nested Classes[hide private]
+
+

Inherited from core.Processor: + __metaclass__ +

+
+ + + + + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
unit(self) + source code + +
+ +
+   + + + + + + +
render(self, + media_item, + options=None) + source code + +
+ +
+

Inherited from core.AudioProcessor: + __init__, + get_mono_samples, + get_samples, + peaks, + pre_process, + read, + spectral_centroid +

+

Inherited from core.Processor: + __del__, + __or__, + channels, + nframes, + process, + release, + samplerate, + setup +

+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + + + + +
+ + + + + +
Static Methods[hide private]
+
+   + + + + + + +
id() + source code + +
+ +
+   + + + + + + +
name() + source code + +
+ +
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.analyze.mean_level-module.html b/doc/epydoc/timeside.analyze.mean_level-module.html new file mode 100644 index 0000000..6ddc5b8 --- /dev/null +++ b/doc/epydoc/timeside.analyze.mean_level-module.html @@ -0,0 +1,131 @@ + + + + + timeside.analyze.mean_level + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package analyze :: + Module mean_level + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Module mean_level

source code

+ + + + + + + + + +
+ + + + + +
Classes[hide private]
+
+   + + MeanLevelAnalyser
+ Media item analyzer driver interface +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.analyze.mean_level-pysrc.html b/doc/epydoc/timeside.analyze.mean_level-pysrc.html new file mode 100644 index 0000000..ff15aa7 --- /dev/null +++ b/doc/epydoc/timeside.analyze.mean_level-pysrc.html @@ -0,0 +1,163 @@ + + + + + timeside.analyze.mean_level + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package analyze :: + Module mean_level + + + + + + +
[hide private]
[frames] | no frames]
+
+

Source Code for Module timeside.analyze.mean_level

+
+ 1  # -*- coding: utf-8 -*- 
+ 2  # 
+ 3  # Copyright (c) 2007-2009 Guillaume Pellerin <yomguy@parisson.com> 
+ 4   
+ 5  # This file is part of TimeSide. 
+ 6   
+ 7  # TimeSide is free software: you can redistribute it and/or modify 
+ 8  # it under the terms of the GNU General Public License as published by 
+ 9  # the Free Software Foundation, either version 2 of the License, or 
+10  # (at your option) any later version. 
+11   
+12  # TimeSide is distributed in the hope that it will be useful, 
+13  # but WITHOUT ANY WARRANTY; without even the implied warranty of 
+14  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
+15  # GNU General Public License for more details. 
+16   
+17  # You should have received a copy of the GNU General Public License 
+18  # along with TimeSide.  If not, see <http://www.gnu.org/licenses/>. 
+19   
+20  # Author: Guillaume Pellerin <yomguy@parisson.com> 
+21   
+22  from timeside.analyze.core import * 
+23  from timeside.api import IValueAnalyzer 
+24  import numpy 
+
25 +26 -class MeanLevelAnalyser(AudioProcessor): +
27 """Media item analyzer driver interface""" +28 +29 implements(IValueAnalyzer) +30 +31 @staticmethod +
32 - def id(): +
33 return "meanlevel" +
34 +
35 - def name(self): +
36 return "Mean RMS level" +
37 +
38 - def unit(self): +
39 return "dB" +
40 +
41 - def render(self, media_item, options=None): +
42 self.pre_process(media_item) +43 samples = self.get_mono_samples() +44 return numpy.round(20*numpy.log10(numpy.mean(numpy.sqrt(numpy.square(samples)))),2) +
45 +
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.analyze.mean_level.MeanLevelAnalyser-class.html b/doc/epydoc/timeside.analyze.mean_level.MeanLevelAnalyser-class.html new file mode 100644 index 0000000..1965326 --- /dev/null +++ b/doc/epydoc/timeside.analyze.mean_level.MeanLevelAnalyser-class.html @@ -0,0 +1,307 @@ + + + + + timeside.analyze.mean_level.MeanLevelAnalyser + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package analyze :: + Module mean_level :: + Class MeanLevelAnalyser + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class MeanLevelAnalyser

source code

+
+         object --+            
+                  |            
+component.Component --+        
+                      |        
+         core.Processor --+    
+                          |    
+        core.AudioProcessor --+
+                              |
+                             MeanLevelAnalyser
+
+ +
+

Media item analyzer driver interface

+ + + + + + + + + + +
+ + + + + +
Nested Classes[hide private]
+
+

Inherited from core.Processor: + __metaclass__ +

+
+ + + + + + + + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
name(self) + source code + +
+ +
+   + + + + + + +
unit(self) + source code + +
+ +
+   + + + + + + +
render(self, + media_item, + options=None) + source code + +
+ +
+

Inherited from core.AudioProcessor: + __init__, + get_mono_samples, + get_samples, + peaks, + pre_process, + read, + spectral_centroid +

+

Inherited from core.Processor: + __del__, + __or__, + channels, + nframes, + process, + release, + samplerate, + setup +

+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Static Methods[hide private]
+
+   + + + + + + +
id() + source code + +
+ +
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.analyze.resolution-module.html b/doc/epydoc/timeside.analyze.resolution-module.html new file mode 100644 index 0000000..7c3c2da --- /dev/null +++ b/doc/epydoc/timeside.analyze.resolution-module.html @@ -0,0 +1,131 @@ + + + + + timeside.analyze.resolution + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package analyze :: + Module resolution + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Module resolution

source code

+ + + + + + + + + +
+ + + + + +
Classes[hide private]
+
+   + + ResolutionAnalyser
+ Media item analyzer driver interface +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.analyze.resolution-pysrc.html b/doc/epydoc/timeside.analyze.resolution-pysrc.html new file mode 100644 index 0000000..1519167 --- /dev/null +++ b/doc/epydoc/timeside.analyze.resolution-pysrc.html @@ -0,0 +1,183 @@ + + + + + timeside.analyze.resolution + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package analyze :: + Module resolution + + + + + + +
[hide private]
[frames] | no frames]
+
+

Source Code for Module timeside.analyze.resolution

+
+ 1  # -*- coding: utf-8 -*- 
+ 2  # 
+ 3  # Copyright (c) 2007-2009 Guillaume Pellerin <yomguy@parisson.com> 
+ 4   
+ 5  # This file is part of TimeSide. 
+ 6   
+ 7  # TimeSide is free software: you can redistribute it and/or modify 
+ 8  # it under the terms of the GNU General Public License as published by 
+ 9  # the Free Software Foundation, either version 2 of the License, or 
+10  # (at your option) any later version. 
+11   
+12  # TimeSide is distributed in the hope that it will be useful, 
+13  # but WITHOUT ANY WARRANTY; without even the implied warranty of 
+14  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
+15  # GNU General Public License for more details. 
+16   
+17  # You should have received a copy of the GNU General Public License 
+18  # along with TimeSide.  If not, see <http://www.gnu.org/licenses/>. 
+19   
+20  # Author: Guillaume Pellerin <yomguy@parisson.com> 
+21   
+22  from timeside.analyze.core import * 
+23  from timeside.api import IAnalyzer 
+24  import numpy 
+
25 +26 -class ResolutionAnalyser(AudioProcessor): +
27 """Media item analyzer driver interface""" +28 +29 implements(IAnalyzer) +30 +31 @staticmethod +
32 - def id(): +
33 return "resolution" +
34 +
35 - def name(self): +
36 return "Resolution" +
37 +
38 - def unit(self): +
39 return "bits" +
40 +
41 - def render(self, media_item, options=None): +
42 self.pre_process(media_item) +43 if '8' in self.encoding: +44 return 8 +45 if '16' in self.encoding: +46 return 16 +47 if '24' in self.encoding: +48 return 24 +49 if '32' in self.encoding: +50 return 32 +51 else: +52 return '' +
53 +
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.analyze.resolution.ResolutionAnalyser-class.html b/doc/epydoc/timeside.analyze.resolution.ResolutionAnalyser-class.html new file mode 100644 index 0000000..8061845 --- /dev/null +++ b/doc/epydoc/timeside.analyze.resolution.ResolutionAnalyser-class.html @@ -0,0 +1,307 @@ + + + + + timeside.analyze.resolution.ResolutionAnalyser + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package analyze :: + Module resolution :: + Class ResolutionAnalyser + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class ResolutionAnalyser

source code

+
+         object --+            
+                  |            
+component.Component --+        
+                      |        
+         core.Processor --+    
+                          |    
+        core.AudioProcessor --+
+                              |
+                             ResolutionAnalyser
+
+ +
+

Media item analyzer driver interface

+ + + + + + + + + + +
+ + + + + +
Nested Classes[hide private]
+
+

Inherited from core.Processor: + __metaclass__ +

+
+ + + + + + + + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
name(self) + source code + +
+ +
+   + + + + + + +
unit(self) + source code + +
+ +
+   + + + + + + +
render(self, + media_item, + options=None) + source code + +
+ +
+

Inherited from core.AudioProcessor: + __init__, + get_mono_samples, + get_samples, + peaks, + pre_process, + read, + spectral_centroid +

+

Inherited from core.Processor: + __del__, + __or__, + channels, + nframes, + process, + release, + samplerate, + setup +

+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Static Methods[hide private]
+
+   + + + + + + +
id() + source code + +
+ +
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.analyze.samplerate-module.html b/doc/epydoc/timeside.analyze.samplerate-module.html new file mode 100644 index 0000000..c9905bf --- /dev/null +++ b/doc/epydoc/timeside.analyze.samplerate-module.html @@ -0,0 +1,131 @@ + + + + + timeside.analyze.samplerate + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package analyze :: + Module samplerate + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Module samplerate

source code

+ + + + + + + + + +
+ + + + + +
Classes[hide private]
+
+   + + SampleRateAnalyzer
+ Media item analyzer driver interface +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.analyze.samplerate-pysrc.html b/doc/epydoc/timeside.analyze.samplerate-pysrc.html new file mode 100644 index 0000000..7baa3ff --- /dev/null +++ b/doc/epydoc/timeside.analyze.samplerate-pysrc.html @@ -0,0 +1,167 @@ + + + + + timeside.analyze.samplerate + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package analyze :: + Module samplerate + + + + + + +
[hide private]
[frames] | no frames]
+
+

Source Code for Module timeside.analyze.samplerate

+
+ 1  # -*- coding: utf-8 -*- 
+ 2  # 
+ 3  # Copyright (c) 2007-2009 Guillaume Pellerin <yomguy@parisson.com> 
+ 4   
+ 5  # This file is part of TimeSide. 
+ 6   
+ 7  # TimeSide is free software: you can redistribute it and/or modify 
+ 8  # it under the terms of the GNU General Public License as published by 
+ 9  # the Free Software Foundation, either version 2 of the License, or 
+10  # (at your option) any later version. 
+11   
+12  # TimeSide is distributed in the hope that it will be useful, 
+13  # but WITHOUT ANY WARRANTY; without even the implied warranty of 
+14  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
+15  # GNU General Public License for more details. 
+16   
+17  # You should have received a copy of the GNU General Public License 
+18  # along with TimeSide.  If not, see <http://www.gnu.org/licenses/>. 
+19   
+20  # Author: Guillaume Pellerin <yomguy@parisson.com> 
+21   
+22  from timeside.analyze.core import * 
+23  from timeside.api import IAnalyzer 
+24  import numpy 
+
25 +26 -class SampleRateAnalyzer(AudioProcessor): +
27 """Media item analyzer driver interface""" +28 +29 implements(IAnalyzer) +30 +31 @staticmethod +
32 - def id(): +
33 return "samplerate" +
34 +
35 - def name(self): +
36 return "Samplerate" +
37 +
38 - def unit(self): +
39 return "Hz" +
40 +
41 - def render(self, media_item, options=None): +
42 self.pre_process(media_item) +43 return self.samplerate +
44 +
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.analyze.samplerate.SampleRateAnalyzer-class.html b/doc/epydoc/timeside.analyze.samplerate.SampleRateAnalyzer-class.html new file mode 100644 index 0000000..3137531 --- /dev/null +++ b/doc/epydoc/timeside.analyze.samplerate.SampleRateAnalyzer-class.html @@ -0,0 +1,307 @@ + + + + + timeside.analyze.samplerate.SampleRateAnalyzer + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package analyze :: + Module samplerate :: + Class SampleRateAnalyzer + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class SampleRateAnalyzer

source code

+
+         object --+            
+                  |            
+component.Component --+        
+                      |        
+         core.Processor --+    
+                          |    
+        core.AudioProcessor --+
+                              |
+                             SampleRateAnalyzer
+
+ +
+

Media item analyzer driver interface

+ + + + + + + + + + +
+ + + + + +
Nested Classes[hide private]
+
+

Inherited from core.Processor: + __metaclass__ +

+
+ + + + + + + + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
name(self) + source code + +
+ +
+   + + + + + + +
unit(self) + source code + +
+ +
+   + + + + + + +
render(self, + media_item, + options=None) + source code + +
+ +
+

Inherited from core.AudioProcessor: + __init__, + get_mono_samples, + get_samples, + peaks, + pre_process, + read, + spectral_centroid +

+

Inherited from core.Processor: + __del__, + __or__, + channels, + nframes, + process, + release, + samplerate, + setup +

+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Static Methods[hide private]
+
+   + + + + + + +
id() + source code + +
+ +
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.analyze.vamp-module.html b/doc/epydoc/timeside.analyze.vamp-module.html new file mode 100644 index 0000000..6564692 --- /dev/null +++ b/doc/epydoc/timeside.analyze.vamp-module.html @@ -0,0 +1,129 @@ + + + + + timeside.analyze.vamp + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package analyze :: + Package vamp + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Package vamp

source code

+ + + + + + + +
+ + + + + +
Submodules[hide private]
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.analyze.vamp-pysrc.html b/doc/epydoc/timeside.analyze.vamp-pysrc.html new file mode 100644 index 0000000..e09308e --- /dev/null +++ b/doc/epydoc/timeside.analyze.vamp-pysrc.html @@ -0,0 +1,120 @@ + + + + + timeside.analyze.vamp + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package analyze :: + Package vamp + + + + + + +
[hide private]
[frames] | no frames]
+
+

Source Code for Package timeside.analyze.vamp

+
+1  # -*- coding: utf-8 -*- 
+2   
+3  from timeside.analyze.vamp.core import * 
+4   
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.analyze.vamp.core-module.html b/doc/epydoc/timeside.analyze.vamp.core-module.html new file mode 100644 index 0000000..5bb292f --- /dev/null +++ b/doc/epydoc/timeside.analyze.vamp.core-module.html @@ -0,0 +1,132 @@ + + + + + timeside.analyze.vamp.core + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package analyze :: + Package vamp :: + Module core + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Module core

source code

+ + + + + + + + + +
+ + + + + +
Classes[hide private]
+
+   + + VampCoreAnalyzer
+ Parent class for Vamp plugin drivers +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.analyze.vamp.core-pysrc.html b/doc/epydoc/timeside.analyze.vamp.core-pysrc.html new file mode 100644 index 0000000..a441bd8 --- /dev/null +++ b/doc/epydoc/timeside.analyze.vamp.core-pysrc.html @@ -0,0 +1,232 @@ + + + + + timeside.analyze.vamp.core + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package analyze :: + Package vamp :: + Module core + + + + + + +
[hide private]
[frames] | no frames]
+
+

Source Code for Module timeside.analyze.vamp.core

+
+  1  # -*- coding: utf-8 -*- 
+  2  # 
+  3  # Copyright (c) 2007-2009 Guillaume Pellerin <yomguy@parisson.com> 
+  4   
+  5  # This file is part of TimeSide. 
+  6   
+  7  # TimeSide is free software: you can redistribute it and/or modify 
+  8  # it under the terms of the GNU General Public License as published by 
+  9  # the Free Software Foundation, either version 2 of the License, or 
+ 10  # (at your option) any later version. 
+ 11   
+ 12  # TimeSide is distributed in the hope that it will be useful, 
+ 13  # but WITHOUT ANY WARRANTY; without even the implied warranty of 
+ 14  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
+ 15  # GNU General Public License for more details. 
+ 16   
+ 17  # You should have received a copy of the GNU General Public License 
+ 18  # along with TimeSide.  If not, see <http://www.gnu.org/licenses/>. 
+ 19   
+ 20  # Author: Guillaume Pellerin <yomguy@parisson.com> 
+ 21   
+ 22  from timeside.core import * 
+ 23  from tempfile import NamedTemporaryFile 
+ 24  from timeside.exceptions import SubProcessError 
+ 25  import os 
+ 26  import random 
+ 27  import subprocess 
+ 28  import signal 
+ 29  import time 
+ 30   
+
31 -class VampCoreAnalyzer: +
32 """Parent class for Vamp plugin drivers""" + 33 +
34 - def __init__(self): +
35 self.vamp_path = '/usr/lib/vamp/' + 36 # needs vamp-examples package + 37 self.host = 'vamp-simple-host' + 38 self.buffer_size = 0xFFFF +
39 +
40 - def id(self): +
41 return "vamp_plugins" +
42 +
43 - def name(self): +
44 return "Vamp plugins" +
45 +
46 - def unit(self): +
47 return "" +
48 +
49 - def get_plugins_list(self): +
50 if os.path.exists(self.vamp_path): + 51 args = ' --list-outputs' + 52 command = self.host + args + 53 #tmp_file = NamedTemporaryFile() + 54 data = self.core_process(command, self.buffer_size) + 55 text = '' + 56 plugins = [] + 57 for chunk in data: + 58 text = text + chunk + 59 lines = text.split('\n') + 60 for line in lines: + 61 if line != '': + 62 struct = line.split(':') + 63 struct = struct[1:] + 64 plugins.append(struct) + 65 return plugins + 66 else: + 67 return [] +
68 +
69 - def get_wav_path(self, media_item): +
70 return settings.MEDIA_ROOT + '/' + media_item.file +
71 #return media_item + 72 +
73 - def render(self, plugin, media_item): +
74 self.wavFile = self.get_wav_path(media_item) + 75 args = ' -s ' + ':'.join(plugin) + ' ' + str(self.wavFile) + 76 command = command = self.host + args + 77 data = self.core_process(command, self.buffer_size) + 78 string = '' + 79 values = {} + 80 for chunk in data: + 81 string = string + chunk + 82 lines = string.split('\n') + 83 for line in lines: + 84 if line != '': + 85 struct = line.split(':') + 86 values[struct[0]] = struct[1] + 87 return values +
88 +
89 - def core_process(self, command, buffer_size): +
90 """Encode and stream audio data through a generator""" + 91 + 92 __chunk = 0 + 93 + 94 try: + 95 proc = subprocess.Popen(command, + 96 shell = True, + 97 bufsize = buffer_size, + 98 stdin = subprocess.PIPE, + 99 stdout = subprocess.PIPE, +100 close_fds = True) +101 except: +102 raise SubProcessError('Command failure:', command, proc) +103 +104 # Core processing +105 while True: +106 __chunk = proc.stdout.read(buffer_size) +107 status = proc.poll() +108 if status != None and status != 0: +109 raise SubProcessError('Command failure:', command, proc) +110 if len(__chunk) == 0: +111 break +112 yield __chunk +
113 +
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.analyze.vamp.core.VampCoreAnalyzer-class.html b/doc/epydoc/timeside.analyze.vamp.core.VampCoreAnalyzer-class.html new file mode 100644 index 0000000..74d9c99 --- /dev/null +++ b/doc/epydoc/timeside.analyze.vamp.core.VampCoreAnalyzer-class.html @@ -0,0 +1,261 @@ + + + + + timeside.analyze.vamp.core.VampCoreAnalyzer + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package analyze :: + Package vamp :: + Module core :: + Class VampCoreAnalyzer + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class VampCoreAnalyzer

source code

+

Parent class for Vamp plugin drivers

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
__init__(self) + source code + +
+ +
+   + + + + + + +
id(self) + source code + +
+ +
+   + + + + + + +
name(self) + source code + +
+ +
+   + + + + + + +
unit(self) + source code + +
+ +
+   + + + + + + +
get_plugins_list(self) + source code + +
+ +
+   + + + + + + +
get_wav_path(self, + media_item) + source code + +
+ +
+   + + + + + + +
render(self, + plugin, + media_item) + source code + +
+ +
+   + + + + + + +
core_process(self, + command, + buffer_size)
+ Encode and stream audio data through a generator
+ source code + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.api-module.html b/doc/epydoc/timeside.api-module.html new file mode 100644 index 0000000..1f319e9 --- /dev/null +++ b/doc/epydoc/timeside.api-module.html @@ -0,0 +1,179 @@ + + + + + timeside.api + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Module api + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Module api

source code

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
Classes[hide private]
+
+   + + IProcessor
+ Common processor interface +
+   + + IEncoder
+ Encoder driver interface. +
+   + + IDecoder
+ Decoder driver interface. +
+   + + IGrapher
+ Media item visualizer driver interface +
+   + + IAnalyzer
+ Media item analyzer driver interface. +
+   + + IValueAnalyzer
+ Interface for analyzers which return a single numeric value from + result() +
+   + + IEffect
+ Effect processor interface +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.api-pysrc.html b/doc/epydoc/timeside.api-pysrc.html new file mode 100644 index 0000000..dcaa83f --- /dev/null +++ b/doc/epydoc/timeside.api-pysrc.html @@ -0,0 +1,324 @@ + + + + + timeside.api + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Module api + + + + + + +
[hide private]
[frames] | no frames]
+
+

Source Code for Module timeside.api

+
+  1  # -*- coding: utf-8 -*- 
+  2  # 
+  3  # Copyright (C) 2007-2009 Parisson 
+  4  # Copyright (c) 2007 Olivier Guilyardi <olivier@samalyse.com> 
+  5  # Copyright (c) 2007-2009 Guillaume Pellerin <pellerin@parisson.com> 
+  6  # 
+  7  # This file is part of TimeSide. 
+  8   
+  9  # TimeSide is free software: you can redistribute it and/or modify 
+ 10  # it under the terms of the GNU General Public License as published by 
+ 11  # the Free Software Foundation, either version 2 of the License, or 
+ 12  # (at your option) any later version. 
+ 13   
+ 14  # TimeSide is distributed in the hope that it will be useful, 
+ 15  # but WITHOUT ANY WARRANTY; without even the implied warranty of 
+ 16  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
+ 17  # GNU General Public License for more details. 
+ 18   
+ 19  # You should have received a copy of the GNU General Public License 
+ 20  # along with TimeSide.  If not, see <http://www.gnu.org/licenses/>. 
+ 21   
+ 22  from timeside.component import Interface 
+
23 + 24 -class IProcessor(Interface): +
25 """Common processor interface""" + 26 + 27 @staticmethod +
28 - def id(): +
29 """Short alphanumeric, lower-case string which uniquely identify this + 30 processor, suitable for use as an HTTP/GET argument value, in filenames, + 31 etc...""" +
32 + 33 # implementation: only letters and digits are allowed. An exception will + 34 # be raised by MetaProcessor if the id is malformed or not unique amongst + 35 # registered processors. + 36 +
37 - def setup(self, channels=None, samplerate=None, nframes=None): +
38 """Allocate internal resources and reset state, so that this processor is + 39 ready for a new run. + 40 + 41 The channels, samplerate and/or nframes arguments may be required by + 42 processors which accept input. An error will occur if any of + 43 these arguments is passed to an output-only processor such as a decoder. + 44 """ +
45 + 46 # implementations should always call the parent method + 47 +
48 - def channels(self): +
49 """Number of channels in the data returned by process(). May be different from + 50 the number of channels passed to setup()""" +
51 +
52 - def samplerate(self): +
53 """Samplerate of the data returned by process(). May be different from + 54 the samplerate passed to setup()""" +
55 +
56 - def nframes(): +
57 """The total number of frames that this processor can output, or None if + 58 the duration is unknown.""" +
59 +
60 - def process(self, frames=None, eod=False): +
61 """Process input frames and return a (output_frames, eod) tuple. + 62 Both input and output frames are 2D numpy arrays, where columns are + 63 channels, and containing an undetermined number of frames. eod=True + 64 means that the end-of-data has been reached. + 65 + 66 Output-only processors (such as decoders) will raise an exception if the + 67 frames argument is not None. All processors (even encoders) return data, + 68 even if that means returning the input unchanged. + 69 + 70 Warning: it is required to call setup() before this method.""" +
71 +
72 - def release(self): +
73 """Release resources owned by this processor. The processor cannot + 74 be used anymore after calling this method.""" +
75 +
76 # implementations should always call the parent method + 77 + 78 -class IEncoder(IProcessor): +
79 """Encoder driver interface. Each encoder is expected to support a specific + 80 format.""" + 81 +
82 - def __init__(self, output): +
83 """Create a new encoder. output can either be a filename or a python callback + 84 function/method for streaming mode. + 85 + 86 The streaming callback prototype is: callback(data, eod) + 87 Where data is a block of binary data of an undetermined size, and eod + 88 True when end-of-data is reached.""" +
89 + 90 # implementation: the constructor must always accept the output argument. It may + 91 # accept extra arguments such as bitrate, depth, etc.., but these must be optionnal + 92 + 93 @staticmethod +
94 - def format(): +
95 """Return the encode/encoding format as a short string + 96 Example: "MP3", "OGG", "AVI", ... + 97 """ +
98 + 99 @staticmethod +
100 - def description(): +
101 """Return a string describing what this encode format provides, is good +102 for, etc... The description is meant to help the end user decide what +103 format is good for him/her +104 """ +
105 +106 @staticmethod +
107 - def file_extension(): +
108 """Return the filename extension corresponding to this encode format""" +
109 +110 @staticmethod +
111 - def mime_type(): +
112 """Return the mime type corresponding to this encode format""" +
113 +
114 - def set_metadata(self, metadata): +
115 """Set the metadata to be embedded in the encoded output. +116 +117 In non-streaming mode, this method updates the metadata directly into the +118 output file, without re-encoding the audio data, provided this file already +119 exists. +120 +121 It isn't required to call this method, but if called, it must be before +122 process().""" +
123 +
124 -class IDecoder(IProcessor): +
125 """Decoder driver interface. Decoders are different of encoders in that +126 a given driver may support several input formats, hence this interface doesn't +127 export any static method, all informations are dynamic.""" +128 +
129 - def __init__(self, filename): +
130 """Create a new decoder for filename.""" +
131 # implementation: additional optionnal arguments are allowed +132 +
133 - def format(): +
134 """Return a user-friendly file format string""" +
135 +
136 - def encoding(): +
137 """Return a user-friendly encoding string""" +
138 +
139 - def resolution(): +
140 """Return the sample width (8, 16, etc..) of original audio file/stream, +141 or None if not applicable/known""" +
142 +
143 - def metadata(self): +
144 """Return the metadata embedded into the encoded stream, if any.""" +
145 +
146 -class IGrapher(IProcessor): +
147 """Media item visualizer driver interface""" +148 +149 # implementation: graphers which need to know the total number of frames +150 # should raise an exception in setup() if the nframes argument is None +151 +
152 - def __init__(self, width, height): +
153 """Create a new grapher. width and height are generally +154 in pixels but could be something else for eg. svg rendering, etc.. """ +
155 +156 # implementation: additional optionnal arguments are allowed +157 +158 @staticmethod +
159 - def name(): +
160 """Return the graph name, such as "Waveform", "Spectral view", +161 etc.. """ +
162 +
163 - def set_colors(self, background=None, scheme=None): +
164 """Set the colors used for image generation. background is a RGB tuple, +165 and scheme a a predefined color theme name""" +
166 +
167 - def render(self): +
168 """Return a PIL Image object visually representing all of the data passed +169 by repeatedly calling process()""" +
170 +
171 -class IAnalyzer(IProcessor): +
172 """Media item analyzer driver interface. This interface is abstract, it doesn't +173 describe a particular type of analyzer but is rather meant to group analyzers. +174 In particular, the way the result is returned may greatly vary from sub-interface +175 to sub-interface. For example the IValueAnalyzer returns a final single numeric +176 result at the end of the whole analysis. But some other analyzers may return +177 numpy arrays, and this, either at the end of the analysis, or from process() +178 for each block of data (as in Vamp).""" +179 +
180 - def __init__(self): +
181 """Create a new analyzer.""" +
182 # implementation: additional optionnal arguments are allowed +183 +184 @staticmethod +
185 - def name(): +
186 """Return the analyzer name, such as "Mean Level", "Max level", +187 "Total length, etc.. """ +
188 +189 @staticmethod +
190 - def unit(): +
191 """Return the unit of the data such as "dB", "seconds", etc... """ +
192 +
193 -class IValueAnalyzer(IAnalyzer): +
194 """Interface for analyzers which return a single numeric value from result()""" +195 +
196 - def result(): +
197 """Return the final result of the analysis performed over the data passed by +198 repeatedly calling process()""" +
199 +
200 - def __str__(self): +
201 """Return a human readable string containing both result and unit +202 ('5.30dB', '4.2s', etc...)""" +
203 +
204 -class IEffect(IProcessor): +
205 """Effect processor interface""" +206 +
207 - def __init__(self): +
208 """Create a new effect.""" +
209 # implementation: additional optionnal arguments are allowed +210 +211 @staticmethod +
212 - def name(): +
213 """Return the effect name""" +
214 +
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.api.IAnalyzer-class.html b/doc/epydoc/timeside.api.IAnalyzer-class.html new file mode 100644 index 0000000..d7f7d93 --- /dev/null +++ b/doc/epydoc/timeside.api.IAnalyzer-class.html @@ -0,0 +1,317 @@ + + + + + timeside.api.IAnalyzer + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Module api :: + Class IAnalyzer + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class IAnalyzer

source code

+
+         object --+        
+                  |        
+component.Interface --+    
+                      |    
+             IProcessor --+
+                          |
+                         IAnalyzer
+
+ +
Known Subclasses:
+
+ +
+ +
+

Media item analyzer driver interface. This interface is abstract, it + doesn't describe a particular type of analyzer but is rather meant to + group analyzers. In particular, the way the result is returned may + greatly vary from sub-interface to sub-interface. For example the + IValueAnalyzer returns a final single numeric result at the end of the + whole analysis. But some other analyzers may return numpy arrays, and + this, either at the end of the analysis, or from process() for each block + of data (as in Vamp).

+ + + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
__init__(self)
+ Create a new analyzer.
+ source code + +
+ +
+

Inherited from IProcessor: + channels, + nframes, + process, + release, + samplerate, + setup +

+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + + + + + + + +
+ + + + + +
Static Methods[hide private]
+
+   + + + + + + +
name()
+ Return the analyzer name, such as "Mean Level", "Max + level", "Total length, etc..
+ source code + +
+ +
+   + + + + + + +
unit()
+ Return the unit of the data such as "dB", + "seconds", etc...
+ source code + +
+ +
+

Inherited from IProcessor: + id +

+
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + +
+ + + + + +
Method Details[hide private]
+
+ +
+ +
+ + +
+

__init__(self) +
(Constructor) +

+
source code  +
+ +

Create a new analyzer.

+
+
Overrides: + object.__init__ +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.api.IDecoder-class.html b/doc/epydoc/timeside.api.IDecoder-class.html new file mode 100644 index 0000000..d33683e --- /dev/null +++ b/doc/epydoc/timeside.api.IDecoder-class.html @@ -0,0 +1,341 @@ + + + + + timeside.api.IDecoder + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Module api :: + Class IDecoder + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class IDecoder

source code

+
+         object --+        
+                  |        
+component.Interface --+    
+                      |    
+             IProcessor --+
+                          |
+                         IDecoder
+
+ +
+

Decoder driver interface. Decoders are different of encoders in that a + given driver may support several input formats, hence this interface + doesn't export any static method, all informations are dynamic.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
__init__(self, + filename)
+ Create a new decoder for filename.
+ source code + +
+ +
+   + + + + + + +
format()
+ Return a user-friendly file format string
+ source code + +
+ +
+   + + + + + + +
encoding()
+ Return a user-friendly encoding string
+ source code + +
+ +
+   + + + + + + +
resolution()
+ Return the sample width (8, 16, etc..) of original audio file/stream, + or None if not applicable/known
+ source code + +
+ +
+   + + + + + + +
metadata(self)
+ Return the metadata embedded into the encoded stream, if any.
+ source code + +
+ +
+

Inherited from IProcessor: + channels, + nframes, + process, + release, + samplerate, + setup +

+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Static Methods[hide private]
+
+

Inherited from IProcessor: + id +

+
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + +
+ + + + + +
Method Details[hide private]
+
+ +
+ +
+ + +
+

__init__(self, + filename) +
(Constructor) +

+
source code  +
+ +

Create a new decoder for filename.

+
+
Overrides: + object.__init__ +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.api.IEffect-class.html b/doc/epydoc/timeside.api.IEffect-class.html new file mode 100644 index 0000000..7abce71 --- /dev/null +++ b/doc/epydoc/timeside.api.IEffect-class.html @@ -0,0 +1,285 @@ + + + + + timeside.api.IEffect + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Module api :: + Class IEffect + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class IEffect

source code

+
+         object --+        
+                  |        
+component.Interface --+    
+                      |    
+             IProcessor --+
+                          |
+                         IEffect
+
+ +
+

Effect processor interface

+ + + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
__init__(self)
+ Create a new effect.
+ source code + +
+ +
+

Inherited from IProcessor: + channels, + nframes, + process, + release, + samplerate, + setup +

+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + + + + +
+ + + + + +
Static Methods[hide private]
+
+   + + + + + + +
name()
+ Return the effect name
+ source code + +
+ +
+

Inherited from IProcessor: + id +

+
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + +
+ + + + + +
Method Details[hide private]
+
+ +
+ +
+ + +
+

__init__(self) +
(Constructor) +

+
source code  +
+ +

Create a new effect.

+
+
Overrides: + object.__init__ +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.api.IEncoder-class.html b/doc/epydoc/timeside.api.IEncoder-class.html new file mode 100644 index 0000000..018348b --- /dev/null +++ b/doc/epydoc/timeside.api.IEncoder-class.html @@ -0,0 +1,410 @@ + + + + + timeside.api.IEncoder + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Module api :: + Class IEncoder + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class IEncoder

source code

+
+         object --+        
+                  |        
+component.Interface --+    
+                      |    
+             IProcessor --+
+                          |
+                         IEncoder
+
+ +
+

Encoder driver interface. Each encoder is expected to support a + specific format.

+ + + + + + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
__init__(self, + output)
+ Create a new encoder.
+ source code + +
+ +
+   + + + + + + +
set_metadata(self, + metadata)
+ Set the metadata to be embedded in the encoded output.
+ source code + +
+ +
+

Inherited from IProcessor: + channels, + nframes, + process, + release, + samplerate, + setup +

+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
Static Methods[hide private]
+
+   + + + + + + +
format()
+ Return the encode/encoding format as a short string Example: + "MP3", "OGG", "AVI", ...
+ source code + +
+ +
+   + + + + + + +
description()
+ Return a string describing what this encode format provides, is good + for, etc...
+ source code + +
+ +
+   + + + + + + +
file_extension()
+ Return the filename extension corresponding to this encode format
+ source code + +
+ +
+   + + + + + + +
mime_type()
+ Return the mime type corresponding to this encode format
+ source code + +
+ +
+

Inherited from IProcessor: + id +

+
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + +
+ + + + + +
Method Details[hide private]
+
+ +
+ +
+ + +
+

__init__(self, + output) +
(Constructor) +

+
source code  +
+ +

Create a new encoder. output can either be a filename or a python + callback function/method for streaming mode.

+

The streaming callback prototype is: callback(data, eod) Where data is + a block of binary data of an undetermined size, and eod True when + end-of-data is reached.

+
+
Overrides: + object.__init__ +
+
+
+
+ +
+ +
+ + +
+

description() +
Static Method +

+
source code  +
+ +

Return a string describing what this encode format provides, is good + for, etc... The description is meant to help the end user decide what + format is good for him/her

+
+
+
+
+ +
+ +
+ + +
+

set_metadata(self, + metadata) +

+
source code  +
+ +

Set the metadata to be embedded in the encoded output.

+

In non-streaming mode, this method updates the metadata directly into + the output file, without re-encoding the audio data, provided this file + already exists.

+

It isn't required to call this method, but if called, it must be + before process().

+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.api.IGrapher-class.html b/doc/epydoc/timeside.api.IGrapher-class.html new file mode 100644 index 0000000..b943a55 --- /dev/null +++ b/doc/epydoc/timeside.api.IGrapher-class.html @@ -0,0 +1,350 @@ + + + + + timeside.api.IGrapher + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Module api :: + Class IGrapher + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class IGrapher

source code

+
+         object --+        
+                  |        
+component.Interface --+    
+                      |    
+             IProcessor --+
+                          |
+                         IGrapher
+
+ +
+

Media item visualizer driver interface

+ + + + + + + + + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
__init__(self, + width, + height)
+ Create a new grapher.
+ source code + +
+ +
+   + + + + + + +
set_colors(self, + background=None, + scheme=None)
+ Set the colors used for image generation.
+ source code + +
+ +
+   + + + + + + +
render(self)
+ Return a PIL Image object visually representing all of the data + passed by repeatedly calling process()
+ source code + +
+ +
+

Inherited from IProcessor: + channels, + nframes, + process, + release, + samplerate, + setup +

+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + + + + +
+ + + + + +
Static Methods[hide private]
+
+   + + + + + + +
name()
+ Return the graph name, such as "Waveform", "Spectral + view", etc..
+ source code + +
+ +
+

Inherited from IProcessor: + id +

+
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + +
+ + + + + +
Method Details[hide private]
+
+ +
+ +
+ + +
+

__init__(self, + width, + height) +
(Constructor) +

+
source code  +
+ +

Create a new grapher. width and height are generally in pixels but + could be something else for eg. svg rendering, etc..

+
+
Overrides: + object.__init__ +
+
+
+
+ +
+ +
+ + +
+

set_colors(self, + background=None, + scheme=None) +

+
source code  +
+ +

Set the colors used for image generation. background is a RGB tuple, + and scheme a a predefined color theme name

+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.api.IProcessor-class.html b/doc/epydoc/timeside.api.IProcessor-class.html new file mode 100644 index 0000000..b89a7c8 --- /dev/null +++ b/doc/epydoc/timeside.api.IProcessor-class.html @@ -0,0 +1,460 @@ + + + + + timeside.api.IProcessor + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Module api :: + Class IProcessor + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class IProcessor

source code

+
+         object --+    
+                  |    
+component.Interface --+
+                      |
+                     IProcessor
+
+ +
Known Subclasses:
+
+ +
+ +
+

Common processor interface

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
setup(self, + channels=None, + samplerate=None, + nframes=None)
+ Allocate internal resources and reset state, so that this processor + is ready for a new run.
+ source code + +
+ +
+   + + + + + + +
channels(self)
+ Number of channels in the data returned by process().
+ source code + +
+ +
+   + + + + + + +
samplerate(self)
+ Samplerate of the data returned by process().
+ source code + +
+ +
+   + + + + + + +
nframes()
+ The total number of frames that this processor can output, or None if + the duration is unknown.
+ source code + +
+ +
+   + + + + + + +
process(self, + frames=None, + eod=False)
+ Process input frames and return a (output_frames, eod) tuple.
+ source code + +
+ +
+   + + + + + + +
release(self)
+ Release resources owned by this processor.
+ source code + +
+ +
+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __init__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Static Methods[hide private]
+
+   + + + + + + +
id()
+ Short alphanumeric, lower-case string which uniquely identify this + processor, suitable for use as an HTTP/GET argument value, in + filenames, etc...
+ source code + +
+ +
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + +
+ + + + + +
Method Details[hide private]
+
+ +
+ +
+ + +
+

setup(self, + channels=None, + samplerate=None, + nframes=None) +

+
source code  +
+ +

Allocate internal resources and reset state, so that this processor is + ready for a new run.

+

The channels, samplerate and/or nframes arguments may be required by + processors which accept input. An error will occur if any of these + arguments is passed to an output-only processor such as a decoder.

+
+
+
+
+ +
+ +
+ + +
+

channels(self) +

+
source code  +
+ +

Number of channels in the data returned by process(). May be different + from the number of channels passed to setup()

+
+
+
+
+ +
+ +
+ + +
+

samplerate(self) +

+
source code  +
+ +

Samplerate of the data returned by process(). May be different from + the samplerate passed to setup()

+
+
+
+
+ +
+ +
+ + +
+

process(self, + frames=None, + eod=False) +

+
source code  +
+ +

Process input frames and return a (output_frames, eod) tuple. Both + input and output frames are 2D numpy arrays, where columns are channels, + and containing an undetermined number of frames. eod=True means that the + end-of-data has been reached.

+

Output-only processors (such as decoders) will raise an exception if + the frames argument is not None. All processors (even encoders) return + data, even if that means returning the input unchanged.

+

Warning: it is required to call setup() before this method.

+
+
+
+
+ +
+ +
+ + +
+

release(self) +

+
source code  +
+ +

Release resources owned by this processor. The processor cannot be + used anymore after calling this method.

+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.api.IValueAnalyzer-class.html b/doc/epydoc/timeside.api.IValueAnalyzer-class.html new file mode 100644 index 0000000..6e6c568 --- /dev/null +++ b/doc/epydoc/timeside.api.IValueAnalyzer-class.html @@ -0,0 +1,297 @@ + + + + + timeside.api.IValueAnalyzer + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Module api :: + Class IValueAnalyzer + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class IValueAnalyzer

source code

+
+         object --+            
+                  |            
+component.Interface --+        
+                      |        
+             IProcessor --+    
+                          |    
+                  IAnalyzer --+
+                              |
+                             IValueAnalyzer
+
+ +
+

Interface for analyzers which return a single numeric value from + result()

+ + + + + + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
result()
+ Return the final result of the analysis performed over the data + passed by repeatedly calling process()
+ source code + +
+ +
+   + + + + + + +
__str__(self)
+ Return a human readable string containing both result and unit + ('5.30dB', '4.2s', etc...)
+ source code + +
+ +
+

Inherited from IAnalyzer: + __init__ +

+

Inherited from IProcessor: + channels, + nframes, + process, + release, + samplerate, + setup +

+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__ +

+
+ + + + + + + + + +
+ + + + + +
Static Methods[hide private]
+
+

Inherited from IAnalyzer: + name, + unit +

+

Inherited from IProcessor: + id +

+
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + +
+ + + + + +
Method Details[hide private]
+
+ +
+ +
+ + +
+

__str__(self) +
(Informal representation operator) +

+
source code  +
+ +

Return a human readable string containing both result and unit + ('5.30dB', '4.2s', etc...)

+
+
Overrides: + object.__str__ +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.component-module.html b/doc/epydoc/timeside.component-module.html new file mode 100644 index 0000000..0398fdf --- /dev/null +++ b/doc/epydoc/timeside.component-module.html @@ -0,0 +1,325 @@ + + + + + timeside.component + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Module component + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Module component

source code

+ + + + + + + + + + + + + + + + + + +
+ + + + + +
Classes[hide private]
+
+   + + Interface
+ Marker base class for interfaces. +
+   + + MetaComponent
+ Metaclass of the Component class, used mainly to register the + interface declared to be implemented by a component. +
+   + + Component
+ Base class of all components +
+   + + ComponentError +
+ + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
Functions[hide private]
+
+   + + + + + + +
implements(*interfaces)
+ Registers the interfaces implemented by a component when placed in + the class header
+ source code + +
+ +
+   + + + + + + +
abstract()
+ Declare a component as abstract when placed in the class header
+ source code + +
+ +
+   + + + + + + +
implementations(interface, + recurse=True, + abstract=False)
+ Returns the components implementing interface, and if recurse, any of + the descendants of interface.
+ source code + +
+ +
+   + + + + + + +
interfacedoc(func) + source code + +
+ +
+   + + + + + + +
extend_unique(list1, + list2)
+ Extend list1 with list2 as list.extend(), but doesn't append + duplicates to list1
+ source code + +
+ +
+   + + + + + + +
find_implementations(interface, + recurse, + abstract, + result)
+ Find implementations of an interface or of one of its descendants and + extend result with the classes found.
+ source code + +
+ +
+ + + + + + +
+ + + + + +
Function Details[hide private]
+
+ +
+ +
+ + +
+

implementations(interface, + recurse=True, + abstract=False) +

+
source code  +
+ +

Returns the components implementing interface, and if recurse, any of + the descendants of interface. If abstract is True, also return the + abstract implementations.

+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.component-pysrc.html b/doc/epydoc/timeside.component-pysrc.html new file mode 100644 index 0000000..f596e6e --- /dev/null +++ b/doc/epydoc/timeside.component-pysrc.html @@ -0,0 +1,414 @@ + + + + + timeside.component + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Module component + + + + + + +
[hide private]
[frames] | no frames]
+
+

Source Code for Module timeside.component

+
+  1  # -*- coding: utf-8 -*- 
+  2  # 
+  3  # Copyright (c) 2009 Olivier Guilyardi <olivier@samalyse.com> 
+  4  # 
+  5  # This file is part of TimeSide. 
+  6   
+  7  # TimeSide is free software: you can redistribute it and/or modify 
+  8  # it under the terms of the GNU General Public License as published by 
+  9  # the Free Software Foundation, either version 2 of the License, or 
+ 10  # (at your option) any later version. 
+ 11   
+ 12  # TimeSide is distributed in the hope that it will be useful, 
+ 13  # but WITHOUT ANY WARRANTY; without even the implied warranty of 
+ 14  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
+ 15  # GNU General Public License for more details. 
+ 16   
+ 17  # You should have received a copy of the GNU General Public License 
+ 18  # along with TimeSide.  If not, see <http://www.gnu.org/licenses/>. 
+ 19   
+ 20   
+ 21  # This file defines a generic object interface mechanism and  
+ 22  # a way to determine which components implements a given interface. 
+ 23  # 
+ 24  # For example, the following defines the Music class as implementing the 
+ 25  # listenable interface. 
+ 26  # 
+ 27  # class Listenable(Interface): 
+ 28  #     pass 
+ 29  # 
+ 30  # class Music(Component): 
+ 31  #    implements(Listenable) 
+ 32  # 
+ 33  # Several class can implements a such interface, and it is possible to  
+ 34  # discover which class implements it with implementations(): 
+ 35  # 
+ 36  # list_of_classes = implementations(Listenable) 
+ 37  # 
+ 38  # This mechanism support inheritance of interfaces: a class implementing a given  
+ 39  # interface is also considered to implement all the ascendants of this interface. 
+ 40  # 
+ 41  # However, inheritance is not supported for components. The descendants of a class  
+ 42  # implementing a given interface are not automatically considered to implement this  
+ 43  # interface too.  
+ 44   
+ 45  __all__ = ['Component', 'MetaComponent', 'implements', 'abstract',  
+ 46             'interfacedoc', 'Interface', 'implementations', 'ComponentError'] 
+ 47   
+
48 -class Interface(object): +
49 """Marker base class for interfaces.""" +
50 +
51 -def implements(*interfaces): +
52 """Registers the interfaces implemented by a component when placed in the + 53 class header""" + 54 MetaComponent.implements.extend(interfaces) +
55 +
56 -def abstract(): +
57 """Declare a component as abstract when placed in the class header""" + 58 MetaComponent.abstract = True +
59 +
60 -def implementations(interface, recurse=True, abstract=False): +
61 """Returns the components implementing interface, and if recurse, any of + 62 the descendants of interface. If abstract is True, also return the + 63 abstract implementations.""" + 64 result = [] + 65 find_implementations(interface, recurse, abstract, result) + 66 return result +
67 +
68 -def interfacedoc(func): +
69 if isinstance(func, staticmethod): + 70 raise ComponentError("@interfacedoc can't handle staticmethod (try to put @staticmethod above @interfacedoc)") + 71 + 72 if not func.__doc__: + 73 func.__doc__ = "@interfacedoc" + 74 func._interfacedoc = True + 75 return func +
76 +
77 -class MetaComponent(type): +
78 """Metaclass of the Component class, used mainly to register the interface + 79 declared to be implemented by a component.""" + 80 + 81 implementations = [] + 82 implements = [] + 83 abstract = False + 84 +
85 - def __new__(cls, name, bases, d): +
86 new_class = type.__new__(cls, name, bases, d) + 87 + 88 # Register implementations + 89 if MetaComponent.implements: + 90 for i in MetaComponent.implements: + 91 MetaComponent.implementations.append({ + 92 'interface': i, + 93 'class': new_class, + 94 'abstract': MetaComponent.abstract}) + 95 + 96 # Propagate @interfacedoc + 97 for name in new_class.__dict__: + 98 member = new_class.__dict__[name] + 99 if isinstance(member, staticmethod): +100 member = getattr(new_class, name) +101 +102 if member.__doc__ == "@interfacedoc": +103 if_member = None +104 for i in MetaComponent.implements: +105 if hasattr(i, name): +106 if_member = getattr(i, name) +107 if not if_member: +108 raise ComponentError("@interfacedoc: %s.%s: no such member in implemented interfaces: %s" +109 % (new_class.__name__, name, str(MetaComponent.implements))) +110 member.__doc__ = if_member.__doc__ +111 +112 MetaComponent.implements = [] +113 MetaComponent.abstract = False +114 +115 return new_class +
116 +
117 -class Component(object): +
118 """Base class of all components""" +119 __metaclass__ = MetaComponent +
120 +
121 -def extend_unique(list1, list2): +
122 """Extend list1 with list2 as list.extend(), but doesn't append duplicates +123 to list1""" +124 for item in list2: +125 if item not in list1: +126 list1.append(item) +
127 +
128 -def find_implementations(interface, recurse, abstract, result): +
129 """Find implementations of an interface or of one of its descendants and +130 extend result with the classes found.""" +131 for item in MetaComponent.implementations: +132 if (item['interface'] == interface and (abstract or not item['abstract'])): +133 extend_unique(result, [item['class']]) +134 +135 if recurse: +136 subinterfaces = interface.__subclasses__() +137 if subinterfaces: +138 for i in subinterfaces: +139 find_implementations(i, recurse, abstract, result) +
140 +
141 -class ComponentError(Exception): +
142 pass +
143 +
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.component.Component-class.html b/doc/epydoc/timeside.component.Component-class.html new file mode 100644 index 0000000..54df831 --- /dev/null +++ b/doc/epydoc/timeside.component.Component-class.html @@ -0,0 +1,206 @@ + + + + + timeside.component.Component + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Module component :: + Class Component + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class Component

source code

+
+object --+
+         |
+        Component
+
+ +
Known Subclasses:
+
+ +
+ +
+

Base class of all components

+ + + + + + + + + + +
+ + + + + +
Nested Classes[hide private]
+
+   + + __metaclass__
+ Metaclass of the Component class, used mainly to register the + interface declared to be implemented by a component. +
+ + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __init__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.component.ComponentError-class.html b/doc/epydoc/timeside.component.ComponentError-class.html new file mode 100644 index 0000000..e411324 --- /dev/null +++ b/doc/epydoc/timeside.component.ComponentError-class.html @@ -0,0 +1,186 @@ + + + + + timeside.component.ComponentError + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Module component :: + Class ComponentError + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class ComponentError

source code

+
+              object --+        
+                       |        
+exceptions.BaseException --+    
+                           |    
+        exceptions.Exception --+
+                               |
+                              ComponentError
+
+ +
+ + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+

Inherited from exceptions.Exception: + __init__, + __new__ +

+

Inherited from exceptions.BaseException: + __delattr__, + __getattribute__, + __getitem__, + __getslice__, + __reduce__, + __repr__, + __setattr__, + __setstate__, + __str__ +

+

Inherited from object: + __hash__, + __reduce_ex__ +

+
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from exceptions.BaseException: + args, + message +

+

Inherited from object: + __class__ +

+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.component.Interface-class.html b/doc/epydoc/timeside.component.Interface-class.html new file mode 100644 index 0000000..2064035 --- /dev/null +++ b/doc/epydoc/timeside.component.Interface-class.html @@ -0,0 +1,179 @@ + + + + + timeside.component.Interface + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Module component :: + Class Interface + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class Interface

source code

+
+object --+
+         |
+        Interface
+
+ +
Known Subclasses:
+
+ +
+ +
+

Marker base class for interfaces.

+ + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __init__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.component.MetaComponent-class.html b/doc/epydoc/timeside.component.MetaComponent-class.html new file mode 100644 index 0000000..c208d94 --- /dev/null +++ b/doc/epydoc/timeside.component.MetaComponent-class.html @@ -0,0 +1,374 @@ + + + + + timeside.component.MetaComponent + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Module component :: + Class MetaComponent + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Type MetaComponent

source code

+
+object --+    
+         |    
+      type --+
+             |
+            MetaComponent
+
+ +
Known Subclasses:
+
+ +
+ +
+

Metaclass of the Component class, used mainly to register the + interface declared to be implemented by a component.

+ + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+

Inherited from type: + __call__, + __cmp__, + __delattr__, + __getattribute__, + __hash__, + __repr__, + __setattr__, + __subclasses__, + mro +

+

Inherited from object: + __init__, + __reduce__, + __reduce_ex__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Static Methods[hide private]
+
+ a new object with type S, a subtype of T + + + + + + +
__new__(cls, + name, + bases, + d) + source code + +
+ +
+ + + + + + + + + + + + + + + +
+ + + + + +
Class Variables[hide private]
+
+   + + abstract = False +
+   + + implementations = [{'abstract': True, 'class': <class 'timesid... +
+   + + implements = [<class 'timeside.tests.testcomponent.I1'>] +
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from type: + __base__, + __bases__, + __basicsize__, + __dictoffset__, + __flags__, + __itemsize__, + __mro__, + __name__, + __weakrefoffset__ +

+

Inherited from object: + __class__ +

+
+ + + + + + +
+ + + + + +
Method Details[hide private]
+
+ +
+ +
+ + +
+

__new__(cls, + name, + bases, + d) +
Static Method +

+
source code  +
+ + +
+
Returns: a new object with type S, a subtype of T
+
Overrides: + object.__new__ +
(inherited documentation)
+ +
+
+
+
+ + + + + + +
+ + + + + +
Class Variable Details[hide private]
+
+ +
+ +
+

implementations

+ +
+
+
+
Value:
+
+[{'abstract': True,
+  'class': <class 'timeside.core.Processor'>,
+  'interface': <class 'timeside.api.IProcessor'>},
+ {'abstract': False,
+  'class': <class 'timeside.decode.ogg.OggDecoder'>,
+  'interface': <class 'timeside.api.IDecoder'>},
+ {'abstract': False,
+  'class': <class 'timeside.decode.flac.FlacDecoder'>,
+...
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.core-module.html b/doc/epydoc/timeside.core-module.html new file mode 100644 index 0000000..a178470 --- /dev/null +++ b/doc/epydoc/timeside.core-module.html @@ -0,0 +1,339 @@ + + + + + timeside.core + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Module core + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Module core

source code

+ + + + + + + + + + + + + + + + + + +
+ + + + + +
Classes[hide private]
+
+   + + MetaProcessor
+ Metaclass of the Processor class, used mainly for ensuring that + processor id's are wellformed and unique +
+   + + Processor
+ Base component class of all processors +
+   + + FixedSizeInputAdapter
+ Utility to make it easier to write processors which require + fixed-sized input buffers. +
+   + + ProcessPipe
+ Handle a pipe of processors +
+ + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
Functions[hide private]
+
+   + + + + + + +
processors(interface=<class 'timeside.api.IProcessor'>, + recurse=True)
+ Returns the processors implementing a given interface and, if + recurse, any of the descendants of this interface.
+ source code + +
+ +
+   + + + + + + +
get_processor(processor_id)
+ Return a processor by its id
+ source code + +
+ +
+   + + + + + + +
abstract()
+ Declare a component as abstract when placed in the class header
+ source code + +
+ +
+   + + + + + + +
implements(*interfaces)
+ Registers the interfaces implemented by a component when placed in + the class header
+ source code + +
+ +
+   + + + + + + +
interfacedoc(func) + source code + +
+ +
+ + + + + + + + + +
+ + + + + +
Variables[hide private]
+
+   + + _processors = {'dc': <class 'timeside.analyze.dc.MeanDCShiftAn... +
+ + + + + + +
+ + + + + +
Variables Details[hide private]
+
+ +
+ +
+

_processors

+ +
+
+
+
Value:
+
+{'dc': <class 'timeside.analyze.dc.MeanDCShiftAnalyser'>,
+ 'duration': <class 'timeside.analyze.duration.DurationAnalyzer'>,
+ 'encoding': <class 'timeside.analyze.encoding.EncodingAnalyser'>,
+ 'flacdec': <class 'timeside.decode.flac.FlacDecoder'>,
+ 'flacenc': <class 'timeside.encode.flac.FlacEncoder'>,
+ 'format': <class 'timeside.analyze.format.FormatAnalyser'>,
+ 'max_level': <class 'timeside.analyze.max_level.MaxLevelAnalyzer'>,
+ 'meanlevel': <class 'timeside.analyze.mean_level.MeanLevelAnalyser'>,
+...
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.core-pysrc.html b/doc/epydoc/timeside.core-pysrc.html new file mode 100644 index 0000000..5bc23d4 --- /dev/null +++ b/doc/epydoc/timeside.core-pysrc.html @@ -0,0 +1,716 @@ + + + + + timeside.core + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Module core + + + + + + +
[hide private]
[frames] | no frames]
+
+

Source Code for Module timeside.core

+
+  1  # -*- coding: utf-8 -*- 
+  2  # 
+  3  # Copyright (c) 2009 Olivier Guilyardi <olivier@samalyse.com> 
+  4  # 
+  5  # This file is part of TimeSide. 
+  6   
+  7  # TimeSide is free software: you can redistribute it and/or modify 
+  8  # it under the terms of the GNU General Public License as published by 
+  9  # the Free Software Foundation, either version 2 of the License, or 
+ 10  # (at your option) any later version. 
+ 11   
+ 12  # TimeSide is distributed in the hope that it will be useful, 
+ 13  # but WITHOUT ANY WARRANTY; without even the implied warranty of 
+ 14  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
+ 15  # GNU General Public License for more details. 
+ 16   
+ 17  # You should have received a copy of the GNU General Public License 
+ 18  # along with TimeSide.  If not, see <http://www.gnu.org/licenses/>. 
+ 19   
+ 20  from timeside.component import * 
+ 21  from timeside.api import IProcessor 
+ 22  from timeside.exceptions import Error, ApiError 
+ 23  import re 
+ 24  import numpy 
+ 25   
+ 26  __all__ = ['Processor', 'MetaProcessor', 'implements', 'abstract',  
+ 27             'interfacedoc', 'processors', 'get_processor', 'ProcessPipe', 
+ 28             'FixedSizeInputAdapter'] 
+ 29   
+ 30  _processors = {} 
+
31 + 32 -class MetaProcessor(MetaComponent): +
33 """Metaclass of the Processor class, used mainly for ensuring that processor + 34 id's are wellformed and unique""" + 35 + 36 valid_id = re.compile("^[a-z][_a-z0-9]*$") + 37 +
38 - def __new__(cls, name, bases, d): +
39 new_class = MetaComponent.__new__(cls, name, bases, d) + 40 if new_class in implementations(IProcessor): + 41 id = str(new_class.id()) + 42 if _processors.has_key(id): + 43 raise ApiError("%s and %s have the same id: '%s'" + 44 % (new_class.__name__, _processors[id].__name__, id)) + 45 if not MetaProcessor.valid_id.match(id): + 46 raise ApiError("%s has a malformed id: '%s'" + 47 % (new_class.__name__, id)) + 48 + 49 _processors[id] = new_class + 50 + 51 return new_class +
52 +
53 -class Processor(Component): +
54 """Base component class of all processors""" + 55 __metaclass__ = MetaProcessor + 56 + 57 abstract() + 58 implements(IProcessor) + 59 + 60 @interfacedoc +
61 - def setup(self, channels=None, samplerate=None, nframes=None): +
62 self.input_channels = channels + 63 self.input_samplerate = samplerate + 64 self.input_nframes = nframes +
65 + 66 # default channels(), samplerate() and nframes() implementations returns + 67 # the input characteristics, but processors may change this behaviour by + 68 # overloading those methods + 69 @interfacedoc +
70 - def channels(self): +
71 return self.input_channels +
72 + 73 @interfacedoc +
74 - def samplerate(self): +
75 return self.input_samplerate +
76 + 77 @interfacedoc +
78 - def nframes(self): +
79 return self.input_nframes +
80 + 81 @interfacedoc +
82 - def process(self, frames, eod): +
83 return frames, eod +
84 + 85 @interfacedoc +
86 - def release(self): +
87 pass +
88 +
89 - def __del__(self): +
90 self.release() +
91 +
92 - def __or__(self, other): +
93 return ProcessPipe(self, other) +
94 +
95 -class FixedSizeInputAdapter(object): +
96 """Utility to make it easier to write processors which require fixed-sized + 97 input buffers.""" + 98 +
99 - def __init__(self, buffer_size, channels, pad=False): +
100 """Construct a new adapter: buffer_size is the desired buffer size in frames, +101 channels the number of channels, and pad indicates whether the last block should +102 be padded with zeros.""" +103 +104 self.buffer = numpy.empty((buffer_size, channels)) +105 self.buffer_size = buffer_size +106 self.len = 0 +107 self.pad = pad +
108 +
109 - def nframes(self, input_nframes): +
110 """Return the total number of frames that this adapter will output according to the +111 input_nframes argument""" +112 +113 nframes = input_nframes +114 if self.pad: +115 mod = input_nframes % self.buffer_size +116 if mod: +117 nframes += self.buffer_size - mod +118 +119 return nframes +
120 +121 +
122 - def process(self, frames, eod): +
123 """Returns an iterator over tuples of the form (buffer, eod) where buffer is a +124 fixed-sized block of data, and eod indicates whether this is the last block. +125 In case padding is deactivated the last block may be smaller than the buffer size. +126 """ +127 src_index = 0 +128 remaining = len(frames) +129 +130 while remaining: +131 space = self.buffer_size - self.len +132 copylen = remaining < space and remaining or space +133 src = frames[src_index:src_index + copylen] +134 if self.len == 0 and copylen == self.buffer_size: +135 # avoid unnecessary copy +136 buffer = src +137 else: +138 buffer = self.buffer +139 buffer[self.len:self.len + copylen] = src +140 +141 remaining -= copylen +142 src_index += copylen +143 self.len += copylen +144 +145 if self.len == self.buffer_size: +146 yield buffer, (eod and not remaining) +147 self.len = 0 +148 +149 if eod and self.len: +150 block = self.buffer +151 if self.pad: +152 self.buffer[self.len:self.buffer_size] = 0 +153 else: +154 block = self.buffer[0:self.len] +155 +156 yield block, True +157 self.len = 0 +
158 +
159 -def processors(interface=IProcessor, recurse=True): +
160 """Returns the processors implementing a given interface and, if recurse, +161 any of the descendants of this interface.""" +162 return implementations(interface, recurse) +
163 +
164 +165 -def get_processor(processor_id): +
166 """Return a processor by its id""" +167 if not _processors.has_key(processor_id): +168 raise Error("No processor registered with id: '%s'" +169 % processor_id) +170 +171 return _processors[processor_id] +
172 +
173 -class ProcessPipe(object): +
174 """Handle a pipe of processors""" +175 +
176 - def __init__(self, *others): +
177 self.processors = [] +178 self |= others +
179 +
180 - def __or__(self, other): +
181 return ProcessPipe(self, other) +
182 +
183 - def __ior__(self, other): +
184 if isinstance(other, Processor): +185 self.processors.append(other) +186 elif isinstance(other, ProcessPipe): +187 self.processors.extend(other.processors) +188 else: +189 try: +190 iter(other) +191 except TypeError: +192 raise Error("Can not add this type of object to a pipe: %s", str(other)) +193 +194 for item in other: +195 self |= item +196 +197 return self +
198 +
199 - def run(self): +
200 """Setup/reset all processors in cascade and stream audio data along +201 the pipe. Also returns the pipe itself.""" +202 +203 source = self.processors[0] +204 items = self.processors[1:] +205 +206 # setup/reset processors and configure channels and samplerate throughout the pipe +207 source.setup() +208 last = source +209 for item in items: +210 item.setup(last.channels(), last.samplerate(), last.nframes()) +211 last = item +212 +213 # now stream audio data along the pipe +214 eod = False +215 while not eod: +216 frames, eod = source.process() +217 for item in items: +218 frames, eod = item.process(frames, eod) +219 +220 return self +
221 +
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.core.FixedSizeInputAdapter-class.html b/doc/epydoc/timeside.core.FixedSizeInputAdapter-class.html new file mode 100644 index 0000000..6c3b026 --- /dev/null +++ b/doc/epydoc/timeside.core.FixedSizeInputAdapter-class.html @@ -0,0 +1,306 @@ + + + + + timeside.core.FixedSizeInputAdapter + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Module core :: + Class FixedSizeInputAdapter + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class FixedSizeInputAdapter

source code

+
+object --+
+         |
+        FixedSizeInputAdapter
+
+ +
+

Utility to make it easier to write processors which require + fixed-sized input buffers.

+ + + + + + + + + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
__init__(self, + buffer_size, + channels, + pad=False)
+ Construct a new adapter: buffer_size is the desired buffer size in + frames, channels the number of channels, and pad indicates whether + the last block should be padded with zeros.
+ source code + +
+ +
+   + + + + + + +
nframes(self, + input_nframes)
+ Return the total number of frames that this adapter will output + according to the input_nframes argument
+ source code + +
+ +
+   + + + + + + +
process(self, + frames, + eod)
+ Returns an iterator over tuples of the form (buffer, eod) where + buffer is a fixed-sized block of data, and eod indicates whether this + is the last block.
+ source code + +
+ +
+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + +
+ + + + + +
Method Details[hide private]
+
+ +
+ +
+ + +
+

__init__(self, + buffer_size, + channels, + pad=False) +
(Constructor) +

+
source code  +
+ +

Construct a new adapter: buffer_size is the desired buffer size in + frames, channels the number of channels, and pad indicates whether the + last block should be padded with zeros.

+
+
Overrides: + object.__init__ +
+
+
+
+ +
+ +
+ + +
+

process(self, + frames, + eod) +

+
source code  +
+ +

Returns an iterator over tuples of the form (buffer, eod) where buffer + is a fixed-sized block of data, and eod indicates whether this is the + last block. In case padding is deactivated the last block may be smaller + than the buffer size.

+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.core.MetaProcessor-class.html b/doc/epydoc/timeside.core.MetaProcessor-class.html new file mode 100644 index 0000000..8ecd2a0 --- /dev/null +++ b/doc/epydoc/timeside.core.MetaProcessor-class.html @@ -0,0 +1,312 @@ + + + + + timeside.core.MetaProcessor + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Module core :: + Class MetaProcessor + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Type MetaProcessor

source code

+
+         object --+        
+                  |        
+               type --+    
+                      |    
+component.MetaComponent --+
+                          |
+                         MetaProcessor
+
+ +
+

Metaclass of the Processor class, used mainly for ensuring that + processor id's are wellformed and unique

+ + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+

Inherited from type: + __call__, + __cmp__, + __delattr__, + __getattribute__, + __hash__, + __repr__, + __setattr__, + __subclasses__, + mro +

+

Inherited from object: + __init__, + __reduce__, + __reduce_ex__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Static Methods[hide private]
+
+ a new object with type S, a subtype of T + + + + + + +
__new__(cls, + name, + bases, + d) + source code + +
+ +
+ + + + + + + + + + + + +
+ + + + + +
Class Variables[hide private]
+
+   + + valid_id = re.compile(r'^[a-z][_a-z0-9]*$') +
+

Inherited from component.MetaComponent: + abstract, + implementations, + implements +

+
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from type: + __base__, + __bases__, + __basicsize__, + __dictoffset__, + __flags__, + __itemsize__, + __mro__, + __name__, + __weakrefoffset__ +

+

Inherited from object: + __class__ +

+
+ + + + + + +
+ + + + + +
Method Details[hide private]
+
+ +
+ +
+ + +
+

__new__(cls, + name, + bases, + d) +
Static Method +

+
source code  +
+ + +
+
Returns: a new object with type S, a subtype of T
+
Overrides: + object.__new__ +
(inherited documentation)
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.core.ProcessPipe-class.html b/doc/epydoc/timeside.core.ProcessPipe-class.html new file mode 100644 index 0000000..290c709 --- /dev/null +++ b/doc/epydoc/timeside.core.ProcessPipe-class.html @@ -0,0 +1,307 @@ + + + + + timeside.core.ProcessPipe + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Module core :: + Class ProcessPipe + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class ProcessPipe

source code

+
+object --+
+         |
+        ProcessPipe
+
+ +
+

Handle a pipe of processors

+ + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
__init__(self, + *others)
+ x.__init__(...) initializes x; see x.__class__.__doc__ for signature
+ source code + +
+ +
+   + + + + + + +
__or__(self, + other) + source code + +
+ +
+   + + + + + + +
__ior__(self, + other) + source code + +
+ +
+   + + + + + + +
run(self)
+ Setup/reset all processors in cascade and stream audio data along the + pipe.
+ source code + +
+ +
+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + +
+ + + + + +
Method Details[hide private]
+
+ +
+ +
+ + +
+

__init__(self, + *others) +
(Constructor) +

+
source code  +
+ +

x.__init__(...) initializes x; see x.__class__.__doc__ for + signature

+
+
Overrides: + object.__init__ +
(inherited documentation)
+ +
+
+
+ +
+ +
+ + +
+

run(self) +

+
source code  +
+ +

Setup/reset all processors in cascade and stream audio data along the + pipe. Also returns the pipe itself.

+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.core.Processor-class.html b/doc/epydoc/timeside.core.Processor-class.html new file mode 100644 index 0000000..4576ebf --- /dev/null +++ b/doc/epydoc/timeside.core.Processor-class.html @@ -0,0 +1,527 @@ + + + + + timeside.core.Processor + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Module core :: + Class Processor + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class Processor

source code

+
+         object --+    
+                  |    
+component.Component --+
+                      |
+                     Processor
+
+ +
Known Subclasses:
+
+ +
+ +
+

Base component class of all processors

+ + + + + + + + + + +
+ + + + + +
Nested Classes[hide private]
+
+   + + __metaclass__
+ Metaclass of the Processor class, used mainly for ensuring that + processor id's are wellformed and unique +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
__del__(self) + source code + +
+ +
+   + + + + + + +
__or__(self, + other) + source code + +
+ +
+   + + + + + + +
channels(self)
+ Number of channels in the data returned by process().
+ source code + +
+ +
+   + + + + + + +
nframes(self)
+ The total number of frames that this processor can output, or None if + the duration is unknown.
+ source code + +
+ +
+   + + + + + + +
process(self, + frames, + eod)
+ Process input frames and return a (output_frames, eod) tuple.
+ source code + +
+ +
+   + + + + + + +
release(self)
+ Release resources owned by this processor.
+ source code + +
+ +
+   + + + + + + +
samplerate(self)
+ Samplerate of the data returned by process().
+ source code + +
+ +
+   + + + + + + +
setup(self, + channels=None, + samplerate=None, + nframes=None)
+ Allocate internal resources and reset state, so that this processor + is ready for a new run.
+ source code + +
+ +
+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __init__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + +
+ + + + + +
Method Details[hide private]
+
+ +
+ +
+ + +
+

channels(self) +

+
source code  +
+ +

Number of channels in the data returned by process(). May be different + from the number of channels passed to setup()

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
+
+
+ +
+ +
+ + +
+

nframes(self) +

+
source code  +
+ +

The total number of frames that this processor can output, or None if + the duration is unknown.

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
+
+
+ +
+ +
+ + +
+

process(self, + frames, + eod) +

+
source code  +
+ +

Process input frames and return a (output_frames, eod) tuple. Both + input and output frames are 2D numpy arrays, where columns are channels, + and containing an undetermined number of frames. eod=True means that the + end-of-data has been reached.

+

Output-only processors (such as decoders) will raise an exception if + the frames argument is not None. All processors (even encoders) return + data, even if that means returning the input unchanged.

+

Warning: it is required to call setup() before this method.

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
+
+
+ +
+ +
+ + +
+

release(self) +

+
source code  +
+ +

Release resources owned by this processor. The processor cannot be + used anymore after calling this method.

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
+
+
+ +
+ +
+ + +
+

samplerate(self) +

+
source code  +
+ +

Samplerate of the data returned by process(). May be different from + the samplerate passed to setup()

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
+
+
+ +
+ +
+ + +
+

setup(self, + channels=None, + samplerate=None, + nframes=None) +

+
source code  +
+ +

Allocate internal resources and reset state, so that this processor is + ready for a new run.

+

The channels, samplerate and/or nframes arguments may be required by + processors which accept input. An error will occur if any of these + arguments is passed to an output-only processor such as a decoder.

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.decode-module.html b/doc/epydoc/timeside.decode-module.html new file mode 100644 index 0000000..c273358 --- /dev/null +++ b/doc/epydoc/timeside.decode-module.html @@ -0,0 +1,132 @@ + + + + + timeside.decode + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package decode + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Package decode

source code

+ + + + + + + +
+ + + + + +
Submodules[hide private]
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.decode-pysrc.html b/doc/epydoc/timeside.decode-pysrc.html new file mode 100644 index 0000000..b81763d --- /dev/null +++ b/doc/epydoc/timeside.decode-pysrc.html @@ -0,0 +1,127 @@ + + + + + timeside.decode + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package decode + + + + + + +
[hide private]
[frames] | no frames]
+
+

Source Code for Package timeside.decode

+
+1  # -*- coding: utf-8 -*- 
+2   
+3  from timeside.decode.core import * 
+4  from timeside.decode.ogg import * 
+5  from timeside.decode.flac import * 
+6  from timeside.decode.wav import * 
+7  from timeside.decode.mp3 import * 
+8   
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.decode.core-module.html b/doc/epydoc/timeside.decode.core-module.html new file mode 100644 index 0000000..55237a4 --- /dev/null +++ b/doc/epydoc/timeside.decode.core-module.html @@ -0,0 +1,139 @@ + + + + + timeside.decode.core + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package decode :: + Module core + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Module core

source code

+ + + + + + + + + + + + +
+ + + + + +
Classes[hide private]
+
+   + + SubProcessPipe +
+   + + DecoderCore
+ Defines the main parts of the decoding tools : paths, metadata + parsing, data streaming thru system command +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.decode.core-pysrc.html b/doc/epydoc/timeside.decode.core-pysrc.html new file mode 100644 index 0000000..6243eb2 --- /dev/null +++ b/doc/epydoc/timeside.decode.core-pysrc.html @@ -0,0 +1,191 @@ + + + + + timeside.decode.core + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package decode :: + Module core + + + + + + +
[hide private]
[frames] | no frames]
+
+

Source Code for Module timeside.decode.core

+
+ 1  #!/usr/bin/python 
+ 2  # -*- coding: utf-8 -*- 
+ 3  # 
+ 4  # Copyright (c) 2007-2009 Guillaume Pellerin <yomguy@parisson.com> 
+ 5   
+ 6  # This file is part of TimeSide. 
+ 7   
+ 8  # TimeSide is free software: you can redistribute it and/or modify 
+ 9  # it under the terms of the GNU General Public License as published by 
+10  # the Free Software Foundation, either version 2 of the License, or 
+11  # (at your option) any later version. 
+12   
+13  # TimeSide is distributed in the hope that it will be useful, 
+14  # but WITHOUT ANY WARRANTY; without even the implied warranty of 
+15  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
+16  # GNU General Public License for more details. 
+17   
+18  # You should have received a copy of the GNU General Public License 
+19  # along with TimeSide.  If not, see <http://www.gnu.org/licenses/>. 
+20   
+21  # Author: Guillaume Pellerin <yomguy@parisson.com> 
+22   
+23  from timeside.decode import * 
+24  from timeside.core import * 
+25  import subprocess 
+26   
+
27 -class SubProcessPipe: +
28 +
29 - def __init__(self, command, stdin=None): +
30 """Read media and stream data through a generator. +31 Taken from Telemeta (see http://telemeta.org)""" +32 +33 self.buffer_size = 0xFFFF +34 +35 if not stdin: +36 stdin = subprocess.PIPE +37 +38 self.proc = subprocess.Popen(command.encode('utf-8'), +39 shell = True, +40 bufsize = self.buffer_size, +41 stdin = stdin, +42 stdout = subprocess.PIPE, +43 close_fds = True) +44 +45 self.input = self.proc.stdin +46 self.output = self.proc.stdout +
47 +48 +
49 -class DecoderCore(Processor): +
50 """Defines the main parts of the decoding tools : +51 paths, metadata parsing, data streaming thru system command""" +52 +
53 - def __init__(self): +
54 self.command = 'ffmpeg -i "%s" -f wav - ' +
55 +
56 - def process(self, source, options=None): +
57 """Encode and stream audio data through a generator""" +58 +59 command = self.command % source +60 proc = SubProcessPipe(command) +61 return proc.output +
62 +63 #while True: +64 #__chunk = proc.output.read(self.proc.buffer_size) +65 #status = proc.poll() +66 #if status != None and status != 0: +67 #raise ExportProcessError('Command failure:', command, proc) +68 #if len(__chunk) == 0: +69 #break +70 #yield __chunk +71 +
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.decode.core.DecoderCore-class.html b/doc/epydoc/timeside.decode.core.DecoderCore-class.html new file mode 100644 index 0000000..a9aca2f --- /dev/null +++ b/doc/epydoc/timeside.decode.core.DecoderCore-class.html @@ -0,0 +1,322 @@ + + + + + timeside.decode.core.DecoderCore + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package decode :: + Module core :: + Class DecoderCore + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class DecoderCore

source code

+
+         object --+        
+                  |        
+component.Component --+    
+                      |    
+         core.Processor --+
+                          |
+                         DecoderCore
+
+ +
Known Subclasses:
+
+ +
+ +
+

Defines the main parts of the decoding tools : paths, metadata + parsing, data streaming thru system command

+ + + + + + + + + + +
+ + + + + +
Nested Classes[hide private]
+
+

Inherited from core.Processor: + __metaclass__ +

+
+ + + + + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
__init__(self)
+ x.__init__(...) initializes x; see x.__class__.__doc__ for signature
+ source code + +
+ +
+   + + + + + + +
process(self, + source, + options=None)
+ Encode and stream audio data through a generator
+ source code + +
+ +
+

Inherited from core.Processor: + __del__, + __or__, + channels, + nframes, + release, + samplerate, + setup +

+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + +
+ + + + + +
Method Details[hide private]
+
+ +
+ +
+ + +
+

__init__(self) +
(Constructor) +

+
source code  +
+ +

x.__init__(...) initializes x; see x.__class__.__doc__ for + signature

+
+
Overrides: + object.__init__ +
(inherited documentation)
+ +
+
+
+ +
+ +
+ + +
+

process(self, + source, + options=None) +

+
source code  +
+ +

Encode and stream audio data through a generator

+
+
Overrides: + core.Processor.process +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.decode.core.SubProcessPipe-class.html b/doc/epydoc/timeside.decode.core.SubProcessPipe-class.html new file mode 100644 index 0000000..04ba727 --- /dev/null +++ b/doc/epydoc/timeside.decode.core.SubProcessPipe-class.html @@ -0,0 +1,185 @@ + + + + + timeside.decode.core.SubProcessPipe + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package decode :: + Module core :: + Class SubProcessPipe + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class SubProcessPipe

source code

+ + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
__init__(self, + command, + stdin=None)
+ Read media and stream data through a generator.
+ source code + +
+ +
+ + + + + + +
+ + + + + +
Method Details[hide private]
+
+ +
+ +
+ + +
+

__init__(self, + command, + stdin=None) +
(Constructor) +

+
source code  +
+ +

Read media and stream data through a generator. Taken from Telemeta + (see http://telemeta.org)

+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.decode.flac-module.html b/doc/epydoc/timeside.decode.flac-module.html new file mode 100644 index 0000000..915c6c3 --- /dev/null +++ b/doc/epydoc/timeside.decode.flac-module.html @@ -0,0 +1,131 @@ + + + + + timeside.decode.flac + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package decode :: + Module flac + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Module flac

source code

+ + + + + + + + + +
+ + + + + +
Classes[hide private]
+
+   + + FlacDecoder
+ Defines methods to decode from FLAC +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.decode.flac-pysrc.html b/doc/epydoc/timeside.decode.flac-pysrc.html new file mode 100644 index 0000000..8d887e1 --- /dev/null +++ b/doc/epydoc/timeside.decode.flac-pysrc.html @@ -0,0 +1,188 @@ + + + + + timeside.decode.flac + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package decode :: + Module flac + + + + + + +
[hide private]
[frames] | no frames]
+
+

Source Code for Module timeside.decode.flac

+
+ 1  # -*- coding: utf-8 -*- 
+ 2  # 
+ 3  # Copyright (c) 2007-2009 Guillaume Pellerin <yomguy@parisson.com> 
+ 4   
+ 5  # This file is part of TimeSide. 
+ 6   
+ 7  # TimeSide is free software: you can redistribute it and/or modify 
+ 8  # it under the terms of the GNU General Public License as published by 
+ 9  # the Free Software Foundation, either version 2 of the License, or 
+10  # (at your option) any later version. 
+11   
+12  # TimeSide is distributed in the hope that it will be useful, 
+13  # but WITHOUT ANY WARRANTY; without even the implied warranty of 
+14  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
+15  # GNU General Public License for more details. 
+16   
+17  # You should have received a copy of the GNU General Public License 
+18  # along with TimeSide.  If not, see <http://www.gnu.org/licenses/>. 
+19   
+20  # Author: Guillaume Pellerin <yomguy@parisson.com> 
+21   
+22  import os 
+23  import string 
+24  import subprocess 
+25   
+26  from timeside.decode.core import * 
+27  from timeside.api import IDecoder 
+28  from mutagen.flac import FLAC 
+29  from tempfile import NamedTemporaryFile 
+
30 +31 -class FlacDecoder(DecoderCore): +
32 """Defines methods to decode from FLAC""" +33 +34 implements(IDecoder) +35 +36 @staticmethod +
37 - def id(): +
38 return "flacdec" +
39 +
40 - def format(self): +
41 return 'FLAC' +
42 +
43 - def file_extension(self): +
44 return 'flac' +
45 +
46 - def mime_type(self): +
47 return 'audio/x-flac' +
48 +
49 - def description(self): +
50 return """ +51 Free Lossless Audio Codec (FLAC) is a file format for lossless audio +52 data compression. During compression, FLAC does not lose quality from +53 the audio stream, as lossy compression formats such as MP3, AAC, and +54 Vorbis do. Josh Coalson is the primary author of FLAC. +55 (source Wikipedia) +56 """ +
57 +
58 - def get_file_info(self): +
59 try: +60 file1, file2 = os.popen4('metaflac --list "'+self.dest+'"') +61 info = [] +62 for line in file2.readlines(): +63 info.append(clean_word(line[:-1])) +64 self.info = info +65 return self.info +66 except: +67 raise IOError('DecoderError: metaflac is not installed or ' + \ +68 'file does not exist.') +
69 +
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.decode.flac.FlacDecoder-class.html b/doc/epydoc/timeside.decode.flac.FlacDecoder-class.html new file mode 100644 index 0000000..e6f245b --- /dev/null +++ b/doc/epydoc/timeside.decode.flac.FlacDecoder-class.html @@ -0,0 +1,331 @@ + + + + + timeside.decode.flac.FlacDecoder + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package decode :: + Module flac :: + Class FlacDecoder + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class FlacDecoder

source code

+
+         object --+            
+                  |            
+component.Component --+        
+                      |        
+         core.Processor --+    
+                          |    
+           core.DecoderCore --+
+                              |
+                             FlacDecoder
+
+ +
+

Defines methods to decode from FLAC

+ + + + + + + + + + +
+ + + + + +
Nested Classes[hide private]
+
+

Inherited from core.Processor: + __metaclass__ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
format(self) + source code + +
+ +
+   + + + + + + +
file_extension(self) + source code + +
+ +
+   + + + + + + +
mime_type(self) + source code + +
+ +
+   + + + + + + +
description(self) + source code + +
+ +
+   + + + + + + +
get_file_info(self) + source code + +
+ +
+

Inherited from core.DecoderCore: + __init__, + process +

+

Inherited from core.Processor: + __del__, + __or__, + channels, + nframes, + release, + samplerate, + setup +

+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Static Methods[hide private]
+
+   + + + + + + +
id() + source code + +
+ +
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.decode.mp3-module.html b/doc/epydoc/timeside.decode.mp3-module.html new file mode 100644 index 0000000..7afaaa0 --- /dev/null +++ b/doc/epydoc/timeside.decode.mp3-module.html @@ -0,0 +1,131 @@ + + + + + timeside.decode.mp3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package decode :: + Module mp3 + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Module mp3

source code

+ + + + + + + + + +
+ + + + + +
Classes[hide private]
+
+   + + Mp3Decoder
+ Defines methods to decode from MP3 +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.decode.mp3-pysrc.html b/doc/epydoc/timeside.decode.mp3-pysrc.html new file mode 100644 index 0000000..7f5f1ef --- /dev/null +++ b/doc/epydoc/timeside.decode.mp3-pysrc.html @@ -0,0 +1,191 @@ + + + + + timeside.decode.mp3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package decode :: + Module mp3 + + + + + + +
[hide private]
[frames] | no frames]
+
+

Source Code for Module timeside.decode.mp3

+
+ 1  # -*- coding: utf-8 -*- 
+ 2  # 
+ 3  # Copyright (C) 2007 Parisson SARL 
+ 4  # Copyright (c) 2006-2007 Guillaume Pellerin <pellerin@parisson.com> 
+ 5   
+ 6  # This file is part of TimeSide. 
+ 7   
+ 8  # TimeSide is free software: you can redistribute it and/or modify 
+ 9  # it under the terms of the GNU General Public License as published by 
+10  # the Free Software Foundation, either version 2 of the License, or 
+11  # (at your option) any later version. 
+12   
+13  # TimeSide is distributed in the hope that it will be useful, 
+14  # but WITHOUT ANY WARRANTY; without even the implied warranty of 
+15  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
+16  # GNU General Public License for more details. 
+17   
+18  # You should have received a copy of the GNU General Public License 
+19  # along with TimeSide.  If not, see <http://www.gnu.org/licenses/>. 
+20   
+21  # Author: Guillaume Pellerin <yomguy@parisson.com> 
+22   
+23  import os 
+24  import string 
+25  import subprocess 
+26   
+27  from timeside.decode.core import * 
+28  from timeside.api import IDecoder 
+
29 +30 +31 -class Mp3Decoder(DecoderCore): +
32 """Defines methods to decode from MP3""" +33 +34 implements(IDecoder) +35 +
36 - def __init__(self): +
37 self.command = 'sox -t mp3 "%s" -q -b 16 -r 44100 -t wav -c2 - ' +
38 +39 @staticmethod +
40 - def id(): +
41 return "mp3dec" +
42 +
43 - def format(self): +
44 return 'MP3' +
45 +
46 - def file_extension(self): +
47 return 'mp3' +
48 +
49 - def mime_type(self): +
50 return 'audio/mpeg' +
51 +
52 - def description(self): +
53 return """ +54 MPEG-1 Audio Layer 3, more commonly referred to as MP3, is a patented +55 digital audio encoding format using a form of lossy data compression. +56 It is a common audio format for consumer audio storage, as well as a +57 de facto standard of digital audio compression for the transfer and +58 playback of music on digital audio players. MP3 is an audio-specific +59 format that was designed by the Moving Picture Experts Group as part +60 of its MPEG-1 standard. (source Wikipedia) +61 """ +
62 +
63 - def get_file_info(self): +
64 try: +65 file_out1, file_out2 = os.popen4('mp3info "'+self.dest+'"') +66 info = [] +67 for line in file_out2.readlines(): +68 info.append(clean_word(line[:-1])) +69 self.info = info +70 return self.info +71 except: +72 raise IOError('DecoderError: file does not exist.') +
73 +
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.decode.mp3.Mp3Decoder-class.html b/doc/epydoc/timeside.decode.mp3.Mp3Decoder-class.html new file mode 100644 index 0000000..924f48d --- /dev/null +++ b/doc/epydoc/timeside.decode.mp3.Mp3Decoder-class.html @@ -0,0 +1,391 @@ + + + + + timeside.decode.mp3.Mp3Decoder + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package decode :: + Module mp3 :: + Class Mp3Decoder + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class Mp3Decoder

source code

+
+         object --+            
+                  |            
+component.Component --+        
+                      |        
+         core.Processor --+    
+                          |    
+           core.DecoderCore --+
+                              |
+                             Mp3Decoder
+
+ +
+

Defines methods to decode from MP3

+ + + + + + + + + + +
+ + + + + +
Nested Classes[hide private]
+
+

Inherited from core.Processor: + __metaclass__ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
__init__(self)
+ x.__init__(...) initializes x; see x.__class__.__doc__ for signature
+ source code + +
+ +
+   + + + + + + +
format(self) + source code + +
+ +
+   + + + + + + +
file_extension(self) + source code + +
+ +
+   + + + + + + +
mime_type(self) + source code + +
+ +
+   + + + + + + +
description(self) + source code + +
+ +
+   + + + + + + +
get_file_info(self) + source code + +
+ +
+

Inherited from core.DecoderCore: + process +

+

Inherited from core.Processor: + __del__, + __or__, + channels, + nframes, + release, + samplerate, + setup +

+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Static Methods[hide private]
+
+   + + + + + + +
id() + source code + +
+ +
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + +
+ + + + + +
Method Details[hide private]
+
+ +
+ +
+ + +
+

__init__(self) +
(Constructor) +

+
source code  +
+ +

x.__init__(...) initializes x; see x.__class__.__doc__ for + signature

+
+
Overrides: + object.__init__ +
(inherited documentation)
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.decode.ogg-module.html b/doc/epydoc/timeside.decode.ogg-module.html new file mode 100644 index 0000000..2172429 --- /dev/null +++ b/doc/epydoc/timeside.decode.ogg-module.html @@ -0,0 +1,131 @@ + + + + + timeside.decode.ogg + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package decode :: + Module ogg + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Module ogg

source code

+ + + + + + + + + +
+ + + + + +
Classes[hide private]
+
+   + + OggDecoder
+ Defines methods to decode from OGG Vorbis +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.decode.ogg-pysrc.html b/doc/epydoc/timeside.decode.ogg-pysrc.html new file mode 100644 index 0000000..2e948e2 --- /dev/null +++ b/doc/epydoc/timeside.decode.ogg-pysrc.html @@ -0,0 +1,186 @@ + + + + + timeside.decode.ogg + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package decode :: + Module ogg + + + + + + +
[hide private]
[frames] | no frames]
+
+

Source Code for Module timeside.decode.ogg

+
+ 1  # -*- coding: utf-8 -*- 
+ 2  # 
+ 3  # Copyright (c) 2007-2009 Guillaume Pellerin <yomguy@parisson.com> 
+ 4   
+ 5  # This file is part of TimeSide. 
+ 6   
+ 7  # TimeSide is free software: you can redistribute it and/or modify 
+ 8  # it under the terms of the GNU General Public License as published by 
+ 9  # the Free Software Foundation, either version 2 of the License, or 
+10  # (at your option) any later version. 
+11   
+12  # TimeSide is distributed in the hope that it will be useful, 
+13  # but WITHOUT ANY WARRANTY; without even the implied warranty of 
+14  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
+15  # GNU General Public License for more details. 
+16   
+17  # You should have received a copy of the GNU General Public License 
+18  # along with TimeSide.  If not, see <http://www.gnu.org/licenses/>. 
+19   
+20  # Author: Guillaume Pellerin <yomguy@parisson.com> 
+21   
+22  import os 
+23  import string 
+24  import subprocess 
+25   
+26  from timeside.decode.core import * 
+27  from timeside.api import IDecoder 
+28  from mutagen.oggvorbis import OggVorbis 
+
29 +30 -class OggDecoder(DecoderCore): +
31 """Defines methods to decode from OGG Vorbis""" +32 +33 implements(IDecoder) +34 +35 @staticmethod +
36 - def id(): +
37 return "oggdec" +
38 +
39 - def format(self): +
40 return 'OggVorbis' +
41 +
42 - def file_extension(self): +
43 return 'ogg' +
44 +
45 - def mime_type(self): +
46 return 'application/ogg' +
47 +
48 - def description(self): +
49 return """ +50 Vorbis is a free software / open source project headed by the Xiph.Org +51 Foundation (formerly Xiphophorus company). The project produces an audio +52 format specification and software implementation (codec) for lossy audio +53 compression. Vorbis is most commonly used in conjunction with the Ogg +54 container format and it is therefore often referred to as Ogg Vorbis. +55 (source Wikipedia) +56 """ +
57 +
58 - def get_file_info(self): +
59 try: +60 file_out1, file_out2 = os.popen4('ogginfo "'+self.dest+'"') +61 info = [] +62 for line in file_out2.readlines(): +63 info.append(clean_word(line[:-1])) +64 self.info = info +65 return self.info +66 except: +67 raise IOError('DecoderError: file does not exist.') +
68 +
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.decode.ogg.OggDecoder-class.html b/doc/epydoc/timeside.decode.ogg.OggDecoder-class.html new file mode 100644 index 0000000..974d5fe --- /dev/null +++ b/doc/epydoc/timeside.decode.ogg.OggDecoder-class.html @@ -0,0 +1,331 @@ + + + + + timeside.decode.ogg.OggDecoder + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package decode :: + Module ogg :: + Class OggDecoder + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class OggDecoder

source code

+
+         object --+            
+                  |            
+component.Component --+        
+                      |        
+         core.Processor --+    
+                          |    
+           core.DecoderCore --+
+                              |
+                             OggDecoder
+
+ +
+

Defines methods to decode from OGG Vorbis

+ + + + + + + + + + +
+ + + + + +
Nested Classes[hide private]
+
+

Inherited from core.Processor: + __metaclass__ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
format(self) + source code + +
+ +
+   + + + + + + +
file_extension(self) + source code + +
+ +
+   + + + + + + +
mime_type(self) + source code + +
+ +
+   + + + + + + +
description(self) + source code + +
+ +
+   + + + + + + +
get_file_info(self) + source code + +
+ +
+

Inherited from core.DecoderCore: + __init__, + process +

+

Inherited from core.Processor: + __del__, + __or__, + channels, + nframes, + release, + samplerate, + setup +

+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Static Methods[hide private]
+
+   + + + + + + +
id() + source code + +
+ +
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.decode.wav-module.html b/doc/epydoc/timeside.decode.wav-module.html new file mode 100644 index 0000000..2cdfaa5 --- /dev/null +++ b/doc/epydoc/timeside.decode.wav-module.html @@ -0,0 +1,131 @@ + + + + + timeside.decode.wav + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package decode :: + Module wav + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Module wav

source code

+ + + + + + + + + +
+ + + + + +
Classes[hide private]
+
+   + + WavDecoder
+ Defines methods to decode from WAV +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.decode.wav-pysrc.html b/doc/epydoc/timeside.decode.wav-pysrc.html new file mode 100644 index 0000000..87028de --- /dev/null +++ b/doc/epydoc/timeside.decode.wav-pysrc.html @@ -0,0 +1,187 @@ + + + + + timeside.decode.wav + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package decode :: + Module wav + + + + + + +
[hide private]
[frames] | no frames]
+
+

Source Code for Module timeside.decode.wav

+
+ 1  # -*- coding: utf-8 -*- 
+ 2  # 
+ 3  # Copyright (c) 2007-2009 Guillaume Pellerin <yomguy@parisson.com> 
+ 4   
+ 5  # This file is part of TimeSide. 
+ 6   
+ 7  # TimeSide is free software: you can redistribute it and/or modify 
+ 8  # it under the terms of the GNU General Public License as published by 
+ 9  # the Free Software Foundation, either version 2 of the License, or 
+10  # (at your option) any later version. 
+11   
+12  # TimeSide is distributed in the hope that it will be useful, 
+13  # but WITHOUT ANY WARRANTY; without even the implied warranty of 
+14  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
+15  # GNU General Public License for more details. 
+16   
+17  # You should have received a copy of the GNU General Public License 
+18  # along with TimeSide.  If not, see <http://www.gnu.org/licenses/>. 
+19   
+20  # Author: Guillaume Pellerin <yomguy@parisson.com> 
+21   
+22  import os 
+23  import string 
+24  import subprocess 
+25   
+26  from timeside.decode.core import * 
+27  from timeside.api import IDecoder 
+
28 +29 -class WavDecoder(DecoderCore): +
30 """Defines methods to decode from WAV""" +31 +32 implements(IDecoder) +33 +34 @staticmethod +
35 - def id(): +
36 return "wavdec" +
37 +
38 - def format(self): +
39 return 'WAV' +
40 +
41 - def file_extension(self): +
42 return 'wav' +
43 +
44 - def mime_type(self): +
45 return 'audio/x-wav' +
46 +
47 - def description(self): +
48 return """ +49 WAV (or WAVE), short for Waveform audio format, also known as Audio for +50 Windows, is a Microsoft and IBM audio file format standard for storing +51 an audio bitstream on PCs. It is an application of the RIFF bitstream +52 format method for storing data in “chunks”, and thus is also close to +53 the 8SVX and the AIFF format used on Amiga and Macintosh computers, +54 respectively. It is the main format used on Windows systems for raw and +55 typically uncompressed audio. The usual bitstream encoding is the Pulse +56 Code Modulation (PCM) format. +57 """ +
58 +
59 - def get_file_info(self): +
60 try: +61 file1, file2 = os.popen4('wavinfo "'+self.dest+'"') +62 info = [] +63 for line in file2.readlines(): +64 info.append(clean_word(line[:-1])) +65 self.info = info +66 return self.info +67 except: +68 raise IOError('DecoderError: wavinfo id not installed or file does not exist.') +
69 +
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.decode.wav.WavDecoder-class.html b/doc/epydoc/timeside.decode.wav.WavDecoder-class.html new file mode 100644 index 0000000..61c9286 --- /dev/null +++ b/doc/epydoc/timeside.decode.wav.WavDecoder-class.html @@ -0,0 +1,331 @@ + + + + + timeside.decode.wav.WavDecoder + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package decode :: + Module wav :: + Class WavDecoder + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class WavDecoder

source code

+
+         object --+            
+                  |            
+component.Component --+        
+                      |        
+         core.Processor --+    
+                          |    
+           core.DecoderCore --+
+                              |
+                             WavDecoder
+
+ +
+

Defines methods to decode from WAV

+ + + + + + + + + + +
+ + + + + +
Nested Classes[hide private]
+
+

Inherited from core.Processor: + __metaclass__ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
format(self) + source code + +
+ +
+   + + + + + + +
file_extension(self) + source code + +
+ +
+   + + + + + + +
mime_type(self) + source code + +
+ +
+   + + + + + + +
description(self) + source code + +
+ +
+   + + + + + + +
get_file_info(self) + source code + +
+ +
+

Inherited from core.DecoderCore: + __init__, + process +

+

Inherited from core.Processor: + __del__, + __or__, + channels, + nframes, + release, + samplerate, + setup +

+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Static Methods[hide private]
+
+   + + + + + + +
id() + source code + +
+ +
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.encode-module.html b/doc/epydoc/timeside.encode-module.html new file mode 100644 index 0000000..413d5a6 --- /dev/null +++ b/doc/epydoc/timeside.encode-module.html @@ -0,0 +1,132 @@ + + + + + timeside.encode + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package encode + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Package encode

source code

+ + + + + + + +
+ + + + + +
Submodules[hide private]
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.encode-pysrc.html b/doc/epydoc/timeside.encode-pysrc.html new file mode 100644 index 0000000..742785e --- /dev/null +++ b/doc/epydoc/timeside.encode-pysrc.html @@ -0,0 +1,127 @@ + + + + + timeside.encode + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package encode + + + + + + +
[hide private]
[frames] | no frames]
+
+

Source Code for Package timeside.encode

+
+1  # -*- coding: utf-8 -*- 
+2   
+3  from timeside.encode.core import * 
+4  from timeside.encode.ogg import * 
+5  from timeside.encode.wav import * 
+6  from timeside.encode.mp3 import * 
+7  from timeside.encode.flac import * 
+8   
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.encode.core-module.html b/doc/epydoc/timeside.encode.core-module.html new file mode 100644 index 0000000..271ccb7 --- /dev/null +++ b/doc/epydoc/timeside.encode.core-module.html @@ -0,0 +1,140 @@ + + + + + timeside.encode.core + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package encode :: + Module core + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Module core

source code

+ + + + + + + + + + + + +
+ + + + + +
Classes[hide private]
+
+   + + SubProcessPipe
+ Read media and stream data through a generator. +
+   + + EncoderCore
+ Defines the main parts of the encoding tools : paths, metadata + parsing, data streaming thru system command +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.encode.core-pysrc.html b/doc/epydoc/timeside.encode.core-pysrc.html new file mode 100644 index 0000000..1bc8d19 --- /dev/null +++ b/doc/epydoc/timeside.encode.core-pysrc.html @@ -0,0 +1,182 @@ + + + + + timeside.encode.core + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package encode :: + Module core + + + + + + +
[hide private]
[frames] | no frames]
+
+

Source Code for Module timeside.encode.core

+
+ 1  #!/usr/bin/python 
+ 2  # -*- coding: utf-8 -*- 
+ 3  # 
+ 4  # Copyright (c) 2007-2009 Guillaume Pellerin <yomguy@parisson.com> 
+ 5   
+ 6  # This file is part of TimeSide. 
+ 7   
+ 8  # TimeSide is free software: you can redistribute it and/or modify 
+ 9  # it under the terms of the GNU General Public License as published by 
+10  # the Free Software Foundation, either version 2 of the License, or 
+11  # (at your option) any later version. 
+12   
+13  # TimeSide is distributed in the hope that it will be useful, 
+14  # but WITHOUT ANY WARRANTY; without even the implied warranty of 
+15  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
+16  # GNU General Public License for more details. 
+17   
+18  # You should have received a copy of the GNU General Public License 
+19  # along with TimeSide.  If not, see <http://www.gnu.org/licenses/>. 
+20   
+21  # Author: Guillaume Pellerin <yomguy@parisson.com> 
+22   
+23   
+24  from timeside.encode import * 
+25  from timeside.core import * 
+26   
+27  import subprocess 
+28   
+
29 -class SubProcessPipe: +
30 """Read media and stream data through a generator. +31 Taken from Telemeta (see http://telemeta.org)""" +32 +
33 - def __init__(self, command, stdin=None): +
34 self.buffer_size = 0xFFFF +35 if not stdin: +36 stdin = subprocess.PIPE +37 +38 self.proc = subprocess.Popen(command.encode('utf-8'), +39 shell = True, +40 bufsize = self.buffer_size, +41 stdin = stdin, +42 stdout = subprocess.PIPE, +43 close_fds = True) +44 +45 self.input = self.proc.stdin +46 self.output = self.proc.stdout +
47 +
48 -class EncoderCore(Processor): +
49 """Defines the main parts of the encoding tools : +50 paths, metadata parsing, data streaming thru system command""" +51 +
52 - def core_process(self, command, stdin): +
53 """Encode and stream audio data through a generator""" +54 +55 proc = SubProcessPipe(command, stdin) +56 +57 while True: +58 __chunk = proc.output.read(proc.buffer_size) +59 #status = proc.poll() +60 #if status != None and status != 0: +61 #raise EncodeProcessError('Command failure:', command, proc) +62 if len(__chunk) == 0: +63 break +64 yield __chunk +
65 +
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.encode.core.EncoderCore-class.html b/doc/epydoc/timeside.encode.core.EncoderCore-class.html new file mode 100644 index 0000000..b45b9b1 --- /dev/null +++ b/doc/epydoc/timeside.encode.core.EncoderCore-class.html @@ -0,0 +1,239 @@ + + + + + timeside.encode.core.EncoderCore + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package encode :: + Module core :: + Class EncoderCore + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class EncoderCore

source code

+
+         object --+        
+                  |        
+component.Component --+    
+                      |    
+         core.Processor --+
+                          |
+                         EncoderCore
+
+ +
Known Subclasses:
+
+ +
+ +
+

Defines the main parts of the encoding tools : paths, metadata + parsing, data streaming thru system command

+ + + + + + + + + + +
+ + + + + +
Nested Classes[hide private]
+
+

Inherited from core.Processor: + __metaclass__ +

+
+ + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
core_process(self, + command, + stdin)
+ Encode and stream audio data through a generator
+ source code + +
+ +
+

Inherited from core.Processor: + __del__, + __or__, + channels, + nframes, + process, + release, + samplerate, + setup +

+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __init__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.encode.core.SubProcessPipe-class.html b/doc/epydoc/timeside.encode.core.SubProcessPipe-class.html new file mode 100644 index 0000000..915a14e --- /dev/null +++ b/doc/epydoc/timeside.encode.core.SubProcessPipe-class.html @@ -0,0 +1,145 @@ + + + + + timeside.encode.core.SubProcessPipe + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package encode :: + Module core :: + Class SubProcessPipe + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class SubProcessPipe

source code

+

Read media and stream data through a generator. Taken from Telemeta + (see http://telemeta.org)

+ + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
__init__(self, + command, + stdin=None) + source code + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.encode.flac-module.html b/doc/epydoc/timeside.encode.flac-module.html new file mode 100644 index 0000000..db310f8 --- /dev/null +++ b/doc/epydoc/timeside.encode.flac-module.html @@ -0,0 +1,131 @@ + + + + + timeside.encode.flac + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package encode :: + Module flac + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Module flac

source code

+ + + + + + + + + +
+ + + + + +
Classes[hide private]
+
+   + + FlacEncoder
+ Defines methods to encode to FLAC +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.encode.flac-pysrc.html b/doc/epydoc/timeside.encode.flac-pysrc.html new file mode 100644 index 0000000..cfd2051 --- /dev/null +++ b/doc/epydoc/timeside.encode.flac-pysrc.html @@ -0,0 +1,417 @@ + + + + + timeside.encode.flac + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package encode :: + Module flac + + + + + + +
[hide private]
[frames] | no frames]
+
+

Source Code for Module timeside.encode.flac

+
+  1  # -*- coding: utf-8 -*- 
+  2  # 
+  3  # Copyright (c) 2007-2009 Guillaume Pellerin <yomguy@parisson.com> 
+  4   
+  5  # This file is part of TimeSide. 
+  6   
+  7  # TimeSide is free software: you can redistribute it and/or modify 
+  8  # it under the terms of the GNU General Public License as published by 
+  9  # the Free Software Foundation, either version 2 of the License, or 
+ 10  # (at your option) any later version. 
+ 11   
+ 12  # TimeSide is distributed in the hope that it will be useful, 
+ 13  # but WITHOUT ANY WARRANTY; without even the implied warranty of 
+ 14  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
+ 15  # GNU General Public License for more details. 
+ 16   
+ 17  # You should have received a copy of the GNU General Public License 
+ 18  # along with TimeSide.  If not, see <http://www.gnu.org/licenses/>. 
+ 19   
+ 20  # Author: Guillaume Pellerin <yomguy@parisson.com> 
+ 21   
+ 22  import os 
+ 23  import string 
+ 24  import subprocess 
+ 25   
+ 26  from timeside.encode.core import * 
+ 27  from timeside.api import IEncoder 
+ 28  from tempfile import NamedTemporaryFile 
+
29 + 30 -class FlacEncoder(EncoderCore): +
31 """Defines methods to encode to FLAC""" + 32 + 33 implements(IEncoder) + 34 +
35 - def __init__(self): +
36 self.quality_default = '-5' + 37 self.dub2args_dict = {'creator': 'artist', + 38 'relation': 'album' + 39 } +
40 + 41 @staticmethod +
42 - def id(): +
43 return "flacenc" +
44 +
45 - def format(self): +
46 return 'FLAC' +
47 +
48 - def file_extension(self): +
49 return 'flac' +
50 +
51 - def mime_type(self): +
52 return 'audio/x-flac' +
53 +
54 - def description(self): +
55 return """ + 56 Free Lossless Audio Codec (FLAC) is a file format for lossless audio + 57 data compression. + 58 """ +
59 +
60 - def get_file_info(self): +
61 try: + 62 file1, file2 = os.popen4('metaflac --list "'+self.dest+'"') + 63 info = [] + 64 for line in file2.readlines(): + 65 info.append(clean_word(line[:-1])) + 66 self.info = info + 67 return self.info + 68 except: + 69 raise IOError('EncoderError: metaflac is not installed or ' + \ + 70 'file does not exist.') +
71 +
72 - def write_tags(self, file): +
73 from mutagen.flac import FLAC + 74 media = FLAC(file) + 75 for tag in self.metadata: + 76 name = tag[0] + 77 value = clean_word(tag[1]) + 78 if name in self.dub2args_dict.keys(): + 79 name = self.dub2args_dict[name] + 80 if name == 'comment': + 81 media['DESCRIPTION'] = unicode(value) + 82 else: + 83 media[name] = unicode(value) + 84 try: + 85 media.save() + 86 except: + 87 raise IOError('EncoderError: cannot write tags.') +
88 + 89 +
90 - def get_args(self,options=None): +
91 """Get process options and return arguments for the encoder""" + 92 args = [] + 93 if not options is None: + 94 self.options = options + 95 if not ('verbose' in self.options and self.options['verbose'] != '0'): + 96 args.append('-s') + 97 if 'flac_quality' in self.options: + 98 args.append('-f ' + self.options['flac_quality']) + 99 else: +100 args.append('-f ' + self.quality_default) +101 else: +102 args.append('-s -f ' + self.quality_default) +103 +104 #for tag in self.metadata.keys(): +105 #value = clean_word(self.metadata[tag]) +106 #args.append('-c %s="%s"' % (tag, value)) +107 #if tag in self.dub2args_dict.keys(): +108 #arg = self.dub2args_dict[tag] +109 #args.append('-c %s="%s"' % (arg, value)) +110 +111 return args +
112 +
113 - def process(self, source, metadata, options=None): +
114 buffer_size = 0xFFFF +115 self.metadata= metadata +116 self.options = options +117 args = self.get_args() +118 args = ' '.join(args) +119 ext = self.file_extension() +120 temp_file = NamedTemporaryFile() +121 command = 'flac %s - -o %s ' % (args, temp_file.name) +122 +123 stream = self.core_process(command, source) +124 +125 for __chunk in stream: +126 #temp_file.write(__chunk) +127 #temp_file.flush() +128 pass +129 +130 #self.write_tags(temp_file.name) +131 +132 while True: +133 __chunk = temp_file.read(buffer_size) +134 if len(__chunk) == 0: +135 break +136 yield __chunk +137 +138 temp_file.close() +
139 +
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.encode.flac.FlacEncoder-class.html b/doc/epydoc/timeside.encode.flac.FlacEncoder-class.html new file mode 100644 index 0000000..c1839a9 --- /dev/null +++ b/doc/epydoc/timeside.encode.flac.FlacEncoder-class.html @@ -0,0 +1,479 @@ + + + + + timeside.encode.flac.FlacEncoder + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package encode :: + Module flac :: + Class FlacEncoder + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class FlacEncoder

source code

+
+         object --+            
+                  |            
+component.Component --+        
+                      |        
+         core.Processor --+    
+                          |    
+           core.EncoderCore --+
+                              |
+                             FlacEncoder
+
+ +
+

Defines methods to encode to FLAC

+ + + + + + + + + + +
+ + + + + +
Nested Classes[hide private]
+
+

Inherited from core.Processor: + __metaclass__ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
__init__(self)
+ x.__init__(...) initializes x; see x.__class__.__doc__ for signature
+ source code + +
+ +
+   + + + + + + +
format(self) + source code + +
+ +
+   + + + + + + +
file_extension(self) + source code + +
+ +
+   + + + + + + +
mime_type(self) + source code + +
+ +
+   + + + + + + +
description(self) + source code + +
+ +
+   + + + + + + +
get_file_info(self) + source code + +
+ +
+   + + + + + + +
write_tags(self, + file) + source code + +
+ +
+   + + + + + + +
get_args(self, + options=None)
+ Get process options and return arguments for the encoder
+ source code + +
+ +
+   + + + + + + +
process(self, + source, + metadata, + options=None)
+ Process input frames and return a (output_frames, eod) tuple.
+ source code + +
+ +
+

Inherited from core.EncoderCore: + core_process +

+

Inherited from core.Processor: + __del__, + __or__, + channels, + nframes, + release, + samplerate, + setup +

+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Static Methods[hide private]
+
+   + + + + + + +
id() + source code + +
+ +
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + +
+ + + + + +
Method Details[hide private]
+
+ +
+ +
+ + +
+

__init__(self) +
(Constructor) +

+
source code  +
+ +

x.__init__(...) initializes x; see x.__class__.__doc__ for + signature

+
+
Overrides: + object.__init__ +
(inherited documentation)
+ +
+
+
+ +
+ +
+ + +
+

process(self, + source, + metadata, + options=None) +

+
source code  +
+ +

Process input frames and return a (output_frames, eod) tuple. Both + input and output frames are 2D numpy arrays, where columns are channels, + and containing an undetermined number of frames. eod=True means that the + end-of-data has been reached.

+

Output-only processors (such as decoders) will raise an exception if + the frames argument is not None. All processors (even encoders) return + data, even if that means returning the input unchanged.

+

Warning: it is required to call setup() before this method.

+
+
Overrides: + core.Processor.process +
(inherited documentation)
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.encode.mp3-module.html b/doc/epydoc/timeside.encode.mp3-module.html new file mode 100644 index 0000000..4a8b717 --- /dev/null +++ b/doc/epydoc/timeside.encode.mp3-module.html @@ -0,0 +1,131 @@ + + + + + timeside.encode.mp3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package encode :: + Module mp3 + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Module mp3

source code

+ + + + + + + + + +
+ + + + + +
Classes[hide private]
+
+   + + Mp3Encoder
+ Defines methods to encode to MP3 +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.encode.mp3-pysrc.html b/doc/epydoc/timeside.encode.mp3-pysrc.html new file mode 100644 index 0000000..b2f7089 --- /dev/null +++ b/doc/epydoc/timeside.encode.mp3-pysrc.html @@ -0,0 +1,334 @@ + + + + + timeside.encode.mp3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package encode :: + Module mp3 + + + + + + +
[hide private]
[frames] | no frames]
+
+

Source Code for Module timeside.encode.mp3

+
+  1  # -*- coding: utf-8 -*- 
+  2  # 
+  3  # Copyright (C) 2007 Parisson SARL 
+  4  # Copyright (c) 2006-2007 Guillaume Pellerin <pellerin@parisson.com> 
+  5   
+  6  # This file is part of TimeSide. 
+  7   
+  8  # TimeSide is free software: you can redistribute it and/or modify 
+  9  # it under the terms of the GNU General Public License as published by 
+ 10  # the Free Software Foundation, either version 2 of the License, or 
+ 11  # (at your option) any later version. 
+ 12   
+ 13  # TimeSide is distributed in the hope that it will be useful, 
+ 14  # but WITHOUT ANY WARRANTY; without even the implied warranty of 
+ 15  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
+ 16  # GNU General Public License for more details. 
+ 17   
+ 18  # You should have received a copy of the GNU General Public License 
+ 19  # along with TimeSide.  If not, see <http://www.gnu.org/licenses/>. 
+ 20   
+ 21  # Author: Guillaume Pellerin <yomguy@parisson.com> 
+ 22   
+ 23  import os 
+ 24  import string 
+ 25  import subprocess 
+ 26   
+ 27  from timeside.encode.core import * 
+ 28  from timeside.api import IEncoder 
+
29 + 30 + 31 -class Mp3Encoder(EncoderCore): +
32 """Defines methods to encode to MP3""" + 33 + 34 implements(IEncoder) + 35 +
36 - def __init__(self): +
37 self.bitrate_default = '192' + 38 self.dub2id3_dict = {'title': 'TIT2', #title2 + 39 'creator': 'TCOM', #composer + 40 'creator': 'TPE1', #lead + 41 'identifier': 'UFID', #Unique ID... + 42 'identifier': 'TALB', #album + 43 'type': 'TCON', #genre + 44 'publisher': 'TPUB', #comment + 45 #'date': 'TYER', #year + 46 } + 47 self.dub2args_dict = {'title': 'tt', #title2 + 48 'creator': 'ta', #composerS + 49 'relation': 'tl', #album + 50 #'type': 'tg', #genre + 51 'publisher': 'tc', #comment + 52 'date': 'ty', #year + 53 } +
54 + 55 @staticmethod +
56 - def id(): +
57 return "mp3enc" +
58 +
59 - def format(self): +
60 return 'MP3' +
61 +
62 - def file_extension(self): +
63 return 'mp3' +
64 +
65 - def mime_type(self): +
66 return 'audio/mpeg' +
67 +
68 - def description(self): +
69 return """ + 70 MPEG-1 Audio Layer 3, more commonly referred to as MP3, is a patented + 71 digital audio encoding format using a form of lossy data compression. + 72 """ +
73 +
74 - def get_file_info(self): +
75 try: + 76 file_out1, file_out2 = os.popen4('mp3info "'+self.dest+'"') + 77 info = [] + 78 for line in file_out2.readlines(): + 79 info.append(clean_word(line[:-1])) + 80 self.info = info + 81 return self.info + 82 except: + 83 raise IOError('EncoderError: file does not exist.') +
84 +
85 - def write_tags(self): +
86 """Write all ID3v2.4 tags by mapping dub2id3_dict dictionnary with the + 87 respect of mutagen classes and methods""" + 88 from mutagen import id3 + 89 id3 = id3.ID3(self.dest) + 90 for tag in self.metadata.keys(): + 91 if tag in self.dub2id3_dict.keys(): + 92 frame_text = self.dub2id3_dict[tag] + 93 value = self.metadata[tag] + 94 frame = mutagen.id3.Frames[frame_text](3,value) + 95 try: + 96 id3.add(frame) + 97 except: + 98 raise IOError('EncoderError: cannot tag "'+tag+'"') + 99 try: +100 id3.save() +101 except: +102 raise IOError('EncoderError: cannot write tags') +
103 +
104 - def get_args(self): +
105 """Get process options and return arguments for the encoder""" +106 args = [] +107 if not self.options is None: +108 if not ( 'verbose' in self.options and self.options['verbose'] != '0' ): +109 args.append('-S') +110 if 'mp3_bitrate' in self.options: +111 args.append('-b ' + self.options['mp3_bitrate']) +112 else: +113 args.append('-b '+self.bitrate_default) +114 #Copyrights, etc.. +115 args.append('-c -o') +116 else: +117 args.append('-S -c --tt "unknown" -o') +118 +119 for tag in self.metadata: +120 name = tag[0] +121 value = clean_word(tag[1]) +122 if name in self.dub2args_dict.keys(): +123 arg = self.dub2args_dict[name] +124 args.append('--' + arg + ' "' + value + '"') +125 return args +
126 +
127 - def process(self, source, metadata, options=None): +
128 self.metadata = metadata +129 self.options = options +130 args = self.get_args() +131 args = ' '.join(args) +132 command = 'lame %s - -' % args +133 +134 stream = self.core_process(command, source) +135 for __chunk in stream: +136 yield __chunk +
137 +
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.encode.mp3.Mp3Encoder-class.html b/doc/epydoc/timeside.encode.mp3.Mp3Encoder-class.html new file mode 100644 index 0000000..acc1399 --- /dev/null +++ b/doc/epydoc/timeside.encode.mp3.Mp3Encoder-class.html @@ -0,0 +1,479 @@ + + + + + timeside.encode.mp3.Mp3Encoder + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package encode :: + Module mp3 :: + Class Mp3Encoder + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class Mp3Encoder

source code

+
+         object --+            
+                  |            
+component.Component --+        
+                      |        
+         core.Processor --+    
+                          |    
+           core.EncoderCore --+
+                              |
+                             Mp3Encoder
+
+ +
+

Defines methods to encode to MP3

+ + + + + + + + + + +
+ + + + + +
Nested Classes[hide private]
+
+

Inherited from core.Processor: + __metaclass__ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
__init__(self)
+ x.__init__(...) initializes x; see x.__class__.__doc__ for signature
+ source code + +
+ +
+   + + + + + + +
format(self) + source code + +
+ +
+   + + + + + + +
file_extension(self) + source code + +
+ +
+   + + + + + + +
mime_type(self) + source code + +
+ +
+   + + + + + + +
description(self) + source code + +
+ +
+   + + + + + + +
get_file_info(self) + source code + +
+ +
+   + + + + + + +
write_tags(self)
+ Write all ID3v2.4 tags by mapping dub2id3_dict dictionnary with the + respect of mutagen classes and methods
+ source code + +
+ +
+   + + + + + + +
get_args(self)
+ Get process options and return arguments for the encoder
+ source code + +
+ +
+   + + + + + + +
process(self, + source, + metadata, + options=None)
+ Process input frames and return a (output_frames, eod) tuple.
+ source code + +
+ +
+

Inherited from core.EncoderCore: + core_process +

+

Inherited from core.Processor: + __del__, + __or__, + channels, + nframes, + release, + samplerate, + setup +

+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Static Methods[hide private]
+
+   + + + + + + +
id() + source code + +
+ +
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + +
+ + + + + +
Method Details[hide private]
+
+ +
+ +
+ + +
+

__init__(self) +
(Constructor) +

+
source code  +
+ +

x.__init__(...) initializes x; see x.__class__.__doc__ for + signature

+
+
Overrides: + object.__init__ +
(inherited documentation)
+ +
+
+
+ +
+ +
+ + +
+

process(self, + source, + metadata, + options=None) +

+
source code  +
+ +

Process input frames and return a (output_frames, eod) tuple. Both + input and output frames are 2D numpy arrays, where columns are channels, + and containing an undetermined number of frames. eod=True means that the + end-of-data has been reached.

+

Output-only processors (such as decoders) will raise an exception if + the frames argument is not None. All processors (even encoders) return + data, even if that means returning the input unchanged.

+

Warning: it is required to call setup() before this method.

+
+
Overrides: + core.Processor.process +
(inherited documentation)
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.encode.ogg-module.html b/doc/epydoc/timeside.encode.ogg-module.html new file mode 100644 index 0000000..fe6f4ef --- /dev/null +++ b/doc/epydoc/timeside.encode.ogg-module.html @@ -0,0 +1,131 @@ + + + + + timeside.encode.ogg + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package encode :: + Module ogg + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Module ogg

source code

+ + + + + + + + + +
+ + + + + +
Classes[hide private]
+
+   + + OggVorbisEncoder
+ Defines methods to encode to OGG Vorbis +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.encode.ogg-pysrc.html b/doc/epydoc/timeside.encode.ogg-pysrc.html new file mode 100644 index 0000000..91c808e --- /dev/null +++ b/doc/epydoc/timeside.encode.ogg-pysrc.html @@ -0,0 +1,331 @@ + + + + + timeside.encode.ogg + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package encode :: + Module ogg + + + + + + +
[hide private]
[frames] | no frames]
+
+

Source Code for Module timeside.encode.ogg

+
+  1  # -*- coding: utf-8 -*- 
+  2  # 
+  3  # Copyright (c) 2007-2009 Guillaume Pellerin <yomguy@parisson.com> 
+  4   
+  5  # This file is part of TimeSide. 
+  6   
+  7  # TimeSide is free software: you can redistribute it and/or modify 
+  8  # it under the terms of the GNU General Public License as published by 
+  9  # the Free Software Foundation, either version 2 of the License, or 
+ 10  # (at your option) any later version. 
+ 11   
+ 12  # TimeSide is distributed in the hope that it will be useful, 
+ 13  # but WITHOUT ANY WARRANTY; without even the implied warranty of 
+ 14  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
+ 15  # GNU General Public License for more details. 
+ 16   
+ 17  # You should have received a copy of the GNU General Public License 
+ 18  # along with TimeSide.  If not, see <http://www.gnu.org/licenses/>. 
+ 19   
+ 20  # Author: Guillaume Pellerin <yomguy@parisson.com> 
+ 21   
+ 22  import os 
+ 23  import string 
+ 24  import subprocess 
+ 25   
+ 26  from timeside.encode.core import * 
+ 27  from timeside.api import IEncoder 
+
28 + 29 -class OggVorbisEncoder(EncoderCore): +
30 """Defines methods to encode to OGG Vorbis""" + 31 + 32 implements(IEncoder) + 33 +
34 - def __init__(self): +
35 self.bitrate_default = '192' + 36 self.dub2args_dict = {'creator': 'artist', + 37 'relation': 'album' + 38 } +
39 + 40 @staticmethod +
41 - def id(): +
42 return "oggenc" +
43 +
44 - def format(self): +
45 return 'OggVorbis' +
46 +
47 - def file_extension(self): +
48 return 'ogg' +
49 +
50 - def mime_type(self): +
51 return 'application/ogg' +
52 +
53 - def description(self): +
54 return """ + 55 Vorbis is a free software / open source project headed by the Xiph.Org + 56 Foundation (formerly Xiphophorus company). The project produces an audio + 57 format specification and software implementation (codec) for lossy audio + 58 compression. Vorbis is most commonly used in conjunction with the Ogg + 59 container format and it is therefore often referred to as Ogg Vorbis. + 60 (source Wikipedia) + 61 """ +
62 +
63 - def get_file_info(self, file): +
64 try: + 65 file_out1, file_out2 = os.popen4('ogginfo "' + file + '"') + 66 info = [] + 67 for line in file_out2.readlines(): + 68 info.append(clean_word(line[:-1])) + 69 self.info = info + 70 return self.info + 71 except: + 72 raise IOError('EncoderError: file does not exist.') +
73 +
74 - def write_tags(self, file): +
75 from mutagen.oggvorbis import OggVorbis + 76 media = OggVorbis(file) + 77 for tag in self.metadata.keys(): + 78 media[tag] = str(self.metadata[tag]) + 79 media.save() +
80 +
81 - def get_args(self): +
82 """Get process options and return arguments for the encoder""" + 83 args = [] + 84 if not self.options is None: + 85 if not ('verbose' in self.options and self.options['verbose'] != '0'): + 86 args.append('-Q ') + 87 if 'ogg_bitrate' in self.options: + 88 args.append('-b '+self.options['ogg_bitrate']) + 89 elif 'ogg_quality' in self.options: + 90 args.append('-q '+self.options['ogg_quality']) + 91 else: + 92 args.append('-b '+self.bitrate_default) + 93 else: + 94 args.append('-Q -b '+self.bitrate_default) + 95 + 96 for tag in self.metadata: + 97 name = tag[0] + 98 value = clean_word(tag[1]) + 99 args.append('-c %s="%s"' % (name, value)) +100 if name in self.dub2args_dict.keys(): +101 arg = self.dub2args_dict[name] +102 args.append('-c %s="%s"' % (arg, value)) +103 return args +
104 +
105 - def process(self, source, metadata, options=None): +
106 self.metadata = metadata +107 self.options = options +108 args = self.get_args() +109 args = ' '.join(args) +110 command = 'oggenc %s -' % args +111 +112 stream = self.core_process(command, source) +113 for __chunk in stream: +114 yield __chunk +
115 +
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.encode.ogg.OggVorbisEncoder-class.html b/doc/epydoc/timeside.encode.ogg.OggVorbisEncoder-class.html new file mode 100644 index 0000000..768d7aa --- /dev/null +++ b/doc/epydoc/timeside.encode.ogg.OggVorbisEncoder-class.html @@ -0,0 +1,479 @@ + + + + + timeside.encode.ogg.OggVorbisEncoder + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package encode :: + Module ogg :: + Class OggVorbisEncoder + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class OggVorbisEncoder

source code

+
+         object --+            
+                  |            
+component.Component --+        
+                      |        
+         core.Processor --+    
+                          |    
+           core.EncoderCore --+
+                              |
+                             OggVorbisEncoder
+
+ +
+

Defines methods to encode to OGG Vorbis

+ + + + + + + + + + +
+ + + + + +
Nested Classes[hide private]
+
+

Inherited from core.Processor: + __metaclass__ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
__init__(self)
+ x.__init__(...) initializes x; see x.__class__.__doc__ for signature
+ source code + +
+ +
+   + + + + + + +
format(self) + source code + +
+ +
+   + + + + + + +
file_extension(self) + source code + +
+ +
+   + + + + + + +
mime_type(self) + source code + +
+ +
+   + + + + + + +
description(self) + source code + +
+ +
+   + + + + + + +
get_file_info(self, + file) + source code + +
+ +
+   + + + + + + +
write_tags(self, + file) + source code + +
+ +
+   + + + + + + +
get_args(self)
+ Get process options and return arguments for the encoder
+ source code + +
+ +
+   + + + + + + +
process(self, + source, + metadata, + options=None)
+ Process input frames and return a (output_frames, eod) tuple.
+ source code + +
+ +
+

Inherited from core.EncoderCore: + core_process +

+

Inherited from core.Processor: + __del__, + __or__, + channels, + nframes, + release, + samplerate, + setup +

+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Static Methods[hide private]
+
+   + + + + + + +
id() + source code + +
+ +
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + +
+ + + + + +
Method Details[hide private]
+
+ +
+ +
+ + +
+

__init__(self) +
(Constructor) +

+
source code  +
+ +

x.__init__(...) initializes x; see x.__class__.__doc__ for + signature

+
+
Overrides: + object.__init__ +
(inherited documentation)
+ +
+
+
+ +
+ +
+ + +
+

process(self, + source, + metadata, + options=None) +

+
source code  +
+ +

Process input frames and return a (output_frames, eod) tuple. Both + input and output frames are 2D numpy arrays, where columns are channels, + and containing an undetermined number of frames. eod=True means that the + end-of-data has been reached.

+

Output-only processors (such as decoders) will raise an exception if + the frames argument is not None. All processors (even encoders) return + data, even if that means returning the input unchanged.

+

Warning: it is required to call setup() before this method.

+
+
Overrides: + core.Processor.process +
(inherited documentation)
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.encode.wav-module.html b/doc/epydoc/timeside.encode.wav-module.html new file mode 100644 index 0000000..4970c22 --- /dev/null +++ b/doc/epydoc/timeside.encode.wav-module.html @@ -0,0 +1,131 @@ + + + + + timeside.encode.wav + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package encode :: + Module wav + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Module wav

source code

+ + + + + + + + + +
+ + + + + +
Classes[hide private]
+
+   + + WavEncoder
+ Defines methods to encode to WAV +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.encode.wav-pysrc.html b/doc/epydoc/timeside.encode.wav-pysrc.html new file mode 100644 index 0000000..a80f26c --- /dev/null +++ b/doc/epydoc/timeside.encode.wav-pysrc.html @@ -0,0 +1,208 @@ + + + + + timeside.encode.wav + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package encode :: + Module wav + + + + + + +
[hide private]
[frames] | no frames]
+
+

Source Code for Module timeside.encode.wav

+
+ 1  # -*- coding: utf-8 -*- 
+ 2  # 
+ 3  # Copyright (c) 2007-2009 Guillaume Pellerin <yomguy@parisson.com> 
+ 4   
+ 5  # This file is part of TimeSide. 
+ 6   
+ 7  # TimeSide is free software: you can redistribute it and/or modify 
+ 8  # it under the terms of the GNU General Public License as published by 
+ 9  # the Free Software Foundation, either version 2 of the License, or 
+10  # (at your option) any later version. 
+11   
+12  # TimeSide is distributed in the hope that it will be useful, 
+13  # but WITHOUT ANY WARRANTY; without even the implied warranty of 
+14  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
+15  # GNU General Public License for more details. 
+16   
+17  # You should have received a copy of the GNU General Public License 
+18  # along with TimeSide.  If not, see <http://www.gnu.org/licenses/>. 
+19   
+20  # Author: Guillaume Pellerin <yomguy@parisson.com> 
+21   
+22  import os 
+23  import string 
+24   
+25  from timeside.encode.core import * 
+26  from timeside.api import IEncoder 
+
27 +28 -class WavEncoder(EncoderCore): +
29 """Defines methods to encode to WAV""" +30 +31 implements(IEncoder) +32 +
33 - def __init__(self): +
34 pass +
35 +36 @staticmethod +
37 - def id(): +
38 return "wavenc" +
39 +
40 - def format(self): +
41 return 'WAV' +
42 +
43 - def file_extension(self): +
44 return 'wav' +
45 +
46 - def mime_type(self): +
47 return 'audio/x-wav' +
48 +
49 - def description(self): +
50 return """ +51 WAV (or WAVE), short for Waveform audio format, also known as Audio for +52 Windows, is a Microsoft and IBM audio file format standard for storing +53 an audio bitstream on PCs. It is an application of the RIFF bitstream +54 format method for storing data in “chunks”, and thus is also close to +55 the 8SVX and the AIFF format used on Amiga and Macintosh computers, +56 respectively. It is the main format used on Windows systems for raw and +57 typically uncompressed audio. The usual bitstream encoding is the Pulse +58 Code Modulation (PCM) format. +59 """ +
60 +
61 - def get_file_info(self): +
62 try: +63 file1, file2 = os.popen4('wavinfo "'+self.dest+'"') +64 info = [] +65 for line in file2.readlines(): +66 info.append(clean_word(line[:-1])) +67 self.info = info +68 return self.info +69 except: +70 raise IOError('EncoderError: wavinfo id not installed or file does not exist.') +
71 +
72 - def process(self, source, metadata, options=None): +
73 self.metadata = metadata +74 self.options = options +75 command = 'sox -t wav - -s -q -b 16 -r 44100 -t wav -c2 -' +76 +77 stream = self.core_process(command, source) +78 for __chunk in stream: +79 yield __chunk +
80 +
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.encode.wav.WavEncoder-class.html b/doc/epydoc/timeside.encode.wav.WavEncoder-class.html new file mode 100644 index 0000000..17b9266 --- /dev/null +++ b/doc/epydoc/timeside.encode.wav.WavEncoder-class.html @@ -0,0 +1,444 @@ + + + + + timeside.encode.wav.WavEncoder + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package encode :: + Module wav :: + Class WavEncoder + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class WavEncoder

source code

+
+         object --+            
+                  |            
+component.Component --+        
+                      |        
+         core.Processor --+    
+                          |    
+           core.EncoderCore --+
+                              |
+                             WavEncoder
+
+ +
+

Defines methods to encode to WAV

+ + + + + + + + + + +
+ + + + + +
Nested Classes[hide private]
+
+

Inherited from core.Processor: + __metaclass__ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
__init__(self)
+ x.__init__(...) initializes x; see x.__class__.__doc__ for signature
+ source code + +
+ +
+   + + + + + + +
format(self) + source code + +
+ +
+   + + + + + + +
file_extension(self) + source code + +
+ +
+   + + + + + + +
mime_type(self) + source code + +
+ +
+   + + + + + + +
description(self) + source code + +
+ +
+   + + + + + + +
get_file_info(self) + source code + +
+ +
+   + + + + + + +
process(self, + source, + metadata, + options=None)
+ Process input frames and return a (output_frames, eod) tuple.
+ source code + +
+ +
+

Inherited from core.EncoderCore: + core_process +

+

Inherited from core.Processor: + __del__, + __or__, + channels, + nframes, + release, + samplerate, + setup +

+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Static Methods[hide private]
+
+   + + + + + + +
id() + source code + +
+ +
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + +
+ + + + + +
Method Details[hide private]
+
+ +
+ +
+ + +
+

__init__(self) +
(Constructor) +

+
source code  +
+ +

x.__init__(...) initializes x; see x.__class__.__doc__ for + signature

+
+
Overrides: + object.__init__ +
(inherited documentation)
+ +
+
+
+ +
+ +
+ + +
+

process(self, + source, + metadata, + options=None) +

+
source code  +
+ +

Process input frames and return a (output_frames, eod) tuple. Both + input and output frames are 2D numpy arrays, where columns are channels, + and containing an undetermined number of frames. eod=True means that the + end-of-data has been reached.

+

Output-only processors (such as decoders) will raise an exception if + the frames argument is not None. All processors (even encoders) return + data, even if that means returning the input unchanged.

+

Warning: it is required to call setup() before this method.

+
+
Overrides: + core.Processor.process +
(inherited documentation)
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.exceptions-module.html b/doc/epydoc/timeside.exceptions-module.html new file mode 100644 index 0000000..fee0b9f --- /dev/null +++ b/doc/epydoc/timeside.exceptions-module.html @@ -0,0 +1,146 @@ + + + + + timeside.exceptions + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Module exceptions + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Module exceptions

source code

+ + + + + + + + + + + + + + + +
+ + + + + +
Classes[hide private]
+
+   + + Error
+ Exception base class for errors in TimeSide. +
+   + + ApiError
+ Exception base class for errors in TimeSide. +
+   + + SubProcessError
+ Exception for reporting errors from a subprocess +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.exceptions-pysrc.html b/doc/epydoc/timeside.exceptions-pysrc.html new file mode 100644 index 0000000..a8a298a --- /dev/null +++ b/doc/epydoc/timeside.exceptions-pysrc.html @@ -0,0 +1,152 @@ + + + + + timeside.exceptions + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Module exceptions + + + + + + +
[hide private]
[frames] | no frames]
+
+

Source Code for Module timeside.exceptions

+
+ 1  # -*- coding: utf-8 -*- 
+ 2  # 
+ 3  # Copyright (c) 2009 Olivier Guilyardi <olivier@samalyse.com> 
+ 4  # 
+ 5  # This file is part of TimeSide. 
+ 6   
+ 7  # TimeSide is free software: you can redistribute it and/or modify 
+ 8  # it under the terms of the GNU General Public License as published by 
+ 9  # the Free Software Foundation, either version 2 of the License, or 
+10  # (at your option) any later version. 
+11   
+12  # TimeSide is distributed in the hope that it will be useful, 
+13  # but WITHOUT ANY WARRANTY; without even the implied warranty of 
+14  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
+15  # GNU General Public License for more details. 
+16   
+17  # You should have received a copy of the GNU General Public License 
+18  # along with TimeSide.  If not, see <http://www.gnu.org/licenses/>. 
+19   
+
20 -class Error(Exception): +
21 """Exception base class for errors in TimeSide.""" +
22 +
23 -class ApiError(Exception): +
24 """Exception base class for errors in TimeSide.""" +
25 +
26 -class SubProcessError(Error): +
27 """Exception for reporting errors from a subprocess""" +28 +
29 - def __init__(self, message, command, subprocess): +
30 self.message = message +31 self.command = str(command) +32 self.subprocess = subprocess +
33 +
34 - def __str__(self): +
35 if self.subprocess.stderr != None: +36 error = self.subprocess.stderr.read() +37 else: +38 error = '' +39 return "%s ; command: %s; error: %s" % (self.message, +40 self.command, +41 error) +
42 +
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.exceptions.ApiError-class.html b/doc/epydoc/timeside.exceptions.ApiError-class.html new file mode 100644 index 0000000..9a2cb8e --- /dev/null +++ b/doc/epydoc/timeside.exceptions.ApiError-class.html @@ -0,0 +1,188 @@ + + + + + timeside.exceptions.ApiError + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Module exceptions :: + Class ApiError + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class ApiError

source code

+
+              object --+        
+                       |        
+exceptions.BaseException --+    
+                           |    
+        exceptions.Exception --+
+                               |
+                              ApiError
+
+ +
+

Exception base class for errors in TimeSide.

+ + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+

Inherited from exceptions.Exception: + __init__, + __new__ +

+

Inherited from exceptions.BaseException: + __delattr__, + __getattribute__, + __getitem__, + __getslice__, + __reduce__, + __repr__, + __setattr__, + __setstate__, + __str__ +

+

Inherited from object: + __hash__, + __reduce_ex__ +

+
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from exceptions.BaseException: + args, + message +

+

Inherited from object: + __class__ +

+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.exceptions.Error-class.html b/doc/epydoc/timeside.exceptions.Error-class.html new file mode 100644 index 0000000..bc110d8 --- /dev/null +++ b/doc/epydoc/timeside.exceptions.Error-class.html @@ -0,0 +1,194 @@ + + + + + timeside.exceptions.Error + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Module exceptions :: + Class Error + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class Error

source code

+
+              object --+        
+                       |        
+exceptions.BaseException --+    
+                           |    
+        exceptions.Exception --+
+                               |
+                              Error
+
+ +
Known Subclasses:
+
+ +
+ +
+

Exception base class for errors in TimeSide.

+ + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+

Inherited from exceptions.Exception: + __init__, + __new__ +

+

Inherited from exceptions.BaseException: + __delattr__, + __getattribute__, + __getitem__, + __getslice__, + __reduce__, + __repr__, + __setattr__, + __setstate__, + __str__ +

+

Inherited from object: + __hash__, + __reduce_ex__ +

+
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from exceptions.BaseException: + args, + message +

+

Inherited from object: + __class__ +

+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.exceptions.SubProcessError-class.html b/doc/epydoc/timeside.exceptions.SubProcessError-class.html new file mode 100644 index 0000000..ace3200 --- /dev/null +++ b/doc/epydoc/timeside.exceptions.SubProcessError-class.html @@ -0,0 +1,296 @@ + + + + + timeside.exceptions.SubProcessError + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Module exceptions :: + Class SubProcessError + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class SubProcessError

source code

+
+              object --+            
+                       |            
+exceptions.BaseException --+        
+                           |        
+        exceptions.Exception --+    
+                               |    
+                           Error --+
+                                   |
+                                  SubProcessError
+
+ +
+

Exception for reporting errors from a subprocess

+ + + + + + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
__init__(self, + message, + command, + subprocess)
+ x.__init__(...) initializes x; see x.__class__.__doc__ for signature
+ source code + +
+ +
+   + + + + + + +
__str__(self)
+ str(x)
+ source code + +
+ +
+

Inherited from exceptions.Exception: + __new__ +

+

Inherited from exceptions.BaseException: + __delattr__, + __getattribute__, + __getitem__, + __getslice__, + __reduce__, + __repr__, + __setattr__, + __setstate__ +

+

Inherited from object: + __hash__, + __reduce_ex__ +

+
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from exceptions.BaseException: + args, + message +

+

Inherited from object: + __class__ +

+
+ + + + + + +
+ + + + + +
Method Details[hide private]
+
+ +
+ +
+ + +
+

__init__(self, + message, + command, + subprocess) +
(Constructor) +

+
source code  +
+ +

x.__init__(...) initializes x; see x.__class__.__doc__ for + signature

+
+
Overrides: + object.__init__ +
(inherited documentation)
+ +
+
+
+ +
+ +
+ + +
+

__str__(self) +
(Informal representation operator) +

+
source code  +
+ +

str(x)

+
+
Overrides: + object.__str__ +
(inherited documentation)
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.grapher-module.html b/doc/epydoc/timeside.grapher-module.html new file mode 100644 index 0000000..e05527f --- /dev/null +++ b/doc/epydoc/timeside.grapher-module.html @@ -0,0 +1,208 @@ + + + + + timeside.grapher + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package grapher + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Package grapher

source code

+ + + + + + + +
+ + + + + +
Submodules[hide private]
+
+
+ +
+ + + + + + + + + +
+ + + + + +
Variables[hide private]
+
+   + + color_schemes = {'default': {'spectrogram': [(0, 0, 0), (14, 1... +
+ + + + + + +
+ + + + + +
Variables Details[hide private]
+
+ +
+ +
+

color_schemes

+ +
+
+
+
Value:
+
+{'default': {'spectrogram': [(0, 0, 0),
+                             (14, 17, 16),
+                             (40, 50, 76),
+                             (90, 180, 100),
+                             (224, 224, 44),
+                             (255, 60, 30),
+                             (255, 255, 255)],
+             'waveform': [(50, 0, 200), (0, 220, 80), (255, 224, 0), (\
+...
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.grapher-pysrc.html b/doc/epydoc/timeside.grapher-pysrc.html new file mode 100644 index 0000000..08a73a3 --- /dev/null +++ b/doc/epydoc/timeside.grapher-pysrc.html @@ -0,0 +1,121 @@ + + + + + timeside.grapher + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package grapher + + + + + + +
[hide private]
[frames] | no frames]
+
+

Source Code for Package timeside.grapher

+
+1  # -*- coding: utf-8 -*- 
+2   
+3  from timeside.grapher.core import * 
+4  from timeside.grapher.waveform_audiolab import * 
+5  from timeside.grapher.spectrogram_audiolab import * 
+6   
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.grapher.core-module.html b/doc/epydoc/timeside.grapher.core-module.html new file mode 100644 index 0000000..8405457 --- /dev/null +++ b/doc/epydoc/timeside.grapher.core-module.html @@ -0,0 +1,312 @@ + + + + + timeside.grapher.core + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package grapher :: + Module core + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Module core

source code

+ + + + + + + + + + + + + + + + + + +
+ + + + + +
Classes[hide private]
+
+   + + SpectralCentroid +
+   + + WaveformImage +
+   + + SpectrogramImage +
+   + + Noise
+ A class that mimics audiolab.sndfile but generates noise instead of + reading a wave file. +
+ + + + + + + + + +
+ + + + + +
Functions[hide private]
+
+   + + + + + + +
interpolate_colors(colors, + flat=False, + num_colors=256)
+ given a list of colors, create a larger list of colors interpolating + the first one.
+ source code + +
+ +
+ + + + + + + + + +
+ + + + + +
Variables[hide private]
+
+   + + color_schemes = {'default': {'spectrogram': [(0, 0, 0), (14, 1... +
+ + + + + + +
+ + + + + +
Function Details[hide private]
+
+ +
+ +
+ + +
+

interpolate_colors(colors, + flat=False, + num_colors=256) +

+
source code  +
+ +

given a list of colors, create a larger list of colors interpolating + the first one. If flatten is True a list of numers will be returned. If + False, a list of (r,g,b) tuples. num_colors is the number of colors + wanted in the final list

+
+
+
+
+
+ + + + + + +
+ + + + + +
Variables Details[hide private]
+
+ +
+ +
+

color_schemes

+ +
+
+
+
Value:
+
+{'default': {'spectrogram': [(0, 0, 0),
+                             (14, 17, 16),
+                             (40, 50, 76),
+                             (90, 180, 100),
+                             (224, 224, 44),
+                             (255, 60, 30),
+                             (255, 255, 255)],
+             'waveform': [(50, 0, 200), (0, 220, 80), (255, 224, 0), (\
+...
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.grapher.core-pysrc.html b/doc/epydoc/timeside.grapher.core-pysrc.html new file mode 100644 index 0000000..74dce31 --- /dev/null +++ b/doc/epydoc/timeside.grapher.core-pysrc.html @@ -0,0 +1,711 @@ + + + + + timeside.grapher.core + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package grapher :: + Module core + + + + + + +
[hide private]
[frames] | no frames]
+
+

Source Code for Module timeside.grapher.core

+
+  1  #!/usr/bin/env python 
+  2  # -*- coding: utf-8 -*- 
+  3   
+  4  # wav2png.py -- converts wave files to wave file and spectrogram images 
+  5  # Copyright (C) 2008 MUSIC TECHNOLOGY GROUP (MTG) 
+  6  #                    UNIVERSITAT POMPEU FABRA 
+  7  # 
+  8  # This program is free software: you can redistribute it and/or modify 
+  9  # it under the terms of the GNU Affero General Public License as 
+ 10  # published by the Free Software Foundation, either version 3 of the 
+ 11  # License, or (at your option) any later version. 
+ 12  # 
+ 13  # This program is distributed in the hope that it will be useful, 
+ 14  # but WITHOUT ANY WARRANTY; without even the implied warranty of 
+ 15  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
+ 16  # GNU Affero General Public License for more details. 
+ 17  # 
+ 18  # You should have received a copy of the GNU Affero General Public License 
+ 19  # along with this program.  If not, see <http://www.gnu.org/licenses/>. 
+ 20  # 
+ 21  # Authors: 
+ 22  #   Bram de Jong <bram.dejong at domain.com where domain in gmail> 
+ 23  #   Guillaume Pellerin <yomguy@parisson.com> 
+ 24   
+ 25   
+ 26  import optparse, math, sys 
+ 27  import ImageFilter, ImageChops, Image, ImageDraw, ImageColor 
+ 28  import numpy 
+ 29  from timeside.core import FixedSizeInputAdapter 
+ 30   
+ 31   
+ 32  color_schemes = { 
+ 33      'default': { 
+ 34          'waveform': [(50,0,200), (0,220,80), (255,224,0), (255,0,0)], 
+ 35          'spectrogram': [(0, 0, 0), (58/4,68/4,65/4), (80/2,100/2,153/2), (90,180,100), 
+ 36                        (224,224,44), (255,60,30), (255,255,255)] 
+ 37      }, 
+ 38      'iso': { 
+ 39          'waveform': [(0,0,255), (0,255,255), (255,255,0), (255,0,0)], 
+ 40          'spectrogram': [(0, 0, 0), (58/4,68/4,65/4), (80/2,100/2,153/2), (90,180,100), 
+ 41                        (224,224,44), (255,60,30), (255,255,255)] 
+ 42      }, 
+ 43      'purple': { 
+ 44          'waveform': [(173,173,173), (147,149,196), (77,80,138), (108,66,0)], 
+ 45          'spectrogram': [(0, 0, 0), (58/4,68/4,65/4), (80/2,100/2,153/2), (90,180,100), 
+ 46                        (224,224,44), (255,60,30), (255,255,255)] 
+ 47      } 
+ 48  } 
+ 49   
+ 50   
+
51 -class SpectralCentroid(object): +
52 +
53 - def __init__(self, fft_size, nframes, samplerate, lower, higher, window_function=numpy.ones): +
54 self.fft_size = fft_size + 55 self.window = window_function(self.fft_size) + 56 self.spectrum_range = None + 57 self.lower = lower + 58 self.higher = higher + 59 self.lower_log = math.log10(self.lower) + 60 self.higher_log = math.log10(self.higher) + 61 self.clip = lambda val, low, high: min(high, max(low, val)) + 62 self.nframes = nframes + 63 self.samplerate = samplerate + 64 self.spectrum_adapter = FixedSizeInputAdapter(self.fft_size, 1, pad=True) +
65 +
66 - def process(self, frames, eod, spec_range=120.0): +
67 + 68 for buffer, end in self.spectrum_adapter.process(frames, True): + 69 samples = buffer[:,0].copy() + 70 if end: + 71 break + 72 samples *= self.window + 73 fft = numpy.fft.fft(samples) + 74 spectrum = numpy.abs(fft[:fft.shape[0] / 2 + 1]) / float(self.fft_size) # normalized abs(FFT) between 0 and 1 + 75 length = numpy.float64(spectrum.shape[0]) + 76 + 77 # scale the db spectrum from [- spec_range db ... 0 db] > [0..1] + 78 db_spectrum = ((20*(numpy.log10(spectrum + 1e-30))).clip(-spec_range, 0.0) + spec_range)/spec_range + 79 energy = spectrum.sum() + 80 spectral_centroid = 0 + 81 + 82 if energy > 1e-20: + 83 # calculate the spectral centroid + 84 if self.spectrum_range == None: + 85 self.spectrum_range = numpy.arange(length) + 86 + 87 spectral_centroid = (spectrum * self.spectrum_range).sum() / (energy * (length - 1)) * self.samplerate * 0.5 + 88 # clip > log10 > scale between 0 and 1 + 89 spectral_centroid = (math.log10(self.clip(spectral_centroid, self.lower, self.higher)) - self.lower_log) / (self.higher_log - self.lower_log) + 90 + 91 return (spectral_centroid, db_spectrum) +
92 + 93 +
94 -def interpolate_colors(colors, flat=False, num_colors=256): +
95 """ given a list of colors, create a larger list of colors interpolating + 96 the first one. If flatten is True a list of numers will be returned. If + 97 False, a list of (r,g,b) tuples. num_colors is the number of colors wanted + 98 in the final list """ + 99 +100 palette = [] +101 +102 for i in range(num_colors): +103 index = (i * (len(colors) - 1))/(num_colors - 1.0) +104 index_int = int(index) +105 alpha = index - float(index_int) +106 +107 if alpha > 0: +108 r = (1.0 - alpha) * colors[index_int][0] + alpha * colors[index_int + 1][0] +109 g = (1.0 - alpha) * colors[index_int][1] + alpha * colors[index_int + 1][1] +110 b = (1.0 - alpha) * colors[index_int][2] + alpha * colors[index_int + 1][2] +111 else: +112 r = (1.0 - alpha) * colors[index_int][0] +113 g = (1.0 - alpha) * colors[index_int][1] +114 b = (1.0 - alpha) * colors[index_int][2] +115 +116 if flat: +117 palette.extend((int(r), int(g), int(b))) +118 else: +119 palette.append((int(r), int(g), int(b))) +120 +121 return palette +
122 +123 +
124 -class WaveformImage(object): +
125 +
126 - def __init__(self, image_width, image_height, nframes, samplerate, fft_size, bg_color=None, color_scheme=None, filename=None): +
127 +128 self.image_width = image_width +129 self.image_height = image_height +130 self.nframes = nframes +131 self.samplerate = samplerate +132 self.fft_size = fft_size +133 self.filename = filename +134 +135 self.bg_color = bg_color +136 if not bg_color: +137 self.bg_color = (0,0,0) +138 self.color_scheme = color_scheme +139 if not color_scheme: +140 self.color_scheme = 'default' +141 colors = color_schemes[self.color_scheme]['waveform'] +142 self.color_lookup = interpolate_colors(colors) +143 +144 self.samples_per_pixel = self.nframes / float(self.image_width) +145 self.buffer_size = int(round(self.samples_per_pixel, 0)) +146 self.pixels_adapter = FixedSizeInputAdapter(self.buffer_size, 1, pad=False) +147 self.pixels_adapter_nframes = self.pixels_adapter.nframes(self.nframes) +148 +149 self.lower = 500 +150 self.higher = 16000 +151 self.spectral_centroid = SpectralCentroid(self.fft_size, self.nframes, self.samplerate, self.lower, self.higher, numpy.hanning) +152 +153 self.image = Image.new("RGB", (self.image_width, self.image_height), self.bg_color) +154 self.pixel = self.image.load() +155 self.draw = ImageDraw.Draw(self.image) +156 self.previous_x, self.previous_y = None, None +157 self.frame_cursor = 0 +158 self.pixel_cursor = 0 +
159 +
160 - def peaks(self, samples): +
161 """ read all samples between start_seek and end_seek, then find the minimum and maximum peak +162 in that range. Returns that pair in the order they were found. So if min was found first, +163 it returns (min, max) else the other way around. """ +164 +165 max_index = numpy.argmax(samples) +166 max_value = samples[max_index] +167 +168 min_index = numpy.argmin(samples) +169 min_value = samples[min_index] +170 +171 if min_index < max_index: +172 return (min_value, max_value) +173 else: +174 return (max_value, min_value) +
175 +
176 - def color_from_value(self, value): +
177 """ given a value between 0 and 1, return an (r,g,b) tuple """ +178 +179 return ImageColor.getrgb("hsl(%d,%d%%,%d%%)" % (int( (1.0 - value) * 360 ), 80, 50)) +
180 +
181 - def draw_peaks(self, x, peaks, spectral_centroid): +
182 """ draw 2 peaks at x using the spectral_centroid for color """ +183 +184 y1 = self.image_height * 0.5 - peaks[0] * (self.image_height - 4) * 0.5 +185 y2 = self.image_height * 0.5 - peaks[1] * (self.image_height - 4) * 0.5 +186 +187 line_color = self.color_lookup[int(spectral_centroid*255.0)] +188 +189 if self.previous_y != None: +190 self.draw.line([self.previous_x, self.previous_y, x, y1, x, y2], line_color) +191 else: +192 self.draw.line([x, y1, x, y2], line_color) +193 +194 self.previous_x, self.previous_y = x, y2 +195 +196 self.draw_anti_aliased_pixels(x, y1, y2, line_color) +
197 +
198 - def draw_anti_aliased_pixels(self, x, y1, y2, color): +
199 """ vertical anti-aliasing at y1 and y2 """ +200 +201 y_max = max(y1, y2) +202 y_max_int = int(y_max) +203 alpha = y_max - y_max_int +204 +205 if alpha > 0.0 and alpha < 1.0 and y_max_int + 1 < self.image_height: +206 current_pix = self.pixel[x, y_max_int + 1] +207 +208 r = int((1-alpha)*current_pix[0] + alpha*color[0]) +209 g = int((1-alpha)*current_pix[1] + alpha*color[1]) +210 b = int((1-alpha)*current_pix[2] + alpha*color[2]) +211 +212 self.pixel[x, y_max_int + 1] = (r,g,b) +213 +214 y_min = min(y1, y2) +215 y_min_int = int(y_min) +216 alpha = 1.0 - (y_min - y_min_int) +217 +218 if alpha > 0.0 and alpha < 1.0 and y_min_int - 1 >= 0: +219 current_pix = self.pixel[x, y_min_int - 1] +220 +221 r = int((1-alpha)*current_pix[0] + alpha*color[0]) +222 g = int((1-alpha)*current_pix[1] + alpha*color[1]) +223 b = int((1-alpha)*current_pix[2] + alpha*color[2]) +224 +225 self.pixel[x, y_min_int - 1] = (r,g,b) +
226 +
227 - def process(self, frames, eod): +
228 if len(frames) == 1: +229 frames.shape = (len(frames),1) +230 buffer = frames.copy() +231 else: +232 buffer = frames[:,0].copy() +233 buffer.shape = (len(frames),1) +234 +235 (spectral_centroid, db_spectrum) = self.spectral_centroid.process(buffer, True) +236 for samples, end in self.pixels_adapter.process(buffer, eod): +237 if self.pixel_cursor < self.image_width: +238 peaks = self.peaks(samples) +239 self.draw_peaks(self.pixel_cursor, peaks, spectral_centroid) +240 self.pixel_cursor += 1 +
241 +
242 - def save(self): +
243 a = 25 +244 for x in range(self.image_width): +245 self.pixel[x, self.image_height/2] = tuple(map(lambda p: p+a, self.pixel[x, self.image_height/2])) +246 self.image.save(self.filename) +
247 +248 +
249 -class SpectrogramImage(object): +
250 +
251 - def __init__(self, image_width, image_height, nframes, samplerate, fft_size, bg_color=None, color_scheme='default', filename=None): +
252 self.image_width = image_width +253 self.image_height = image_height +254 self.nframes = nframes +255 self.samplerate = samplerate +256 self.fft_size = fft_size +257 self.filename = filename +258 self.color_scheme = color_scheme +259 +260 self.image = Image.new("P", (self.image_height, self.image_width)) +261 colors = color_schemes[self.color_scheme]['spectrogram'] +262 self.image.putpalette(interpolate_colors(colors, True)) +263 +264 self.samples_per_pixel = self.nframes / float(self.image_width) +265 self.buffer_size = int(round(self.samples_per_pixel, 0)) +266 self.pixels_adapter = FixedSizeInputAdapter(self.buffer_size, 1, pad=False) +267 self.pixels_adapter_nframes = self.pixels_adapter.nframes(self.nframes) +268 +269 self.lower = 20 +270 self.higher = 16000 +271 self.spectral_centroid = SpectralCentroid(self.fft_size, self.nframes, self.samplerate, self.lower, self.higher, numpy.hanning) +272 +273 # generate the lookup which translates y-coordinate to fft-bin +274 self.y_to_bin = [] +275 f_min = float(self.lower) +276 f_max = float(self.higher) +277 y_min = math.log10(f_min) +278 y_max = math.log10(f_max) +279 for y in range(self.image_height): +280 freq = math.pow(10.0, y_min + y / (image_height - 1.0) *(y_max - y_min)) +281 bin = freq / 22050.0 * (self.fft_size/2 + 1) +282 +283 if bin < self.fft_size/2: +284 alpha = bin - int(bin) +285 +286 self.y_to_bin.append((int(bin), alpha * 255)) +287 +288 # this is a bit strange, but using image.load()[x,y] = ... is +289 # a lot slower than using image.putadata and then rotating the image +290 # so we store all the pixels in an array and then create the image when saving +291 self.pixels = [] +292 self.pixel_cursor = 0 +
293 +
294 - def draw_spectrum(self, x, spectrum): +
295 for (index, alpha) in self.y_to_bin: +296 self.pixels.append( int( ((255.0-alpha) * spectrum[index] + alpha * spectrum[index + 1] )) ) +297 +298 for y in range(len(self.y_to_bin), self.image_height): +299 self.pixels.append(0) +
300 +
301 - def process(self, frames, eod): +
302 if len(frames) == 1: +303 frames.shape = (len(frames),1) +304 buffer = frames.copy() +305 else: +306 buffer = frames[:,0].copy() +307 buffer.shape = (len(buffer),1) +308 +309 # FIXME : breaks spectrum linearity +310 for samples, end in self.pixels_adapter.process(buffer, eod): +311 if self.pixel_cursor < self.image_width: +312 (spectral_centroid, db_spectrum) = self.spectral_centroid.process(samples, False) +313 self.draw_spectrum(self.pixel_cursor, db_spectrum) +314 self.pixel_cursor += 1 +
315 +
316 - def save(self): +
317 self.image.putdata(self.pixels) +318 self.image.transpose(Image.ROTATE_90).save(self.filename) +
319 +320 +
321 -class Noise(object): +
322 """A class that mimics audiolab.sndfile but generates noise instead of reading +323 a wave file. Additionally it can be told to have a "broken" header and thus crashing +324 in the middle of the file. Also useful for testing ultra-short files of 20 samples.""" +
325 - def __init__(self, num_frames, has_broken_header=False): +
326 self.seekpoint = 0 +327 self.num_frames = num_frames +328 self.has_broken_header = has_broken_header +
329 +
330 - def seek(self, seekpoint): +
331 self.seekpoint = seekpoint +
332 +
333 - def get_nframes(self): +
334 return self.num_frames +
335 +
336 - def get_samplerate(self): +
337 return 44100 +
338 +
339 - def get_channels(self): +
340 return 1 +
341 +
342 - def read_frames(self, frames_to_read): +
343 if self.has_broken_header and self.seekpoint + frames_to_read > self.num_frames / 2: +344 raise IOError() +345 +346 num_frames_left = self.num_frames - self.seekpoint +347 if num_frames_left < frames_to_read: +348 will_read = num_frames_left +349 else: +350 will_read = frames_to_read +351 self.seekpoint += will_read +352 return numpy.random.random(will_read)*2 - 1 +
353 +
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.grapher.core.Noise-class.html b/doc/epydoc/timeside.grapher.core.Noise-class.html new file mode 100644 index 0000000..ea1ad96 --- /dev/null +++ b/doc/epydoc/timeside.grapher.core.Noise-class.html @@ -0,0 +1,323 @@ + + + + + timeside.grapher.core.Noise + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package grapher :: + Module core :: + Class Noise + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class Noise

source code

+
+object --+
+         |
+        Noise
+
+ +
+

A class that mimics audiolab.sndfile but generates noise instead of + reading a wave file. Additionally it can be told to have a + "broken" header and thus crashing in the middle of the file. + Also useful for testing ultra-short files of 20 samples.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
__init__(self, + num_frames, + has_broken_header=False)
+ x.__init__(...) initializes x; see x.__class__.__doc__ for signature
+ source code + +
+ +
+   + + + + + + +
seek(self, + seekpoint) + source code + +
+ +
+   + + + + + + +
get_nframes(self) + source code + +
+ +
+   + + + + + + +
get_samplerate(self) + source code + +
+ +
+   + + + + + + +
get_channels(self) + source code + +
+ +
+   + + + + + + +
read_frames(self, + frames_to_read) + source code + +
+ +
+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + +
+ + + + + +
Method Details[hide private]
+
+ +
+ +
+ + +
+

__init__(self, + num_frames, + has_broken_header=False) +
(Constructor) +

+
source code  +
+ +

x.__init__(...) initializes x; see x.__class__.__doc__ for + signature

+
+
Overrides: + object.__init__ +
(inherited documentation)
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.grapher.core.SpectralCentroid-class.html b/doc/epydoc/timeside.grapher.core.SpectralCentroid-class.html new file mode 100644 index 0000000..ee5ca02 --- /dev/null +++ b/doc/epydoc/timeside.grapher.core.SpectralCentroid-class.html @@ -0,0 +1,263 @@ + + + + + timeside.grapher.core.SpectralCentroid + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package grapher :: + Module core :: + Class SpectralCentroid + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class SpectralCentroid

source code

+
+object --+
+         |
+        SpectralCentroid
+
+ +
+ + + + + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
__init__(self, + fft_size, + nframes, + samplerate, + lower, + higher, + window_function=<function ones at 0x917279c>)
+ x.__init__(...) initializes x; see x.__class__.__doc__ for signature
+ source code + +
+ +
+   + + + + + + +
process(self, + frames, + eod, + spec_range=120.0) + source code + +
+ +
+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + +
+ + + + + +
Method Details[hide private]
+
+ +
+ +
+ + +
+

__init__(self, + fft_size, + nframes, + samplerate, + lower, + higher, + window_function=<function ones at 0x917279c>) +
(Constructor) +

+
source code  +
+ +

x.__init__(...) initializes x; see x.__class__.__doc__ for + signature

+
+
Overrides: + object.__init__ +
(inherited documentation)
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.grapher.core.SpectrogramImage-class.html b/doc/epydoc/timeside.grapher.core.SpectrogramImage-class.html new file mode 100644 index 0000000..83fdbb7 --- /dev/null +++ b/doc/epydoc/timeside.grapher.core.SpectrogramImage-class.html @@ -0,0 +1,300 @@ + + + + + timeside.grapher.core.SpectrogramImage + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package grapher :: + Module core :: + Class SpectrogramImage + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class SpectrogramImage

source code

+
+object --+
+         |
+        SpectrogramImage
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
__init__(self, + image_width, + image_height, + nframes, + samplerate, + fft_size, + bg_color=None, + color_scheme='default', + filename=None)
+ x.__init__(...) initializes x; see x.__class__.__doc__ for signature
+ source code + +
+ +
+   + + + + + + +
draw_spectrum(self, + x, + spectrum) + source code + +
+ +
+   + + + + + + +
process(self, + frames, + eod) + source code + +
+ +
+   + + + + + + +
save(self) + source code + +
+ +
+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + +
+ + + + + +
Method Details[hide private]
+
+ +
+ +
+ + +
+

__init__(self, + image_width, + image_height, + nframes, + samplerate, + fft_size, + bg_color=None, + color_scheme='default', + filename=None) +
(Constructor) +

+
source code  +
+ +

x.__init__(...) initializes x; see x.__class__.__doc__ for + signature

+
+
Overrides: + object.__init__ +
(inherited documentation)
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.grapher.core.WaveformImage-class.html b/doc/epydoc/timeside.grapher.core.WaveformImage-class.html new file mode 100644 index 0000000..0c930fe --- /dev/null +++ b/doc/epydoc/timeside.grapher.core.WaveformImage-class.html @@ -0,0 +1,383 @@ + + + + + timeside.grapher.core.WaveformImage + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package grapher :: + Module core :: + Class WaveformImage + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class WaveformImage

source code

+
+object --+
+         |
+        WaveformImage
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
__init__(self, + image_width, + image_height, + nframes, + samplerate, + fft_size, + bg_color=None, + color_scheme=None, + filename=None)
+ x.__init__(...) initializes x; see x.__class__.__doc__ for signature
+ source code + +
+ +
+   + + + + + + +
peaks(self, + samples)
+ read all samples between start_seek and end_seek, then find the + minimum and maximum peak in that range.
+ source code + +
+ +
+   + + + + + + +
color_from_value(self, + value)
+ given a value between 0 and 1, return an (r,g,b) tuple
+ source code + +
+ +
+   + + + + + + +
draw_peaks(self, + x, + peaks, + spectral_centroid)
+ draw 2 peaks at x using the spectral_centroid for color
+ source code + +
+ +
+   + + + + + + +
draw_anti_aliased_pixels(self, + x, + y1, + y2, + color)
+ vertical anti-aliasing at y1 and y2
+ source code + +
+ +
+   + + + + + + +
process(self, + frames, + eod) + source code + +
+ +
+   + + + + + + +
save(self) + source code + +
+ +
+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + +
+ + + + + +
Method Details[hide private]
+
+ +
+ +
+ + +
+

__init__(self, + image_width, + image_height, + nframes, + samplerate, + fft_size, + bg_color=None, + color_scheme=None, + filename=None) +
(Constructor) +

+
source code  +
+ +

x.__init__(...) initializes x; see x.__class__.__doc__ for + signature

+
+
Overrides: + object.__init__ +
(inherited documentation)
+ +
+
+
+ +
+ +
+ + +
+

peaks(self, + samples) +

+
source code  +
+ +

read all samples between start_seek and end_seek, then find the + minimum and maximum peak in that range. Returns that pair in the order + they were found. So if min was found first, it returns (min, max) else + the other way around.

+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.grapher.spectrogram_audiolab-module.html b/doc/epydoc/timeside.grapher.spectrogram_audiolab-module.html new file mode 100644 index 0000000..689e804 --- /dev/null +++ b/doc/epydoc/timeside.grapher.spectrogram_audiolab-module.html @@ -0,0 +1,210 @@ + + + + + timeside.grapher.spectrogram_audiolab + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package grapher :: + Module spectrogram_audiolab + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Module spectrogram_audiolab

source code

+ + + + + + + + + +
+ + + + + +
Classes[hide private]
+
+   + + SpectrogramGrapherAudiolab
+ Spectrogram graph driver (python style thanks to wav2png.py and + scikits.audiolab) +
+ + + + + + + + + +
+ + + + + +
Variables[hide private]
+
+   + + color_schemes = {'default': {'spectrogram': [(0, 0, 0), (14, 1... +
+ + + + + + +
+ + + + + +
Variables Details[hide private]
+
+ +
+ +
+

color_schemes

+ +
+
+
+
Value:
+
+{'default': {'spectrogram': [(0, 0, 0),
+                             (14, 17, 16),
+                             (40, 50, 76),
+                             (90, 180, 100),
+                             (224, 224, 44),
+                             (255, 60, 30),
+                             (255, 255, 255)],
+             'waveform': [(50, 0, 200), (0, 220, 80), (255, 224, 0), (\
+...
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.grapher.spectrogram_audiolab-pysrc.html b/doc/epydoc/timeside.grapher.spectrogram_audiolab-pysrc.html new file mode 100644 index 0000000..872deb1 --- /dev/null +++ b/doc/epydoc/timeside.grapher.spectrogram_audiolab-pysrc.html @@ -0,0 +1,220 @@ + + + + + timeside.grapher.spectrogram_audiolab + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package grapher :: + Module spectrogram_audiolab + + + + + + +
[hide private]
[frames] | no frames]
+
+

Source Code for Module timeside.grapher.spectrogram_audiolab

+
+ 1  # -*- coding: utf-8 -*- 
+ 2  # 
+ 3  # Copyright (c) 2007-2009 Guillaume Pellerin <yomguy@parisson.com> 
+ 4   
+ 5  # This file is part of TimeSide. 
+ 6   
+ 7  # TimeSide is free software: you can redistribute it and/or modify 
+ 8  # it under the terms of the GNU General Public License as published by 
+ 9  # the Free Software Foundation, either version 2 of the License, or 
+10  # (at your option) any later version. 
+11   
+12  # TimeSide is distributed in the hope that it will be useful, 
+13  # but WITHOUT ANY WARRANTY; without even the implied warranty of 
+14  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
+15  # GNU General Public License for more details. 
+16   
+17  # You should have received a copy of the GNU General Public License 
+18  # along with TimeSide.  If not, see <http://www.gnu.org/licenses/>. 
+19   
+20  # Author: Guillaume Pellerin <yomguy@parisson.com> 
+21   
+22  from timeside.core import * 
+23  from timeside.api import IGrapher 
+24  from tempfile import NamedTemporaryFile 
+25  from timeside.grapher.core import * 
+
26 +27 -class SpectrogramGrapherAudiolab(Processor): +
28 """Spectrogram graph driver (python style thanks to wav2png.py and scikits.audiolab)""" +29 +30 implements(IGrapher) +31 +32 bg_color = None +33 color_scheme = None +34 +35 @staticmethod +
36 - def id(): +
37 return "spectrogram" +
38 +
39 - def name(self): +
40 return "Spectrogram (audiolab)" +
41 +
42 - def set_colors(self, background=None, scheme=None): +
43 self.bg_color = background +44 self.color_scheme = scheme +
45 +
46 - def render(self, media_item, width=None, height=None, options=None): +
47 """Generator that streams the spectrogram as a PNG image with a python method""" +48 +49 wav_file = media_item +50 pngFile = NamedTemporaryFile(suffix='.png') +51 +52 if not width == None: +53 image_width = width +54 else: +55 image_width = 1500 +56 if not height == None: +57 image_height = height +58 else: +59 image_height = 200 +60 +61 fft_size = 2048 +62 args = (wav_file, pngFile.name, image_width, image_height, fft_size, +63 self.bg_color, self.color_scheme) +64 create_spectrogram_png(*args) +65 +66 buffer = pngFile.read(0xFFFF) +67 while buffer: +68 yield buffer +69 buffer = pngFile.read(0xFFFF) +70 +71 pngFile.close() +
72 +
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.grapher.spectrogram_audiolab.SpectrogramGrapherAudiolab-class.html b/doc/epydoc/timeside.grapher.spectrogram_audiolab.SpectrogramGrapherAudiolab-class.html new file mode 100644 index 0000000..9c4ed8b --- /dev/null +++ b/doc/epydoc/timeside.grapher.spectrogram_audiolab.SpectrogramGrapherAudiolab-class.html @@ -0,0 +1,336 @@ + + + + + timeside.grapher.spectrogram_audiolab.SpectrogramGrapherAudiolab + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package grapher :: + Module spectrogram_audiolab :: + Class SpectrogramGrapherAudiolab + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class SpectrogramGrapherAudiolab

source code

+
+         object --+        
+                  |        
+component.Component --+    
+                      |    
+         core.Processor --+
+                          |
+                         SpectrogramGrapherAudiolab
+
+ +
+

Spectrogram graph driver (python style thanks to wav2png.py and + scikits.audiolab)

+ + + + + + + + + + +
+ + + + + +
Nested Classes[hide private]
+
+

Inherited from core.Processor: + __metaclass__ +

+
+ + + + + + + + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
name(self) + source code + +
+ +
+   + + + + + + +
set_colors(self, + background=None, + scheme=None) + source code + +
+ +
+   + + + + + + +
render(self, + media_item, + width=None, + height=None, + options=None)
+ Generator that streams the spectrogram as a PNG image with a python + method
+ source code + +
+ +
+

Inherited from core.Processor: + __del__, + __or__, + channels, + nframes, + process, + release, + samplerate, + setup +

+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __init__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Static Methods[hide private]
+
+   + + + + + + +
id() + source code + +
+ +
+ + + + + + + + + + + + +
+ + + + + +
Class Variables[hide private]
+
+   + + bg_color = None +
+   + + color_scheme = None +
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.grapher.waveform_audiolab-module.html b/doc/epydoc/timeside.grapher.waveform_audiolab-module.html new file mode 100644 index 0000000..7f4b142 --- /dev/null +++ b/doc/epydoc/timeside.grapher.waveform_audiolab-module.html @@ -0,0 +1,210 @@ + + + + + timeside.grapher.waveform_audiolab + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package grapher :: + Module waveform_audiolab + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Module waveform_audiolab

source code

+ + + + + + + + + +
+ + + + + +
Classes[hide private]
+
+   + + WaveFormGrapherAudiolab
+ WaveForm graph driver (python style thanks to wav2png.py and + scikits.audiolab) +
+ + + + + + + + + +
+ + + + + +
Variables[hide private]
+
+   + + color_schemes = {'default': {'spectrogram': [(0, 0, 0), (14, 1... +
+ + + + + + +
+ + + + + +
Variables Details[hide private]
+
+ +
+ +
+

color_schemes

+ +
+
+
+
Value:
+
+{'default': {'spectrogram': [(0, 0, 0),
+                             (14, 17, 16),
+                             (40, 50, 76),
+                             (90, 180, 100),
+                             (224, 224, 44),
+                             (255, 60, 30),
+                             (255, 255, 255)],
+             'waveform': [(50, 0, 200), (0, 220, 80), (255, 224, 0), (\
+...
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.grapher.waveform_audiolab-pysrc.html b/doc/epydoc/timeside.grapher.waveform_audiolab-pysrc.html new file mode 100644 index 0000000..34c6d7e --- /dev/null +++ b/doc/epydoc/timeside.grapher.waveform_audiolab-pysrc.html @@ -0,0 +1,220 @@ + + + + + timeside.grapher.waveform_audiolab + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package grapher :: + Module waveform_audiolab + + + + + + +
[hide private]
[frames] | no frames]
+
+

Source Code for Module timeside.grapher.waveform_audiolab

+
+ 1  # -*- coding: utf-8 -*- 
+ 2  # 
+ 3  # Copyright (c) 2007-2009 Guillaume Pellerin <yomguy@parisson.com> 
+ 4   
+ 5  # This file is part of TimeSide. 
+ 6   
+ 7  # TimeSide is free software: you can redistribute it and/or modify 
+ 8  # it under the terms of the GNU General Public License as published by 
+ 9  # the Free Software Foundation, either version 2 of the License, or 
+10  # (at your option) any later version. 
+11   
+12  # TimeSide is distributed in the hope that it will be useful, 
+13  # but WITHOUT ANY WARRANTY; without even the implied warranty of 
+14  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
+15  # GNU General Public License for more details. 
+16   
+17  # You should have received a copy of the GNU General Public License 
+18  # along with TimeSide.  If not, see <http://www.gnu.org/licenses/>. 
+19   
+20  # Author: Guillaume Pellerin <yomguy@parisson.com> 
+21   
+22  from timeside.core import * 
+23  from timeside.api import IGrapher 
+24  from tempfile import NamedTemporaryFile 
+25  from timeside.grapher.core import * 
+
26 +27 -class WaveFormGrapherAudiolab(Processor): +
28 """WaveForm graph driver (python style thanks to wav2png.py and scikits.audiolab)""" +29 +30 implements(IGrapher) +31 +32 bg_color = None +33 color_scheme = None +34 +35 @staticmethod +
36 - def id(): +
37 return "waveform" +
38 +
39 - def name(self): +
40 return "Waveform (audiolab)" +
41 +
42 - def set_colors(self, background=None, scheme=None): +
43 self.bg_color = background +44 self.color_scheme = scheme +
45 +
46 - def render(self, media_item, width=None, height=None, options=None): +
47 """Generator that streams the waveform as a PNG image with a python method""" +48 +49 wav_file = media_item +50 pngFile = NamedTemporaryFile(suffix='.png') +51 +52 if not width == None: +53 image_width = width +54 else: +55 image_width = 1500 +56 if not height == None: +57 image_height = height +58 else: +59 image_height = 200 +60 +61 fft_size = 2048 +62 args = (wav_file, pngFile.name, image_width, image_height, fft_size, +63 self.bg_color, self.color_scheme) +64 create_wavform_png(*args) +65 +66 buffer = pngFile.read(0xFFFF) +67 while buffer: +68 yield buffer +69 buffer = pngFile.read(0xFFFF) +70 +71 pngFile.close() +
72 +
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.grapher.waveform_audiolab.WaveFormGrapherAudiolab-class.html b/doc/epydoc/timeside.grapher.waveform_audiolab.WaveFormGrapherAudiolab-class.html new file mode 100644 index 0000000..267e119 --- /dev/null +++ b/doc/epydoc/timeside.grapher.waveform_audiolab.WaveFormGrapherAudiolab-class.html @@ -0,0 +1,336 @@ + + + + + timeside.grapher.waveform_audiolab.WaveFormGrapherAudiolab + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package grapher :: + Module waveform_audiolab :: + Class WaveFormGrapherAudiolab + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class WaveFormGrapherAudiolab

source code

+
+         object --+        
+                  |        
+component.Component --+    
+                      |    
+         core.Processor --+
+                          |
+                         WaveFormGrapherAudiolab
+
+ +
+

WaveForm graph driver (python style thanks to wav2png.py and + scikits.audiolab)

+ + + + + + + + + + +
+ + + + + +
Nested Classes[hide private]
+
+

Inherited from core.Processor: + __metaclass__ +

+
+ + + + + + + + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
name(self) + source code + +
+ +
+   + + + + + + +
set_colors(self, + background=None, + scheme=None) + source code + +
+ +
+   + + + + + + +
render(self, + media_item, + width=None, + height=None, + options=None)
+ Generator that streams the waveform as a PNG image with a python + method
+ source code + +
+ +
+

Inherited from core.Processor: + __del__, + __or__, + channels, + nframes, + process, + release, + samplerate, + setup +

+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __init__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Static Methods[hide private]
+
+   + + + + + + +
id() + source code + +
+ +
+ + + + + + + + + + + + +
+ + + + + +
Class Variables[hide private]
+
+   + + bg_color = None +
+   + + color_scheme = None +
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.metadata-module.html b/doc/epydoc/timeside.metadata-module.html new file mode 100644 index 0000000..7899022 --- /dev/null +++ b/doc/epydoc/timeside.metadata-module.html @@ -0,0 +1,129 @@ + + + + + timeside.metadata + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Module metadata + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Module metadata

source code

+ + + + + + + + + +
+ + + + + +
Classes[hide private]
+
+   + + Metadata +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.metadata-pysrc.html b/doc/epydoc/timeside.metadata-pysrc.html new file mode 100644 index 0000000..e99c2bd --- /dev/null +++ b/doc/epydoc/timeside.metadata-pysrc.html @@ -0,0 +1,134 @@ + + + + + timeside.metadata + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Module metadata + + + + + + +
[hide private]
[frames] | no frames]
+
+

Source Code for Module timeside.metadata

+
+ 1  # -*- coding: utf-8 -*- 
+ 2  # 
+ 3  # Copyright (C) 2007-2009 Parisson 
+ 4  # Copyright (c) 2007 Olivier Guilyardi <olivier@samalyse.com> 
+ 5  # Copyright (c) 2007-2009 Guillaume Pellerin <pellerin@parisson.com> 
+ 6  # 
+ 7  # This file is part of TimeSide. 
+ 8   
+ 9  # TimeSide is free software: you can redistribute it and/or modify 
+10  # it under the terms of the GNU General Public License as published by 
+11  # the Free Software Foundation, either version 2 of the License, or 
+12  # (at your option) any later version. 
+13   
+14  # TimeSide is distributed in the hope that it will be useful, 
+15  # but WITHOUT ANY WARRANTY; without even the implied warranty of 
+16  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
+17  # GNU General Public License for more details. 
+18   
+19  # You should have received a copy of the GNU General Public License 
+20  # along with TimeSide.  If not, see <http://www.gnu.org/licenses/>. 
+21   
+
22 -class Metadata(object): +
23 pass +
24 +
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.metadata.Metadata-class.html b/doc/epydoc/timeside.metadata.Metadata-class.html new file mode 100644 index 0000000..0415c61 --- /dev/null +++ b/doc/epydoc/timeside.metadata.Metadata-class.html @@ -0,0 +1,171 @@ + + + + + timeside.metadata.Metadata + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Module metadata :: + Class Metadata + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class Metadata

source code

+
+object --+
+         |
+        Metadata
+
+ +
+ + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __init__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests-module.html b/doc/epydoc/timeside.tests-module.html new file mode 100644 index 0000000..5a54f51 --- /dev/null +++ b/doc/epydoc/timeside.tests-module.html @@ -0,0 +1,192 @@ + + + + + timeside.tests + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Package tests

source code

+ + + + + + + +
+ + + + + +
Submodules[hide private]
+
+
+ +
+ + + + + + + + + + + + + + + + + + +
+ + + + + +
Classes[hide private]
+
+   + + TestCase +
+   + + _TextTestResult
+ A test result class that can print formatted text results to a + stream. +
+   + + _WritelnDecorator
+ Used to decorate file-like objects with a handy 'writeln' method +
+   + + TestRunner
+ A test runner class that displays results in textual form. +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests-pysrc.html b/doc/epydoc/timeside.tests-pysrc.html new file mode 100644 index 0000000..dc40d66 --- /dev/null +++ b/doc/epydoc/timeside.tests-pysrc.html @@ -0,0 +1,336 @@ + + + + + timeside.tests + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests + + + + + + +
[hide private]
[frames] | no frames]
+
+

Source Code for Package timeside.tests

+
+  1   
+  2  import unittest 
+  3  import sys 
+  4  import time 
+  5   
+
6 -class TestCase(unittest.TestCase): +
7 +
8 - def assertSameList(self, list1, list2): +
9 "Test that two lists contain the same elements, in any order" + 10 if len(list1) != len(list2): + 11 self.fail("Lists length differ : %d != %d" % (len(list1), len(list2))) + 12 + 13 for item in list1: + 14 if not item in list2: + 15 self.fail("%s is not in list2" % str(item)) + 16 + 17 for item in list2: + 18 if not item in list1: + 19 self.fail("%s is not in list1" % str(item)) +
20 +
21 -class _TextTestResult(unittest.TestResult): +
22 """A test result class that can print formatted text results to a stream. + 23 + 24 Used by TextTestRunner. + 25 """ + 26 separator1 = '=' * 70 + 27 separator2 = '-' * 70 + 28 +
29 - def __init__(self, stream, descriptions, verbosity): +
30 unittest.TestResult.__init__(self) + 31 self.stream = stream + 32 self.showAll = verbosity > 1 + 33 self.dots = verbosity == 1 + 34 self.descriptions = descriptions + 35 self.currentTestCase = None +
36 +
37 - def getDescription(self, test): +
38 if self.descriptions: + 39 return test.shortDescription() or str(test) + 40 else: + 41 return str(test) +
42 +
43 - def startTest(self, test): +
44 unittest.TestResult.startTest(self, test) + 45 if self.showAll: + 46 if self.currentTestCase != test.__class__: + 47 self.currentTestCase = test.__class__ + 48 self.stream.writeln() + 49 self.stream.writeln("[%s]" % self.currentTestCase.__name__) + 50 self.stream.write(" " + self.getDescription(test)) + 51 self.stream.write(" ... ") +
52 +
53 - def addSuccess(self, test): +
54 unittest.TestResult.addSuccess(self, test) + 55 if self.showAll: + 56 self.stream.writeln("ok") + 57 elif self.dots: + 58 self.stream.write('.') +
59 +
60 - def addError(self, test, err): +
61 unittest.TestResult.addError(self, test, err) + 62 if self.showAll: + 63 self.stream.writeln("ERROR") + 64 elif self.dots: + 65 self.stream.write('E') +
66 +
67 - def addFailure(self, test, err): +
68 unittest.TestResult.addFailure(self, test, err) + 69 if self.showAll: + 70 self.stream.writeln("FAIL") + 71 elif self.dots: + 72 self.stream.write('F') +
73 +
74 - def printErrors(self): +
75 if self.dots or self.showAll: + 76 self.stream.writeln() + 77 self.printErrorList('ERROR', self.errors) + 78 self.printErrorList('FAIL', self.failures) +
79 +
80 - def printErrorList(self, flavour, errors): +
81 for test, err in errors: + 82 self.stream.writeln(self.separator1) + 83 self.stream.writeln("%s: %s" % (flavour,self.getDescription(test))) + 84 self.stream.writeln(self.separator2) + 85 self.stream.writeln("%s" % err) +
86 + 87 +
88 -class _WritelnDecorator: +
89 """Used to decorate file-like objects with a handy 'writeln' method""" +
90 - def __init__(self,stream): +
91 self.stream = stream +
92 +
93 - def __getattr__(self, attr): +
94 return getattr(self.stream,attr) +
95 +
96 - def writeln(self, arg=None): +
97 if arg: self.write(arg) + 98 self.write('\n') # text-mode streams translate to \r\n if needed +
99 +
100 -class TestRunner: +
101 """A test runner class that displays results in textual form. +102 +103 It prints out the names of tests as they are run, errors as they +104 occur, and a summary of the results at the end of the test run. +105 """ +
106 - def __init__(self, stream=sys.stderr, descriptions=1, verbosity=2): +
107 self.stream = _WritelnDecorator(stream) +108 self.descriptions = descriptions +109 self.verbosity = verbosity +
110 +
111 - def _makeResult(self): +
112 return _TextTestResult(self.stream, self.descriptions, self.verbosity) +
113 +
114 - def run(self, test): +
115 "Run the given test case or test suite." +116 result = self._makeResult() +117 startTime = time.time() +118 test(result) +119 stopTime = time.time() +120 timeTaken = stopTime - startTime +121 result.printErrors() +122 self.stream.writeln(result.separator2) +123 run = result.testsRun +124 self.stream.writeln("Ran %d test%s in %.3fs" % +125 (run, run != 1 and "s" or "", timeTaken)) +126 self.stream.writeln() +127 if not result.wasSuccessful(): +128 self.stream.write("FAILED (") +129 failed, errored = map(len, (result.failures, result.errors)) +130 if failed: +131 self.stream.write("failures=%d" % failed) +132 if errored: +133 if failed: self.stream.write(", ") +134 self.stream.write("errors=%d" % errored) +135 self.stream.writeln(")") +136 else: +137 self.stream.writeln("OK") +138 return result +
139 +
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.TestCase-class.html b/doc/epydoc/timeside.tests.TestCase-class.html new file mode 100644 index 0000000..e051f99 --- /dev/null +++ b/doc/epydoc/timeside.tests.TestCase-class.html @@ -0,0 +1,257 @@ + + + + + timeside.tests.TestCase + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Class TestCase + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class TestCase

source code

+
+       object --+    
+                |    
+unittest.TestCase --+
+                    |
+                   TestCase
+
+ +
Known Subclasses:
+
+ +
+ +
+ + + + + + + + + +
+ + + + + +
Nested Classes[hide private]
+
+

Inherited from unittest.TestCase: + failureException +

+
+ + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
assertSameList(self, + list1, + list2)
+ Test that two lists contain the same elements, in any order
+ source code + +
+ +
+

Inherited from unittest.TestCase: + __call__, + __init__, + __repr__, + __str__, + assertAlmostEqual, + assertAlmostEquals, + assertEqual, + assertEquals, + assertFalse, + assertNotAlmostEqual, + assertNotAlmostEquals, + assertNotEqual, + assertNotEquals, + assertRaises, + assertTrue, + assert_, + countTestCases, + debug, + defaultTestResult, + fail, + failIf, + failIfAlmostEqual, + failIfEqual, + failUnless, + failUnlessAlmostEqual, + failUnlessEqual, + failUnlessRaises, + id, + run, + setUp, + shortDescription, + tearDown +

+

Inherited from unittest.TestCase (private): + _exc_info +

+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __new__, + __reduce__, + __reduce_ex__, + __setattr__ +

+
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.TestRunner-class.html b/doc/epydoc/timeside.tests.TestRunner-class.html new file mode 100644 index 0000000..cf94af4 --- /dev/null +++ b/doc/epydoc/timeside.tests.TestRunner-class.html @@ -0,0 +1,180 @@ + + + + + timeside.tests.TestRunner + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Class TestRunner + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class TestRunner

source code

+

A test runner class that displays results in textual form.

+

It prints out the names of tests as they are run, errors as they + occur, and a summary of the results at the end of the test run.

+ + + + + + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
__init__(self, + stream=sys.stderr, + descriptions=1, + verbosity=2) + source code + +
+ +
+   + + + + + + +
_makeResult(self) + source code + +
+ +
+   + + + + + + +
run(self, + test)
+ Run the given test case or test suite.
+ source code + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests._TextTestResult-class.html b/doc/epydoc/timeside.tests._TextTestResult-class.html new file mode 100644 index 0000000..2336b06 --- /dev/null +++ b/doc/epydoc/timeside.tests._TextTestResult-class.html @@ -0,0 +1,569 @@ + + + + + timeside.tests._TextTestResult + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Class _TextTestResult + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class _TextTestResult

source code

+
+         object --+    
+                  |    
+unittest.TestResult --+
+                      |
+                     _TextTestResult
+
+ +
+

A test result class that can print formatted text results to a + stream.

+

Used by TextTestRunner.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
__init__(self, + stream, + descriptions, + verbosity)
+ x.__init__(...) initializes x; see x.__class__.__doc__ for signature
+ source code + +
+ +
+   + + + + + + +
getDescription(self, + test) + source code + +
+ +
+   + + + + + + +
startTest(self, + test)
+ Called when the given test is about to be run
+ source code + +
+ +
+   + + + + + + +
addSuccess(self, + test)
+ Called when a test has completed successfully
+ source code + +
+ +
+   + + + + + + +
addError(self, + test, + err)
+ Called when an error has occurred.
+ source code + +
+ +
+   + + + + + + +
addFailure(self, + test, + err)
+ Called when an error has occurred.
+ source code + +
+ +
+   + + + + + + +
printErrors(self) + source code + +
+ +
+   + + + + + + +
printErrorList(self, + flavour, + errors) + source code + +
+ +
+

Inherited from unittest.TestResult: + __repr__, + stop, + stopTest, + wasSuccessful +

+

Inherited from unittest.TestResult (private): + _count_relevant_tb_levels, + _exc_info_to_string, + _is_relevant_tb_level +

+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __new__, + __reduce__, + __reduce_ex__, + __setattr__, + __str__ +

+
+ + + + + + + + + + + + +
+ + + + + +
Class Variables[hide private]
+
+   + + separator1 = '================================================... +
+   + + separator2 = '------------------------------------------------... +
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + +
+ + + + + +
Method Details[hide private]
+
+ +
+ +
+ + +
+

__init__(self, + stream, + descriptions, + verbosity) +
(Constructor) +

+
source code  +
+ +

x.__init__(...) initializes x; see x.__class__.__doc__ for + signature

+
+
Overrides: + object.__init__ +
(inherited documentation)
+ +
+
+
+ +
+ +
+ + +
+

startTest(self, + test) +

+
source code  +
+ +

Called when the given test is about to be run

+
+
Overrides: + unittest.TestResult.startTest +
(inherited documentation)
+ +
+
+
+ +
+ +
+ + +
+

addSuccess(self, + test) +

+
source code  +
+ +

Called when a test has completed successfully

+
+
Overrides: + unittest.TestResult.addSuccess +
(inherited documentation)
+ +
+
+
+ +
+ +
+ + +
+

addError(self, + test, + err) +

+
source code  +
+ +

Called when an error has occurred. 'err' is a tuple of values as + returned by sys.exc_info().

+
+
Overrides: + unittest.TestResult.addError +
(inherited documentation)
+ +
+
+
+ +
+ +
+ + +
+

addFailure(self, + test, + err) +

+
source code  +
+ +

Called when an error has occurred. 'err' is a tuple of values as + returned by sys.exc_info().

+
+
Overrides: + unittest.TestResult.addFailure +
(inherited documentation)
+ +
+
+
+
+ + + + + + +
+ + + + + +
Class Variable Details[hide private]
+
+ +
+ +
+

separator1

+ +
+
+
+
Value:
+
+'=====================================================================\
+='
+
+
+
+
+
+ +
+ +
+

separator2

+ +
+
+
+
Value:
+
+'---------------------------------------------------------------------\
+-'
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests._WritelnDecorator-class.html b/doc/epydoc/timeside.tests._WritelnDecorator-class.html new file mode 100644 index 0000000..3abf7d0 --- /dev/null +++ b/doc/epydoc/timeside.tests._WritelnDecorator-class.html @@ -0,0 +1,176 @@ + + + + + timeside.tests._WritelnDecorator + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Class _WritelnDecorator + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class _WritelnDecorator

source code

+

Used to decorate file-like objects with a handy 'writeln' method

+ + + + + + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
__init__(self, + stream) + source code + +
+ +
+   + + + + + + +
__getattr__(self, + attr) + source code + +
+ +
+   + + + + + + +
writeln(self, + arg=None) + source code + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.alltests-module.html b/doc/epydoc/timeside.tests.alltests-module.html new file mode 100644 index 0000000..63a4627 --- /dev/null +++ b/doc/epydoc/timeside.tests.alltests-module.html @@ -0,0 +1,105 @@ + + + + + timeside.tests.alltests + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Module alltests + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Module alltests

source code

+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.alltests-pysrc.html b/doc/epydoc/timeside.tests.alltests-pysrc.html new file mode 100644 index 0000000..1d573d2 --- /dev/null +++ b/doc/epydoc/timeside.tests.alltests-pysrc.html @@ -0,0 +1,117 @@ + + + + + timeside.tests.alltests + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Module alltests + + + + + + +
[hide private]
[frames] | no frames]
+
+

Source Code for Module timeside.tests.alltests

+
+1  from timeside.tests.testcomponent import * 
+2  from timeside.tests.testinputadapter import * 
+3  from timeside.tests import TestRunner 
+4   
+5  unittest.main(testRunner=TestRunner()) 
+6   
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.api-module.html b/doc/epydoc/timeside.tests.api-module.html new file mode 100644 index 0000000..1bdb324 --- /dev/null +++ b/doc/epydoc/timeside.tests.api-module.html @@ -0,0 +1,134 @@ + + + + + timeside.tests.api + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Package api + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Package api

source code

+ + + + + + + +
+ + + + + +
Submodules[hide private]
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.api-pysrc.html b/doc/epydoc/timeside.tests.api-pysrc.html new file mode 100644 index 0000000..66860f2 --- /dev/null +++ b/doc/epydoc/timeside.tests.api-pysrc.html @@ -0,0 +1,113 @@ + + + + + timeside.tests.api + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Package api + + + + + + +
[hide private]
[frames] | no frames]
+
+

Source Code for Package timeside.tests.api

+
+1   
+2   
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.api.examples-module.html b/doc/epydoc/timeside.tests.api.examples-module.html new file mode 100644 index 0000000..c567759 --- /dev/null +++ b/doc/epydoc/timeside.tests.api.examples-module.html @@ -0,0 +1,262 @@ + + + + + timeside.tests.api.examples + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Package api :: + Module examples + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Module examples

source code

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
Classes[hide private]
+
+   + + FileDecoder
+ A simple audiolab-based example decoder +
+   + + MaxLevel +
+   + + Gain +
+   + + WavEncoder +
+   + + Waveform +
+   + + Spectrogram +
+   + + Duration
+ A rather useless duration analyzer. +
+   + + FixedInputProcessor
+ Processor which does absolutely nothing except illustrating the use + of the FixedInputSizeAdapter. +
+ + + + + + + + + +
+ + + + + +
Variables[hide private]
+
+   + + color_schemes = {'default': {'spectrogram': [(0, 0, 0), (14, 1... +
+ + + + + + +
+ + + + + +
Variables Details[hide private]
+
+ +
+ +
+

color_schemes

+ +
+
+
+
Value:
+
+{'default': {'spectrogram': [(0, 0, 0),
+                             (14, 17, 16),
+                             (40, 50, 76),
+                             (90, 180, 100),
+                             (224, 224, 44),
+                             (255, 60, 30),
+                             (255, 255, 255)],
+             'waveform': [(50, 0, 200), (0, 220, 80), (255, 224, 0), (\
+...
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.api.examples-pysrc.html b/doc/epydoc/timeside.tests.api.examples-pysrc.html new file mode 100644 index 0000000..ab306e9 --- /dev/null +++ b/doc/epydoc/timeside.tests.api.examples-pysrc.html @@ -0,0 +1,884 @@ + + + + + timeside.tests.api.examples + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Package api :: + Module examples + + + + + + +
[hide private]
[frames] | no frames]
+
+

Source Code for Module timeside.tests.api.examples

+
+  1  # -*- coding: utf-8 -*- 
+  2  from timeside.core import Processor, implements, interfacedoc, FixedSizeInputAdapter 
+  3  from timeside.api import * 
+  4  from timeside.grapher import * 
+  5  from timeside import Metadata 
+  6  from scikits import audiolab 
+  7  import numpy 
+
8 + 9 -class FileDecoder(Processor): +
10 """A simple audiolab-based example decoder""" + 11 implements(IDecoder) + 12 + 13 @staticmethod + 14 @interfacedoc +
15 - def id(): +
16 return "test_audiolabdec" +
17 + 18 @interfacedoc +
19 - def __init__(self, filename): +
20 self.filename = filename + 21 # The file has to be opened here so that nframes(), samplerate(), + 22 # etc.. work before setup() is called. + 23 self.file = audiolab.Sndfile(self.filename, 'r') + 24 self.position = 0 +
25 + 26 @interfacedoc +
27 - def setup(self): +
28 super(FileDecoder, self).setup() + 29 if self.position != 0: + 30 self.file.seek(0); + 31 self.position = 0 +
32 +
33 - def release(self): +
34 super(FileDecoder, self).release() + 35 if self.file: + 36 self.file.close() + 37 self.file = None +
38 + 39 @interfacedoc +
40 - def channels(self): +
41 return self.file.channels +
42 + 43 @interfacedoc +
44 - def samplerate(self): +
45 return self.file.samplerate +
46 + 47 @interfacedoc +
48 - def nframes(self): +
49 return self.file.nframes +
50 + 51 @interfacedoc +
52 - def format(self): +
53 return self.file.file_format +
54 + 55 @interfacedoc +
56 - def encoding(self): +
57 return self.file.encoding +
58 @interfacedoc +
59 - def resolution(self): +
60 resolution = None + 61 encoding = self.file.encoding + 62 + 63 if encoding == "pcm8": + 64 resolution = 8 + 65 + 66 elif encoding == "pcm16": + 67 resolution = 16 + 68 elif encoding == "pcm32": + 69 resolution = 32 + 70 + 71 return resolution +
72 + 73 @interfacedoc +
74 - def metadata(self): +
75 #TODO + 76 return Metadata() +
77 + 78 @interfacedoc +
79 - def process(self, frames=None, eod=False): +
80 if frames: + 81 raise Exception("Decoder doesn't accept input frames") + 82 + 83 buffersize = 0x10000 + 84 + 85 # Need this because audiolab raises a bogus exception when asked + 86 # to read passed the end of the file + 87 toread = self.nframes() - self.position + 88 if toread > buffersize: + 89 toread = buffersize + 90 + 91 frames = self.file.read_frames(toread) + 92 eod = (toread < buffersize) + 93 self.position += toread + 94 + 95 # audiolab returns a 1D array for 1 channel, need to reshape to 2D: + 96 if frames.ndim == 1: + 97 frames = frames.reshape(len(frames), 1) + 98 + 99 return frames, eod +
100 +
101 -class MaxLevel(Processor): +
102 implements(IValueAnalyzer) +103 +104 @interfacedoc +
105 - def setup(self, channels=None, samplerate=None, nframes=None): +
106 super(MaxLevel, self).setup(channels, samplerate, nframes) +107 self.max_value = 0 +
108 +109 @staticmethod +110 @interfacedoc +
111 - def id(): +
112 return "test_maxlevel" +
113 +114 @staticmethod +115 @interfacedoc +
116 - def name(): +
117 return "Max level test analyzer" +
118 +119 @staticmethod +120 @interfacedoc +
121 - def unit(): +
122 # power? amplitude? +123 return "" +
124 +
125 - def process(self, frames, eod=False): +
126 max = frames.max() +127 if max > self.max_value: +128 self.max_value = max +129 +130 return frames, eod +
131 +
132 - def result(self): +
133 return self.max_value +
134 +
135 -class Gain(Processor): +
136 implements(IEffect) +137 +138 @interfacedoc +
139 - def __init__(self, gain=1.0): +
140 self.gain = gain +
141 +142 @staticmethod +143 @interfacedoc +
144 - def id(): +
145 return "test_gain" +
146 +147 @staticmethod +148 @interfacedoc +
149 - def name(): +
150 return "Gain test effect" +
151 +
152 - def process(self, frames, eod=False): +
153 return numpy.multiply(frames, self.gain), eod +
154 +
155 -class WavEncoder(Processor): +
156 implements(IEncoder) +157 +
158 - def __init__(self, output): +
159 self.file = None +160 if isinstance(output, basestring): +161 self.filename = output +162 else: +163 raise Exception("Streaming not supported") +
164 +165 @interfacedoc +
166 - def setup(self, channels=None, samplerate=None, nframes=None): +
167 super(WavEncoder, self).setup(channels, samplerate, nframes) +168 if self.file: +169 self.file.close() +170 +171 format = audiolab.Format("wav", "pcm16") +172 self.file = audiolab.Sndfile(self.filename, 'w', format=format, channels=channels, +173 samplerate=samplerate) +
174 +175 @staticmethod +176 @interfacedoc +
177 - def id(): +
178 return "test_wavenc" +
179 +180 @staticmethod +181 @interfacedoc +
182 - def description(): +
183 return "Hackish wave encoder" +
184 +185 @staticmethod +186 @interfacedoc +
187 - def file_extension(): +
188 return "wav" +
189 +190 @staticmethod +191 @interfacedoc +
192 - def mime_type(): +
193 return "audio/x-wav" +
194 +195 @interfacedoc +
196 - def set_metadata(self, metadata): +
197 #TODO +198 pass +
199 +200 @interfacedoc +
201 - def process(self, frames, eod=False): +
202 self.file.write_frames(frames) +203 if eod: +204 self.file.close() +205 self.file = None +206 +207 return frames, eod +
208 +
209 +210 -class Waveform(Processor): +
211 implements(IGrapher) +212 +213 FFT_SIZE = 0x400 +214 +215 @interfacedoc +
216 - def __init__(self, width=None, height=None, output=None, bg_color=None, color_scheme=None): +
217 if width: +218 self.width = width +219 else: +220 self.width = 1500 +221 if height: +222 self.height = height +223 else: +224 self.height = 200 +225 self.bg_color = bg_color +226 self.color_scheme = color_scheme +227 self.filename = output +228 self.graph = None +
229 +230 @staticmethod +231 @interfacedoc +
232 - def id(): +
233 return "test_waveform" +
234 +235 @staticmethod +236 @interfacedoc +
237 - def name(): +
238 return "Waveform test" +
239 +240 @interfacedoc +
241 - def set_colors(self, background, scheme): +
242 self.bg_color = background +243 self.color_scheme = scheme +
244 +245 @interfacedoc +
246 - def setup(self, channels=None, samplerate=None, nframes=None): +
247 super(Waveform, self).setup(channels, samplerate, nframes) +248 if self.graph: +249 self.graph = None +250 self.graph = WaveformImage(self.width, self.height, self.nframes(), self.samplerate(), self.FFT_SIZE, +251 bg_color=self.bg_color, color_scheme=self.color_scheme, filename=self.filename) +
252 +253 @interfacedoc +
254 - def process(self, frames, eod=False): +
255 self.graph.process(frames, eod) +256 return frames, eod +
257 +258 @interfacedoc +
259 - def render(self): +
260 if self.filename: +261 self.graph.save() +262 return self.graph.image +
263 +
264 +265 -class Spectrogram(Processor): +
266 implements(IGrapher) +267 +268 FFT_SIZE = 0x1000 +269 +270 @interfacedoc +
271 - def __init__(self, width=None, height=None, output=None, bg_color=None, color_scheme=None): +
272 if width: +273 self.width = width +274 else: +275 self.width = 1500 +276 if height: +277 self.height = height +278 else: +279 self.height = 200 +280 self.bg_color = bg_color +281 self.color_scheme = color_scheme +282 self.filename = output +283 self.graph = None +
284 +285 @staticmethod +286 @interfacedoc +
287 - def id(): +
288 return "test_spectrogram" +
289 +290 @staticmethod +291 @interfacedoc +
292 - def name(): +
293 return "Spectrogram test" +
294 +295 @interfacedoc +
296 - def set_colors(self, background, scheme): +
297 self.bg_color = background +298 self.color_scheme = scheme +
299 +300 @interfacedoc +
301 - def setup(self, channels=None, samplerate=None, nframes=None): +
302 super(Spectrogram, self).setup(channels, samplerate, nframes) +303 if self.graph: +304 self.graph = None +305 self.graph = SpectrogramImage(self.width, self.height, self.nframes(), self.samplerate(), self.FFT_SIZE, +306 bg_color=self.bg_color, color_scheme=self.color_scheme, filename=self.filename) +
307 +308 @interfacedoc +
309 - def process(self, frames, eod=False): +
310 self.graph.process(frames, eod) +311 return frames, eod +
312 +313 @interfacedoc +
314 - def render(self): +
315 if self.filename: +316 self.graph.save() +317 return self.graph.image +
318 +
319 +320 -class Duration(Processor): +
321 """A rather useless duration analyzer. Its only purpose is to test the +322 nframes characteristic.""" +323 implements(IValueAnalyzer) +324 +325 @interfacedoc +
326 - def setup(self, channels, samplerate, nframes): +
327 if not nframes: +328 raise Exception("nframes argument required") +329 super(Duration, self).setup(channels, samplerate, nframes) +
330 +331 @staticmethod +332 @interfacedoc +
333 - def id(): +
334 return "test_duration" +
335 +336 @staticmethod +337 @interfacedoc +
338 - def name(): +
339 return "Duration analyzer" +
340 +341 @staticmethod +342 @interfacedoc +
343 - def unit(): +
344 return "seconds" +
345 +
346 - def result(self): +
347 return self.input_nframes / float(self.input_samplerate) +
348 +
349 -class FixedInputProcessor(Processor): +
350 """Processor which does absolutely nothing except illustrating the use +351 of the FixedInputSizeAdapter. It also tests things a bit.""" +352 +353 implements(IProcessor) +354 +355 BUFFER_SIZE = 1024 +356 +357 @staticmethod +358 @interfacedoc +
359 - def id(): +
360 return "test_fixed" +
361 +362 @interfacedoc +
363 - def setup(self, channels, samplerate, nframes): +
364 super(FixedInputProcessor, self).setup(channels, samplerate, nframes) +365 self.adapter = FixedSizeInputAdapter(self.BUFFER_SIZE, channels, pad=True) +
366 +367 @interfacedoc +
368 - def process(self, frames, eod=False): +
369 for buffer, end in self.adapter.process(frames, eod): +370 # Test that the adapter is actually doing the job: +371 if len(buffer) != self.BUFFER_SIZE: +372 raise Exception("Bad buffer size from adapter") +373 +374 return frames, eod +
375 +
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.api.examples.Duration-class.html b/doc/epydoc/timeside.tests.api.examples.Duration-class.html new file mode 100644 index 0000000..3ec8c2e --- /dev/null +++ b/doc/epydoc/timeside.tests.api.examples.Duration-class.html @@ -0,0 +1,452 @@ + + + + + timeside.tests.api.examples.Duration + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Package api :: + Module examples :: + Class Duration + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class Duration

source code

+
+         object --+        
+                  |        
+component.Component --+    
+                      |    
+         core.Processor --+
+                          |
+                         Duration
+
+ +
+

A rather useless duration analyzer. Its only purpose is to test the + nframes characteristic.

+ + + + + + + + + + +
+ + + + + +
Nested Classes[hide private]
+
+

Inherited from core.Processor: + __metaclass__ +

+
+ + + + + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
setup(self, + channels, + samplerate, + nframes)
+ Allocate internal resources and reset state, so that this processor + is ready for a new run.
+ source code + +
+ +
+   + + + + + + +
result(self) + source code + +
+ +
+

Inherited from core.Processor: + __del__, + __or__, + channels, + nframes, + process, + release, + samplerate +

+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __init__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + + + + + + + +
+ + + + + +
Static Methods[hide private]
+
+   + + + + + + +
id()
+ Short alphanumeric, lower-case string which uniquely identify this + processor, suitable for use as an HTTP/GET argument value, in + filenames, etc...
+ source code + +
+ +
+   + + + + + + +
name()
+ Return the analyzer name, such as "Mean Level", "Max + level", "Total length, etc..
+ source code + +
+ +
+   + + + + + + +
unit()
+ Return the unit of the data such as "dB", + "seconds", etc...
+ source code + +
+ +
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + +
+ + + + + +
Method Details[hide private]
+
+ +
+ +
+ + +
+

setup(self, + channels, + samplerate, + nframes) +

+
source code  +
+ +

Allocate internal resources and reset state, so that this processor is + ready for a new run.

+

The channels, samplerate and/or nframes arguments may be required by + processors which accept input. An error will occur if any of these + arguments is passed to an output-only processor such as a decoder.

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
Overrides: + core.Processor.setup +
+
+
+
+ +
+ +
+ + +
+

id() +
Static Method +

+
source code  +
+ +

Short alphanumeric, lower-case string which uniquely identify this + processor, suitable for use as an HTTP/GET argument value, in filenames, + etc...

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
+
+
+ +
+ +
+ + +
+

name() +
Static Method +

+
source code  +
+ +

Return the analyzer name, such as "Mean Level", "Max + level", "Total length, etc..

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
+
+
+ +
+ +
+ + +
+

unit() +
Static Method +

+
source code  +
+ +

Return the unit of the data such as "dB", + "seconds", etc...

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.api.examples.FileDecoder-class.html b/doc/epydoc/timeside.tests.api.examples.FileDecoder-class.html new file mode 100644 index 0000000..b1df2a7 --- /dev/null +++ b/doc/epydoc/timeside.tests.api.examples.FileDecoder-class.html @@ -0,0 +1,773 @@ + + + + + timeside.tests.api.examples.FileDecoder + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Package api :: + Module examples :: + Class FileDecoder + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class FileDecoder

source code

+
+         object --+        
+                  |        
+component.Component --+    
+                      |    
+         core.Processor --+
+                          |
+                         FileDecoder
+
+ +
+

A simple audiolab-based example decoder

+ + + + + + + + + + +
+ + + + + +
Nested Classes[hide private]
+
+

Inherited from core.Processor: + __metaclass__ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
__init__(self, + filename)
+ Create a new decoder for filename.
+ source code + +
+ +
+   + + + + + + +
setup(self)
+ Allocate internal resources and reset state, so that this processor + is ready for a new run.
+ source code + +
+ +
+   + + + + + + +
release(self)
+ Release resources owned by this processor.
+ source code + +
+ +
+   + + + + + + +
channels(self)
+ Number of channels in the data returned by process().
+ source code + +
+ +
+   + + + + + + +
samplerate(self)
+ Samplerate of the data returned by process().
+ source code + +
+ +
+   + + + + + + +
nframes(self)
+ The total number of frames that this processor can output, or None if + the duration is unknown.
+ source code + +
+ +
+   + + + + + + +
format(self)
+ Return a user-friendly file format string
+ source code + +
+ +
+   + + + + + + +
encoding(self)
+ Return a user-friendly encoding string
+ source code + +
+ +
+   + + + + + + +
resolution(self)
+ Return the sample width (8, 16, etc..) of original audio file/stream, + or None if not applicable/known
+ source code + +
+ +
+   + + + + + + +
metadata(self)
+ Return the metadata embedded into the encoded stream, if any.
+ source code + +
+ +
+   + + + + + + +
process(self, + frames=None, + eod=False)
+ Process input frames and return a (output_frames, eod) tuple.
+ source code + +
+ +
+

Inherited from core.Processor: + __del__, + __or__ +

+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Static Methods[hide private]
+
+   + + + + + + +
id()
+ Short alphanumeric, lower-case string which uniquely identify this + processor, suitable for use as an HTTP/GET argument value, in + filenames, etc...
+ source code + +
+ +
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + +
+ + + + + +
Method Details[hide private]
+
+ +
+ +
+ + +
+

id() +
Static Method +

+
source code  +
+ +

Short alphanumeric, lower-case string which uniquely identify this + processor, suitable for use as an HTTP/GET argument value, in filenames, + etc...

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
+
+
+ +
+ +
+ + +
+

__init__(self, + filename) +
(Constructor) +

+
source code  +
+ +

Create a new decoder for filename.

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
Overrides: + object.__init__ +
+
+
+
+ +
+ +
+ + +
+

setup(self) +

+
source code  +
+ +

Allocate internal resources and reset state, so that this processor is + ready for a new run.

+

The channels, samplerate and/or nframes arguments may be required by + processors which accept input. An error will occur if any of these + arguments is passed to an output-only processor such as a decoder.

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
Overrides: + core.Processor.setup +
+
+
+
+ +
+ +
+ + +
+

release(self) +

+
source code  +
+ +

Release resources owned by this processor. The processor cannot be + used anymore after calling this method.

+
+
Overrides: + core.Processor.release +
(inherited documentation)
+ +
+
+
+ +
+ +
+ + +
+

channels(self) +

+
source code  +
+ +

Number of channels in the data returned by process(). May be different + from the number of channels passed to setup()

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
Overrides: + core.Processor.channels +
+
+
+
+ +
+ +
+ + +
+

samplerate(self) +

+
source code  +
+ +

Samplerate of the data returned by process(). May be different from + the samplerate passed to setup()

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
Overrides: + core.Processor.samplerate +
+
+
+
+ +
+ +
+ + +
+

nframes(self) +

+
source code  +
+ +

The total number of frames that this processor can output, or None if + the duration is unknown.

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
Overrides: + core.Processor.nframes +
+
+
+
+ +
+ +
+ + +
+

format(self) +

+
source code  +
+ +

Return a user-friendly file format string

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
+
+
+ +
+ +
+ + +
+

encoding(self) +

+
source code  +
+ +

Return a user-friendly encoding string

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
+
+
+ +
+ +
+ + +
+

resolution(self) +

+
source code  +
+ +

Return the sample width (8, 16, etc..) of original audio file/stream, + or None if not applicable/known

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
+
+
+ +
+ +
+ + +
+

metadata(self) +

+
source code  +
+ +

Return the metadata embedded into the encoded stream, if any.

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
+
+
+ +
+ +
+ + +
+

process(self, + frames=None, + eod=False) +

+
source code  +
+ +

Process input frames and return a (output_frames, eod) tuple. Both + input and output frames are 2D numpy arrays, where columns are channels, + and containing an undetermined number of frames. eod=True means that the + end-of-data has been reached.

+

Output-only processors (such as decoders) will raise an exception if + the frames argument is not None. All processors (even encoders) return + data, even if that means returning the input unchanged.

+

Warning: it is required to call setup() before this method.

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
Overrides: + core.Processor.process +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.api.examples.FixedInputProcessor-class.html b/doc/epydoc/timeside.tests.api.examples.FixedInputProcessor-class.html new file mode 100644 index 0000000..ed83222 --- /dev/null +++ b/doc/epydoc/timeside.tests.api.examples.FixedInputProcessor-class.html @@ -0,0 +1,428 @@ + + + + + timeside.tests.api.examples.FixedInputProcessor + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Package api :: + Module examples :: + Class FixedInputProcessor + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class FixedInputProcessor

source code

+
+         object --+        
+                  |        
+component.Component --+    
+                      |    
+         core.Processor --+
+                          |
+                         FixedInputProcessor
+
+ +
+

Processor which does absolutely nothing except illustrating the use of + the FixedInputSizeAdapter. It also tests things a bit.

+ + + + + + + + + + +
+ + + + + +
Nested Classes[hide private]
+
+

Inherited from core.Processor: + __metaclass__ +

+
+ + + + + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
setup(self, + channels, + samplerate, + nframes)
+ Allocate internal resources and reset state, so that this processor + is ready for a new run.
+ source code + +
+ +
+   + + + + + + +
process(self, + frames, + eod=False)
+ Process input frames and return a (output_frames, eod) tuple.
+ source code + +
+ +
+

Inherited from core.Processor: + __del__, + __or__, + channels, + nframes, + release, + samplerate +

+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __init__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Static Methods[hide private]
+
+   + + + + + + +
id()
+ Short alphanumeric, lower-case string which uniquely identify this + processor, suitable for use as an HTTP/GET argument value, in + filenames, etc...
+ source code + +
+ +
+ + + + + + + + + +
+ + + + + +
Class Variables[hide private]
+
+   + + BUFFER_SIZE = 1024 +
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + +
+ + + + + +
Method Details[hide private]
+
+ +
+ +
+ + +
+

id() +
Static Method +

+
source code  +
+ +

Short alphanumeric, lower-case string which uniquely identify this + processor, suitable for use as an HTTP/GET argument value, in filenames, + etc...

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
+
+
+ +
+ +
+ + +
+

setup(self, + channels, + samplerate, + nframes) +

+
source code  +
+ +

Allocate internal resources and reset state, so that this processor is + ready for a new run.

+

The channels, samplerate and/or nframes arguments may be required by + processors which accept input. An error will occur if any of these + arguments is passed to an output-only processor such as a decoder.

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
Overrides: + core.Processor.setup +
+
+
+
+ +
+ +
+ + +
+

process(self, + frames, + eod=False) +

+
source code  +
+ +

Process input frames and return a (output_frames, eod) tuple. Both + input and output frames are 2D numpy arrays, where columns are channels, + and containing an undetermined number of frames. eod=True means that the + end-of-data has been reached.

+

Output-only processors (such as decoders) will raise an exception if + the frames argument is not None. All processors (even encoders) return + data, even if that means returning the input unchanged.

+

Warning: it is required to call setup() before this method.

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
Overrides: + core.Processor.process +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.api.examples.Gain-class.html b/doc/epydoc/timeside.tests.api.examples.Gain-class.html new file mode 100644 index 0000000..ceb0b35 --- /dev/null +++ b/doc/epydoc/timeside.tests.api.examples.Gain-class.html @@ -0,0 +1,430 @@ + + + + + timeside.tests.api.examples.Gain + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Package api :: + Module examples :: + Class Gain + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class Gain

source code

+
+         object --+        
+                  |        
+component.Component --+    
+                      |    
+         core.Processor --+
+                          |
+                         Gain
+
+ +
+ + + + + + + + + +
+ + + + + +
Nested Classes[hide private]
+
+

Inherited from core.Processor: + __metaclass__ +

+
+ + + + + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
__init__(self, + gain=1.0)
+ Create a new effect.
+ source code + +
+ +
+   + + + + + + +
process(self, + frames, + eod=False)
+ Process input frames and return a (output_frames, eod) tuple.
+ source code + +
+ +
+

Inherited from core.Processor: + __del__, + __or__, + channels, + nframes, + release, + samplerate, + setup +

+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + + + + +
+ + + + + +
Static Methods[hide private]
+
+   + + + + + + +
id()
+ Short alphanumeric, lower-case string which uniquely identify this + processor, suitable for use as an HTTP/GET argument value, in + filenames, etc...
+ source code + +
+ +
+   + + + + + + +
name()
+ Return the effect name
+ source code + +
+ +
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + +
+ + + + + +
Method Details[hide private]
+
+ +
+ +
+ + +
+

__init__(self, + gain=1.0) +
(Constructor) +

+
source code  +
+ +

Create a new effect.

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
Overrides: + object.__init__ +
+
+
+
+ +
+ +
+ + +
+

id() +
Static Method +

+
source code  +
+ +

Short alphanumeric, lower-case string which uniquely identify this + processor, suitable for use as an HTTP/GET argument value, in filenames, + etc...

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
+
+
+ +
+ +
+ + +
+

name() +
Static Method +

+
source code  +
+ +

Return the effect name

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
+
+
+ +
+ +
+ + +
+

process(self, + frames, + eod=False) +

+
source code  +
+ +

Process input frames and return a (output_frames, eod) tuple. Both + input and output frames are 2D numpy arrays, where columns are channels, + and containing an undetermined number of frames. eod=True means that the + end-of-data has been reached.

+

Output-only processors (such as decoders) will raise an exception if + the frames argument is not None. All processors (even encoders) return + data, even if that means returning the input unchanged.

+

Warning: it is required to call setup() before this method.

+
+
Overrides: + core.Processor.process +
(inherited documentation)
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.api.examples.MaxLevel-class.html b/doc/epydoc/timeside.tests.api.examples.MaxLevel-class.html new file mode 100644 index 0000000..b76bdfe --- /dev/null +++ b/doc/epydoc/timeside.tests.api.examples.MaxLevel-class.html @@ -0,0 +1,499 @@ + + + + + timeside.tests.api.examples.MaxLevel + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Package api :: + Module examples :: + Class MaxLevel + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class MaxLevel

source code

+
+         object --+        
+                  |        
+component.Component --+    
+                      |    
+         core.Processor --+
+                          |
+                         MaxLevel
+
+ +
+ + + + + + + + + +
+ + + + + +
Nested Classes[hide private]
+
+

Inherited from core.Processor: + __metaclass__ +

+
+ + + + + + + + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
setup(self, + channels=None, + samplerate=None, + nframes=None)
+ Allocate internal resources and reset state, so that this processor + is ready for a new run.
+ source code + +
+ +
+   + + + + + + +
process(self, + frames, + eod=False)
+ Process input frames and return a (output_frames, eod) tuple.
+ source code + +
+ +
+   + + + + + + +
result(self) + source code + +
+ +
+

Inherited from core.Processor: + __del__, + __or__, + channels, + nframes, + release, + samplerate +

+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __init__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + + + + + + + +
+ + + + + +
Static Methods[hide private]
+
+   + + + + + + +
id()
+ Short alphanumeric, lower-case string which uniquely identify this + processor, suitable for use as an HTTP/GET argument value, in + filenames, etc...
+ source code + +
+ +
+   + + + + + + +
name()
+ Return the analyzer name, such as "Mean Level", "Max + level", "Total length, etc..
+ source code + +
+ +
+   + + + + + + +
unit()
+ Return the unit of the data such as "dB", + "seconds", etc...
+ source code + +
+ +
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + +
+ + + + + +
Method Details[hide private]
+
+ +
+ +
+ + +
+

setup(self, + channels=None, + samplerate=None, + nframes=None) +

+
source code  +
+ +

Allocate internal resources and reset state, so that this processor is + ready for a new run.

+

The channels, samplerate and/or nframes arguments may be required by + processors which accept input. An error will occur if any of these + arguments is passed to an output-only processor such as a decoder.

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
Overrides: + core.Processor.setup +
+
+
+
+ +
+ +
+ + +
+

id() +
Static Method +

+
source code  +
+ +

Short alphanumeric, lower-case string which uniquely identify this + processor, suitable for use as an HTTP/GET argument value, in filenames, + etc...

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
+
+
+ +
+ +
+ + +
+

name() +
Static Method +

+
source code  +
+ +

Return the analyzer name, such as "Mean Level", "Max + level", "Total length, etc..

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
+
+
+ +
+ +
+ + +
+

unit() +
Static Method +

+
source code  +
+ +

Return the unit of the data such as "dB", + "seconds", etc...

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
+
+
+ +
+ +
+ + +
+

process(self, + frames, + eod=False) +

+
source code  +
+ +

Process input frames and return a (output_frames, eod) tuple. Both + input and output frames are 2D numpy arrays, where columns are channels, + and containing an undetermined number of frames. eod=True means that the + end-of-data has been reached.

+

Output-only processors (such as decoders) will raise an exception if + the frames argument is not None. All processors (even encoders) return + data, even if that means returning the input unchanged.

+

Warning: it is required to call setup() before this method.

+
+
Overrides: + core.Processor.process +
(inherited documentation)
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.api.examples.Spectrogram-class.html b/doc/epydoc/timeside.tests.api.examples.Spectrogram-class.html new file mode 100644 index 0000000..dcaccdd --- /dev/null +++ b/doc/epydoc/timeside.tests.api.examples.Spectrogram-class.html @@ -0,0 +1,609 @@ + + + + + timeside.tests.api.examples.Spectrogram + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Package api :: + Module examples :: + Class Spectrogram + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class Spectrogram

source code

+
+         object --+        
+                  |        
+component.Component --+    
+                      |    
+         core.Processor --+
+                          |
+                         Spectrogram
+
+ +
+ + + + + + + + + +
+ + + + + +
Nested Classes[hide private]
+
+

Inherited from core.Processor: + __metaclass__ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
__init__(self, + width=None, + height=None, + output=None, + bg_color=None, + color_scheme=None)
+ Create a new grapher.
+ source code + +
+ +
+   + + + + + + +
set_colors(self, + background, + scheme)
+ Set the colors used for image generation.
+ source code + +
+ +
+   + + + + + + +
setup(self, + channels=None, + samplerate=None, + nframes=None)
+ Allocate internal resources and reset state, so that this processor + is ready for a new run.
+ source code + +
+ +
+   + + + + + + +
process(self, + frames, + eod=False)
+ Process input frames and return a (output_frames, eod) tuple.
+ source code + +
+ +
+   + + + + + + +
render(self)
+ Return a PIL Image object visually representing all of the data + passed by repeatedly calling process()
+ source code + +
+ +
+

Inherited from core.Processor: + __del__, + __or__, + channels, + nframes, + release, + samplerate +

+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + + + + +
+ + + + + +
Static Methods[hide private]
+
+   + + + + + + +
id()
+ Short alphanumeric, lower-case string which uniquely identify this + processor, suitable for use as an HTTP/GET argument value, in + filenames, etc...
+ source code + +
+ +
+   + + + + + + +
name()
+ Return the graph name, such as "Waveform", "Spectral + view", etc..
+ source code + +
+ +
+ + + + + + + + + +
+ + + + + +
Class Variables[hide private]
+
+   + + FFT_SIZE = 4096 +
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + +
+ + + + + +
Method Details[hide private]
+
+ +
+ +
+ + +
+

__init__(self, + width=None, + height=None, + output=None, + bg_color=None, + color_scheme=None) +
(Constructor) +

+
source code  +
+ +

Create a new grapher. width and height are generally in pixels but + could be something else for eg. svg rendering, etc..

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
Overrides: + object.__init__ +
+
+
+
+ +
+ +
+ + +
+

id() +
Static Method +

+
source code  +
+ +

Short alphanumeric, lower-case string which uniquely identify this + processor, suitable for use as an HTTP/GET argument value, in filenames, + etc...

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
+
+
+ +
+ +
+ + +
+

name() +
Static Method +

+
source code  +
+ +

Return the graph name, such as "Waveform", "Spectral + view", etc..

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
+
+
+ +
+ +
+ + +
+

set_colors(self, + background, + scheme) +

+
source code  +
+ +

Set the colors used for image generation. background is a RGB tuple, + and scheme a a predefined color theme name

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
+
+
+ +
+ +
+ + +
+

setup(self, + channels=None, + samplerate=None, + nframes=None) +

+
source code  +
+ +

Allocate internal resources and reset state, so that this processor is + ready for a new run.

+

The channels, samplerate and/or nframes arguments may be required by + processors which accept input. An error will occur if any of these + arguments is passed to an output-only processor such as a decoder.

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
Overrides: + core.Processor.setup +
+
+
+
+ +
+ +
+ + +
+

process(self, + frames, + eod=False) +

+
source code  +
+ +

Process input frames and return a (output_frames, eod) tuple. Both + input and output frames are 2D numpy arrays, where columns are channels, + and containing an undetermined number of frames. eod=True means that the + end-of-data has been reached.

+

Output-only processors (such as decoders) will raise an exception if + the frames argument is not None. All processors (even encoders) return + data, even if that means returning the input unchanged.

+

Warning: it is required to call setup() before this method.

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
Overrides: + core.Processor.process +
+
+
+
+ +
+ +
+ + +
+

render(self) +

+
source code  +
+ +

Return a PIL Image object visually representing all of the data passed + by repeatedly calling process()

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.api.examples.WavEncoder-class.html b/doc/epydoc/timeside.tests.api.examples.WavEncoder-class.html new file mode 100644 index 0000000..f3ead8f --- /dev/null +++ b/doc/epydoc/timeside.tests.api.examples.WavEncoder-class.html @@ -0,0 +1,616 @@ + + + + + timeside.tests.api.examples.WavEncoder + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Package api :: + Module examples :: + Class WavEncoder + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class WavEncoder

source code

+
+         object --+        
+                  |        
+component.Component --+    
+                      |    
+         core.Processor --+
+                          |
+                         WavEncoder
+
+ +
+ + + + + + + + + +
+ + + + + +
Nested Classes[hide private]
+
+

Inherited from core.Processor: + __metaclass__ +

+
+ + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
__init__(self, + output)
+ x.__init__(...) initializes x; see x.__class__.__doc__ for signature
+ source code + +
+ +
+   + + + + + + +
setup(self, + channels=None, + samplerate=None, + nframes=None)
+ Allocate internal resources and reset state, so that this processor + is ready for a new run.
+ source code + +
+ +
+   + + + + + + +
set_metadata(self, + metadata)
+ Set the metadata to be embedded in the encoded output.
+ source code + +
+ +
+   + + + + + + +
process(self, + frames, + eod=False)
+ Process input frames and return a (output_frames, eod) tuple.
+ source code + +
+ +
+

Inherited from core.Processor: + __del__, + __or__, + channels, + nframes, + release, + samplerate +

+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + + + + + + + + + + +
+ + + + + +
Static Methods[hide private]
+
+   + + + + + + +
id()
+ Short alphanumeric, lower-case string which uniquely identify this + processor, suitable for use as an HTTP/GET argument value, in + filenames, etc...
+ source code + +
+ +
+   + + + + + + +
description()
+ Return a string describing what this encode format provides, is good + for, etc...
+ source code + +
+ +
+   + + + + + + +
file_extension()
+ Return the filename extension corresponding to this encode format
+ source code + +
+ +
+   + + + + + + +
mime_type()
+ Return the mime type corresponding to this encode format
+ source code + +
+ +
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + +
+ + + + + +
Method Details[hide private]
+
+ +
+ +
+ + +
+

__init__(self, + output) +
(Constructor) +

+
source code  +
+ +

x.__init__(...) initializes x; see x.__class__.__doc__ for + signature

+
+
Overrides: + object.__init__ +
(inherited documentation)
+ +
+
+
+ +
+ +
+ + +
+

setup(self, + channels=None, + samplerate=None, + nframes=None) +

+
source code  +
+ +

Allocate internal resources and reset state, so that this processor is + ready for a new run.

+

The channels, samplerate and/or nframes arguments may be required by + processors which accept input. An error will occur if any of these + arguments is passed to an output-only processor such as a decoder.

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
Overrides: + core.Processor.setup +
+
+
+
+ +
+ +
+ + +
+

id() +
Static Method +

+
source code  +
+ +

Short alphanumeric, lower-case string which uniquely identify this + processor, suitable for use as an HTTP/GET argument value, in filenames, + etc...

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
+
+
+ +
+ +
+ + +
+

description() +
Static Method +

+
source code  +
+ +

Return a string describing what this encode format provides, is good + for, etc... The description is meant to help the end user decide what + format is good for him/her

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
+
+
+ +
+ +
+ + +
+

file_extension() +
Static Method +

+
source code  +
+ +

Return the filename extension corresponding to this encode format

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
+
+
+ +
+ +
+ + +
+

mime_type() +
Static Method +

+
source code  +
+ +

Return the mime type corresponding to this encode format

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
+
+
+ +
+ +
+ + +
+

set_metadata(self, + metadata) +

+
source code  +
+ +

Set the metadata to be embedded in the encoded output.

+

In non-streaming mode, this method updates the metadata directly into + the output file, without re-encoding the audio data, provided this file + already exists.

+

It isn't required to call this method, but if called, it must be + before process().

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
+
+
+ +
+ +
+ + +
+

process(self, + frames, + eod=False) +

+
source code  +
+ +

Process input frames and return a (output_frames, eod) tuple. Both + input and output frames are 2D numpy arrays, where columns are channels, + and containing an undetermined number of frames. eod=True means that the + end-of-data has been reached.

+

Output-only processors (such as decoders) will raise an exception if + the frames argument is not None. All processors (even encoders) return + data, even if that means returning the input unchanged.

+

Warning: it is required to call setup() before this method.

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
Overrides: + core.Processor.process +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.api.examples.Waveform-class.html b/doc/epydoc/timeside.tests.api.examples.Waveform-class.html new file mode 100644 index 0000000..f167143 --- /dev/null +++ b/doc/epydoc/timeside.tests.api.examples.Waveform-class.html @@ -0,0 +1,609 @@ + + + + + timeside.tests.api.examples.Waveform + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Package api :: + Module examples :: + Class Waveform + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class Waveform

source code

+
+         object --+        
+                  |        
+component.Component --+    
+                      |    
+         core.Processor --+
+                          |
+                         Waveform
+
+ +
+ + + + + + + + + +
+ + + + + +
Nested Classes[hide private]
+
+

Inherited from core.Processor: + __metaclass__ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
__init__(self, + width=None, + height=None, + output=None, + bg_color=None, + color_scheme=None)
+ Create a new grapher.
+ source code + +
+ +
+   + + + + + + +
set_colors(self, + background, + scheme)
+ Set the colors used for image generation.
+ source code + +
+ +
+   + + + + + + +
setup(self, + channels=None, + samplerate=None, + nframes=None)
+ Allocate internal resources and reset state, so that this processor + is ready for a new run.
+ source code + +
+ +
+   + + + + + + +
process(self, + frames, + eod=False)
+ Process input frames and return a (output_frames, eod) tuple.
+ source code + +
+ +
+   + + + + + + +
render(self)
+ Return a PIL Image object visually representing all of the data + passed by repeatedly calling process()
+ source code + +
+ +
+

Inherited from core.Processor: + __del__, + __or__, + channels, + nframes, + release, + samplerate +

+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + + + + +
+ + + + + +
Static Methods[hide private]
+
+   + + + + + + +
id()
+ Short alphanumeric, lower-case string which uniquely identify this + processor, suitable for use as an HTTP/GET argument value, in + filenames, etc...
+ source code + +
+ +
+   + + + + + + +
name()
+ Return the graph name, such as "Waveform", "Spectral + view", etc..
+ source code + +
+ +
+ + + + + + + + + +
+ + + + + +
Class Variables[hide private]
+
+   + + FFT_SIZE = 1024 +
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + +
+ + + + + +
Method Details[hide private]
+
+ +
+ +
+ + +
+

__init__(self, + width=None, + height=None, + output=None, + bg_color=None, + color_scheme=None) +
(Constructor) +

+
source code  +
+ +

Create a new grapher. width and height are generally in pixels but + could be something else for eg. svg rendering, etc..

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
Overrides: + object.__init__ +
+
+
+
+ +
+ +
+ + +
+

id() +
Static Method +

+
source code  +
+ +

Short alphanumeric, lower-case string which uniquely identify this + processor, suitable for use as an HTTP/GET argument value, in filenames, + etc...

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
+
+
+ +
+ +
+ + +
+

name() +
Static Method +

+
source code  +
+ +

Return the graph name, such as "Waveform", "Spectral + view", etc..

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
+
+
+ +
+ +
+ + +
+

set_colors(self, + background, + scheme) +

+
source code  +
+ +

Set the colors used for image generation. background is a RGB tuple, + and scheme a a predefined color theme name

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
+
+
+ +
+ +
+ + +
+

setup(self, + channels=None, + samplerate=None, + nframes=None) +

+
source code  +
+ +

Allocate internal resources and reset state, so that this processor is + ready for a new run.

+

The channels, samplerate and/or nframes arguments may be required by + processors which accept input. An error will occur if any of these + arguments is passed to an output-only processor such as a decoder.

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
Overrides: + core.Processor.setup +
+
+
+
+ +
+ +
+ + +
+

process(self, + frames, + eod=False) +

+
source code  +
+ +

Process input frames and return a (output_frames, eod) tuple. Both + input and output frames are 2D numpy arrays, where columns are channels, + and containing an undetermined number of frames. eod=True means that the + end-of-data has been reached.

+

Output-only processors (such as decoders) will raise an exception if + the frames argument is not None. All processors (even encoders) return + data, even if that means returning the input unchanged.

+

Warning: it is required to call setup() before this method.

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
Overrides: + core.Processor.process +
+
+
+
+ +
+ +
+ + +
+

render(self) +

+
source code  +
+ +

Return a PIL Image object visually representing all of the data passed + by repeatedly calling process()

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.api.gstreamer-module.html b/doc/epydoc/timeside.tests.api.gstreamer-module.html new file mode 100644 index 0000000..51e3795 --- /dev/null +++ b/doc/epydoc/timeside.tests.api.gstreamer-module.html @@ -0,0 +1,140 @@ + + + + + timeside.tests.api.gstreamer + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Package api :: + Module gstreamer + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Module gstreamer

source code

+ + + + + + + + + + + + +
+ + + + + +
Classes[hide private]
+
+   + + FileDecoder
+ gstreamer-based decoder +
+   + + WavEncoder
+ gstreamer-based encoder +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.api.gstreamer-pysrc.html b/doc/epydoc/timeside.tests.api.gstreamer-pysrc.html new file mode 100644 index 0000000..1fe8ed1 --- /dev/null +++ b/doc/epydoc/timeside.tests.api.gstreamer-pysrc.html @@ -0,0 +1,406 @@ + + + + + timeside.tests.api.gstreamer + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Package api :: + Module gstreamer + + + + + + +
[hide private]
[frames] | no frames]
+
+

Source Code for Module timeside.tests.api.gstreamer

+
+  1  # -*- coding: utf-8 -*- 
+  2  # 
+  3  # Copyright (C) 2007-2009 Parisson 
+  4  # Copyright (c) 2007 Olivier Guilyardi <olivier@samalyse.com> 
+  5  # Copyright (c) 2007-2009 Guillaume Pellerin <pellerin@parisson.com> 
+  6  # 
+  7  # This file is part of TimeSide. 
+  8   
+  9  # TimeSide is free software: you can redistribute it and/or modify 
+ 10  # it under the terms of the GNU General Public License as published by 
+ 11  # the Free Software Foundation, either version 2 of the License, or 
+ 12  # (at your option) any later version. 
+ 13   
+ 14  # TimeSide is distributed in the hope that it will be useful, 
+ 15  # but WITHOUT ANY WARRANTY; without even the implied warranty of 
+ 16  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
+ 17  # GNU General Public License for more details. 
+ 18   
+ 19  # You should have received a copy of the GNU General Public License 
+ 20  # along with TimeSide.  If not, see <http://www.gnu.org/licenses/>. 
+ 21   
+ 22  # Author: Paul Brossier <piem@piem.org> 
+ 23   
+ 24  from timeside.core import Processor, implements, interfacedoc 
+ 25  from timeside.api import IDecoder, IEncoder 
+ 26  from numpy import array, frombuffer, getbuffer, float32 
+ 27   
+ 28  import pygst 
+ 29  pygst.require('0.10') 
+ 30  import gst 
+ 31  import gobject 
+ 32  gobject.threads_init () 
+
33 + 34 -class FileDecoder(Processor): +
35 """ gstreamer-based decoder """ + 36 implements(IDecoder) + 37 + 38 # duration ms, before discovery process times out + 39 MAX_DISCOVERY_TIME = 3000 + 40 + 41 audioformat = None + 42 audiochannels = None + 43 audiorate = None + 44 audionframes = None + 45 mimetype = '' + 46 + 47 # IProcessor methods + 48 + 49 @staticmethod + 50 @interfacedoc +
51 - def id(): +
52 return "test_gstreamerdec" +
53 +
54 - def setup(self, channels = None, samplerate = None, nframes = None): +
55 # the output data format we want + 56 caps = "audio/x-raw-float, width=32" + 57 pipeline = gst.parse_launch('''uridecodebin uri=%s + 58 ! audioconvert + 59 ! %s + 60 ! appsink name=sink sync=False ''' % (self.uri, caps)) + 61 # store a pointer to appsink in our decoder object + 62 self.sink = pipeline.get_by_name('sink') + 63 # adjust length of emitted buffers + 64 # self.sink.set_property('blocksize', 0x10000) + 65 # start pipeline + 66 pipeline.set_state(gst.STATE_PLAYING) +
67 + 68 @interfacedoc +
69 - def channels(self): +
70 return self.audiochannels +
71 + 72 @interfacedoc +
73 - def samplerate(self): +
74 return self.audiorate +
75 + 76 @interfacedoc +
77 - def nframes(self): +
78 return self.audionframes +
79 + 80 @interfacedoc +
81 - def process(self, frames = None, eod = False): +
82 try: + 83 buf = self.sink.emit('pull-buffer') + 84 except SystemError, e: + 85 # should never happen + 86 print 'SystemError', e + 87 return array([0.]), True + 88 if buf == None: + 89 return array([0.]), True + 90 return self.gst_buffer_to_numpy_array(buf), False +
91 + 92 @interfacedoc +
93 - def release(self): +
94 # nothing to do for now + 95 pass +
96 + 97 ## IDecoder methods + 98 + 99 @interfacedoc +
100 - def __init__(self, uri): +
101 +102 # is this a file? +103 import os.path +104 if os.path.exists(uri): +105 # get the absolute path +106 uri = os.path.abspath(uri) +107 # first run the file/uri through the discover pipeline +108 self.discover(uri) +109 # and make a uri of it +110 from urllib import quote +111 self.uri = 'file://'+quote(uri) +
112 +113 @interfacedoc +
114 - def format(self): +
115 # TODO check +116 return self.mimetype +
117 +118 @interfacedoc +
119 - def encoding(self): +
120 # TODO check +121 return self.mimetype.split('/')[-1] +
122 +123 @interfacedoc +
124 - def resolution(self): +
125 # TODO check: width or depth? +126 return self.audiowidth +
127 +128 @interfacedoc +
129 - def metadata(self): +
130 # TODO check +131 return self.tags +
132 +133 ## gst.extend discoverer +134 +
135 - def discover(self, path): +
136 """ gstreamer based helper function to get file attributes """ +137 from gst.extend import discoverer +138 d = discoverer.Discoverer(path, timeout = self.MAX_DISCOVERY_TIME) +139 d.connect('discovered', self.discovered) +140 self.mainloop = gobject.MainLoop() +141 d.discover() +142 self.mainloop.run() +
143 +
144 - def discovered(self, d, is_media): +
145 """ gstreamer based helper executed upon discover() completion """ +146 if is_media and d.is_audio: +147 # copy the discoverer attributes to self +148 self.audiorate = d.audiorate +149 self.mimetype= d.mimetype +150 self.audiochannels = d.audiochannels +151 self.audiowidth = d.audiowidth +152 # conversion from time in nanoseconds to frames +153 from math import ceil +154 duration = d.audiorate * d.audiolength * 1.e-9 +155 self.audionframes = int (ceil ( duration ) ) +156 self.tags = d.tags +157 elif not d.is_audio: +158 print "error, no audio found!" +159 else: +160 print "fail", path +161 self.mainloop.quit() +
162 +
163 - def gst_buffer_to_numpy_array(self, buf): +
164 """ gstreamer buffer to numpy array conversion """ +165 chan = self.audiochannels +166 samples = frombuffer(buf.data, dtype=float32) +167 samples.resize([len(samples)/chan, chan]) +168 return samples +
169 +
170 -class WavEncoder(Processor): +
171 """ gstreamer-based encoder """ +172 implements(IEncoder) +173 +
174 - def __init__(self, output): +
175 self.file = None +176 if isinstance(output, basestring): +177 self.filename = output +178 else: +179 raise Exception("Streaming not supported") +
180 +181 @interfacedoc +
182 - def setup(self, channels=None, samplerate=None, nframes=None): +
183 super(WavEncoder, self).setup(channels, samplerate, nframes) +184 # TODO open file for writing +185 # the output data format we want +186 pipeline = gst.parse_launch(''' appsrc name=src +187 ! audioconvert +188 ! wavenc +189 ! filesink location=%s ''' % self.filename) +190 # store a pointer to appsink in our encoder object +191 self.src = pipeline.get_by_name('src') +192 srccaps = gst.Caps("""audio/x-raw-float, +193 endianness=(int)1234, +194 channels=(int)%s, +195 width=(int)32, +196 rate=(int)%d""" % (int(channels), int(samplerate))) +197 self.src.set_property("caps", srccaps) +198 +199 # start pipeline +200 pipeline.set_state(gst.STATE_PLAYING) +201 self.pipeline = pipeline +
202 +203 @staticmethod +204 @interfacedoc +
205 - def id(): +
206 return "test_gstreamerenc" +
207 +208 @staticmethod +209 @interfacedoc +
210 - def description(): +
211 return "Gstreamer based encoder" +
212 +213 @staticmethod +214 @interfacedoc +
215 - def file_extension(): +
216 return "wav" +
217 +218 @staticmethod +219 @interfacedoc +
220 - def mime_type(): +
221 return "audio/x-wav" +
222 +223 @interfacedoc +
224 - def set_metadata(self, metadata): +
225 #TODO +226 pass +
227 +228 @interfacedoc +
229 - def process(self, frames, eod=False): +
230 buf = self.numpy_array_to_gst_buffer(frames) +231 self.src.emit('push-buffer', buf) +232 if eod: self.src.emit('end-of-stream') +233 return frames, eod +
234 +
235 - def numpy_array_to_gst_buffer(self, frames): +
236 """ gstreamer buffer to numpy array conversion """ +237 buf = gst.Buffer(getbuffer(frames)) +238 return buf +
239 +
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.api.gstreamer.FileDecoder-class.html b/doc/epydoc/timeside.tests.api.gstreamer.FileDecoder-class.html new file mode 100644 index 0000000..508533d --- /dev/null +++ b/doc/epydoc/timeside.tests.api.gstreamer.FileDecoder-class.html @@ -0,0 +1,894 @@ + + + + + timeside.tests.api.gstreamer.FileDecoder + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Package api :: + Module gstreamer :: + Class FileDecoder + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class FileDecoder

source code

+
+         object --+        
+                  |        
+component.Component --+    
+                      |    
+         core.Processor --+
+                          |
+                         FileDecoder
+
+ +
+

gstreamer-based decoder

+ + + + + + + + + + +
+ + + + + +
Nested Classes[hide private]
+
+

Inherited from core.Processor: + __metaclass__ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
setup(self, + channels=None, + samplerate=None, + nframes=None)
+ Allocate internal resources and reset state, so that this processor + is ready for a new run.
+ source code + +
+ +
+   + + + + + + +
channels(self)
+ Number of channels in the data returned by process().
+ source code + +
+ +
+   + + + + + + +
samplerate(self)
+ Samplerate of the data returned by process().
+ source code + +
+ +
+   + + + + + + +
nframes(self)
+ The total number of frames that this processor can output, or None if + the duration is unknown.
+ source code + +
+ +
+   + + + + + + +
process(self, + frames=None, + eod=False)
+ Process input frames and return a (output_frames, eod) tuple.
+ source code + +
+ +
+   + + + + + + +
release(self)
+ Release resources owned by this processor.
+ source code + +
+ +
+   + + + + + + +
__init__(self, + uri)
+ Create a new decoder for filename.
+ source code + +
+ +
+   + + + + + + +
format(self)
+ Return a user-friendly file format string
+ source code + +
+ +
+   + + + + + + +
encoding(self)
+ Return a user-friendly encoding string
+ source code + +
+ +
+   + + + + + + +
resolution(self)
+ Return the sample width (8, 16, etc..) of original audio file/stream, + or None if not applicable/known
+ source code + +
+ +
+   + + + + + + +
metadata(self)
+ Return the metadata embedded into the encoded stream, if any.
+ source code + +
+ +
+   + + + + + + +
discover(self, + path)
+ gstreamer based helper function to get file attributes
+ source code + +
+ +
+   + + + + + + +
discovered(self, + d, + is_media)
+ gstreamer based helper executed upon discover() completion
+ source code + +
+ +
+   + + + + + + +
gst_buffer_to_numpy_array(self, + buf)
+ gstreamer buffer to numpy array conversion
+ source code + +
+ +
+

Inherited from core.Processor: + __del__, + __or__ +

+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Static Methods[hide private]
+
+   + + + + + + +
id()
+ Short alphanumeric, lower-case string which uniquely identify this + processor, suitable for use as an HTTP/GET argument value, in + filenames, etc...
+ source code + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
Class Variables[hide private]
+
+   + + MAX_DISCOVERY_TIME = 3000 +
+   + + audioformat = None +
+   + + audiochannels = None +
+   + + audiorate = None +
+   + + audionframes = None +
+   + + mimetype = '' +
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + +
+ + + + + +
Method Details[hide private]
+
+ +
+ +
+ + +
+

id() +
Static Method +

+
source code  +
+ +

Short alphanumeric, lower-case string which uniquely identify this + processor, suitable for use as an HTTP/GET argument value, in filenames, + etc...

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
+
+
+ +
+ +
+ + +
+

setup(self, + channels=None, + samplerate=None, + nframes=None) +

+
source code  +
+ +

Allocate internal resources and reset state, so that this processor is + ready for a new run.

+

The channels, samplerate and/or nframes arguments may be required by + processors which accept input. An error will occur if any of these + arguments is passed to an output-only processor such as a decoder.

+
+
Overrides: + core.Processor.setup +
(inherited documentation)
+ +
+
+
+ +
+ +
+ + +
+

channels(self) +

+
source code  +
+ +

Number of channels in the data returned by process(). May be different + from the number of channels passed to setup()

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
Overrides: + core.Processor.channels +
+
+
+
+ +
+ +
+ + +
+

samplerate(self) +

+
source code  +
+ +

Samplerate of the data returned by process(). May be different from + the samplerate passed to setup()

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
Overrides: + core.Processor.samplerate +
+
+
+
+ +
+ +
+ + +
+

nframes(self) +

+
source code  +
+ +

The total number of frames that this processor can output, or None if + the duration is unknown.

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
Overrides: + core.Processor.nframes +
+
+
+
+ +
+ +
+ + +
+

process(self, + frames=None, + eod=False) +

+
source code  +
+ +

Process input frames and return a (output_frames, eod) tuple. Both + input and output frames are 2D numpy arrays, where columns are channels, + and containing an undetermined number of frames. eod=True means that the + end-of-data has been reached.

+

Output-only processors (such as decoders) will raise an exception if + the frames argument is not None. All processors (even encoders) return + data, even if that means returning the input unchanged.

+

Warning: it is required to call setup() before this method.

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
Overrides: + core.Processor.process +
+
+
+
+ +
+ +
+ + +
+

release(self) +

+
source code  +
+ +

Release resources owned by this processor. The processor cannot be + used anymore after calling this method.

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
Overrides: + core.Processor.release +
+
+
+
+ +
+ +
+ + +
+

__init__(self, + uri) +
(Constructor) +

+
source code  +
+ +

Create a new decoder for filename.

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
Overrides: + object.__init__ +
+
+
+
+ +
+ +
+ + +
+

format(self) +

+
source code  +
+ +

Return a user-friendly file format string

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
+
+
+ +
+ +
+ + +
+

encoding(self) +

+
source code  +
+ +

Return a user-friendly encoding string

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
+
+
+ +
+ +
+ + +
+

resolution(self) +

+
source code  +
+ +

Return the sample width (8, 16, etc..) of original audio file/stream, + or None if not applicable/known

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
+
+
+ +
+ +
+ + +
+

metadata(self) +

+
source code  +
+ +

Return the metadata embedded into the encoded stream, if any.

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.api.gstreamer.WavEncoder-class.html b/doc/epydoc/timeside.tests.api.gstreamer.WavEncoder-class.html new file mode 100644 index 0000000..0245e5a --- /dev/null +++ b/doc/epydoc/timeside.tests.api.gstreamer.WavEncoder-class.html @@ -0,0 +1,636 @@ + + + + + timeside.tests.api.gstreamer.WavEncoder + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Package api :: + Module gstreamer :: + Class WavEncoder + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class WavEncoder

source code

+
+         object --+        
+                  |        
+component.Component --+    
+                      |    
+         core.Processor --+
+                          |
+                         WavEncoder
+
+ +
+

gstreamer-based encoder

+ + + + + + + + + + +
+ + + + + +
Nested Classes[hide private]
+
+

Inherited from core.Processor: + __metaclass__ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
__init__(self, + output)
+ x.__init__(...) initializes x; see x.__class__.__doc__ for signature
+ source code + +
+ +
+   + + + + + + +
setup(self, + channels=None, + samplerate=None, + nframes=None)
+ Allocate internal resources and reset state, so that this processor + is ready for a new run.
+ source code + +
+ +
+   + + + + + + +
set_metadata(self, + metadata)
+ Set the metadata to be embedded in the encoded output.
+ source code + +
+ +
+   + + + + + + +
process(self, + frames, + eod=False)
+ Process input frames and return a (output_frames, eod) tuple.
+ source code + +
+ +
+   + + + + + + +
numpy_array_to_gst_buffer(self, + frames)
+ gstreamer buffer to numpy array conversion
+ source code + +
+ +
+

Inherited from core.Processor: + __del__, + __or__, + channels, + nframes, + release, + samplerate +

+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + + + + + + + + + + +
+ + + + + +
Static Methods[hide private]
+
+   + + + + + + +
id()
+ Short alphanumeric, lower-case string which uniquely identify this + processor, suitable for use as an HTTP/GET argument value, in + filenames, etc...
+ source code + +
+ +
+   + + + + + + +
description()
+ Return a string describing what this encode format provides, is good + for, etc...
+ source code + +
+ +
+   + + + + + + +
file_extension()
+ Return the filename extension corresponding to this encode format
+ source code + +
+ +
+   + + + + + + +
mime_type()
+ Return the mime type corresponding to this encode format
+ source code + +
+ +
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + +
+ + + + + +
Method Details[hide private]
+
+ +
+ +
+ + +
+

__init__(self, + output) +
(Constructor) +

+
source code  +
+ +

x.__init__(...) initializes x; see x.__class__.__doc__ for + signature

+
+
Overrides: + object.__init__ +
(inherited documentation)
+ +
+
+
+ +
+ +
+ + +
+

setup(self, + channels=None, + samplerate=None, + nframes=None) +

+
source code  +
+ +

Allocate internal resources and reset state, so that this processor is + ready for a new run.

+

The channels, samplerate and/or nframes arguments may be required by + processors which accept input. An error will occur if any of these + arguments is passed to an output-only processor such as a decoder.

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
Overrides: + core.Processor.setup +
+
+
+
+ +
+ +
+ + +
+

id() +
Static Method +

+
source code  +
+ +

Short alphanumeric, lower-case string which uniquely identify this + processor, suitable for use as an HTTP/GET argument value, in filenames, + etc...

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
+
+
+ +
+ +
+ + +
+

description() +
Static Method +

+
source code  +
+ +

Return a string describing what this encode format provides, is good + for, etc... The description is meant to help the end user decide what + format is good for him/her

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
+
+
+ +
+ +
+ + +
+

file_extension() +
Static Method +

+
source code  +
+ +

Return the filename extension corresponding to this encode format

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
+
+
+ +
+ +
+ + +
+

mime_type() +
Static Method +

+
source code  +
+ +

Return the mime type corresponding to this encode format

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
+
+
+ +
+ +
+ + +
+

set_metadata(self, + metadata) +

+
source code  +
+ +

Set the metadata to be embedded in the encoded output.

+

In non-streaming mode, this method updates the metadata directly into + the output file, without re-encoding the audio data, provided this file + already exists.

+

It isn't required to call this method, but if called, it must be + before process().

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
+
+
+ +
+ +
+ + +
+

process(self, + frames, + eod=False) +

+
source code  +
+ +

Process input frames and return a (output_frames, eod) tuple. Both + input and output frames are 2D numpy arrays, where columns are channels, + and containing an undetermined number of frames. eod=True means that the + end-of-data has been reached.

+

Output-only processors (such as decoders) will raise an exception if + the frames argument is not None. All processors (even encoders) return + data, even if that means returning the input unchanged.

+

Warning: it is required to call setup() before this method.

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
Overrides: + core.Processor.process +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.api.test_lolevel-module.html b/doc/epydoc/timeside.tests.api.test_lolevel-module.html new file mode 100644 index 0000000..dd9b206 --- /dev/null +++ b/doc/epydoc/timeside.tests.api.test_lolevel-module.html @@ -0,0 +1,289 @@ + + + + + timeside.tests.api.test_lolevel + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Package api :: + Module test_lolevel + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Module test_lolevel

source code

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
Variables[hide private]
+
+   + + use_gst = 0 +
+   + + source = '/home/momo/dev/timeside/timeside/tests/api/../sample... +
+   + + decoder = Decoder(source) +
+   + + analyzer = examples.MaxLevel() +
+   + + nchannels = 1 +
+   + + samplerate = 44100 +
+   + + nframes = 182046 +
+   + + max_level = 0.612457275390625 +
+   + + destination = 'normalized.wav' +
+   + + encoder = Encoder(destination) +
+   + + gain = 1.4694902586078031 +
+   + + effect = examples.Gain(gain) +
+   + + eod = True +
+   + + frames = array([[ 0.0139465... +
+ + + + + + +
+ + + + + +
Variables Details[hide private]
+
+ +
+ +
+

source

+ +
+
+
+
Value:
+
+'/home/momo/dev/timeside/timeside/tests/api/../samples/guitar.wav'
+
+
+
+
+
+ +
+ +
+

frames

+ +
+
+
+
Value:
+
+array([[ 0.01394653],
+       [ 0.01077271],
+       [ 0.00872803],
+       ..., 
+       [ 0.        ],
+       [ 0.        ],
+       [ 0.        ]])
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.api.test_lolevel-pysrc.html b/doc/epydoc/timeside.tests.api.test_lolevel-pysrc.html new file mode 100644 index 0000000..e2eb2df --- /dev/null +++ b/doc/epydoc/timeside.tests.api.test_lolevel-pysrc.html @@ -0,0 +1,553 @@ + + + + + timeside.tests.api.test_lolevel + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Package api :: + Module test_lolevel + + + + + + +
[hide private]
[frames] | no frames]
+
+

Source Code for Module timeside.tests.api.test_lolevel

+
+ 1  from timeside.tests.api import examples 
+ 2   
+ 3  use_gst = 0 
+ 4  if use_gst: 
+ 5      from timeside.tests.api.gstreamer import FileDecoder, WavEncoder 
+ 6  else: 
+ 7      from timeside.tests.api.examples import FileDecoder, WavEncoder 
+ 8   
+ 9  import sys 
+10  if len(sys.argv) > 1: 
+11      source = sys.argv[1] 
+12  else: 
+13      import os.path 
+14      source= os.path.join (os.path.dirname(__file__),  "../samples/guitar.wav") 
+15   
+16  Decoder = FileDecoder 
+17  print "Creating decoder with id=%s for: %s" % (Decoder.id(), source) 
+18  decoder    = Decoder(source) 
+19  analyzer = examples.MaxLevel() 
+20  decoder.setup() 
+21  nchannels  = decoder.channels() 
+22  samplerate = decoder.samplerate() 
+23  nframes = decoder.nframes() 
+24  analyzer.setup(nchannels, samplerate) 
+25   
+26  print "Stats: duration=%f, nframes=%d, nchannels=%d, samplerate=%d, resolution=%d" % ( 
+27          nframes / float(samplerate), nframes, nchannels, samplerate, decoder.resolution()) 
+28   
+29  while True: 
+30      frames, eod = decoder.process() 
+31      analyzer.process(frames, eod) 
+32      if eod: 
+33          break 
+34   
+35  max_level = analyzer.result() 
+36  print "Max level: %f" % max_level 
+37   
+38  destination = "normalized.wav" 
+39  Encoder = WavEncoder 
+40  print "Creating encoder with id=%s for: %s" % (Encoder.id(), destination) 
+41  encoder = Encoder(destination) 
+42   
+43  gain = 1 
+44  if max_level > 0: 
+45      gain = 0.9 / max_level 
+46   
+47  effect = examples.Gain(gain) 
+48   
+49  decoder.setup() 
+50  effect.setup(decoder.channels(), decoder.samplerate()) 
+51  encoder.setup(effect.channels(), effect.samplerate()) 
+52   
+53  print "Applying effect id=%s with gain=%f" % (effect.id(), gain) 
+54   
+55  while True: 
+56      frames, eod = decoder.process() 
+57      encoder.process(*effect.process(frames, eod)) 
+58      if eod: 
+59          break 
+60   
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.api.test_pipe-module.html b/doc/epydoc/timeside.tests.api.test_pipe-module.html new file mode 100644 index 0000000..1fe00b7 --- /dev/null +++ b/doc/epydoc/timeside.tests.api.test_pipe-module.html @@ -0,0 +1,224 @@ + + + + + timeside.tests.api.test_pipe + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Package api :: + Module test_pipe + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Module test_pipe

source code

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
Variables[hide private]
+
+   + + use_gst = 1 +
+   + + source = '/home/momo/dev/timeside/timeside/tests/api/../sample... +
+   + + decoder = FileDecoder(source) +
+   + + maxlevel = examples.MaxLevel() +
+   + + duration = examples.Duration() +
+   + + gain = examples.Gain(gain) +
+   + + encoder = WavEncoder("normalized.wav") +
+   + + fixed = examples.FixedInputProcessor() +
+   + + subpipe = gain | fixed | maxlevel +
+ + + + + + +
+ + + + + +
Variables Details[hide private]
+
+ +
+ +
+

source

+ +
+
+
+
Value:
+
+'/home/momo/dev/timeside/timeside/tests/api/../samples/guitar.wav'
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.api.test_pipe-pysrc.html b/doc/epydoc/timeside.tests.api.test_pipe-pysrc.html new file mode 100644 index 0000000..3421aa3 --- /dev/null +++ b/doc/epydoc/timeside.tests.api.test_pipe-pysrc.html @@ -0,0 +1,236 @@ + + + + + timeside.tests.api.test_pipe + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Package api :: + Module test_pipe + + + + + + +
[hide private]
[frames] | no frames]
+
+

Source Code for Module timeside.tests.api.test_pipe

+
+ 1  # -*- coding: utf-8 -*- 
+ 2  from timeside.tests.api import examples 
+ 3  from timeside.core import * 
+ 4  from timeside.api import * 
+ 5  from sys import stdout 
+ 6   
+ 7  use_gst = 1 
+ 8  if use_gst: 
+ 9      from timeside.tests.api.gstreamer import FileDecoder, WavEncoder 
+10  else: 
+11      from timeside.tests.api.examples import FileDecoder, WavEncoder 
+12   
+13  import os.path 
+14  source = os.path.join(os.path.dirname(__file__),  "../samples/guitar.wav") 
+15   
+16  print "Normalizing %s" % source 
+17  decoder  = FileDecoder(source) 
+18  maxlevel = examples.MaxLevel() 
+19  duration = examples.Duration() 
+20   
+21  (decoder | maxlevel | duration).run() 
+22   
+23  gain = 1 
+24  if maxlevel.result() > 0: 
+25      gain = 0.9 / maxlevel.result() 
+26   
+27  print "input maxlevel: %f" % maxlevel.result() 
+28  print "gain: %f" % gain 
+29  print "duration: %f %s" % (duration.result(), duration.unit()) 
+30   
+31  gain     = examples.Gain(gain) 
+32  encoder  = WavEncoder("normalized.wav") 
+33  fixed    = examples.FixedInputProcessor() 
+34   
+35  subpipe  = gain | fixed | maxlevel 
+36   
+37  (decoder | subpipe | encoder).run() 
+38   
+39  print "output maxlevel: %f" % maxlevel.result() 
+40   
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.api.test_pipe_spectrogram-module.html b/doc/epydoc/timeside.tests.api.test_pipe_spectrogram-module.html new file mode 100644 index 0000000..87c0a32 --- /dev/null +++ b/doc/epydoc/timeside.tests.api.test_pipe_spectrogram-module.html @@ -0,0 +1,216 @@ + + + + + timeside.tests.api.test_pipe_spectrogram + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Package api :: + Module test_pipe_spectrogram + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Module test_pipe_spectrogram

source code

+ + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
Variables[hide private]
+
+   + + use_gst = 1 +
+   + + image_file = './spectrogram.png' +
+   + + source = '/home/momo/dev/timeside/timeside/tests/api/../sample... +
+   + + decoder = FileDecoder(source) +
+   + + spectrogram = examples.Spectrogram(width= 1024, height= 256, o... +
+ + + + + + +
+ + + + + +
Variables Details[hide private]
+
+ +
+ +
+

source

+ +
+
+
+
Value:
+
+'/home/momo/dev/timeside/timeside/tests/api/../samples/sweep.wav'
+
+
+
+
+
+ +
+ +
+

spectrogram

+ +
+
+
+
Value:
+
+examples.Spectrogram(width= 1024, height= 256, output= image_file, bg_\
+color= (0, 0, 0), color_scheme= 'default')
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.api.test_pipe_spectrogram-pysrc.html b/doc/epydoc/timeside.tests.api.test_pipe_spectrogram-pysrc.html new file mode 100644 index 0000000..d8dc391 --- /dev/null +++ b/doc/epydoc/timeside.tests.api.test_pipe_spectrogram-pysrc.html @@ -0,0 +1,203 @@ + + + + + timeside.tests.api.test_pipe_spectrogram + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Package api :: + Module test_pipe_spectrogram + + + + + + +
[hide private]
[frames] | no frames]
+
+

Source Code for Module timeside.tests.api.test_pipe_spectrogram

+
+ 1  # -*- coding: utf-8 -*- 
+ 2  from timeside.tests.api import examples 
+ 3  from timeside.core import * 
+ 4  from timeside.api import * 
+ 5  import os.path 
+ 6   
+ 7  use_gst = 1 
+ 8  if use_gst: 
+ 9      from timeside.tests.api.gstreamer import FileDecoder, WavEncoder 
+10  else: 
+11      from timeside.tests.api.examples import FileDecoder, WavEncoder 
+12   
+13  image_file = './spectrogram.png' 
+14   
+15  # mono 
+16  #source = os.path.join(os.path.dirname(__file__), "../samples/sweep_source.wav") 
+17  #source = os.path.join(os.path.dirname(__file__), "../samples/guitar.wav") 
+18  #source = os.path.join(os.path.dirname(__file__), "../samples/sweep_source.mp3") 
+19   
+20  # stereo 
+21  source = os.path.join(os.path.dirname(__file__), "../samples/sweep.wav") 
+22  #source = os.path.join(os.path.dirname(__file__), "../samples/guitar_stereo.wav") 
+23  #source = os.path.join(os.path.dirname(__file__), "/home/momo/music/flac/Isabelle Aboulker/Mon imagier des instruments/16 - Isabelle Aboulker - 16 instru.flac") 
+24  #source = os.path.join(os.path.dirname(__file__), "/home/momo/music/ogg/Emilie_Jolie/01 - Henri Salvador - Prologue.ogg") 
+25   
+26  decoder  = FileDecoder(source) 
+27  spectrogram = examples.Spectrogram(width=1024, height=256, output=image_file, bg_color=(0,0,0), color_scheme='default') 
+28   
+29  (decoder | spectrogram).run() 
+30   
+31  print 'frames per pixel = ', spectrogram.graph.samples_per_pixel 
+32  print "render spectrogram to: %s" % image_file 
+33  spectrogram.render() 
+34   
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.api.test_pipe_waveform-module.html b/doc/epydoc/timeside.tests.api.test_pipe_waveform-module.html new file mode 100644 index 0000000..3a221b0 --- /dev/null +++ b/doc/epydoc/timeside.tests.api.test_pipe_waveform-module.html @@ -0,0 +1,218 @@ + + + + + timeside.tests.api.test_pipe_waveform + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Package api :: + Module test_pipe_waveform + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Module test_pipe_waveform

source code

+ + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
Variables[hide private]
+
+   + + use_gst = 1 +
+   + + image_file = './waveform.png' +
+   + + source = '/home/momo/music/flac/Isabelle Aboulker/Mon imagier ... +
+   + + decoder = FileDecoder(source) +
+   + + waveform = examples.Waveform(width= 1024, height= 256, output=... +
+ + + + + + +
+ + + + + +
Variables Details[hide private]
+
+ +
+ +
+

source

+ +
+
+
+
Value:
+
+'/home/momo/music/flac/Isabelle Aboulker/Mon imagier des instruments/1\
+6 - Isabelle Aboulker - 16 instru.flac'
+
+
+
+
+
+ +
+ +
+

waveform

+ +
+
+
+
Value:
+
+examples.Waveform(width= 1024, height= 256, output= image_file, bg_col\
+or= (0, 0, 0), color_scheme= 'default')
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.api.test_pipe_waveform-pysrc.html b/doc/epydoc/timeside.tests.api.test_pipe_waveform-pysrc.html new file mode 100644 index 0000000..bcb19ac --- /dev/null +++ b/doc/epydoc/timeside.tests.api.test_pipe_waveform-pysrc.html @@ -0,0 +1,204 @@ + + + + + timeside.tests.api.test_pipe_waveform + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Package api :: + Module test_pipe_waveform + + + + + + +
[hide private]
[frames] | no frames]
+
+

Source Code for Module timeside.tests.api.test_pipe_waveform

+
+ 1  # -*- coding: utf-8 -*- 
+ 2  from timeside.tests.api import examples 
+ 3  from timeside.core import * 
+ 4  from timeside.api import * 
+ 5  import os.path 
+ 6   
+ 7  use_gst = 1 
+ 8  if use_gst: 
+ 9      from timeside.tests.api.gstreamer import FileDecoder, WavEncoder 
+10  else: 
+11      from timeside.tests.api.examples import FileDecoder, WavEncoder 
+12   
+13  image_file = './waveform.png' 
+14   
+15  # mono 
+16  #source = os.path.join(os.path.dirname(__file__), "../samples/sweep_source.wav") 
+17  #source = os.path.join(os.path.dirname(__file__), "../samples/guitar.wav") 
+18  #source = os.path.join(os.path.dirname(__file__), "../samples/sweep_source.mp3") 
+19  #source = os.path.join(os.path.dirname(__file__), "../samples/drums.ogg") 
+20   
+21  # stereo 
+22  #source = os.path.join(os.path.dirname(__file__), "../samples/sweep.wav") 
+23  #source = os.path.join(os.path.dirname(__file__), "../samples/guitar_stereo.wav") 
+24  source = os.path.join(os.path.dirname(__file__), "/home/momo/music/flac/Isabelle Aboulker/Mon imagier des instruments/16 - Isabelle Aboulker - 16 instru.flac") 
+25  #source = os.path.join(os.path.dirname(__file__), "/home/momo/music/ogg/Emilie_Jolie/01 - Henri Saogg") 
+26   
+27  decoder  = FileDecoder(source) 
+28  waveform = examples.Waveform(width=1024, height=256, output=image_file, bg_color=(0,0,0), color_scheme='default') 
+29   
+30  (decoder | waveform).run() 
+31   
+32  print 'frames per pixel = ', waveform.graph.samples_per_pixel 
+33  print "render waveform to: %s" % image_file 
+34  waveform.render() 
+35   
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.listprocessors-module.html b/doc/epydoc/timeside.tests.listprocessors-module.html new file mode 100644 index 0000000..cfa5ffc --- /dev/null +++ b/doc/epydoc/timeside.tests.listprocessors-module.html @@ -0,0 +1,140 @@ + + + + + timeside.tests.listprocessors + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Module listprocessors + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Module listprocessors

source code

+ + + + + + + + + +
+ + + + + +
Functions[hide private]
+
+   + + + + + + +
list_processors(interface, + prefix='') + source code + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.listprocessors-pysrc.html b/doc/epydoc/timeside.tests.listprocessors-pysrc.html new file mode 100644 index 0000000..852ad29 --- /dev/null +++ b/doc/epydoc/timeside.tests.listprocessors-pysrc.html @@ -0,0 +1,155 @@ + + + + + timeside.tests.listprocessors + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Module listprocessors + + + + + + +
[hide private]
[frames] | no frames]
+
+

Source Code for Module timeside.tests.listprocessors

+
+ 1  import timeside 
+ 2   
+
3 -def list_processors(interface, prefix=""): +
4 print prefix + interface.__name__ + 5 subinterfaces = interface.__subclasses__() + 6 for i in subinterfaces: + 7 list_processors(i, prefix + " ") + 8 processors = timeside.processors(interface, False) + 9 for p in processors: +10 print prefix + " %s [%s]" % (p.__name__, p.id()) +
11 +12 list_processors(timeside.api.IProcessor) +13 +
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.test-module.html b/doc/epydoc/timeside.tests.test-module.html new file mode 100644 index 0000000..d640a76 --- /dev/null +++ b/doc/epydoc/timeside.tests.test-module.html @@ -0,0 +1,185 @@ + + + + + timeside.tests.test + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Module test + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Module test

source code

+ + + + + + + + + + + + + + + + + + +
+ + + + + +
Classes[hide private]
+
+   + + TestAnalyzers +
+   + + TestDecoders +
+   + + TestEncoders +
+   + + TestGraphers +
+ + + + + + + + + +
+ + + + + +
Functions[hide private]
+
+   + + + + + + +
mimetype(path) + source code + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.test-pysrc.html b/doc/epydoc/timeside.tests.test-pysrc.html new file mode 100644 index 0000000..87ad0e8 --- /dev/null +++ b/doc/epydoc/timeside.tests.test-pysrc.html @@ -0,0 +1,889 @@ + + + + + timeside.tests.test + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Module test + + + + + + +
[hide private]
[frames] | no frames]
+
+

Source Code for Module timeside.tests.test

+
+  1  #!/usr/bin/python 
+  2  # -*- coding: utf-8 -*- 
+  3   
+  4  import os 
+  5  import timeside 
+  6  import magic 
+  7  from timeside.core import * 
+  8   
+  9   
+
10 -class TestAnalyzers: +
11 analyzers = processors(timeside.api.IAnalyzer) + 12 +
13 - def list(self): +
14 analyzers = [] + 15 for analyzer_class in self.analyzers: + 16 # FIXME: should access the name, id and unit member statically + 17 # there should be no need to instantiate analyzer_class + 18 # eg: access directly analyzer_class.name(), etc... + 19 # + 20 # This remark is true at many places in this file + 21 analyzer = analyzer_class() + 22 analyzers.append({'name':analyzer.name(), + 23 'id':analyzer.id(), + 24 'unit':analyzer.unit(), + 25 }) + 26 print analyzers +
27 +
28 - def run(self, media): +
29 print '\n=== Analyzer testing ===\n' + 30 for analyzer_class in self.analyzers: + 31 analyzer = analyzer_class() + 32 id = analyzer.id() + 33 value = analyzer.render(media) + 34 print id + ' = ' + str(value) + ' ' + analyzer.unit() +
35 + 36 +
37 -class TestDecoders: +
38 decoders = processors(timeside.api.IDecoder) + 39 +
40 - def list(self): +
41 decoders_list = [] + 42 for decoder_class in self.decoders: + 43 decoder = decoder_class() + 44 decoders_list.append({'format': decoder.format(), + 45 'mime_type': decoder.mime_type(), + 46 'file_extension': decoder.file_extension(), + 47 }) + 48 print decoders_list +
49 +
50 - def get_decoder(self, mime_type): +
51 for decoder_class in self.decoders: + 52 decoder = decoder_class() + 53 if decoder.mime_type() == mime_type: + 54 return decoder +
55 +
56 - def export(self, media_dir): +
57 files = os.listdir(media_dir) + 58 for file in files: + 59 media = media_dir + os.sep + file + 60 mime = mimetype(media) + 61 print mime + 62 file_ext = file.split('.')[-1] + 63 decoder = self.get_decoder(mime) + 64 if decoder: + 65 stream = decoder.process(media) + 66 #print decoder.command + 67 file_path = 'results/sweep' + '_' + file_ext + '.wav' + 68 f = open(file_path, 'w') + 69 for chunk in stream: + 70 f.write(chunk) + 71 f.flush() + 72 f.close() +
73 +
74 -class TestEncoders: +
75 encoders = processors(timeside.api.IEncoder) + 76 +
77 - def list(self): +
78 encoders = [] + 79 for encoder_class in self.encoders: + 80 encoder = encoder_class() + 81 encoders.append({'format': encoder.format(), + 82 'mime_type': encoder.mime_type(), + 83 }) + 84 print encoders +
85 +
86 - def get_encoder(self, mime_type): +
87 for encoder_class in self.encoders: + 88 encoder = encoder_class() + 89 if encoder.mime_type() == mime_type: + 90 return encoder +
91 +
92 - def run(self, source, metadata): +
93 print '\n=== Encoder testing ===\n' + 94 for encoder_class in self.encoders: + 95 print '==================================' + 96 encoder = encoder_class() + 97 mime = mimetype(source) + 98 format = encoder.format() + 99 decoders = TestDecoders() +100 decoder = decoders.get_decoder(mime) +101 decoded = decoder.process(source) +102 ext = encoder.file_extension() +103 stream = encoder.process(decoded, metadata) +104 file_path = 'results/sweep' + '.' + ext +105 file = open(file_path, 'w') +106 for chunk in stream: +107 file.write(chunk) +108 print 'Sound exported to :' + file_path +109 file.close() +110 print '==================================\n' +
111 +112 +
113 -class TestGraphers: +
114 graphers = processors(timeside.api.IGrapher) +115 +
116 - def list(self): +
117 graphers = [] +118 for grapher_class in self.graphers: +119 grapher = grapher_class() +120 graphers.append({'id':grapher.id(), +121 'name':grapher.name(), +122 }) +123 print graphers +
124 +
125 - def run(self, media): +
126 print '\n=== Grapher testing ===\n' +127 for grapher_class in self.graphers: +128 grapher = grapher_class() +129 id = grapher.id() +130 image = grapher.render(media) +131 file_path = 'results/'+id+'.png' +132 file = open(file_path, 'w') +133 for chunk in image: +134 file.write(chunk) +135 print 'Image exported to :' + file_path +136 file.close() +
137 +
138 -def mimetype(path): +
139 if hasattr(magic, "Magic"): +140 if not hasattr(mimetype, "magic"): +141 mimetype.magic = magic.Magic(mime=True) +142 magic_file = mimetype.magic.from_file(path) +143 mime = magic_file.lower() +144 else: +145 if not hasattr(mimetype, "magic"): +146 mimetype.magic = magic.open(magic.MAGIC_MIME) +147 mimetype.magic.load() +148 mime = mimetype.magic.file(path).lower() +149 +150 return mime +
151 +152 if __name__ == '__main__': +153 sample = 'samples/sweep_source.wav' +154 metadata = (('creator', 'yomguy'), ('date', '2009'), ('name', 'test')) +155 a = TestAnalyzers() +156 d = TestDecoders() +157 e = TestEncoders() +158 #g = TestGraphers() +159 a.list() +160 d.list() +161 e.list() +162 #g.list() +163 a.run(sample) +164 #g.run(sample) +165 e.run(sample, metadata) +166 d.export('samples/') +167 +
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.test.TestAnalyzers-class.html b/doc/epydoc/timeside.tests.test.TestAnalyzers-class.html new file mode 100644 index 0000000..542d178 --- /dev/null +++ b/doc/epydoc/timeside.tests.test.TestAnalyzers-class.html @@ -0,0 +1,235 @@ + + + + + timeside.tests.test.TestAnalyzers + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Module test :: + Class TestAnalyzers + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class TestAnalyzers

source code

+ + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
list(self) + source code + +
+ +
+   + + + + + + +
run(self, + media) + source code + +
+ +
+ + + + + + + + + +
+ + + + + +
Class Variables[hide private]
+
+   + + analyzers = [<class 'timeside.analyze.channels.ChannelAnalyser... +
+ + + + + + +
+ + + + + +
Class Variable Details[hide private]
+
+ +
+ +
+

analyzers

+ +
+
+
+
Value:
+
+[<class 'timeside.analyze.channels.ChannelAnalyser'>,
+ <class 'timeside.analyze.format.FormatAnalyser'>,
+ <class 'timeside.analyze.encoding.EncodingAnalyser'>,
+ <class 'timeside.analyze.resolution.ResolutionAnalyser'>,
+ <class 'timeside.analyze.samplerate.SampleRateAnalyzer'>,
+ <class 'timeside.analyze.duration.DurationAnalyzer'>,
+ <class 'timeside.analyze.max_level.MaxLevelAnalyzer'>,
+ <class 'timeside.analyze.mean_level.MeanLevelAnalyser'>,
+...
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.test.TestDecoders-class.html b/doc/epydoc/timeside.tests.test.TestDecoders-class.html new file mode 100644 index 0000000..e832666 --- /dev/null +++ b/doc/epydoc/timeside.tests.test.TestDecoders-class.html @@ -0,0 +1,242 @@ + + + + + timeside.tests.test.TestDecoders + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Module test :: + Class TestDecoders + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class TestDecoders

source code

+ + + + + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
list(self) + source code + +
+ +
+   + + + + + + +
get_decoder(self, + mime_type) + source code + +
+ +
+   + + + + + + +
export(self, + media_dir) + source code + +
+ +
+ + + + + + + + + +
+ + + + + +
Class Variables[hide private]
+
+   + + decoders = [<class 'timeside.decode.ogg.OggDecoder'>, <class '... +
+ + + + + + +
+ + + + + +
Class Variable Details[hide private]
+
+ +
+ +
+

decoders

+ +
+
+
+
Value:
+
+[<class 'timeside.decode.ogg.OggDecoder'>,
+ <class 'timeside.decode.flac.FlacDecoder'>,
+ <class 'timeside.decode.wav.WavDecoder'>,
+ <class 'timeside.decode.mp3.Mp3Decoder'>]
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.test.TestEncoders-class.html b/doc/epydoc/timeside.tests.test.TestEncoders-class.html new file mode 100644 index 0000000..aedda28 --- /dev/null +++ b/doc/epydoc/timeside.tests.test.TestEncoders-class.html @@ -0,0 +1,243 @@ + + + + + timeside.tests.test.TestEncoders + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Module test :: + Class TestEncoders + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class TestEncoders

source code

+ + + + + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
list(self) + source code + +
+ +
+   + + + + + + +
get_encoder(self, + mime_type) + source code + +
+ +
+   + + + + + + +
run(self, + source, + metadata) + source code + +
+ +
+ + + + + + + + + +
+ + + + + +
Class Variables[hide private]
+
+   + + encoders = [<class 'timeside.encode.ogg.OggVorbisEncoder'>, <c... +
+ + + + + + +
+ + + + + +
Class Variable Details[hide private]
+
+ +
+ +
+

encoders

+ +
+
+
+
Value:
+
+[<class 'timeside.encode.ogg.OggVorbisEncoder'>,
+ <class 'timeside.encode.wav.WavEncoder'>,
+ <class 'timeside.encode.mp3.Mp3Encoder'>,
+ <class 'timeside.encode.flac.FlacEncoder'>]
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.test.TestGraphers-class.html b/doc/epydoc/timeside.tests.test.TestGraphers-class.html new file mode 100644 index 0000000..987cd4b --- /dev/null +++ b/doc/epydoc/timeside.tests.test.TestGraphers-class.html @@ -0,0 +1,223 @@ + + + + + timeside.tests.test.TestGraphers + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Module test :: + Class TestGraphers + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class TestGraphers

source code

+ + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
list(self) + source code + +
+ +
+   + + + + + + +
run(self, + media) + source code + +
+ +
+ + + + + + + + + +
+ + + + + +
Class Variables[hide private]
+
+   + + graphers = [<class 'timeside.grapher.waveform_audiolab.WaveFor... +
+ + + + + + +
+ + + + + +
Class Variable Details[hide private]
+
+ +
+ +
+

graphers

+ +
+
+
+
Value:
+
+[<class 'timeside.grapher.waveform_audiolab.WaveFormGrapherAudiolab'>,
+ <class 'timeside.grapher.spectrogram_audiolab.SpectrogramGrapherAudio\
+lab'>]
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.testcomponent-module.html b/doc/epydoc/timeside.tests.testcomponent-module.html new file mode 100644 index 0000000..4a6c644 --- /dev/null +++ b/doc/epydoc/timeside.tests.testcomponent-module.html @@ -0,0 +1,285 @@ + + + + + timeside.tests.testcomponent + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Module testcomponent + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Module testcomponent

source code

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
Classes[hide private]
+
+   + + TestComponentArchitecture
+ Test the component and interface system +
+   + + I1 +
+   + + I2 +
+   + + I3 +
+   + + I4 +
+   + + I5 +
+   + + I6 +
+   + + I7 +
+   + + I8 +
+   + + I9 +
+   + + I10 +
+   + + I11 +
+   + + C1 +
+   + + C2 +
+   + + C3 +
+   + + C4 +
+   + + C5 +
+   + + C6 +
+   + + C7 +
+   + + C8 +
+   + + C9 +
+   + + C10 +
+   + + C11 +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.testcomponent-pysrc.html b/doc/epydoc/timeside.tests.testcomponent-pysrc.html new file mode 100644 index 0000000..9f264b0 --- /dev/null +++ b/doc/epydoc/timeside.tests.testcomponent-pysrc.html @@ -0,0 +1,303 @@ + + + + + timeside.tests.testcomponent + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Module testcomponent + + + + + + +
[hide private]
[frames] | no frames]
+
+

Source Code for Module timeside.tests.testcomponent

+
+  1   
+  2  from timeside.component import * 
+  3  from timeside.tests import TestCase, TestRunner 
+  4  import unittest 
+  5   
+  6  __all__ = ['TestComponentArchitecture'] 
+
7 + 8 -class TestComponentArchitecture(TestCase): +
9 "Test the component and interface system" + 10 +
11 - def testOneInterface(self): +
12 "Test a component implementing one interface" + 13 self.assertSameList(implementations(I1), [C1]) +
14 +
15 - def testTwoInterfaces(self): +
16 "Test a component implementing two interfaces" + 17 self.assertSameList(implementations(I2), [C2]) + 18 self.assertSameList(implementations(I3), [C2]) +
19 +
20 - def testTwoImplementations(self): +
21 "Test an interface implemented by two components" + 22 self.assertSameList(implementations(I4), [C3, C4]) +
23 +
24 - def testInterfaceInheritance(self): +
25 "Test whether a component implements an interface's parent" + 26 self.assertSameList(implementations(I5), [C5]) +
27 +
29 "Test that a component doesn't implement the interface implemented by its parent" + 30 self.assertSameList(implementations(I7), [C6]) +
31 +
33 "Test implementation redundancy across inheritance" + 34 self.assertSameList(implementations(I8), [C8, C9]) +
35 +
36 - def testAbstractImplementation(self): +
37 "Test abstract implementation" + 38 self.assertSameList(implementations(I11), []) + 39 self.assertSameList(implementations(I11, abstract=True), [C11]) + 40 +
41 - def testInterfaceDoc(self): +
42 "Test @interfacedoc decorator" + 43 self.assertEquals(C10.test.__doc__, "testdoc") + 44 +
45 - def testInterfaceDocStatic(self): +
46 "Test @interfacedoc decorator on static method" + 47 self.assertEquals(C10.teststatic.__doc__, "teststaticdoc") + 48 +
49 - def testIntefaceDocReversed(self): +
50 "Test @interfacedoc on static method (decorators reversed)" + 51 + 52 try: + 53 + 54 class BogusDoc1(Component): + 55 implements(I10) + 56 + 57 @interfacedoc + 58 @staticmethod + 59 def teststatic(self): + 60 pass +
61 + 62 self.fail("No error raised with reversed decorators") + 63 + 64 except ComponentError: + 65 pass + 66 +
67 - def testInterfaceDocBadMethod(self): +
68 "Test @interfacedoc with unexistant method in interface" + 69 + 70 try: + 71 class BogusDoc2(Component): + 72 implements(I10) + 73 + 74 @interfacedoc + 75 def nosuchmethod(self): + 76 pass +
77 + 78 self.fail("No error raised when decorating an unexistant method") + 79 + 80 except ComponentError: + 81 pass + 82 +
83 -class I1(Interface): +
84 pass +
85 +
86 -class I2(Interface): +
87 pass +
88 +
89 -class I3(Interface): +
90 pass +
91 +
92 -class I4(Interface): +
93 pass +
94 +
95 -class I5(Interface): +
96 pass +
97 +
98 -class I6(I5): +
99 pass +
100 +
101 -class I7(Interface): +
102 pass +
103 +
104 -class I8(Interface): +
105 pass +
106 +
107 -class I9(I8): +
108 pass +
109 +
110 -class I10(Interface): +
111 - def test(self): +
112 """testdoc""" +
113 +114 @staticmethod +
115 - def teststatic(self): +
116 """teststaticdoc""" +
117 +
118 -class I11(Interface): +
119 pass +
120 +
121 -class C1(Component): +
122 implements(I1) +
123 +
124 -class C2(Component): +
125 implements(I2, I3) +
126 +
127 -class C3(Component): +
128 implements(I4) +
129 +
130 -class C4(Component): +
131 implements(I4) +
132 +
133 -class C5(Component): +
134 implements(I6) +
135 +
136 -class C6(Component): +
137 implements(I7) +
138 +
139 -class C7(C6): +
140 pass +
141 +
142 -class C8(Component): +
143 implements(I8) +
144 +
145 -class C9(Component): +
146 implements(I8, I9) +
147 +
148 -class C10(Component): +
149 implements(I10) +150 +151 @interfacedoc +
152 - def test(self): +
153 pass +
154 +155 @staticmethod +156 @interfacedoc +
157 - def teststatic(self): +
158 pass +
159 +
160 -class C11(Component): +
161 abstract() +162 implements(I11) +
163 +164 if __name__ == '__main__': +165 unittest.main(testRunner=TestRunner()) +166 +
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.testcomponent.C1-class.html b/doc/epydoc/timeside.tests.testcomponent.C1-class.html new file mode 100644 index 0000000..af52da3 --- /dev/null +++ b/doc/epydoc/timeside.tests.testcomponent.C1-class.html @@ -0,0 +1,199 @@ + + + + + timeside.tests.testcomponent.C1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Module testcomponent :: + Class C1 + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class C1

source code

+
+         object --+    
+                  |    
+component.Component --+
+                      |
+                     C1
+
+ +
+ + + + + + + + + +
+ + + + + +
Nested Classes[hide private]
+
+

Inherited from component.Component: + __metaclass__ +

+
+ + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __init__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.testcomponent.C10-class.html b/doc/epydoc/timeside.tests.testcomponent.C10-class.html new file mode 100644 index 0000000..698919e --- /dev/null +++ b/doc/epydoc/timeside.tests.testcomponent.C10-class.html @@ -0,0 +1,317 @@ + + + + + timeside.tests.testcomponent.C10 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Module testcomponent :: + Class C10 + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class C10

source code

+
+         object --+    
+                  |    
+component.Component --+
+                      |
+                     C10
+
+ +
+ + + + + + + + + +
+ + + + + +
Nested Classes[hide private]
+
+

Inherited from component.Component: + __metaclass__ +

+
+ + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
test(self)
+ testdoc
+ source code + +
+ +
+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __init__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Static Methods[hide private]
+
+   + + + + + + +
teststatic(self)
+ teststaticdoc
+ source code + +
+ +
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + +
+ + + + + +
Method Details[hide private]
+
+ +
+ +
+ + +
+

test(self) +

+
source code  +
+ +

testdoc

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
+
+
+ +
+ +
+ + +
+

teststatic(self) +
Static Method +

+
source code  +
+ +

teststaticdoc

+
+
Decorators:
+
    +
  • @interfacedoc
  • +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.testcomponent.C11-class.html b/doc/epydoc/timeside.tests.testcomponent.C11-class.html new file mode 100644 index 0000000..4797401 --- /dev/null +++ b/doc/epydoc/timeside.tests.testcomponent.C11-class.html @@ -0,0 +1,199 @@ + + + + + timeside.tests.testcomponent.C11 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Module testcomponent :: + Class C11 + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class C11

source code

+
+         object --+    
+                  |    
+component.Component --+
+                      |
+                     C11
+
+ +
+ + + + + + + + + +
+ + + + + +
Nested Classes[hide private]
+
+

Inherited from component.Component: + __metaclass__ +

+
+ + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __init__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.testcomponent.C2-class.html b/doc/epydoc/timeside.tests.testcomponent.C2-class.html new file mode 100644 index 0000000..09ac98d --- /dev/null +++ b/doc/epydoc/timeside.tests.testcomponent.C2-class.html @@ -0,0 +1,199 @@ + + + + + timeside.tests.testcomponent.C2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Module testcomponent :: + Class C2 + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class C2

source code

+
+         object --+    
+                  |    
+component.Component --+
+                      |
+                     C2
+
+ +
+ + + + + + + + + +
+ + + + + +
Nested Classes[hide private]
+
+

Inherited from component.Component: + __metaclass__ +

+
+ + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __init__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.testcomponent.C3-class.html b/doc/epydoc/timeside.tests.testcomponent.C3-class.html new file mode 100644 index 0000000..c621849 --- /dev/null +++ b/doc/epydoc/timeside.tests.testcomponent.C3-class.html @@ -0,0 +1,199 @@ + + + + + timeside.tests.testcomponent.C3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Module testcomponent :: + Class C3 + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class C3

source code

+
+         object --+    
+                  |    
+component.Component --+
+                      |
+                     C3
+
+ +
+ + + + + + + + + +
+ + + + + +
Nested Classes[hide private]
+
+

Inherited from component.Component: + __metaclass__ +

+
+ + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __init__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.testcomponent.C4-class.html b/doc/epydoc/timeside.tests.testcomponent.C4-class.html new file mode 100644 index 0000000..cb84bb5 --- /dev/null +++ b/doc/epydoc/timeside.tests.testcomponent.C4-class.html @@ -0,0 +1,199 @@ + + + + + timeside.tests.testcomponent.C4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Module testcomponent :: + Class C4 + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class C4

source code

+
+         object --+    
+                  |    
+component.Component --+
+                      |
+                     C4
+
+ +
+ + + + + + + + + +
+ + + + + +
Nested Classes[hide private]
+
+

Inherited from component.Component: + __metaclass__ +

+
+ + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __init__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.testcomponent.C5-class.html b/doc/epydoc/timeside.tests.testcomponent.C5-class.html new file mode 100644 index 0000000..8d2e08a --- /dev/null +++ b/doc/epydoc/timeside.tests.testcomponent.C5-class.html @@ -0,0 +1,199 @@ + + + + + timeside.tests.testcomponent.C5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Module testcomponent :: + Class C5 + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class C5

source code

+
+         object --+    
+                  |    
+component.Component --+
+                      |
+                     C5
+
+ +
+ + + + + + + + + +
+ + + + + +
Nested Classes[hide private]
+
+

Inherited from component.Component: + __metaclass__ +

+
+ + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __init__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.testcomponent.C6-class.html b/doc/epydoc/timeside.tests.testcomponent.C6-class.html new file mode 100644 index 0000000..76f2e37 --- /dev/null +++ b/doc/epydoc/timeside.tests.testcomponent.C6-class.html @@ -0,0 +1,205 @@ + + + + + timeside.tests.testcomponent.C6 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Module testcomponent :: + Class C6 + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class C6

source code

+
+         object --+    
+                  |    
+component.Component --+
+                      |
+                     C6
+
+ +
Known Subclasses:
+
+ +
+ +
+ + + + + + + + + +
+ + + + + +
Nested Classes[hide private]
+
+

Inherited from component.Component: + __metaclass__ +

+
+ + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __init__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.testcomponent.C7-class.html b/doc/epydoc/timeside.tests.testcomponent.C7-class.html new file mode 100644 index 0000000..748a319 --- /dev/null +++ b/doc/epydoc/timeside.tests.testcomponent.C7-class.html @@ -0,0 +1,201 @@ + + + + + timeside.tests.testcomponent.C7 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Module testcomponent :: + Class C7 + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class C7

source code

+
+         object --+        
+                  |        
+component.Component --+    
+                      |    
+                     C6 --+
+                          |
+                         C7
+
+ +
+ + + + + + + + + +
+ + + + + +
Nested Classes[hide private]
+
+

Inherited from component.Component: + __metaclass__ +

+
+ + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __init__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.testcomponent.C8-class.html b/doc/epydoc/timeside.tests.testcomponent.C8-class.html new file mode 100644 index 0000000..1d5c2e3 --- /dev/null +++ b/doc/epydoc/timeside.tests.testcomponent.C8-class.html @@ -0,0 +1,199 @@ + + + + + timeside.tests.testcomponent.C8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Module testcomponent :: + Class C8 + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class C8

source code

+
+         object --+    
+                  |    
+component.Component --+
+                      |
+                     C8
+
+ +
+ + + + + + + + + +
+ + + + + +
Nested Classes[hide private]
+
+

Inherited from component.Component: + __metaclass__ +

+
+ + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __init__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.testcomponent.C9-class.html b/doc/epydoc/timeside.tests.testcomponent.C9-class.html new file mode 100644 index 0000000..a3d0749 --- /dev/null +++ b/doc/epydoc/timeside.tests.testcomponent.C9-class.html @@ -0,0 +1,199 @@ + + + + + timeside.tests.testcomponent.C9 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Module testcomponent :: + Class C9 + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class C9

source code

+
+         object --+    
+                  |    
+component.Component --+
+                      |
+                     C9
+
+ +
+ + + + + + + + + +
+ + + + + +
Nested Classes[hide private]
+
+

Inherited from component.Component: + __metaclass__ +

+
+ + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __init__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.testcomponent.I1-class.html b/doc/epydoc/timeside.tests.testcomponent.I1-class.html new file mode 100644 index 0000000..7121459 --- /dev/null +++ b/doc/epydoc/timeside.tests.testcomponent.I1-class.html @@ -0,0 +1,174 @@ + + + + + timeside.tests.testcomponent.I1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Module testcomponent :: + Class I1 + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class I1

source code

+
+         object --+    
+                  |    
+component.Interface --+
+                      |
+                     I1
+
+ +
+ + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __init__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.testcomponent.I10-class.html b/doc/epydoc/timeside.tests.testcomponent.I10-class.html new file mode 100644 index 0000000..69e80b7 --- /dev/null +++ b/doc/epydoc/timeside.tests.testcomponent.I10-class.html @@ -0,0 +1,226 @@ + + + + + timeside.tests.testcomponent.I10 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Module testcomponent :: + Class I10 + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class I10

source code

+
+         object --+    
+                  |    
+component.Interface --+
+                      |
+                     I10
+
+ +
+ + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
test(self)
+ testdoc
+ source code + +
+ +
+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __init__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Static Methods[hide private]
+
+   + + + + + + +
teststatic(self)
+ teststaticdoc
+ source code + +
+ +
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.testcomponent.I11-class.html b/doc/epydoc/timeside.tests.testcomponent.I11-class.html new file mode 100644 index 0000000..de430a1 --- /dev/null +++ b/doc/epydoc/timeside.tests.testcomponent.I11-class.html @@ -0,0 +1,174 @@ + + + + + timeside.tests.testcomponent.I11 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Module testcomponent :: + Class I11 + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class I11

source code

+
+         object --+    
+                  |    
+component.Interface --+
+                      |
+                     I11
+
+ +
+ + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __init__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.testcomponent.I2-class.html b/doc/epydoc/timeside.tests.testcomponent.I2-class.html new file mode 100644 index 0000000..30cf954 --- /dev/null +++ b/doc/epydoc/timeside.tests.testcomponent.I2-class.html @@ -0,0 +1,174 @@ + + + + + timeside.tests.testcomponent.I2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Module testcomponent :: + Class I2 + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class I2

source code

+
+         object --+    
+                  |    
+component.Interface --+
+                      |
+                     I2
+
+ +
+ + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __init__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.testcomponent.I3-class.html b/doc/epydoc/timeside.tests.testcomponent.I3-class.html new file mode 100644 index 0000000..7061ab8 --- /dev/null +++ b/doc/epydoc/timeside.tests.testcomponent.I3-class.html @@ -0,0 +1,174 @@ + + + + + timeside.tests.testcomponent.I3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Module testcomponent :: + Class I3 + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class I3

source code

+
+         object --+    
+                  |    
+component.Interface --+
+                      |
+                     I3
+
+ +
+ + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __init__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.testcomponent.I4-class.html b/doc/epydoc/timeside.tests.testcomponent.I4-class.html new file mode 100644 index 0000000..b7e47a3 --- /dev/null +++ b/doc/epydoc/timeside.tests.testcomponent.I4-class.html @@ -0,0 +1,174 @@ + + + + + timeside.tests.testcomponent.I4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Module testcomponent :: + Class I4 + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class I4

source code

+
+         object --+    
+                  |    
+component.Interface --+
+                      |
+                     I4
+
+ +
+ + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __init__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.testcomponent.I5-class.html b/doc/epydoc/timeside.tests.testcomponent.I5-class.html new file mode 100644 index 0000000..8f1ad6e --- /dev/null +++ b/doc/epydoc/timeside.tests.testcomponent.I5-class.html @@ -0,0 +1,180 @@ + + + + + timeside.tests.testcomponent.I5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Module testcomponent :: + Class I5 + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class I5

source code

+
+         object --+    
+                  |    
+component.Interface --+
+                      |
+                     I5
+
+ +
Known Subclasses:
+
+ +
+ +
+ + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __init__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.testcomponent.I6-class.html b/doc/epydoc/timeside.tests.testcomponent.I6-class.html new file mode 100644 index 0000000..6197e5c --- /dev/null +++ b/doc/epydoc/timeside.tests.testcomponent.I6-class.html @@ -0,0 +1,176 @@ + + + + + timeside.tests.testcomponent.I6 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Module testcomponent :: + Class I6 + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class I6

source code

+
+         object --+        
+                  |        
+component.Interface --+    
+                      |    
+                     I5 --+
+                          |
+                         I6
+
+ +
+ + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __init__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.testcomponent.I7-class.html b/doc/epydoc/timeside.tests.testcomponent.I7-class.html new file mode 100644 index 0000000..b61bb23 --- /dev/null +++ b/doc/epydoc/timeside.tests.testcomponent.I7-class.html @@ -0,0 +1,174 @@ + + + + + timeside.tests.testcomponent.I7 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Module testcomponent :: + Class I7 + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class I7

source code

+
+         object --+    
+                  |    
+component.Interface --+
+                      |
+                     I7
+
+ +
+ + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __init__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.testcomponent.I8-class.html b/doc/epydoc/timeside.tests.testcomponent.I8-class.html new file mode 100644 index 0000000..c8b24ad --- /dev/null +++ b/doc/epydoc/timeside.tests.testcomponent.I8-class.html @@ -0,0 +1,180 @@ + + + + + timeside.tests.testcomponent.I8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Module testcomponent :: + Class I8 + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class I8

source code

+
+         object --+    
+                  |    
+component.Interface --+
+                      |
+                     I8
+
+ +
Known Subclasses:
+
+ +
+ +
+ + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __init__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.testcomponent.I9-class.html b/doc/epydoc/timeside.tests.testcomponent.I9-class.html new file mode 100644 index 0000000..f1af416 --- /dev/null +++ b/doc/epydoc/timeside.tests.testcomponent.I9-class.html @@ -0,0 +1,176 @@ + + + + + timeside.tests.testcomponent.I9 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Module testcomponent :: + Class I9 + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class I9

source code

+
+         object --+        
+                  |        
+component.Interface --+    
+                      |    
+                     I8 --+
+                          |
+                         I9
+
+ +
+ + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __init__, + __new__, + __reduce__, + __reduce_ex__, + __repr__, + __setattr__, + __str__ +

+
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.testcomponent.TestComponentArchitecture-class.html b/doc/epydoc/timeside.tests.testcomponent.TestComponentArchitecture-class.html new file mode 100644 index 0000000..64adc55 --- /dev/null +++ b/doc/epydoc/timeside.tests.testcomponent.TestComponentArchitecture-class.html @@ -0,0 +1,428 @@ + + + + + timeside.tests.testcomponent.TestComponentArchitecture + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Module testcomponent :: + Class TestComponentArchitecture + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class TestComponentArchitecture

source code

+
+       object --+        
+                |        
+unittest.TestCase --+    
+                    |    
+             TestCase --+
+                        |
+                       TestComponentArchitecture
+
+ +
+

Test the component and interface system

+ + + + + + + + + + +
+ + + + + +
Nested Classes[hide private]
+
+

Inherited from unittest.TestCase: + failureException +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
testOneInterface(self)
+ Test a component implementing one interface
+ source code + +
+ +
+   + + + + + + +
testTwoInterfaces(self)
+ Test a component implementing two interfaces
+ source code + +
+ +
+   + + + + + + +
testTwoImplementations(self)
+ Test an interface implemented by two components
+ source code + +
+ +
+   + + + + + + +
testInterfaceInheritance(self)
+ Test whether a component implements an interface's parent
+ source code + +
+ +
+   + + + + + + +
testImplementationInheritance(self)
+ Test that a component doesn't implement the interface implemented by + its parent
+ source code + +
+ +
+   + + + + + + +
testImplementationRedundancy(self)
+ Test implementation redundancy across inheritance
+ source code + +
+ +
+   + + + + + + +
testAbstractImplementation(self)
+ Test abstract implementation
+ source code + +
+ +
+   + + + + + + +
testInterfaceDoc(self)
+ Test @interfacedoc decorator
+ source code + +
+ +
+   + + + + + + +
testInterfaceDocStatic(self)
+ Test @interfacedoc decorator on static method
+ source code + +
+ +
+   + + + + + + +
testIntefaceDocReversed(self)
+ Test @interfacedoc on static method (decorators reversed)
+ source code + +
+ +
+   + + + + + + +
testInterfaceDocBadMethod(self)
+ Test @interfacedoc with unexistant method in interface
+ source code + +
+ +
+

Inherited from TestCase: + assertSameList +

+

Inherited from unittest.TestCase: + __call__, + __init__, + __repr__, + __str__, + assertAlmostEqual, + assertAlmostEquals, + assertEqual, + assertEquals, + assertFalse, + assertNotAlmostEqual, + assertNotAlmostEquals, + assertNotEqual, + assertNotEquals, + assertRaises, + assertTrue, + assert_, + countTestCases, + debug, + defaultTestResult, + fail, + failIf, + failIfAlmostEqual, + failIfEqual, + failUnless, + failUnlessAlmostEqual, + failUnlessEqual, + failUnlessRaises, + id, + run, + setUp, + shortDescription, + tearDown +

+

Inherited from unittest.TestCase (private): + _exc_info +

+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __new__, + __reduce__, + __reduce_ex__, + __setattr__ +

+
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.testinputadapter-module.html b/doc/epydoc/timeside.tests.testinputadapter-module.html new file mode 100644 index 0000000..3b72648 --- /dev/null +++ b/doc/epydoc/timeside.tests.testinputadapter-module.html @@ -0,0 +1,131 @@ + + + + + timeside.tests.testinputadapter + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Module testinputadapter + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Module testinputadapter

source code

+ + + + + + + + + +
+ + + + + +
Classes[hide private]
+
+   + + TestFixedSizeInputAdapter
+ Test the fixed-sized input adapter +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.testinputadapter-pysrc.html b/doc/epydoc/timeside.tests.testinputadapter-pysrc.html new file mode 100644 index 0000000..a3e07ac --- /dev/null +++ b/doc/epydoc/timeside.tests.testinputadapter-pysrc.html @@ -0,0 +1,216 @@ + + + + + timeside.tests.testinputadapter + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Module testinputadapter + + + + + + +
[hide private]
[frames] | no frames]
+
+

Source Code for Module timeside.tests.testinputadapter

+
+ 1  from timeside.core import FixedSizeInputAdapter 
+ 2  from timeside.tests import TestCase, TestRunner 
+ 3  import numpy 
+ 4  import unittest 
+ 5   
+
6 -class TestFixedSizeInputAdapter(TestCase): +
7 "Test the fixed-sized input adapter" + 8 +
9 - def assertIOEquals(self, adapter, input, input_eod, output, output_eod=None): +
10 output = output[:] +11 output.reverse() +12 _eod = None +13 for buffer, _eod in adapter.process(input, input_eod): +14 a = output.pop() +15 if not numpy.array_equiv(buffer, a): +16 self.fail("\n-- Actual --\n%s\n -- Expected -- \n%s\n" % (str(buffer), str(a))) +17 +18 if _eod != output_eod: +19 self.fail("eod do not match: %s != %s", (str(_eod), str(output_eod))) +20 +21 if output: +22 self.fail("trailing expected data: %s" % output) +
23 +
24 - def setUp(self): +
25 self.data = numpy.arange(44).reshape(2,22).transpose() +
26 +
27 - def testTwoChannels(self): +
28 "Test simple stream with two channels" +29 adapter = FixedSizeInputAdapter(4, 2) +30 +31 self.assertEquals(len(self.data), adapter.nframes(len(self.data))) +32 +33 self.assertIOEquals(adapter, self.data[0:1], False, []) +34 self.assertIOEquals(adapter, self.data[1:5], False, [self.data[0:4]], False) +35 self.assertIOEquals(adapter, self.data[5:12], False, [self.data[4:8], self.data[8:12]], False) +36 self.assertIOEquals(adapter, self.data[12:13], False, []) +37 self.assertIOEquals(adapter, self.data[13:14], False, []) +38 self.assertIOEquals(adapter, self.data[14:18], False, [self.data[12:16]], False) +39 self.assertIOEquals(adapter, self.data[18:20], False, [self.data[16:20]], False) +40 self.assertIOEquals(adapter, self.data[20:21], False, []) +41 self.assertIOEquals(adapter, self.data[21:22], True, [self.data[20:22]], True) +
42 +
43 - def testPadding(self): +
44 "Test automatic padding support" +45 adapter = FixedSizeInputAdapter(4, 2, pad=True) +46 +47 self.assertEquals(len(self.data) + 2, adapter.nframes(len(self.data))) +48 +49 self.assertIOEquals(adapter, self.data[0:21], False, +50 [self.data[0:4], self.data[4:8], self.data[8:12], self.data[12:16], self.data[16:20]], +51 False) +52 +53 self.assertIOEquals(adapter, self.data[21:22], True, [[ +54 [20, 42], +55 [21, 43], +56 [0, 0], +57 [0, 0] +58 ]], True) +
59 +
60 - def testSizeMultiple(self): +
61 "Test a stream which contain a multiple number of buffers" +62 adapter = FixedSizeInputAdapter(4, 2) +63 +64 self.assertIOEquals(adapter, self.data[0:20], True, +65 [self.data[0:4], self.data[4:8], self.data[8:12], self.data[12:16], self.data[16:20]], +66 True) +
67 +68 +69 if __name__ == '__main__': +70 unittest.main(testRunner=TestRunner()) +71 +
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/timeside.tests.testinputadapter.TestFixedSizeInputAdapter-class.html b/doc/epydoc/timeside.tests.testinputadapter.TestFixedSizeInputAdapter-class.html new file mode 100644 index 0000000..42c8117 --- /dev/null +++ b/doc/epydoc/timeside.tests.testinputadapter.TestFixedSizeInputAdapter-class.html @@ -0,0 +1,370 @@ + + + + + timeside.tests.testinputadapter.TestFixedSizeInputAdapter + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package timeside :: + Package tests :: + Module testinputadapter :: + Class TestFixedSizeInputAdapter + + + + + + +
[hide private]
[frames] | no frames]
+
+ +

Class TestFixedSizeInputAdapter

source code

+
+       object --+        
+                |        
+unittest.TestCase --+    
+                    |    
+             TestCase --+
+                        |
+                       TestFixedSizeInputAdapter
+
+ +
+

Test the fixed-sized input adapter

+ + + + + + + + + + +
+ + + + + +
Nested Classes[hide private]
+
+

Inherited from unittest.TestCase: + failureException +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
Instance Methods[hide private]
+
+   + + + + + + +
assertIOEquals(self, + adapter, + input, + input_eod, + output, + output_eod=None) + source code + +
+ +
+   + + + + + + +
setUp(self)
+ Hook method for setting up the test fixture before exercising it.
+ source code + +
+ +
+   + + + + + + +
testTwoChannels(self)
+ Test simple stream with two channels
+ source code + +
+ +
+   + + + + + + +
testPadding(self)
+ Test automatic padding support
+ source code + +
+ +
+   + + + + + + +
testSizeMultiple(self)
+ Test a stream which contain a multiple number of buffers
+ source code + +
+ +
+

Inherited from TestCase: + assertSameList +

+

Inherited from unittest.TestCase: + __call__, + __init__, + __repr__, + __str__, + assertAlmostEqual, + assertAlmostEquals, + assertEqual, + assertEquals, + assertFalse, + assertNotAlmostEqual, + assertNotAlmostEquals, + assertNotEqual, + assertNotEquals, + assertRaises, + assertTrue, + assert_, + countTestCases, + debug, + defaultTestResult, + fail, + failIf, + failIfAlmostEqual, + failIfEqual, + failUnless, + failUnlessAlmostEqual, + failUnlessEqual, + failUnlessRaises, + id, + run, + shortDescription, + tearDown +

+

Inherited from unittest.TestCase (private): + _exc_info +

+

Inherited from object: + __delattr__, + __getattribute__, + __hash__, + __new__, + __reduce__, + __reduce_ex__, + __setattr__ +

+
+ + + + + + + + + +
+ + + + + +
Properties[hide private]
+
+

Inherited from object: + __class__ +

+
+ + + + + + +
+ + + + + +
Method Details[hide private]
+
+ +
+ +
+ + +
+

setUp(self) +

+
source code  +
+ +

Hook method for setting up the test fixture before exercising it.

+
+
Overrides: + unittest.TestCase.setUp +
(inherited documentation)
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/doc/epydoc/toc-everything.html b/doc/epydoc/toc-everything.html new file mode 100644 index 0000000..8476c08 --- /dev/null +++ b/doc/epydoc/toc-everything.html @@ -0,0 +1,227 @@ + + + + + Everything + + + + + +

Everything

+
+

All Classes

+ exceptions.AssertionError
timeside.analyze.channels.ChannelAnalyser
timeside.analyze.core.AudioProcessor
timeside.analyze.dc.MeanDCShiftAnalyser
timeside.analyze.duration.DurationAnalyzer
timeside.analyze.encoding.EncodingAnalyser
timeside.analyze.format.FormatAnalyser
timeside.analyze.max_level.MaxLevelAnalyzer
timeside.analyze.mean_level.MeanLevelAnalyser
timeside.analyze.resolution.ResolutionAnalyser
timeside.analyze.samplerate.SampleRateAnalyzer
timeside.analyze.vamp.core.VampCoreAnalyzer
timeside.api.IAnalyzer
timeside.api.IDecoder
timeside.api.IEffect
timeside.api.IEncoder
timeside.api.IGrapher
timeside.api.IProcessor
timeside.api.IValueAnalyzer
timeside.component.Component
timeside.component.ComponentError
timeside.component.Interface
timeside.component.MetaComponent
timeside.core.FixedSizeInputAdapter
timeside.core.MetaProcessor
timeside.core.ProcessPipe
timeside.core.Processor
timeside.decode.core.DecoderCore
timeside.decode.core.SubProcessPipe
timeside.decode.flac.FlacDecoder
timeside.decode.mp3.Mp3Decoder
timeside.decode.ogg.OggDecoder
timeside.decode.wav.WavDecoder
timeside.encode.core.EncoderCore
timeside.encode.core.SubProcessPipe
timeside.encode.flac.FlacEncoder
timeside.encode.mp3.Mp3Encoder
timeside.encode.ogg.OggVorbisEncoder
timeside.encode.wav.WavEncoder
timeside.exceptions.ApiError
timeside.exceptions.Error
timeside.exceptions.SubProcessError
timeside.grapher.core.Noise
timeside.grapher.core.SpectralCentroid
timeside.grapher.core.SpectrogramImage
timeside.grapher.core.WaveformImage
timeside.grapher.spectrogram_audiolab.SpectrogramGrapherAudiolab
timeside.grapher.waveform_audiolab.WaveFormGrapherAudiolab
timeside.metadata.Metadata
timeside.tests.TestCase
timeside.tests.TestRunner
+ + timeside.tests.api.examples.Duration
timeside.tests.api.examples.FileDecoder
timeside.tests.api.examples.FixedInputProcessor
timeside.tests.api.examples.Gain
timeside.tests.api.examples.MaxLevel
timeside.tests.api.examples.Spectrogram
timeside.tests.api.examples.WavEncoder
timeside.tests.api.examples.Waveform
timeside.tests.api.gstreamer.FileDecoder
timeside.tests.api.gstreamer.WavEncoder
timeside.tests.test.TestAnalyzers
timeside.tests.test.TestDecoders
timeside.tests.test.TestEncoders
timeside.tests.test.TestGraphers
+ + + + + + + + + + + + + + + + + + + + + + timeside.tests.testcomponent.TestComponentArchitecture
timeside.tests.testinputadapter.TestFixedSizeInputAdapter

All Functions

+ timeside.component.abstract
+ + timeside.component.implementations
timeside.component.implements
timeside.component.interfacedoc
timeside.core.get_processor
timeside.core.processors
timeside.grapher.core.interpolate_colors
timeside.tests.listprocessors.list_processors
timeside.tests.test.mimetype

All Variables

+ + timeside.grapher.color_schemes
timeside.grapher.core.color_schemes
timeside.grapher.spectrogram_audiolab.color_schemes
timeside.grapher.waveform_audiolab.color_schemes
timeside.tests.api.examples.color_schemes
timeside.tests.api.test_lolevel.analyzer
timeside.tests.api.test_lolevel.decoder
timeside.tests.api.test_lolevel.destination
timeside.tests.api.test_lolevel.effect
timeside.tests.api.test_lolevel.encoder
timeside.tests.api.test_lolevel.eod
timeside.tests.api.test_lolevel.frames
timeside.tests.api.test_lolevel.gain
timeside.tests.api.test_lolevel.max_level
timeside.tests.api.test_lolevel.nchannels
timeside.tests.api.test_lolevel.nframes
timeside.tests.api.test_lolevel.samplerate
timeside.tests.api.test_lolevel.source
timeside.tests.api.test_lolevel.use_gst
timeside.tests.api.test_pipe.decoder
timeside.tests.api.test_pipe.duration
timeside.tests.api.test_pipe.encoder
timeside.tests.api.test_pipe.fixed
timeside.tests.api.test_pipe.gain
timeside.tests.api.test_pipe.maxlevel
timeside.tests.api.test_pipe.source
timeside.tests.api.test_pipe.subpipe
timeside.tests.api.test_pipe.use_gst
timeside.tests.api.test_pipe_spectrogram.decoder
timeside.tests.api.test_pipe_spectrogram.image_file
timeside.tests.api.test_pipe_spectrogram.source
timeside.tests.api.test_pipe_spectrogram.spectrogram
timeside.tests.api.test_pipe_spectrogram.use_gst
timeside.tests.api.test_pipe_waveform.decoder
timeside.tests.api.test_pipe_waveform.image_file
timeside.tests.api.test_pipe_waveform.source
timeside.tests.api.test_pipe_waveform.use_gst
timeside.tests.api.test_pipe_waveform.waveform

+[hide private] + + + + diff --git a/doc/epydoc/toc-timeside-module.html b/doc/epydoc/toc-timeside-module.html new file mode 100644 index 0000000..860cc2e --- /dev/null +++ b/doc/epydoc/toc-timeside-module.html @@ -0,0 +1,29 @@ + + + + + timeside + + + + + +

Module timeside

+
+
+[hide private] + + + + diff --git a/doc/epydoc/toc-timeside.analyze-module.html b/doc/epydoc/toc-timeside.analyze-module.html new file mode 100644 index 0000000..d7f6bcc --- /dev/null +++ b/doc/epydoc/toc-timeside.analyze-module.html @@ -0,0 +1,29 @@ + + + + + analyze + + + + + +

Module analyze

+
+
+[hide private] + + + + diff --git a/doc/epydoc/toc-timeside.analyze.channels-module.html b/doc/epydoc/toc-timeside.analyze.channels-module.html new file mode 100644 index 0000000..47220db --- /dev/null +++ b/doc/epydoc/toc-timeside.analyze.channels-module.html @@ -0,0 +1,31 @@ + + + + + channels + + + + + +

Module channels

+
+

Classes

+ ChannelAnalyser

+[hide private] + + + + diff --git a/doc/epydoc/toc-timeside.analyze.core-module.html b/doc/epydoc/toc-timeside.analyze.core-module.html new file mode 100644 index 0000000..42c7812 --- /dev/null +++ b/doc/epydoc/toc-timeside.analyze.core-module.html @@ -0,0 +1,31 @@ + + + + + core + + + + + +

Module core

+
+

Classes

+ AudioProcessor

+[hide private] + + + + diff --git a/doc/epydoc/toc-timeside.analyze.dc-module.html b/doc/epydoc/toc-timeside.analyze.dc-module.html new file mode 100644 index 0000000..a415474 --- /dev/null +++ b/doc/epydoc/toc-timeside.analyze.dc-module.html @@ -0,0 +1,31 @@ + + + + + dc + + + + + +

Module dc

+
+

Classes

+ MeanDCShiftAnalyser

+[hide private] + + + + diff --git a/doc/epydoc/toc-timeside.analyze.duration-module.html b/doc/epydoc/toc-timeside.analyze.duration-module.html new file mode 100644 index 0000000..538c40b --- /dev/null +++ b/doc/epydoc/toc-timeside.analyze.duration-module.html @@ -0,0 +1,31 @@ + + + + + duration + + + + + +

Module duration

+
+

Classes

+ DurationAnalyzer

+[hide private] + + + + diff --git a/doc/epydoc/toc-timeside.analyze.encoding-module.html b/doc/epydoc/toc-timeside.analyze.encoding-module.html new file mode 100644 index 0000000..fc6b900 --- /dev/null +++ b/doc/epydoc/toc-timeside.analyze.encoding-module.html @@ -0,0 +1,31 @@ + + + + + encoding + + + + + +

Module encoding

+
+

Classes

+ EncodingAnalyser

+[hide private] + + + + diff --git a/doc/epydoc/toc-timeside.analyze.format-module.html b/doc/epydoc/toc-timeside.analyze.format-module.html new file mode 100644 index 0000000..b07c397 --- /dev/null +++ b/doc/epydoc/toc-timeside.analyze.format-module.html @@ -0,0 +1,31 @@ + + + + + format + + + + + +

Module format

+
+

Classes

+ FormatAnalyser

+[hide private] + + + + diff --git a/doc/epydoc/toc-timeside.analyze.max_level-module.html b/doc/epydoc/toc-timeside.analyze.max_level-module.html new file mode 100644 index 0000000..bd4908f --- /dev/null +++ b/doc/epydoc/toc-timeside.analyze.max_level-module.html @@ -0,0 +1,31 @@ + + + + + max_level + + + + + +

Module max_level

+
+

Classes

+ MaxLevelAnalyzer

+[hide private] + + + + diff --git a/doc/epydoc/toc-timeside.analyze.mean_level-module.html b/doc/epydoc/toc-timeside.analyze.mean_level-module.html new file mode 100644 index 0000000..c7a5890 --- /dev/null +++ b/doc/epydoc/toc-timeside.analyze.mean_level-module.html @@ -0,0 +1,31 @@ + + + + + mean_level + + + + + +

Module mean_level

+
+

Classes

+ MeanLevelAnalyser

+[hide private] + + + + diff --git a/doc/epydoc/toc-timeside.analyze.resolution-module.html b/doc/epydoc/toc-timeside.analyze.resolution-module.html new file mode 100644 index 0000000..ae84f50 --- /dev/null +++ b/doc/epydoc/toc-timeside.analyze.resolution-module.html @@ -0,0 +1,31 @@ + + + + + resolution + + + + + +

Module resolution

+
+

Classes

+ ResolutionAnalyser

+[hide private] + + + + diff --git a/doc/epydoc/toc-timeside.analyze.samplerate-module.html b/doc/epydoc/toc-timeside.analyze.samplerate-module.html new file mode 100644 index 0000000..cdca972 --- /dev/null +++ b/doc/epydoc/toc-timeside.analyze.samplerate-module.html @@ -0,0 +1,31 @@ + + + + + samplerate + + + + + +

Module samplerate

+
+

Classes

+ SampleRateAnalyzer

+[hide private] + + + + diff --git a/doc/epydoc/toc-timeside.analyze.vamp-module.html b/doc/epydoc/toc-timeside.analyze.vamp-module.html new file mode 100644 index 0000000..d0ddce4 --- /dev/null +++ b/doc/epydoc/toc-timeside.analyze.vamp-module.html @@ -0,0 +1,29 @@ + + + + + vamp + + + + + +

Module vamp

+
+
+[hide private] + + + + diff --git a/doc/epydoc/toc-timeside.analyze.vamp.core-module.html b/doc/epydoc/toc-timeside.analyze.vamp.core-module.html new file mode 100644 index 0000000..d57aebe --- /dev/null +++ b/doc/epydoc/toc-timeside.analyze.vamp.core-module.html @@ -0,0 +1,31 @@ + + + + + core + + + + + +

Module core

+
+

Classes

+ VampCoreAnalyzer

+[hide private] + + + + diff --git a/doc/epydoc/toc-timeside.api-module.html b/doc/epydoc/toc-timeside.api-module.html new file mode 100644 index 0000000..cedcfc5 --- /dev/null +++ b/doc/epydoc/toc-timeside.api-module.html @@ -0,0 +1,37 @@ + + + + + api + + + + + +

Module api

+
+

Classes

+ IAnalyzer
IDecoder
IEffect
IEncoder
IGrapher
IProcessor
IValueAnalyzer

+[hide private] + + + + diff --git a/doc/epydoc/toc-timeside.component-module.html b/doc/epydoc/toc-timeside.component-module.html new file mode 100644 index 0000000..b015888 --- /dev/null +++ b/doc/epydoc/toc-timeside.component-module.html @@ -0,0 +1,45 @@ + + + + + component + + + + + +

Module component

+
+

Classes

+ Component
ComponentError
Interface
MetaComponent

Functions

+ abstract
+ + implementations
implements
interfacedoc

+[hide private] + + + + diff --git a/doc/epydoc/toc-timeside.core-module.html b/doc/epydoc/toc-timeside.core-module.html new file mode 100644 index 0000000..f4ca3b9 --- /dev/null +++ b/doc/epydoc/toc-timeside.core-module.html @@ -0,0 +1,44 @@ + + + + + core + + + + + +

Module core

+
+

Classes

+ FixedSizeInputAdapter
MetaProcessor
ProcessPipe
Processor

Functions

+ abstract
get_processor
implements
interfacedoc
processors

Variables

+ +
+[hide private] + + + + diff --git a/doc/epydoc/toc-timeside.decode-module.html b/doc/epydoc/toc-timeside.decode-module.html new file mode 100644 index 0000000..50e85a1 --- /dev/null +++ b/doc/epydoc/toc-timeside.decode-module.html @@ -0,0 +1,29 @@ + + + + + decode + + + + + +

Module decode

+
+
+[hide private] + + + + diff --git a/doc/epydoc/toc-timeside.decode.core-module.html b/doc/epydoc/toc-timeside.decode.core-module.html new file mode 100644 index 0000000..39694f7 --- /dev/null +++ b/doc/epydoc/toc-timeside.decode.core-module.html @@ -0,0 +1,32 @@ + + + + + core + + + + + +

Module core

+
+

Classes

+ DecoderCore
SubProcessPipe

+[hide private] + + + + diff --git a/doc/epydoc/toc-timeside.decode.flac-module.html b/doc/epydoc/toc-timeside.decode.flac-module.html new file mode 100644 index 0000000..68b5f1e --- /dev/null +++ b/doc/epydoc/toc-timeside.decode.flac-module.html @@ -0,0 +1,31 @@ + + + + + flac + + + + + +

Module flac

+
+

Classes

+ FlacDecoder

+[hide private] + + + + diff --git a/doc/epydoc/toc-timeside.decode.mp3-module.html b/doc/epydoc/toc-timeside.decode.mp3-module.html new file mode 100644 index 0000000..fc1d225 --- /dev/null +++ b/doc/epydoc/toc-timeside.decode.mp3-module.html @@ -0,0 +1,31 @@ + + + + + mp3 + + + + + +

Module mp3

+
+

Classes

+ Mp3Decoder

+[hide private] + + + + diff --git a/doc/epydoc/toc-timeside.decode.ogg-module.html b/doc/epydoc/toc-timeside.decode.ogg-module.html new file mode 100644 index 0000000..749f432 --- /dev/null +++ b/doc/epydoc/toc-timeside.decode.ogg-module.html @@ -0,0 +1,31 @@ + + + + + ogg + + + + + +

Module ogg

+
+

Classes

+ OggDecoder

+[hide private] + + + + diff --git a/doc/epydoc/toc-timeside.decode.wav-module.html b/doc/epydoc/toc-timeside.decode.wav-module.html new file mode 100644 index 0000000..89cf548 --- /dev/null +++ b/doc/epydoc/toc-timeside.decode.wav-module.html @@ -0,0 +1,31 @@ + + + + + wav + + + + + +

Module wav

+
+

Classes

+ WavDecoder

+[hide private] + + + + diff --git a/doc/epydoc/toc-timeside.encode-module.html b/doc/epydoc/toc-timeside.encode-module.html new file mode 100644 index 0000000..725256d --- /dev/null +++ b/doc/epydoc/toc-timeside.encode-module.html @@ -0,0 +1,29 @@ + + + + + encode + + + + + +

Module encode

+
+
+[hide private] + + + + diff --git a/doc/epydoc/toc-timeside.encode.core-module.html b/doc/epydoc/toc-timeside.encode.core-module.html new file mode 100644 index 0000000..d0857b6 --- /dev/null +++ b/doc/epydoc/toc-timeside.encode.core-module.html @@ -0,0 +1,32 @@ + + + + + core + + + + + +

Module core

+
+

Classes

+ EncoderCore
SubProcessPipe

+[hide private] + + + + diff --git a/doc/epydoc/toc-timeside.encode.flac-module.html b/doc/epydoc/toc-timeside.encode.flac-module.html new file mode 100644 index 0000000..27b9686 --- /dev/null +++ b/doc/epydoc/toc-timeside.encode.flac-module.html @@ -0,0 +1,31 @@ + + + + + flac + + + + + +

Module flac

+
+

Classes

+ FlacEncoder

+[hide private] + + + + diff --git a/doc/epydoc/toc-timeside.encode.mp3-module.html b/doc/epydoc/toc-timeside.encode.mp3-module.html new file mode 100644 index 0000000..dda1632 --- /dev/null +++ b/doc/epydoc/toc-timeside.encode.mp3-module.html @@ -0,0 +1,31 @@ + + + + + mp3 + + + + + +

Module mp3

+
+

Classes

+ Mp3Encoder

+[hide private] + + + + diff --git a/doc/epydoc/toc-timeside.encode.ogg-module.html b/doc/epydoc/toc-timeside.encode.ogg-module.html new file mode 100644 index 0000000..f3c556c --- /dev/null +++ b/doc/epydoc/toc-timeside.encode.ogg-module.html @@ -0,0 +1,31 @@ + + + + + ogg + + + + + +

Module ogg

+
+

Classes

+ OggVorbisEncoder

+[hide private] + + + + diff --git a/doc/epydoc/toc-timeside.encode.wav-module.html b/doc/epydoc/toc-timeside.encode.wav-module.html new file mode 100644 index 0000000..77eee68 --- /dev/null +++ b/doc/epydoc/toc-timeside.encode.wav-module.html @@ -0,0 +1,31 @@ + + + + + wav + + + + + +

Module wav

+
+

Classes

+ WavEncoder

+[hide private] + + + + diff --git a/doc/epydoc/toc-timeside.exceptions-module.html b/doc/epydoc/toc-timeside.exceptions-module.html new file mode 100644 index 0000000..6056acf --- /dev/null +++ b/doc/epydoc/toc-timeside.exceptions-module.html @@ -0,0 +1,33 @@ + + + + + exceptions + + + + + +

Module exceptions

+
+

Classes

+ ApiError
Error
SubProcessError

+[hide private] + + + + diff --git a/doc/epydoc/toc-timeside.grapher-module.html b/doc/epydoc/toc-timeside.grapher-module.html new file mode 100644 index 0000000..ae31646 --- /dev/null +++ b/doc/epydoc/toc-timeside.grapher-module.html @@ -0,0 +1,31 @@ + + + + + grapher + + + + + +

Module grapher

+
+

Variables

+ color_schemes

+[hide private] + + + + diff --git a/doc/epydoc/toc-timeside.grapher.core-module.html b/doc/epydoc/toc-timeside.grapher.core-module.html new file mode 100644 index 0000000..5c339dc --- /dev/null +++ b/doc/epydoc/toc-timeside.grapher.core-module.html @@ -0,0 +1,38 @@ + + + + + core + + + + + +

Module core

+
+

Classes

+ Noise
SpectralCentroid
SpectrogramImage
WaveformImage

Functions

+ interpolate_colors

Variables

+ color_schemes

+[hide private] + + + + diff --git a/doc/epydoc/toc-timeside.grapher.spectrogram_audiolab-module.html b/doc/epydoc/toc-timeside.grapher.spectrogram_audiolab-module.html new file mode 100644 index 0000000..97fc8df --- /dev/null +++ b/doc/epydoc/toc-timeside.grapher.spectrogram_audiolab-module.html @@ -0,0 +1,33 @@ + + + + + spectrogram_audiolab + + + + + +

Module spectrogram_audiolab

+
+

Classes

+ SpectrogramGrapherAudiolab

Variables

+ color_schemes

+[hide private] + + + + diff --git a/doc/epydoc/toc-timeside.grapher.waveform_audiolab-module.html b/doc/epydoc/toc-timeside.grapher.waveform_audiolab-module.html new file mode 100644 index 0000000..2e92a4c --- /dev/null +++ b/doc/epydoc/toc-timeside.grapher.waveform_audiolab-module.html @@ -0,0 +1,33 @@ + + + + + waveform_audiolab + + + + + +

Module waveform_audiolab

+
+

Classes

+ WaveFormGrapherAudiolab

Variables

+ color_schemes

+[hide private] + + + + diff --git a/doc/epydoc/toc-timeside.metadata-module.html b/doc/epydoc/toc-timeside.metadata-module.html new file mode 100644 index 0000000..06c391b --- /dev/null +++ b/doc/epydoc/toc-timeside.metadata-module.html @@ -0,0 +1,31 @@ + + + + + metadata + + + + + +

Module metadata

+
+

Classes

+ Metadata

+[hide private] + + + + diff --git a/doc/epydoc/toc-timeside.tests-module.html b/doc/epydoc/toc-timeside.tests-module.html new file mode 100644 index 0000000..9250c7e --- /dev/null +++ b/doc/epydoc/toc-timeside.tests-module.html @@ -0,0 +1,38 @@ + + + + + tests + + + + + +

Module tests

+
+

Classes

+ TestCase
TestRunner
+ +
+[hide private] + + + + diff --git a/doc/epydoc/toc-timeside.tests.alltests-module.html b/doc/epydoc/toc-timeside.tests.alltests-module.html new file mode 100644 index 0000000..3feedd0 --- /dev/null +++ b/doc/epydoc/toc-timeside.tests.alltests-module.html @@ -0,0 +1,29 @@ + + + + + alltests + + + + + +

Module alltests

+
+
+[hide private] + + + + diff --git a/doc/epydoc/toc-timeside.tests.api-module.html b/doc/epydoc/toc-timeside.tests.api-module.html new file mode 100644 index 0000000..e526bdd --- /dev/null +++ b/doc/epydoc/toc-timeside.tests.api-module.html @@ -0,0 +1,29 @@ + + + + + api + + + + + +

Module api

+
+
+[hide private] + + + + diff --git a/doc/epydoc/toc-timeside.tests.api.examples-module.html b/doc/epydoc/toc-timeside.tests.api.examples-module.html new file mode 100644 index 0000000..fe40290 --- /dev/null +++ b/doc/epydoc/toc-timeside.tests.api.examples-module.html @@ -0,0 +1,40 @@ + + + + + examples + + + + + +

Module examples

+
+

Classes

+ Duration
FileDecoder
FixedInputProcessor
Gain
MaxLevel
Spectrogram
WavEncoder
Waveform

Variables

+ color_schemes

+[hide private] + + + + diff --git a/doc/epydoc/toc-timeside.tests.api.gstreamer-module.html b/doc/epydoc/toc-timeside.tests.api.gstreamer-module.html new file mode 100644 index 0000000..966e035 --- /dev/null +++ b/doc/epydoc/toc-timeside.tests.api.gstreamer-module.html @@ -0,0 +1,32 @@ + + + + + gstreamer + + + + + +

Module gstreamer

+
+

Classes

+ FileDecoder
WavEncoder

+[hide private] + + + + diff --git a/doc/epydoc/toc-timeside.tests.api.test_lolevel-module.html b/doc/epydoc/toc-timeside.tests.api.test_lolevel-module.html new file mode 100644 index 0000000..e90fb81 --- /dev/null +++ b/doc/epydoc/toc-timeside.tests.api.test_lolevel-module.html @@ -0,0 +1,44 @@ + + + + + test_lolevel + + + + + +

Module test_lolevel

+
+

Variables

+ analyzer
decoder
destination
effect
encoder
eod
frames
gain
max_level
nchannels
nframes
samplerate
source
use_gst

+[hide private] + + + + diff --git a/doc/epydoc/toc-timeside.tests.api.test_pipe-module.html b/doc/epydoc/toc-timeside.tests.api.test_pipe-module.html new file mode 100644 index 0000000..c82ee75 --- /dev/null +++ b/doc/epydoc/toc-timeside.tests.api.test_pipe-module.html @@ -0,0 +1,39 @@ + + + + + test_pipe + + + + + +

Module test_pipe

+
+

Variables

+ decoder
duration
encoder
fixed
gain
maxlevel
source
subpipe
use_gst

+[hide private] + + + + diff --git a/doc/epydoc/toc-timeside.tests.api.test_pipe_spectrogram-module.html b/doc/epydoc/toc-timeside.tests.api.test_pipe_spectrogram-module.html new file mode 100644 index 0000000..20d8413 --- /dev/null +++ b/doc/epydoc/toc-timeside.tests.api.test_pipe_spectrogram-module.html @@ -0,0 +1,35 @@ + + + + + test_pipe_spectrogram + + + + + +

Module test_pipe_spectrogram

+
+

Variables

+ decoder
image_file
source
spectrogram
use_gst

+[hide private] + + + + diff --git a/doc/epydoc/toc-timeside.tests.api.test_pipe_waveform-module.html b/doc/epydoc/toc-timeside.tests.api.test_pipe_waveform-module.html new file mode 100644 index 0000000..f22077a --- /dev/null +++ b/doc/epydoc/toc-timeside.tests.api.test_pipe_waveform-module.html @@ -0,0 +1,35 @@ + + + + + test_pipe_waveform + + + + + +

Module test_pipe_waveform

+
+

Variables

+ decoder
image_file
source
use_gst
waveform

+[hide private] + + + + diff --git a/doc/epydoc/toc-timeside.tests.listprocessors-module.html b/doc/epydoc/toc-timeside.tests.listprocessors-module.html new file mode 100644 index 0000000..442a001 --- /dev/null +++ b/doc/epydoc/toc-timeside.tests.listprocessors-module.html @@ -0,0 +1,31 @@ + + + + + listprocessors + + + + + +

Module listprocessors

+
+

Functions

+ list_processors

+[hide private] + + + + diff --git a/doc/epydoc/toc-timeside.tests.test-module.html b/doc/epydoc/toc-timeside.tests.test-module.html new file mode 100644 index 0000000..51794e2 --- /dev/null +++ b/doc/epydoc/toc-timeside.tests.test-module.html @@ -0,0 +1,36 @@ + + + + + test + + + + + +

Module test

+
+

Classes

+ TestAnalyzers
TestDecoders
TestEncoders
TestGraphers

Functions

+ mimetype

+[hide private] + + + + diff --git a/doc/epydoc/toc-timeside.tests.testcomponent-module.html b/doc/epydoc/toc-timeside.tests.testcomponent-module.html new file mode 100644 index 0000000..3cf6bbe --- /dev/null +++ b/doc/epydoc/toc-timeside.tests.testcomponent-module.html @@ -0,0 +1,97 @@ + + + + + testcomponent + + + + + +

Module testcomponent

+
+

Classes

+
+ C1
+
+ C10
+
+ C11
+
+ C2
+
+ C3
+
+ C4
+
+ C5
+
+ C6
+
+ C7
+
+ C8
+
+ C9
+
+ I1
+
+ I10
+
+ I11
+
+ I2
+
+ I3
+
+ I4
+
+ I5
+
+ I6
+
+ I7
+
+ I8
+
+ I9
+ TestComponentArchitecture

+[hide private] + + + + diff --git a/doc/epydoc/toc-timeside.tests.testinputadapter-module.html b/doc/epydoc/toc-timeside.tests.testinputadapter-module.html new file mode 100644 index 0000000..5494e0b --- /dev/null +++ b/doc/epydoc/toc-timeside.tests.testinputadapter-module.html @@ -0,0 +1,31 @@ + + + + + testinputadapter + + + + + +

Module testinputadapter

+
+

Classes

+ TestFixedSizeInputAdapter

+[hide private] + + + + diff --git a/doc/epydoc/toc.html b/doc/epydoc/toc.html new file mode 100644 index 0000000..038ecbc --- /dev/null +++ b/doc/epydoc/toc.html @@ -0,0 +1,80 @@ + + + + + Table of Contents + + + + + +

Table of Contents

+
+ Everything +
+

Modules

+ timeside
timeside.analyze
timeside.analyze.channels
timeside.analyze.core
timeside.analyze.dc
timeside.analyze.duration
timeside.analyze.encoding
timeside.analyze.format
timeside.analyze.max_level
timeside.analyze.mean_level
timeside.analyze.resolution
timeside.analyze.samplerate
timeside.analyze.vamp
timeside.analyze.vamp.core
timeside.api
timeside.component
timeside.core
timeside.decode
timeside.decode.core
timeside.decode.flac
timeside.decode.mp3
timeside.decode.ogg
timeside.decode.wav
timeside.encode
timeside.encode.core
timeside.encode.flac
timeside.encode.mp3
timeside.encode.ogg
timeside.encode.wav
timeside.exceptions
timeside.grapher
timeside.grapher.core
timeside.grapher.spectrogram_audiolab
timeside.grapher.waveform_audiolab
timeside.metadata
timeside.tests
timeside.tests.alltests
timeside.tests.api
timeside.tests.api.examples
timeside.tests.api.gstreamer
timeside.tests.api.test_lolevel
timeside.tests.api.test_pipe
timeside.tests.api.test_pipe_spectrogram
timeside.tests.api.test_pipe_waveform
timeside.tests.listprocessors
timeside.tests.test
timeside.tests.testcomponent
timeside.tests.testinputadapter

+ [hide private] + + + +