Driving QLCplus with MIDI from Mixxx

Archive of the non-categorized posts related to the QLC+ technical support.
Please do not create new threads here, instead, use the categories above !
Post Reply
Markus Baertschi

I've been struggling all weekend to get Mixxx to communicate with QLCplus for a couple of days. Now I have found a working solution and want to document it, so other don't have to struggle that much. There are several gotchas I've run into.

On the Mixxx side of things you need to do several things:
- Install the http://mixxx.org/forums/viewtopic.php?f=7&t=4732 midi_for_light script into your controller directory (/usr/share/mixxx in my case)
- Start Mixxx in developer mode (mixxx --developer). This is necessary as otherwise the 'Midi Through' interface does not show up.
- Enable the 'Midi-Through' controller and load the 'MIDI for Light' preset

On the QLCplus side:
- Enable the 'Midi Through' plugin
- Configure the 'Midi-Through' plugin for channel 1 and 'Note Velocity' mode
- Create a Profile 'Mixxx', type MIDI, in this profile add a channel for each item Mixxs sends
- Example 1: Name='BPM', Type=Button, Channel=1, Message=Note On/Off, Parameter=101
- Example 2: Name='Volume absolute', Type=Slider, Channel=1, Message=Note On/Off, Parameter=65
(Remark: the parameter is off by one, Midi node 64 has to defined as 65)

Markus
Jano Svitok

Markus,

this seems like useful information. Would you attach the profile here, and maybe reword your howto in the form like e.g. http://www.qlcplus.org/docs/tutorial-soundcontrol.html ? I will add it to the online docs (howto) & installation (profile) if you don't mind. Thanks!
Markus Baertschi

Ok, that is a good idea. This will be somewhat more verbose and explicit. What format do you want it in ? (html/png ?)
Jano Svitok

Html/png is ok. If it's more verbose is great, but even as it is it will be useful.

For start please create standalone html and png files, and I'll put the required headers/stuff.

If you by any chance want to do it all yourself here is the recipe:

- fork github repo, get a local working copy
- copy something from resources/docs to a new file (howto_mixxx.html?)
- edit as needed. rules: other linked files are prefixed by "file:", screenshots go to images/ folder, and get prefixed with "file:images/", icons from resources (gfx folder) are prefixed with "qrc:/"
- install ruby (sudo apt-get install ruby for debian)
- run ./make_docs.rb -d ../html <- this will copy all files to ../html and replace special qt links with normal ones, so you can check the file in browser.
- add all your new files to createpdf.sh, docs.pro, index.html and index_pdf.html
- "git add" your new files (e.g. git add howto_mixxx.html)
- update debian/changelog with message like this: "Docs: New Mixxx tutorial (Markus Baertschi)"
- "git commit -a" <- use the same message as above
- "git push origin master"
- create pull request on github.com

Thanks!
Markus Baertschi

Hi Jano,

here your pull request. https://github.com/mcallegari/qlcplus/pull/440

This was an interesting learning experience.

Markus
Luis García-Tornel

Jano and Markus:

I'm attaching the Input profile for Mixxx.
Or do you prefer a Pull Request in GitHub?
Attachments
Mixxx-MIDI.qxi
(3.96 KiB) Downloaded 346 times
Darrow

Thanks very much Markus for pointing me in the direction of Mixxx. I have been trying to find a reliable app for beat detection and Mixxx does the job very nicely.

I use the Windows version of Mixxx with LoopBe1 for the midi input to QLC+. For some reason the latest script won't work with LoopBe1. It complains about inputs and outputs both being active which is forbidden. The earlier script (named PC_Dimmer) works just fine for me.
Heiko Fanieng

Interesting new Tutorial Markus! Does anybody try this under Mac OS X? I got problems to see the Developer-Menu after starting Mixxx via Terminal with "open mixxx --args developer".
Heiko Fanieng

Ok, i tried a lot this weekend to get the latest Mixxx-Script to work.

On OS X, i can now enter the Developer-Mode of Mixxx:
open -a mixxx --args --developer

Under Windows 7 i used:
C:\Program Files\Mixxx>mixxx --developer

Now i got the Developer-Menu on both OS, but i even can't find the "Midi-Through" Controller.

Maybe - after reading Darrow's Post i will test the earlier Version, called PC_Dimmer.

The goal is to extend the Wiki-Article (Linux only) with OS X and Windows :)
https://github.com/mcallegari/qlcplus/w ... x-via-MIDI
Heiko Fanieng

There is a new updated today, maybe it works for you:
http://mixxx.org/forums/viewtopic.php?f ... 783#p23783
Darrow

No need to use developer mode under Windows. Mixxx sees whatever virtual midi driver you have running.

I found out why LoopBe1 would not work with the latest script. Too much midi data is sent and it can't handle it. I now use loopmidi. It works well. I don't need the sysex time code data so I removed it from the script.
Heiko Fanieng

Also no need for developer mode under OS X 10.10.2 with "Mixxx 1.12-alpha" and "Midi_for_light_2015_02_17".

I'm very happy to have a cross-plattform DJ-Software, that can send the Beat via MIDI to QLC+ like the commercial product Traktor does it with its Beat-Phase :)
hschabel
Posts: 3
Joined: Sat Jul 18, 2015 10:21 pm
Real Name: Hans_Jörg

Hi ,

I would like to link QLC+ with mixxx running not in the developer mode. QLC+ seems to ignore MIDI signals coming over the Virtual Rawmidi device.

Any ideas?

Regards
Hans-Jörg
hschabel
Posts: 3
Joined: Sat Jul 18, 2015 10:21 pm
Real Name: Hans_Jörg

Script to start mixxx and qlcplus without developer mode:


#! /bin/bash
# Laufende Prozesse beenden:
# exit
/home/user/.beende_pulsaudio.sh
pkill -e qlcplus
pkill -e mixxx
#
nohup gnome-terminal -e "qlcplus"
sleep 5
nohup gnome-terminal -e "mixxx"
echo mixxx __QLC__ MIDI Controller aktiv
sleep 10
PID=`pidof -s qlcplus`
echo $PID
kill $PID
echo qlcplus wird gestartet
nohup gnome-terminal -e "schedtool -n 1 -a 0x02 -e qlcplus -f -o /MEDIEN/Musikprogramme/QLC_DMX-Geräte/QLC.qxw"
echo qlcplus MIDI port aktiv
sleep 5
PID=`pidof -s mixxx`
echo $PID
kill $PID
nohup gnome-terminal -e "sudo schedtool -n -10 -p 50 -a 0x0f -e sudo -u user mixxx"
echo 'mixxx wird gestartet'
sleep 10
echo 'mixxx nice level werden optimiert'
PIDmixxx=`pidof -s mixxx`
echo PIDmixxx $PIDmixxx
PID=`ps -T -p $PIDmixxx | grep AnalyserQueue | awk '{print $2}'`
echo AnalyserQueue SPID $PID
if test $PID!=''; then
schedtool -n -1 $PID;
fi
PID=`ps -T -p $PIDmixxx | grep LibraryScanner | awk '{print $2}'`
echo LibraryScanner SPID $PID
if test $PID!=''; then
schedtool -n -2 $PID;
fi
PID=`ps -T -p $PIDmixxx | grep BrowseThread | awk '{print $2}'`
echo BrowseThread SPID $PID
if test $PID!=''; then
schedtool -n -3 $PID;
fi
PID=`ps -T -p $PIDmixxx | grep Controller | awk '{print $2}'`
echo Controller SPID $PID
if test $PID!=''; then
sudo schedtool -n -11 $PID;
fi
PID_K=`pidof -s kthreadd`
PID=`ps -T --ppid $PID_K | grep 'irq/23-ehci_hcd' | awk '{print $2}'`
echo 'irq/23-ehci_hcd' PID $PID
if test $PID!=''; then
sudo schedtool -n -12 $PID;
fi
PID=`ps -T --ppid $PID_K | grep 'irq/16-xhci_hcd' | awk '{print $2}'`
echo 'irq/16-xhci_hcd' PID $PID
if test $PID!=''; then
sudo schedtool -n -12 $PID;
fi
Post Reply