Oscdecoder - last value always NIL

Hi there,

Why am I seeing this: When I change a parameter in Live on oscglue plugin, I receive the value fine in vvvv, but when I stop changing the parameter, the received value drops to NIL.

The parameters of the VST plugin are mapped to a MIDI Controller. I attached the v4p file, and here is the config file I use (I removed the comments):

UDPPort = 9997

Name = OSCGlue_ChannelA

SendTimeCode = 1

Volume
Min=0.0
Max=1.0
Default=0.0
Unit=

L_Gain
Min=0.0
Max=1.0
Default=0.0
Unit=

M_Gain
Min=0.0
Max=1.0
Default=0.0
Unit=

H_Gain
Min=0.0
Max=1.0
Default=0.0
Unit=

Clip
Min=-1
Max=100
Default=0
Unit=

Also, does Unit only work as a label in the VST plugin near the value of the parameter, or is there more to it?

Also, can I somehow get integer parameters, or are there only float.

I used H+S and Change nodes, but somehow, very often, the last value is not really seen on the output. Mostly I noticed this when I come to the 1.0 and 0.0 boundaries.

For not many parameters, would you recommend I only use MIDI CCs instead of oscGlue? Is MIDI faster? What if Live is on one machine and vvvv is on another, and I used some app to transfer MIDI over the network? Then there would probably not be a difference anyway, right?

oscdecoder issue.v4p (8.5 kB)

Why am I seeing this: When I change a parameter in Live on oscglue plugin, I receive the value fine in vvvv, but when I stop changing the parameter, the received value drops to NIL.

think about this. if there is no data being currently received, no value will be output. while this seems picky at first sight, it helps finding solutions for the deeper question what happens if there are more than one data packets arriving in one frame. Use Count to check the spread count, and then S+H accordingly. if the count is zero, stay at the old value, if it is one use that one; if its more decide what to do with the other values (probably its safe to discard all but the newest; probably you want to OR them etc.) use one of the Spectral nodes (e.g. OR, Mean) for dealing with multiple values in one frame.

Also, does Unit only work as a label in the VST plugin near the value of the parameter, or is there more to it?

i bet its mostly reporting that values up to the host application. hosts might do different things here.

Also, can I somehow get integer parameters, or are there only float.

iirc. oscglue only sends floats.

I used S+H and Change nodes, but somehow, very often, the last value is not really seen on the output. Mostly I noticed this when I come to the 1.0 and 0.0 boundaries.

this sounds like a consequence of the unanswereed question above. perhaps you are taking only the first slice of a longer spread of messages - discarding newer values.

For not many parameters, would you recommend I only use MIDI CCs instead of oscGlue? Is MIDI faster? What if Live is on one machine and vvvv is on another, and I used some app to transfer MIDI over the network? Then there would probably not be a difference anyway, right?

MIDI is limited to 7 bits; OSC carries double precision floating point values. this usually avoids almost all potential precision issues.

a serial MIDI cable is about 10000 times slower than a gigabit ethernet. and its 1 full cable more.

there would be no difference in performance between an ethernet packet containing MIDI and OSC. even if MIDI could theoretically be transmitted in a tenth of the bytes an OSC message would need, both messages would not fill up an ethernet packet, so i would not assume any noticable performance differences. drivers may vary though.

Thanks!

I’ll try it when I get home from work.

Your explanation about MIDI vs OSC is very good. I think I’ll stick to OSC and don’t worry about speed. One good thing about oscglue is that it already uses the UDP protocol which can be directly used over a network, so there is no need for a second “proxy” application as is the case with MIDI.

yep, that was the reason for writing oscglue :)

I’m still having the problem.

There is never more than one value on the output of oscdecoder. Look in the attachment for details.

I would like to have a memory of the last non-nil value, the same way a MidiController works. It preserves the last value, the last CC message received.
Even though the parameter in ableton is set properly to zero or max, sometimes oscglue does not seem to send that last change, or I don’t seem to receive it in udp or oscdecoder nodes. What could I be doing wrong?

If there is no way to fix this, maybe I can round the value so that 0.0079 is rounded to 0, and 0.9921 to 1.0. How does one do rounding in vvvv? For rounding to two decimal places is this method correct: RoundedValue = Frac(input * 100).IntegerPart / 100?

Also, how to set up two computers: one with Ableton Live and oscglue and a second with vvvv? In Windows’ Firewall I have opened the udp port 9997 on both, but that doesn’t seem to work. Should I open the tcp ports as well? Or maybe I need to specify a target ip address somewhere in oscglue?

no last value problem.zip (191.7 kB)

Connecting two computers via OSC? - solved with one UDP server, Change, and a UDP client targeting the other computer. Essentially a UDP pipe that receives values from oscglue locally and transmits them to a specific IP address.

I LOVE VVVV! :)

udp pipe.jpg (2.4 kB)