I need to combine two HDSPe MADI FX cards to one virtual device. I have a
working driver, which is alsa-compatible. I can select each single card in
any alsa-compatible application and all channels work flawless.
For combining the MADI FX cards to one virtual device, I created an
.asoundrc with 194 inputs for each card. When I start that virtual device
via
jackd -R -d alsa -C madifx_record_all -P madifx_playback_all
I get this error:
> creating alsa driver ...
>
madifx_playback_all|madifx_record_all|1024|2|48000|0|0|nomon|swmeter|-|32bit
> jackd: pcm_multi.c:1060: snd_pcm_multi_open: Assertion
`!slave_map[sidxs[i]][schannels[i]]' failed.
However, it works when I reduce the amount from 194 to 64 channels per
card. I tried to use 128 channels per card, but that fails the same way.
See my alsa-info attached, which also includes the .asoundrc content.
I also found this, which might be related:
https://ccrma.stanford.edu/mirrors/lalists/lad/2005/06/0202.html
To me, this looks like a bug. What do you think?
On Wed, April 26, 2017 6:24 pm, Frodo Jedi wrote:
> Actually, my goal is that of sending audio from the board to
> other connected devices, for the moment I am using a mac,
> it could be another pc with linux or windows.
Jack is designed with the idea that the audio hardware controls all data
flow, since that is really the final location that the data has to either
get to the output device (D/A converter, S/PDIF output, etc.), or is sent
by the input device (A/D converter). In jack terms what you are
describing is that the odroid would be sent to multiple master devices.
You either have to disconnect from one master and connect to another each
time you want to send audio to a different device, or you have to use a
bridge software to bridge between different jack master clock domains. The
jack walk-through that you linked to previously shows using the
audioadapter plugin for that, the zita-nj and zita-jn bridges work better.
> I will try zita but my main goal is to use netjack2.
You should be very clear whether your goal is to use netjack2, or whether
your goal is to send audio from your odroid to various other devices. If
your goal is to use netjack2 you should pick a connection topology that
matches the expectations of the jack design.
If your goal is actually to send audio from the odroid to various other
devices, then you should use whatever tool is most appropriate for the
job. If you need audio to be sent to multiple other devices with audio
hardware using jack, then zita bridge is probably what you need if you are
using jack. Whether you should even be using jack is a separate question.
Is this a studio or audio production type setup? Because if you are just
trying to setup distributed home audio then something like Logitech Media
Server and squeezebox lite software may be better suited for what you are
trying to do.
> I am going for a wired connection first, with the final aim to
> test netjack2 over wifi, and compare the wired and wireless
> behaviours under various conditions.
Don't have high expectations for jack over WiFi. Jack is designed around
low latency connections, and WiFi generally cannot sustain reliably low
latency connections. There is work going on to get there, but unless you
have been following along with the bufferbloat and "make Wi-Fi fast" work
and are running bleeding edge drivers you are probably going to hit
latency spikes that will cause problems for jack. You can have fun
figuring that out once wired connections are working OK.
> The odroid board (configured as master in the first case)
> has a beheringer soundcard perfectly working, I can record
> and listen audio using it. So I should be able to use the
> odroid + soundcard configuration as a master, and the
> mac as a slave. Right?
Yes, presumably. Just to be clear, those terms mean you would have
something like Ardour running on the mac producing audio data, and the
data would be sent to the odroid which would play the audio through the
behringer/speakers.
> Ok, but my goal is to have a networked configuration where
> the linux odroid system broadcast audio to various connected devices.
With the various connected devices each having audio hardware and speakers
connected? Then you will need bridge software such as audioadapter or
zita-njb and zita-jnb loaded to cross between the clock domains (since
each separate audio hardware will have its own sample clock running
independently and you don't have a way to synchronize all the clocks).
> My understanding is that the odroid must be the master and
> all the other devices receiving and reproducing the audio
> signal must be the slave. Am I wrong?
You are wrong. In the jack terminology, the device with the fixed clock,
i.e. the audio hardware device, must control the flow of data, in other
words must be the master.
In the case of multiple devices playing out the audio you have in jack
terminology multiple masters, so you have to bridge between the masters.
Just for the sake of completeness, there is a way to do what you thought
you wanted, used in studio and broadcast facilities, but it requires all
the audio playback devices to have the ability to synchronize their audio
clocks to a centralized clocking signal used for the entire studio or
broadcast facility. Traditionally that was done by distributing a
synchronization signal to each piece of equipment used, more recently it
can be done by using IEEE 1588v2 "Precision Time Protocol" to synchronize
the local clock of each device over Ethernet. That is a fairly
sophisticated setup, suffice to say that if you had equipment that could
do that you would already know how to set it up correctly, so that
topology does not apply here.
Jackd may not be the tool best suited for your use. Do you actually need
low latency and the patch bay style features of jack? If you just want to
be able to play audio from a central server to various audio playback
devices which do not need to be synchronized at the audio frame level then
some type of whole house audio design may be better suited to what you
want than jack, which is designed specifically for low latency audio
production use. Either Logitech Media Server with squeezebox lite
instances as I mentioned, or an Icecast server running on the odroid and
VLC or something similar running on the other machines to pull the audio
they want. That is the answer to a question you did not ask, just wanted
to mention it for completeness, since you have asked about getting netjack
running but it is not clear from some of your questions whether that is
really what would best serve your end goal (assuming your end goal really
is some arrangement of playing audio, and contrary to what you wrote
earlier running netjack2 is not actually a goal in itself).
>> You are giving a unicast address as the argument for the
>> multicast address
> I don't have the setup right now, I will re-test tomorrow,
> but if I correctly remember, I used the address 192.168.117.129 (which
is the static address I gave to the mac) because simply
> using jackd -R -d net (which takes the default) did not work.
I'll have to try myself later. My machines have multiple network
interfaces, which makes multicast setup a little tricky, I have to
remember how to tell the kernel which interface should be listening for
multicast, might take me a while to get that working properly. But a
little worrying that the documentation does not seem to match the behavior
of the software.
> Master: (mac OSX Sierra 10.12.4)
>
> sh-3.2# jackd -R -d coreaudio -Cno -Pyes
Note that I'm not sure that the -C and -P arguments actually take a yes or
no value. There were no error messages complaining, so maybe that is OK.
The documentation seems vague and I don't have a mac to verify the
coreaudio driver behavior. See below...
> jackdmp 1.9.11
> Copyright 2001-2005 Paul Davis and others.
> Copyright 2004-2016 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
> JACK server starting in realtime mode with priority 10
> self-connect-mode is "Don't restrict self connect requests"
> Separated input = 'Built-in Microphone'
> Separated output = 'Built-in Output'
> Input channel = 0 ==> JACK input port = 0
> Input channel = 1 ==> JACK input port = 1
That seems to indicate that there are two input channels, so the -Cno did
not seem to do anything. Maybe just leave off the -C altogether and have
only -P.
Since you have only mentioned playing audio and not capturing audio, the
goal was to get the master configured for playback only to simplify the
configuration as much as possible.
> JACK output port = 0 ==> output channel = 0
> JACK output port = 1 ==> output channel = 1
> CoreAudio driver is running...
> Starting Jack NetManager
> Listening on '225.3.19.154:19000'
> Sending parameters to ...
> Can't set net buffer sizes : Invalid argument
> SetParams error...
> Can't init new NetMaster...
If I am interpreting that correctly, the message indicates that the
netjack driver could not start correctly.
> Slave: (debian linux odroid board)
> Initializing connection with ucas-MacBook-Pro-9.local...
So the odroid was able to detect that the MacBook was running netjack.
Possibly all the later error messages are because the MacBook is not
giving reasonable responses due to whatever caused the earlier messages
about not being able to set the net buffer sizes.
> Any suggestion?
The walk-through guide says this form will print more information:
jack_load netmanager -i "-h"
Try that and see if there is useful information printed about the number
of channels which can be used, or the optimum period size for your system.
My suspicion after looking more closely is that this message:
> Can't set net buffer sizes : Invalid argument
Is that the audio parameters set force the netjack driver into attempting
to use invalid settings. That message comes from this location in
JackNetInterface.cpp:
try {
// audio net buffers
if (fParams.fSendAudioChannels > 0) {
fNetAudioCaptureBuffer =
AudioBufferFactory(fParams.fSendAudioChannels, fTxData);
assert(fNetAudioCaptureBuffer);
}
if (fParams.fReturnAudioChannels > 0) {
fNetAudioPlaybackBuffer =
AudioBufferFactory(fParams.fReturnAudioChannels, fRxData);
assert(fNetAudioPlaybackBuffer);
}
} catch (exception&) {
jack_error("NetAudioBuffer on master allocation error...");
return false;
}
// set the new buffer size
if (SetNetBufferSize() == SOCKET_ERROR) {
jack_error("Can't set net buffer sizes : %s",
StrError(NET_ERROR_CODE));
goto error;
}
return true;
error:
FreeNetworkBuffers();
return false;
}
So it appears that the jack side was able to set the buffer size with no
exception, but then after attempting to use that information to set the
network buffer size the network API gave an error.
I just looked back at your first email and that message was not present.
In the first configurations you explicity gave the -p128 -n2 parameters,
you did not show that in your most recent command output. Perhaps you
introduced a new problem.
Typically when jackd starts it prints the sample rate, the sample format
(number of bits used), and the number of samples per frame and frames per
period. I do not see that in the most recent output you showed.
Did you truncate any output from the jackd messages, or did jackd really
not print out the buffer size information?
--
Chris Caudle
On Wed, April 26, 2017 12:22 pm, Frodo Jedi wrote:
> My goal is to send audio from the odroid board (master)
> to the mac (slave) using a direct ethernet connection.
The jackd master is the device with the audio hardware. Are your problems
perhaps caused because you are following the setup instructions for master
on a device with no audio hardware? (saw later on that you tried the other
way around, so let's concentrate on that configuration).
> On the master:
> /usr/bin/jackd -P 70 -p96 -t 2000 -dalsa -dhw:CODEC -S -s
> -r48000 -p128 -n2
> jack_load netmanager
That is on the odroid? What ALSA compatible hardware is on the odroid?
In any event, the short of it is that ALSA is the driver for the audio
hardware, so whichever device has speakers connected better be the device
where you are giving the driver argument as "-dalsa" or you won't hear any
sound.
> Actually, if can be of any help, I also tried to set the mac
> as master and the linux board as the slave.
That should be the correct configuration if you want to connect the mac to
an amplifier and speakers and you want the linux odroid system to just
send digital audio information to the mac and have the mac play the audio.
> The result is that they seem to communicate,
> although jack on the mac crashes giving the error
> "Floating point exception: 8":
Can you run local jack aware software on the mac and play audio through
the mac audio hardware? Make sure you can get that working first before
trying to bring networking into it.
> Default input and output devices are not the same !!
> Cannot open default device in duplex mode, so aggregate
> default input and default output
> Separated input = 'Built-in Microphone'
> Separated output = 'Built-in Output'
If you aren't going to use "Built-in Microphone" as an input device, you
could start with playback only. That should get rid of the "input and
output devices are not the same !!" warning. I think that would be -P
passed the coreaudio driver parameters, or maybe -Cno -Pyes, the manual
page is a little vaguely
worded and I don't have a machine with coreaudio to play with to try it out.
That is assuming you want to use the built in audio for the output,
otherwise the wrong device is selected and you need to sort that out
first.
> Takes physical 2 audio output(s) for slave
> Takes physical 0 MIDI input(s) for slave
> Takes physical 0 MIDI output(s) for slave
> Sending parameters to ...
> Floating point exception: 8
This is a modern mac with Intel processor? Just making sure. I don't
have a mac myself, but just in case someone else can help, which OS
version?
This is the default multicast address reported by the master:
> Starting Jack NetManager
> Listening on '225.3.19.154:19000'
But you specified a unicast address in the place where you would usually
specify a multicast address different than default:
> On the slave (linux board):
> jackd -R -d net -a 192.168.117.129 -p 19000
>From the walk-through you linked:
Parameters for driver 'net' (all parameters are optional):
-a, --multicast_ip Multicast Address (default: 225.3.19.154)
You are giving a unicast address as the argument for the multicast address
to use. Why did you think you needed to do that?
It seems the unicast address was ignored, because there is a message later
showing connected to macbook.
> Maximum number of input ports is reached for application ref = 0
> driver: cannot register port for system:midi_playback_769
> Can't allocate ports.
> Initing net driver fails...
That looks like the net backend driver is trying to register MIDI ports
for some reason, but the documentation says the default is no MIDI ports.
>From the walk-through page "The default configuration is a simple stereo
use, with no midi port." Maybe one of the jack2 devs can comment on
whether the behavior and documentation have diverged.
If you do get rid of the internal microphone as an input port, you should
probably set the net backend to not expect any input ports. I think that
would be adding -C 0 -P 2 to the arguments after -dnet.
I guess for good measure you could add -i 0 -o 0 to specify 0 MIDI in and
out ports, although that is supposed to be the default.
--
Chris Caudle
Hi all,
I have issues when trying to connect via netjack2 an odroid embedded board
(with linux debian, real time kernel) and a new macbookpro 2016 with OSX
Sierra 10.12.4.
My goal is to send audio from the odroid board (master) to the mac (slave)
using a direct ethernet connection. Basically I want to test the simple
case of playing a file from the board and listen to the result on the
loudspekers of the mac.
I verified that multicasting is enabled on both the board and the mac. From
the mac I connect to the board via SSH. I have set static Ip addresses on
both the board and the mac.
I am using the latest version of jack2 (jackdmp 1.9.11). Notably, I have
not compiled jack2 with dbus as I am running jack headless (following the
advise found on http://jrigg.co.uk/linuxaudio/jack2debian7.html).
To implement the netjack2 connection I followed the instructions on the
jack audio website
https://github.com/jackaudio/jackaudio.github.com/wiki/WalkThrough_User_Net….
The result is that the slave keep waiting for a master.
These are the outputs I get:
On the master:
/usr/bin/jackd -P 70 -p96 -t 2000 -dalsa -dhw:CODEC -S -s -r48000 -p128 -n2
jack_load netmanager
jackdmp 1.9.11
Copyright 2001-2005 Paul Davis and others.
Copyright 2004-2015 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
self-connect-mode is "Don't restrict self connect requests"
creating alsa driver ...
hw:CODEC|hw:CODEC|128|2|48000|0|0|nomon|swmeter|soft-mode|16bit
configuring for 48000Hz, period = 128 frames (2.7 ms), buffer = 2 periods
ALSA: final selected sample format for capture: 16bit little-endian
ALSA: use 2 periods for capture
ALSA: final selected sample format for playback: 16bit little-endian
ALSA: use 2 periods for playback
Starting Jack NetManager
Listening on '225.3.19.154:19000'
on the slave:
jackd -R -d net
jackdmp 1.9.11
Copyright 2001-2005 Paul Davis and others.
Copyright 2004-2016 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
JACK server starting in realtime mode with priority 10
self-connect-mode is "Don't restrict self connect requests"
NetDriver started in async mode without Master's transport sync.
Waiting for a master...
Any advise?
Actually, if can be of any help, I also tried to set the mac as master and
the linux board as the slave. The result is that they seem to communicate,
although jack on the mac crashes giving the error "Floating point
exception: 8":
On the master (mac):
jackd -P 70 -p96 -t 2000 -dcoreaudio -s -r48000 -p128 -n2
jack_load netmanager
jackdmp 1.9.11
Copyright 2001-2005 Paul Davis and others.
Copyright 2004-2016 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
JACK server starting in realtime mode with priority 70
self-connect-mode is "Don't restrict self connect requests"
Default input and output devices are not the same !!
Cannot open default device in duplex mode, so aggregate default input and
default output
Separated input = 'Built-in Microphone'
Separated output = 'Built-in Output'
Clock drift compensation was asked but is not needed (devices use the same
clock domain)
Ignore incorrect channel mapping value = 2
Input channel = 0 ==> JACK input port = 0
Input channel = 1 ==> JACK input port = 1
JACK output port = 0 ==> output channel = 0
JACK output port = 1 ==> output channel = 1
CoreAudio driver is running...
Starting Jack NetManager
Listening on '225.3.19.154:19000'
Takes physical 2 audio output(s) for slave
Takes physical 0 MIDI input(s) for slave
Takes physical 0 MIDI output(s) for slave
Sending parameters to ...
Floating point exception: 8
On the slave (linux board):
jackd -R -d net -a 192.168.117.129 -p 19000
jackdmp 1.9.11
Copyright 2001-2005 Paul Davis and others.
Copyright 2004-2015 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 10
self-connect-mode is "Don't restrict self connect requests"
NetDriver started in async mode without Master's transport sync.
Waiting for a master...
Initializing connection with ucas-MacBook-Pro-9.local...
Maximum number of input ports is reached for application ref = 0
driver: cannot register port for system:midi_playback_769
Can't allocate ports.
Initing net driver fails...
Notably the result of jack_lsp on the slave is:
system:capture_1
system:capture_2
system:midi_playback_1
system:midi_playback_2
system:midi_playback_3
…..
system:midi_playback_766
system:midi_playback_767
system:midi_playback_768
It seams that there is a problem with the MIDI ports but I really can't
understand how to solve this.
Thanks in advance
Cheers
---------- Forwarded message ---------
From: ZTA TV <zenythstudio(a)gmail.com>
Date: Thu, Apr 6, 2017 at 3:09 PM
Subject: Re: [Jack-Devel] Dropbox link wont work?
To: Markus Seeber <markus.seeber(a)spectralbird.de>
thanks :) I downloaded & registered the program with the code i was given
on this site. (http://i.imgur.com/Q6x2Iet.png)
but unfortunately now im getting this, (picture attached) did i miss out on
a crucial step?
On Thu, Apr 6, 2017 at 2:28 PM, Markus Seeber <markus.seeber(a)spectralbird.de
> wrote:
Hello,
latest binaries are currently hosted here.
https://github.com/jackaudio/jackaudio.github.com/releases
best regards
Markus
On 04/06/2017 11:11 PM, ZTA TV wrote:
> hello Jack Audio - I am a up & coming DJ interested in your software & I
> went to download the Jack 2 for Windows, unfortunately it told me the
> Dropbox link wasnt there anymore - is there possibly a change in the
> folders since? or is the app not available anymore? Thank you for your
> time, Zenyth
>
>
>
> _______________________________________________
> Jack-Devel mailing list
> Jack-Devel(a)lists.jackaudio.org
> http://lists.jackaudio.org/listinfo.cgi/jack-devel-jackaudio.org
_______________________________________________
Jack-Devel mailing list
Jack-Devel(a)lists.jackaudio.org
http://lists.jackaudio.org/listinfo.cgi/jack-devel-jackaudio.org
Hi,
I'm trying to download JACK for Windows, but the download takes me to bad
Dropbox links. Is there any place I can download them from? Searched around
but couldn't find them.
Thanks,
Jeffrey Long
Hey!
I've found out that most download links on this page are dead:
http://www.jackaudio.org/downloads/
They seem to lead to Dropbox, but only a 404 page is shown.
Some links are ok, and these seem to be hosted on the jackaudio.org itself.
- unfa
This looks perfectly fine to me.
Jack has started and seems to be running just fine. To control it, you
have to use an additional application like qjackctl.
I am not sure about windows but there should be tutorials around the net.
If you are unsure how to use jack, you can also ask people on the
linux-audio-users mailing list.
best regards
Markus
On 04/07/2017 12:09 AM, ZTA TV wrote:
> thanks :) I downloaded & registered the program with the code i was given
> on this site. (http://i.imgur.com/Q6x2Iet.png)
>
> but unfortunately now im getting this, (picture attached) did i miss out on
> a crucial step?
>
> On Thu, Apr 6, 2017 at 2:28 PM, Markus Seeber <markus.seeber(a)spectralbird.de
>> wrote:
>> Hello,
>> latest binaries are currently hosted here.
>> https://github.com/jackaudio/jackaudio.github.com/releases
>>
>> best regards
>>
>> Markus
>>
>> On 04/06/2017 11:11 PM, ZTA TV wrote:
>>> hello Jack Audio - I am a up & coming DJ interested in your software & I
>>> went to download the Jack 2 for Windows, unfortunately it told me the
>>> Dropbox link wasnt there anymore - is there possibly a change in the
>>> folders since? or is the app not available anymore? Thank you for your
>>> time, Zenyth
>>>
>>>
>>>
>>> _______________________________________________
>>> Jack-Devel mailing list
>>> Jack-Devel(a)lists.jackaudio.org
>>> http://lists.jackaudio.org/listinfo.cgi/jack-devel-jackaudio.org
>>
>> _______________________________________________
>> Jack-Devel mailing list
>> Jack-Devel(a)lists.jackaudio.org
>> http://lists.jackaudio.org/listinfo.cgi/jack-devel-jackaudio.org
>>
hello Jack Audio - I am a up & coming DJ interested in your software & I
went to download the Jack 2 for Windows, unfortunately it told me the
Dropbox link wasnt there anymore - is there possibly a change in the
folders since? or is the app not available anymore? Thank you for your
time, Zenyth