jamulussoftware / jamulus

Jamulus enables musicians to perform real-time jam sessions over the internet.
https://jamulus.io
Other
997 stars 222 forks source link

Master Fader with level #97

Closed nicolopozzato closed 3 years ago

nicolopozzato commented 4 years ago

In the right, off the mixer section a master fader with the led (left and right channel) .

Could be usefull for many user to have a fader from +12db to -35db (then -infinity) so we can change the volume and also boost a little if it's too weak...

Also a rappresentation would be fine to have as a master headphone...

(I'm starting to view the code to help a little)

corrados commented 4 years ago

Why should I have a master fader in the Jamulus software? You should have a volume control (either hardware or via software) in your sound card interface to set the volume you are hearing in your headphone or speaker. The same applies to the input signal. These things should be controlled from outside of Jamulus. We already have a lot of faders if the server is crowded. I would not like to fill up the space with unnecessary additional faders.

nicolopozzato commented 4 years ago

Yes I can set on windows the output volume at 100% but it's not high enought to ear while singing, and because I have read in the forum that other people have the same problem I had think about a master slider with the feature of increase the volume output (+12db, -35db)...

Also i have notice that changing the buffer delay change the volume, strange...

pljones commented 4 years ago

What you hear is what others hear. It means your input is not loud enough. Perhaps you need a better mic input with the appropriate hardware level controls?

corrados commented 4 years ago

Regarding the level change for different buffer sizes, I created a separate Issue for that: https://github.com/corrados/jamulus/issues/106

Since I do not like the idea of a master fader, is it ok for you that I reject and close this feature request?

elliotclee commented 4 years ago

I see Volker's point about doing it elsewhere, but I too am interested in a master volume fader.

There are some sound devices that don't have software or hardware volume control (think virtual sound cards). A Jamulus master fader would be very helpful in those cases.

How is Jamulus supposed to relate to DAW software? Is Jamulus supposed to be able to do the job of the DAW, which usually includes having a master fader and more feature-ful channel strips?

Or is Jamulus supposed to move the burden of the levels, reverb, panning, and eq features into the DAW instead of having to depend on Jamulus' to provide those features. If that's the direction to go, then a master fader makes no sense.

I would love to be able to get the individual channels of audio out from Jamulus and into DAW software for final processing and recording.

Snayler commented 4 years ago

I'm not sure about other operating systems, but this is possible to accomplish on Windows with Voicemeeter. It acts as a virtual mixing console for the sound devices in the computer.

I currently use Voicemeeter to output both my instrument (connected to my external sound interface) and my computer microphone (connected directly into the computer's mic input) on the same channel, so that I can communicate with the people I'm jamming with. This enables me to fine tune volumes for each channel (intrument or microphone) and it's possible to boost one channel up to +12dB.

Screenshot_41 Screenshot of my Voicemeeter setup

Linux should also have no problem with this, since (if I'm not mistaken) it natively supports boosting a signal beyond 100% (0dB).

Given the plethora of choices to control the volume outside Jamulus, I don't think a master fader would be a necessary feature, as it would only complicate things.

I would love to be able to get the individual channels of audio out from Jamulus and into DAW software for final processing and recording.

For now, this is only possible to accomplish on the server, with the --recording option enabled. It creates a track for each channel and a Reaper Project file with all the information needed for the DAW to put the individual tracks in the right timing.

elliotclee commented 4 years ago

Voicemeeter is unreliable for me (problems with dropouts while direct to sound card works fine) and adds too much latency... Also doesn't give me the flexibility that Jack+Carla do on Linux now.

I need to be able to do eq, compression etc. live on individual tracks.

Something as simple as the option to send all channels back to the clients unmixed for output via Jack/ASIO/etc would be nice. I bet opus has multichannel compression that can keep the bandwidth down for this.

On Tue, Apr 21, 2020, 06:57 Snayler notifications@github.com wrote:

I'm not sure about other operating systems, but this is possible to accomplish on Windows with Voicemeeter. It acts as a virtual mixing console for the sound devices in the computer.

I currently use Voicemeeter to output both my instrument (connected to my external sound interface) and my computer microphone (connected directly into the computer's mic input) on the same channel, so that I can communicate with the people I'm jamming with. This enables me to fine tune volumes for each channel (intrument or microphone) and it's possible to boost one channel up to +12dB.

[image: Screenshot_41] https://user-images.githubusercontent.com/11491485/79856841-cd55c380-83c4-11ea-9990-b9c5ee0a8659.png Screenshot of my Voicemeeter setup

Linux should also have no problem with this, since (if I'm not mistaken) it natively supports boosting a signal beyond 100% (0dB).

Given the plethora of choices to control the volume outside Jamulus, I don't think a master fader would be a necessary feature, as it would only complicate things.

I would love to be able to get the individual channels of audio out from Jamulus and into DAW software for final processing and recording.

For now, this is only possible to accomplish on the server, with the --recording option enabled. It creates a track for each channel and a Reaper Project file with all the information needed for the DAW to put the individual tracks in the right timing.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/corrados/jamulus/issues/97#issuecomment-617106954, or unsubscribe https://github.com/notifications/unsubscribe-auth/AJNWQFCFGLSKHXW5CJOI4NTRNV33FANCNFSM4MLPYOJA .

Snayler commented 4 years ago

@elliotclee Yes, I see what you mean, I can use my sound card directly at 64 frame buffer without any problems at all, but the same setting on Voicemeeter is producing some weird sound artifacts. I'm going to try JackRouter on windows, see if I can set it up like voicemeeter.

pljones commented 4 years ago

Reaper on Windows with ReaRoute works well. Audio in to Reaper via your hardware ASIO drivers; ReaRoute out to Jamulus, ReaRoute back to Reaper; Reaper audio out via ASIO.

Snayler commented 4 years ago

Reaper on Windows with ReaRoute works well. Audio in to Reaper via your hardware ASIO drivers; ReaRoute out to Jamulus, ReaRoute back to Reaper; Reaper audio out via ASIO.

Although this works well with one audio interface, I can't seem to figure out how to go about using multiple audio interfaces. In my case, I'm trying to use one audio interface to capture the instrument sound and another to capture the microphone from my computer's sound card. ASIO4ALL is not an option as it seems to introduce some delay on my ASIO interface, even after setting it at 64 samples.

I'm having no luck with JackRouter since once I register the 64bit JackRouter.dll, Jamulus won't launch. No error message even after launching it from windows terminal, so I don't have any information about why this happens. 32bit version of JackRouter just won't appear on the devices list, so no luck there either.

corrados commented 4 years ago

This is a known issue: https://github.com/corrados/jamulus/issues/93 As a workaround you can run an unzip program like 7zip on the installer and extract the 32 bit Jamulus.exe. If you unzip it asks you to rename files with the same name. The renamed files are then the 32 bit versions.

pljones commented 4 years ago

You can do the same ReaRoute trick with two instances of Reaper, I would imagine - one for your main ASIO driver, the other with its main audio being WASAPI from your sound card for the mic. Then use ReaRoute from the mic Reaper to the main Reaper. (Having set up the relevant tracks, of course.)

Snayler commented 4 years ago

This is a known issue: #93 As a workaround you can run an unzip program like 7zip on the installer and extract the 32 bit Jamulus.exe. If you unzip it asks you to rename files with the same name. The renamed files are then the 32 bit versions.

Thanks for the pointer, will try that.

You can do the same ReaRoute trick with two instances of Reaper, I would imagine - one for your main ASIO driver, the other with its main audio being WASAPI from your sound card for the mic. Then use ReaRoute from the mic Reaper to the main Reaper. (Having set up the relevant tracks, of course.)

I've tried the trick with two instances of Reaper, but for some reason, ReaRoute only works on one of them, it looks like it gets disabled in the second instance. I've tried two different approaches, by having two instances of Reaper 64bit and by installing Reaper 32bit and running it as a second instance along with Reaper 64bit. I made sure ReaRoute was installed on both setups, but it still didn't work. Maybe I'm missing something, not sure.

pljones commented 4 years ago

"Portable install" might be required on one or both Reapers, to avoid profile contention. I've not tried it, to be clear, but if it works it would be a very powerful tool.

sthenos commented 4 years ago

Adding my two centrs on this thread and some perspective as a both a music producer and a musician consumer of music apps in general. Most audio apps do have the ability to change the final output volume that is sent to the volume card: Think Skype, Zoom, Youtube in a browser, Facebook video, etc. All have a volume control that allows us to control the amount that goes to the soundcard. I also use Reaper for routing sound in/out of jamulus and often the incoming volume is clipping in reaper and I can do nothing to reduce the gain from jamulus into reaper. Obviously I can change the volume in reaper but I would prefer it not to be clipping and making the channel hit the peak meter constantly and I would rather not reduce all faders on channels in jamulus as I have a mix that I like. I would prefer to have an overal volume fader to control the output of sound in this case.

However, I do see Volkers point on window clutter and such, but I do think the window in jamulus is so small, an additional fader isn't going to use too much real estate.

Snayler commented 4 years ago

"Portable install" might be required on one or both Reapers, to avoid profile contention. I've not tried it, to be clear, but if it works it would be a very powerful tool.

Unfortunately the portable install doesn't let me install with ReaRouter, so no luck there. I've also tried using ReaRouter to route the signal to Jamulus and using ReWire to get the mic from a second instance of Reaper, but no luck there as the second instance gets started in ReWire slave mode and doesn't let me choose an audio interface. Despite that, this could be useful to playback previous recordings into Jamulus.

Guess I'm back to the drawing board trying to figure out a way to use multiple audio interfaces with Reaper.

corrados commented 4 years ago

Ok guys. Let me think of a good solution for the problem. Right now I am busy with other things but I will write it on my TODO list now.

corrados commented 4 years ago

I am currently working on re-designing the sound card input/outpt channel management. Right now the implementation is a bit messy and not so easy to understand for a new user. E.g. we have Input Channel Mapping in the settings. Then we have Mono/Mono-In,Stereo-Out/Stereo. Then we have the Pan fader on the main window. All of these are going to be replaced by my new implementation.

Here is what I have so far: grafik grafik grafik As you can see the Pan was removed and we instead have a selection for the "normal" mixer and additional mixers for the sound card input/output for each left/right channel. With these mixers you can do what was implemented for Pan and Mono-In,Stereo-Out and even more, since you know can make your own local mix of all possible sound card inputs/outputs.

What do you think about it? Do you think users will understand what the new Radio Buttons on the main windows stand for?

pljones commented 4 years ago

Why "In L", "In R", "Out L", "Out R" selectors? Isn't it just "Jam", "Inputs", "Outputs"? If not, I'm not sure what's being shown at all :).

pljones commented 4 years ago

I think having a "Mono L/R" vs "Stereo" setting for each pair of faders would also be good, with "Stereo" meaning you get a single fader (and no pan - you split to "Mono L/R" for that).

corrados commented 4 years ago

Jamulus stream is either mono or stereo. So we have L and R in stereo mode where we can freely assign sound card inputs to.

corrados commented 4 years ago

I think having a "Mono L/R" vs "Stereo" setting for each pair of faders would also be good

Yes, but I wanted to reuse the normal mixer board. Makes the implementation easier.

pljones commented 4 years ago

If I've two separate instruments connected to Input 1 and Input 2 on my sound card, I probably do not want them sounding Hard Left and Hard Right in my mix. The loudness of each may not want adjusting but I may want to adjust the pan - i.e. mix each across the stereo field. Does this system allow that?

corrados commented 4 years ago

Yes, it does.

pljones commented 4 years ago

OK, it's not obvious in that case -- the faders look like they're only adjusting loudness. What if I only want to adjust the loudness of Input 1 but not its stereo position in relation to Input 2 (for example, really keep them hard left and hard right)?

pljones commented 4 years ago

Oh! I've finally got it.

You mean "Input L" for Jamulus has every hardware input listed and you make your "Input L" mix?

corrados commented 4 years ago

yes, exactly. My sound card has 4 physical inputs and 2 outputs.

pljones commented 4 years ago

OK, yes it would certainly work.

I think the common use cases are likely:

  1. Plug in Stereo from synth / DAW / etc, stereo already balanced (level probably also covered)
  2. Plug in Mono from guitar or mic, single channel, no pan or balance, may need input level (handy in the app)
  3. Plug in two Mono sources, guitar and mic say, so we need pan position against each other to set the stereo field, and likely the need levels of each, too.

This does allow for all three but it seems rather ... complex... :)

But it allows going into more complex cases, too. However many inputs mixed down inside Jamulus to stereo. (In my case, I'm using ReaRoute - 32 virtual inputs and outputs. But I only use two as the mixing is done before Jamulus.)

What would be very useful, though, is being able to set up offline. If you could plug in, set the mix, hear your local input through Jamulus -- whilst in "Settings, Audio" or whatever. Also, if you're online and switch to "Settings, Audio", you'd stop sending to the server (and optionally mute the server, perhaps).

corrados commented 4 years ago

What would be very useful, though, is being able to set up offline.

If you like you can create a separate Issue for this.

nicolopozzato commented 4 years ago

I had to read all of the messages 3-4 times to understand what I was watching...

All of these are going to be replaced by my new implementation.

What are your plan for that implementation? I think that I miss the big picture without all the pieces...

I am currently working on re-designing the sound card input/outpt channel management

All the input are mix down to one single track, so other users don't receive all the channels... In this case you don't need panning...

example: In the main windows a button "Audio Routing"

a new windows is open (2 section, left: Input (bigger like 2/3 of the screen), right: Output (smaller 1/3 of the screen)) there I can click a button "Add Channel" I set a name "Microphone" I select if it's ("Mono", "Stereo", "Stereo ->Mono") I select the quality of that channel: "Low, Medium, High" I select a sound card in my case "Focusrite" Then if the channel is set to mono i can select one channel of my soundcard, if is Stereo or Stereo mixdown into one mono i can select two input

Input: "Focusrite Input 4" (My mono microphone)

or

Input L: "Focusrite Input 1" (stereo keyboard, left) Input R: "Focusrite Input 2" (stereo keyboard, right)

In this way i send a channel to a jamulus server. At the moment i don't have selected what i ear, but only what i'm sending.

After that i can click many times the "Add Channel" button and send as many as you want (maybe a limit to 10 jamulus channel).

After that i can in right section (the output section) select what i want to ear: Channel: "Mono", "Stereo", "Double Mono" Quality: "Low", "Medium", "High" I select a sound card for the output, in my case"Focusrite" Then if the channel is set to mono i can select one channel of my soundcard, if is Stereo or Double Mono i can select two output

Output: "Focusrite Output 3"

or

Output L: "Focusrite Output 1" Output R: "Focusrite Output 2"

In this way we have devided the sending and recieving, allowing all of us to send multiple channel so a channel for a instrument and a channel for the voice (example) in this way if you record the session with the server you can eliminate all the voices or be able to adjust them.

I would also like to help with some screen for the interface.

image

In this way the "CHANNEL 1" is named "Microphone (Nico)" (Nico is my name in my profile)

corrados commented 4 years ago

Jamulus still transmits/receives up to two channels. In my implementation I can mix the physical inputs of the sound card to each of the two audio streams individually. Right now it is only possible to select one phyical input channel per audio stream.

pljones commented 4 years ago

In addition, you have to remember multi-channel data transfer takes longer for each channel added. Jamulus relies on the mono or stereo up and mono or stereo down, per client, to ensure that each client gets a reasonably fast stream of data.

nicolopozzato commented 4 years ago

Jamulus still transmits/receives up to two channels.

In this case I think of a selection for (Send Individual Channel or Mix alla channel)

Also you can embed the volume control for each channel in the Audio Routing window and also include an output "None" to disable the output of jamulus. This create unlimited possibilities, like using only one jamulus to send multiple channel, or use a jamulus only to listen or be able to send high quality stereo but listen only a low mono signal...

In addition, you have to remember multi-channel data transfer takes longer for each channel added.

Right now we use multiple jamulus client... But we trow away bandwidth and cpu for all the receive signal to alla the second/third jamulus... also if you send stereo you can only get stereo from the server... And you are not able to get mono from the server.

pljones commented 4 years ago

Right now we use multiple jamulus client...

If each client is for a separate performer, that's the same as multiple clients connecting to the server from multiple locations -- "life's like that". If you want everyone on the server to have separate control, as if each performer were a separate client, that's probably the way to do it. This way, each performer has their own performer profile and everything else that goes with running their own client.

If, though, you don't really want everyone else on the server to receive separate control over each performer, then mixing down before a single client is probably the better option, or mixing down inside the client before transmitting - if Volker makes this change. The transmitted channel's "performer" for the profile, here, is the person controlling the mix.

nicolopozzato commented 4 years ago

In our case we use an instrument and our voice and we want to be able to set the instrument or the voice at different levels, also sometimes someone use their pc audio, in this case he use a third jamulus to be able to send his piano (1° jamulus stereo), his voice (2° jamulus mono), his pc audio (3° jamulus stereo)... but in our case 3 jamulus is still one performer, all of us are in our home!

We need this granularity because we need to set the correct volume for our streaming. if someone use one channel and put pc base, piano and his voice... i can't make minor adjustment... the problem is not only in the streaming but also in our practise. It's one of the first thing that we see when we try out jamulus.

pljones commented 4 years ago

If you're using a PC, it's trivial to use it to mix a setup to stereo before feeding it to Jamulus. It can mix down input from as many sources as you like to a balanced stereo mix. You get to do this locally offline before connecting - and it's a setup you can use offline, too.

Similarly, any multi-input sound card should have separate level controls for the inputs - again, you set this up correctly, locally, before connecting to Jamulus. Ideally, you'd feed this to software that can do a decent mix between the two channels first.

But it's not a restriction of Jamulus that's preventing you do this now.

corrados commented 4 years ago

I changed my mind. I will not re-use the server mixer panel on the main window but create a separate window for the sound card mix. Here is the current state: grafik grafik Since we have not Left/Right channels right above/below each other, it is much easier to understand what is going on (referring to the comment from pljones).

corrados commented 4 years ago

In the right, off the mixer section a master fader with the led (left and right channel) . Could be usefull for many user to have a fader from +12db to -35db (then -infinity) so we can change the volume and also boost a little if it's too weak...

Since we now have input levels available, the Pan control on the main window is not necessary anymore. So I consider to replace this fader by a Master fader.

Regarding a boost: I could introduce a "15 dB boost switch" in the input and output section of the new Sound Card Audio Channel Mixer dialog. This would enable you to boost inputs which only have low levels (which may be hardware related that no more level is possible due to hardware restrictions).

pljones commented 4 years ago

Regarding a boost: I could introduce a "15 dB boost switch" in the input and output section of the new Sound Card Audio Channel Mixer dialog. This would enable you to boost inputs which only have low levels (which may be hardware related that no more level is possible due to hardware restrictions).

I'm generally fairly set against amplifying late in the signal chain - you end up amplifying the noise level along with the signal. The earlier the level can be raised the better. I don't think it's down to Jamulus to "fix" things like this - but not my call... The other point is you already get people pumping audio through that's distorting because it's so loud, having another point where it can be boosted seems to be asking for trouble to me.

If there was also a hard limiter that prevented loudness levels (after taking the effects of distortion into account) exceeding something reasonable, it might be okay.

corrados commented 4 years ago

Yes, I agree. That is the reason I wrote "I could" ;-).

chaolue commented 4 years ago

This looks cool. And trying to clarify for myself (and maybe others).

As it is only possible to have up to 2 channels up/down with Jamulus: A configuration is either; 1) Mono (1up/down), 2) Mono-in/Stereo-out (1up, 2down), 3) Stereo (2up/down), and missing 4) Stereo-in/Mono-out (2up/1down).

I assume then that the 'Audio Channels' drop-down will be redundant/removed with these changes? So then would muting all the right channel inputs in the mixer change it so that the client only sends mono (and reduce the bandwidth)? And similarly with the output mixer and receiving mono?

Thanks

corrados commented 4 years ago

No, the drop box still makes sense. When you switch to mono, the OPUS packets are actually mono packets and therefore the network traffic is much lower. The "mono-in/stereo-out" mode may be redundant. I may remove that mode in the future.

fleutot commented 4 years ago

The sound card audio channel mixer makes sense if you have a multichannel sound card such as the focusrite.

If you have a simpler sound card with stereo RCA pair input, pan (should be "balance" in stereo though right?) makes more sense.

The focusrite types seem popular, so I understand the change. But I'd miss panning my instrument out of the middle, from the input section. I'll probably switch to doing it with my hardware mixer.

seanogdelaney commented 4 years ago

Interesting discussion. It started with a request for a master volume with some gain. It is now addressing greater flexibility in the input mixdown sent to the server, and some pan/bal of the return signal from the server, possibly including some gain.

In my opinion there are 2 issues here: (1) gain and (2) pre/post mixing.

I would welcome the option of some software gain. Some members of my group are not good engineers, or have poor equipment, and deliver weak signals. This could be easily added to the existing mixer sliders, or in the new proposed mixers.

I would personally welcome a pre/post mixer in the software, but I understand the concern about complexity. The alternative is to tell users to simply buy a cheap hardware mixer, to mix their inputs and outputs as they desire. This adds complexity too though. I prefer the software option personally (with sensible default values). It reduces the cost 'barrier to entry' for less wealthy users.

jonjamcam commented 3 years ago

Hi all. A master fader is the standard way to adjust the overall mix when it's too hot. Sometimes the mix is right, but everyone is playing too loud. Maybe individual channels are not clipping, but the sum of them are, so that's why you will see a master fader in every mixer hardware or software at least 50 years back (maybe more).

Sometimes the opposite happens, everyone is too low, so raising your external mixer volume just increases the overall noise.

I think Jamulus works pretty good, but big servers sound very distorted when everyone is playing at the same time and this happens often. You can try to avoid the obvious, too many faders, but the solution relies on UI design, not on suppressing important tools that everyone know how to use.

Just my $2. Jamulus is a nice concept and it really works. Thanks for the great work.

cheers!

kwindrem commented 3 years ago

I agree that a master fader is essential.

In the digital world, a "bus" is really just a summation of channels. There's a real risk of running out of bits if all channel levels are high, so the summation typically uses double the number of bits used by a channel. Additional precision is of value even when floating point math is used to avoid round-off noise. Another "trick" is to apply the master fader level to each channel before the summation. The master fader can then bring the summation circuitry out of clipping.

corrados commented 3 years ago

Each Jamulus user creates his own mix. You can set your New Client Level to, e.g., 80% and press Ctrl+L to apply this level to all clients to avoid clipping. But I usually have my faders on max and even if the server is filled with users playing a song, I've almost never had noticable clipping.

gilgongo commented 3 years ago

Hi all - in an effort to keep the Issues to actionable backlog items, I'm moving this to a discussion if that's OK.

See also this which may be related? https://github.com/jamulussoftware/jamulus/discussions/1030