Replies: 8 comments 44 replies
-
Hi Emlyn, I have thought about this some myself, but haven't looked at the code at all about how to implement it.
I think the logical step forward would be to allow each mono input channel to have a stereo output channel, in essence giving each client two stereo streams. This would allow separate volume and pan controls for the two mono inputs, for example microphone and guitar. Ideally this could be done with no change to the server (the server would see two different clients) so it would work with older servers too. I would think that the two stereo channels could have names that would be appended to the client name, being defined in the setup window, so the server can manage them separately and they can be shown separately on the client mixerboard. Does that make sense to you? Do you think that could be a first step toward your desired solution and would you be interested in implementing it? |
Beta Was this translation helpful? Give feedback.
-
So after some research.... I can open up two jamulus clients on my multichannel car connected Mac and route the inputs through. It is not intuitive though, having to start the client from the command line. This does bode well though for being able to make my particular use case work in the short term.... I'll see about how this can be worked into the code more for a more user-friendly method. |
Beta Was this translation helpful? Give feedback.
-
I have looked a little closer at this. The ideal case would be to make a client that can open two client classes using the same hardware input. In that case it would not be necessary to change anything on the server and the multi-channel would work with all existing servers. That would mean, however, disentangling the soundcard from the client so that two clients can use the same soundcard. That will be, IMHO, a major rewrite of the client and sound classes. We would need someone who is at ease with programming C++ and knows how to use its (supposed) advantages to do this. I couldn't, I feel like I get stuff done in spite of C++. The solution to make the major changes on the server to interpret a stereo stream on the server as two mono streams and creating a supplementary user to support left and right channels separately, with only supporting changes on the client seems to me to be much simpler, but will need both the client and server to be the "new" version to work. If no-one presents themselves as a candidate to make a multi-client version I will attack the second possibility with the major changes on the server in the next weeks. |
Beta Was this translation helpful? Give feedback.
-
If we're only looking at the case where user already has two separate mono inputs, then one solution is source volume faders, which should be very easy to implement. No changes required for server or other users client. In fact, I consider this solution as a variant of the input gain feature, only now it also allows to lower the volume of left and right channels separately. It is not the best solution, but I'm sure it requires minimal code change, and still compatible with any other version. However, if I'm not mistaken, this only applies to Windows users only :( |
Beta Was this translation helpful? Give feedback.
-
DonC ***@***.***> writes:
I have looked a little closer at this.
The ideal case would be to make a client that can open two client
classes using the same hardware input.
I don't see the point in two clients running synchronised to the same
sound card and the same server to compete for network and CPU resources
in a random manner.
In that case it would not be necessary to change anything on the
server and the multi-channel would work with all existing servers.
For splitting a stereo channel into two logical channels, this seems
wasteful. Having separate packets for multiple channels also seems
wasteful when the soundcard delivers all of them synchronously, and the
possibility to end up with different delays and jitter buffer sizes for
stuff running into the same soundcard on the same site also seems
off-putting.
I think it would be saner to invest the C++ programming into
disentangling the "one mixer strip per client" requirement.
The solution to make the major changes on the server to interpret a
stereo stream on the server as two mono streams and creating a
supplementary user to support left and right channels separately, with
only supporting changes on the client seems to me to be much simpler,
but will need both the client and server to be the "new" version to
work.
As I said: apart from correct "Mute myself" semantics (and the necessity
to split a strip only audible to yourself into two seems not to be all
that urgent), the client does not even need to know about this.
If no-one presents themselves as a candidate to make a multi-client
version I will attack the second possibility with the major changes on
the server in the next weeks.
That would be great. So far I've just invested time in trying to
understand the setup of the server. So if you end up refactoring and
commenting some code to make this task easier to you, don't hesitate to
commit such changes for fear of being thought of as a wuss.
…--
David Kastrup
|
Beta Was this translation helpful? Give feedback.
-
DonC opened a PR: #1913 feel free to test ;-). |
Beta Was this translation helpful? Give feedback.
-
Did anything come of this? I was able to get around this limitation in Linux by using Carla's patch bay, but I don't know how I would do the same in Windows... |
Beta Was this translation helpful? Give feedback.
-
ann0see ***@***.***> writes:
On windows use JACK. It should work quite similar
https://jamulus.io/kb/2022/01/26/Routing-JACK-Windows.html
Of course the problem here is that you'll not end up with multiple
channel strips for multiple instruments: it requires creating a submix
entirely under control of one participant and outside of Jamulus.
…--
David Kastrup
|
Beta Was this translation helpful? Give feedback.
-
I'd like to start working on expanding the multi-track capabilities of Jamulus.
I have a 16 channel firewire mixer and one of the things I'd like to be able to do is to have individual channels appear as users in the Jamulus mixer.
I'm going to start looking into the code as to how this could be done, but any help would be greatly appreciated or any insights that would make this a no-go also keenly wanted!
To be clear, this is about having multiple up streams to the server from the same host, from different channels of the same interface. On the macOS side, this will be about manipulating the core audio call backs into the stream to the server.
One question here is whether the audio up stream will be multiplexed or independent. Probably the latter, in order to avoid a change to the protocol but I have yet to look into it.
Just wanting to get a discussion going around this while I have a look at the how.
Thanks!
Beta Was this translation helpful? Give feedback.
All reactions