The last one (AudioEffect::setParameterAutomated()) is the one you need for 
notifying the host that the parameter is actually changing.  Generally you call 
it from your plugin’s setParameter method.  You might need to check if the 
param change came from a UI control (in which case you want to notify the 
host), or not (in which case it came from a control surface or “controls view” 
in the host, and the host should already know about the change).

The other two mentioned (begin/endEdit) are for notifying the host of 
*automation gestures* that come for your UI.  So you would call beginEdit() 
when then user clicks on a knob in your UI, setParameterAutomated() while the 
knob is being dragged around and the param value is changing, and endEdit() 
when they release the mouse.  This ensures that touch automation works properly 
in the host.

Jim

On Dec 8, 2015, at 1:35 PM, Sham Beam <sham.b...@gmail.com> wrote:

> Hi Nuno,
> 
> Take a look at the BeginEdit(), EndEdit() and SetVstParameterAutomated() 
> functions.
> 
> http://www.asseca.org/vst-24-specs/amBeginEdit.html
> http://www.asseca.org/vst-24-specs/amEndEdit.html
> http://www.asseca.org/vst-24-specs/amAutomate.html
> 
> 
> Regards,
> Shannon
> 
> 
> 
> 
> 
> On 12/9/2015 2:29 AM, Nuno Santos wrote:
>> Hi,
>> 
>> This question is about VST plugin development and maybe it got asked before, 
>> but after an hour googling around for VstEvents, VstMidiEvents, 
>> sendVstEventsToHost, etc, I still couldn't find an answer.
>> 
>> I'm trying to notify Ableton Live that a parameter has changed. The device 
>> on Live has the configure button toggled and it's waiting for parameter 
>> input. I was currently trying the following code:
>> 
>> void Vst::init()
>> {
>>     size_t size = sizeof(VstEvents) + sizeof(VstEvent*);
>> 
>>     _events = (VstEvents*)malloc(size);
>>     _events->events[0] = (VstEvent*)std::calloc(1, sizeof(VstMidiEvent));
>>     _events->numEvents=1;
>> 
>>     VstEvent* e = _events->events[0];
>> 
>>     e->type = kVstMidiType;
>>     e->byteSize = sizeof(VstMidiEvent);
>> }
>> 
>> VstInt32 IVst::canDo(const char* feature)
>> {
>>     if (!strcmp(feature, "sendVstEvents")) return 1;
>>     if (!strcmp(feature, "sendVstMidiEvent")) return 1;
>>     if (!strcmp(feature, "receiveVstEvents")) return 1;
>>     if (!strcmp(feature, "receiveVstMidiEvent")) return 1;
>>     if (!strcmp(feature, "midiProgramNames")) return 1;
>> 
>>     return -1;
>> }
>> 
>> void Vst::parameterChanged(int id, float value)
>> {
>>     _events->events[0]->data[0]=0xb0;
>>     _events->events[0]->data[1]=id;
>>     _events->events[0]->data[2]=float*127;
>>     _events->events[0]->data[3]=0;
>> 
>>     sendVstEventsToHost(_events); // the result of this call is true
>> }
>> 
>> But this didn't made the trick.  I am trying VstMidiEvent because the 2.4 
>> headers say kVstParameterType is deprecated. What am I missing?
>> 
>> Thanks in advance,
>> 
>> Regards,
>> 
>> Nuno
>> _______________________________________________
>> dupswapdrop: music-dsp mailing list
>> music-dsp@music.columbia.edu
>> https://lists.columbia.edu/mailman/listinfo/music-dsp
>> 
> 
> 
> -- 
> Sham Beam
> 
> 
> _______________________________________________
> dupswapdrop: music-dsp mailing list
> music-dsp@music.columbia.edu
> https://lists.columbia.edu/mailman/listinfo/music-dsp
> 

_______________________________________________
dupswapdrop: music-dsp mailing list
music-dsp@music.columbia.edu
https://lists.columbia.edu/mailman/listinfo/music-dsp

Reply via email to