Waveform using Jack, Inputs and Outputs are still reversed...

Discussion about: tracktion.com
RELATED
PRODUCTS

Post

Using Waveform with Jack, in the settings, Waveform will try to select a sound source as an output and the same for the input, where it try to list sound outputs....

Post from 2017 -> viewtopic.php?f=22&t=490927&p=6873928#p6873928
Why not add an 'Empty' one where it just create the ports in jack but allows jack patchbay do the connections instead ??
Screenshot taken today.
You can see that in the output list there is PulseAudio Aux 1 and 2, (will give sound from PA to Jack, so an OUTPUT on the Jack side, can read only, not write to it).
And in the input list there is PulseAudio Send 1 and 2 (will take sound from Jack to PA, so an INPUT on the Jack side, can write, but not read).

Using cables, sound output goes in the other's input, same with Jack.
Don't try to connect Waveform output to a Jack output, it wont work...
Also an Empty mode ?? Let Jack Patchbay handle the connexions....
Selection_214.png
You do not have the required permissions to view the files attached to this post.
Last edited by madrang on Wed Nov 27, 2019 10:25 am, edited 1 time in total.

Post

I also noticed issues with sound output when trying to connect to Jack directly. I gave up trying to connect directly as a jack-client and instead went with an alsa-rawjack approach. Tracktion really needs to fix that. I don't think most users are using JACK with so it could be a reason why more work needs to be done.

~/.asoundrc configuration like this helped in my case,

Code: Select all

pcm.jack {
 type jack
 playback_ports {
  0 system:playback_1
  1 system:playback_2
 }
}
pcm.!default {
    type plug
    slave { pcm "jack" }
}
I then choose 'alsa' in the waveform settings, and that solves things for my usage. For input, you'll have to add capture_ports under pcm.jack, ..

Code: Select all

capture_ports {
 0 system:capture_1
 1 system:capture_2
}
Sound is now going from {alsa-rawjack}->{jack}->{alsa hardware device}.. I don't know how well capture would work though, so you'll have to check to find out.

Post

Any dev tried to name some inputs/outputs in jack ??
It's been doing this since Traction 5 or 6 and maybe before.... (Basically since i bought it...)

Also, can we have an empty jack setting where it only create the ports in jack ??
There is a patchbay so i can connect it as i need....

Post

No dev bothered to try or test this in years... Oh well....

Post

I'm chasing this up on the JUCE forum.

Post

dRowAudio wrote: Mon Feb 17, 2020 12:16 pm I'm chasing this up on the JUCE forum.
I think the JUCE forum already got a nice clue as to what is causing this.
Franchovy wrote: In the JACK documentation, and as you can see in the “Simple Client”, the JACK audio inputs and outputs are labeled backwards… as in physical capture ports are considered output while physical playback input, at least in the “Jack_get_ports” function. As you can see here (from simple_client.c):

Code: Select all

ports = jack_get_ports (client, NULL, NULL,
				JackPortIsPhysical|JackPortIsOutput);
	if (ports == NULL) {
		fprintf(stderr, "no physical capture ports\n");
		exit (1);
}
Just to point out this may be the underlying issue - kind of sounds like it. Anyways, in my experience JACK is a mess and I was happy to use JUCE instead!!
But regardless, I wish you best of luck!

Post

Sorry, I really don't get what is wrong. "Output" shoutd be read "Output to:" etc
And what is "empty" mode in details?

Post

Kott wrote: Tue Feb 18, 2020 6:03 am Sorry, I really don't get what is wrong. "Output" shoutd be read "Output to:" etc
That's the thing, it does not work this way. As he said the JACK audio inputs and outputs are labeled backwards…

When you think Output, you think that you will be sending audio, but in jack they look at it the other way as in physical capture ports are considered output. Ie, if you ask for an output, it will GIVE you sound data. So you have to read from it. From your point of view, this is then an input.

Edit: Not your left, my left....
An Output Object used App side to Write Data Vs a Device Outputting Data that the App will Read.
Both are Outputs in some way....
One is asking for something the object you receive can do,
I want a list of [X] where [App] can output.
Where Jack is, i want a list of [X] that are outputs, so that [App] can read them.
Kott wrote: Tue Feb 18, 2020 6:03 am And what is "empty" mode in details?
The thing about jack is that there is a patch panel allowing to chain apps.
I don't have to connect to a physical sound card, but any Jack output can go in any input.
So Waveform should not try to connect on its own to a device, but let jack connect stuff to it.
If i want Guitarix Output to connect to a Waveform Input and record it in a track i should be able to do it in the jack patch bay.

That is what the empty mode would do, only declare outputs and inputs, but not connect any of them as that would be handled externally.

Post

That's the thing, it does not work this way. As he said the JACK audio inputs and outputs are labeled backwards…
maybe I was unclear
what is wrong with that setup
You do not have the required permissions to view the files attached to this post.

Post

Kott wrote: Tue Feb 18, 2020 10:05 am
That's the thing, it does not work this way. As he said the JACK audio inputs and outputs are labeled backwards…
maybe I was unclear
what is wrong with that setup
You only have the Unnamed Jack Client from Waveform and the System device. Try adding more, preferably output and inputs with unique names, then open Waveform.

Notice in My screenshot that a PA-Jack Sink is app readable, but waveform will try to send data to it.
See the added red arrows for what is wrong....
I think the one with a test button should write the audio data to the PA-Jack Source for it to work...

Edit: To make it simple, if an app want to write data it need to use a writable client.
If you expect to read data, use a readable client. Forget the part about input and outputs...

Also note where are the ones called capture and playback for system. Just a hint....
trckjack.png
You do not have the required permissions to view the files attached to this post.

Post

I know, it's hard. On Mac and Windows Output objects are writable, but in Jack Output objects are readable.
An ADC/Capture device is under Output so you read from it.

I just hope that those little red arrows helped to show the issue and what is wrong.

Code: Select all

ports = jack_get_ports (client, NULL, NULL, JackPortIsPhysical|JackPortIsOutput);
if (ports == NULL) {
	fprintf(stderr, "no physical capture ports\n");
	exit (1);
}
I know the test button generate a test tone, so it should use something writable.
The one with the VU indicator is trying to read audio data, it should use a readable port.

Post

ok, i got it: in JUCE apps "meter" must be _input "monitor" is _output:
You do not have the required permissions to view the files attached to this post.

Post

Not sure i follow you.

In the new picture, at the top those are readable source of audio data.
Yet Waveform is set on using those to WRITE data to it.

I don't see why more pictures are needed ????
Screenshot from 2020-02-19 08-26-30.png
You do not have the required permissions to view the files attached to this post.

Post

Hell, I understand the problem.

Post

Kott wrote: Wed Feb 19, 2020 8:29 pm Hell, I understand the problem.
I still wonder if there will be a fix one day.....

Post Reply

Return to “Tracktion”