vstaudio, vstaudiog

vstaudio — VST audio output.

Syntax

aout1,aout2 vstaudio instance, [ain1, ain2]
aout1,aout2 vstaudiog instance, [ain1, ain2]

Description

vstaudio and vstaudiog are used for sending and receiving audio from a VST plugin.

vstaudio is used within an instrument definition that contains a vstmidiout or vstnote opcode. It outputs audio for only that one instrument. Any audio remaining in the plugin after the end of the note, for example a reverb tail, will be cut off and should be dealt with using a damping envelope.

vstaudiog (vstaudio global) is used in a separate instrument to process audio from any number of VST notes or MIDI events that share the same VST plugin instance (instance). The vstaudiog instrument must be numbered higher than all the instruments receiving notes or MIDI data, and the note controlling the vstplug instrument must have an indefinite duration, or at least a duration as long as the VST plugin is active.

Initialization

instance - the number which identifies the plugin, to be passed to other vst4cs opcodes.

Performance

aout1, aout2 - the audio output received from the plugin.

ain1, ain2 - the audio input sent to the plugin.

Examples

Here is an example of the use of the vstaudio opcode. It uses the file vst4cs.csd.

Example 993. Example of the vstaudio opcode.

See the sections Real-time Audio and Command Line Flags for more information on using command line flags.

<CsoundSynthesizer>
<CsOptions>
; Credits: Adapted by Michael Gogins 
; from code by David Horowitz and Lian Cheung. 
; The "--displays" option is required in order for 
; the Pianoteq GUI to dispatch events and display properly.
-m3 --displays -odac
</CsOptions>
<CsInstruments>
sr     = 44100
ksmps  = 20
nchnls = 2
                ; Load the Pianoteq into memory.
gipianoteq      vstinit         "C:\\Program Files\\Steinberg\\VstPlugins\\Pianoteq 3.0 Trial\\Pianoteq30 Trial.dll", 1
                
                ; Print information about the Pianoteq, such as parameter names and numbers.
                vstinfo         gipianoteq
                
                ; Open the Pianoteq's GUI.
                vstedit         gipianoteq

                ; Send notes from the score to the Pianoteq.
                instr 1 
                ; MIDI channels are numbered starting at 0.
                ; p3 always contains the duration of the note.
                ; p4 contains the MIDI key number (pitch),
                ; p5 contains the MIDI velocity number (loudness),
imidichannel    init            0
                vstnote         gipianoteq, imidichannel, p4, p5, p3
                endin

                ; Send parameter changes to the Pianoteq.
                instr 2 
                ; p4 is the parameter number.
                ; p5 is the parameter value.
                vstparamset     gipianoteq, p4, p5 
                endin

                ; Send audio from the Pianoteq to the output.
                instr 3 
ablankinput     init            0
aleft, aright   vstaudio        gipianoteq, ablankinput, ablankinput
                outs            aleft, aright
                endin

</CsInstruments>
<CsScore>
; Turn on the instrument that receives audio from the Pianoteq indefinitely.
i 3 0 -1
; Send parameter changes to Pianoteq before sending any notes.
; NOTE: All parameters must be between 0.0 and 1.0.
; Length of piano strings:
i 2 0 1 33 0.5
; Hammer noise:
i 2 0 1 25 0.1
; Send a C major 7th arpeggio to the Pianoteq.
i 1 1 10 60 76
i 1 2 10 64 73
i 1 3 10 67 70 
i 1 4 10 71 67
; End the performance, leaving some time 
; for the Pianoteq to finish sending out its audio,
; or for the user to play with the Pianoteq virtual keyboard.
e 20
</CsScore>
</CsoundSynthesizer>


Credits

By: Andrés Cabrera and Michael Gogins

Uses code from Hermann Seib's VSTHost and Thomas Grill's vst~ object.

VST is a trademark of Steinberg Media Technologies GmbH. VST Plug-In Technology by Steinberg.