Re: [linux-audio-dev] promoting LAC 2007

2007-03-27 Thread Steve Harris


On 27 Mar 2007, at 16:01, Fons Adriaensen wrote:


On Tue, Mar 27, 2007 at 04:17:16PM +0200, Frank Barknecht wrote:


Maybe one day there will be a Linux version of Live, but it's
not something I particularily look forward to, as I wouldn't
use it anyways unless it gets opensource'd.


There are probably many of us thinking the same way.

But the sad fact is that if all Linux users do this, then
Linux will forever be an 'amateur' platform. From the PoV
of a professional audio user (i.e. one who makes his/her
living by providing services in that area), if a product
does the job and has the right price, there is no good
reason for not using it.


I mostly agree, but in some ways the acceptable quality of the linux  
audio offerings makes proprietary software less necessary. OTOH, for  
processing photos I mainly use proprietary software (Lightroom,  
Bibble [on Linux] and Capture NX), as the free software options are  
simply not up to the job. For comparison the only proprietary music  
software I use is to control some dedicated synth hardware.


Obviously I'd prefer to use 100% free software, but I'm more  
pragmatic than ideological.


- Steve


Re: [linux-audio-dev] Getting out of the software game

2007-03-14 Thread Steve Harris

On 14 Mar 2007, at 15:34, Lee Revell wrote:

My other response would be to point to all the successful vendors who
*do* provide open Linux drivers.  Creative released a GPL emu10k1
driver and went on to sell gazillions of those devices to Linux users,
and the competition never cloned their hardware, because they patented
their hardware innovations.


And because their hardware is weird and terrible, but that's another  
story.


I agree, FWIW, I'm just not sure that's a compelling example.

- Steve


Re: [linux-audio-dev] 2-channel stereo compatible ambisonics...

2007-03-14 Thread Steve Harris


On 14 Mar 2007, at 10:10, Joern Nettingsmeier wrote:


Steve Harris wrote:

On 13 Mar 2007, at 09:15, Valent Turkovic wrote:

Hi,
is it possible to record multi channel speech audio and down  
sample it
2 stereo channels BUT with horizontal audio positioning of each  
audio

channel ie. like dolby surround effect.
Sure, but you might be disappointed by the results, Pro Logic is  
not very sophisticated (eg. there's no separate rear left and  
right channel, and the bandwidth is limited). Also the only free  
software implementation that I know of is not state of the art,  
partly due to patent problems, and partly due to lack of interest.
There's a LADSPA plugin: http://plugin.org.uk/ladspa-swh/docs/ 
ladspa-swh.html#id1401
which does Pro Logic matrix encoding, you will need some other  
software to mix your independent streams into LCR channels (you  
can do it by ear with a 3+ variable send bus mixer), but once you  
have that you can feed it to the plugin and get a pro logic  
compatible stream out.
PS ignore the documentation, it has been tested, and it does work,  
just not brilliantly. You will get better results if you EQ the  
mics a bit to cut the level of the highs and lows a bit,  
especially in the rear channel.
You would get much better results with an ambisonic stream, but I  
don't /think/ you can make stereo-compatible ambisonic streams,  
and not many people have ambisonic decoders. Other people on this  
list know a lot more about ambisonics though.


i'm very new to ambisonics, so i may be wrong, but i think there  
are indeed stereo compatible first-order ambisonics streams. iirc,  
the format is called UHJ, and it matrixes WXY (lossily) into L/R  
(i.e. no height information).


i've changed the subject to bait fons :-D
if we're lucky he knows an implementation of 2-channel UHJ.

i found this article: http://www.ambisonic.net/ambi_AM91.html
but it does not give details as to how the matrix encoding is  
accomplished.


Hi Joern,

Hmm, interesting, though it sounds like you'd need a specialised UHJ  
ambisonic decoder to play it back. That probably narrows the audience  
even further.


- Steve


Re: [linux-audio-dev] denormals or ... ?

2007-03-13 Thread Steve Harris

Hi Dave,

To be getting problems from denormals you really need a stretch of  
silence going into some effects processing. From your description it  
doesn't seem like that's very likely. If you do have a stretch of  
silence, add a small amount of noise to the track, and if it goes  
away you have a denormal bug, and you can shoot the plugin developer :)


It could also be a NaN problem, which have similar symptoms but can  
happen at any time. Their uncommon, but much nastier to find and fix.


If you skip forward to near the point where it jams and play from  
there, does it still jam? Have you tried muting some tracks to see if  
it still happens?


- Steve

On 13 Mar 2007, at 15:08, Dave Phillips wrote:


Greetings:

I have a problem with a piece I'm working on in Rosegarden 1.5.  
I've appended the text I sent to Chris Cannam, along with his  
response (I hope he doesn't mind). Btw, the machine is based on an  
AMD64 3200+, with 2G RAM and an 80G hard drive. Sound runs through  
an M-Audio Delta 66. Distro is 64Studio 2.0.


My questions lead, Chris's replies follow :


2) I've written a piece consisting of six tracks with these specs:

  Tr.1 (audio) drum loop, repeated, 1 plugin (CAPS plate reverb 2x2)
  Tr.2 (MIDI) bass part, repeated, uses patch from 8mbgmsfx.sf2
soundfont, no fx (part is rendered via QSynth which does have its
reverb active)
  Tr.3 (audio) rhythm guitar loop, repeated, 3 fx (dj EQ mono, CAPS
compress, CAPS plate 2x2)
  Tr.4 (audio) lead guitar, no repeats or copy, 4 fx (CAPS plate  
2x2,

AmpIV, AM pitch shifter, multiband EQ)
  Tr.5 (audio) riff loop, copied, 3 fx (dj EQ mono, CAPS compress,
CAPS plate 2x2)
  Tr.6 (audio) another percussion loop, copied, no fx

At 120 BPM the piece is 200+ measures long. It plays along
swimmingly, but at m. 74 (about two minutes into the piece) the  
sound

cuts out entirely. RG continues to run, but it pops up a message
telling me that there's not enough CPU for realtime processing.  
Up to

that point JACK reports approximately 33% CPU usage and no errors,
but then it reports 0(1024) for xruns. I don't know what the second
number (1024) means to JACK, but it keeps rising (with no sound)
until I halt RG.




That sounds a bit like a plugin denormal problem.  Although  
denormals are usually less of a problem on AMD64.


The 0(1024) in qjackctl I think means that JACK has reported 1024  
xruns via the reporting API but they haven't been mentioned in the  
message log.  I don't actually know what causes that.  Does CPU  
usage (as reported by a plain old CPU usage reporting program)  
actually peak at that point?




So my question is: Given my machine, should my CPU be topping out in
this scenario ?




Probably not, or at least I wouldn't expect it to suddenly peak if  
usage has previously been on the low side.


The only thing RG does that may affect CPU usage drastically during  
playback is that it doesn't start running plugins until they  
actually have something to work on, and it stops running them if  
they've fallen silent for a certain period and have no more input  
coming up (this is in contrast to e.g. Ardour which runs plugins  
all the time during playback, taking a more strictly correct view).



So, if anyone has anything to add to Chris's assessment, I'd like  
to know about it. If the problem is indeed related to denormals, is  
there a way to fix it ? Comments and suggestions are most welcome.


Best,

dp




[linux-audio-dev] Hi, is it possible to record multi channel speech audio and down sample it 2 stereo channels BUT with horizontal audio positioning of each audio channel ie. like dolby surround effec

2007-03-13 Thread Steve Harris


On 13 Mar 2007, at 09:15, Valent Turkovic wrote:


Hi,
is it possible to record multi channel speech audio and down sample it
2 stereo channels BUT with horizontal audio positioning of each audio
channel ie. like dolby surround effect.


Sure, but you might be disappointed by the results, Pro Logic is not  
very sophisticated (eg. there's no separate rear left and right  
channel, and the bandwidth is limited). Also the only free software  
implementation that I know of is not state of the art, partly due to  
patent problems, and partly due to lack of interest.


There's a LADSPA plugin: http://plugin.org.uk/ladspa-swh/docs/ladspa- 
swh.html#id1401
which does Pro Logic matrix encoding, you will need some other  
software to mix your independent streams into LCR channels (you can  
do it by ear with a 3+ variable send bus mixer), but once you have  
that you can feed it to the plugin and get a pro logic compatible  
stream out.


PS ignore the documentation, it has been tested, and it does work,  
just not brilliantly. You will get better results if you EQ the mics  
a bit to cut the level of the highs and lows a bit, especially in the  
rear channel.


You would get much better results with an ambisonic stream, but I  
don't /think/ you can make stereo-compatible ambisonic streams, and  
not many people have ambisonic decoders. Other people on this list  
know a lot more about ambisonics though.


- Steve



Re: [linux-audio-dev] audiogui

2007-03-01 Thread Steve Harris


On 28 Feb 2007, at 17:29, Stephen Sinclair wrote:



PS: does anyone know where I can 'GPL' an decent OSC server
implementation in C++?



The LibLo implementation is GPL, very easy to use, and available in  
many distros including Ubuntu.

http://liblo.sourceforge.net/

I'm using it for a project and it seems very good.
I think having an OSC-controlled audio back-end is a Good Thing.


It is C, not C++ though, but I think a few people have used it in  
their C++ programs without too much trouble.


There are some native C++ implementations, but I don't remember the  
names offhand.


- Steve


Re: [linux-audio-dev] processing plugin standard wrapper

2007-02-17 Thread Steve Harris


On 17 Feb 2007, at 10:47, Thorsten Wilms wrote:


On Sat, Feb 17, 2007 at 12:45:37AM -0300, Camilo Polyméris wrote:



Or if two consecutive plugins do FFT,
the first could pass the information to the second in the  
frequency domain.
Neither of these would work with current plugin architectures,  
though.


Well, there has been that idea floating around, about having converter
plugins to and from frequency domain and other plugins that work in
frequency domain exclusively. Using LV2 with whatever extension(s)
would be necessary.


Yeah, I still plan to do this if I ever get the time.

- Steve

Re: [linux-audio-dev] processing plugin standard wrapper

2007-02-14 Thread Steve Harris


On 14 Feb 2007, at 04:18, Leonard Ritter wrote:


On Mon, 2007-02-12 at 13:23 +0100, Stefano D'Angelo wrote:

Hi all,
who would be interested in writing a processing plugin standard
wrapper (LADSPA, DSSI, LV2, VST, etc.)?



...

so you have now 4+1 = 5 interfaces. theoretically, the issue should be
solved, since you have now one central interface to talk to the  
other 4.


however you disregard that in the process of writing your own  
interface,

you learned all other 4 interfaces (so you could translate between
them), which is exactly what you wanted to avoid. of course other  
people

would profit from your work, ideally.

the second issue is that your 5th interface accumulates all  
features of

the other 4, which means that it will be the hardest to comprehend.

...

the route i took for aldrin was to support none of these (since they
didn't match the problem that i had), and, if the need for a certain
piece of dsp code arises, port that code over to my private interface.


So... you're inviting him to learn from your mistake? ;)

I agree with the bulk of what you wrote, the solution to the problem  
of too many APIs is not to add another, but I don't think your own  
code is a good example of that.


I am also not in a position to throw any stones.

- Steve



Re: [linux-audio-dev] Old hat - comparison against windows

2007-01-31 Thread Steve Harris


On 31 Jan 2007, at 14:06, Robin Gareus wrote:


-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1



Lars Luthman wrote:

On Wed, 2007-01-31 at 13:54 +0100, Robin Gareus wrote:

Cons;
 If "windows wants" it can perform better than a fully fledged
rt-unix-kernel. - but that remains to be proven for Vista!


Are you saying that this is true for XP? Are there any references for
that?


maybe not for audio-apps.

I once read some books about "subverting the windows kernel" - one can
do marvelous stuff and get great performance out of it!! - only half
kiddingly. - luckily I have not booted into XP for years and this  
"Con"

might just be crap...

however some instinct tells me that a UNIX - no matter how pre-emptive
or tweaked - will always have more overhead than some DirectX-app.  
- but

IMO this is irrelevant for "normal" audio apps on modern machines.. -
memory management and -locking are more crucial..


I don't know if it's still the case, but a few years ago the NT  
kernel was very heavyweight compared to the UNIX kernel, and too a  
long time to do things like context switches.


- Steve


Re: [linux-audio-dev] Old hat - comparison against windows

2007-01-31 Thread Steve Harris


On 31 Jan 2007, at 11:27, Bob Ham wrote:


On Tue, 2007-01-30 at 23:30 +0100, [EMAIL PROTECTED] wrote:

On Tue, Jan 30, 2007 at 09:18:06PM +, Bob Ham wrote:

On Tue, 2007-01-30 at 21:05 +, Bob Ham wrote:

On Tue, 2007-01-30 at 09:03 -0800, Michael Ost wrote:
Can anyone suggest ways to compare audio/midi performance  
between Linux

and Windows that ... make Linux compare favorably?


I work for a company that sells a Linux based piece of hardware  
that

plays windows VSTs.


The word "FUD" comes to mind.  No idea why.


Further to that, something constructive: perhaps you could try  
telling
your customers why *you* chose linux, rather than trying to find  
reasons

to tell them *they* should.


the customers dont notice. they still use windows or no computers at
all.

it looks rather like a question from the management.


You are correct there.  From the modern business perspective, though,
management are Michael's personal customers.

I think the argument still applies.  If your goal is to convince  
someone

that your choice of linux is correct, telling them why you chose linux
in the first place seems, to me at least, to be the best method,  
rather
than seeking out reasons which you yourself haven't been concerned  
with

previously.


I don't think that's necessarily the case, just because Linux had  
better RT performance in 2000 doesn't mean it still does today, with  
Vista and general improvements.


I think it's reasonable for management to question if it's still the  
best choice.


- Steve


Re: [linux-audio-dev] Old hat - comparison against windows

2007-01-30 Thread Steve Harris


On 30 Jan 2007, at 17:03, Michael Ost wrote:

Can anyone suggest ways to compare audio/midi performance between  
Linux

and Windows that (1) are relevant to non-technical musicians and (2)
make Linux compare favorably?

Not things like "I just don't like Windows" or software feature
comparisons or the politics of open vs. closed source, but rather  
things
like responsiveness to audio interrupts, RAM footprint of the OS  
and ...?


I work for a company that sells a Linux based piece of hardware that
plays windows VSTs. We spend alot of time on compatibility,   
especially

on getting the plugins to work with Wine. I often get asked about
switching to Windows and I don't have a good answer.

My sense is that the main benefit of Linux is that audio interrupts  
are

serviced faster and more predictably than in Windows because of
SCHED_FIFO and Linux's low overhead. And clearly musicians could feel
that, especially at lower buffer size settings so that's the kind of
thing that could matter.


I would have thought that the best way to measure scheduler  
performance is to write a simple VST plugin that writes the precise  
time at which it was called into a ram buffer, and writes the buffer  
out to disk after a few tens of thousands of calls.


You can the measure the times between adjacent runs and work out if  
there's any significant difference in jitter.


I would think that the RAM footprint is essentially impossible to  
measure, as you can't tell what proportion of the kernel space is  
buffers etc.


From a commercial point of view, your are at the very least saving  
licence fees for each piece of hardware, that would surely eat into  
your profit margin.


- Steve


Re: [linux-audio-dev] LADSPA needs & wishes

2007-01-30 Thread Steve Harris


On 30 Jan 2007, at 01:25, Fraser wrote:


Hi Steve,



Ah, well the host is not supposed to change port values during run()
anyway, the idea in LADSPA (and LV2) is that the host should chop the
run() block where port values change. In practice not all hosts do
that, some just pick a suitably small block size, eg. 32 frames and
quantise the changes to that rate.


I didn't realise that - perhaps I glossed over that bit of the spec.
A block size of 32 frames would really exagerate unnecessary paramter
conversion...


Sure, which is why people do tend to do the if (oldval != newval)  
thing on expensive parameter calculations. 32 is really the extreme  
end, I would think that typically its higher than that.


JACK systems do run down to the 32 frame buffer level, so you have to  
be able to handle it anyway. It's quite inefficient as the cost of  
calling the run() function of every plugin for every block is  
significant.


- Steve


Re: [linux-audio-dev] LV2 buffersize extensions (was: LADSPA...)

2007-01-29 Thread Steve Harris


On 29 Jan 2007, at 17:57, Florian Schmidt wrote:


On Monday 29 January 2007 18:22, Steve Harris wrote:


http://tapas.affenbande.org/lv2/ext/fixed-buffersize



http://tapas.affenbande.org/lv2/ext/power-of-two-buffersize



Great idea. I've got some plugins that will benefit a lot by this. We
should link to known extensions on the http://lv2plug.in/ site.

FWIW, my provisional plan was to wait until it seemed like time for a
LV2 1.1 (hopefully not too soon :), then roll all the "popular"
extensions into that.


Ah, i don't mean this extension has to become part of the core LV2  
spec.
Nonono. I was just wondering whether it makes sense that i maintain  
this

seperately and keep the extension URI to my site.

Is there a plan to host some very common extensions on the lv2 site  
(URI
having lv2plug.in in it and docs on the lv2 site), too? If so i  
would like to

see these extensions included.


Ah, I see. In principle that's fine, but in practice I suspect it's  
easier for you to edit the content on your own site. OTOH if people  
are happy to maintain the content via WebDAV then I'm happy to host  
extensions at http://lv2plugin.in/extension/foo or similar.


There should definitely be links to the extensions from the spec site  
either way.



It doesn't make a huge amount of difference whether their included or
not though.


Well, just a visibility thing. By having some extensions documented
and "hosted" on lv2plug.in they probably get more visibility than  
others. For

certain "almost core" functionality this would make sense i think.


Well, for any really. URIs are free and we're not going to run out ;)

- Steve


Re: [linux-audio-dev] LV2 buffersize extensions (was: LADSPA...)

2007-01-29 Thread Steve Harris


On 29 Jan 2007, at 16:51, Florian Schmidt wrote:


On Monday 29 January 2007 09:08, Steve Harris wrote:


Ah, well the host is not supposed to change port values during run()
anyway, the idea in LADSPA (and LV2) is that the host should chop the
run() block where port values change. In practice not all hosts do
that, some just pick a suitably small block size, eg. 32 frames and
quantise the changes to that rate.


Hi, let me chime in because it kidna fits into the subject.

I have defined two (very very simple LV2 extensions):

"The extension’s URI is
http://tapas.affenbande.org/lv2/ext/fixed-buffersize

All that a plugin needs to check is whether a host feature with  
this URI

exists and the data will be a uint32 containing the buffersize.

The host is only allowed to call the plugin’s run function with a  
buffersize

equal to the one specified by the host feature.
There’s a second extension:

http://tapas.affenbande.org/lv2/ext/power-of-two-buffersize

which is identical to above but with the additional requirement  
that the fixed

buffersize has to be a power of two."


Great idea. I've got some plugins that will benefit a lot by this. We  
should link to known extensions on the http://lv2plug.in/ site.


FWIW, my provisional plan was to wait until it seemed like time for a  
LV2 1.1 (hopefully not too soon :), then roll all the "popular"  
extensions into that.
It doesn't make a huge amount of difference whether their included or  
not though.


Before you ask, no I don't have a definition for "popular".

- Steve

Re: [linux-audio-dev] LADSPA needs & wishes

2007-01-29 Thread Steve Harris


On 29 Jan 2007, at 15:23, Paul Winkler wrote:


On Mon, Jan 29, 2007 at 08:08:37AM +, Steve Harris wrote:

Ah, well the host is not supposed to change port values during run()
anyway, the idea in LADSPA (and LV2) is that the host should chop the
run() block where port values change.


/delurk

What does "chop the run block" mean?

/relurk


Imagine you have a block of 1024 samples, and at sample 24 a control  
value changes from 1 to 2, you could do:


   plugin->port = 2.0;
   plugin->run(1024);

which puts the control value change in slightly the wrong place, or  
you could do: (chopping)


   plugin->port = 1.0;
   plugin->run(24);
   plugin->port = 2.0;
   plugin->run(1000);

It's not a technical term or anything, I just needed a word :)

- Steve


Re: [linux-audio-dev] LADSPA needs & wishes

2007-01-29 Thread Steve Harris


On 29 Jan 2007, at 14:41, Lars Luthman wrote:


On Mon, 2007-01-29 at 13:49 +, Chris Cannam wrote:

On Monday 29 Jan 2007 07:39, Nedko Arnaudov wrote:

Chris Cannam <[EMAIL PROTECTED]> writes:

What are they?  Do they do anything else, besides host LV2 plugins?


I'm aware of these LV2 hosts:
 * jack_host from libslv2 project, by Dave Robillard
 * elven from ll-plugins project, by Lars Luthman
 * zynjacku, by me
 * maybe ingen (om), by Dave Robillard, LV2 support is ready too


Thanks.  Is there any more information about Elven (besides the  
code)?


Elven is not really meant to be used. It's an experimental host and a
perpetual work-in-progress that I'm writing to test new extensions and
to see how hard it is to write a basic LV2 host from scratch,  
including

Turtle parsing and RDF subgraph querying (conclusion: not very hard).


I would hope that there aren't many more than this, as it's still a  
draft spec, and it's not all nailed down. I'd hate for too many  
people to implement a draft before it's finalised.


- Steve


Re: [linux-audio-dev] LADSPA needs & wishes

2007-01-29 Thread Steve Harris


On 29 Jan 2007, at 02:18, Fraser wrote:


Hi Steve,


Hi Fraser,


Sure. This was an issue in LADSPA, though not a significant enough
one that anyone wanted it changed. I would suspect you're
overestimating the burden compared to the function call overhead and
cache thrashing. I'd be interested to see figures indicating
otherwise though. There will obviously be cases where it's faster to
set values using callbacks, but I'll bet it's not universal.


I had a thought last night about this - if I am worried about the load
from converting parameters I can always do something like:

if(current_control_value1 != last_control_value1)
{
  recalculate internal_value1
}

in the run loop


Yes, exactly. It's slightly more expensive as you have a conditional,  
but you save the function call overhead, which is something like  
1000-1500 cycles IIRC.



3) changes to parameters can be presented to the run() function
immediately


I don't see how it makes any difference in this area?


in the example code this line:

const float gain = *(plugin_data->gain);

is outside the for loop in the run() function
so changes to the gain are not picked up till the next run() call.


Ah, well the host is not supposed to change port values during run()  
anyway, the idea in LADSPA (and LV2) is that the host should chop the  
run() block where port values change. In practice not all hosts do  
that, some just pick a suitably small block size, eg. 32 frames and  
quantise the changes to that rate.


- Steve


Re: [linux-audio-dev] LADSPA needs & wishes

2007-01-28 Thread Steve Harris

On 28 Jan 2007, at 05:07, Fraser wrote:


however, it and i think all the other issues you raise are all  
solved by
LV2 (LADSPA Version 2), which has come about in part from other  
people's

difficulties with the same range of problems as you.


ahh, so there is a V2 coming, not too much info about it yet out there
(unless you know where to look)


Which is deliberate, as it's not quite finished yet. There was quite  
a lot of discussion here though.


On the "natural" parameter values, I really rather like it that way.  
Sure, it costs a bit of CPU to do the conversion, but it means that  
different plugins of the same type are more likely to be compatible,  
and it makes wiring up things in a modular synth style easier. It  
also means that things like preset files contain the same values as  
the live display, which is helpful.


When it comes to burning a bit of extra CPU power to make the users  
life easier, I'm all for it.


From my quick look at the LV2 spec there's something I'd like to  
see (this

is just my 2c):

The plugin doesn't know when a parameter has changed, so it must  
calculate
it's internal values from the displayed parameter 'as often as  
possible' -
once per run() call (doing it in the for loop itself is just too  
extreme).


Sure. This was an issue in LADSPA, though not a significant enough  
one that anyone wanted it changed. I would suspect you're  
overestimating the burden compared to the function call overhead and  
cache thrashing. I'd be interested to see figures indicating  
otherwise though. There will obviously be cases where it's faster to  
set values using callbacks, but I'll bet it's not universal.


It's also quite convenient for both the plugin and host not to have  
to provide/call callbacks for every parameter.


...

This has the following advantages
1) run() just runs (saved a bit of cpu)


But costs you some extra function calls, and makes the CPU load  
dependent on the frequency of changes, which makes predictably  
hitting RT deadlines harder.



2) internal values are only calculated when the parameter they are
associated with changes


True.

3) changes to parameters can be presented to the run() function  
immediately


I don't see how it makes any difference in this area?

4) the plugin knows when a parameter changed and so can smooth  
jumps in

values itself (rather then hoping to host is doing it)


Either way the plugin is free to do parameter smoothing. Typically I  
just do a linear interpolation and/or a 1st order LP filter.


- Steve


Re: [linux-audio-dev] Sound processing objects architecture, is it possible?

2007-01-25 Thread Steve Harris


On 24 Jan 2007, at 18:04, Stefano D'Angelo wrote:


2007/1/24, Steve Harris <[EMAIL PROTECTED]>:

The way to help, IMHO, would be to make the existing systems
compatible, using bridges/reflectors/wrappers, rather than creating
more specs.

- Steve


Honestly I don't know about PluginCore, however that's not  
necessairly true.

Although it is a completely different thing, take as an example
GStreamer. If you compare a processing plugin to a media file and
plugin development APIs to encodings... in the end they're quite
similar!
As I stated before, while in most cases bridges/reflectors/wrappers
can be made quicker and safer, it must be ensured that there's logical
equivalence beetween the two standards (or that the one you're writing
the plugin for is logically a subset of the one you're going to use).


Not necessarily. In my opinion, often a 90% solution that reuses  
existing technology is better than a 100% one that involves  
reinventing the wheel. Even if the new wheel is a bit more round :)


It's all somewhat a matter of taste though.

- Steve


Re: [linux-audio-dev] JACK data transfers

2007-01-24 Thread Steve Harris


On 24 Jan 2007, at 16:02, Stefano D'Angelo wrote:


Well... I know I'm quite a boring person, but I need some informations
for my project and so I'm going to stress you a bit ;-)
I'm wondering if JACK is suitable to transfer non-audio data beetween
applications (my particular case is to transfer control data to
processing plugins). Is that "naturally" possible, is it an hack or is
it impossible at all?


You could encode control data in the audio stream, or build a bespoke  
JACK that add additional data types, or you could use the nascent  
JACK-MIDI stuff.


You could also look at OSC, which, depending on your syncronisation  
needs could be a better fit.



And another thing (I'm too lazy to check it out myself :-P): does jack
transfers data by copying or uses something like shared memory or
whatever?


It uses shared memory where possible.

- Steve


Re: [linux-audio-dev] Sound processing objects architecture, is it possible?

2007-01-24 Thread Steve Harris


On 24 Jan 2007, at 15:52, Stefano D'Angelo wrote:


2007/1/24, Jay Vaughan <[EMAIL PROTECTED]>:

At 20:08 +0100 22/1/07, Stefano D'Angelo wrote:
>What I'd like to work on is a sound processing architecture (LADSPA,
>VST, DSSI, etc.) wrapper, which hides the details of a particular
>implementation to audio program developers.

Nice idea.  Already done:

http://teragon.org/products/PluginCore/

>What do you think about it?

Would be nice if there were a GPL effort in the same way ..

--

;

Jay Vaughan




Well, it seems like LV2 can do (at least theorically) all of these
already, altough some things might be a bit tricky (read the rest of
the conversation).
Now I'm seeking whether this approach (LV2 bridges plugins) can
present practical problems and, in such case, I think it's better to
solve them in LV2 than restart from scratch.
To be true, there are two things I'm concerned about: one (less
relevant, maybe) is RDF files... a bridge plugin should generate them
for all installed plugins when it is loaded, and so it has to contain
(or link to) code that can handle such syntax (I really don't
understand why LV2 developers choose such language instead of XML,
which is much more known and supported).


For one thing XML has no guarantee of extensibility, making it  
unsuitable.



The other one is more serious (but should have been also faced by
vstserver, fst and dssi-vst): I'm talking about logical compatibility
beetween LV2 and other standards (VST in this case) in handling some
tasks (settings and session storing, banks/effects/programs metaphor,
etc.). Does anyone know about these matters?


That was outside the remit, LV2 1.0 was just intended to replace  
LADSPA, and LADSPA doesn't have those features. However, LV2 is  
designed to be easy to extend to include such things.



Then I think that it would be nice if some GUI programs could take
advantage of trapping Xlib (or whatever) functions (LD_PRELOAD?) in
order to embed plugin GUIs inside the app and/or have a library that
autogenerates GUIs for non GUI-plugins (well... the XML GUI
specification for LADSPA has been dropped in LV2 in favour of
extensions?).
... it's such a complex matter :-P


The tripping point is the X event loop. Allegedly GTK and Qt have  
compatible event loops, but that's still quite limiting, and I don't  
think anyone's built a proof of concept.


- Steve


Re: [linux-audio-dev] Sound processing objects architecture, is it possible?

2007-01-24 Thread Steve Harris


On 24 Jan 2007, at 15:06, Jay Vaughan wrote:


At 20:08 +0100 22/1/07, Stefano D'Angelo wrote:

What I'd like to work on is a sound processing architecture (LADSPA,
VST, DSSI, etc.) wrapper, which hides the details of a particular
implementation to audio program developers.


Nice idea.  Already done:

http://teragon.org/products/PluginCore/


What do you think about it?


Would be nice if there were a GPL effort in the same way ..


Hum. I'm reminded of the often used thought process: "hmmm, there are  
way to many standards in this area, what we can do to improve things  
is add another, that would be great!".


The way to help, IMHO, would be to make the existing systems  
compatible, using bridges/reflectors/wrappers, rather than creating  
more specs.


- Steve


Re: [linux-audio-dev] Sound processing objects architecture, is it possible?

2007-01-23 Thread Steve Harris


On 23 Jan 2007, at 16:14, Stefano D'Angelo wrote:


Just some last questions and I'll stop shouting and fooling around :-)

This issue should also have been faced with vstserver, fst and so, but
I never used them, so I'm just asking (I'm doing all of these because
I'm working on a DSP program): how would a LV2 VST loader handle VST
plugins with various effects, banks and programs, expecially in the
case (if any and/or possible) where such plugin makes some fades when
changing while playing (real-time processing)?


I've no idea, you'd have to ask the authors of those other converters.


Then... I see in VST docs that a getInputLatency and getOutputLatency
functions are defined. I think that these could be used as extensions
on a LV2 host, but such values are to be trusted under wine?


LADSPA has _latency ports, I don't remember what we said for LV2. The  
latency should only be algorithmic, so wine should not be relevant.



And what about the combination of LASH and VST storing system?


Sorry, I don't know anything about the VST storing system.

- Steve


Re: [linux-audio-dev] Sample Rate Converter Comparison

2007-01-23 Thread Steve Harris


On 23 Jan 2007, at 14:43, Paul Davis wrote:


On Tue, 2007-01-23 at 14:31 +, John Rigg wrote:

On Tue, Jan 23, 2007 at 08:53:13AM +1100, Erik de Castro Lopo wrote:

Hi all,

SecretRabbitCode was recently included in a test of a number of
commercially available sample rate converters and while it wasn't
the best, it certainly didn't disgrace itself either.

The results are here:

http://src.infinitewave.ca/


Don't know if it's just me, but I can't get the images to change on
the web page (using Firefox 1.0.4 with javascript turned on). The  
only
way I can look at the results is to get the URLs for individual  
images

from the page source and type them in manually.


its just you :) or rather, an early version of firefox perhaps. i have
1.5.X and it works fine here.


Works fine with my 2.0.0.1 too.

- Steve


Re: [linux-audio-dev] Sound processing objects architecture, is it possible?

2007-01-23 Thread Steve Harris


On 23 Jan 2007, at 13:19, Stefano D'Angelo wrote:


2007/1/23, Steve Harris <[EMAIL PROTECTED]>:


On 23 Jan 2007, at 12:17, Stefano D'Angelo wrote:
>>
>> You need to read the spec again.
>>
>> The terminology is confused, not least in the spec documents,  
but a
>> single .lv2 "plugin" can host multiple effects with different  
ports

>> and so on.
>>
>> - Steve
>>
>
> Oops... seems like I'm a bit confused! Well, I'm going to reread  
the
> LV2 spec and try to figure out how to manage this kind of  
situations.

> Sorry for wasting your time!

Not at all, at the very least it points out that the LV2 spec needs
to be clearer, and probably needs better examples.

- Steve



Well, maybe it's because I'm not very good at English :-)
However I have another question: how would a LV2 VST loader plugin
could communicate to the host a VST plugin info? This could be done
only via an extension?


That's the slightly tricky part, the VST reflector would have to  
generate an RDF file describing all the VST plugins it knows about.  
That will work fine, and is not particularly difficult, but it could  
be made slicker with an extension that allowed the VST reflector to  
generate that file dynamically.



Then, if I understood correctly, such LV2 VST loader plugin, when
asked for effects, should return a list of all effects of all VST
plugins it knows about?


Yes, it can just return the URIs of all the installed VST effects as  
return values of the lv2_descriptor() calls. The host calls it  
repeatedly until it's found all the effects.


- Steve


Re: [linux-audio-dev] Sound processing objects architecture, is it possible?

2007-01-23 Thread Steve Harris


On 23 Jan 2007, at 12:17, Stefano D'Angelo wrote:


You need to read the spec again.

The terminology is confused, not least in the spec documents, but a
single .lv2 "plugin" can host multiple effects with different ports
and so on.

- Steve



Oops... seems like I'm a bit confused! Well, I'm going to reread the
LV2 spec and try to figure out how to manage this kind of situations.
Sorry for wasting your time!


Not at all, at the very least it points out that the LV2 spec needs  
to be clearer, and probably needs better examples.


- Steve


[linux-audio-dev] Back in the land of the connected

2007-01-23 Thread Steve Harris

Just a quick heads-up.

As some of you may know, I recently left my old job and the  
University of Southampton. But, I forgot to fill in the paperwork to  
keep my old accounts, machines etc.


Consequently my @ecs.soton.ac.uk and @plugin.org.uk addresses stopped  
working, and the server that was running plugin.org.uk went offline.  
I now have my email accounts back. I'm still fishing through the  
backlog, so if you sent anything and I haven't replied, give it a  
week or so then try again. Some stuff will have been lost.


Plugin.org.uk is back online at a new server, but judging by my inbox  
some things aren't working right. I'll look at it over the next day  
or so.


- Steve


Fwd: [linux-audio-dev] Sound processing objects architecture, is it possible?

2007-01-23 Thread Steve Harris

On 22 Jan 2007, at 22:15, Stefano D'Angelo wrote:


2007/1/22, Dmitry Baikov <[EMAIL PROTECTED]>:

On 1/23/07, Stefano D'Angelo <[EMAIL PROTECTED]> wrote:
> Good point! This is true, but there are lots of sound processing
> plugins around, so maybe instead of creating a new API and then  
apply
> some "compatibility layer", it should be better to create a  
wrapping

> tool natively. I think it should be also easier to expand.

Then, embrase LV2 and create LV2 plugins that will load VSTs, LADSPA
and anything you want.
Or if you want something not possible with LV2, write an extension  
proposal.


I think LV2 was designed as a very extendable API.
If it is not, in your opinion, then help the guys to improve it.


That could be a very wise solution, but there's one big problem with
it: when you load a LV2 plugin, you load only one plugin!
To be clearer I make an example: I have 10 VST plugin, and I want to
write a LV2 plugin which loads VST plugins. When the LV2-aware
application asks me which plugin I want to load I should specify the
VST plugin loader... but then? There's no way for my LV2 plugin to
determine which VST plugin it should load.


This works fine, and was in the design brief for LV2. When asked what  
effects your LV2 plugin supports, you can return a list.



But also if this is an overcomeable problem, for each VST plugin I
load I have to waste memory space with a new instance of the LV2 VST
loader plugin.


No you don't. A LV2 VST loader would be a single shared object, so  
the OS would only load one instance of it.



Then, it is quite absurde from the user point of view to open a plugin
which lets you open other plugins... it's just illogical!


It doesn't look like that to the user, they will just see a list of  
plugins, some of which will be VST and some will not be. Have you  
tried the DSSI VST reflector? It would work the same as that.



Don't misunderstand me, LV2 is great, I think that it's the best
processing architecture out there, but it's designed with a 1:1
relationship in mind (one plugin = one effect). That's absolutely not
an LV2 weakness, it just does its job and nothing else (as it should
be).


You need to read the spec again.

The terminology is confused, not least in the spec documents, but a  
single .lv2 "plugin" can host multiple effects with different ports  
and so on.


- Steve


Re: [linux-audio-dev] plugin loaders

2006-12-21 Thread Steve Harris
On Wed, Dec 20, 2006 at 09:11:06 -0500, Paul Davis wrote:
> > 2. We build binaries for the lowest common denominator, so the plugins
> > you'll find in Fedora, for instance, don't take advantage of SSE
> > hardware or instruction scheduling for different processors.  This can
> > make a huge difference.  What would be nice is if we could distribute an
> > RPM containing a plurality of plugin builds, and then have the
> > application load the plugin matching the capabilities the execution
> > platform.
> 
> that's hard. but then again  seems like its the job of a package
> manager to identify the correct build to install on processor foo,
> right?

Perhaps, perhaps not. LV2 has the potential to make that easier, as
plugins are in directories, which can have multiple .so files, and they
can be annotated so the host can pick out the right one. They could even
be cross platform that way.

c.f. http://lv2plug.in/ - though the full docs for the directory format are
not yet uploaded.

- Steve


Re: [linux-audio-dev] Anyone else ever run a THD test on Jamin?

2006-11-06 Thread Steve Harris
On Sun, Nov 05, 2006 at 06:07:33 -0500, Paul Winkler wrote:
> On Sun, Nov 05, 2006 at 09:44:14PM +, Dan Mills wrote:
> > Hi all, 
> > While hacking around with aliasing effects in digital compressors (Yes
> > it is real, yes you can hear it!), I happened to run a 10Khz sine wave
> > into jamin  with an instance of Jaaa hooked up to the output.
> > 
> > The results were 'interesting' as it appears that jamin introduces
> > easily measurable harmonic distortion even with all compressors and eq
> > bypassed! Switching the master bypass in jamin however does make the
> > effect go away. 

That probably an effect from the compressors, someone pointed out
that there is a distortion on the falling edge of sinewaves, I've not had
time to look at it.

I did do THD tests on the EQ etc., but not the compressors.
 
> I haven't tried anything like that, but I did notice that listening
> to the low band soloed (no mids, no highs) there was some easily
> audible distortion that I couldn't get rid of.
> When turning off the solo switch, it either went away or was masked by
> the mids and highs.
> Not sure which version of JAMIN, this was early 2006 and
> I haven't used it lately.

That's not too surprising, the solos dont really do the right thing, and
you will end up with some distortion around the band changoever points.

- Steve


Re: [linux-audio-dev] Paper on dynamic range compression

2006-10-18 Thread Steve Harris
On Wed, Oct 18, 2006 at 12:14:45 +0100, John Rigg wrote:
> The fact remains that a lot of high end professional users consider many
> of the free software plugins to be "nearly unusable" (see Ben Loftis'
> earlier post in this thread). This isn't intended as a criticism of the
> developers, just an acknowledgement that perhaps more attention needs to be
> paid to some fairly subtle aspects of design that have not been
> considered important up to now, if these high end users are to take
> Linux audio more seriously.

I don't doubt that, (though some professionals are using them in thier
day-to-day jobs) but I think there are more serious tuning issues to be
addressed than these.

E.g. the gain recovery shape in the SC* compressors is all wrong, the
attack is a bit too gentle and the decay is much to quick to decay. This
makes them sound a bit inert, which is fine for clinical AGC, but not good
for the classic compressor effect in musical applications.

Getting the tuning to the level it's at now, with relatively little feedback
effects between the followers and gain curves took me a couple of days, so
it's no simple job to go in and change things. If at some point in the
future I'm not working 14 hour days and I can take a couple of days off I
might feel up to it. It's been on my TODO list for a few years.

- Steve


Re: [linux-audio-dev] Paper on dynamic range compression

2006-10-18 Thread Steve Harris
On Wed, Oct 18, 2006 at 11:12:32 +0100, Dan Mills wrote:
> 
> --- Steve Harris <[EMAIL PROTECTED]> wrote:
> 
> > > But that puts potentially expensive gain
> > > calculations into the fast sr code, also I was
> rather planning
> > > on using the impulse used for the upsampler to
> > >provide the band limiting for free.
> > 
> > the gain calculations are relativly cheap, its
> > converting those gain
> > levels back into a gain coefficient on the output
> > that's expensive (from
> > what I remember).
> 
> But all that can still be done at 44.1/48, it is only
> the final sample multiplication that needs its inputs
> band limited and thus potentially needs the upsampler.

It's not that simple. The gain coefficient is not calculated for every
sample.

> > I dont think a streaming resampler is more
> > challenging than a correct one
> > that runs on buffers. You just have to preserve
> > state with every call,
> > rather than at the buffer boundaries.
> 
> But that breaks the ability to use the vectorisation
> capability of modern compilers and  besides the call
> and return overhead will end up costing as much as the
> convolution!

The vectorisation point is right, but the call and return is taken care of
by inlining in modern compilers, it's quite cheap.

- Steve 


Re: [linux-audio-dev] Paper on dynamic range compression

2006-10-18 Thread Steve Harris
On Wed, Oct 18, 2006 at 11:02:26 +0100, Dan Mills wrote:
> 
> --- Steve Harris <[EMAIL PROTECTED]> wrote:
>  
> > These are aliasing artifacts in the sidechain
> > though, right? So they will
> > show up as modulations in the output, rather than
> > directly audible
> > aliasing.
> 
> The last thing almost all software compressors do is
> something of the form output = gain * sample; 

It's not quite that simple. But broadly, yes, that's why I said it would
be modulated by the product of the alising. Gain is in the range (0,1] so
it will be amplitude modulated.

The alising is present in the sidechain, right? So a filterted version of
the alising will be present in the output of the gain stage.

- Steve 


Re: [linux-audio-dev] Paper on dynamic range compression

2006-10-18 Thread Steve Harris
On Wed, Oct 18, 2006 at 06:50:39 +1000, Erik de Castro Lopo wrote:
> Its very easy to get carried away with trying to reach some sort
> of audio perfection. Things like upsampling in order to apply 
> compression is over-engineering.

I'm tempted to agree. Particualrly the interpediate peak thing, if the
compressors gain slope is appropriatly shallow then the output waveform
will still have the intermediate peak in it. If your DA converter is
broken, you can't really fix that up in software.

According to a collegue, there was a study of consumer hardware DACs for
this behaviour, and there was a mix of results, some reconstruct the
correct curve, some produce an over, but not correct curve and some clip.
>From what he can remember it mostly depended on the manufacturer.

- Steve


Re: [linux-audio-dev] Paper on dynamic range compression

2006-10-18 Thread Steve Harris
On Wed, Oct 18, 2006 at 12:48:59 +0100, Dan Mills wrote:
> 
> --- John Rigg <[EMAIL PROTECTED]> wrote:
> 
> > If the control signal is derived from the upsampled
> > input
> > to the compressor, that is taken care of.
> 
> But that puts potentially expensive gain calculations
> into the fast sr code, also I was rather planning on
> using the impulse used for the upsampler to provide
> the band limiting for free.

the gain calculations are relativly cheap, its converting those gain
levels back into a gain coefficient on the output that's expensive (from
what I remember).

the gain tracking is done per sample, but the cofficient calcualtion is
done every 4.

> BEAST was the project that had the SSE 2* up/down
> sampler code that seems to be reasonably quick. 

But what interpolation function? If you something obvious and cheap you
may as well not bother, as you wont get accurate peak interpolation.

> The API is likely to be 'interesting' as most dynamics
> plugs don't generate an array of gain values then
> apply them, and a single sample streaming resampler
> doesn't bear thinking about. 

I dont think a streaming resampler is more challenging than a correct one
that runs on buffers. You just have to preserve state with every call,
rather than at the buffer boundaries.

- Steve


Re: [linux-audio-dev] Paper on dynamic range compression

2006-10-18 Thread Steve Harris
On Tue, Oct 17, 2006 at 04:43:39 +0200, Fons Adriaensen wrote:
> On Tue, Oct 17, 2006 at 09:59:10AM -0400, Paul Davis wrote:
> > On Tue, 2006-10-17 at 11:56 +0200, Fons Adriaensen wrote:
> > 
> > > 'THE SAMPLES ARE NOT THE SIGNAL'. The real peak level of a
> > > signal when converted to the analog domain can be several
> > > dB above that of the highest sample.
> > 
> > indeed. there are people who are coming to believe that this "error" is
> > responsible for a significant part of the audible difference between
> > digital and analog playback when the levels in the source material are
> > high. 
> 
> It could be. OTOH, most DACs today would upsample and filter before the
> real conversion takes place, and could allow for this. But maybe they
> don't, and just clip at that point.

I've actually measured this with an oscilloscope (because I'm that sad,
and to settle an argument), and at least the DA converters I tested did
respect the fact that the peak voltage was obove the INT_MAX voltage level.

It was a few years ago, so I cant remember what I tested, but one thing
was a yamaha digital desk.

- Steve


Re: [linux-audio-dev] Paper on dynamic range compression

2006-10-18 Thread Steve Harris
On Tue, Oct 17, 2006 at 01:53:40 +0100, John Rigg wrote:
> On Tue, Oct 17, 2006 at 11:56:20AM +0200, Fons Adriaensen wrote:
> > On Mon, Oct 16, 2006 at 07:48:35PM +0100, Dan Mills wrote:
> > > The gain control signal has energy right the way out
> > > to the band limit (and probably aliased around it),
> > > never mind what happens when that hits the multiplier!
> > 
> > The question is: how much of this HF energy is there ?
> > There shouldn't be much in a compressor with controlled
> > attack / release times. In that case it is always possible
> > to filter the control signal. In fact the obvious way to set
> > attack / release times is by such filtering !
> 
> True, but if the audio signal contains significant HF energy near
> the band limit, it doesn't take a very fast gain change to push it
> past that. Bear in mind that the ear is _very_ sensitive to aliasing
> artifacts, so `significant' can be a very small amount.

These are aliasing artifacts in the sidechain though, right? So they will
show up as modulations in the output, rather than directly audible
aliasing.

- Steve


Re: [linux-audio-dev] Paper on dynamic range compression

2006-10-17 Thread Steve Harris
On Tue, Oct 17, 2006 at 11:56:20 +0200, Fons Adriaensen wrote:
> On Mon, Oct 16, 2006 at 07:48:35PM +0100, Dan Mills wrote:
> 
> > The gain control signal has energy right the way out
> > to the band limit (and probably aliased around it),
> > never mind what happens when that hits the multiplier!
> 
> The question is: how much of this HF energy is there ?
> 
> There shouldn't be much in a compressor with controlled
> attack / release times. In that case it is always possible
> to filter the control signal. In fact the obvious way to set
> attack / release times is by such filtering !

Right, the RMS envelope follower in SC* is a lowpass filter, though its
only a one pole IIRC, so it wont be steep enough to kill off everything in
the top end.

> A fast limiter needs a higher sample rate or interpolation
> anyway, just to detect the correct peak level. Remember that
> 'THE SAMPLES ARE NOT THE SIGNAL'. The real peak level of a
> signal when converted to the analog domain can be several
> dB above that of the highest sample.

True enough, and infact the SWH lookahead limiter doesn't upsample. It
probably should do, but it's quite expensive.

- Steve


Re: [linux-audio-dev] Paper on dynamic range compression

2006-10-06 Thread Steve Harris
On Thu, Oct 05, 2006 at 10:48:07 -0500, Andres Cabrera wrote:
> Hi,
> 
> Here they are:
> 
> www.geminiflux.com/SC1-Processed.jpg
> 
> www.geminiflux.com/SC4-Processed.jpg

What's that glitch near the cursor? Is that a bug, or was it in the input
waveform?

What immediatly strikes me as wierd is that you don't get that rippling
effect in the attack, or at least it's not as pronounced. Without delving
into the code too deeply, I think theres a bug, theres some interpolation
factor that's calculated from the attack coefficient (ef_a), but then its
later applied whether were in the attack segment or the decay segment.

So actually it's not linearly interpolated, I think I was attempting to
process the gain response with the envelope function. But I'm not really
sure, as theres no comments in the code (bad Steve, no biscuit).

- Steve


Re: [linux-audio-dev] Paper on dynamic range compression

2006-10-06 Thread Steve Harris
On Thu, Oct 05, 2006 at 08:14:35 +0200, David Olofson wrote:
> On Thursday 05 October 2006 19:59, Paul Winkler wrote:
> > On Thu, Oct 05, 2006 at 07:07:34PM +0200, Fons Adriaensen wrote:
> > > On Thu, Oct 05, 2006 at 05:12:20PM +0100, Steve Harris wrote:
> > > 
> > > > The SC* plugins do the same as TAP (calculate the gain every 4
> > > > samples), 
> > > > but I interpolate the gain values between each computation. The
> > > > attch/deacay times were slow enough in my testing that it was OK
> > > > to do 
> > > > that.
> > > 
> > > It should be OK for all practical attack/release times. The only
> > > penalty is 3 samples of delay on the gain change and maybe that's
> > > to be avoided for a hard limiter. For a normal compressor it
> > > should not matter.
> > 
> > That is what, 90 microseconds at 44.1 kHz? I don't think there are
> > any analog compressors that react anywhere near that fast. Don't
> > worry about it :-)
> 
> I don't know how fast it *actually* is, but FWIW, my old Behringer 
> compressor/limiter has a lowest attack setting of 0.1 ms, and a 
> lowest release setting of 50 ms.

So that would be a little iffy. SC4 only advertises that it goes down to
1.5ms, which gives something like 90 segments in the attack segment.

Looking at the code, the compressors use a pretty expensive linear -> dB
conversion routine (cubicly interpolated lookup table) to work out the
gain changes, maybe I could substitute a cheap approximation function.
I'll bet that analogue compressors didn't use accurace logarithmic
approximations. I'm not sure It'd be worth dropping the calcualtion period
below 2 though.

- Steve


Re: [linux-audio-dev] Paper on dynamic range compression

2006-10-05 Thread Steve Harris
On Thu, Oct 05, 2006 at 05:04:07 +0100, Steve Harris wrote:
> On Thu, Oct 05, 2006 at 05:29:20 +0200, Alfons Adriaensen wrote:
> > On Thu, Oct 05, 2006 at 09:14:26AM -0500, Andres Cabrera wrote:
> > 
> > > Just to clarify the problem I'm encountering, here's a zoom in on the 
> > > processed wave, exactly at the point where gain reduction starts 
> > > occuring. This screenshot doesn't apply any of the methods proposed in 
> > > the paper, it shows the output of the plugin. This behavior occurs for 
> > > the Tap, SC1 and SC4 plugins in Ardour, Audacity and Rezound. All 
> > > processed files were saved at 32-bit floating point.
> > > 
> > > www.geminiflux.com/Tap-processed.jpg

The SC* plugins do the same as TAP (calculate the gain every 4 samples),
but I interpolate the gain values between each computation. The
attch/deacay times were slow enough in my testing that it was OK to do
that.

It would be trivial to change the plugins to caclulate every sample, but
at the time they were first released it made the plugin too expensive to
run many at once. Things may be better on current CPUs.

- Steve


Re: [linux-audio-dev] Paper on dynamic range compression

2006-10-05 Thread Steve Harris
On Thu, Oct 05, 2006 at 05:29:20 +0200, Alfons Adriaensen wrote:
> On Thu, Oct 05, 2006 at 09:14:26AM -0500, Andres Cabrera wrote:
> 
> > Just to clarify the problem I'm encountering, here's a zoom in on the 
> > processed wave, exactly at the point where gain reduction starts 
> > occuring. This screenshot doesn't apply any of the methods proposed in 
> > the paper, it shows the output of the plugin. This behavior occurs for 
> > the Tap, SC1 and SC4 plugins in Ardour, Audacity and Rezound. All 
> > processed files were saved at 32-bit floating point.
> > 
> > www.geminiflux.com/Tap-processed.jpg

[I miseed the orignal posting, but went back i the archives and found it]

This is kinda interesting, but it's slightly peverse as some ofthe results
can be got by looking at the source! Though it's good to confirm what the
results actually are.

Like Fons I'm a bit concerned about the tests, 0dB square wave in
particular is worrying.

The point about latency is interesting. I did consider delaying the input
in the SC* plugins, but I guess that analogue compressors likly didn't
have it, and they're often considered to be the best so it can't be too
important.

Have you measureued the systemic delay of the waves compressor to verify
that it does have a delay line?

- Steve


Re: [linux-audio-dev] How to test resampling quality?

2006-09-27 Thread Steve Harris
On Wed, Sep 27, 2006 at 11:16:27 +0100, James Courtier-Dutton wrote:
> Hi,
> 
> I was wondering if there are any tools out there to test audio
> resampling quality. I am particularly interested in 44.1kHz to 48kHz
> resampling due to the fact that most sound cards prefer 48kHz.
> 
> At least with up sampling (low rate to higher rate) one does not get
> aliasing.
> 
> I really just want to find some algorithm that I can use to compare
> 44.1kHz audio signal with an 48kHz audio signal, and to see if there has
> been any lose of quality during the up sample.

I'm not sure if it's a good technique, but to test my dithering algorithms
I took high precision FFTs of the input (sine wave IIRC) and output
signals and looked for extranous peaks. You can see the test code in the
tarball: http://plugin.org.uk/libgdither/libgdither-0.6.tar.gz
c.f. http://plugin.org.uk/libgdither/TESTING

- Steve


Re: [linux-audio-dev] pink noise generation

2006-09-27 Thread Steve Harris
On Thu, Sep 28, 2006 at 02:06:50 +0400, Andrew Gaydenko wrote:
> Hi!
> 
> Can anybody point me to theoretical and algorithmic fundamentals
> of real-time (JACK-oriented) (pseudo)pink noise generation at
> given frequency range?

Have a look at Fons Adriaensen's Jnoise:
http://users.skynet.be/solaris/linuxaudio/

- Steve


Re: [linux-audio-dev] LADSPA preset musings

2006-09-18 Thread Steve Harris
On Sun, Sep 17, 2006 at 11:22:29 +0200, Luis Garrido wrote:
> I have also thought of RDF/turtle as per the new LV2 spec but, if I am
> not mistaken, raptor doesn't write turtle and, to be honest, all this
> subject/predicate/object/ontology stuff seems like a bit of overkill
> just to store groups of (int, float) pairs, although this may change
> in LV2 if float is not the only type supported anymore.

Raptor writes NTriples, which is a subset of Turtle.

- Steve


Re: [linux-audio-dev] job offer... [Fwd: Algorithm Development Manager (Full-Time)]

2006-08-25 Thread Steve Harris
On Fri, Aug 25, 2006 at 01:11:53PM -0400, Paul Davis wrote:
> On Fri, 2006-08-25 at 17:02 +, carmen wrote:
> > i guess everyone has to pay the rent somehow...but do a indeed/simplyhired 
> > search for linux audio, or similar. and check out the names of the top 10 
> > entriesSony, Avid, Qualcomm. id rather work at starbucks than give them 
> > more intellectual property :)
> 
> thats pretty much what they did, in addition to sending to linux-audio-
> announce. i know at least 6 people who got this (and related) emails.

7. I'm not opposed to companies posting to l-a-a or l-a-d when they have
relevent job openings, but this recruitment firm is spamming in my
opinion.

- Steve


Re: [linux-audio-dev] scaling jackinput to dbSPL

2006-08-15 Thread Steve Harris
On Tue, Aug 15, 2006 at 03:30:47 +0200, conrad berhörster wrote:
> Hello all, 
> 
> Does anybody know, how i can scale the incoming jack signals to dbSPL, 
> which is in the range of 0 to 120. An is it possible to calculate from dbFS 
> (which is used in normal soundapp in range -inf to 12db)  into dbSPL. 

dB SPL is a measurement of physical sound energy, so in general software
was no control over it. It depends on the efficientcy of your monitors,
gain of your amps, desk etc.

The only way you can relate dB SPL to dB FS is by calibrating your
particular setup using a sound level meter. There's a SMPTE standard for
the relationship between dB SPL and dBu or dBv (I forget which), which
gets you half way there, but noone uses it anyway. I had my home system
calibrated to SMPTE for a while, and it was just anoying.

Bob Katz advocates the "K-system" calibration, which is different again,
and also not very common.
http://www.digido.com/portal/pmodule_id=11/pmdmode=fullscreen/pageadder_page_id=59

- Steve


Re: [linux-audio-dev] LV2 and Linuxaudio.org

2006-08-14 Thread Steve Harris
On Thu, Aug 10, 2006 at 12:47:11 -0400, Ivica Ico Bukvic wrote:
> To all involved in the LV2 project, I would greatly appreciate your feedback
> regarding LV2 project becoming a member of Linuxaudio.org. Provided that you
> decide this is a step they wish to take, it would be a good idea to nominate
> someone as the representative of the project within the consortium.

FWIW, I think it would be a good idea. However, it's not clear that there
exists an LV2 "thing" to be a member of anything.

Perhaps the LV2 specifcation site (http://lv2plug.in/) could be a member?
If there was a consensus that it was a good idea, I'd be happy to state
that. Or something.

Also, there could actually be a LV2 project, mailing list etc. created,
theres a DAV repository at lv2plug.in, and people hack on the contents, so
it does kinda make sense.

- Steve


Re: [linux-audio-dev] LV2 draft spec update

2006-08-09 Thread Steve Harris
On Wed, Aug 09, 2006 at 12:57:24 -0400, Ivica Ico Bukvic wrote:
> > The LV2 spec is approaching finalisation now. We have two independent host
> > impletmentions, and several that share some code, there are lots of
> > plugins, some using extensions and some using vanialla LV2. If people want
> > to comment opn the late drafts now would be a good time, as I imagine that
> > the final spec will look a lot like whats there unless people find
> > problems.
> 
> Excellent work!
> 
> FWIW, I think it would be really nice if we got LV2 also as a member of the
> consortium.

Sure, no problem. It's not relly a project in the normal sense, but I
guess it makes sense.

- Steve


Re: [linux-audio-dev] LV2 draft spec update

2006-08-09 Thread Steve Harris
On Wed, Aug 09, 2006 at 11:10:07AM +0100, Jono Bacon wrote:
> On 8/9/06, Steve Harris <[EMAIL PROTECTED]> wrote:
> >The LV2 spec is approaching finalisation now. We have two independent host
> >impletmentions, and several that share some code, there are lots of
> >plugins, some using extensions and some using vanialla LV2. If people want
> >to comment opn the late drafts now would be a good time, as I imagine that
> >the final spec will look a lot like whats there unless people find
> >problems.
> 
> Is there a way to categorise LV2 plug-ins? The problem with LADSPA is
> that there is one huge list and it should really be divided into
> sections. Maybe have the equivilent of a .desktop file for each
> plug-in?

Yes, but that feature was also in a LADSPA extension called LRDF, some
hosts make use of use it, eg. jack-rack. If you look in
/usr/share/ladspa/rdf/ and /usr/local/share/ladspa/rdf/ you should see the
category data.

- Steve


[linux-audio-dev] LV2 draft spec update

2006-08-09 Thread Steve Harris
http://lv2plug.in/spec/

Some more work has been done recently, but I think I forgot to tell this
mailing list.

The most notable change is the inclusion of a port hint to indiciate that
connections to that port are optional. This has never been a part of
LADSPA, though it was discussed. It's included because it makes it
possible to have plugin that can use certain port type extension, but dont
require them. Eg. a plugin that can use MIDI data, but doesn't require it.
If the plugin marks the MIDI port as lv2:optionalConnection then hosts can
tell by inspection that it can still load and use the plugin, even if it
doesn't support/want to use the MIDI extension.

The LV2 spec is approaching finalisation now. We have two independent host
impletmentions, and several that share some code, there are lots of
plugins, some using extensions and some using vanialla LV2. If people want
to comment opn the late drafts now would be a good time, as I imagine that
the final spec will look a lot like whats there unless people find
problems.

- Steve


Re: [linux-audio-dev] Are people still writing LADSPA plug-ins?

2006-08-08 Thread Steve Harris
It might be better to have a planet for linux audio in general, Dave
Phillip's blog is allready in my RSS reader. 

LV2 is in the last 10% stage, I meant to mail out an update after the ast
batch of work Dave Robillard and I did, but I think I forgot, and I can't
remember what we did now...

There are now 3 hosts (2 built on libslv2, and 1 independent), and many
plugins that more-or-less work, the plugins dont work on Mac OSX (at least
I couldn't get them to work), but mostly do on linux.

- Steve

On Tue, Aug 08, 2006 at 10:15:28 +0100, Jono Bacon wrote:
> Hi all,
> 
> Thanks for the responses. It seems that the public face of LADSPA is
> maybe a little different to the reality - I remember first reading
> about LADSPA and thinking that there was not all that much going on
> with it, but I am pleased to see people are working on plugins.
> 
> I think it could be useful to improve the face of LADSPA and spread
> the word of LV2. Would any LADSPA plug-in authors be interested in
> writing blogs about their work with LADSPA? If this was the case,
> maybe there could be a Planet LADSPA that would bring together such
> bog entries?
> 
> Planets have been really useful in spreading the word about certain
> technologies, and they are a great way to get more people reading your
> blog. I don't know how many times I have asked a question on my blog
> and got 15 responses as it is on Planet GNOME, Planet Advocacy and a
> few others. Maybe then we would have more and more people writing
> plugins. :)
> 
> Thoughts?
> 
>  Jono


Re: [linux-audio-dev] Popular LADSPA plug-ins to depend on?

2006-07-26 Thread Steve Harris
On Wed, Jul 26, 2006 at 03:41:24PM +0200, Richard Spindler wrote:
> 2006/7/26, Thorsten Wilms <[EMAIL PROTECTED]>:
> >You should not depend on particular plugins, if the app could work
> >without just fine. Hasn't Debian a 'Recommends' thing going for
> >things like this?
> 
> Doesn't JAMin need the SWH Plugins for it's equalizer and stuff?
> Therefore it seems as if it's "dependent" on these plugins.

Yes, it does.
 
> So it shouldn't be a problem for Jokosher to take the same approach.

Sure. It's better than code duplication in my opinion.

- Steve


Re: [linux-audio-dev] light C++ set for WAV

2006-07-26 Thread Steve Harris
On Wed, Jul 26, 2006 at 09:02:31 +1000, Erik de Castro Lopo wrote:
> > Mmm.  For what it's worth, I write mostly C++ but have no problem
> > with using the libsndfile C API.
> 
> Most people who really know C++ know enough to be comfortable
> with pure C. I'm pretty sure you fall into this category.
> 
> However, I do get emails from some of the more clueless Windiots
> complaining that libsndfile is written in old-fashioned C instead
> of nice shiny modern C++. IMNSHO these people should not be allowed 
> anywhere near a language as complex, subtle, and unforgiving as 
> C++ (or for that matter as unforgiving as C).

Heh, I get that from UNIX people too though, I always assumed they were
trying to wind me up...

- Steve


Re: [linux-audio-dev] Re: Language fanboys [was Re: light C++ set for WAV]

2006-07-21 Thread Steve Harris
On Thu, Jul 20, 2006 at 09:51:05 -0700, Thomas Vecchione wrote:
> >
> >??? Non realtime style?  How can you have a gui written in a real time
> >style? Doesn't that kind of break the basic rules of realtime?
> 
> Well that is my question, sorry I should have clarified I am just now 
> getting into realtime programming so this might be a really stupid 
> question anyways.  If  you dont have the GUI thread(s) running at a high 
> priority, would that affect the overall response of the program? 
> Primarily I am looking at for triggering sound effects samples(Of 
> varying size) for live performance, thus I would need to make sure 
> response to the gui is also quick and that latency is not added in from 
> the time of hitting a "go" on screen.

The extent of that kind of latency is not quite so critical as processing
latency. What is important however is that the latency is constant, jitter
is quite obvious. Humans are able to correct for reasonably high constant
latency between actions and the sound happening. MIDI latency is typically
1ms or so, and that's generally not a issue. Getting lower than that in
a UI + OSC connection is no problem.

In any case, it's not a good idea to run GUI theads at high priority as
they often have to do actions which require a significant ammount of
wall-clock time.

If your thinking of using a UDPish protocol, please use OSC. The packet
format is a bit of a pig, but there are plenty of libraries that make it
easy (eg. http://liblo.sourceforge.net/) it means other peoples
software can interoperate with yours.

It will also save you a lot of time in debugging annoying network I/O
issues and platform dependencies.

- Steve


Re: [linux-audio-dev] Re: Language fanboys [was Re: light C++ set for WAV]

2006-07-21 Thread Steve Harris
On Fri, Jul 21, 2006 at 01:13:43 +0100, [EMAIL PROTECTED] wrote:
> On Fri, 21 Jul, 2006 at 09:39AM +1000, Loki Davison spake thus:
> > On 7/21/06, Stephen Sinclair <[EMAIL PROTECTED]> wrote:
> ...
> > For music/audio stuff you can do the dsp stuff with c and then
> > communicate with another process written in a higher level language,
> > i.e python over OSC. The LAD irc crew have been discussing using this
> > idea for a new sequencer/daw thing.
> 
> And I've been doing it with a small sample player.  It works nicely
> and means I don't have to deal with UI crud in C (nightmare!).

SooperLooper (http://essej.net/sooperlooper/) works that way and has done
for some time.

Some added bonuses are that your backend is inherantly scriptable from other
environments, and it pretty much forces you to adopt a MVC UI coding model.

- Steve


Re: [linux-audio-dev] LV2 Turtle requirement

2006-07-17 Thread Steve Harris
On Sun, Jul 16, 2006 at 08:33:08 -0400, Dave Robillard wrote:
> On Sun, 2006-07-16 at 17:28 +, carmen wrote:
> > i notice this file: http://lv2plug.in/spec/lv2.ttl is in the nicely 
> > readable turtle format. my main question is, whether this will be 
> > transformed to RDF-XML during 'make install' or perhaps by the developer 
> > themselves (Eg, similar to leaving a configure script around for those who 
> > dont have autoconf). 
> > 
> > mainly beacuse, it seems RDF-XML is the dominant serialization format, and 
> > having this additional dependency stand in the way means, at the very least 
> > one can't use Pyrple out of the box. i installed Redland and the Ruby and 
> > TCL bindings, and both conspicuously left out the "Redland::Parser.turtle" 
> > method, presumably beacuse i dont have it installed (and it's not in 
> > portage...)
> > 
> > cheers
> 
> Why would you want to take a nice, readable format, and translate it
> into the confusing bloated mess that is RDF/XML automatically and by
> default?  Because some particular toolkit can't read N3/Turtle yet?
> Silly.
> 
> If the toolkit you want to use sucks, then you can convert the N3/Turtle
> to RDF/XML yourself easily enough...

To be fair, Turtle is relativly new, whereas RDF/XML is about 10 years
old. There are some tools that don't yet handle Turtle.

I agree about the conversion though. Turtle is much more popular in these
parts, and the conversion is easily done either way.

- Steve


Re: [linux-audio-dev] Re: Hello and Python bindings for LADSPA

2006-07-16 Thread Steve Harris
On Sun, Jul 16, 2006 at 03:38:59PM +0100, Jono Bacon wrote:
> Hi Lars,
> 
> >It does "just work", you just get generic GUIs instead of
> >plugin-specific ones.
> 
> But surely the GUI is bound to a certain list of plugins. So, when we
> get LADSPA support in Jokosher, because we need to make the GUI for
> the plugins, we need to basically decide on a list of included plugins
> and create the GUIs. Surely this limits the ability for the user to
> just install a plugin pack as we won't have GUI for those plugins?
> Correct me if I am wrong on this, I am still very new around here. :P
> 
> Oh, and I read that someone was working on an XML DTD for plugin GUIs
> - what is the current progress on this? I could not find anything out
> about it on the LADSPA site.

It has been proposed several times, but it's not a particularly good idea
IMHO. I was in favour of it for a bit.

- Steve


Re: [linux-audio-dev] LV2 Turtle requirement

2006-07-16 Thread Steve Harris
On Sun, Jul 16, 2006 at 05:52:15PM +, carmen wrote:
> > you hope not what? it just seems like Turtle should be developers choice, 
> > and the format in the .bundle should be more standard - even Firefox can 
> > parse RDF/XML out of the box. the vast majority of the cool tools like 
> > Fresnel/Protoge that some develoeprs might want to edit their schemas in, 
> > don't support Turtle as well, AFAIK..
> 
> my main issue is the only RDF toolkit in Portage didnt properly include 
> Turtle parsing. which means theres an even slimmer chance of such things 
> existing in Debian, Fedora, etc. now i must investigate why this is the 
> case.. on top of that, a lot of the ideas wrt interactive documentation (eg 
> wiki-style annotations of what ports actually do, user presets, etc) on the 
> web would be easier since RDF/XML is readily embeddable into XHTML. throwing 
> a 'raptor blahblah.ttl > blahblah.xml' in a SConstruct is praobly easier than 
> having to continually think about it on the server side (eg in PHP) or in 
> JavaScript..

You can't "easily" embed RDF/XML into XHTML, you can use RDF/A or GRDDL,
but that's different. You can apply the same conversion argument just as
well the other way round. I have some PHP scripts that conneg LV2 turtle
files into HTML (still very primitive) or RDF/XML as required, it's not
exactly hard.

- Steve


Re: [linux-audio-dev] LV2 Turtle requirement

2006-07-16 Thread Steve Harris
On Sun, Jul 16, 2006 at 05:38:15PM +, carmen wrote:
> On Sun Jul 16, 2006 at 07:35:19PM +0200, Lars Luthman wrote:
> > On Sun, 2006-07-16 at 17:28 +, carmen wrote:
> > > i notice this file: http://lv2plug.in/spec/lv2.ttl is in the nicely 
> > > readable 
> > > turtle format. my main question is, whether this will be transformed to 
> > > RDF-XML 
> > > during 'make install' or perhaps by the developer themselves (Eg, similar 
> > > to 
> > > leaving a configure script around for those who dont have autoconf). 
> > 
> > I hope not - I've already written a host that parses Turtle and only
> > Turtle.
> 
> you hope not what? it just seems like Turtle should be developers choice, and 
> the format in the .bundle should be more standard - even Firefox can parse 
> RDF/XML out of the box. the vast majority of the cool tools like 
> Fresnel/Protoge that some develoeprs might want to edit their schemas in, 
> don't support Turtle as well, AFAIK..

I've never heard of Fresnel, but Protege can read N3, which is a superset
of Turtle. There's some pretty strong anti-XML feeling in this community,
and Turtle was less contraversial all round.

Personally I prefer reading and writing Turtle to RDF/XML, which is pretty
hideous. If your tool of choice can't read Turtle directly, just use
something like rapper to turn it into RDF/XML first.

- Steve


Re: [linux-audio-dev] memory-mapped wav files

2006-07-14 Thread Steve Harris
On Fri, Jul 14, 2006 at 12:06:23 +0100, [EMAIL PROTECTED] wrote:
> On Thu, 13 Jul, 2006 at 04:45PM -0400, Stephen Sinclair spake thus:
> > A thought occured to me recently...
> > 
> > If I am writing an application which needs to stream a large wav file,
> > I am having to write something which reserves some memory, and loads
> > pieces of the wav file from disk on request. Say I need to be able to
> > jump around the file a bit, I would have to detect when the piece is
> > not available and load it in as appropriate.
> > 
> > ... which I realized is exactly what the OS VM paging system does.
> > So, has anyone tried using memory-mapped files for streaming audio
> > data?  (obviously, I mean, in a non-realtime thread, using a buffer).
> > Or would this be totally inefficient?
> > 
> > I was thinking it could really simplify programming, just directly
> > accessing parts of the wav file as needed, and letting the OS load it
> > up into physical memory when it wants to.
> 
> It's perfectly sensible.  I do it a lot, because it's easy.  The
> problem is having to load the whole thing into memory before you
> start, which makes things alow to start.  If you're playing linearly,
> to solve this, you need can load it in chunks and start playing the
> first chunk straight away.

mmap-ing doesn't epxlicitly load the whole file, just bits as you
request them. I wrote an app on linux that accesses large files (1-4 GB)
this way recently, and the performance was certainly no worse than
buffered read()s.

It is very convienient, but there are some gotchas, especailly on 32bit
machines where you will run out of address space really quickly. Also, my
feeling is that linux is a bit conservative about how much ram it will use
to map the file, though there is a hinting mechanism you can use to say
what you want that mmaped region for. It's madvise(2) on Linux and BSD.

I'd second what Erik said though, for audio file i/o, use a library. The
ammount of i/o is really tiny, so overoptimising it is silly.

- Steve


Re: [linux-audio-dev] light C++ set for WAV

2006-07-14 Thread Steve Harris
On Thu, Jul 13, 2006 at 05:16:01 -0400, Paul Davis wrote:
> On Fri, 2006-07-14 at 06:48 +1000, Erik de Castro Lopo wrote:
> > but I am not a fan nor a great user of C++. The wrapper should
> > really be written by someone with a love for the language.
> 
> LOL! that's pretty great. "not a fan" translates in real world terms
> into "one of LAD's most persistent critics of almost every aspect of C+
> +" :)) rock on erik, we love you anyway!

Dammit, I feel insulted ;)

Though, having just part-written a huge database engine in C I am feeling
warm thoughts about ObjectiveC, which maybe makes me a traitor to the
cause.

Go Ocaml though.

- Steve


Re: [linux-audio-dev] LADSPA Extension for Extra GUI Data

2006-06-26 Thread Steve Harris
On Mon, Jun 26, 2006 at 01:53:13 +0200, Alfons Adriaensen wrote:
> On Mon, Jun 26, 2006 at 09:07:11AM +0100, Steve Harris wrote:
> 
> > On Sun, Jun 25, 2006 at 04:30:40 -0400, Dave Robillard wrote:
> >
> > > Plus, it's completely useless for GUIs in a separate process, while LV2
> > > is not (it's just a data file, anything can load it, it's not even
> > > architechture dependent).
> > > 
> > > Just my two cents, but definitely not the right thing.
> > 
> > That's possibly a bit harsh. I think it's reasonable to say that based on
> > our experiences of LADSPA we know that's not the best way to go.
> 
> If the GUI is in a separate process and connected by e.g. OSC, it
> could as well be on a machine that doesn't have the plugin files.
> Or that has a different version of them (for perfectly good reasons).
> To ensure consistency the GUI should get its plugin descriptions from
> the host anyway. This works even with POL (Plain Old Ladspa).

True enough, but with POL if the frontend and backend mahcines are different
architectures or operating systems then you have a problem.

- Steve


Re: [Freebob-devel] [linux-audio-dev] ieee1394 deadlock on RT kernels

2006-06-26 Thread Steve Harris
On Mon, Jun 26, 2006 at 10:11:30 +0200, Pieter Palmers wrote:
> >Can we see the kernel panic message? ;-)
> >
> no :p. I'm sorry for being a jerk, but I'm not going to type over that 
> message just so that you can confirm that it indeed is a 'soft lockup' 
> (or whatever it is called exactly) and that it occurs in the 
> ohci1394_iso_unregister_tasklet. You'll have to take my word on it. If 
> you need some specific part of the kernel message, you can get it. Tell 
> me what you wqant and why, that way I can learn something from it.

Was it not written to /var/log/messages?

- Steve


Re: [linux-audio-dev] LADSPA Extension for Extra GUI Data

2006-06-26 Thread Steve Harris
On Sun, Jun 25, 2006 at 04:30:40 -0400, Dave Robillard wrote:
> Basically all you've added is port grouping.  Sure, there's no binary
> breakage now - no kidding, you havn't had to change anything yet.  All
> you've done is added a bunch of metadata that has no reason to be in
> binary code at all, but you've done it in a way that's going to break
> horribly as soon as you try to add something.

No, it also adds rendering of port values. Though that is somewhat
limited.
 
> Plus, it's completely useless for GUIs in a separate process, while LV2
> is not (it's just a data file, anything can load it, it's not even
> architechture dependent).
> 
> Just my two cents, but definitely not the right thing.

That's possibly a bit harsh. I think it's reasonable to say that based on
our experiences of LADSPA we know that's not the best way to go.

- Steve


Re: [linux-audio-dev] Re: LADSPA Extension for Extra GUI Data

2006-06-26 Thread Steve Harris
On Sun, Jun 25, 2006 at 11:40:53 +0200, Fons Adriaensen wrote:
> On Sun, Jun 25, 2006 at 06:57:47PM +0100, Steve Harris wrote:
> 
> > I agree that describing it as volts is a bit odd, but it instantly makes
> > people like me feel at home. There's not reason why a digital modular neds
> > units for its modulation sources. It's just real numbers.
> 
> I never mentioned 'volts'. 

Sorry, that was Dave then. I still feel at home with v/octave though :)

- Steve


Re: [linux-audio-dev] Re: LADSPA Extension for Extra GUI Data

2006-06-26 Thread Steve Harris
On Sun, Jun 25, 2006 at 04:21:20 -0400, Dave Robillard wrote:
> > It's all about modulation, if I connect a [-1.0, 1.0] sine LFO to a cutoff
> > modulation input then I want it to modulate up and down by N octaves, not
> > N Hz, frequency-linearly symmetric modulations sound wrong. My favourite
> > (digital) modular filters have a centre frequnecy (shown in Hz, expoentialy
> > scaled control) and a modulation input that modulates in octaves.
> > 
> > You want the modulation to be musically relevent, and the most musically
> > useful unit for pitch is octaves :) Humans aren't SI sadly.
> > 
> > I agree that describing it as volts is a bit odd, but it instantly makes
> > people like me feel at home. There's not reason why a digital modular neds
> > units for its modulation sources. It's just real numbers.
> 
> This is true, but there are other cases when you want a real, meaningful
> frequency to do something with (using the same plugin).  Eg lowpass all
> frequencies above 800Hz.  Someone working on a DAW definitely doesn't
> want to deal with this meaningless V/Oct unit.

That's why I said you have a centre frequency control, that's set in Hz.
 
> Of course, in a modular you can convert Hz frequencies to VOct
> frequencies, and in a DAW you can convert VOct frequencies to Hz, but in
> both cases it's a user nuisance, so it needs to be automatic.  My gripe
> isn't with the unit itself, so much as in the current situation with
> LADSPA it's a really, really huge PITA to have a mess of twisty little
> units, all alike.

Yes, but neccesary, unless your hosts all understand the semantics of
pitch/frequency and are willing to do lots of pow() based conversions.
 
> Of course LV2 will let us solve this, and the frequency unit can in both
> cases be kept entirely transparent by the host (if you want), making the
> actual unit used by a plugin just an optimization as it should be
> (skipping the conversion step).

s/will/could/, I'm not yet convinced that it's appropriate. My preference
would still be for a Hz centre control and a (high rate) modulation input.
If there's a sane representation in RDF for a single port to do both
things well, then I'm all for it, but I'm scpetical.

- Steve


Re: [linux-audio-dev] Re: LADSPA Extension for Extra GUI Data

2006-06-25 Thread Steve Harris
On Sun, Jun 25, 2006 at 02:01:48 -0400, Dave Robillard wrote:
> On Tue, 2006-06-20 at 08:35 +0100, Steve Harris wrote:
> > On Tue, Jun 20, 2006 at 09:05:33 +1000, Loki Davison wrote:
> > > Because people actually use them in Om, because people actually use Om
> > > unlike certain other modulars. volt per octave is pretty damn obscure
> > > in a computer program If i wanted to have a cutoff at concert A
> > > what the hell is that in volts per octave?S
> > 
> > Zero typically. I have to take issue with this, 1.0f per octave is the
> > natural way to preresent things like filter cutoff in a modular. It's what
> > makes the great modular systems so easy to work with.
> 
> Nonsense.  As a numerical unit it has no meaning whatsoever, and the
> unit actually used has no bearing on the user interface provided (which
> should of course be exponential).

It has a very specific meaning, +1.0 is +1.0 octaves.
 
> The only sane unit for frequency is Hz.  As Loki said, if I want a
> cutoff at concert A, I (like any musician) know that's 440Hz.  Whatever
> arbitrary ugly real number it is in "V/Oct As Defined By AMS" is not
> something I or anyone else cares to know.  Any table of frequencies, or
> math app, or damn near _anything_ that deals with frequencies will
> present it in Hz.  If you can come up with a real reason why this
> arbitrary "AMS V/Oct" makes any sense in a _digital_ modular, I'd like
> to hear it.

It's all about modulation, if I connect a [-1.0, 1.0] sine LFO to a cutoff
modulation input then I want it to modulate up and down by N octaves, not
N Hz, frequency-linearly symmetric modulations sound wrong. My favourite
(digital) modular filters have a centre frequnecy (shown in Hz, expoentialy
scaled control) and a modulation input that modulates in octaves.

You want the modulation to be musically relevent, and the most musically
useful unit for pitch is octaves :) Humans aren't SI sadly.

I agree that describing it as volts is a bit odd, but it instantly makes
people like me feel at home. There's not reason why a digital modular neds
units for its modulation sources. It's just real numbers.

- Steve


Re: [linux-audio-dev] LV2 update

2006-06-20 Thread Steve Harris
On Tue, Jun 20, 2006 at 02:46:37 -0400, Dave Robillard wrote:
> > Let's just standardize an extension for latency ports after the release
> > of LV2. And let's do it FAST, so that most plugin writers will be
> > porting their plugins with the extension in place.
> 
> I think this should be included in the spec, since it's devastating when
> plugins don't adhere.  I believe Steve agrees with me (Steve?)

It doesnt need to be an extension really, as it was common practice in
LADSPA, just pick a URI for the hint and put it in the schema.
lv2:latencySamples anyone?

- Steve


Re: [linux-audio-dev] LV2 update

2006-06-20 Thread Steve Harris
On Tue, Jun 20, 2006 at 09:39:30 -0400, Dave Robillard wrote:
> I can make the plugin validating host check the latency primitively (eg
> run a single sample through the buffer) and fail if it isn't reported
> correctly, so we're sure the LADSPA latency woes are gone.

What if it's a delay line? I think you have to reply on the concience of
plugin programmers to get it right.

- Steve


[linux-audio-dev] LV2 plugin porting experience

2006-06-20 Thread Steve Harris
I thought it might be of interest to other plugin developers to learn what
my experiences were of porting my LADSPA plugins to the LV2 draft.

As some of you may know the primary source for my plugins is a wierd XML
format, so porting that was fiddly, but didn't involve much manual effort,
"just" coding a handful of XSLT sheets.

However I ported a couple by hand to get a feel for it, and basically it
comes down to deleting the constants and runAdding method from the ladspa
.c file, sedding some struct names and replacing occurances of LADSPA_Data
with float (except the last argument to connectPort, which is a void *).
It may be possible to do it automatically with a cpp/m4 hack, or a perl
script or something, but I doubt its worth the effort.

Writing the turtle is a little more involved, but I'm sure some
enterprising person can write a program to generate .ttl from existing
LADSPA .so's, then it will be a case of adding any additional data you
want to express by hand.

Writing the Makefile was pretty tricky, as the plugin data and code all
ends up in a plugin directory, but it wasn't too bad once I figured out
how best to layout the source. I decided not to use automake/autoonf/
ibtool as I felt it caused more probems than it solved with LADSPA. The
Makefile would have been less critical if I didn't have quite so many
plugins; I didn't want to recurse into every plugin directory, which is
the obvious thing to do.

- Steve


[linux-audio-dev] LV2 update

2006-06-20 Thread Steve Harris
There's been little news on the LV2 front here recently, all the disucssion
seems to have taken place on IRC, so a quick update:

Theres now a website: http://lv2plug.in/ as of a couple od days ago,
thanks to Thorsten Wilms which has links to drafts of the C header file
and RDF/Turtle schema. Please read the formal specs and comment.

Following discussion on the l-a-u list and hard work by a lot of people
there's a logo. Please don't discuss the logo except to praise it ;)
choosing one was quite involved. Various generic forms (black on white
etc.) will be availble on the website in due course.

TODO list:
  * Finalise the technical aspect of the spec, get interested parties to
confirm that it meets thier needs (or at least doesn't prevent them).

  * Write human language specification to go with .h and .ttl explaining
how to use the spec, conventions etc.

  * Make sure there's a reasonable set of reference implementations and
examples.

  * Test the extension mechanisms.

  * Publish final spec, have tea and cakes etc.

- Steve


Re: [linux-audio-dev] Re: LADSPA Extension for Extra GUI Data

2006-06-20 Thread Steve Harris
On Tue, Jun 20, 2006 at 09:05:33 +1000, Loki Davison wrote:
> Because people actually use them in Om, because people actually use Om
> unlike certain other modulars. volt per octave is pretty damn obscure
> in a computer program If i wanted to have a cutoff at concert A
> what the hell is that in volts per octave?S

Zero typically. I have to take issue with this, 1.0f per octave is the
natural way to preresent things like filter cutoff in a modular. It's what
makes the great modular systems so easy to work with.

- Steve


Re: [linux-audio-dev] LADSPA Extension for Extra GUI Data

2006-06-20 Thread Steve Harris
On Tue, Jun 20, 2006 at 12:57:43 +0200, Fons Adriaensen wrote:
> > :somePort lv2:unit unit:octavePitch ;
> >   lv2:baseFreq 264.0 .
> > 
> > It's not beyond the realms of the possible to describe the mathematical
> > relationship between the octave pitch unit and Hz, but it's probably
> > excessive.
> 
> A well-designed set of tags like the ones you show above would
> probably solve 99.9% of all cases. But you can't expect anyone
> to dream that up in a day. Which leads me to my main gripe with
> LV2: it was defined much too fast. In a normal RFC process, you
> present the problem, give interested parties at least a month
> to consider it and write something that exceeds the quality of
> a whim, and then take at least as much time to study the results
> and comment on them before anything is decided.

I hope you dont have that impression, LV2 is not finalised, I tried to
make sure I had "draft" and "provisional" in the text, but I guess I
wasn't sufficiently clear, it is very much still up for discussion.
My feeling is that it is somewhere around the Last Call stage in W3C
speak. l-a-d fortunatly not having a formal standards process ;)

Also, the units stuff I alluded to obove is not, and will not be part of
the LV2 1.0 spec, it will come soon after and live as an extension.
My plan was to crib from the scientific communities work on representing
unit values in RDF, write an early draft and post it here. It is somewhat
orthogonal to LV2 itsself, so if someone else with more time feels
motivated to work on it, please do.

The situation with LV2 is that I have ported most of my LADSPA plugins (to
verify there were no blatant problems) to a version of the draft, and we
now have 2-3 partial host implementations of the current draft. That
doesn't cover the requirements of reference implementations to my
satisfaction.

So, just to be clear, nothing has been decided. The purpose of the website
it to encourage discussion.

- Steve


Re: [linux-audio-dev] LADSPA Extension for Extra GUI Data

2006-06-19 Thread Steve Harris
On Mon, Jun 19, 2006 at 11:58:43PM +0200, Fons Adriaensen wrote:
> On Mon, Jun 19, 2006 at 10:34:05PM +0100, Steve Harris wrote:
> 
> > FWIW, I think the "not changing any code" thing is a blind, someone,
> > somewhere has to change some code if you want new behaviour*. To me the
> > critical thing is not that, but that a display function or whatever only
> > solves half the problem. You would also like the app to be able to
> > "understand" the control value and it's units. But I said that allready :)
> > 
> > * though not if you don't which can be more of an advantage than you'd
> >   think.
> 
> What worries me is that LV2 is *not* going to solve the problem that
> DR raised w.r.t. my "Moog" filter plugins.

This particualr one I'm not worried about, as it's a know one, its all the
subtle things noones realised yet, something like a plugin that does its
delay in 24ths of a beat or something.
 
> IIRC the control law is :
> 
>   f = pow (2, v) * frequency_of_middle_C 
>  
> or some such, where v is the parameter value. So the relation v->f is
> *exponential* (not logarithmic).

Sure, the LADSPA LOG hint couldn't deal with this meaningfully anyway.
 
> So how are we going to tell this to the host ?
> I'm sure LV2 can _represent_ all of this, but representation is
> not the same as meaning. For the host to understand it, either
> 
>  - it has a degree in music science and DSP,
> 
>  - the meaning of the tags used is predefined by some standard.

Or both if you really mess up :)
 
> The latter is missing, and once it is defined the need for
> an 'open' representation format no longer exists.

That's more-or-less true, but you can apply that argument repeatedly
forever.

I have many plugins that I would prefer to work this way, but LADSPA makes
it tricky if you want to interoperate with most hosts. Consequenctly, I
have given it some though. The representation I was thinking of was
something like:

:somePort lv2:unit unit:octavePitch ;
  lv2:baseFreq 264.0 .

It's not beyond the realms of the possible to describe the mathematical
relationship between the octave pitch unit and Hz, but it's probably
excessive. Some organic chemists use an RDF schema that expresses
conversions bewteen crazy chemical units, but I think its overkill for
crazy DSP units.

We only really care about frequency[/time] and ampltiude anyway ;)

- Steve


Re: [linux-audio-dev] LADSPA Extension for Extra GUI Data

2006-06-19 Thread Steve Harris
On Mon, Jun 19, 2006 at 01:55:27PM -0400, Dave Robillard wrote:
> > API so far is at http://ftsf.technetium.net.au/code/ladgui/ladgui.h
> > 
> > what i'd like to know is, if this is a stupid idea ^_^
> 
> The idea itself isn't stupid, but the implementation is.. let's say less
> than wise.
> 
> (Consider my personal blatant bias, but...) I'd suggest taking a look at
> LV2.  There is a data file you can add all this information to (whatever
> information you want to), without defining any APIs, changing any host
> code, etc, etc.

The provisional LV2 spec is at http://lv2pluig.in/ it could do with some
human language text explaining the technical parts, not just C and RDFS,
but I think theres enough there to make sense of it.

FWIW, I think the "not changing any code" thing is a blind, someone,
somewhere has to change some code if you want new behaviour*. To me the
critical thing is not that, but that a display function or whatever only
solves half the problem. You would also like the app to be able to
"understand" the control value and it's units. But I said that allready :)

* though not if you don't which can be more of an advantage than you'd
  think.

- Steve


Re: [linux-audio-dev] Re: LADSPA Extension for Extra GUI Data

2006-06-19 Thread Steve Harris
On Mon, Jun 19, 2006 at 08:44:25 +0200, Fons Adriaensen wrote:
> All this doesn't change the fact that the rationale I commented on
> *is* fake, whatever the qualities of LV2 (which I do not even deny).

I dont agree that it's fake per se, but I do think it was overstated. It
can be /difficult/ to maintain binary compatibility, but it is rarely
impossible, unless a really bad design decisision was taken..

- Steve


Re: [linux-audio-dev] LADSPA Extension for Extra GUI Data

2006-06-19 Thread Steve Harris
On Mon, Jun 19, 2006 at 06:03:43 +1000, [EMAIL PROTECTED] wrote:
> Hello, i'm new here,
> i've been working on a very simple, backward-forwards compatible extension to
> LADSPA/DSSI to allow hosts to display more meaningful gui's with a
> "describe_value" function which takes the port index and a LADSPA_Data and
> allows the plugin to return a meaningful description. eg.
> for a waveform port it might return "SAW", "SIN", "SQR" etc
> for a cutoff filter it might return the frequency in Hz
> for a tuning port it might return "-4 semitones"

This is handled in LADSPA+RDF and LV2 (aka LADSPA2) using scalePoints, eg.
http://lv2plug.in/plugins/Amp-example.lv2/amp.ttl, search for
lv2:scalePoint. That one's a silly example, but it makes the point.

Things like "-4 semitones" will be handled by a units extensions, which
will also allow hosts to use things like native gain control sliders for
decibel ports, and BBT controls for time inputs.

This idea is better in some ways, though though overall I prefer doing it
though description, rather than programatically.

- Steve


Re: [linux-audio-dev] Writing a winner takes it all gain filter.

2006-06-17 Thread Steve Harris
On Fri, Jun 16, 2006 at 11:44:57 -0700, Kjetil S. Matheussen wrote:
> I suggest that you rewrite the comment about snd. Writing "lispish, yuck" 
> doesn't give you much credit as someone worth listening to.

Hum. It's maybe not tactfuly expressed, but the s-expression syntax has a
number of objectors with informed positions.

It is near one end of a broad spectrum of languages so inevitably not to
everyones taste.

- Steve


Re: [linux-audio-dev] Writing LADSPA plugins in high level language?

2006-06-15 Thread Steve Harris
On Thu, Jun 15, 2006 at 09:19:35 -0400, Paul Winkler wrote:
> On Wed, Jun 14, 2006 at 10:26:15AM -0700, lazzaro wrote:
> > >There are, of course, languages like SuperCollider and CSound, which
> > >ARE made for expressing audio algorithms.  However, again they are
> > >generally interpreted.
> > 
> > 
> > Sfront compiles a high-level music language (Structured Audio) to C,
> > and there's no reason in theory that audio drivers couldn't be written
> > for LADSPA. 
> 
> I remember asking you about this a couple years ago and you said
> it could be done, but you could only run one plugin instance
> at a time... .is that still the case? or am I misremembering?
> 
> And, is all the sfront / saol action happening somewhere
> that I'm not aware of? I was always disappointed that there
> didn't seem to be a lively community around saol.

Yes, me too, I wrote some code in sfront and liked it, I even went as far
as figuring out what needed to be done to remove the globals that
prevented you from running more that one plugin at once, but never did the
coding.

- Steve


Re: [linux-audio-dev] Writing LADSPA plugins in high level language?

2006-06-14 Thread Steve Harris
On Wed, Jun 14, 2006 at 04:20:42PM +0200, stefan kersten wrote:
> On Wed, Jun 14, 2006 at 02:09:33AM -0400, Lee Revell wrote:
> > How do you do realtime in an interpreted language?  How
> > can you guarantee the interpreter won't do something
> > that's not RT safe during a critical section?
> 
> by properly designing the interpreter?

You sped a lot of your time when your writing plugins shaving a few cycles
of work here and there to make things more efficient, introducing an
intepreter into the mix just makes that a lot harder.

When people think they want a VM or interpreter they often want garbage
collection, generally garbage collection is not relatime safe. There
are relatime garbage collectors, but they're not common and they're
extremly complicated.

Given that (Objective) C(++) has the best math libraries, debugging tools
and is very efficient I dont see any reason for using any other general
purpose language. Faust is another matter however.

FWIW, you can compile Matlab into C, but actually Matlab/Octave is not
that appropriate for writing plugins as it's designed and optimised for
complete matricies, not rolling buffers.

- Steve


Re: [linux-audio-dev] LV2 library API

2006-06-01 Thread Steve Harris
On Tue, May 30, 2006 at 03:09:33 -0400, Dave Robillard wrote:
> I'm a bit unhappy that it makes code longer and more messy though.  The
> primary design goal here is to make host code as terse and simple as
> possible.  strcmp'ing a string and then freeing it is quite a bit uglier
> than just testing an enum val :/

This is maybe a PITA, but what about a runtime provided enum list, like:

foo_enum = { { FOO_FLOAT, LV2_FLOAT_URI },
 { FOO_MIDI, "http://example.org/datatypes/midi"; },
 { 0, NULL } };
lv2_set_urilist(foo_enum);

the library can contain an builtin enum list that is set implictly, ie. it
does lv2_set_urilist(lv2_internal_enum); when it starts.

that way simple hosts can just use it as is, and more complex ones can
specify the types they support, and everyone gets to use ints.

- Steve


Re: [linux-audio-dev] LV2 library API

2006-05-30 Thread Steve Harris
On Tue, May 30, 2006 at 11:43:57AM -0400, Dave Robillard wrote:
> The problem with returning strings is namespace prefixes.  It's all fine
> if the type is in the lv2: namespace so it can return something nice
> like lv2:float, but if it's something else it will have to return the
> fully qualified URI.  For consistency's sake I'll have to return the
> full URI for everything.

Returning QNames is bad mojo.
 
> I think what I'll do is have the type function return a full URI, but
> #define symbols for the builtin port types (which is easily extensible
> without breaking anything).
> 
> Something like:
> 
> char* type = lv2_port_get_type(someplug, 0);
> if (!strcmp(type, LV2_DATATYPE_FLOAT))
> /* ... */
> free(type);

Makes sense to me. You could make the API (optionally?) take a char * to
write the result into to avoid a lot of malloc() and free()s, but I doublt
it's a worthwhile saving.

- Steve


Re: [linux-audio-dev] This weeks changes to LV2 (née LADSPA2) strawman examples

2006-05-11 Thread Steve Harris
On Thu, May 11, 2006 at 01:59:12 -0400, Dave Robillard wrote:
> On Wed, 2006-05-10 at 10:12 +0100, Steve Harris wrote:
> > http://plugin.org.uk/ladspa2/
> > 
> > Changed name of the port shortname property to "symbol", which hopefully
> > implies more the right thing.
> > 
> > Added Rate before Control and Audio port names to hopefully make thier
> > menaing clearer for people who may not come from a LADSPA background.
> > 
> > This is just fiddling really, so I think it's starting to settle down.
> 
> (I've got a working Jack host that successfully runs the example Amp
> plugin on Jack audio)
> 
> Couple of things that need fixing:
> 
> - Typo in amp.ttl line 61:
>  "ladspa:OuputAudioRatePort"
>   -> "ladspa:OutputAudioRatePort"X

Thanks, done.

> - I think ladspa:scalePoint (while a good idea) shouldn't be in the spec
> as it's a new feature.  It belongs in the (discussed) units extension.

It's not actually a new feature, it was present in LADSPA RDF
descriptions: http://plugin.org.uk/ladspa-swh/metadata/swh-scales.rdf and
liblrdf. I don't think it's related to units as it deals in numerical port
values, rather than real-world values. But that's splitting semantic
hairs.

The same goes for the classification stuff, which was the main reason
users wanted RDF support from hosts for LADSPA, AFAICT.

- Steve


Re: [linux-audio-dev] This weeks changes to LV2 (née LADSPA2) strawman examples

2006-05-11 Thread Steve Harris
On Wed, May 10, 2006 at 01:46:38 -0400, Dave Robillard wrote:
> On Wed, 2006-05-10 at 10:12 +0100, Steve Harris wrote:
> > http://plugin.org.uk/ladspa2/
> > 
> > Changed name of the port shortname property to "symbol", which hopefully
> > implies more the right thing.
> > 
> > Added Rate before Control and Audio port names to hopefully make thier
> > menaing clearer for people who may not come from a LADSPA background.
> > 
> > This is just fiddling really, so I think it's starting to settle down.
> 
> To say this is a nitpick is an understatement, but I like
> "ladspa:ControlRateInputPort" over "ladspa:InputControlRatePort".  More
> normal and englishey.

If you send me a patch to the schema I'l apply it and fix the amp. Youre
right, it looks better.

- Steve


Re: [linux-audio-dev] LADSPA 2 name

2006-05-10 Thread Steve Harris
On Wed, May 10, 2006 at 08:16:04PM +0400, Dmitry Baikov wrote:
> LAMA - Linux(Libre) Audio Modules Architecture
> 
> I hope The Dalai Lama will not object.

Good name, but theres a well known VST plugin called Delay Lama.

- Steve


Re: [linux-audio-dev] Todays changes to "LADSPA2" strawman

2006-05-10 Thread Steve Harris
On Wed, May 10, 2006 at 03:15:25PM +0200, Lars Luthman wrote:
> On Wed, 2006-05-10 at 13:22 +0100, Steve Harris wrote:
> > On Wed, May 10, 2006 at 01:42:16PM +0200, stefan kersten wrote:
> > > On Mon, May 08, 2006 at 09:07:48AM +0100, Steve Harris wrote:
> > > > Is there some equivalent mechanism that lets dlloaded
> > > > plugins dig function pointers out of the the host? Thier
> > > > public symbol linking system is backward too from what I
> > > > remember.
> > > 
> > > one portable way is to pass a struct of function pointers
> > > filled by the host to the plugin initialization function, as
> > > done in the SuperCollider server plugin API.
> > 
> > That doesn't really help for extensions.
> 
> It does if the struct looks like this:
> 
> struct ExtensionFunctions {
>   struct {
> const char* extension_uri;
> void* function_pointer;
>   }* null_terminated_function_array;
> };

OK, true, but anyway I want to avoid anything that complex until we have a
real need for it. To avoid specing anything that's not quite fit for
purpose.

- Steve


Re: [linux-audio-dev] Todays changes to "LADSPA2" strawman

2006-05-10 Thread Steve Harris
On Wed, May 10, 2006 at 01:42:16PM +0200, stefan kersten wrote:
> On Mon, May 08, 2006 at 09:07:48AM +0100, Steve Harris wrote:
> > Is there some equivalent mechanism that lets dlloaded
> > plugins dig function pointers out of the the host? Thier
> > public symbol linking system is backward too from what I
> > remember.
> 
> one portable way is to pass a struct of function pointers
> filled by the host to the plugin initialization function, as
> done in the SuperCollider server plugin API.

That doesn't really help for extensions.

- Steve


Re: [linux-audio-dev] LADSPA 2 name

2006-05-10 Thread Steve Harris
On Wed, May 10, 2006 at 07:12:33 +0200, Esben Stien wrote:
> Steve Harris <[EMAIL PROTECTED]> writes:
> 
> > LV2 
> 
> What happened to the funny recursive acronyms?;). That they don't show
> up in a google search don't hold water; f.ex a search for JACK get
> you.. our beloved, sacred one. 

They seem to be too much a matter of taste, and/or have negative
connotations in various languages. Trying to get everyone to agree on one
is just too much effort.

Feel free to try and get consensus on a word-like name, but I've lost all
enthusiasm for it. I think it's telling that the hardest part of this
whole process has been choosing a name, classic colour of the bikeshed
problem. You can argue that the name is important, but we've been happily
using LADSPA for years, and that's terrible by alomost any metric.

I've started using the name LV2 myself, if it doesn't annoy me within a
week or so, and no-one comes up with a sensible objection it will probably
become permenant. So, if you really hate it speak up now.
 
> Nothing beats daves' PEEP in any case..;)

Someone was allready using it for a free software project, and it's
visually too close to BEEP which is a widely used protocol library.

- Steve


[linux-audio-dev] This weeks changes to LV2 (née LADSPA2) strawman examples

2006-05-10 Thread Steve Harris
http://plugin.org.uk/ladspa2/

Changed name of the port shortname property to "symbol", which hopefully
implies more the right thing.

Added Rate before Control and Audio port names to hopefully make thier
menaing clearer for people who may not come from a LADSPA background.

This is just fiddling really, so I think it's starting to settle down.

- Steve


Re: [linux-audio-dev] "LADSPA2" naming redux

2006-05-09 Thread Steve Harris
On Sun, May 07, 2006 at 09:26:00AM +0200, Jens M Andreasen wrote:
> On Fri, 2006-05-05 at 21:04 +0200, Leonard "paniq" Ritter wrote:
> > 
> > On Thu, 2006-05-04 at 09:11 +0100, Steve Harris wrote:
> > > Before anyone suggests it, FreePod is a piece of windows malware amongst
> > > other things :)
> > 
> > following this thread for quite a while i conclude that it is impossible
> > to find a name that sounds good and does _not_ mean anything.
> > 
> > do something irrational please. :)
> > 
> > 
> Something new that is still very much like the old, but with only 3 or 4
> letters?
> 
> By dropping the 'A' in LADSPA it could become LDSP ("ell-dis-pea")

There was a yamaha preverb processor called an LDSP, I dont know if its
still current though.

- Steve


Re: [linux-audio-dev] LADSPA 2 name

2006-05-09 Thread Steve Harris
On Mon, May 08, 2006 at 03:29:46PM -0400, Paul Winkler wrote:
> On Mon, May 08, 2006 at 08:20:43PM +0200, Lars Luthman wrote:
> > On Mon, 2006-05-08 at 19:28 +0200, Thorsten Wilms wrote:
> > > Hi!
> > > 
> > > Requirements in order of importance, highest first:
> > > - not likely to get us into legal trouble
> (snip)
> > L2, where the L is for LADSPA.
> http://www.waves.com/content.asp?id=139

But I like the idea. LV2 is less taken. Nearest thing is a model of midi
controller:
http://www.dolphinmusic.co.uk/page/shop/flypage/product_id/8779

- Steve


Re: [linux-audio-dev] Todays changes to "LADSPA2" strawman

2006-05-08 Thread Steve Harris
On Mon, May 08, 2006 at 07:32:06 +0200, [EMAIL PROTECTED] wrote:
> > I mean the linker should do it. If you dynamically build the plugin
> > against a stub library and the host exports something with the same ABI, I
> > /think/ the plugin should have the host's version of the function in its
> > namespace.
> 
> this is not TRUE on windows.
> otherwise yes.

Ah, well thats kind of important. I understand that Windows is quite
popular in some places? ;)

Is there some equivalent mechanism that lets dlloaded plugins dig function
pointers out of the the host? Thier public symbol linking system is
backward too from what I remember.

I don't think theres any reason to stop Windows users being able to share
the love, should they so choose. I used to get a lot of mail asking for
advice on how to compile my plugins on Windows until I put a note on the
website saying I couldn't help.

- Steve


Re: [linux-audio-dev] "LADSPA2" naming redux

2006-05-04 Thread Steve Harris
On Thu, May 04, 2006 at 08:57:54 +0700, Patrick Shirkey wrote:
> Dave Robillard wrote:
> >
> >This is a good point.  The POD line is _VERY_ well known, and given that
> >plugins can be effects or guitar amp models etc (ie the domain is
> >similar) I wouldn't be surprised if Line6's lawyers had something to say
> >about it once they find out.
> >
> >-DR-
> >
> >
> 
> OPOD - Open POD
> 
> The file extensions could be .opd

I had a very very similar idea: OpenPOD, OPOD being a non-cannonical
abbreviation, extension .opod.

By my own metric is level 3/0 crapness :)

There are a bunch of openpod/oped things, none of them are relevant though
(I expexted a bunch of mp3 player related stuff, but no). Openpod.org is
a free software news site. Because it's $word$word we'd
have to go for a slightly crap TLD.

I think I like it, but it's not ultra-stellar-fantastic.

Before anyone suggests it, FreePod is a piece of windows malware amongst
other things :)

- Steve


Re: [linux-audio-dev] "LADSPA2" naming redux

2006-05-04 Thread Steve Harris
On Wed, May 03, 2006 at 09:38:28 -0400, Dave Robillard wrote:
> > Before further discussing the name "Pod", please have a look at 
> > www.line6.com/products/pods/ . There is a whole family of FX processors 
> > for guitar and bass under the registered trademark "POD", and these 
> > devices are well known and widely used. So it´s probably not a good idea 
> > to name a software effects collection "Pod".
> 
> This is a good point.  The POD line is _VERY_ well known, and given that
> plugins can be effects or guitar amp models etc (ie the domain is
> similar) I wouldn't be surprised if Line6's lawyers had something to say
> about it once they find out.

Indeed. When I first googled it if didn't seem that close (amp sim
hardware v's a software bundle format), but after sleeping on it I think
it's much too close in function.

- Steve


Re: [linux-audio-dev] "LADSPA2" naming redux

2006-05-03 Thread Steve Harris
On Wed, May 03, 2006 at 08:56:10PM +0100, Steve Harris wrote:
> On Wed, May 03, 2006 at 03:33:31PM -0400, Phil Frost wrote:
> > On Wed, May 03, 2006 at 06:58:54PM +0100, Steve Harris wrote:
> > > There's bascially a choice between choosing a crap name, and treading on
> > > someones toes slightly. It doesn't seem like a LADSPA POD plugin format
> > > would steal any thunder from Truax.
> > 
> > *cough* or, pick a name that is longer than 3 letters.
> 
> length(name) > 3 == crap in my book.

Hmm... maybe > 4, but short is definatly good.

- Steve


Re: [linux-audio-dev] "LADSPA2" naming redux

2006-05-03 Thread Steve Harris
On Wed, May 03, 2006 at 03:33:31PM -0400, Phil Frost wrote:
> On Wed, May 03, 2006 at 06:58:54PM +0100, Steve Harris wrote:
> > There's bascially a choice between choosing a crap name, and treading on
> > someones toes slightly. It doesn't seem like a LADSPA POD plugin format
> > would steal any thunder from Truax.
> 
> *cough* or, pick a name that is longer than 3 letters.

length(name) > 3 == crap in my book.

- Steve


Re: [linux-audio-dev] "LADSPA2" naming redux

2006-05-03 Thread Steve Harris
On Wed, May 03, 2006 at 07:37:36PM +0200, martin rumori wrote:
> On Wed, May 03, 2006 at 11:28:44AM +0100, Steve Harris wrote:
> > plugin" on google doesn't come up with anything much. The only audio
> > related things for "pod" I could see are: a guitar effects processor called
> 
> not to forget about the POD algorithmic composition programm by
> canadian composer barry truax back in the 70s, AFAIR he used it for
> spectrally POisson Distributed audio synthesis.

Hmmm, yes. Didn't know about that. It doesnt show up on the first few
pages of google results, but it is there. The last mention I can see is in
1999: http://www.sfu.ca/~truax/podwork.html

There's bascially a choice between choosing a crap name, and treading on
someones toes slightly. It doesn't seem like a LADSPA POD plugin format
would steal any thunder from Truax.

- Steve


[linux-audio-dev] "LADSPA2" naming redux

2006-05-03 Thread Steve Harris
Richard's preferred name of "PEA" (AKA anything that's not LADSPA2) got me
to thinking. What about abstracting it up one level and calling the
directory + .so files + manifest thing a POD (Plugin Object and
Description). Theres nothing particularly audio specific about the high
level construct, its "just" that we don't have a concrete ABI for dealing
with sills, video etc.

This means that what we think of as a "LADSPA2" plugin would be a
"LADSPA POD". The directory would have a .pod extension.

POD seems like a nice word to me, plenty of scope for puns, short and "pod
plugin" on google doesn't come up with anything much. The only audio
related things for "pod" I could see are: a guitar effects processor called
a PODxt (there was a POD historically), an audio I/O device called a
Firepod, and the documentation for the LADSPA Perl module. Perl docs
are the only non-coincidental hits for "LADSPA POD".

I could juggle the description stuff around the seperate pod-ness from
ladspa-ness, it's not hard, but also not neccesary.

There is a small name clash with Perl, which uses .pod for it's
documentation format, but I dont think that's really an issue, our .pods
will be found in POD_PATH (eg. /usr/lib/pod/, ~/.pod/) and be will be
directories.

Thoughts?

- Steve


Re: [linux-audio-dev] Preliminary spec for OpenGraphics soundcard

2006-05-03 Thread Steve Harris
On Wed, May 03, 2006 at 03:37:27 -0400, [EMAIL PROTECTED] wrote:
> World clock

I think you mean Word Clock.

> Digital
>  optical S/PDIF in and out (5.1 audio)
>  ADAT (lightpipe) in and out (8 channel, optical)
>   does anybody have specs on this?
>   how hard is it to get interface hardware?
>   cost?
>   licencing? (this is an open design, so this could be an issue)

IIRC it's not an open design. It's owned by Alesis.

- Steve


  1   2   3   4   5   6   7   8   9   10   >