Quick Sign In:  

Forum: General Discussion

Topic: Midi Program Change and/or Control Change in POI. Is this possible?
Hello peeps!

I looking for a workaround to change the program number in a midi effect device. This is called 'Program Change' in midi language. Anyone achieved this by a POI?
 

Posted Fri 29 Oct 21 @ 10:48 pm
NicotuxHome userMember since 2014
 

Posted Sat 30 Oct 21 @ 12:30 am
Nicotux wrote :
in a midi effect device ? YES

You'll need to define device and mapper if not already supported by VDJ

Same as in this topic, just change device "Teensy_4_0" and apply to yours
http://www.virtualdj.com/forums/243882/VirtualDJ_Technical_Support/Building_a_custom_effect_controller_using_USB_MIDI_and_the_Teensy_4_0.html


Cool!! So happy that's it's possible. The Midi device itself apears in the list. It's effect unit and was able to send midi clock. But if presets could be called from out of songs would be ideal. :)

I guess you first have to define the midi device in the POI, followed up by a specific code? Anyway, going to invest some time in this.. would be awesome to get this working. :-)
 

Posted Sat 30 Oct 21 @ 8:45 am
I'm afraid this is going to be difficult for me. But some backgroud on where I am now.

In VDJ I select a POI for a track.
In "Type" I select "Action"
In the "Macro Action" tab I can select "controller_mapping" and "Assign Controller" in the category "Controllers", I guess I need to assign a controller, where as in this case it's an Midi device that should receive the PC (program change) command?
For the actual program change command, I can check this in Midi OX, an app I use very often to look into midi commands.. but It should contain the midi channel.. and the command PC#. The question is how I'm going include all this date in one aciton?? :D
 

Posted Sat 30 Oct 21 @ 10:25 am
What you should do is completely different.

In a nutshell:
1) You need to create a device definition for the given effect. That step is mandatory if you want to SEND data from VirtualDJ to the effect
2) Once you create a definition you will need to create a mapper for it. On the mapper you will bind the "LED_" elements that you have defined previously (that's what sends data from VirtualDJ to the effect) to some variables.
3) On the action POI you will just set / toggle the variable that's responsible for sending out data.

Take a good reading at this thread:
https://www.virtualdj.com/forums/218737/VirtualDJ_Plugins/The_Advanced_Freestyler_integration_thread.html
This thread uses all of the above techniques to control Freestyler via a Virtual (software) MIDI port.
If you download the addons you will even find the virtual device definition and it's mapper ready.
Therefore you can use them as an example to create your own.
The code that's listed on the above thread for buttons is similar to what you should use on your action POI's as well.
So, take a good look and reading, and feel free to ask again if you have any more questions.
 

Posted Sat 30 Oct 21 @ 1:05 pm
PhantomDeejay wrote :
What you should do is completely different.

In a nutshell:
1) You need to create a device definition for the given effect. That step is mandatory if you want to SEND data from VirtualDJ to the effect
2) Once you create a definition you will need to create a mapper for it. On the mapper you will bind the "LED_" elements that you have defined previously (that's what sends data from VirtualDJ to the effect) to some variables.
3) On the action POI you will just set / toggle the variable that's responsible for sending out data.

Take a good reading at this thread:
https://www.virtualdj.com/forums/218737/VirtualDJ_Plugins/The_Advanced_Freestyler_integration_thread.html
This thread uses all of the above techniques to control Freestyler via a Virtual (software) MIDI port.
If you download the addons you will even find the virtual device definition and it's mapper ready.
Therefore you can use them as an example to create your own.
The code that's listed on the above thread for buttons is similar to what you should use on your action POI's as well.
So, take a good look and reading, and feel free to ask again if you have any more questions.


Thank you for the insight!

The device definition is something you download as an extension right? I'm afraid this level of programming is way beyond my knowledge. Once I tried to understand a piece of script (extension) LocoDog sent me.. It worked just fine but no chance to wrap my head around it...

The second step. Creating a mapper. I did that a few times.. I managed to route some buttons and make them control the decks, add tracks into a playlist, route some scroll buttons, the basic stuff.. But this was midi into Virtual DJ. Midi out?? I don't have any clue.

I just did a test and sended some program change commands to the VoiceLive Touch 2 (the effect unit). And while capturing it in MIDI-OX it looks like the picture below.
Data 1 is the actual program number. Data 2 is an optional bank number.

Hopefully you can give me some more hints on how to make this work. I don't understand what you mean with " On the mapper you will bind the "LED_" elements" Are we on the same page?? Hopefully this is not about DMX??
But being able to send Program Change to a musical instrument or effect processor would be a very useful future for musicians who run VDJ to play their backing tracks. I use tempo delays all the time on my saxophone and have too many programs already..

(oh.. don't mind the program names.. these are the General Midi standard instrument names in sound modules

 

Posted Sat 30 Oct 21 @ 8:12 pm
MacGyverGear wrote :

Hopefully you can give me some more hints on how to make this work. I don't understand what you mean with " On the mapper you will bind the "LED_" elements" Are we on the same page?? Hopefully this is not about DMX??


I believe this post on the definition file will be helpful. Found it in another thread regarding a similar topic: http://www.virtualdj.com/wiki/ControllerDefinitionMIDIv8.html

PhantomDeejay wrote :

1) You define your controller as a MIDI device in VirtualDj http://www.virtualdj.com/wiki/ControllerDefinitionMIDIv8.html
When you define the midi notes you want to send out you define them as leds.
2) You create a mapper for the above device where each "LED" is bind to a variable
3) You use POI's in order to control the variables and therefore to control the status of the "LEDS" which by turn control the midi notes send out by VirtualDj on your controller.

PS: All these can be achieved only with a "PRO" license for VirtualDj 8.


To my understanding (correct me if I'm wrong) DJ controllers will often receive MIDI messages from DJ software in order to sync the controller's LEDs with the functions of the software.

This is how, for example, people program LED light shows for the Novation Launchpad using Ableton to launch MIDI clips, sent to the launchpad, like this: https://youtu.be/_zRzQkeUPQA

So the POI Editor lets us schedule cues for these controller LEDs. In this regard, we can set up a MIDI device, or a virtual MIDI device, and send MIDI messages to it by tricking VDJ into thinking we're just triggering LEDs on our imaginary controller.

I think. I could be wrong. Need to look into this more.
 

Posted Sun 09 Jan 22 @ 1:08 am