[Clam-devel] Re: [PATCH] (but don't use it yet) scrolling spectrogram in annotator status
David García Garzón
dgarcia at iua.upf.edu
Sat Aug 11 21:54:20 PDT 2007
I think you messed up it all with vmqt. No need for that. You needed to know
such code but you are not forced to use it. My idea was to update vmqt
spectrogram with the texture implementation we were building, not duplicating
the ill vertex based on the new implementation. Some words on that later.
The scrolling spectrogram has sense on the NetworkEditor. Annotator just needs
a spectrogram. That means that NetEditor just needs a local view of the
spectrogram (latest frames) while the Annotator needs a full access to all
the data (scrollable, of course but not in the sense of local view). Also
that in the NetEditor we could loose some frames while on the Annotator we
need to be precise. Translated to code the ScrollingSpectrogram is something
for NetEditor and can be based on a FloatArrayDataSource which is simpler
(but loosy!). Annotator needs a new data source, which is a 2D matrix so this
could be the next step because is a more complex task.
So the first step is NetEditor scrolling but loosy spectrogram. How to address
it? Take KeySpace code instead the renderer 2D one as starting point.
KeySpace fills all the texels in a texture acording with an input float array
data source. Instead the spectrogram must fill just one row with the texels
with the gradient mapped values of the float array data source. Scroll can be
performed simply by changing the texture coords assigned to the vertex of the
single square KeySpace is drawing. All the bounds and the like should be
provided by the DataSource.
Having an spectrogram monitor in NetEditor is an easier, screenshotable step.
Then it would be nice to refactor vmqt to use such texture based
implementation, instead of the vertex implementation you duplicated back. In
vmqt you won't have 'scroll' in the sense we said in NetEditor. The texture
will be the same, Just taking different partial views of a very large
textured quad.
After that, let's move to the Annotator we should address how to abstract a
float matrix array as a data source: units, offsets, gaps, max and min of
each of the 3 dimensions. Optionally labels in some of them. And raw data.
Also forget about the color choosing code. On future qt versions it could be
very easy to edit a QGradient as a widget property, so at the moment just
consider a single gradient and forget the code handling that. Anyway it is too
verbose for its function.
El Saturday 11 August 2007 00:00:19 bennett kolasinski va escriure:
> Hi David (& list),
> Here's a patch containing what I've been working on as far as scrolling
> spectrogram goes. It is basically a mashup of Keyspace &
> vmqt/render/vmSpectrogramRenderer... I'm sending it out to make sure I'm
> somewhat on the right track (it compiles and Annotator even will run and
> show a blank GL drawing space where the spectrogram will eventually be!).
>
> Right now I'm trying to figure out how to get the data displayed, and then
> I have to get it scrolling. The scrolling will most likely rely upon
> playback time information that was being discussed in a thread started by
> Roman the other day-- Roman, if you haven't looked into it yet, I can focus
> on getting time information out of [Mono/Multichannel]AudioFileReaders.
>
> Best,
> Bennett
More information about the clam-devel
mailing list