christofmuc / jammernetz Goto Github PK
View Code? Open in Web Editor NEWOpenSource internet jam sessions, aka Networked Music Performance software.
License: GNU Affero General Public License v3.0
OpenSource internet jam sessions, aka Networked Music Performance software.
License: GNU Affero General Public License v3.0
Hi,
I got this message on the console when I try to conncet a client:
Got package I couldn't decipher from "client's IP" - somebody trying to break in?
Maybe a shared secret pb ? RandomNumbers.bin were created under /common with the same shared secret on server side and client side before compilation...
Have you got any idea about the pb ?
Hi!
included via gitmodules oneTBB fails to compile with gcc11 oneapi-src/oneTBB#370
I've simply took the latest release of oneTBB https://github.com/oneapi-src/oneTBB/releases/tag/v2021.5.0 and JammerNerz has build and runs fine.
openSUSE Tumbleweed, g++ 11.2.1
Currently port 7777 is hard coded, but if we want to launch multiple servers (rooms) on one machine, it would be nicer to specify the port at startup. Of course, the client then needs to allow this as well.
to avoid confusing versions...
The current design does force all participants to hear - except for drops - exactly the same. For some use cases, this might not be required/desired, so there could be an option to override volume sliders from the general mix with my own taste.
The client shows Audio devices as unsupported when they do not support the requested sample rate/buffer size combination (by default in BuffersConfig.h this is 48000Hz/128).
The user would not know what's up and how to fix it.
Currently we send the audio control (peak meters, names of participants, volume sliders) with each audio packet - this is at 375Hz. Could be split out to act independently reducing again MTU size, which would allow reenabling the Heal FEC function.
Hello.
I can ask you why in some peers the remote channells client are flashing randomly?
Thankyou
The debug version asserts after a few hours in the std::max() function, in a piece of code that shouldn't assert. I am using Visual Studio 2017.
This is what I see:
SourceCode asserting with "invalid comperator":
template<class _Ty>
_Post_equal_to_(_Left < _Right ? _Right : _Left)
_NODISCARD constexpr const _Ty& (max)(const _Ty& _Left, const _Ty& _Right)
_NOEXCEPT_COND(_NOEXCEPT_OPER(_Left < _Right))
{ // return larger of _Left and _Right
if (_Left < _Right)
{
_STL_ASSERT(!(_Right < _Left), "invalid comparator");
return (_Right);
}
return (_Left);
}
Float values displayed in Debugger:
_Left 5.04023665e-05 const float &
_Right 0.000307894428 const float &
32 bit Int cast of them:
(int)&_Left 944989985 int
(int)&_Right 966880484 int
Cleary there is no reason for the CPU to calculate _Left is smaller than _Right and _Right is smaller than left.
Have you encountered any of this? I post it here because this is where it happened, but it looks more like a compiler or CPU bug. The assembler looks good, it does nothing else than
00007FF7D063F5A5 mov rax,qword ptr [_Left]
00007FF7D063F5AA mov rcx,qword ptr [_Right]
00007FF7D063F5AF movss xmm0,dword ptr [rax]
00007FF7D063F5B3 comiss xmm0,dword ptr [rcx]
00007FF7D063F5B6 ja std::max<float>+3Ah (07FF7D063F5BAh)
00007FF7D063F5B8 jmp std::max<float>+0A5h (07FF7D063F625h)
Where I'd say the comiss can't be that bad.
CPU: i9-9900K
I tried googling this but didn't succeed. I filed this with the Q library, let's see if they have any idea.
Reproducing it with just calling std::max() on the inputs above is not successful, there must be some more state in the FPU to trigger this.
AppVeyor is really slow
Currently that's an undocumented feature...
Currently, I either repeat a package or insert silence.
Several better algorithms exists, list of papers:
When starting the linux server compiled from the latest GitHub sources, and started with
JammerNetzServer -k JammerNetzSecret_202105140952.bin --port 22125
the output shows Server listening on port 0
Tried different port numbers, also didn't work.
I can't connect to the server, so using the --port switch may be breaking the server altogether?
Using Ubuntu 20.04 and the compilation instructions in the Github readme.
To support cheaper Audio interfaces
Probably the enumeration.
Hello , first , nice job !
Would it be possible to add possibility to rename input channel ?
Thanks
great project! Been testing with a few people and have not been able to get anyone on that has one of the Yamaha MG-XU usb mixers -- eg the MG10XU and 16. This happened with both the Yamaha/Steinberg Driiver and Asio4all. The device would show as unsupported at times. These messages were seen in the log:
22:29:24: Accessing audio device Yamaha Steinberg USB ASIO
22:29:28: Setup>Inputs>Device updated: Yamaha Steinberg USB ASIO
22:29:31: Device reports no buffer sizes are available!
Any Ideas?
Thank You!
The UI currently is not suited for a larger number of participants. a) the quality info data is not really needed by default (could be a break-out window?), and you might want to group people info submixers.
If we can mix others (not only ourselves), this could be a pure UI feature in moving multiple volume sliders at once.
This is really strange - when you select some Windows Audio Devices like a cheap USB headset, Windows Audio claims they can do 48000 KHz at buffer size 128 - but then they don't.
The software opens the audio device just fine, but the measured sample rate suddenly can be as low as 12000 Hz, or just above 30000 Hz. This indicates a different buffer size was chosen after all.
I need to either fix the buffer size problem, or detect that the Sample rate measured is way off and stop even try pretending it works.
[ 49%] Linking CXX static library libds_look_and_feel.a [ 49%] Built target ds_look_and_feel [ 50%] Building CXX object third_party/oneTBB/src/tbb/CMakeFiles/tbb.dir/allocator.cpp.o [ 50%] Building CXX object third_party/oneTBB/src/tbb/CMakeFiles/tbb.dir/arena.cpp.o In file included from /usr/lib/gcc/x86_64-linux-gnu/11/include/x86gprintrin.h:89, from /usr/lib/gcc/x86_64-linux-gnu/11/include/immintrin.h:27, from /root/JammerNetz/third_party/oneTBB/src/tbb/../../include/oneapi/tbb/detail/_machine.h:33, from /root/JammerNetz/third_party/oneTBB/src/tbb/../../include/oneapi/tbb/detail/_utils.h:26, from /root/JammerNetz/third_party/oneTBB/src/tbb/task_dispatcher.h:20, from /root/JammerNetz/third_party/oneTBB/src/tbb/arena.cpp:17: /usr/lib/gcc/x86_64-linux-gnu/11/include/waitpkgintrin.h: In function ‘void tbb::detail::r1::prolonged_pause()’: /usr/lib/gcc/x86_64-linux-gnu/11/include/waitpkgintrin.h:53:1: error: inlining failed in call to ‘always_inline’ ‘unsigned char _tpause(unsigned int, long long unsigned int)’: target specific option mismatch 53 | _tpause (unsigned int __A, unsigned long long __B) | ^~~~~~~ compilation terminated due to -Wfatal-errors. gmake[2]: *** [third_party/oneTBB/src/tbb/CMakeFiles/tbb.dir/build.make:90: third_party/oneTBB/src/tbb/CMakeFiles/tbb.dir/arena.cpp.o] Error 1 gmake[1]: *** [CMakeFiles/Makefile2:712: third_party/oneTBB/src/tbb/CMakeFiles/tbb.dir/all] Error 2 gmake: *** [Makefile:166: all] Error 2
If you have a sound engineer mixing everybody, we should not only display the others but also allow access to the volume slider.
In the GitHub README a hint on how to create 72 bytes of random data could be added. The following command works well on macOS and linux:
head -c 72 /dev/urandom > JammerNetz-secret.bin
For easy distribution of a secret to users: how about a feature that calculates some sort of checksum on a file, for example an image. So if a jpg is addressed with the -k option, it reverts to that. Providing someone with a key is then as simple as sharing a picture with them. Small picture files generally don't get recompressed by WhatsApp or Facebook, and can be easily uploaded to and downloaded from forums, web pages and other sources. The entropy would suffice and people could use logo's and other human recognizable content as the 'key' to the server!
because it can be arbitrarily hard to explain to somebody on how to navigate to the ASIO settings of the driver on a Windows machine. I myself can't find it when I search.
virtual bool AudioIODevice::hasControlPanel
and
virtual bool AudioIODevice::showControlPanel
Instead of the "Send" function, which only uploads yourself but you will not hear yourself from the server, we should add a local monitoring function that mixes the locally recorded audio into the queue, with adjustable volume and adjustable delay.
A few links on other methods I had googled before deciding on Q:
Hi,
Compilation was fine with GCC 7.5.0 (Ubuntu 18.04), but failed with GCC 10.2.0 (Archlinux).
With GCC 10.2.0, flatbuffers' compilation fails with an Werror. It can be overided by:
<JammerNetz>/third_party/flatbuffers
: cmake -S . -B LinuxBuilds -G "Unix Makefiles" -D FLATBUFFERS_CXX_FLAGS="-Wno-error"
.Perhaps informations could be given here about your GCC version ?
I already have a server running docker images, but by the Readme, it seems a bit unclear what you have to do to run a server on your linux mashine.
please add a script, that you can use to install this in 5 minutes ;)
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.