Just so people don't think the code has fallen off of the face of the planet ;-)
Currently I'm working on two things with the wine jack driver , one of which needs to
be complete before I submit the patch, the other can wait until some ongoing jack support
is complete.
1. The driver currently closes and opens jack connections synchronously with wodOpen and
wodClose. The problem is that jack doesn't actually close the clients right away,
sometimes it can take many seconds for this to occur. Apparently this is a known jack bug
but I'm also wondering if this is a problem in wines pthread implementation of
conditions(there is no support for them right now). Either way I've implemented a
workaround that basically consists of opening jack connections and marking them as in-use
or available as apps open or close audio devices. This behavior can be enabled/disabled
via a define in the driver. This isn't complete yet but it should be soon and would
prevent the lockups and delays that currently make things a pain.
2. I don't know of an easy way to do resampling so the input audio matches the sample
rate that jack expects. What I want is to be able to do something along the lines of:
set_sample_rates(input_rate, jack_output_rate);
set_resample_algorithm(x); /* pick a reasonable algorithm based on the current cpu and
latency requirements */
And then in the callback routine something like:
resample(audio_data_in, *audio_data_out);
I haven't found anything even close to this simple as of yet, if anyone has any
suggestions feel free to mail me about them. There is someone on the jack mailing list
working on a resampling library that is supposed to be easy to use and flexable. Either
way, this isn't critical although your music sounds funny if your sample rates
don't line up very well ;-)
Otherwise I'm also looking into a crash with using the jack driver and directsound
that might be due to the client process and memory allocation.
After working on the arts driver I realized that the future of audio servers really is
callback based. It is quite frustrating to see so little use of jack and so much use of
poor solutions like direct hardware drivers(alsa/oss) or high latency servers like artsd.
No offense intended to people that work on or use either of those audio solutions, it just
doesn't make sense when you want to have multiple apps outputting audio at the same
time or if you need low latency(high end audio, games?, etc). I'll see what I can do
to get things cleaned up and a patch submitted in the next week, conditional of course
upon Alexandre accepting jack support into wine. At least now I have someone other than
myself with an interest in using jack and wine together ;-)
Thanks,
Chris
From: "Kjetil S. Matheussen" <k.s.matheussen(a)notam02.no>
Date: 2002/10/23 Wed PM 12:18:13 EDT
To: linux-audio-dev(a)music.columbia.edu
CC: wine-devel(a)winehq.com
Subject: Re: [linux-audio-dev] Fwd: Opinions on running VST or DirectX plugins
on Linux in real time
On Wed, 23 Oct 2002, Taybin Rutkin wrote:
On Wed, 23 Oct 2002, Kjetil S. Matheussen wrote:
Could it be possible to overcome all problems
mentioned just by simply
adding jack-support to the wine-server? Then someone could make a simple
windows-program for chaining directx and vst plug-ins.
Someone has done this, I believe:
http://kt.zork.net/wine/wn20021011_139.html#2
Wow, it allready exist. Hey, wine-people, this driver is really needed for
real-time audio-work, and for programs as sound-editors, multitrackers
and interactive dsp programs as pd, jmax, and a lot of others. Artsd
(f.ex) is not an alternative in its current form, and probably never will
be either. Its something else. I guess Paul or some other competant person
can explain a bit more why jack is so important.
--