Hi Ollie / Kaylen.
On 29 March 2015 at 13:33, Oliver Bown <
ol...@icarus.nu> wrote:
> In this case you’re trying to run Beads through the Jack client (your
> AudioContext() setup code should say so).
> If you don’t have jack installed or haven’t run jack, or have run jack with
> the wrong parameters, then you will get this.
> I don’t think there is jack for Windows.
There is, and it's definitely the better way to get lower latency
audio on Windows - there are limits to what the JAudioLibs JavaSound
code can work around on Windows! ;-)
The top 3 lines of that message are output from JACK, so JNAJack seems
to be finding the library OK. The key bit is "jack server is not
running", as the old version of the JackAudioServer in Beads will
never attempt to start the server itself. You need to start JACK
manually, usually using the QJackCtl GUI. Also make sure that the
sample rate and buffer size you set in JACK match Beads. And note
that you'll have to use the same QJackCtl GUI to connect Beads' ports
to the soundcard.
Newer versions of JAudioLibs' JackAudioServer support optional
auto-connection to the soundcard, and when that is configured will
also attempt to start the JACK server for you. Beads code would need
an update though.
> As for your crackly audio (other email), it may well be that we just haven’t
> tested this basic behaviour on Windows… by which I mean, I never have, but I
> had assumed that someone somewhere would have already told me about the
> problem.
Actually this has been mentioned on the list before, and if it's what
I think it is, it's caused by use of TimingMode.FramePosition at
https://github.com/orsjb/beads/blob/master/src/beads_io/org/jaudiolibs/beads/AudioServerIO.java#L155
Timing based on frame position only works if the JavaSound interface
to the soundcard provides usable info - which it doesn't on Windows,
or on Linux when using PulseAudio (OpenJDK default)
Use TimingMode.Estimated, which should work everywhere, even if not
always giving the best latency. Newer JAudioLibs code will attempt to
provide a sensible default when no mode is specified. This is
currently always Estimated, but if we're sure FramePosition is better
on OSX then I'll update the library with that and you can ignore
setting it in Beads completely!
Kaylen - if you don't want to make a new build of Beads to test this,
you could try the audio examples with Praxis LIVE (
www.praxislive.org)
which are using the up-to-date JAudioLibs code and
TimingMode.Estimated.
Best wishes,
Neil
--
Neil C Smith
Artist : Technologist : Adviser
http://neilcsmith.net
Praxis LIVE - open-source intermedia development -
www.praxislive.org
Digital Prisoners - interactive spaces and projections -
www.digitalprisoners.co.uk