This provides a command line interface to control MiniDSP devices.
It's a complete rewrite from node-minidsp
and aims to support multiple devices. Feel free to open an issue if you have access to other hardware!
In the releases section, there are pre-built packages available for different platforms.
Debian packages are available for: - armhf: Tested on raspbian (Raspberry PI, including the rpi0) - x86_64 Debian / Ubuntu variants
Tip: the packages do not automatically enable the server component, if you want to be able to use this app or the official plugin from another machine, enable the service with:
shell
systemctl enable minidsp.service
systemctl start minidsp.service
You can then connect with minidsp --tcp=ip:5333
(or set the MINIDSP_TCP
env var) or with the official plugin.
Single binary distribution are also provided for common operating systems: - Linux: minidsp.x8664-unknown-linux-gnu.tar.gz - MacOS: minidsp.x8664-apple-darwin.tar.gz - Windows: minidsp.x86_64-pc-windows-msvc.tar.gz
If you don't have rust setup, the quickest way to get started is with rustup
```shell cargo build --release --bin minidsp
cargo install cargo-deb cargo deb
```
There is a published crate which is kept in sync with releases, you can install with:
shell
cargo install minidsp
The changes done through this command will not be visible from the minidsp app, as it cannot read the settings back from the device. The following settings will be visible after changing them from any source: - Master Gain - Master Mute - Configuration preset - Active Source
The rest of the settings (filters, delays, routing) will not be reflected in the app.
```shell minidsp 0.0.2-dev Mathieu Rene mathieu.rene@gmail.com
USAGE: minidsp [OPTIONS] [SUBCOMMAND]
FLAGS: -h, --help Prints help information -V, --version Prints version information
OPTIONS:
-f
SUBCOMMANDS:
config Set the current active configuration,
debug Low-level debug utilities
gain Set the master output gain [-127, 0]
help Prints this message or the help of the given subcommand(s)
input Control settings regarding input channels
mute Set the master mute status
output Control settings regarding output channels
probe Try to find reachable devices
server Launch a server usable with --tcp
, the mobile application, and the official
client
source Set the active input source
```
Running without arguments will print information about the current state:
shell
$ minidsp
MasterStatus { preset: 0, source: Toslink, volume: Gain(-36.5), mute: false }
Input levels: -131.4, -131.4
Output levels: -168.0, -168.0, -120.0, -120.0
```
minidsp source toslink
minidsp gain -- -30
minidsp config 1 ```
This is where you'd configure routing, gain settings and PEQ for each input
(Click to expand) minidsp input [input-index] [SUBCOMMAND]
```shell $ minidsp input --help minidsp-input Control settings regarding input channels
USAGE:
minidsp input
ARGS:
SUBCOMMANDS: gain Set the input gain for this channel help Prints this message or the help of the given subcommand(s) mute Set the master mute status peq Control the parametric equalizer routing Controls signal routing from this input ```
```shell
minidsp input 0 gain -- -10
minidsp input 0 mute on ```
Each output matrix entry has to be enabled in order for audio to be routed. The gain can then be set (in dB) for each entry.
```shell
minidsp input 0 routing 0 enable on minidsp input 0 routing 0 gain 6 ```
``` $ minidsp input 0 peq --help minidsp-input-peq Control the parametric equalizer
USAGE:
minidsp input
ARGS:
FLAGS: -h, --help Prints help information -V, --version Prints version information
SUBCOMMANDS: bypass Sets the bypass toggle clear Sets all coefficients back to their default values and un-bypass them help Prints this message or the help of the given subcommand(s) import Imports the coefficients from the given file set Set coefficients ```
The peq
commands supports broadcasting an operation on multiple peqs. If specifying
an index, the command will only affect a single filter.
Bypass the first peq:
minidsp input 0 peq 0 bypass on
Bypass all peqs:
minidsp input 0 peq all bypass on
Importing filters should use the all
target if the unused filter should also be cleared.
minidsp input 0 peq all import ./file.txt
This is where you'd configure the output gain settings, crossovers, PEQs, FIR filters, compressors, phase inversion and delay for each output channel.
(Click to expand) minidsp output [output-index] [SUBCOMMAND]
The outputs are referenced by index, starting at 0 for the first output.
```shell $ minidsp output --help
Control settings regarding output channels
USAGE:
minidsp output
ARGS:
SUBCOMMANDS: compressor Controls crossovers (2x 4 biquads) crossover Controls crossovers (2x 4 biquads) delay Set the delay associated to this channel fir Controls the FIR filter gain Set the input gain for this channel help Prints this message or the help of the given subcommand(s) invert Set phase inversion on this channel mute Set the master mute status peq Control the parametric equalizer ```
```shell
$ minidsp output 0 gain --help
USAGE:
minidsp output
ARGS:
Example usage: minidsp output 0 gain -- -20
--
is used to distinguish negative values from another option
``` $ minidsp output 0 peq --help Control the parametric equalizer
USAGE:
minidsp output
ARGS:
SUBCOMMANDS: bypass Sets the bypass toggle clear Sets all coefficients back to their default values and un-bypass them help Prints this message or the help of the given subcommand(s) import Imports the coefficients from the given file set Set coefficients ```
The peq
commands supports broadcasting an operation on multiple peqs. If specifying
an index, the command will only affect a single filter.
Bypass the first peq:
minidsp output 0 peq 0 bypass on
Bypass all peqs:
minidsp output 0 peq all bypass on
Importing filters should use the all
target if the unused filter should also be cleared.
minidsp output 0 peq all import ./file.txt
``` $ minidsp output 0 crossover --help Controls crossovers (2x 4 biquads)
USAGE:
minidsp output
ARGS:
SUBCOMMANDS: bypass Sets the bypass toggle clear Sets all coefficients back to their default values and un-bypass them help Prints this message or the help of the given subcommand(s) import Imports the coefficients from the given file set Set coefficients ```
Crossovers are implemented as series biquad filters. There are two groups of 4 biquads per channel. Each group can be bypassed individually.
The command follows the same syntax as the peq
command, for the exception that you have to specify the group index.
They can be imported in REW's format:
shell
minidsp output 0 crossover 0 all import ./file.txt
minidsp output 0 crossover 1 all import ./file2.txt
```shell $ minidsp output 0 fir --help minidsp-output-fir Controls the FIR filter
USAGE:
minidsp output
SUBCOMMANDS: bypass Sets the bypass toggle clear Sets all coefficients back to their default values and un-bypass them help Prints this message or the help of the given subcommand(s) import Imports the coefficients from the given file set Set coefficients ```
Importing FIR filters can be done using a wav file. The file's sampling rate MUST match the device's internal rate.
shell
minidsp output 0 fir import ./impulse.wav
minidsp output 0 fir bypass off
```shell $ minidsp output 0 delay --help minidsp-output-delay Set the delay associated to this channel
USAGE:
minidsp output
ARGS:
USAGE:
minidsp output <output-index> invert <value>
Example: minidsp output 0 invert on
The minidsp output n peq
and minidsp input n peq
commands both support importing from a REW-formatted file. If there are less
filters on the device, the remaining PEQs will be cleared.
```shell
$ minidsp output 3 peq all import filename.txt PEQ 0: Applied imported filter: biquad1 PEQ 1: Applied imported filter: biquad2 PEQ 2: Applied imported filter: biquad3 ...
$ minidsp output 3 peq 1 import filename.txt
PEQ 0: Applied imported filter: biquad1
Warning: Some filters were not imported because they didn't fit (try using all
)
```
For the purposes of organizing configurations, a file can be created with commands to run sequentially. It's an easy way to recall a certain preset without changing the device config preset.
Lines are using the same format at the command line, without the minidsp
command.
Example: ```
mute on config 3 input 0 peq all bypass off output 0 peq all bypass off gain -- -30 mute off ```
The command list can be ran using minidsp -f ./file.txt
In order to run as a non-privileged user under Linux, you may have to add a udev rule for this specific device. Under /etc/udev/rules.d
, create a file named 99-minidsp.rules
containing:
```
ATTR{idVendor}=="2752", ATTR{idProduct}=="0011", MODE="660", GROUP="plugdev" ```
Then reload using:
sudo udevadm control --reload-rules