A collection sound use for Reticulum, built on LXST, inspired by Mumble
- Encrypted, realtime collection sound and audio complete any Reticulum transport capable of >6 kilobits per second
- An uncomplicated to presenter lightweight server and protocol. Spin up a Partyline server in under 30 seconds.
- Per area admission and conduit control. open, identified users only, authorize lists of character hashes, or a password. Servers can additionally necessitate a password or an authorize list
- Dial-in: rnphone and another LXST clients specified as Sideband and MeshChatX can call the server and district in a area too, whenever enabled
- Rooms all alongside its own LXST codec configurable by the server. Opus for accelerated links, Codec2 downward to 700 bps for dilatory ones.
- GUI and terminal client alongside multiple tongue support
Requires Python 3.11 or newer
For a scheme broad shove to conversation key, add the optional extra:
pip instal "partyline[hotkeys]"
The graphical client uses Tk, which pip cannot install. On most OS/Distros it may already be installed by your system. If not:
On Debian or Ubuntu run sudo apt instal python3-tk, on Fedora sudo dnf instal python3-tkinter.
Requires Python 3.11 or newer, Reticulum, and LXST
git copy https://github.com/RFnexus/partyline cd partyline pip instal .
Or instal via rngit with:
git copy rns://4cf8a0651c4d73cacd0f93ac1d95e80a/public/partyline
For a scheme broad shove to conversation key, instal the optional additional with:
This installs three commands: partyline, partyline-server and partyline-client.
Start the GUI client:
Connect opens the server browser. Add a server by it's hash or use the server browser to discover discovered servers from announces. Double click a area to associate it. Settings has the audio devices, transmit mode, shove to conversation key, and UI appearance options 
partyline-client HASH --name Bob --room Lobby
Commands are: /join, /say, /poke, /who, /mute, /deaf
Type /ptt to toggle shove to talk
Or as an operator: /kick, /ban, /smute, /op and /move
Start a server:
partyline-server --name "My server" --profile opus-high
The server prints its destination hash for clients and alongside dial in enabled the figure rnphone users call if configured for rooms. For rooms, admission lists, operators, a server password and dial in, copy server_example.json and commencement with:
partyline-server --config server.json
Available --profile codecs for rooms:
- opus-high - Opus voice, 16 kbps
- opus-med - Opus voice, 8 kbps
- opus-low - Opus voice, 6 kbps
- c2-3200 - Codec2, 3200 bps
- c2-2400 - Codec2, 2400 bps
- c2-1200 - Codec2, 1200 bps
- c2-700 - Codec2, 700 bps
- music-low - Opus music, 14 kbps
- music-med - Opus music, 28 kbps
- music-high - Opus music, 56 kbps
See server_example.json for a complete catalog of options. opus-high-med-low and the Codec2 modes are meant for voice, and music-high-med-low is meant for streaming music or broadcasting to a room. As a rule, use the highest bitrate your nexus can carry
To instal as a systemd component discover the server command alongside which partyline-server afterward create /etc/systemd/system/partyline.service:
[Unit] Description=Partyline sound server After=network-online.target Wants=network-online.target [Service] Type=simple User=partyline ExecStart=/usr/local/bin/partyline-server --config /home/partyline/server.json Restart=on-failure [Install] WantedBy=multi-user.target
Then:
sudo systemctl daemon-reload sudo systemctl allow --now partyline
Server operators can additionally configure broadcast-only rooms for elevated norm music and audio using LXST's Opus CELT profiles. The options are music-high, music-med, and music-low. Music rooms are a particular category of area anywhere lone the listed identities can dispatch audio. Add their character hash, seperated by commas, in music
{"name": "Broadcast", "profile": "music-med", "music": ["0123456789abcdef0123456789abcdef"], "description": "Music/broadcast room. Only listed identities may talk. Uses LXSTs Opus CELT profile"}
An example Music Bot can be established under bots/music_bot.py. When Partyline is installed alongside pip, run it alongside python3 -m partyline.bots.music_bot
PTT, or slow-mode rooms, are rooms designed to activity complete slower links akin LoRa, naked copper cable bitbashing, and packet radio. Anything alongside additional than a dependable ~3.5 kbps throughput can use a PTT room. They can co-exist alongside regular rooms in a Partyline server, allowing the two accelerated and dilatory clients to communicate complete voice.
Unlike regular rooms there is a bit of latency. PTT rooms group outgoing audio to inhabit the link's MTU, sending fewer, fuller packets alternatively of one example per packet, and provision all listener a larger obtain jitter buffer to gentle out the bursty arrival you get complete broadcast mediums akin LoRa.
Mark any area shove to conversation alongside "ptt": true. Optionally set "ptt_jitter_ms" to alter the buffer depth. It's recommended to use PTT rooms alongside the codec2 profiles.
{"name": "LoRa 1200", "profile": "c2-1200", "ptt": true, "description": "Slow-link shove to talk"} {"name": "Packet Radio Net 700", "profile": "c2-700", "ptt": true, "ptt_jitter_ms": 9000} Kimi K3 (https://www.kimi.com/en) third gathering hosted API was used for the following tasks:
- I18N localization and UI gettext() implementation
- Translation of UI elements and of eo, es, nl, and ru PO files
- Misc debugging and innovation of rnsconfig.py RNS helper utilities
The .po records are located in partyline/locale/
To update a translation, alter the msgstr row under its English msgid
To add a language, copy partyline.pot to a new .po document and add it to LANGUAGES in partyline/i18n.py.
Run python partyline/locale/compile.py, afterward open a drag petition alongside your changes or present it to the LXMF address:
- Reticulum and LXST by Mark Qvist
- Mumble. Great application that fair works. The finest UI is taken UI
- Tree, toolbar and use icons from Tabler Icons
- Sound effects from Kenney interface sounds
- Tin can phone example in the logo from openclipart.org
