Can I make an effect able to receive Midi?

DSP, Plugin and Host development discussion.
Post Reply New Topic
RELATED
PRODUCTS

Post

Hi all!

Is it possible, that I can make an effect receiving midievents?

Thanx for respond...
Image
FLStudio - 24 Synths - 6 Effects - I am crazy

Post

You'll have to be more descriptive...
There are LOTS of FX that recieve MIDI info.

Are you wanting to make a Vst to do this (i.e. Synthedit)?
Anti-aliasing is for "synthmonk%ys".

Post

I want to write an VST Effect which is able to react on whether a key is pressed or not to start to do something.

And I don't use SynthEdit...
Image
FLStudio - 24 Synths - 6 Effects - I am crazy

Post

Take a look in the VST SDK at the VSTXSynth example. Has everything you need to get going on recieving midi events...

Paul
__________________________
Paul Chana
Senior Software Engineer
FXpansion Audio UK Ltd

Post

Forgot to say that I need to receive the events from a dedicated track...
Image
FLStudio - 24 Synths - 6 Effects - I am crazy

Post

I know the things in VST-SDK. But before I program I need to know if I can put an effect on a track and am able to receive the midievents on that track...

Making an synth i know how to do, but in an effect, is it the same?
Image
FLStudio - 24 Synths - 6 Effects - I am crazy

Post

I think its realy depends on the host...in Tracktion and energyXT you can for sure since I am using effects with Midi there...you probably need to call wantEvents in order to get the Midi events

Post

Fhangor wrote:I know the things in VST-SDK. But before I program I need to know if I can put an effect on a track and am able to receive the midievents on that track...

Making an synth i know how to do, but in an effect, is it the same?
As you might know if you "know the things in VST-SDK", a plugin has no idea about tracks, that being a concept of the program hosting the PlugIn... or not.

In this respect, the plugin works just like a hardware device, which receives MIDI data from the sequencer if and when the sequencer sends them to the MIDI port the synth is connected to. Only that in case of the PlugIn it's a "virtual" MIDI port, not a real one.

So, the answer in this case is - if you need this, you need to look at the host program's capabilities first. The PlugIn only sees MIDI messages coming in (check processEvents() and the attached concepts) and can decide whether to react on them. Everything else, such as whether the PlugIn receives a specific MIDI message or not, is up to the hosting program.

Edit: a quick glance at your profile shows you're from Austria. In that case... bei VST-Problemen kontaktier' mich, ich kenn' mich schon ein wenig aus 8)

Post

Fhangor wrote:I know the things in VST-SDK. But before I program I need to know if I can put an effect on a track and am able to receive the midievents on that track...

Making an synth i know how to do, but in an effect, is it the same?
Of course you will receive MIDI from a "track" anyhow. From what else?

But not from an audio track, of course.
So there the host will provide you with the ability of routing one or more MIDI channels to that plugin...

Be sure to do a call to wantEvents() on resume(), because you wouldn't receive anything in other case.

The declaration of the "cando" properties is the same as on building a usual VSTi. Also the implementation.

And yes, it is dependant from the host application, how it concretely works. There may be differences but the interface is standardized.

.

Post

jackle&hyde wrote: But not from an audio track, of course.
.
It realy depends on the host, in tracktion you can get it from an 'audio track' since all tracks can have both audio and midi...

Post

It really is as simple as adding wantEvents() in resume() and receiveVstMidiEvent in canDo(). If you have that, your effect will show up as a possible MIDI destination, however the host chooses to deal with that.

Of course, you have to do something with the events; for that, you need to have, in addition to process() and processReplacing(), a processEvents() loop. If you add isSynth() to the constructor, presto, you have a VSTi. Not much to it.

Chris Randall
Audio Damage, Inc.
http://www.audiodamage.com

Post Reply

Return to “DSP and Plugin Development”