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@notam02.no Date: 2002/10/23 Wed PM 12:18:13 EDT To: linux-audio-dev@music.columbia.edu CC: wine-devel@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.
--
chrismorgan@rcn.com a écrit :
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. 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 ;-)
a quick answer: don't allow openinig (in windows sense) if format doesn't match. winmm will do the format translation itself. A+