Subject: Re: [linux-audio-dev] Audio-related widgets with Qt ?
From: Tommi Ilmonen (tilmonen_AT_cc.hut.fi)
Date: Mon Sep 17 2001 - 13:41:18 EEST
On Fri, 14 Sep 2001, Paul Davis wrote:
> >The waveform display is the most challenging one, it probably needs two
> >parts: A) A threaded engine that calculates the preview files and B) A
> >waveform renderer that could be used upon any widget.
>
> its potentially a lot more complex than that.
>
> i know from working on ardour that in the end, the waveform display
> model is very dependent upon the design of the application. when
> ardour used to offer a sample-based editor, we used a version of David
> Bartold's GtkWaveForm widget. But as soon as we switched to a
> region-based "arranger/sequencer", this widget was completely the
> wrong model. Instead, I had to write a GtkCanvasItem that would
> display a waveform because rather than using widgets per se, we
> decided to use the GtkCanvas and drag objects around on it as well as
> integrate GUI event handling through the canvas. GtkCanvasItems are
> not widgets (in some senses they are much simpler, in others, much
> more complex)
I know that waveforms are difficult. That is why have not tried them at
all :-) What I had in mind is probably similar to what you described.
In more detail:
A) An object that calculates the previews in a background thread (and
serializes the requests). This thing would not have to bew very
Qt-specific.
B) A collection of functions/classes that can render the waveform. I am
not talking about a "waveform widget", but about a piece of code that
would be able to render specified part of the waveform on any given area
on any given widget.
C) Each application would have to glue A and B and specify how the
rendering should happen.
This sounds mildly complex. In reality it is even more complex - one has
to guarantee that multiple threads are not accessing the sound files at
the same time etc., etc., etc.... Frightful (!)
Tommi.
This archive was generated by hypermail 2b28 : Mon Sep 17 2001 - 13:39:44 EEST