MidiController - Send specific channels to specified inputs

Hi,

I’m trying to figure out how to take a MidiController node and based on the CC (Controller) input make a decision on which output to modify.

So that if I hit button 2, it will change let’s say the height. But when I hit button 3 I want it to change the width. And then maybe button 4 to change the color.

I’m sure it’s some kind of spread, but basically in programming language I need it to say (if CC channel 2, then provide output path 2. if CC channel 3 then provide output path 3.)

As always, all help is appreciated :)

Well, what you can do is use a Getslice (spreads) for every “decicision” you want/need.

Thanks, but that doesn’t explain very much to me.

Could you be a little more specific or maybe provide an example, like how it might be applied?..

Lets say I have 3 values that I want to change. (A), (B), ©.

(A) should only change when I push CC 1.

(B) should only change when I push CC 2.

© should only change when I push CC 3.

The problem I have now is that when I push CC3 it changes values on all the 3. When I push CC2… same thing - changes all the values…

I need to be able to specify that CC3 only changes value of © and CC 2 only changes value of (B) and so on…

Sorry if I’m not making much sense. This VLP and vvvv is a new programming concept for me.

I’m used to being able to say:

if (CC = 1)
{
then modify int A
} else if (CC = 2)
{
then modify int B
}

etc. etc…

Midi does exactly what you you want to, reading this, I fear you are doing something wrong with spreads, your output should be a spread, and only the slices that correspondent with a certain button on your MIDI controller should change when you use that button/slider/rotary.

And than you simply use a getslice to get the one value for the one button you want to use.

Want to share your patch (stripped down!!) so we can take a look?

Just made a small Demo-Patch showing how you separate your MIDI-Inputs in the single “channels”…

I guess that’s what Westbam meant:

MIDI_controller_demo.v4p (11.3 kB)

Believe it or not, that actually helped me figure out what I needed to do.

I don’t know if it’s logical, but basically I’ve had to use a GetSlice= for every single CC channel and run that output to my desired variable.

It works. But was way tedious…

Question: Is there a way to make rolling values when duplicating/creating a new GetSlice node. For example; when i created all 32 of my GetSlice nodes, I had to go to each node and change the index value 1 by 1 from 1 to 2, 3, 4, 5, 6 and so on… Is there not an easier way to do this?

EDIT: I meant to post this response days ago…

EDIT2: FOASTER - Thanks for the patch demo… You basically confirmed my way of thinking.

There’s certainly exceptions, but as a rule of thumb if you are using the same node again and again there is a better way. Most nodes are spreadable or can be made to be.

In the case of just splitting and joining spreads, be sure to check out unzip and zip. Also binsize versions of the same nodes are very handy- check out their help patch.

Well, the thing is, if you want your 32 values all do something different, (Red, Green, Blue, Rotation, Spreadcount, speed etc… etc…) Than yes, you need to split the output of your midi and send it all to different nodes and pins anyway.

Indeed, I forgot about the Unzip (Value), use herr inspector to change the Output count.

What you can do, is make a Module/Suppatch, with all the Splitting, and use a S (Value) (send) for every pin. It is a bit more work, but than you can just simple make an R (Value) (receive), every time when you want a parameter of the patch being controlled by the MIDI. Like it is done with the LPD8 controller. akai-lpd8-subpatch

Sometimes, when you have, lets say, a group off buttons, that can store presets, than you can do it a bit more easy/faster, using spreads.

Awesome feedback! Thank you guys so much. I will look into the ZIP/UNZIP and how I might apply it properly.

And Westbam - I actually have an akai lpd8 laying around so I might break it out just to learn a bit from the patch. Thank you for that :)

Now I have a question about content creation - The screenshots on the blog page… Like maybe this one specifically reshade

Are those graphics made purely in VVVV? Is VVVV powerful enough to produce commercial grade content like what I see there? Or will I need to do some 3d animation and so on (currently use cinema4d)?

I have about 3 years java experience but it’s from about 8 years ago - so someone suggested processing to me and I quickly see the visual power of this programming language. But the intuitiveness of a VLP like vvvv makes things easier I think.

So my question is how do I get from this badass soundrope ;) to something like you see in the blog? Does it require outside software/effects?..

well, that’s a whole other topic really, but since it’s your thread it’s not really a derailing :)

The screenshots come from hitting ctrl-3 from a vvvv window, so yes they are from vvvv.

As far as digital content creation, it really depends what you are wanting to make and what the use case is. I also use C4d and find it great to be able to import/export meshes between it and vvvv in both directions. I think as vvvv is not really a dedicated modelling app if you need a traditional 3D model you are better off to make it elsewhere.

That said there are also interesting ways to make 3d assets in vvvv, much more so now with some of the new DX11 stuff. Vux who made that screenshot is certainly at the forefront there (he wrote the vvvv dx11 implementation after all).

Also after you have your model & textures, rendering is a big part of making it look pretty of course. Whilst you can’t get the same results in real time as an offline render you can get pretty impressive results. Be sure to have a look at this- really amazing contribution:
mre-multipass-render-engine