Entra:     


Forum: General Discussion

Topic: Using Backing Tracks in VirtualDJ to Trigger MODX8 Performance Changes - Page: 1
Hello,

I'm new here, and this is my first post.

I have a Yamaha MODX8 keyboard connected via USB MIDI to my ASUS laptop, which is also connected via USB MIDI to my Allen & Heath CQ-18T mixer. On the laptop, I use a DAW with VST instruments controlled by the MODX8.

I'm considering purchasing a VirtualDJ Pro license for professional use, but before I do, I'd like to know whether the following setup is possible and, if so, how I could achieve it.

My goal is to play backing tracks from VirtualDJ and have VirtualDJ—either directly or through another MIDI software—send MIDI messages (CC, Program Change, MSB, and LSB) to the MODX8. This would allow the keyboard to automatically switch between different Scenes, or more accurately, different Performances on the MODX8, in sync with each backing track.

Is this possible with VirtualDJ? If so, what would be the best way to set it up?

Thank you in advance for your help
 

Inviato Sun 05 Jul 26 @ 2:53 pm
 Best Answer A complete success! A million thanks, Locodog. After several days of work and effort, you achieved exactly what I needed: the ability to control sounds, sound banks, scene changes, and performances from Virtual DJ to my Yamaha Modx8 keyboard.

I'm a musician and I don't understand computer programming. I spent a long time researching whether this was possible with Virtual DJ, and finally, Locodog did it. Just load the song into the decks and the changes are automatically applied to the Modx8. Thanks!

[ selected best answer by locoDog on Sat 11 Jul 26 @ 3:18 pm ]
Cool idea, I do own the Yamaha Montage (OG version). You might also want to sent midi clock, but that's less of an issue with Virtual DJ. I do remember I synced my Montage to a DAW, together with a Korg Kronos.. The midi clock signal, but does not sent SPP (song pointer positions), it only sents BPM so you still need to start the Yamaha MODx by hand then. But again I don't know your particulairy user case.

About program change.. I once had a look at it but setting it up was too complex for me. Though I did get some pretty good tips back then. You need to create an instrument of midi profile. Then you'll be able to sent Program changes as POI (point of interest) which can be set manually in the POI editor. There's loads of possiblities.. but I don't think there's an basic solution right now that serves this user case. https://virtualdj.com/forums/243891/General_Discussion/Midi_Program_Change__and%2For_Control_Change_in_POI._Is_this_possible%3F.html

Back then I wanted to sent program changes to an effect device.. but I solved this by a footswitch.

 

Hi macgyvergear, looks pretty complicated to me so far as well. I'm a musician, not a programmer. I have some basic IT knowledge, but I'll keep experimenting and looking into it. Thanks for the reply!
 

I'm pretty sure a definition can't send prog change.
I worked with a guitarist and he had a looping/midi pedal that also had an real time app for presets and plugins[sort of vst patches for sound modification]
If I remember right, his thing had an alternate method to prog change via CC

or maybe I'm confusing that job with a mainstage [mac app] job [I'd done a few of these midi out jobs]

I was sending midi with skin button presses and track action poi, also receiving midi from the hardware to have vdj act on it.


Actually looking over
https://yamahasynth.com/learn/modx-series-synthesizers/mastering-modx-midi-settings-explained/

it might be doable [scene is sysex or CC on ch 1, they probably mean ch zero] but it's a pretty hard task to work remotely [but have done so on every job in the past] it is a drawn out process that starts with one button sending note, one button sending cc
getting you used to the skin that makes the action poi easy to place,
we'd be in discussion for a few weeks and it would be a bit pricy [reasonable for work done but there's a lot of work to be done]

I'm honestly not sure what the best way to achieve your goal is, I just know what I can get vdj to do.
And I only engage in paid jobs with licenced users [sub is licenced]

I appreciate it is a leap of faith to go from new user to using vdj in one of the most advanced ways it can be used [a lot of initial explaining but day to day use is press button - thing works without needing thought or set up]

I think I've done around 30 jobs like this.
 

Indeed even though VirtualDJ doesn't have program change specifically available in midi definition, you can use sysex to send the program change message.
 

Indeed even though VirtualDJ doesn't have program change specifically available in midi definition, you can use sysex to send the program change message.

Got it. Just like you and locodog said, SysEx is a key element here, but what I'm struggling with is the whole process that comes afterwards
 

That makes sense, I already figured this wouldn't be as easy as I imagined, though I didn't expect it to be this complex either. However, I have a couple of questions that I'd like you to clarify if possible.I don't mind paying for a VirtualDJ license; in fact, I've been sure about that since I started this project. In my opinion, VirtualDJ is one of the most complete, versatile, and intuitive programs out there. I also have absolutely no problem paying for your work, as I understand this requires hours of effort and dedication (of course, knowing a budget beforehand).So, my questions are: Is it possible to do this separately? Meaning, we first solve the issue and then I purchase the license, or are both things tied together from the start? Also, can you give me some kind of guarantee that what I am trying to achieve is actually doable?
 

First there's a definition file, that's the most external bit of vdj we can touch as a user
that gives names to midi/sysex for a device
if sending out - some script interacted with name and it knows the midi to send
if receiving - some midi comes in and it knows the name given to that midi

then there's mapping
mapping links a bit of script to one of the pre-mentioned names
if passed in - named midi has been pressed/moved/jogged and that calls the script to do something in app
if passing out - something in app used some script [a variable] has changed state to cause a LED output or Bar to send to a named midi command [a note, a CC, a sysex]

then there's an interface to make it an easy job to mark up tracks with script
[no good having to type it out changing a variable state every time]

I have a definition file, a mapping and a skin all built but mapping & def might need changes to suit your hardware. [they often do]
I'd have to read up on the midi table of the hardware.

It could be a matter of a 2 or 3, 3 hours sessions talking & testing, it could be a couple of weeks depending on the midi spec

guitarist was a couple of weeks, some jobs are a couple of hours but that's just lamping which is the most straight forward version of midi out.
Original guy who commissioned the first iteration we were talking for 5 6 weeks but he wanted to explore all the options and I was figuring it out
all from blank files, no skin, undecided on midi or os2l

If I'm sounding reasonable, say you're interested before going in on a licence,
I have to read the midi spec and I still might recommend against after reading


I think this was Work in progress iteration 1 [it got neater and smarter]
you don't have to understand much of it, you give a button a name you remember [once] press it and it writes an action poi on track [that you don't have to understand]
that sets a variable when play head runs over it
variable does something you don't need to understand in mapping
mapping talks to definition file
vdj sends out midi to device

pretty straight forward for day to day use, just a lot of hours from me making it to make it that easy for the user


in playback that big window doesn't even have to be visible. It's just there for preparation placing action pois


*Edit you seem interested,
It would go like this
first I'll read up on the midi spec [a couple of days reading and thinking on it]
then I'll decide if it's suitable
then you'd go for a month subscription [can't do custom midi without a licence]
No obligation from you toward me at this point just the month subscription

then we get to basic testing 1 note, 1 CC, 1 sysex
If I can get that working I can get the whole thing working
then I can make you a time limited trial

we do some testing and maybe make some tweaks if you want them
once you're happy to pay for something that's working
we remove the time limitation
then either you go for the full pro licence or dip in and out of subscription if that's what you decide.
 

Locodog, As I mentioned in my first post, I have a Yamaha MODX8 connected via USB MIDI to my ASUS laptop.
On this laptop, I run a DAW with several virtual instruments (VSTs) loaded, which I trigger directly from the MODX8.

Both the external sounds and the internal MODX8 sounds are triggered from this keyboard.

All these sounds are saved into different scenes, or rather, what Yamaha calls 'Performances'.

Right now, I am using a total of around 40 Performances.These 40 Performances are organized into different User pages—exactly three pages.

Each page holds about 16 Performances, and all of these pages belong to a specific User bank, specifically 'User 3'.

Each User bank can contain multiple pages with tons of Performances.

So, my current setup consists of around 40 Performances, distributed into pages of 16 slots each, and all these pages live inside a specific User bank
(User 1, 2, 3, 4, 5. 6).

All these User banks are located within the MODX option called 'Live Set'

Therefore, what I am looking for is NOT for the laptop to change individual sounds, but rather to change the entire Performance.
In other words, every time a new song plays in VirtualDJ, it should send a message to automatically select a different Performance on the keyboard.

Of course, many songs in VDJ might end up sharing the same Performance.

Each Performance contains up to 16 tracks or 'Parts' with their corresponding sounds (both internal MODX sounds and external ones in the DAW), along with their specific volume, reverb, and routing settings.
But as I said, I am not worried about changing sounds; I just want VDJ to automatically change and select the associated Performance so I don't have to switch scenes manually on the MODX.

I hope this makes sense, but please let me know if you have any questions.Since you mentioned this process could take days or weeks, I think getting the monthly Pro subscription would be perfect for now, and I will purchase the Infinity license later down the road.

However, there is one thing that worries me: the possibility of a MIDI conflict between sending MIDI from the MODX to the DAW and receiving MIDI back into the MODX from VirtualDJ at the same time. In theory, I think it should be fine, but I'm not entirely sure. If you need the MIDI data table, let me know and I will send it over.
 

My turn to say "that's a lot to take in" :)

Shouldn't be a conflict one is in, the other is out, but it is midi and can act weird just by looking at it wrong

I'll take a couple of days thinking, and reply my prognosis here.
Then we'll work out schedules, and when you should sub - there's preparation I can be doing before testing, no point wasting days of the subscription with nothing to test

First thing you can do is
see this
https://virtualdj.com/wiki/ControllerDefinitionMIDI

the "How to get the Unique Identifiers" : part
(guide says file found in .../documents/virtualDJ/ , but that's historic
new installs will be found in .../AppData/virtualDJ/ )


Clicking the gear icon will get you to the right place [the vdj home folder]



or perhaps follow the "How to get the sysexid value :" part
both could be useful, although VID & PID [first thing] is preferable

That's some preparation you can do, with no licence

Yeah the midi table will help, I'm not sure if it was included in the link I posted earlier [I barely skimmed reading it, jut saw scenes by sysex and replied]

Once we've arranged schedules and licenced, we'll chat real time on discord.
[save boring everybody here]
 

After about 30 minutes with the Docs this seems viable.

If I understand correctly there is no prescribed order for performances, there's just a pile and you can put whatever you want wherever you want
There might be a system with the modx UI to keep in sort of organised but as far as the sysex is concerned it's just a pile 0-639 inclusive.
lsb being lsb*128
plus PN which is 0-127

If this is the case the part I wasn't sure about isn't all that bad, and that leads me to question do you even need a skin to place poi at all?

If it's just backing tracks with no mixing then the LSB / Program Number could be wrote into a track's tag (or tags) in some format that is human readable
and read from tag moments before playback to call sysex.


defining shouldn't be too hard, skin isn't needed, mapping well depends on how you want it readable in tag (or tags) but... it's mapping... it's an everyday thing for me.

I think the hard 'do rarely' items have been answered and we get into the humdrum questions of how are you playing tracks,
like setting up an automix and running a few seconds of silence between songs, or maybe as low tech as a side list of songs and you load what you feel like and press play let it play till the end then pick another and press play again,

Don't get too excited yet but I think we'll have this done without much pain.
but still in thinking time
 

Hi! Yes, sorry for that huge wall of text 😃 I just didn't want to leave anything out and wanted to make sure everything was clear.
Thanks for taking the time to read through it.That sounds great!

Once you've figured it out, just let me know so we can get things organized.
As soon as I have some free time, I’ll check out the link you shared and read it carefully.

The MIDI data table is a somewhat heavy PDF file (around 5 MB), so I think it would be better to send it via email. Let me know what you think.

The performance order is set by me, as there is no built-in system in the interface to organize it. All the tracks are backing tracks.
If I understood correctly, you're saying we might not need to use POIs. Instead, we could just input the LSB/Program number in a tag field (like comments, genre, etc.) to trigger the SysEx messages.

The way I play the tracks is exactly as you described:Sideview / Sidelist: I load whichever track I want, hit play, let it run until the end, then pick another one and hit play again.

I really hope it works out as you say and everything runs smoothly. I'll wait for your update. Thanks!
 

please use paragraphs, *edit, I used paragraphs for you.

No need for the midi table I found it myself [30MB .pdf weighty document]
Yes you read correct, data stored on track tag, no poi placement needed.

I've made allowances for all 640 performances with the sysex
And have proof of concept tests devised.

I'm confident enough that this can work to advise a subscription after you get me the VID & PID numbers.
I'm reasonably free on time, I got my recent job prototyped and sent out so it's now up to your schedule.
I'm just brushing up on the initial midi set up so first tests go smoothly.


 

My bad, you're absolutely right. I'll keep that in mind from now on.
 

please use paragraphs, *edit, I used paragraphs for you.

No need for the midi table I found it myself [30MB .pdf weighty document]
Yes you read correct, data stored on track tag, no poi placement needed.

I've made allowances for all 640 performances with the sysex
And have proof of concept tests devised.

I'm confident enough that this can work to advise a subscription after you get me the VID & PID numbers.
I'm reasonably free on time, I got my recent job prototyped and sent out so it's now up to your schedule.
I'm just brushing up on the initial midi set up so first tests go smoothly.




Hi, sorry for the late reply, but due to my work, I don't have as much free time as I would like.
I have some full days off on Tuesdays, Fridays, and Saturdays, and just some spare moments during the rest of the week.

Also, I don't have my keyboard and laptop here at home right now since I work with both of them almost every day, and I need them here to run these tests.

Tomorrow morning, during a gap in my schedule, I will definitely get the VID and PID numbers, run the test with MidiTrace, and post everything here.
 

I have managed to get the unique hardware identification numbers, but I cannot get the MODX to return the sysexid.

I've tried using Miditrace but it's impossible. The only thing I've been able to achieve is getting the numbers via createmidilog, which are: VID: 0499 and PID: 172A.

Do you know of any other way to extract this information from the MODX?
 

Shouldn't be needed now we have the PID & VID
172A hmm, my look up got 171A, I'll trust what midilog returns

edit ah right + model is 172A, older models are 171A

I'm ready to go, files ready and tests devised.
Once you have the subscription and the time we can proceed with testing and realtime chat on discord.
 

 

locoDog wrote :
cool licenced

I just sent you a private message with files and links
https://virtualdj.com/user/action/mailbox.html


I’m already on your Discord!
And yes, I got the license—in the end, I bought the Pro Infinity option so I can have peace of mind and not worry about monthly fees or anything else.

As I mentioned before, I am available on Tuesdays, Fridays, and Saturdays, so tomorrow works great for me to do some testing. However, I still need to install the software on my laptop and copy both the definition and mapping files over.

I only installed VirtualDJ on my PC to make sure everything integrated correctly with the folders, settings, mappers, database, etc.

I could technically run the tests on my home PC, but since I’d have to set it all up again on the laptop anyway, I think it's much better to do it directly on the laptop, as that’s where I'll always be working with this setup."
 

Hi, I already messaged you on Discord
 

91%