Re: [linux-audio-dev] Plugin GUIs

New Message Reply About this list Date view Thread view Subject view Author view Other groups

Subject: Re: [linux-audio-dev] Plugin GUIs
From: David Olofson (david_AT_gardena.net)
Date: Sat Mar 24 2001 - 15:13:36 EET


On Saturday 24 March 2001 10:18, Steve Harris wrote:
> Thomas Merkle, who co-designed the GUI for Reason posted some
> interesting comments about plugin GUI design on the music-dsp
> mailing list recently, subject: Introducing myself.
>
> I don't want to cross post it because the discussion is very
> fragmented, but the gist is:
>
> Storing multiple frames for knobs etc. is best done as a strip or
> grid

Just like it's done in 2D games...

> (Multibit) alpha is important

Yes; that's how you do real time antialiazing.

> Using a 3d rendered model to get the basic shape is good, then
> touch up with photoshop.
> --
>
> I've probably missed some points, but that was what I picked up on.
> I asked him what he though of using XML to represent the layout,
> and he though it wasa good idea, but he expected we would compile
> into something more effient before distributing. Not sure that is a
> good idea myself.

I don't see the point in compiling *before* distribution. Actually,
it shouldn't be compiled at all, unless it's used while *running* the
GUI. It seems rather obvious to me that the XML should only be used
for creating and initializing widgets that are implemented in native
code...

> Turning individual bitmaps into a strip can be easily done with
> imagemagick, will it have any negative effects?

Depends on the rendering API and drivers, but in general, it's
definitely a good way of doing it.

It may be a good idea to arrange the frames in a *vertical* strip
though, especially for software rendering. That way, blitting a frame
becomes a sequential operation WRT memory access, as opposed to
massive cache thrashing. (Not that it makes much of difference unless
you're blitting hundreds of small images, as you do in some games...)

> Doesn't alpha blending really sting X servers, even with Xrender?

Naah... Try SDL for an implementation that's meant for real time 2D
rendering.

Alpha blending is not that bad, especially not if you're only using
for antialiazing of the edges of knobs and the like. RLE encoding
makes it virtually as fast as colorkeyed blitting for software
surfaces in SDL.

(Now, SDL runs on a lot of platforms and does all sorts of nice
things - but it currently doesn't do multiple windows in windowed
mode. This will probably change with SDL 1.3, though.)

> I presume that its faster on windows.

Why? AFAIK, neither supports it properly without direct rendering
APIs, so you're better off (and more likely to always get what you
want) doing it in software.

> OTOH using the SSE extensions
> you can do it really quickly on intel chips, and these are easy to
> get to from gcc.

(Also possible with AltiVec, of course.)

Anyway, there are a few libraries and stuff that do this kind of
stuff - and are heavily optimized for several platforms as well, so
there should be a lot of code available - or libs to just use as they
come.

//David

.- M A I A -------------------------------------------------.
| Multimedia Application Integration Architecture |
| A Free/Open Source Plugin API for Professional Multimedia |
`----------------------> http://www.linuxaudiodev.com/maia -'
.- David Olofson -------------------------------------------.
| Audio Hacker - Open Source Advocate - Singer - Songwriter |
`--------------------------------------> david_AT_linuxdj.com -'


New Message Reply About this list Date view Thread view Subject view Author view Other groups

This archive was generated by hypermail 2b28 : Sat Apr 07 2001 - 15:40:10 EEST