Moje odkazy
Obsah článku:
vydáno: 31. 5. 2025 20:08, aktualizováno: 1. 6. 2025 13:37
It is almost five years since I added the kernel driver for DJM-250MK2. Now I have here a new mixer: Pioneer DJ DJM-V10 and it deserves a kernel driver too.
This beast makes the DJM-250MK2 look like a child's toy. V10 is a flagship mixer that includes USB audio interface with 12 input channels and 12 output channels (6 stereo in each direction). This plethora of channels and two headphone outputs make it ideal for playing in pairs, where one can play while the other prepares the next track on the same mixer. Now also with GNU/Linux.
The sound quality is also superior to DJM-250MK2. New mixer supports higher sampling rates (44 100 / 48 000 / 96 000 Hz) and is equipped with better audio chips. Has also many other features and effects… however, this is not a review, just brief info about the Linux drivers.
Normal USB sound cards, audio interfaces and mixers (that act like a sound card to the computer) implement USB Audio Class standard and thus do not require any special drivers – they are supported by operating systems by default. This is ideal situation. Some manufacturers like Pioneer do not support this standard and their devices are not identified as sound cards, just unknown USB device. They need some drivers in the kernel. Fortunately they work similarly and to implement the driver, it is needed to guess number of channels, sampling frequency and other parameters and configuration (through the driver we can e.g. set volume or assign channel mappings like USB channel 1 will be microphone, 2 will be master, 3 will be PHONO etc. - this is done by sending messages through USB to the mixer).
I submitted my humble piece of code to the mailing list. I like this classic, decentralized and free (as in freedom) way of contributing. My patches were accepted by Takashi Iwai and then by Linus Torvalds and they will be in Linux 6.16:
We are now waiting for the driver to find its way into distributions. If you want to test the driver or just use the device sooner, please get the latest Kernel and compile it yourself.
Playback channels are fixed and controlled via hardware knobs on the mixer. In the computer we see 12 mono channels and on V10 we have 6 stereo channels with faders, equalizers (not classic Hi / Mid / Low but four knobs for each channel: Hi / Hi mid / Low mid / Low) and filter and send effects for each channel. We can even connect two computers and select for each channel, which one will play or select some analog source like vinyl or maybe a MiniDisc player or a DAT tape (digital inputs are also available – S/PDIF orange cinch, unfortunately no Toslink).
Capture channels are configured in the computer – through an utility like alsamixer
. Available options are:
We can also set Capture Level: 0dB, +3dB, +6dB, +9dB, +12dB, +15dB.
In my second patch, I changed the names of the controls of DJM-V10, DJM-250MK2 and other Pioneer mixers, so they now conform to the convention and alsamixer
now shows them under the correct category: Playback (F3) and Capture (F4).
With these patches, everything seems working fine (playback, recording, MIDI, channel configuration). However like with DJM-250MK2, it needs some special setup/handshake if you want capture the signal from PHONO/LINE and simultaneously play music from computer. This is needed for DVS.
What is DVS? Digital Vinyl System which is combination of digital and analog - you have music files on your computer and play them from a software like Mixxx, VirtualDJ, Rekordbox etc. And you have a classic record player with a special vinyl on it connected to the mixer. This vinyl does not contain music but a special audio signal (timecode). This signal goes (like sound) through PHONO connector to the mixer and then to the computer where the software decodes it and interprets it as direction and speed of rotation of vinyl. So if you touch the vinyl and move it slower or faster, this information goes to the software and it also plays the (digital) song slower or faster. This method was invented shortly after Y2K by some Holland guys (Mark-Jan Bastian with help of Tim Hemel and Bill Squire) and first versions of their software was developed for BeOS.
So I needed to slightly update the djm-fix tool in order to support also DJM-V10.
The build and run process is still the same:
# install dependencies
sudo apt install mercurial make pkg-config g++ libasound2-dev
# or equivalent in other distributions
# download djm-fix source code:
hg clone https://hg.frantovo.cz/midi/djm-fix/ # primary source
hg clone https://hg.globalcode.info/midi/djm-fix/ # or use this mirror
# compile it:
cd djm-fix
make
# and run:
make run # in most cases
build/djm-fix 'Pioneer DJ.*' # or provide custom name pattern (regular expression)
# to select the proper card
The original release for DJM-250MK2 has a v0.1 tag in Hg, new version supporting also DJM-V10 is tagged v0.2. However you can just simply download the latest version. Hopefully new devices will come in the future (DJM-450 is in progress but not working yet).
The mixer works also as a MIDI controller i.e. faders and knobs send their positions as MIDI messages. I tested it this way:
amidi -l # list ports
amidi --port "hw:1,0,0" --dump # print incoming messages
arecordmidi --list # list ports
arecordmidi --port=20:0 test.mid # write messages in a file
In current version it just not work simultaneously with djm-fix because of exclusive access to the MIDI device. This should be improved in some next version .
How you use your mixing consoles? DVS and mix channels in the console? Or process everything in the computer while hardware is just a MIDI controller? Or are you spinning classic vinyl like the good old days?
Contact: franta.djm.v10@a.frantovo.cz
Tento článek zatím nikdo nekomentoval