xwax - Digital vinyl on Linux
xwax is vinyl emulation software for Linux. It allows DJs and
turntablists to playback digital audio files (MP3, Ogg Vorbis, FLAC, AAC and
more), controlled using a normal pair of turntables via timecoded
vinyls.
The ordering of options is important. Most options apply to
subsequent music libraries or decks, which can be given multiple times. See
the EXAMPLES below.
- -l, --crate
path
- Scan for tracks or playlist at the given path. Tracks are grouped into a
crate in the music library.
- --timecode
name
- Use the named timecode for subsequent decks. See --help for a list of
valid timecodes. You will need the corresponding timecode signal on vinyl
to control playback.
- --33
- Set the reference playback speed for subsequent decks to 33 and one third
revolutions per minute. This is the default.
- --45
- Set the reference playback speed for subsequent decks to 45 revolutions
per minute.
- --[no-]protect
- Protect against loading new tracks or resetting the start of the track if
the deck is playing. Applies to subsequent decks, and the default is
off.
- --phono
- Adjust the noise thresholds of subsequent decks to tolerate a
cartridge-level signal connected to a line-level audio interface. This is
a 'software pre-amp'. Unless your audio path has low noise, this will give
worse results or may not work at all; a true phono pre-amplifier is always
preferred.
- --line
- Set noise thresholds of subsequent decks to standard audio levels. This
reverses the effect of the --phono option, and is the default.
- --import
path
- Execute the given program to load tracks for playing. The program outputs
a stream of signed, little-endian, 16-bit, 2 channel audio on standard
output.
- --scan
path
- Execute the given program to scan music libraries. Applies to subsequent
use of the --crate flag.
- --dummy
- Create a deck which is not connected to any audio device, used for
testing.
- --lock-ram
- Lock into RAM any memory required for real-time use. This includes audio
tracks held in memory which can be large. Use ulimit -l to raise
the kernel's memory limit to allow this.
- --rtprio
n
- Change the real-time priority of the process. A priority of 0 gives the
process no priority, and is used for testing only.
- --geometry
[nxn][+n+n][/f]
- Change the geometry of the display in size, position and scale (zoom)
respectively. The size and position is passed to SDL, which may use it to
set the display mode, or size of an X window. See the
EXAMPLES.
- --no-decor
- Request to the window manager to create a 'frameless' window which does
not have the regular controls such as title bars and buttons. This can be
useful in conjunction with the --geometry flag for dedicated xwax
installations.
- -h, --help
- Display the help message and default values.
The following options are available only when xwax is compiled
with ALSA support.
- --alsa
device
- Create a deck which uses the given ALSA device (eg. plughw:0).
- --rate
hz
- Set the sample rate for subsequent decks. The default is to prefer
48000Hz, but use 44100Hz if that is not available. To maintain best
performance, only sample rates implemented by the hardware are
available.
- --buffer
samples
- Set the ALSA buffer size for subsequent decks. Smaller is better for lower
latencies and greater responsiveness. Set too low and audible glitches
will occur, with reports of underruns to the console.
The following options are available only when xwax is compiled
with JACK support.
- --jack
name
- Create a deck which connects to JACK and registers under the given
name.
xwax does not set the sample rate for JACK devices; it uses the
sample rate given in the global JACK configuration.
The following options are available only when xwax is compiled
with OSS support.
- --oss
pathname
- Create a deck which uses the given OSS device (eg. /dev/dsp).
- --rate
hz
- Set the sample rate for subsequent decks. The default for OSS devices is
48000Hz.
- --oss-buffers
n
- Set the number of buffers used by the OSS device. Applies to subsequent
decks.
- --oss-fragment
n
- Set the size of a buffer used by the OSS device. The actual buffer is 2^n
bytes. Applies to subsequent decks.
The following options are available only when xwax is compiled
with ALSA support.
- --dicer
device
- Use one or two Dicer controllers connected as the given ALSA device (eg.
hw:Dicer). See the section NOVATION DICER CONTROLS for more
information.
Adding a hardware controller results in control over subsequent
decks, up to the limit of the hardware.
The playback of each deck (direction, speed and position) is
controlled via the incoming timecode signal from the turntables. The
keyboard provides additional controls.
"C-" and "S-" means a keypress is combined
with the 'Control' or 'Shift' key, respectively.
Record selection controls:
- cursor up, cursor
down
- Move highlighted record up/down by one.
- page up, page down
- Scroll the record listing up/down by one page.
- left cursor, right
cursor
- Switch to the previous/next crate of records.
- tab
- Toggle between the current crate and the 'All records' crate.
- C-tab
- Toggle sort mode between: artist/track name, BPM and 'playlist' order.
Playlist order is the order in which records were returned from the
scanner.
- C-S-tab
- Re-scan the currently selected crate.
To filter the current list of records type a portion of a record
name. Separate multiple searches with a space, and use backspace to
delete.
Deck-specific controls:
Deck 0 |
Deck 1 |
Deck 2 |
F1 |
F5 |
F9 |
Load currently selected track to this deck |
F2 |
F6 |
F10 |
Reset start of track to the current position |
F3 |
F7 |
F11 |
Toggle timecode control on/off |
C-F3 |
C-F7 |
C-F11 |
Cycle between available timecodes |
The "available timecodes" are those which have been the
subject of any --timecode flag on the command line.
Audio display controls:
- +, -
- Zoom in/out the close-up audio meters for all decks.
2-deck setup using one directory of music and OSS devices:
xwax --crate ~/music --oss /dev/dsp --oss /dev/dsp1
As above, but using ALSA devices:
xwax --crate ~/music --alsa hw:0 --alsa hw:1
2-deck setup using a different timecode on each deck:
xwax --crate ~/music --timecode serato_2a --alsa hw:0
--timecode mixvibes_v2 --alsa hw:1
As above, but with the second deck at 45 RPM:
xwax --crate ~/music --timecode serato_2a --alsa hw:0
--timecode mixvibes_v2 -45 --alsa hw:1
Default to the same timecode, but allow switching at runtime:
xwax --crate ~/music --timecode serato_2a --timecode
mixvibes_v2 --alsa hw:0 --alsa hw:1
3-deck setup with the third deck at a higher sample rate:
xwax --crate ~/music --rate 48000 --alsa hw:0 --alsa hw:1
--rate 96000 --alsa hw:2
Using all three device types simultaneously, one deck on each:
xwax --crate ~/music --alsa hw:0 --oss /dev/dsp1 -j
jack0
Scan multiple music libraries:
xwax --crate ~/music --crate ~/sounds --crate ~/mixes
--alsa hw:0
Scan a second music library using a custom script:
xwax --crate ~/music --scan ./custom-scan --crate
~/sounds --alsa hw:0
Control two decks with Dicer hardware:
xwax --dicer hw:Dicer --alsa hw:0 --alsa hw:1
Use a high resolution and enlarge the user interface:
xwax --geometry 1920x1200/1.8 --alsa hw:0
Mark Hills <mark@xwax.org>