Files
2026-08-16 18:24:52 +07:00

395 lines
16 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.13.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>VST 3 Examples: VST 3 plug-ins Examples</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="smtg_extra.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">VST 3 Examples<span id="projectnumber">&#160;VST 3.8</span>
</div>
<div id="projectbrief">SDK for developing VST plug-in</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.13.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search',true);
$(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('index.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div><div class="header">
<div class="headertitle"><div class="title">VST 3 plug-ins Examples </div></div>
</div><!--header-->
<div class="contents">
<div class="toc"><h3>Table of Contents</h3>
<ul>
<li class="level1">
<a href="#adelay">ADelay</a>
</li>
<li class="level1">
<a href="#again">AGain</a>
</li>
<li class="level1">
<a href="#channelcontext">TestChannelContext</a>
</li>
<li class="level1">
<a href="#HostChecker">HostChecker</a>
</li>
<li class="level1">
<a href="#legacymidiccout">TestLegacyMIDICCOut</a>
</li>
<li class="level1">
<a href="#mdaplugs">mda Plug-ins</a>
</li>
<li class="level1">
<a href="#NoteExpressionSynth">Note Expression Synth</a>
</li>
<li class="level1">
<a href="#NoteExpressionText">Note Expression Text</a>
</li>
<li class="level1">
<a href="#Panner">Panner</a>
</li>
<li class="level1">
<a href="#PitchNames">PitchNames</a>
</li>
<li class="level1">
<a href="#prefetchablesupport">TestPrefetchableSupport</a>
</li>
<li class="level1">
<a href="#programchange">TestProgramChange</a>
</li>
<li class="level1">
<a href="#syncdelay">Sync Delay</a>
</li>
</ul>
</div>
<div class="textblock"><p>The SDK includes some plug-ins and host implementation examples. </p>
<p>The Legendaries <a class="el" href="#again">AGain</a> and <a class="el" href="#adelay">ADelay</a> ADelay, thanks Paul Kellet the OpenSource mda Plug-ins, a basic <a class="el" href="#NoteExpressionSynth">Note Expression Synth</a> supporting "Note Expression Event" and an example of pitchnames support plug-in (<a class="el" href="#PitchNames">PitchNames</a>) and more.</p>
<p>Note: They use cmake as project generator: cmakeUse <br />
In order to add your own plug-ins check: addownplugs <br />
<br />
</p>
<h1><a class="anchor" id="adelay"></a>
ADelay</h1>
<p>Very simple delay plug-in:</p><ul>
<li>only one parameter (a delay)</li>
</ul>
<p>Check the folder <a href="../../public.sdk/samples/vst/adelay" target="_blank">public.sdk/samples/vst/adelay</a> of the SDK!</p>
<p>Classes:</p><ul>
<li><a class="el" href="classSteinberg_1_1Vst_1_1ADelayProcessor.html">ADelayProcessor</a></li>
<li><a class="el" href="classSteinberg_1_1Vst_1_1ADelayController.html">ADelayController</a> <br />
<br />
</li>
</ul>
<h1><a class="anchor" id="again"></a>
AGain</h1>
<p>The SDK includes a AGain plug-in which is a very simple <b>VST 3 plug-in</b>. This Plug-in:</p><ul>
<li>is multichannel compatible</li>
<li>supports bypass processing</li>
<li>has an automated gain parameter</li>
<li>has an Event input bus (allowing to use noteOn velocity to control the gain factor)</li>
<li>has a VU peak meter</li>
<li>uses the VSTGUI4 library</li>
<li>a version of this plug-in with side-chaining is available (showing a plug-in using the same controller and different components)</li>
<li>a AAX version is available</li>
<li>a AUv3 version is available <div class="image">
<img src="again.jpg" alt=""/>
</div>
</li>
</ul>
<p>Check the folder <a href="../../public.sdk/samples/vst/again" target="_blank">public.sdk/samples/vst/again</a> of the SDK!</p>
<p>Classes:</p><ul>
<li><a class="el" href="classSteinberg_1_1Vst_1_1AGain.html">AGain</a></li>
<li><a class="el" href="classSteinberg_1_1Vst_1_1AGainWithSideChain.html">AGainWithSideChain</a> (used for side-chain version)</li>
<li><a class="el" href="classSteinberg_1_1Vst_1_1AGainController.html">AGainController</a> <br />
<br />
</li>
</ul>
<h1><a class="anchor" id="channelcontext"></a>
TestChannelContext</h1>
<p>Very simple plug-in:</p><ul>
<li>showing how to use the <a class="elRef" href="../vstinterfaces/classSteinberg_1_1Vst_1_1ChannelContext_1_1IInfoListener.html">IInfoListener</a> interface</li>
<li>using a generic UI</li>
</ul>
<div class="image">
<img src="channelcontext.jpg" alt=""/>
</div>
<p>Check the folder <a href="../../public.sdk/samples/vst/channelcontext" target="_blank">public.sdk/samples/vst/channelcontext</a> of the SDK! <br />
<br />
</p>
<h1><a class="anchor" id="HostChecker"></a>
HostChecker</h1>
<ul>
<li>Instrument, Panner and Fx plug-in checking the VST 3 support of a host.</li>
<li>a AAX version is available</li>
</ul>
<div class="image">
<img src="hostchecker.jpg" alt=""/>
</div>
<p>Check the folder <a href="../../public.sdk/samples/vst/hostchecker" target="_blank">public.sdk/samples/vst/hostchecker</a> of the SDK! <br />
<br />
</p>
<h1><a class="anchor" id="legacymidiccout"></a>
TestLegacyMIDICCOut</h1>
<p>Very simple plug-in:</p><ul>
<li>showing how to use LegacyMIDICCOutEvent which allow to generate MIDI CC as output event</li>
<li>VST parameters change which create LegacyMIDICCOutEvent Event</li>
</ul>
<div class="image">
<img src="legacymidiccout.jpg" alt=""/>
</div>
<p>Check the folder <a href="../../public.sdk/samples/vst/legacymidiccout" target="_blank">public.sdk/samples/vst/legacymidiccout</a> of the SDK!</p>
<p>Classes:</p><ul>
<li><a class="el" href="classSteinberg_1_1Vst_1_1LegacyMIDICCOut_1_1Plug.html">LegacyMIDICCOut::Plug</a> <br />
<br />
</li>
</ul>
<h1><a class="anchor" id="mdaplugs"></a>
mda Plug-ins</h1>
<ul>
<li>Effects (stereo to stereo plug-ins):<ul>
<li>Ambience : Reverb</li>
<li>Bandisto : Multi-band Distortion</li>
<li>BeatBox : Drum Replacer</li>
<li>Combo : Amp and Speaker Simulator</li>
<li>DeEsser : High frequency Dynamics Processor</li>
<li>Degrade : Sample quality reduction</li>
<li>Delay : Simple stereo delay with feedback tone control</li>
<li>Detune : Simple up/down pitch shifting thickener</li>
<li>Dither : Range of dither types including noise shaping</li>
<li>DubDelay : Delay with feedback saturation and time/pitch modulation</li>
<li>Dynamics : Compressor / Limiter / Gate</li>
<li>Image : Stereo image adjustment and M-S matrix</li>
<li>Leslie : Rotary speaker simulator</li>
<li>Limiter : Opto-electronic style limiter</li>
<li>Loudness : Equal loudness contours for bass EQ and mix correction</li>
<li>MultiBand : Multi-band compressor with M-S processing modes</li>
<li>Overdrive : Soft distortion</li>
<li>RePsycho! : Drum loop pitch changer</li>
<li>RezFilter : Resonant filter with LFO and envelope follower</li>
<li>RingMod : Simple Ring Modulator</li>
<li>Round Panner: 3D panner</li>
<li>Shepard : Continuously rising/falling tone generator</li>
<li>SpecMeter : Stereo 13 Bands spectral Meter</li>
<li>Splitter : Frequency / level crossover for setting up dynamic processing</li>
<li>Stereo Simulator: Haas delay and comb filtering</li>
<li>Sub-Bass Synthesizer: Several low frequency enhancement methods</li>
<li>TalkBox : High resolution vocoder</li>
<li>TestTone : Signal generator with pink and white noise, impulses and sweeps</li>
<li>Thru-Zero Flanger : Classic tape-flanging simulation</li>
<li>Tracker : Pitch tracking oscillator, or pitch tracking EQ</li>
</ul>
</li>
<li>Instruments (1 Event input, 1 stereo Audio output):<ul>
<li>DX10 : Sounds similar to the later Yamaha DX synths including the heavy bass but with a warmer, cleaner tone.</li>
<li>EPiano : Simple EPiano</li>
<li>JX10 : The plug-in is designed for high quality (lower aliasing than most soft synths) and low processor usage</li>
<li>Piano : Not designed to be the best sounding piano in the world, but boasts extremely low CPU and memory usage.</li>
</ul>
</li>
</ul>
<p>Based on the OpenSource mda plug-ins (<a href="http://mda.smartelectronix.com/">http://mda.smartelectronix.com/</a>), this set of plug-ins demonstrates how wrap DSP code in a VST 3 plug-in.</p>
<p>Check the folder <a href="../../public.sdk/samples/vst/mda-vst3" target="_blank">public.sdk/samples/vst/mda-vst3</a> of the SDK!</p>
<p>Classes:</p><ul>
<li><a class="el" href="namespaceSteinberg_1_1Vst_1_1mda.html#aa0936cf0a422e298f98238f76edfcc44">BaseProcessor</a></li>
<li><a class="el" href="classSteinberg_1_1Vst_1_1mda_1_1BaseController.html">BaseController</a></li>
<li><a class="el" href="classSteinberg_1_1Vst_1_1mda_1_1BaseParameter.html">BaseParameter</a> <br />
<br />
</li>
</ul>
<h1><a class="anchor" id="NoteExpressionSynth"></a>
Note Expression Synth</h1>
<ul>
<li>Instrument plug-in supporting note expression events</li>
<li>It shows how easy it is to use vstgui4</li>
<li>a AUv3 version is available</li>
</ul>
<div class="image">
<img src="note_expression_synth.jpg" alt=""/>
</div>
<p>Check the folder <a href="../../public.sdk/samples/vst/note_expression_synth" target="_blank">public.sdk/samples/vst/note_expression_synth</a> of the SDK!</p>
<p>Classes:</p><ul>
<li><a class="el" href="classSteinberg_1_1Vst_1_1NoteExpressionSynth_1_1Processor.html">NoteExpressionSynth::Processor</a></li>
<li><a class="el" href="classSteinberg_1_1Vst_1_1NoteExpressionSynth_1_1Controller.html">NoteExpressionSynth::Controller</a></li>
<li><a class="el" href="classSteinberg_1_1Vst_1_1NoteExpressionSynth_1_1Voice.html">NoteExpressionSynth::Voice</a> <br />
<br />
</li>
</ul>
<h1><a class="anchor" id="NoteExpressionText"></a>
Note Expression Text</h1>
<ul>
<li>Plug-in visualizing the NoteExpression as Text</li>
<li>It shows how easy it is to use vstgui4</li>
</ul>
<p>Check the folder <a href="../../public.sdk/samples/vst/note_expression_text" target="_blank">public.sdk/samples/vst/note_expression_text</a> of the SDK!</p>
<p><br />
<br />
</p>
<h1><a class="anchor" id="Panner"></a>
Panner</h1>
<ul>
<li>Simple panner plug-in showing how to support Panner category (mono to Stereo)</li>
<li>It shows how easy it is to use vstgui4</li>
</ul>
<div class="image">
<img src="panner.jpg" alt=""/>
</div>
<p>Check the folder <a href="../../public.sdk/samples/vst/panner" target="_blank">public.sdk/samples/vst/panner</a> of the SDK!</p>
<p>Classes:</p><ul>
<li>PlugController</li>
<li>PlugProcessor <br />
<br />
</li>
</ul>
<h1><a class="anchor" id="PitchNames"></a>
PitchNames</h1>
<ul>
<li>Instrument plug-in showing PitchNames support</li>
<li>It shows how easy it is to use vstgui4</li>
</ul>
<div class="image">
<img src="pitchname.jpg" alt=""/>
</div>
<p>Check the folder <a href="../../public.sdk/samples/vst/pitchnames" target="_blank">public.sdk/samples/vst/pitchnames</a> of the SDK!</p>
<p>Classes:</p><ul>
<li><a class="el" href="classSteinberg_1_1Vst_1_1PitchNamesController.html">PitchNamesController</a></li>
<li><a class="el" href="classSteinberg_1_1Vst_1_1PitchNamesProcessor.html">PitchNamesProcessor</a></li>
<li><a class="el" href="classVSTGUI_1_1PitchNamesDataBrowserSource.html">PitchNamesDataBrowserSource</a> <br />
<br />
</li>
</ul>
<h1><a class="anchor" id="prefetchablesupport"></a>
TestPrefetchableSupport</h1>
<p>Very simple plug-in:</p><ul>
<li>showing how to use the <a class="elRef" href="../vstinterfaces/classSteinberg_1_1Vst_1_1IPrefetchableSupport.html">IPrefetchableSupport</a> interface</li>
<li>using a generic UI</li>
</ul>
<div class="image">
<img src="prefetchablesupport.jpg" alt=""/>
</div>
<p>Check the folder <a href="../../public.sdk/samples/vst/prefetchablesupport" target="_blank">public.sdk/samples/vst/prefetchablesupport</a> of the SDK! <br />
<br />
</p>
<h1><a class="anchor" id="programchange"></a>
TestProgramChange</h1>
<p>Very simple plug-in:</p><ul>
<li>showing how to support Program List</li>
<li>using a generic UI</li>
</ul>
<div class="image">
<img src="programchange.jpg" alt=""/>
</div>
<p>Check the folder <a href="../../public.sdk/samples/vst/programchange" target="_blank">public.sdk/samples/vst/programchange</a> of the SDK! <br />
<br />
</p>
<h1><a class="anchor" id="syncdelay"></a>
Sync Delay</h1>
<p>Very simple delay plug-in:</p><ul>
<li>showing how to support IProcessContextRequirements</li>
</ul>
<p>Check the folder <a href="../../public.sdk/samples/vst/syncdelay" target="_blank">public.sdk/samples/vst/syncdelay</a> of the SDK! <br />
</p>
</div></div><!-- PageDoc -->
<a href="doxygen_crawl.html"></a>
</div><!-- contents -->
</div><!-- doc-content -->
<html>
<head>
<title>Empty</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Author" content="Steinberg">
</head>
<body>
<br/>
<hr width="100%" size="2" align="left" />
<div align=right>
Copyright &copy;<span id="year"></span> <a href="http://www.steinberg.net" target="_blank"><u>Steinberg Media Technologies GmbH</u></a>.
All Rights Reserved. This documentation is under this <a href="http://www.steinberg.net/sdklicenses" target="_blank"><u>license</u></a>.
</div>
<script>
document.querySelector("#year").textContent = new Date().getFullYear();
</script>
</body>
</html>