Releases: christofmuc/JammerNetz
Release candiate for 2.3.0 refresh
This is a release candidate for the next version of JammerNetz. It contains the following changes:
- Updated to JUCE 8 from JUCE 6. This brings updates to Ubuntu 24, to spdlog, to flatbuffers, and to C++ 20. Compiling with Visual Studio 2022, and gcc 10.
- Turned on ASIO debugging, and making the audio callback start only after button press. This is to debug flaky audio devices and prevent crashing by aggressive reconfiguration.
- Generating a MIDI clock signal on a selectable set of MIDI outputs, which tries to be in-sync on all clients.
Support other buffer sizes, fixes for Windows Audio
This is a bigger release with slightly changed build instructions, please check the new README for the updated information.
Most important changes:
- JammerNetz now also supports buffer sizes different from 128. The network traffic still runs on this fixed rate, but your device could do e.g. 144 buffers or bigger and is no longer shown as unsupported. Expect bigger latencies / jitter though the bigger the buffer gets.
- Adding a master volume slider for the output
- Adding the choice between local monitoring and remote monitoring - all signals that are not "Send*" signals will be played out to your either without latency (local monitoring, no need for server) or remote monitoring (you get the signal from the server just as the other session participants). For local monitoring, there is a balance slider so you can balance your own local monitoring signal with the mixdown from the server.
- Disabled the use of two different audio subsystems for input and output - there were too many issues on Windows when combining e.g. a Windows Audio input device with an ASIO output device that I know via UI force that both input and output use the same driver infrastructure. When you have ASIO drivers, you want to use the full-duplex mode for best performance anyway.
- Optionally allowing unencrypted communication - when you start the server without the -k parameter and leave the key file path in the Client empty, both will connect without any encryption. For testing only ;-)
- For the Windows build provided via github releases (this page), turned on Sentry crash reporting - I am desparately trying to find a bug in the JUCE audio device handling that causes frequent crashes, the logs will help me to find that crash I hope. Using the download provided here gives your consent for the crash reporting via the Sentry service - if you don't like it, I understand, please compile the software yourself and you will not have crash reporting turned on.
- Updated JUCE library from 6.0.5 to 6.1.2
- Adding a debugging logview that can help in spotting some audio updating problems
Plus lots of smaller bug fixes.
From now on with macOS installer!
From now on I can provide DMG installer images for macOS, no need anymore to build your own!
Accelerated startup as well.
Fixed server, now supports hostname instead of IP address
Client Improvements:
- You can now specify the server via the hostname, not only the IP. [Removed IP address check on package reception]
- Allow to specify the port to connect to - this is mostly for testing purposes, normally don't touch it at leave it at 7777
- Fixed sporadic crahes with Focusrite ASIO reconfiguration by adding a sleep loop. Not a complete fix, but should improve the situation
Server Improvements:
- Fixed crash in server when run in detached terminal mode
- Fixed Linux curses output of server showing statistics on connected clients
- Fixed client jitter statistics calculation
- FEC redundancy is now turned off in the server. It can be turned on via command line, but only used with 2 participants as the MTU will grow too large
- Enabled Sentry crash reporting for the server. Not really working on Linux, though.
Release 2.1.1 was skipped because it was distributed internally.
Showing other participants in the session
This release contains the following improvements to the server:
- New command line syntax for the server executable. You can now use --help to get a usage message, and simply use JammerNetzServer -k to specify the key.
- The server now uses a curses interface to print a table of client statistics when available. It does not print statistics if no curses for daemon use.
- Added client-upload jitter measure and display of mean and standard deviation jitter by client on the server. This can be used to better assess the required server jitter buffer size.
- Fixed crash when trying to decode tampered packages. This also fixes the crash when the 1.0 client connects to a 2.0 server.
- Fixed crash on server shutdown
This release contains the following improvements to the client:
- Show names, sliders, peak meters, and pitch for all channels sent by all session participants.
- Setup your own name to be seen by others in the list of session participants
- Make sending FEC redundancy data optional (checkbox "heal"). This should only turned on by clients experiencing upload drops. For the server, FEC is still on. This was required as the new features increased the required MTU too much.
- Better help texts when nothing is selected in the device combo boxes
- Better initial device type selection for first startup
- Better UI handling for changing the crypto file
- Adding a button to expose the ASIO control panel on Windows, as it might be hard to find if users don't know their device well enough
- For the Windows build provided via Github, added the Sentry library to record crash dumps automatically. By downloading the setup.exe from github and using it, you consent to the use of this feature.
- Turned off session recording by default, you know have to activate it manually. This also fixes the bug with too many zero byte WAV files created.
- Turned off logging into a file - only the console output now contains special error messages or the list of available buffers per device.
- Turned off MIDI recording, as this was an undocumented feature and can be turned on again once there is a proper UI for it
- Fixed a few crashes
Changes to build:
- This release uses conan as an optional package manager for Windows. This is somewhat experimental on my part - if you get an error not finding pthreads4w, you need to install conan and run a conan install before you build. See appveyor.yml for the exact syntax.
First precompiled version for Windows
This is the first version of JammerNetz precompiled for Windows users, see below for a simple Installer that will install the GUI Client as well as w test server.
To get this to run, you need
- a secret file for the encryption (see readme on how to get the 72 byte random file)
- to run the server from a command line, specifying the secret key file as parameter
- run the client, and choose the "connect to localhost" option.
- Choose at least one audio input device supporting 48000 Hz sample rate at buffer size 128, and at least one audio output device.
To use it with other users, be aware that NAT and firewalls might not like you. Best run the server on a Linux server in some AWS instance.
If you are brave enough to try, Jammernetz uses only UDP and port 7777, so you would need to open this up in your router.