-
Notifications
You must be signed in to change notification settings - Fork 225
Tips, Tricks & More
Home > Tips, Tricks & More
Jamulus user Chris Rimple has compiled a massive amount of information relating to Remote Band Rehearsals (Google doc), which covers topics such as hardware and software configuration including examples and advice for newcomers to the field. He also includes a section on Jamulus in comparison to other solutions.
Several users have reported success allowing a "virtual audience" for a Jamulus session by using Jack audio to route the Jamulus signal through the JackRouter to the target application (in this case, Zoom meetings).
You can also use VoiceMeeter (Banana) for Windows or BlackHole for Mac to route Jamulus output to multiple destinations, for example to your headphones and the meeting application at the same time.
Jamulus user Rob Durkin has written a guide to recording the output of Jamulus (Google Doc) using the ReaRoute add-on for Reaper.
With the -m
and -a
command line arguments a server statistic information can be generated to be put on a web page.
Here is an example php script using the server status file to display the current server status on a html page (assuming the following command line arguments to be used: -m /var/www/stat1.dat -a myServername.com
):
<?php
function loadserverstat ( $statfilename )
{
$datei = fopen ( $statfilename, "r" );
while ( !feof ( $datei ) )
{
$buffer = fgets ( $datei, 4096 );
echo $buffer;
}
fclose($datei);
}
?>
<?php loadserverstat ( "stat1.dat" ); ?>
You may want to save and restore the mix you have for your band rehearsals (fader, mute, pan, solo etc.). Do this by starting Jamulus with the --inifile
setting (eg Jamulus --inifile "c:\temp\jamulussetup1.ini"
) on the command line.
Do your session, than disconnect and close the Jamulus software. All fader settings are stored in the ini-file. If you then want to store another session, simply copy the file jamulussetup1.ini
to jmulussetup2.ini
and start with --inifile "c:\temp\jamulussetup2.ini"
. If you want to recover the first session, simply start Jamulus with the first file again.
Here's a Linux start script for Jamulus using an old Audigy4 sound card, the large number of available audio faders for which makes it hard to get the correct settings.
This script therefore includes the most important audio fader settings. The second part of the script deals with the jack connections. I use Guitarix as my guitar effect processor which I plug in in the jack audio path.
Finally I start Jamulus automatically connecting to the central server.
Here is the script:
amixer sset 'Mic' capture 30% cap
amixer sset 'Mic' playback 0%
amixer sset 'Line' playback 60% unmute
amixer sset 'Audigy Analog/Digital Output Jack' unmute
amixer sset 'Analog Mix' capture 100%
amixer sset 'Analog Mix' playback 0%
amixer sset 'Wave' 100%
amixer sset 'Master' capture 100% cap
amixer sset 'Master' playback 100%
amixer sset 'Master' playback 100%
amixer sset 'PCM' playback 100%
amixer sset 'PCM' capture 0%
guitarix &
/home/corrados/llcon/Jamulus -c myJamulusServer.domain.com &
sleep 3
jack_disconnect system:capture_1 Jamulus:'input left'
jack_disconnect system:capture_2 Jamulus:'input right'
jack_connect system:capture_1 gx_head_amp:in_0
jack_connect gx_head_amp:out_0 gx_head_fx:in_0
jack_connect gx_head_fx:out_0 Jamulus:'input left'
jack_connect gx_head_fx:out_1 Jamulus:'input right'
jack_connect Jamulus:'output left' system:playback_1
jack_connect Jamulus:'output right' system:playback_2
Jamulus user Ignotus writes: If you want to use a generic MIDI controller, you will need to either make adjustments to your controller or re-compile the sources:
Note: only available for use with MacOS and Linux.
MIDI CC messages consist of a Control Number, Controller Value, and Channel. Jamulus listens to the Control Number to know what fader to move, on the channel you specify when launching it with --ctrlmidich
.
The Jamulus client is set by default for use with the Behringer X-Touch, which apparently sends Control Numbers starting at 70, when Jamulus' faders are zero-indexed, which means there's a -70 offset coded into the source code that turns that 70 Control Number into a 0 for the first fader, 71 into 1 for the next, etc.
If you can change the Control Number in your MIDI controller, just set it to 70 (71, 72, etc for subsequent faders). Launch Jamulus with --ctrlmidich x
where 'x' is the MIDI channel you're using, or launch it with --ctrlmidich 0
to listen to all channels, and you're done. Make sure you connect your MIDI device's output port to the Jamulus MIDI in port (Qjackctl (Linux), MIDI Studio (MacOS) or whatever you use for managing connections). In Linux you will need to install and launch a2jmidid so your device shows up in the MIDI tab in Qjackctl.
If you can't change the Control Numbers in your controller, you will need to modify and re-compile the sources:
In the file src/soundbase.cpp
, go to line 290, remove the - 70
at the end (not the semicolon) to use Control Number 0 for the first fader, or replace that number with the initial Control Number your MIDI device sends. Save, compile and install.
It is possible to run Jamulus with multiple Audio Interfaces on all three operating systems. Useful when we need to output an instrument through external audio card for minimal latency and computer microphone for communication. Other use cases may apply.
Under Windows, the best option to run multiple interfaces through Jamulus at the same time is by using a combination of JACK Audio Connection Kit with VoiceMeeter. It can be accomplished with just VoiceMeeter, but I've found that it introduces some undesirable latency and it wasn't supporting 64 frame buffer size correctly as it was producing some noises through my headphones.
Requirements:
- JACK for Windows;
- Voicemeeter (any version will do).
Steps:
-
Install and configure JACK on Windows - Make sure you select your best audio interface in the configuration steps, also add
-r 48000 -p <desired frame buffer size>
to ensure JACK is outputting audio in the required sample rate for Jamulus (48.000Hz). If your frame buffer size is too low for your hardware, you'll need to change it to a higher value; - Install and open Voicemeeter;
- Open configured Jack PortAudio shortcut, Jack Control and Jamulus software;
- On Voicemeeter, go to HARDWARE OUT and on A1 dropdown list, select JackRouter. On Hardware Input 1 select your computer microphone. You can make your computer microphone have the lowest latency possible by going into Menu > System Settings/Options... and enabling WDM Input Exclusive Mode (if you experience crackling noises while speaking, disable this) and changing the Engine Mode to Swift;
- Make sure the Hardware Input where you selected your microphone is sending sound through A1 by enabling the corresponding button next to the fader;
- On Jamulus, under Settings, select JackRouter as your Soundcard Device;
- On Jack Control, if you click the Connect button, you should now see three devices: portaudio (your external audio interface), voicemeeter and jamulus. If Jamulus doesn't appear, try connecting and disconnecting from any server to enable it;
- To test things out, on Jack Control, connect portaudio and voicemeeter output ports to jamulus input ports, then connect jamulus output ports to portaudio input ports (assuming you'll be using your external audio interface to listen, otherwise you can use voicemeeter to redirect the sound to another device, which I will not cover on this guide). Connect to a server on Jamulus and test it out by speaking into the microphone and playing your instrument. If everything went well you should hear yourself;
- To make JACK connections permanent, on Jack Control, open the Patchbay, add all inputs and outputs available (Add... > Select each Client > Click Add Plug until there's none left) and make the connections you wish to make permanent. This usually goes like connecting both system and voicemeeter outputs into jamulus input, and jamulus output into system input. Once done, save the Patchbay definition and Activate it. Now every time you start jamulus and connect to a server, the connections on JACK should automatically be done.
Bonus:
- The Microphone can be muted and it's volume adjusted on VoiceMeeter. Be sure to play with the VOICE graph too (equalization), I find that my voice sounds better if I move it halfway into Lo;
- If you're using VoiceMeeter Banana or Potato, you can apply Gate to your microphone (useful to cut undesirable noises when you're not speaking);
- If you set your default playback device under Windows to one of VoiceMeeter's virtual inputs, you can route audio from your computer into JackRouter (and consequently, into Jamulus) by enabling the A1 button on the relevant input under Virtual Inputs. This is useful if you wish to play some audio through Jamulus (backing tracks, youtube, recordings, etc...)
Aggregate devices lets you do this. Just make sure your Jamulus version is 3.5.3 or higher.
On Linux, it is possible to route additional devices to Jack by using alsa_in.
Requirements:
- QJackCtl
- alsa
Steps:
- Follow this tutorial to route the desired interface into Jack by using alsa_in.
- Jamulus should automatically route the JACK configured interface, adjustments can be made through the Connect button.
- Connect the device configured on step 1 into jamulus input.
- Use Patchbay as described on Windows section to make connections permanent.
For Windows, Macintosh and Linux
-
Get detailed help with the Jamulus Help Manual
-
Got a question or problem not covered here? Have a feature request? Try the discussions forums
-
Found a bug? Please post these to Github Issues
If you have a couple of minutes, please fill out our anonymous survey!
This wiki is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.