jamulussoftware / jamulus Goto Github PK
View Code? Open in Web Editor NEWJamulus enables musicians to perform real-time jam sessions over the internet.
Home Page: https://jamulus.io
License: Other
Jamulus enables musicians to perform real-time jam sessions over the internet.
Home Page: https://jamulus.io
License: Other
As originally reported in the forum, when Jamulus is built using opus as an external shared library, with this assertion:
Fatal (internal) error in celt/celt_decoder.c, line 126: assertion failed: st->end <= 21
This is the actual backtrace of the crash:
#0 0x00007fba1d9f7ea1 in raise () from /lib64/libc.so.6
#1 0x00007fba1d9e153d in abort () from /lib64/libc.so.6
#2 0x00007fba1f4321d1 in celt_fatal (str=<optimized out>, file=<optimized out>, line=<optimized out>) at celt/arch.h:76
#3 0x00007fba1f3fbf37 in validate_celt_decoder (st=0x55b8b25eebe0) at celt/celt_decoder.c:126
#4 celt_decode_with_ec.constprop.0 (st=0x55b8b25eebe0, data=<optimized out>, len=45, pcm=pcm@entry=0x7fba137fda40, frame_size=<optimized out>, dec=dec@entry=0x0,
accum=0) at celt/celt_decoder.c:867
#5 0x00007fba1f427e6d in opus_custom_decode (st=<optimized out>, data=data@entry=0x0, len=<optimized out>, pcm=0x55b8b25b5560, frame_size=frame_size@entry=128)
at celt/celt_decoder.c:1234
#6 0x000055b8b180ff07 in CClient::ProcessAudioDataIntern (this=this@entry=0x7ffd36fc3730, vecsStereoSndCrd=...) at /usr/include/c++/9/bits/stl_vector.h:1040
#7 0x000055b8b18103a9 in CClient::ProcessSndCrdAudioData (vecsStereoSndCrd=..., this=0x7ffd36fc3730) at src/client.cpp:835
#8 CClient::ProcessSndCrdAudioData (vecsStereoSndCrd=..., this=0x7ffd36fc3730) at src/client.cpp:813
#9 CClient::AudioCallback (psData=..., arg=0x7ffd36fc3730) at src/client.cpp:810
#10 0x000055b8b1813e76 in CSoundBase::ProcessCallback (this=0x7ffd36fc3f40, this=0x7ffd36fc3f40, psData=...) at src/soundbase.h:108
#11 CSound::process (nframes=1024, arg=0x7ffd36fc3f40) at linux/sound.cpp:258
#12 0x00007fba1f3b8d0a in ?? () from /usr/lib64/libjack.so.0
#13 0x00007fba1f3b8478 in ?? () from /usr/lib64/libjack.so.0
#14 0x00007fba1f3d114c in ?? () from /usr/lib64/libjack.so.0
#15 0x00007fba1d9a2efa in start_thread () from /lib64/libpthread.so.0
#16 0x00007fba1dabb3bf in clone () from /lib64/libc.so.6
After some investigation, it turns out that having opus as a shared library (as opposed to be statically linked) is not really the problem. The difference is that when built externally, opus is built with ENABLE_HARDENING defined by default, which enables some run-time sanity checks on the code.
The version of opus inside Jamulus is an older one which does not even have the validate_celt_decoder(CELTDecoder *st)
function inside celt/celt_decoder.c
and that is the reason why it does not crash (not even by forcing the definition of ENABLE_HARDENING
).
This issue has been migrated from Sourceforge. Created: 2014-03-11
Implement a fade-in/-out in the sound base class if the audio interface is started/stopped. This avoids clicks in the audio.
This issue has been migrated from Sourceforge. Created: 2015-12-13
Creator: Volker Fischer
Add support for the Android operating system. The software can already be compiled for Android but the audio interface does not work right now. So the first step is to finish the audio interface implementation. As a second step, all GUI functionality must be checked that it is possible to use it with a touch screen only.
This issue has been migrated from Sourceforge. Created: 2020-04-03
Creator: Petra-Kathi
An idea to minimize latency differences:
The server can detect latencies of individual clients by clock
comparisons of respectively transmitted packets, so it should be able to
advise the individual clients to create metronome ticks (not audible
with the other participants) with individual latencies / time shifts of
some (ten) milliseconds , so the strokes are heard with best relative
timing.
The individual stroke timing should be derived from observation of
the ping timing over the last, say, 5 seconds, so it would do some
averaging against individual extraordinary retarded packets.
The participant with the slowest line should then get the stroke first, and the
other ones appropriately retarded by some milliseconds. The result
should be a better aligned combined sound, even though that would be
retarded by about the amount of the latency of the slowest participant
(single direction latency), but rather consistently.
If we knew more about how people were using Jamulus, would we do things differently?
Knowing more about how Jamulus is being used might might help uncover mis-understandings, structure the documentation better, as well as possibly evolve the functionality of the software.
I've created a draft survey here with some initial questions. I'm thinking mostly from the point of view of improving the documentation, but anything we can ask that we think we can act on, the better.
Please don't submit real answers yet! This is still under construction!
After choosing the Yamaha amplifier ASIO, Jamulus give error message (different sampling or frequency error) and won't start any more.
I need remove the usb from the Yamaha, then Jamulus starts.
Reinstalling won't help.
Hi there,
I'm actually a pure .NET developer, but this project is so cool that I am dealing with the open source / cross platform for the first time in my life. My last unmanaged line of code was more than 10 years ago. So sorry if my requests should be trivial.
I was already able to compile the project in Visual Studio 2019.
When setting up Qt I selected the latest version Qt 5.14.2 (I wasn't sure here, since Qt 5.9.9 to Qt 5.14.2 could be selected)
When I start the project from Visual Studio 2019, I get the error message:
Qt5Guid.dll, Qt5Widgetsd.dll, Qt5Networkd.dll, Qt5Xmld.dll not found.
I probably forgot to install something at Qt (no experience with it so far), but unfortunately, I don't know what.
I tried to install Jamulus (v3.4.4) for the first time yesterday. However, it did not even open.
I tried deactivating all other sound devices and startup programs, however I was not able to open the application.
Please see the details from the event viewers crashlog:
Jamulus_crashlog.txt
I tried to download the previous version for windows (v3.4.2) since I realized the most recent version was just 5 days old. And indeed I was able to open the application on v3.4.2
Please let me know, if you need me to provide further details or if there is any debug mode of the application.
Jamulus 3.4.4 on Ubuntu 18.04.4 LTS amd64 with libqt4-dev 4:4.8.7+dfsg-7ubuntu1
Steps to re-create:
mkdir /home/gilgongo/JamRecordings
chown jamulus:jamulus /home/gilgongo/JamRecordings
Start server with UID jamulus GID jamulus with -R /home/gilgongo/JamRecordings
Jamulus core dumps and shuts down with error:
Mar 31 22:31:44 covid19 jamulus[12427]: - recording directory name: /home/gilgongo/JamRecordings/
Mar 31 22:31:44 covid19 jamulus[12427]: terminate called after throwing an instance of 'std::runtime_error'
Mar 31 22:31:44 covid19 jamulus[12427]: what(): /home/gilgongo/JamRecordings does not exist but could not be created
Mar 31 22:31:45 covid19 systemd[1]: jamulus.service: Main process exited, code=dumped, status=6/ABRT
Mar 31 22:31:45 covid19 systemd[1]: jamulus.service: Failed with result 'core-dump'.
Expected behaviour: either keep server running but ignore -R and show warning (if Jamulus is expecting to create JamRecordings
dir itself), or just allow Jamulus to write to the directory.
Note that letting the server create the directory works (and works across subsequent server reboots) but obviously required jamulus xrw on the parent dir, which may not be a good idea.
ATM Jamulus doesn't see ReaRoute (virtual asio driver) provided by x64 builds of Reaper. It's needed to set up Reaper as a host for existing VST[i] plugins and instruments and prepare the signal to be fed to Jamulus.
x86 ReaRoute works ok, but it requires bridging existing x64 plugins inside Reaper, or installing separate x86 copies of said plugins/instruments, which is suboptimal.
Compiling error with:
$ git show -s
commit bd111c3abc22b2d2b6f5634f4b9b77a6d20eef4d
Author: Volker Fischer <[email protected]>
Date: Sun Apr 5 17:35:40 2020 +0200
some code cleanup
on
$ uname -a
Linux 4.9.0-12-amd64 #1 SMP Debian 4.9.210-1 (2020-01-20) x86_64 GNU/Linuxadmin
Performed these steps on AWS instance:
$ sudo apt update
$ sudo apt upgrade
.
perform reboot
.
$ sudo apt install build-essential
$ sudo apt install libqt4-dev
$ sudo apt-get install libjack-jackd2-dev
$ mkdir GitHub
$ cd GitHub/
$ mkdir jamulus
$ sudo apt-get install git
$ git clone https://git.code.sf.net/p/llcon/jamulus
$ cd jamulus/
$ qmake "CONFIG+=nosound" Jamulus.pro
$ make clean
$ make
after a few seconds:
g++ -c -m64 -pipe -std=c++11 -O2 -D_REENTRANT -Wall -W -DAPP_VERSION=\"3.4.6git\" -DOPUS_BUILD -DUSE_ALLOCA -DCUSTOM_MODES -D_REENTRANT -DHAVE_LRINTF -DHAVE_STDINT_H -DQT_NO_DEBUG -DQT_XML_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++-64 -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtNetwork -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtXml -I/usr/include/qt4 -Isrc -Ilibs/opus/include -Ilibs/opus/celt -Ilibs/opus/silk -Ilibs/opus/silk/float -I. -I. -o server.o src/server.cpp
src/server.cpp: In constructor ‘CHighPrecisionTimer::CHighPrecisionTimer(bool)’:
src/server.cpp:121:20: error: uninitialized const ‘iNsDelay’ [-fpermissive]
const uint64_t iNsDelay;
^~~~~~~~
In file included from src/server.h:36:0,
from src/server.cpp:25:
src/global.h:121:41: error: assignment of read-only variable ‘iNsDelay’
#define SYSTEM_SAMPLE_RATE_HZ 48000 // Hz
^
src/server.cpp:126:31: note: in expansion of macro ‘SYSTEM_SAMPLE_RATE_HZ’
(uint64_t) SYSTEM_SAMPLE_RATE_HZ; // in ns
^~~~~~~~~~~~~~~~~~~~~
src/global.h:121:41: error: assignment of read-only variable ‘iNsDelay’
#define SYSTEM_SAMPLE_RATE_HZ 48000 // Hz
^
src/server.cpp:131:31: note: in expansion of macro ‘SYSTEM_SAMPLE_RATE_HZ’
(uint64_t) SYSTEM_SAMPLE_RATE_HZ; // in ns
^~~~~~~~~~~~~~~~~~~~~
Makefile:1672: recipe for target 'server.o' failed
make: *** [server.o] Error 1
FYI:
$ g++ --version
g++ (Debian 6.3.0-18+deb9u1) 6.3.0 20170516
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
It appears that -R starts recording on the first connection and ends after the last connection has ended.
If a connection is making very little sound, it still uses quite a lot of disk space (a user connected to my server for several hours and used over 1Gb of disk space while only producing a slight hum the whole time).
Would it be useful to only start server recording over a certain volume so that disk space isn't wasted?
Commit #8fd59dd seems to have introduced a change (undeclared QRegularExpressionMatchIterator) that cases a build error on Debian/Qt4:
g++ -c -m64 -pipe -std=c++11 -O2 -D_REENTRANT -Wall -W -DAPP_VERSION=\"3.4.8git\" -DOPUS_BUILD -DUSE_ALLOCA -DCUSTOM_MODES -D_REENTRANT -DHAVE_LRINTF -DHAVE_STDINT_H -DQT_NO_DEBUG -DQT_XML_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++-64 -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtNetwork -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtXml -I/usr/include/qt4 -Isrc -Ilibs/opus/include -Ilibs/opus/celt -Ilibs/opus/silk -Ilibs/opus/silk/float -I. -I. -o connectdlg.o src/connectdlg.cpp
src/connectdlg.cpp: In member function ‘void CConnectDlg::SetServerList(const CHostAddress&, const CVector<CServerInfo>&)’:
src/connectdlg.cpp:329:17: error: ‘QRegularExpressionMatchIterator’ was not declared in this scope
QRegularExpressionMatchIterator reMatchIt = QRegularExpression ( "[A-Z][^A-Z]*" ).globalMatch ( strCountryToString );
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/connectdlg.cpp:331:25: error: ‘reMatchIt’ was not declared in this scope
while ( reMatchIt.hasNext() )
^~~~~~~~~
Makefile:1544: recipe for target 'connectdlg.o' failed
make: *** [connectdlg.o] Error 1
Congratulation @corrados for your work and thank you for releasing this as an open source software. May I suggest to add your paper to the wiki?
http://llcon.sourceforge.net/PerformingBandRehearsalsontheInternetWithJamulus.pdf
One interesting point is the global architecture description that I could not find on the wiki.
So that operators can know whether to expect to see their public server listed by the Central Server, show a registration status indicator in the UI (example below).
Note
Because we currently have a number of people on the forums whose problems may in fact be due to their server not being registered due to this issue , it is important to message explicitly the "Registered" and "Unregistered" states to avoid the possibility of users misinterpreting silence as being all is well, when in fact they are unregistered (or vice versa).
Ideally, a state of "Connecting..." (or "Registering..."? But I think that might be misinterpreted) should also be displayed to help troubleshoot other issues if the server cannot contact the Central Server.
For headless servers, a similar message to be displayed in the log (platform dependent?)
This issue has been migrated from Sourceforge. Created 28-03-2020
The version 3.4.4 seems to crash when history file is provided:
Jamulus -n -s -p 22124 -l /jam/jamulus.log -y /jam/history.jpg
- no GUI mode chosen
- server mode chosen
- selected port number: 22124
- logging file name: /jam/jamulus.log
- history file name: /jam/history.jpg
- welcome message: Wellcome to Jamulus docker server.
Qt5 requires a windowing system to paint a JPEG image; image will use SVG
AHistoryGraph::Start ( /jam/history.jpg )
This behaviour is reproduced on Docker image: probably it missing some dependencies.
Volker 29-03-2020: pljones has changed the history graph recently so that it can use SVG, see #6. I hope he can give you support on this.
Volker 29-03-2020: SVG uses QXmlStreamWriter. Does this need a special library? Do you know this?
Do you have an error call stack available to see where it crashes?
I'd be really happy to provides the project with a French translation for the GUI if a translation mechanism was made available.
This issue has been migrated from Sourceforge. Created: 2020-04-06
One of the most irritating parts of using Jamulus is trying to click on the server you want to join, now the number of servers has increased so much.
The current behaviour appears to be as follows:
Between the two, with people joining and leaving servers that have very similar ping times - about 20 in or around London - it means you can very easily start a click with the pointer over one server and end up joining a different one.
So...
That should help keep usage a bit smoother without losing the information that's displayed.
Discussion
Volker Fischer - 2020-04-06
As a quick workaround you could start Jamulus with --showallservers. This list is sorted by the registration time and does not change at all.
Volker Fischer - 2020-04-06
Also, if I've chosen not to display the musicians on a server, it means I don't want to display the musicians on that server, so don't pop open the list of musicians on that server again (at least for 30 seconds maybe 2 minutes).
Agreed, that was a bad behavior. I fixed that:
70c499a
Can you please test this new version if you are happier with the behavior?
Server list doesn't show up in MacOSX.
I already tried reinstalling the app and supposedly deleting all service files, but even though when I open the app my profile and config still show up the same settings I add before.
Hi,
I'm trying to use Jamulus with my own dedicated server in both ipv4+ipv6 stack.
When I try to connect to the DNS with A and AAAA record, nothing happens. I dont see any packets sent from my client, and on my server (with wireshark).
When I use the IPv4 directly, all is working.
When I use the IPv6 directly, I see my client sending a lot of packets to 127.0.0.1:22124
Is there something wrong on my setup or on the client part regarding IPv6 ?
I'm using Jamulus 3.4.4 on Archlinux
Thanks
With the addition of the UV meters, the issue of contrast in the UI has become more important. Suggest increasing the luminescence of the colours as below. However, in this mockup the lights are 2D, whereas in the UI they are 3D. This means I can only approximate a good luminance for them.
Here the Red is #FF3300, Green is #66FF33 and Yellow is #FFFF00 while the default is #F2F2F2
Hi!! Congratulations for the magnificent work done so far, this software is a salvation for us all!!
I'd like to share some ideas.
I wondered if by chance in the TODO list there is the possibility of:
Thanks!
The current text colour used in the main Jamulus screen appears to be #8E918A for the text and #3F4346 for the background (I'm too incompetent to check that in the source though).
This fails WCAG AA for sufficient contrast at standard text size.
In order for it to pass, suggest using #DCDCDA for the text instead.
I've had a go at trying to explain the basic Jamulus configuration in diagram form with a view to putting this on the wiki for non-technical users.
EDIT: Following discussions below, here's the latest versions
BTW I'm using this to make the diagrams the basic version of which is free for non-commercial use and lets you save the files externally. There might be a better one though. It was just the first I found on Google.
For people who just need to get the general idea:
(I was trying to keep the diagrams wide rather than deep so they wouldn't need too much scrolling on the page, but I might move the central server down a bit so the signal path can be straight like it is in the diagram below)
Hi all.
The different lines in the server names list (see below) are moving fast which is hard when you're searching for a server name, or in which server your musician mate is, or where is the server,...
It would be great if a user could be able to sort the list:
I'd suggest next to split the Location in 2 columns, one for the country, one for the city. Then it would allow to order the list by Country or by City clicking on it too.
I hope this make senses and it helps.
And moreover, thanks for this very nice piece of software, you guys deserves a lot of kudos for that!
Using 3.4.7 on linux debian buster here.
For reasons unknown, I understand from #54 that clients may often fail to ping servers. When this happens, they don't show on the list. I myself have never seen more than about 10 servers listed. Yet if I set --showallservers
I can see several in my country. And if I try connecting to them, turn out to have better or at least similar ping times to those given at the top of my default list.
If my experience is representative of other users, this would seem to be significantly underselling the experience of using Jamulus by hiding servers that may well be faster if users could see them.
If we cannot do anything about clients failing to ping servers, perhaps we should make it easier for users to select servers in their physical geography rather than relying solely on ping rate?
I wanted to check what do you think about adding an input mixer, where we could source
multiple input sources (even from multiple sources/cards), into a single signal.
The use case would be: being able to source multiple inputs (like a virtual drummer or background base music), along with a center-panned microphone and your instrument.
I know we have the alternative to run multiple Jamulus instances, and probably we have software options for doing that outside jamulus, but I guess it'd be different on every OS.
I'm not sure I'd have enough steam to code a feature like this. But I wanted to know how you feel about something like that for just in case I found the time.
See the following thread: https://sourceforge.net/p/llcon/discussion/533517/thread/e0f18d2381/
Good Day
I tried installing the headless server software as recommended at https://github.com/corrados/jamulus/wiki/Running-a-Server
However, I am experiencing the same issue as detailed here
https://sourceforge.net/p/llcon/discussion/server/thread/3e4035ff18/
The problem is quite simple, the line "ExecStart=/usr/local/bin/Jamulus ..." should read "ExecStart=/usr/local/bin/Jamulus/Jamulus ..."
The instructions tell you to make a jamulus directory for the binary file but the jamulus.service configuration file points to the folder instead of the binary
Have a good day
This issue has been migrated from Sourceforge. Created: 2010-01-27
Creator: Volker Fischer
The title says everything...
Discussion
Volker Fischer - 2010-01-31
This one might help implementation:
http://ag-works.net/source.wizards.htm
This issue has been migrated from Sourceforge. Created: 2013-08-24
If the Jamulus server and client are in the same local network using local IP addresses assigned by a usual router (using NAT), the server does not show up in the server list.
Gronaz - 2014-03-18
Some usual routers may not allow connections from within an IP in the private lan to another IP in the lan via the router's wan IP.Although, I first didn't notice this "server-not-visible" behaviour for me. Once the server upgraded to 3.3.4, I had a need to run the server with the GUI and then I couldn't see the server in my same-lan client's list.
As I kept the 3.3.3 binary I could test it: same thing, not visible when ran with GUI.
Whatever, for both 3.3.3 and 3.3.4, whith the setting in the client "Central server address" unchecked and the field below filled with a reference to the server's lan IP (/etc/hosts entry for me) the client can connect to the server, even when the list is empty.
When the reference is to the server's wan ip, I simply can't connect, which seems to be related to the first sentence in this post.So this bug is only half-a-bug: when server is ran with GUI.
The situation when the wan ip is used, it doesn't seem to be a bug in Jamulus.
Hello,
First let me say that I haven't got any problems to compile the project and I have to say that it is clear like water. (I love QT)
Well actually it is not an issue but a request
All my projects are saved in 44100Hz and default value of Jamulus is 48000, it could be better if we could choose the sample rate.
Thanks for the great job !
This issue has been migrated from Sourceforge. Created: 2015-03-13
Creator: Volker Fischer
Right now we always make auto connections to the default inputs and outputs of the system. It would be better if the user changes the connections to store the new connections and if they are available at Jamulus startup then reconnect them. If not, then use the system default as is done right now.
This issue has been migrated from Sourceforge. Created: 2015-02-05
Creator: Volker Fischer
Right now only the CC licence is available. Maybe it makes sense to offer a second choice.
Discussion
Volker Fischer - 2015-03-13
Priority: 5 --> 2
Volker Fischer - 2017-10-08
status: open --> closed
Volker Fischer - 2017-10-08
Nobody is using the CC licence feature anyway, so no need to add another one which is then also not used by anyone...
Peter L Jones - 2019-07-06
I am :)
I'd have rather not had to have the NC version but that's not a major issue for me.
Now the recording feature is there, it does become more important, as the recorded media are subject to copyright of the individual contributors.
(There are probably also GDPR issues... Hm.)
For scripting integration with qjackctl it would be nice if pkill jamulus (which defaults to send SIGTERM) would save current settings as from GUI Ctrl+Q|View/Exit.
Same issue example for LibreOffice : https://ask.libreoffice.org/en/question/159189/close-libreoffice-gracefuly-from-command-line/
I noticed when using ffmpeg to process the files that the headers were wrong (it issued a warning - looking inside showed the dummy 0xffffffff values not overwritten).
Here's the fix:
#4
It's very interesting to be able to see almost in real time the level that each user sends to the server.
I think of three improvements:
At the moment my input LEDs are 1/2 notches higher than the LEDs that I see lit on the "mixer" and this problem occurs especially with the voice. I often speak and even if I send with the very high volume the LEDs on the mixer do not update so often. (this I think is a problem of data communication from the server, maybe it averages the values? it should send the audio peak value...)
could the led series be transformed into a bar? I mean a vertical bar that shows the current level, the rms, and the peak value (usually of the last moments) (this would be very interesting, perhaps with a more "updated" graphics but I think it's a bit more work having to create the bar from scratch)
Add either a second bar or a quick toggle button to display the server values in the level bar on the mixer (as it does now) or display the values relating to what I hear on the headphones (therefore mirroring the volumes set on the mixer) (this would immediately help to see the highest or the lowest users not compared to the server but to the current mix that I hear on headphones (if a person is mute I don't have to see any signal, if I select "solo" I have to see only their signal based on how I have the faders in the mixer)) (maybe and option to have the two bar one near the other or to have the toggle button)
I hope I explained myself.
Red–green colour blindness affects up to 8% of males and 0.5% of females of Northern European descent. Colours of traffic lights are confusing to these people as there is insufficient apparent difference between them.
To avoid discriminating against red-green colour blind people, suggest adding textual status to avoid confusion:
Maybe use blink rates? Not as clear - the user has to know what the blink rates mean - but once they know they can remember forever. Might also help those without colour blindness too.
I have a public server on a cloud host outside my network running v3.4.7git (Linux) and a client v3.4.6 (Win) on my LAN.
Summary
The default connection list only seems to show a small sub-set of servers. I assume this is because Jamulus only wants to show me servers with acceptable ping times. However, my server has a short ping time for me, but does not show on the list unless I use --showallservers
. But I can get my server to show in the default list if I first connect directly to it (but only until I quit the client). I would expect it show automatically in the default list if the server list is sorted/truncated by ping time.
I also observe that --showallservers
omits some, but not all, ping times and musician numbers from the list. I would expect all ping times and musician numbers to be displayed.
Some servers are shown in bold text. Why is that?
Screenshots to illustrate
The default connection window I see looks like this:
My server is not listed. However, when I run my client with --showallservers
, I see this:
My server is listed, but shows no ping time or musicians.
If I then connect directly to the server, I can connect OK, and the ping time is lower than shown by others on the list:
If I then remove the --showallservers
option and open the connection window again, I see my server at the top of the list (but only until I quit my client):
Both I and my friend have had the same problem when trying to run the Jamulus client and server simultaneously on a Mac on a home network. The client can connect to the server just fine. We do port forwarding on our home router so that the other person can connect in remotely. At first the remote connection seems to work fine as well. But after a short period of time (less than a minute), the remote client connection goes silent, only occasionally letting through a very short burst of sound. I'm sorry to file a bug with so little solid documentation, but it happened relatively reliably. When I ran only the server and not the client, the remote connection appeared to work fine. So I suspect some kind of interaction between the client and server, but don't really know. We were both running relatively modern versions of Jamulus, installed between a month and a week ago.
I just realised this is a bit of a problem.
If I display the server status that's written to the html file, it shows the name I've asked it to show, plus to server internal port. Ideally, the value would be stored without the port number (internal and external are likely to differ) - all that's wanted is the server status.
Very low priority (I've fixed it in my javascript processing).
@pljones and @gilgongo: I have a nice new project for you if you like. Right now we have the "normal" and "fancy" stile. Instead of a check box we could introduce a combo box with {normal, fance, nice ;-)} options. There are plenty of nice GUIs out there, e.g. the Ardour style:
Or others. My idea would be that @gilgongo is the designer and @pljones does the coding. Regarding the design, you could integrate all the requirements for color-blindness, contrast, etc. You could also incorporate feedback from the community. Regarding the coding, @pljones it would be great to discuss the details with me. I already have some ideas how to implement that.
Are you both interested?
The problem with the 200 server limit is that somebody sets up a public server, but neither they nor their bandmates can see it listed because the central server is full at the time. And with so many servers being registered and few leaving, they may never see it listed.
But with no indication of the real problem, they then think they have a technical issue with their setup,. So they play with port forwarding and firewalls, post on the forums, etc. until they eventually conclude they need to set up a private server. At which point they they might get other problems, post on the forums about port forwarding, ISP issues, etc.
Is it worth addressing this issue, and if so, how (other than raising the limit)?
It seems that servers which are further down in the list get higher ping times reported in comparison to the first entries.
Hello, after compiling Jamulus with Jack Audio Toolkit Support everythin is fine but i got one exception :
I start the .app normally and everything is fine until after a while when the window is not focused but is running in background (UserInteractiveNonFocal),
I got a lot of :
JackEngine::XRun: client = Jamulus was not finished, state = Triggered
JackAudioDriver::ProcessGraphAsyncMaster: Process error
I precise that when I focus on the Jamulus window again, the Xruns disappear.
Then I noticed this kind of message in OSXConsole.
loginwindow -[PersistentAppsSupport saveLogoutPersistentState:finalSnapshot:] | checkAgainstApp is : Jamulus
loginwindow -[PersistentAppsSupport appShouldBeRelaunched:] | entered. checking app: Jamulus
loginwindow -[PersistentAppsSupport saveLogoutPersistentState:finalSnapshot:] | Adding to relaunchArray: Jamulus
runningboardd Acquiring assertion targeting executable<Jamulus(1078646027)> from originator [daemon<com.apple.coreservices.launchservicesd>:202] with description <RBSAssertionDescriptor; frontmost:10277; ID: 347-202-616; target: 10277> attributes = {
<RBSDomainAttribute: 0x7fcaf3710f90; domain: com.apple.launchservicesd; name: RoleUserInteractiveFocal; sourceEnvironment: 0x0>;
}
runningboardd Assertion 347-202-616 (target:executable<Jamulus(1078646027)>) will be created as active
runningboardd Finished acquiring assertion 347-202-616 (target:executable<Jamulus(1078646027)>)
runningboardd [executable<Jamulus(1078646027)>:10277] Ignoring jetsam update because this process is not memory-managed
runningboardd [executable<Jamulus(1078646027)>:10277] Set darwin role to: UserInteractiveNonFocal
runningboardd [executable<Jamulus(1078646027)>:10277] Ignoring GPU update because this process is not GPU managed
Jamulus LSExceptions shared instance invalidated for timeout.
Problem occurs generally with this error message before.
par défaut 16:24:58.539627+0100 Activity Monitor (reg) gpu 0x3177 flags 0x10 (IG) vid.did=8086.5927 b:d:f=0:2:0
gpu 0x3177 pci 0x10000020c IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2
gpu 0x3177 agdc 0x1000006eb /AppleIntelFramebufferController/IntelFBClientControl
gpu 0x3177 gpuc 0x000000000
gpu 0x3177 agdpclient 0x1000006f5 /AppleIntelFramebufferController/IntelFBClientControl/AppleGraphicsDevicePolicy/AGDPClientControl
gpu 0x3177 accel 0x1000004aa /IntelAccelerator
gpu 0x3177 fb0:0 0x1000004ac /AppleIntelFramebuffer@0
gpu 0x3177 fb1:1 0x1000004ad /AppleIntelFramebuffer@1
gpu 0x3177 fb2:2 0x1000004af /AppleIntelFramebuffer@2
Also I noticed that without the GUI this problem does'nt occur.
It could be a workaround to start on cli only but I need to mute myself before entering the server as I did'nt see any of these parameters in the ini file.
Thanks.
OSX 10.15.4
QMake version 3.1
Using Qt version 5.14.1
jackdmp 1.9.13
Consider having a mute button to mute your own audio that is being sent up to the server. There is a mute button on your own channel strip but that is just to mute your sound that you are hearing. Your audio is still being sent up to the server for other people to hear it.
This issue has been migrated from Sourceforge. Created: 2020-03-30
Creator: Dan Koloski
My experience is that MAC OS Jamulus clients don't deliver any obvious message when they are unable to connect to a server (I have not tried a Windows client).
Symptom: There is no visible error, just no chat welcome message appears and there is no visual representation of user's track (or any other tracks) in the mixer, but the server name still appears at the top of the mixer in the UI and the Connect button is still toggled as if connected. For me, this seems to happen when attempting to connect to any server that doesn't yet have a ping time established, as well as every time I've tried to connect to a private server directly via IP.
Suggestion: It would be ideal to
Hello.
Thanks for Jamulus is a great software.
I want to ask:
I'm using Jamulus with a local server and two client myself (A) with overall delay 20ms and a remote user (B) 60ms delay. With jitter on auto. 5.33 ms buffer delay with jack both linux software and os.
We're having issues because I hear B with delay and vice versa. We can play but sometimes we struggle cause A is waiting for B and vice versa and the time of the song drops.
The recording files are almost perfect no scratches in the sound or delay.
How is possible the we hear sound with delay and sometimes scratches but the recording section is in sync?
Thanks, Bye Luca
This would allow to draw a meter together with each slider (or a led),
providing visual input on which channel is playing and/or making noise..
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.