Nade protocol test environment
The DryBox is a python CLI first, GUI assisted software that runs a communication simulation between two peers, “Left” and “Right”. Think of it as a test bench with a device on each side.
Each peer can be any kind of software, while it is wrapped with a python “DryBox Adapter”, strictly following the DryBox Adapter ABI, defined in the (perhaps, slightly outdated) documentation. This adapter exposes simple but crucial functions the DryBox can hook on to push and pull data from the virtual device, expecting on its end some kind of treatment - or none.
The simulator runs on two different modes: Bytelink, and AudioBlock.
The Bytelink mode is made to abstract the “purely communication” layer from the Nade Protocol (keep in mind the DryBox has been created for Nade’s development), and thus expects and treats the adapters’ communication as simple, easy-to-use network-like data packets. Its purpose is solely for core/protocol logic development and troubleshooting.
The audio block mode on the other hand, transmits C-contiguous int16 arrays from one side to the other, as a - currently - fixed and continuous mono 8 kHz, 16 bits depth audio stream. This method is much closer to the real-world environment, and enables true FEC / Modem logic development.
Audio Export Feature: When running in audio mode, DryBox automatically exports all adapter audio as WAV files to an audio/ subdirectory within the run output folder. This includes:
left_tx.wav- Left adapter transmit audio (before processing)left_rx.wav- Left adapter receive audio (after processing)right_tx.wav- Right adapter transmit audio (before processing)right_rx.wav- Right adapter receive audio (after processing)
All exported WAV files are in standard format: 8kHz sample rate, mono, 16-bit PCM. These files can be played back in any standard audio player (VLC, Audacity, etc.) for analysis and verification.
The DryBox works both on Linux and Windows, but the Nade-Python package currently only supports Linux.
Feel free to tweak a custom Adapter and test it in the DryBox !
UV (It is actually not mandatory, but recommended as easier to manage) Python 3.10+
Clone the repo
git clone https://github.com/Icing-Project/DryBox.git && cd DryBoxInstall dependencies
uv syncRun the DryBox (Gui mode)
uv run -m drybox.gui.appor CLI mode
uv run drybox-run --helpuv add --dev {Path to Nade-Python package}