Current real-time playback status (as of August 13, 2016):
Platform | Software Path | Lo Latency w/ JACK | Without JACK |
---|---|---|---|
Linux | nsound->portaudio->jack | YES, works great! | YES (via ALSA) |
Mac OSX | nsound->portaudio->jack | NO 1 | YES (via coreaudio) 2 |
Windows | nsound->portaudio->jack | NO 3 | YES (via winmm) 4 |
Cygwin | nsound->portaudio->??? | N/A 5 | N/A 5 |
$ /opt/local/bin/jackd --version
jackd version 0.121.3 tmpdir /tmp/ protocol 24
$ /opt/local/bin/qjackctl --version
Qt: 4.6.3
QjackCtl: 0.3.6
Starting the JACK server produces this error, which I don’t know how to solve:
19:43:21.392 Patchbay deactivated.
19:43:21.426 Statistics reset.
19:43:39.616 JACK is starting...
19:43:39.617 /opt/local/bin/jackd -v -t2000 -dcoreaudio -dAppleHDAEngineOutput:1B,0,1,1:0 \
-r48000 -p128 -o1
19:43:39.630 JACK was started with PID=1814.
jackd 0.121.3
Copyright 2001-2009 Paul Davis, Stephane Letz, Jack O'Quinn, Torben Hohn and others.
jackd comes with ABSOLUTELY NO WARRANTY
This is free software, and you are welcome to redistribute it
under certain conditions; see the file COPYING for details
getting driver descriptor from /opt/local/lib/jack/jack_coreaudio.so
getting driver descriptor from /opt/local/lib/jack/jack_dummy.so
getting driver descriptor from /opt/local/lib/jack/jack_net.so
JACK compiled with POSIX SHM support.
server 'default' registered
loading driver ..
registered builtin port type 32 bit float mono audio
registered builtin port type 8 bit raw midi
clock source = system clock via gettimeofday
start poll on 3 fd's
new client: coreaudio, id = 1 type 1 @ 0x100114420 fd = -1
new buffer size 128
resizing port buffer segment for type 0, one buffer = 512 bytes
resizing port buffer segment for type 1, one buffer = 512 bytes
registered port system:playback_1, offset = 0
++ jack_sort_graph
++ jack_rechain_graph():
-- jack_rechain_graph()
-- jack_sort_graph
1814 waiting for signals
load = 0.0563 max usecs: 3.000, spare = 2663.000
19:43:41.666 Could not connect to JACK server as client. - Overall operation failed. \
Please check the messages window for more info.
load = 0.1219 max usecs: 5.000, spare = 2661.000
load = 0.1360 max usecs: 4.000, spare = 2662.000
load = 0.1430 max usecs: 4.000, spare = 2662.000
19:43:44.656 JACK is stopping...
jack main caught signal 15
poll failed (Bad file descriptor)
starting server engine shutdown
stopping driver
unloading driver
freeing shared port segments
stopping server thread
last xrun delay: 0.000 usecs
max delay reported by backend: 0.000 usecs
freeing engine shared memory
max usecs: 5.000, engine deleted
cleaning up shared memory
cleaning up files
unregistering server 'default'
19:43:44.713 JACK was stopped successfully.
If anybody has experience with this please conact me.
These instructions are based on Ubuntu Desktop 14.04 64-bit.
On the command line, install jackd and qjackctl:
sudo apt-get install jackd qjackctl
Note
IMPORTANT! The installation script will prompt you to enable real-time priorites, please select <YES>.
$ cat /etc/security/limits.d/audio.conf
# Provided by the jackd package.
#
# Changes to this file will be preserved.
#
# If you want to enable/disable realtime permissions, run
#
# dpkg-reconfigure -p high jackd
@audio - rtprio 95
@audio - memlock unlimited
#@audio - nice -19
$ id
uid=1000(nhilton) gid=1000(nhilton) groups=1000(nhilton),4(adm),24(cdrom),27(sudo),29(audio),30(dip),46(plugdev),108(lpadmin),123(pulse-access),124(sambashare)
These demos require python-pygame to be installed, pygame is used as the event system.
Bebot is based off the really cool “Bebot” iPhone app. When executed, a GUI window will pop up. If you have JACK working, use the --jack flag to connect to the JACK server.
$ cd src/examples
$ python bebot.py
$ python bebot.py --jack # if you have JACK working
Hello Bebot!
Press ESC to quit.
Pressing the left mouse button down starts audio playback, releasing the mouse stops audio playback. While audio is playing, you can change the sound by moving the mouse around.
Sample here: bebot-rt.mp3.
A simple piano with the following options:
$ cd src/examples
$ python piano.py --help
usage: piano.py [-h] [--chorus CHORUS] [--saw] [--square] [--n N_HARMONICS]
[-j]
Simple piano.
optional arguments:
-h, --help show this help message and exit
--chorus CHORUS Add chorus with N voices
--saw Generate Sawtooth waves
--square Generate Square waves
--n N_HARMONICS Specify the number of harmonics for Sawtooth or Square
generators (default is 7)
-j, --jack Use the JACK portaudio Host API, if the JACK server isn't
running, you will get undefined behavior
If you have JACK working, use the --jack flag to connect to the JACK server. Try running with these options:
$ python piano.py --saw --chorus 2
$ python piano.py --saw --chorus 2 --jack # if you have JACK working
Hello Piano!
Press ESC to quit.
Press [z,s,x,d,c,v,g,b,h,n,j,m] to play a note.
++-+--++--++-+--++--+-+-+-+-
Sample here: piano-rt.mp3.