GithubHelp home page GithubHelp logo

jackaudio / jack2 Goto Github PK

View Code? Open in Web Editor NEW
2.1K 2.1K 372.0 15.45 MB

jack2 codebase

License: GNU General Public License v2.0

Makefile 1.31% C++ 53.05% C 24.20% Python 14.64% Shell 0.14% Objective-C++ 6.33% Inno Setup 0.33%

jack2's People

Contributors

0evsg avatar 7890 avatar adiknoth avatar dehnhardt avatar devilaxmii avatar dvzrv avatar e9925248 avatar falktx avatar flatmax avatar fps avatar gportay avatar jamespthomas avatar karllinden avatar kimjeongyeon avatar kmatheussen avatar lucianoiam avatar luzpaz avatar mildsunrise avatar mojofunk avatar mseeber avatar nedko avatar rncbc avatar sdrik avatar sletz avatar tartina avatar torbenh3 avatar trebmuh avatar valpackett avatar x42 avatar y-fujii avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jack2's Issues

jack_port_get_connections() ignores owned port status

According to the JACK API, jack_port_get_connections() should only return connections if we're the owner of the port. See:
http://jackaudio.org/files/docs/html/group__PortFunctions.html#ga4e1bd29a68acb4fb45f75931de0d36b2
(2nd note)

But in JACK2, using that function always returns non-NULL for all ports (like system:* ones).
JACK2 should verify if we own the port being passed in the function parameter, and return NULL if not.

related code is at https://github.com/jackaudio/jack2/blob/master/common/JackAPI.cpp#L1097

Transport Sync

There no longer seems to be Transport Sync in Netjack2. Jack 1.9.10

internal clients are broken in jack2

I tested this a few days ago on a recent git vs jack1 git.

Running:
$ jack_load inprocess
works in jack1 but fails in jack2 with:
could not load inprocess, intclient = 0 status = 0x 1

Running in verbose mode prints this:
$ jack_load inprocess
Jack: JackClient::SetupDriverSync driver sem in flush mode
Jack: JackPosixSemaphore::Connect name = jack_sem.1000_default_jack_load
Jack: JackPosixSemaphore::Connect sem_getvalue 0
Jack: Clock source : system clock via clock_gettime
Jack: JackLibClient::Open name = jack_load refnum = 3
could not load inprocess, intclient = 0 status = 0x 1

the jack logs have this info: http://kxstudio.sourceforge.net/Paste/repo/8dj7Q

[wscript] Please add a --netjack option

Hi!

It would be great if there was a --netjack option for waf. I suggest the following behaviour:

  • Build netjack if and only if --netjack is given
  • Print an error if it cannot be built and it was requested

The reason for such a change is that in Gentoo (where sources are built by the package manager) dependencies will break and the user will not get what he/she requested (i.e no netjack) if netjack is auto-detected as it is now.

The following situation might occur:

  1. The user installs the opus library (maybe another package than jack pulled it in)
  2. The user installs jack and requests it to not build netjack (i.e. the opus use flag i unset), but the build system finds opus, builds and install netjack
  3. The user uninstalls opus library for some reason
    In this situation the user is unaware that the package jack now contains broken link-level dependencies and he/she will have to recompile jack to get rid of them.

The initial suggestion above solves this issue by not using auto-detection if netjack is not requested.

Thanks in advance,
Karl

netjack + opus + distributions

netjack2's + opus needs libopus with --custom-modes, but libopus on many distributions does not provide that.

(stub entry for CC'ing email discussion)

MIDI connection lost after freewheel was used

  1. Start JACK with Raw MIDI driver.
  2. Connect MIDI keyboard to a JACK MIDI port (e.g. a Pianoteq's one)
  3. '$ jack_freewheel y', MIDI signal stops reaching the port as expected
  4. '$ jack_freewheel n', MIDI transmission never restored, not quite expected.

Originally this was discovered after exporting a session in Ardour 3 with a Pianoteq plugin on a track.

Ringbuffers claims to be 1 element bigger

Let's say I want to create a ringbuffer of size 16, i pass 16 to jack_ringbuffer_create, the resulting struct's .size is 16. All is well, right?
No, jack_ringbuffer_write will only let me write 15 items, as confirmed by jack_ringbuffer_write_space.

Allow me to demonstrate with a python wrapper:

>>> a=jack.RingBuffer(16)
>>> a.write_space
15
>>> # D: :(
>>> a.write(b"1"*16)
15
>>> a      
<jack.RingBuffer 15/16>
>>> a.write(b"1")
0
>>> a
<jack.RingBuffer 15/16>
>>> len(a.read(16))
15
>>> a
<jack.RingBuffer 0/16>
>>> a.size
16
>>> # What????

I understand this is an artifact on how the ringbuffer is stored, but i still think it's the wrong behavior.

jack_ringbuffer_create should perhaps allocate cnt+1 memory, .size should stay the same (should still match what the caller requested), and everywhere in the internal code .size+1 should be used.

[wscript] FTBFS if doxygen is enabled

JFTR, as reported by Ian Malone on jack-devel, doxygen support is currently broken:

make[1]: Entering directory `/opt/adi-src/jackaudio/jack2/build'
Traceback (most recent call last):
File "/opt/adi-src/jackaudio/jack2/.waf-1.6.11-30618c54883417962c38f5d395f83584/waflib/Scripting.py", line 97, in waf_entry_point
run_commands()
File "/opt/adi-src/jackaudio/jack2/.waf-1.6.11-30618c54883417962c38f5d395f83584/waflib/Scripting.py", line 151, in run_commands
run_command(cmd_name)
File "/opt/adi-src/jackaudio/jack2/.waf-1.6.11-30618c54883417962c38f5d395f83584/waflib/Scripting.py", line 143, in run_command
ctx.execute()
File "/opt/adi-src/jackaudio/jack2/.waf-1.6.11-30618c54883417962c38f5d395f83584/waflib/Scripting.py", line 345, in execute
return execute_method(self)
File "/opt/adi-src/jackaudio/jack2/.waf-1.6.11-30618c54883417962c38f5d395f83584/waflib/Build.py", line 98, in execute
self.execute_build()
File "/opt/adi-src/jackaudio/jack2/.waf-1.6.11-30618c54883417962c38f5d395f83584/waflib/Build.py", line 101, in execute_build
self.recurse([self.run_dir])
File "/opt/adi-src/jackaudio/jack2/.waf-1.6.11-30618c54883417962c38f5d395f83584/waflib/Context.py", line 128, in recurse
user_function(self)
File "/opt/adi-src/jackaudio/jack2/wscript", line 338, in build
share_dir = bld.env.get_destdir() + bld.env['PREFIX'] + '/share/jack-audio-connection-kit'
TypeError: 'list' object is not callable

This ticket only serves as a reference, so people can search for it if the issue arises for anybody else. I'll hopefully fix it in a second.

jackdrc and device names with whitespace

on OSX devices can include whitespace.
e.g. "AppleUSBAudioEngine:Focusrite:Scarlett 18i6 USB:000039BF:2,1"
"AppleUSBAudioEngine:PreSonus:AudioBox 1818 VSL:2209:2,1" etc

The parser in posix/JackPosixServerLaunch.cpp does not handle quotes nor escapes. jack cannot be started by a jackdrc if the device-name contains spaces. NB. The jackdrc parser in JackWinServerLaunch.cpp does handle things correctly.

segfault at startup when compiled with --profile

Starting program: /tmp/jacktest/bin/jackd -n test -d dummy -C 2 -P 2
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
jackdmp 1.9.9
Copyright 2001-2005 Paul Davis and others.
Copyright 2004-2012 Grame.
jackdmp 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
[New Thread 0x7ffff41fa700 (LWP 31356)]
[New Thread 0x7ffff37f8700 (LWP 31357)]
ALSA lib conf.c:1220:(parse_def) show is not a compound
ALSA lib conf.c:1686:(snd_config_load1) toplevel:24:26:Unexpected char
ALSA lib conf.c:3406:(config_file_open) /usr/share/alsa/pulse-alsa.conf may be old or corrupted: consider to remove or fix it
[New Thread 0x7fffeee91700 (LWP 31358)]
JACK server starting in realtime mode with priority 10
Engine profiling activated, beware 197 MBytes are needed to record profiling points...
[New Thread 0x7ffff7fd1700 (LWP 31359)]
[New Thread 0x7ffff7f50700 (LWP 31360)]

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7ffff7f50700 (LWP 31360)]
0x00007ffff78609a2 in Jack::JackEngineControl::CalcCPULoad (
this=0x7fffdd225000, table=0x6081c0, manager=0x7fffe9822000,
cur_cycle_begin=3218338954874, prev_cycle_end=1)
at ../common/JackEngineControl.cpp:57
57 fRollingClientUsecs[fRollingClientUsecsIndex++] = last_cycle_end - fPrevCycleTime;
(gdb) bt
#0 0x00007ffff78609a2 in Jack::JackEngineControl::CalcCPULoad (

this=0x7fffdd225000, table=0x6081c0, manager=0x7fffe9822000, 
cur_cycle_begin=3218338954874, prev_cycle_end=1)
at ../common/JackEngineControl.cpp:57

#1 0x00007ffff788014c in Jack::JackEngineControl::CycleBegin (

this=0x7fffdd225000, table=0x6081c0, manager=0x7fffe9822000, 
cur_cycle_begin=3218338954874, prev_cycle_end=1)
at ../common/JackEngineControl.h:146

#2 0x00007ffff787c9f3 in Jack::JackEngine::Process (this=0x608180,

cur_cycle_begin=3218338954874, prev_cycle_end=1)
at ../common/JackEngine.cpp:177

#3 0x00007ffff787787b in Jack::JackLockedEngine::Process (this=0x608180,

cur_cycle_begin=3218338954874, prev_cycle_end=1)
at ../common/JackLockedEngine.h:258

#4 0x00007ffff7876e62 in Jack::JackAudioDriver::ProcessGraphAsyncMaster (

this=0x6099b0) at ../common/JackAudioDriver.cpp:264

#5 0x00007ffff7876e19 in Jack::JackAudioDriver::ProcessGraphAsync (

this=0x6099b0) at ../common/JackAudioDriver.cpp:255

#6 0x00007ffff7876dde in Jack::JackAudioDriver::ProcessAsync (this=0x6099b0)

at ../common/JackAudioDriver.cpp:244

#7 0x00007ffff7876d57 in Jack::JackAudioDriver::Process (this=0x6099b0)

at ../common/JackAudioDriver.cpp:221

#8 0x00007ffff67b4ee2 in Jack::JackDummyDriver::Process (this=0x6099b0)

at ../common/JackDummyDriver.h:48

#9 0x00007ffff7887095 in Jack::JackThreadedDriver::Process (this=0x6176e0)

at ../common/JackThreadedDriver.cpp:73

#10 0x00007ffff7887719 in Jack::JackThreadedDriver::Execute (this=0x6176e0)

at ../common/JackThreadedDriver.cpp:246

#11 0x00007ffff78734f0 in Jack::JackPosixThread::ThreadHandler (arg=0x6176f8)

at ../posix/JackPosixThread.cpp:59

#12 0x00007ffff75e8b50 in start_thread ()

from /lib/x86_64-linux-gnu/libpthread.so.0
#13 0x00007ffff6a8f90d in clone () from /lib/x86_64-linux-gnu/libc.so.6
#14 0x0000000000000000 in ?? ()

(gdb) p fRollingClientUsecsIndex
$1 = -1610612736

I can paper around this, but this might not be the real culprit:

diff --git a/common/JackEngineControl.cpp b/common/JackEngineControl.cpp
index 4af6f68..2ab3323 100644
--- a/common/JackEngineControl.cpp
+++ b/common/JackEngineControl.cpp
@@ -53,6 +53,8 @@ void JackEngineControl::CalcCPULoad(JackClientInterface** table,
}

 // Store the execution time for later averaging
  • if (fRollingClientUsecsIndex >= JACK_ENGINE_ROLLING_COUNT || fRollingClientUsecsIndex < 0)
  •    fRollingClientUsecsIndex = 0;
    
    if (last_cycle_end > 0)
    fRollingClientUsecs[fRollingClientUsecsIndex++] = last_cycle_end - fPrevCycleTime;
    if (fRollingClientUsecsIndex >= JACK_ENGINE_ROLLING_COUNT)

Qualified ALSA device names break opening of ALSA control device

1.9.8 does not appropriately handle ALSA device names when attempting to open the control device.

If the device name is given as "hw:PCH,0", the same name is used to try to open the control device. this will fail, because the name should be "hw:PCH".

The following code from jack1 takes a PCM device name and returns the appropriate control device name:

static char*
get_control_device_name(const char * device_name)
{
char * ctl_name;
const char * comma;

/* the user wants a hw or plughw device, the ctl name
 * should be hw:x where x is the card identification.
 * We skip the subdevice suffix that starts with comma */

if (strncasecmp(device_name, "plughw:", 7) == 0) {
    /* skip the "plug" prefix" */
    device_name += 4;
}

comma = strchr(device_name, ',');
if (comma == NULL) {
    ctl_name = strdup(device_name);
    if (ctl_name == NULL) {
        jack_error("strdup(\"%s\") failed.", device_name);
    }
} else {
    ctl_name = strndup(device_name, comma - device_name);
    if (ctl_name == NULL) {
        jack_error("strndup(\"%s\", %u) failed.", device_name, (unsigned int)(comma - device_name));
    }
}

return ctl_name;

}

JACK clients hang on SHM read

Hi,

I encounter random hangups in JACK2. At some point it stops routing sound (but clients that retreive audio from JACK remain alive, they just play silence) and new clients are not able to connect.

Belowe is an example of strace taken while running jack_lsp. It just hangs.

Any ideas what can cause such behaviour?

Setup:

  • JACK version: 1.9.9.5+20130622git7de15e7a-1ubuntu1 (from ubuntu 14.04)
  • Kernel: Linux serverr 2.6.32-24-pve #1 SMP Fri Sep 13 07:29:30 CEST 2013 x86_64 x86_64 x86_64 GNU/Linux
  • No realtime scheduling
  • Running within OpenVZ container
  • Multiple JACK servers running at the same time.
    getrlimit(RLIMIT_STACK, {rlim_cur=10240*1024, rlim_max=RLIM64_INFINITY}) = 0
    futex(0x7f06f242596c, FUTEX_WAKE_PRIVATE, 2147483647) = 0
    futex(0x7f06f2425978, FUTEX_WAKE_PRIVATE, 2147483647) = 0
    brk(0)                                  = 0x1ddb000
    brk(0x1dfc000)                          = 0x1dfc000
    open("/proc/cpuinfo", O_RDONLY)         = 3
    fstat(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
    mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f06f3292000
    read(3, "processor\t: 0\nvendor_id\t: Genuin"..., 1024) = 1024
    close(3)                                = 0
    munmap(0x7f06f3292000, 4096)            = 0
    mmap(NULL, 528384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f06f31ff000
    mprotect(0x7f06f31ff000, 4096, PROT_NONE) = 0
    clone(child_stack=0x7f06f327ef70, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7f06f327f9d0, tls=0x7f06f327f700, child_tidptr=0x7f06f327f9d0) = 507
    nanosleep({0, 1000000}, NULL)           = 0
    rt_sigprocmask(SIG_BLOCK, [PIPE], [], 8) = 0
    socket(PF_LOCAL, SOCK_STREAM, 0)        = 3
    getuid()                                = 1001
    connect(3, {sa_family=AF_LOCAL, sun_path="/dev/shm/jack_2_1001_0"}, 110) = 0
    shutdown(3, SHUT_RDWR)                  = 0
    close(3)                                = 0
    nanosleep({0, 2000000}, NULL)           = 0
    socket(PF_LOCAL, SOCK_STREAM, 0)        = 3
    getuid()                                = 1001
    connect(3, {sa_family=AF_LOCAL, sun_path="/dev/shm/jack_2_1001_0"}, 110) = 0
    write(3, "\26\0\0\0", 4)                = 4
    write(3, "Q\0\0\0", 4)                  = 4
    write(3, "lsp\0\0\0\0\0\376\314\345\362\6\177\0\0\0\0\0\0\0\0\0\0\340\263+\345\377\177\0\0"..., 65) = 65
    write(3, "\10\0\0\0", 4)                = 4
    write(3, "\5\0\0\0", 4)                 = 4
    write(3, "\377\377\377\377", 4)         = 4
    write(3, "\1\0\0\0", 4)                 = 4
    read(3, (NOW IT HANGS)

jack2: ./waf build crashes on OSX

Hello! I'm trying to build waf 1.9.9.5 on OSX 10.8.3. I asked briefly on IRC and was told to open a bug report here. The Python version I use is 2.7.2. Please let me know if you need further details.

./waf configure --prefix=/usr/local/Cellar/jack/1.9.9.5
Setting top to                           : /private/tmp/jack-OxgU/jack-1.9.9.5
Setting out to                           : /private/tmp/jack-OxgU/jack-1.9.9.5/build
Checking for 'g++' (c++ compiler)        : c++
Checking for 'gcc' (c compiler)          : cc
MacOS X detected
Checking for header samplerate.h         : yes
Checking for header samplerate.h         : yes
Checking for header sndfile.h            : yes
Checking for program pkg-config          : /usr/local/opt/pkg-config/bin/pkg-config
Checking for 'celt' >= 0.5.0             : yes
Checking for library readline            : yes
Checking for 'celt' >= 0.11.0            : yes
Checking for 'opus' >= 0.9.0             : yes
Checking for header opus/opus_custom.h   : not found

==================
JACK 1.9.9.5 svn revision will checked and eventually updated during build
Build with a maximum of 64 JACK clients
Build with a maximum of 768 ports per application
Install prefix                           :  /usr/local/Cellar/jack/1.9.9.5
Library directory                        :  /usr/local/Cellar/jack/1.9.9.5/lib
Drivers directory                        :  /usr/local/Cellar/jack/1.9.9.5/lib/jack
Build debuggable binaries                :  no
C compiler flags                         :  ['-Wall']
C++ compiler flags                       :  ['-Wall']
Linker flags                             :  []
Build doxygen documentation              :  no
Build Opus netjack2                      :  no
Build with engine profiling              :  no
Build with 32/64 bits mixed mode         :  no
Build standard JACK (jackd)              :  yes
Build D-Bus JACK (jackdbus)              :  no
Autostart method                         :  classic

'configure' finished successfully (0.361s)
==> ./waf build
./waf build
Waf: Entering directory `/private/tmp/jack-OxgU/jack-1.9.9.5/build'
make[1]: Entering directory `/private/tmp/jack-OxgU/jack-1.9.9.5/build'
compat: the feature cc does not exist anymore (use "c")
compat: "uselib_local" is deprecated, replace by "use"
Waf: Leaving directory `/private/tmp/jack-OxgU/jack-1.9.9.5/build'
Traceback (most recent call last):
  File "/private/tmp/jack-OxgU/jack-1.9.9.5/.waf-1.6.11-30618c54883417962c38f5d395f83584/waflib/Scripting.py", line 97, in waf_entry_point
    run_commands()
  File "/private/tmp/jack-OxgU/jack-1.9.9.5/.waf-1.6.11-30618c54883417962c38f5d395f83584/waflib/Scripting.py", line 151, in run_commands
    run_command(cmd_name)
  File "/private/tmp/jack-OxgU/jack-1.9.9.5/.waf-1.6.11-30618c54883417962c38f5d395f83584/waflib/Scripting.py", line 143, in run_command
    ctx.execute()
  File "/private/tmp/jack-OxgU/jack-1.9.9.5/.waf-1.6.11-30618c54883417962c38f5d395f83584/waflib/Scripting.py", line 345, in execute
    return execute_method(self)
  File "/private/tmp/jack-OxgU/jack-1.9.9.5/.waf-1.6.11-30618c54883417962c38f5d395f83584/waflib/Build.py", line 98, in execute
    self.execute_build()
  File "/private/tmp/jack-OxgU/jack-1.9.9.5/.waf-1.6.11-30618c54883417962c38f5d395f83584/waflib/Build.py", line 107, in execute_build
    self.compile()
  File "/private/tmp/jack-OxgU/jack-1.9.9.5/.waf-1.6.11-30618c54883417962c38f5d395f83584/waflib/Build.py", line 182, in compile
    self.producer.start()
  File "/private/tmp/jack-OxgU/jack-1.9.9.5/.waf-1.6.11-30618c54883417962c38f5d395f83584/waflib/Runner.py", line 149, in start
    self.refill_task_list()
  File "/private/tmp/jack-OxgU/jack-1.9.9.5/.waf-1.6.11-30618c54883417962c38f5d395f83584/waflib/Runner.py", line 98, in refill_task_list
    self.outstanding.extend(self.biter.next())
  File "/private/tmp/jack-OxgU/jack-1.9.9.5/.waf-1.6.11-30618c54883417962c38f5d395f83584/waflib/Build.py", line 396, in get_build_iterator
    self.post_group()
  File "/private/tmp/jack-OxgU/jack-1.9.9.5/.waf-1.6.11-30618c54883417962c38f5d395f83584/waflib/Build.py", line 380, in post_group
    f()
  File "/private/tmp/jack-OxgU/jack-1.9.9.5/.waf-1.6.11-30618c54883417962c38f5d395f83584/waflib/extras/compat15.py", line 114, in post
    return old_post(self)
  File "/private/tmp/jack-OxgU/jack-1.9.9.5/.waf-1.6.11-30618c54883417962c38f5d395f83584/waflib/TaskGen.py", line 110, in post
    v()
  File "/private/tmp/jack-OxgU/jack-1.9.9.5/.waf-1.6.11-30618c54883417962c38f5d395f83584/waflib/extras/compat15.py", line 151, in apply_uselib_local
    self.link_task.set_run_after(y.link_task)
AttributeError: 'task_gen' object has no attribute 'link_task'

undefined symbols when compiled with --profile

adi@foh:/tmp/jack2$ /tmp/jacktest/bin/jackd -n test -d dummy -C 2 -P 2
jackdmp 1.9.9
Copyright 2001-2005 Paul Davis and others.
Copyright 2004-2012 Grame.
jackdmp 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
Could not open component .so '/tmp/jacktest/lib/jack/jack_net.so': /tmp/jacktest/lib/jack/jack_net.so: undefined symbol: _ZN4Jack18JackGnuPlotMonitorIfED1Ev
Could not open component .so '/tmp/jacktest/lib/jack/jack_net.so': /tmp/jacktest/lib/jack/jack_net.so: undefined symbol: _ZN4Jack18JackGnuPlotMonitorIfED1Ev
jack_get_descriptor : dll jack_net.so is not a driver

I reckon these are visibility issues.

Impossible to compile with --mixed

This is probably a pretty well-known issue, I've seen it in the mailing list archives, but there was no respose. Issue #21 was partially about this, however, its fix ad01143 did not solve it, despite the claim.

The main problem is that the lib32 clientlib is created by common/wscript with

if bld.env['BUILD_WITH_32_64']:
    print("create 32bit lib...")
    clientlib32bit = clientlib.clone('lib32')

which, some bisecting show, under waf 1.5 (with the help of the relevant section in the configure method) compiled the needed object files and binary into build/lib32. However, under waf 1.6, these object files end up in the build/ directory directly, overwriting the 64-bit object files. Thus linking of the 64-bit clientlib fails, because the wscript wants to link 32-bit objects into a 64-bit shared library.

JackRouter selection doesn't stick in system prefs for OSX 10.10 (Yosemite)

Jack OSX works on OS X 10.10 (so does the updated installer addressing the previous 64-bit issue), but the JackRouter system output device doesn't seem to work when selected under System Preferences -> Sound -> Output. This manifests as the output selection not "sticking," so after selecting it, and either closing System Preferences or simply going back to its main screen then re-selecting Sound -> Output, the output device remains the same non-JackRouter output as it was previously set to.

Unfortunately this seems to prevent me from routing output from OS X apps that just the system's current default output for audio, like most browsers, iTunes, QuickTime, etc. In my case I'm unable to route audio from those applications to StereoTool on OSX 10.10.

There seems to be acknowledgement of this on the Jack OS X mailing list (here and here), but I couldn't find an open issue tracking it, so creating this in the hopes it can gain some traction.

Has anyone been able to dig in to this yet? Definitely willing to help where I can (including running test builds and/or compiling and trial/error work on a machine experiencing this problem).

Thanks!

jackdbus hanging - can't reproduce reliably

Hi all, I use jackdbus with pulseaudio on Mint Qiana with load-module module-jackdbus-detect channels=2 in /etc/pulse/default.pa. This works much of the time, but sometimes there is flakiness when I try to load qjackctl, it just hangs so I can't set up my patchbay. I'd raise a bug there, but I think there's something going wrong in jack itself. I want to restart it, so I do try jack_control stop, and I get the following error:

DBus exception: org.freedesktop.DBus.Error.NoReply: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.

When I do strace on the jackdbus process at that point, I get
futex(0x13fd778, FUTEX_WAIT_PRIVATE, 2, NULL

But I can still play audio from Chrome via pulseaudio / jack sink. I just can't stop jackdbus (which I'm assuming is related to the qjackctl).

I'm happy to give more information in order to help debug this issue, I'm just not sure what might be relevant and would be grateful for your guidance.

jack2 with netone backend crashes at startup on x86_64

steps to reproduce

jackd -d netone

issues

jack2 version 1.9.7 is the last one that has a working netone backend on my current system, all later version up to git HEAD crash at startup. It works fine though on my other (i686 machine)

system

Linux melamori 3.9.9-1-ARCH #1 SMP PREEMPT Wed Jul 3 22:45:16 CEST 2013 x86_64 GNU/Linux

GDB dump

jackdmp 1.9.10
Copyright 2001-2005 Paul Davis and others.
Copyright 2004-2013 Grame.
jackdmp 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
[New Thread 0x7ffff3745700 (LWP 15530)]
no message buffer overruns
[Thread 0x7ffff3745700 (LWP 15530) exited]
[New Thread 0x7ffff3745700 (LWP 15531)]
no message buffer overruns
[Thread 0x7ffff3745700 (LWP 15531) exited]
[New Thread 0x7ffff3745700 (LWP 15532)]
no message buffer overruns
[Thread 0x7ffff3745700 (LWP 15532) exited]
JACK server starting in realtime mode with priority 10
[New Thread 0x7ffff7fbe700 (LWP 15534)]
[New Thread 0x7ffff7f3d700 (LWP 15535)]
[New Thread 0x7ffff7ebc700 (LWP 15536)]

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7ffff7ebc700 (LWP 15536)]
0x00007ffff60a6bf3 in Jack::JackNetOneDriver::FreePorts() () from /usr/lib/jack/jack_netone.so
(gdb) bt
#0 0x00007ffff60a6bf3 in Jack::JackNetOneDriver::FreePorts() () from /usr/lib/jack/jack_netone.so
#1 0x00007ffff60a6e66 in Jack::JackNetOneDriver::Initialize() () from /usr/lib/jack/jack_netone.so
#2 0x00007ffff7b99661 in Jack::JackWaitThreadedDriver::JackDriverStarter::Execute() () from /usr/lib/libjackserver.so.0
#3 0x00007ffff7b895b0 in Jack::JackPosixThread::ThreadHandler(void*) () from /usr/lib/libjackserver.so.0
#4 0x00007ffff6e1bdd2 in start_thread () from /usr/lib/libpthread.so.0
#5 0x00007ffff7115cdd in clone () from /usr/lib/libc.so.6

(gdb)

netjack2 (1.9.10) can no longer talk to older clients

Looks like 1.9.10 netjack2 can't talk to older clients, ie 1.9.8 or 1.9.9 tested against.

Does not matter which one is running netmaster, ie tested both senarios, netmaster running on 1.9.10, or running on 1.9.9

here's my uname -a
Linux ipod7 3.2.23 #2 SMP Thu Nov 1 16:58:25 PDT 2012 x86_64 GNU/Linux

I've also tested this against OSX Mountain Lion and Snow Leopard. Similar problems (albeit I think there are more issues under OSX regarding mulitcasting to sort through as well).

And thanks to Robin Gareus, and Roman Mamedov, tested against armhf Debian, ie
Linux debian 3.4.29-20130407.1341-rm1+ #34 Sun Apr 7 19:56:56 YEKT 2013 armv7l GNU/Linux. Behavior is identical to debian to debian amd64 testing as stated above.

[bug] jack_cpu_load produces inconsistent values with Reaper under Wine

Steps to reproduce:

  1. Load Reaper under Wine, create an empty project
  2. Create 1 audio track
  3. Add JS:Tonegenerator (built-in Reaper FX) to the track FX, make it produce some signal
  4. Add ReaFir (built-in Reaper FX) to the Master Track, select 32768 for FFT Size
  5. Open Reaper's Performance Meter (Ctrl+Alt+P), jack_cpu_load in a console window
    (Options->Preferences->Audio->uncheck "Close audio device when stopped and application is inactive", in order to make Reaper process audio when switching to a different window)
  6. Compare values in Reaper's Performance Meter vs jack_cpu_load. In my case, Reaper shows 1.80% CPU, jack_cpu_load shows 3.4% load. That's about in the same ballpark.
  7. Move ReaFir from the Master track to track no. 1, after tonegenerator (ctrl+alt+mouse drag-n-drop)
  8. Compare the values. They should be the same as before, as essentially the processing chain did not change. In my case, Reaper still shows the same 1.80% CPU. jack_cpu_load shows only about 0.63% load.
  9. Duplicate ReaFir 4 times, to have 5 sequential ReaFir plugins in the FX chain on track no. 1 (ctrl+drag)
  10. (on my machine) Reaper shows about 7.6% CPU, jack_cpu_load shows only about 0.68% load.

Conclusion: with wine/Reaper, jack_cpu_load calculates load correctly when FX are on the Master track, fails to calculate correctly when FX are on the Audio Tracks.

Measured with Reaper x64, "Net" driver for Jack2, Buffer Size of 2048. Wine compiled from the latest git, with "wine-rt" patches.

Verified similar behavior with Reaper x86, "Alsa" driver for Jack, Buffer Size of 512, with wine-rt from KXstudio-repositories, with and without wine-rt initialized.

Ardour session export does not work anymore with "-d alsa"

Hi,
It's impossible to export ardour session to audio file with "-d alsa" parameter.
Qjackctl start it with "/usr/bin/jackd -u -dalsa -dhw:0 -r48000 -p256 -n2 -H -M -D -Chw:Intel,0"
I use the jack2 version from kxstudio (stable 1.9.10 release) from 23-Aug-2014
To export my session i must run "jack -d dummy"...

Unable to get some system sounds to play

Some system sounds will not play at all when jackdmp is active. The best example is probably the time announcement on the hour/half hour.

As some things (dock, etc) start up before there is any chance to run jack pilot and start jack, this is unavoidable as long as jack requires programs to be started after it.

Things that might/might not be possible ways around this:

  1. Figuring out how to get launchD to run something before the normal login programs
  2. Getting a jack driver running before the window server is up (during system start), even if it does not attach to a sound device until later
  3. Solving the startup order dependency issue.

Controlling the default output channel

I am using an aggregate device with Jack. Jack wants to send all output by default to channels 1 and 2.

I cannot control which device the aggregate puts into the first slot.
Is there any way to tell jack which channels are the default output channels?

As an example of what I'd like to be able to do, I'd like to say "Map audio 1 to output 4, map audio 2 to output 2". That would put the left audio on my left external speaker, and the right audio on my right internal speaker.

jackd2: Jackd will not start if X not running

Forwarded from http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=670112

While previous versions of jackdmp with dbus support merely printed an
error when unable to connect to X, this one will actually fail to start
as discussed here:
http://permalink.gmane.org/gmane.comp.audio.jackit/25430

This makes it impossible to use the current debian package of jackd2 on
any system which doesn't have X installe or is not currently running it
and requires rebuilding the package without the --dbus configure flag.

jackd --version has side effects

Hi!

The gentoo maintainer reported to FFADO that jackd --version writes outside the sandbox directory. I ran strace to verify the issue:

open("/dev/shm/pulse-shm-1869646667", O_RDWR|O_CREAT|O_EXCL|O_NOFOLLOW|O_CLOEXEC, 0700) = 6
open("/dev/snd/controlC0", O_RDWR|O_CLOEXEC) = 4

jackd1 does not open anything for writing when asked about the version.

FFADO tracking bug: http://subversion.ffado.org/ticket/381

That's a minor cosmetic issue, but if --version could return early without instantiating more functionality, that would be good.

jack_client_open status does not contain JackServerStarted

When calling jack_client_open in such a manner that a Jack server is started the jack_status_t status passed to it should contain JackServerStarted, at this point it gets overwritten by the status of the ClientCheck call in JackGenericClientChannel.
This can be reproduced be building and running the simple_client example without a running Jack server. It will not print the "Jack Server Started" message, while it does start the server.

A fix for this could be:
#101

Client crash on MIDI mixdown when using multiple connections

I'm having a crash (assertion failure) in latest git jack2 code.

it crashes during jack_port_get_buffer function.
Running the app normally prints to terminal:
jack_midi_dump: ../common/JackMidiPort.cpp:130: void Jack::MidiBufferMixdown(void*, void**, int, jack_nframes_t): Assertion next_event != 0' failed.and through GDB:0x00007ffff6af2302 in __GI___assert_fail (assertion=0x7fffe92e8fbb "next_event != 0", file=0x7fffe92e8fa0 "../common/JackMidiPort.cpp", line=130, function=0x7fffe92e8fe0 "void Jack::MidiBufferMixdown(void*, void**, int, jack_nframes_t)") at assert.c:101`

I was able to get a simple test for the crash (in Linux).

1. run any kind of jack-midi generator (sequencer, keyboard, etc)
2. run another client that has jack-midi-out, but this one doesn't need to output any events.
(I'm using "jack_midiseq EmptySequencer 1 24000 0 60")
3. run "jack_midi_dump" twice
4. connect the midi generator out port to both midi-monitor in ports, same thing for midiseq
5. generate/play some events for a few seconds

a single or both jack_midi_dump tools will abort due to an assertion failure.

compilation on debian 7.2 arm broken since feb4

Commit 4a94e12 (feb4: jack2 supports android devices & rebase current changes to master) breaks compilation under debian-wheezy-7.2-armhf-3.8.13. The commit before works fine. This is running on a Beaglebone black.

debian@debian-armhf:~/jack2$ ./waf configure --alsa
Setting top to : /home/debian/jack2
Setting out to : /home/debian/jack2/build
Checking for 'g++' (c++ compiler) : /usr/bin/g++
Checking for 'gcc' (c compiler) : /usr/bin/gcc
Linux detected
Checking for header samplerate.h : yes
Checking for program pkg-config : /usr/bin/pkg-config
Checking for 'alsa' >= 1.0.18 : yes
Checking for 'libfreebob' >= 1.0.0 : not found
Checking for 'libffado' >= 1.999.17 : not found
Checking for header samplerate.h : yes
Checking for header sndfile.h : yes
Checking for 'celt' >= 0.5.0 : not found
Checking for library readline : not found
Checking for 'celt' >= 0.11.0 : not found
Checking for 'celt' >= 0.8.0 : not found
Checking for 'celt' >= 0.7.0 : not found
Checking for 'celt' >= 0.5.0 : not found
Checking for 'opus' >= 0.9.0 : not found

JACK 1.9.10 svn revision will checked and eventually updated during build
Build with a maximum of 64 JACK clients
Build with a maximum of 768 ports per application
Install prefix : /usr/local
Library directory : /usr/local/lib
Drivers directory : /usr/local/lib/jack
Build debuggable binaries : no
C compiler flags : ['-Wall']
C++ compiler flags : ['-Wall']
Linker flags : []
Build doxygen documentation : no
Build Opus netjack2 : no
Build with engine profiling : no
Build with 32/64 bits mixed mode : no
Build standard JACK (jackd) : yes
Build D-Bus JACK (jackdbus) : no
Autostart method : classic
Build with ALSA support : yes
Build with FireWire (FreeBob) support : no
Build with FireWire (FFADO) support : no

'configure' finished successfully (7.089s)

debian@debian-armhf:/jack2$ ./waf build
...
[141/245] cxx: linux/alsa/JackAlsaDriver.cpp -> build/linux/alsa/JackAlsaDriver.cpp.3.o
../linux/alsa/JackAlsaDriver.cpp: In function ‘const jack_driver_desc_t* driver_get_descriptor()’:
../linux/alsa/JackAlsaDriver.cpp:753:146: error: cannot convert ‘jack_driver_param_constraint_desc_t* ()()’ to ‘jack_driver_param_constraint_desc_t’ for argument ‘7’ to ‘int jack_driver_descriptor_add_parameter(jack_driver_desc_t_, jack_driver_desc_filler_t_, const char_, char, jack_driver_param_type_t, const jack_driver_param_value_t_, jack_driver_param_constraint_desc_t_, const char_, const char*)’
Waf: Leaving directory `/home/debian/jack2/build'
Build failed
-> task in 'alsa' failed (exit status 1):
{task 5323504: cxx JackAlsaDriver.cpp -> JackAlsaDriver.cpp.3.o}
['/usr/bin/g++', '-Wall', '-fPIC', '-I/home/debian/jack2/build/linux', '-I/home/debian/jack2/linux', '-I/home/debian/jack2/build/linux', '-I/home/debian/jack2/linux', '-I/home/debian/jack2/build/posix', '-I/home/debian/jack2/posix', '-I/home/debian/jack2/build/common', '-I/home/debian/jack2/common', '-I/home/debian/jack2/build/common/jack', '-I/home/debian/jack2/common/jack', '-I/home/debian/jack2/build/dbus', '-I/home/debian/jack2/dbus', '-I/home/debian/jack2/build', '-I/home/debian/jack2', '-I/usr/include/alsa', '-DHAVE_ALSA=1', '-DHAVE_PPOLL=1', '-DHAVE_SAMPLERATE=1', '-DHAVE_SNDFILE=1', '-DHAVE_CELT=0', '-DHAVE_CELT_API_0_11=0', '-DHAVE_CELT_API_0_8=0', '-DHAVE_CELT_API_0_7=0', '-DHAVE_CELT_API_0_5=0', '-DUSE_CLASSIC_AUTOLAUNCH=1', '-DCLIENT_NUM=64', '-DPORT_NUM_FOR_CLIENT=768', '-DADDON_DIR="/usr/local/lib/jack"', '-DJACK_LOCATION="/usr/local/bin"', '-DUSE_POSIX_SHM=1', '-DJACKMP=1', '-DHAVE_CONFIG_H', '-DSERVER_SIDE', '-DHAVE_PPOLL', '-DHAVE_TIMERFD', '../linux/alsa/JackAlsaDriver.cpp', '-c', '-o', 'linux/alsa/JackAlsaDriver.cpp.3.o']
debian@debian-armhf:
/jack2$

jackd provides too verbose output

jackd provides much too verbose by default (despite --verbose not used or --silent passed as comand line parameter), example:

% jackd -P70 -p128 -t5000 -s -dfirewire -dhw:0 -r48000 -p64 -n3 -I127 -O127 
jackdmp 1.9.9.4
Copyright 2001-2005 Paul Davis and others.
Copyright 2004-2012 Grame.
jackdmp 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
no message buffer overruns
no message buffer overruns
no message buffer overruns
JACK server starting in realtime mode with priority 70
Jack: JackPosixThread::StartImp : create non RT thread
Jack: JackPosixThread::ThreadHandler : start
Jack: JackDriver::Open capture_driver_name = 
Jack: JackDriver::Open playback_driver_name = 
Jack: Check protocol client = 8 server = 8
Jack: JackEngine::ClientInternalOpen: name = system
Jack: JackEngine::AllocateRefNum ref = 0
Jack: JackPosixSemaphore::Allocate name = jack_sem.1000_default_system val = 0
Jack: JackEngine::NotifyAddClient: name = system
Jack: JackGraphManager::SetBufferSize size = 64
Jack: JackConnectionManager::DirectConnect first: ref1 = 0 ref2 = 0
Jack: JackGraphManager::ConnectRefNum cur_index = 0 ref1 = 0 ref2 = 0
Jack: JackDriver::SetupDriverSync driver sem in flush mode
Jack: JackSocketServerChannel::Open
Jack: JackServerSocket::Bind : addr.sun_path /dev/shm/jack_default_1000_0
Jack: JackSocketServerChannel::BuildPoolTable size = 1
Jack: JackEngine::Open
Jack: JackClientSocket::Connect : addr.sun_path /dev/shm/jack_default_1000_0
Jack: JackEngine::ClientInternalOpen: name = freewheel
Jack: JackEngine::AllocateRefNum ref = 1
Jack: JackPosixSemaphore::Allocate name = jack_sem.1000_default_freewheel val = 0
Jack: JackEngine::NotifyAddClient: name = freewheel
Jack: JackDriver::ClientNotify ref = 1 driver = system name = freewheel notify = 0

using jack2 1.9.9 7c6d111

I found this bug describing same problem.

Dante

Crazy feature request that will probably never happen anytime soon, but I just wanted to throw this out there:

Backend driver support to allow Jack daemon to be a virtual device in a Dante network.

Who knows, Audinate might be nice and play ball...

DBus exception: org.jackaudio.Error.Generic: Failed to open server

I try to follow Arch's wiki on JACK to work with JACK2 D-Bus but I get:

$ jack_control start
--- start
DBus exception: org.jackaudio.Error.Generic: Failed to open server

I have also consulted this thread without results.
When I open qjackctl and attempt to start the server I get:

01:56:11.937 Patchbay deactivated.
01:56:11.943 Statistics reset.
01:56:11.945 ALSA connection change.
Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started
01:56:11.954 ALSA connection graph change.
01:56:20.676 JACK is starting...
01:56:20.676 jackd -dalsa -dhw:0 -r48000 -p1024 -n2
Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started
01:56:20.680 Could not start JACK. Sorry.
01:56:22.012 JACK was stopped

Any ideas?

PS: I have already posted it to the Arch Forums but I think here is perhaps more appropriate. I run Arch Linux with KDE4, and there are no relevant messages in dmesg. My /etc/pulse/client.conf is:

$ cat /etc/pulse/client.conf    
# This file is part of PulseAudio.
#
# PulseAudio is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# PulseAudio is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.

## Configuration file for PulseAudio clients. See pulse-client.conf(5) for
## more information. Default values are commented out.  Use either ; or # for
## commenting.

; default-sink =
; default-source =
; default-server =
; default-dbus-server =

#; autospawn = yes
; autospawn = no 
; daemon-binary = /usr/bin/pulseaudio
; extra-arguments = --log-target=syslog

; cookie-file =

; enable-shm = yes
; shm-size-bytes = 0 # setting this 0 will use the system-default, usually 64 MiB

; auto-connect-localhost = no
; auto-connect-display = no

More info:

$ uname -vro
3.19.0-mainline-3.19-test-1 #1 SMP PREEMPT Wed Feb 11 13:27:53 WET 2015 GNU/Linux
$ kwin -v
QDBusConnection: session D-Bus connection created before QCoreApplication. Application may misbehave.
Qt: 4.8.6
KDE Development Platform: 4.14.5
KWin: 4.11.16

jack crashes client if v mem exhausted - mmap() failure

If the client uses up almost all of its virtual memory jack may crash it in common/JackShmMem.h:

The destructor for JackShmReadWritePtr is called although Init() failed and it will call GetShmAddress()->UnlockMemory();

The fastest sollution that solved my issue was to add another flag member, initDone and set it to TRUE in Init() right after locking memory so that GetShmAddress()->UnlockMemory() doesn't do an illegal access.

I'm not familiar with jackd so I'm asking: is this approach acceptable/safe or is there a better way to handle this mmap() failure?

fails to build in mixed mode

latest git fals to build with --mixed.

final stage of build log:
[ 19/306] c: common/shm.c -> build/common/shm.c.1.o
18:13:49 runner ['/usr/bin/gcc', '-fPIC', '-fvisibility=hidden', '-I/home/falktx/Personal/FOSS/KXStudio/PPA/Main/LADI-jack2-486f16a/build/linux', '-I/home/falktx/Personal/FOSS/KXStudio/PPA/Main/LADI-jack2-486f16a/linux', '-I/home/falktx/Personal/FOSS/KXStudio/PPA/Main/LADI-jack2-486f16a/build/posix', '-I/home/falktx/Personal/FOSS/KXStudio/PPA/Main/LADI-jack2-486f16a/posix', '-I/home/falktx/Personal/FOSS/KXStudio/PPA/Main/LADI-jack2-486f16a/build/common', '-I/home/falktx/Personal/FOSS/KXStudio/PPA/Main/LADI-jack2-486f16a/common', '-I/home/falktx/Personal/FOSS/KXStudio/PPA/Main/LADI-jack2-486f16a/build/common/jack', '-I/home/falktx/Personal/FOSS/KXStudio/PPA/Main/LADI-jack2-486f16a/common/jack', '-I/home/falktx/Personal/FOSS/KXStudio/PPA/Main/LADI-jack2-486f16a/build', '-I/home/falktx/Personal/FOSS/KXStudio/PPA/Main/LADI-jack2-486f16a', '-DHAVE_CONFIG_H', '-DSERVER_SIDE', '../common/shm.c', '-c', '-o', 'common/shm.c.1.o']
../common/shm.c: In function ‘jack_resize_shm’:
../common/shm.c:670:21: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
../common/shm.c: In function ‘jack_access_registry’:
../common/shm.c:1170:9: error: ‘jack_shm_info_t’ has no member named ‘attached_at’
../common/shm.c:1178:22: error: ‘jack_shm_info_t’ has no member named ‘attached_at’
../common/shm.c: In function ‘jack_create_registry’:
../common/shm.c:1202:9: error: ‘jack_shm_info_t’ has no member named ‘attached_at’
../common/shm.c:1210:22: error: ‘jack_shm_info_t’ has no member named ‘attached_at’
../common/shm.c: In function ‘jack_release_shm’:
../common/shm.c:1229:8: error: ‘jack_shm_info_t’ has no member named ‘attached_at’
../common/shm.c:1230:12: error: ‘jack_shm_info_t’ has no member named ‘attached_at’
../common/shm.c: In function ‘jack_shmalloc’:
../common/shm.c:1264:6: error: ‘jack_shm_info_t’ has no member named ‘attached_at’
../common/shm.c: In function ‘jack_attach_shm’:
../common/shm.c:1280:9: error: ‘jack_shm_info_t’ has no member named ‘attached_at’

Jackdmp keeps crashing -- Aggregate device with HDMI display

My system output device is an aggregate device, containing the internal speakers on my mac, an HDMI display/speaker (Macbook pro, HDMI connection on built-in video card), and a USB headset (mic and speaker)

If I attempt to use Jack with the headset not connected, Jack wants to treat the system audio as the built-in speaker and microphone, and won't use the aggregate device with the two speaker outputs.

If I use Jack with everything, it works, until the TV is turned on. There are no complaints from turning the TV off. But if I turn it on, then I get a message saying that the audio settings have changed, Jackdmp will now quit; followed by jack server has quit, so jack pilot will now quit.

The whole "nothing plays correctly unless jack server was started first" means that I have shut down and restart everything in the morning when I turn my external monitor back on.
The need to reset everything's routing means that this is painful.
And the inability to save and restore routing unless there is a perfect match of things seen by jack -- including programs that only show up when active and go away when not -- means that this is all manual and error prone.

Basically, I want Jack to be rock-solid (not crash), any more than the existing aggregate device does not crash, and work with things started earlier than it.

intermittent sudden sample rate / pitch problems

Hello,
we have a Mackie Onyx 1640i / FireWire in our studio which works suprisingly well with jack and ffado. However, we are experiencing intermittent changes in pitch / sample rate which make the mixer both record and output with incorrect pitch and bpm. There are no indications in the jack / ffado logs, even when verbose logs is enabled, that these sample rate events occur.
This is a showstopper for us, so we welcome the help to debug this issue.

Platform is Ubuntu 14.04 64bit
04:00.0 FireWire (IEEE 1394): Texas Instruments TSB43AB23 IEEE-1394a-2000 Controller (PHY/Link)

segfault at stop when compiled with --profile

(gdb) run
Starting program: /tmp/jacktest/bin/jackd -n test -d dummy -C 2 -P 2
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
jackdmp 1.9.9
Copyright 2001-2005 Paul Davis and others.
Copyright 2004-2012 Grame.
jackdmp 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
[New Thread 0x7ffff41fa700 (LWP 31668)]
[New Thread 0x7ffff37f8700 (LWP 31669)]
ALSA lib conf.c:1220:(parse_def) show is not a compound
ALSA lib conf.c:1686:(snd_config_load1) toplevel:24:26:Unexpected char
ALSA lib conf.c:3406:(config_file_open) /usr/share/alsa/pulse-alsa.conf may be old or corrupted: consider to remove or fix it
[New Thread 0x7fffeee91700 (LWP 31670)]
JACK server starting in realtime mode with priority 10
Engine profiling activated, beware 197 MBytes are needed to record profiling points...
[New Thread 0x7ffff7fd1700 (LWP 31671)]
[New Thread 0x7ffff7f50700 (LWP 31673)]
[New Thread 0x7ffff7ecf700 (LWP 31675)]
^CJack main caught signal 2
[Thread 0x7ffff7ecf700 (LWP 31675) exited]
[Thread 0x7ffff7f50700 (LWP 31673) exited]
[Thread 0x7ffff7fd1700 (LWP 31671) exited]
Write server and clients timing data...

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff7871719 in Jack::JackEngineProfiling::~JackEngineProfiling (this=0x7fffdd2253e2, __in_chrg=)
at ../common/JackEngineProfiling.cpp:65
65 for (unsigned int j = 0; j < fMeasuredClient; j++) {
(gdb) bt
#0 0x00007ffff7871719 in Jack::JackEngineProfiling::~JackEngineProfiling (this=0x7fffdd2253e2, __in_chrg=)

at ../common/JackEngineProfiling.cpp:65

#1 0x00007ffff7886c77 in Jack::JackEngineControl::~JackEngineControl (this=0x7fffdd225000, __in_chrg=)

at ../common/JackEngineControl.h:126

#2 0x00007ffff7885015 in Jack::JackServer::~JackServer (this=0x7ffff0c00010, __in_chrg=)

at ../common/JackServer.cpp:75

#3 0x00007ffff7890118 in jackctl_server_close (server_ptr=0x605890) at ../common/JackControlAPI.cpp:856
#4 0x000000000040292b in main (argc=9, argv=0x7fffffffe418) at ../common/Jackdmp.cpp:547

Here, fMeasuredClient cannot be accessed:

(gdb) p fMeasuredClient
Cannot access memory at address 0x7fffe9821706

Maybe it's a toolchain issue or side effect. I'll see if I can bisect it to a certain commit.

segfault when using jack_control switchmaster

..because the parameter list is free()ed twice:

diff --git a/common/JackControlAPI.cpp b/common/JackControlAPI.cpp
index 322627c..cc29647 100644
--- a/common/JackControlAPI.cpp
+++ b/common/JackControlAPI.cpp
@@ -1365,7 +1365,6 @@ SERVER_EXPORT bool jackctl_server_switch_master(jackctl_server * server_ptr, jac
     if (server_ptr && server_ptr->engine) {
         JSList * paramlist;
         if (!jackctl_create_param_list(driver_ptr->parameters, ¶mlist)) return false;
-        jackctl_destroy_param_list(paramlist);
         bool ret = (server_ptr->engine->SwitchMaster(driver_ptr->desc_ptr, paramlist) == 0);
         jackctl_destroy_param_list(paramlist);
         return ret;

alsa_in crashes when connected to bluetooth SCO alsa PCM device

We are working to integrate a bluetooth headset with a system which uses jackd2 for the audio transport.

We found that alsa_in would regularly crash and provide choppy audio whatever settings we used. Unfortunately I don't have access to equipment to provide a detailed bug report just now, this can provided on request.

Attached is a source file bt_alsa_in.c which worked for us. The settings are hardcoded so it would require minor modification to make it generally useable, the main difference is that alsa work is carried out in the programs main thread instead of on the jack callback. It also doesn't contain the algorithm to deal with subtle rate differences, this implementation will lose a frame every once in a while if the input and output streams are not synchronised.

We could not find a copyright notice for the alsa_in file so we aren't sure where/whether to submit it. We would be happy to make it a more general solution and submit it back to the project. The GIST links to the source, I just added the LGPL copyright notice because I wasn't sure what else to do!

https://gist.github.com/mike7c2/3c4825278c0217d7f8a0

Cheers,
Mike

jack_control/jackdbus ignores alsarawmidi midi-driver

Repro steps:

  1. jack_control dps midi-driver alsarawmidi
  2. jack_control stop && jack_control start

Result: jack_lsp shows no midi ports.


jackd ... -X alsarawmidi works as expected

~/.config/jack/conf.xml:

<?xml version="1.0"?>
<!--
JACK settings, as persisted by D-Bus object.
You probably don't want to edit this because
it will be overwritten next time jackdbus saves.
-->
<!-- Sat Oct 19 21:15:02 2013 -->
<jack>
 <engine>
  <option name="driver">alsa</option>
 </engine>
 <drivers>
  <driver name="dummy">
  </driver>
  <driver name="net">
  </driver>
  <driver name="loopback">
  </driver>
  <driver name="alsarawmidi">
  </driver>
  <driver name="alsa">
   <option name="period">64</option>
   <option name="nperiods">4</option>
   <option name="hwmon">false</option>
   <option name="midi-driver">alsarawmidi</option>
   <option name="hw-alias">true</option>
  </driver>
  <driver name="netone">
  </driver>
 </drivers>
 <internals>
  <internal name="netmanager">
  </internal>
  <internal name="audioadapter">
  </internal>
  <internal name="profiler">
  </internal>
  <internal name="netadapter">
  </internal>
 </internals>
</jack>

jack version: jackdmp 1.9.10

Initializer Strings to long for Array

Introduced in #76

../linux/alsa/alsa_driver.c: In function ‘alsa_driver_configure_stream’:
../linux/alsa/alsa_driver.c:374:3: warning: initializer-string for array of chars is too long
   {"24bit little-endian in 3bytes format", SND_PCM_FORMAT_S24_3LE, IS_LE},
   ^
../linux/alsa/alsa_driver.c:374:3: warning: (near initialization for ‘formats[3].Name’)
../linux/alsa/alsa_driver.c:375:3: warning: initializer-string for array of chars is too long
   {"24bit big-endian in 3bytes format", SND_PCM_FORMAT_S24_3BE, IS_BE},
   ^
../linux/alsa/alsa_driver.c:375:3: warning: (near initialization for ‘formats[4].Name’)

Would it be save to increase just the size of the Array, or is it required to shorten the strings?

@ricardocrudo: just dropping the last word "format" would bring the strings back into the limit, would this be ok?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.