1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>VST SDK 2.4: What's new in VST 2.4</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
<ul>
<li><a href="main.html"><span>Main Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li><a href="dirs.html"><span>Directories</span></a></li>
<li><a href="pages.html"><span>Related Pages</span></a></li>
</ul></div>
<h1><a class="anchor" name="whatsnew">What's new in VST 2.4</a></h1><h2><a class="anchor" name="x64">
64 Bit Platform Compatibility</a></h2>
With VST SDK 2.4 you can compile native VST Plug-Ins for 64 Bit Platforms (e.g. Windows XP x64 Edition). The formerly used 'long' data type has been replaced by VstInt32 and VstIntPtr: <ul>
<li>VstInt32 is always 32 bits wide, regardless of the platform compiled for. </li>
<li>VstIntPtr is a generic type, with the same size as a pointer (4 Bytes on a 32 bit OS, 8 Bytes on x64 Systems).</li>
</ul>
<hr>
<h2><a class="anchor" name="doubleprocess">
Double Precision Processing</a></h2>
A new process function has been added to support 64 bit (double precision) floating-point audio samples. Please note that this function is optional, whereas the processReplacing function for 32 bit (single precision) floating-point samples is mandatory! <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="class_audio_effect.html#80c9140762627b5ec314073d0addc300">AudioEffect::canDoubleReplacing</a> <br>
<a class="el" href="class_audio_effect.html#4e3125788d0a3b91ab23595e3da4fe33">AudioEffect::processDoubleReplacing</a> <br>
<a class="el" href="class_audio_effect_x.html#3406179c9a48249a9fd9110757a85386">AudioEffectX::setProcessPrecision</a></dd></dl>
<hr>
<h2><a class="anchor" name="VstMidiEventFlags">
MIDI Events</a></h2>
New enum <a class="el" href="aeffectx_8h.html#d176e54164dc7d8200cf4cdaf2be4533">VstMidiEventFlags</a> for <a class="el" href="struct_vst_midi_event.html#bfff08988aeb7214421ca03f143c4085">VstMidiEvent::flags</a> with value <a class="el" href="aeffectx_8h.html#d176e54164dc7d8200cf4cdaf2be4533b45d5fd60131dfd3250d6b44591946d5">kVstMidiEventIsRealtime</a> which indicates that an event is played live, not from a sequencer track. This allows the Plug-In to handle these flagged events with higher priority, especially when the Plug-In has a high latency (<a class="el" href="struct_a_effect.html#f923ff2dfe0308e9a7abc1dea9ca518d">AEffect::initialDelay</a>).<br>
<br>
Two new methods (getNumMidiInputChannels and getNumMidiOutputChannels) allow the Plug-In to inform the host how many MIDI channels are actually used for input and/or output. In this case the host doesnt need to display all 16 MIDI channels to the user, if the Plug-In uses less than 16. <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="class_audio_effect_x.html#ce3f8bdd29d22f4a41a4f15d300e4fc1">AudioEffectX::getNumMidiInputChannels</a> <br>
<a class="el" href="class_audio_effect_x.html#27f0e30ec9b08d827a29ade416a1a1e6">AudioEffectX::getNumMidiOutputChannels</a></dd></dl>
<hr>
<h2><a class="anchor" name="paramstruct">
VST Parameters Structure</a></h2>
The VST Parameters Structure XML definition provides an easy way to structure parameters of existing VST Plug-Ins hierarchically, without having to recompile the Plug-In binary. The VST SDK package contains a tool to test, extract and embed VSTXML resources.<p>
<dl compact><dt><b>See also:</b></dt><dd><a class="el" href="vstparamstruct.html">VST Parameters Structure</a></dd></dl>
<hr>
<h2><a class="anchor" name="maceditorchanges">
Macintosh Editor Changes</a></h2>
All Plug-Ins built with this SDK must support composited windows on OSX.<p>
<dl compact><dt><b>See also:</b></dt><dd><a class="el" href="maceditor.html">Macintosh Editor as HIViewRef</a></dd></dl>
<hr>
<h2><a class="anchor" name="depfeatures">
Deprecated Features</a></h2>
The VST Protocol is a historically grown technology. In Version 2.4 the API has undergone a general cleanup. Some rarely (or not at all) used features and inconsistent or redundant parts of the protocol have been declared as deprecated. Deprecated opcodes and data structures are still available in the SDK headers, but their names are modified if the VST_FORCE_DEPRECATED compile switch is active (1 by default) - this might cause errors when compiling existing code.<p>
What does it mean? Exisiting (already released) Hosts and Plug-Ins of course remain uninfluenced. If you create a new Plug with VST SDK 2.4 it should work in any existing host as well. However, there are some details that might cause compatibility problems:<p>
<ul>
<li>MIDI Input: New Plugs should implement <a class="el" href="class_audio_effect_x.html#99b2166c339f819d531e9fc6c61fcbb0">AudioEffectX::canDo</a> "receiveVstMidiEvent" to indicate the presence of a MIDI Input, instead of wantEvents. The base class method <a class="el" href="class_audio_effect.html#83eca400d6a8cb044139c5c8e196505b">AudioEffectX::resume</a> can be called for compatibility with old VST hosts (< 2.4). </li>
<li>MIDI Output: implement <a class="el" href="class_audio_effect_x.html#99b2166c339f819d531e9fc6c61fcbb0">AudioEffectX::canDo</a> "sendVstMidiEvent". </li>
<li>Idle Calls outside Editor: AudioEffectX::needIdle and AudioEffectX::fxIdle are not widely supported, thus Plugs can not rely on it. Please create your own timer/background thread if needed. On Windows <b>SetTimer</b> with a callback function could be used (look it up on MSDN), the MacOS X equivalent is <b>InstallEventLoopTimer</b>. </li>
<li>No more accumulating process mode: New Plugs have to implement <a class="el" href="class_audio_effect.html#dc6e2f1db03219622654a36aafd6b391">AudioEffect::processReplacing</a> instead! </li>
<li>The exported '<b>main</b>' function (aka '<b>main_macho</b>' on Mac or '<b>main_plugin</b>') should be named '<b>VSTPluginMain</b>' on all platforms! For downwards compatibility, you can export both.</li>
</ul>
To support VST Plug-Ins <= 2.4 in new Host Applications, you'll have to implement workarounds. In the long run, deprecated features shouldn't be used anymore. Future versions of VST SDK will not contain them at all.<p>
<dl compact><dt><b>See also:</b></dt><dd><a class="el" href="deprecated.html">Deprecated List</a></dd></dl>
<hr>
<h2><a class="anchor" name="othernews">
Other Changes</a></h2>
You might have already noticed some more minor changes in VST SDK 2.4: <ul>
<li>New SDK folder structure </li>
<li>Some files have been renamed (e.g. AudioEffect.hpp -> <a class="el" href="audioeffect_8h.html">audioeffect.h</a>) </li>
<li>MiniHost Example </li>
<li>Updated documentation </li>
<li>VSTGUI 3.0 included </li>
</ul>
<html>
<head>
<title>Empty</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Author" content="mario">
</head>
<body>
<br/>
<hr width="100%" size="2" align="left" />
<div align=left>
Copyright �2006 <a href="http://www.steinberg.net" target="_blank"><u>Steinberg Media Technologies</u></a>.
All Rights Reserved.
</div>
</body>
</html>
|