Extra "ports" of juce-based plugins using the distrho build system
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

793 lines
22KB

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  3. <html>
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
  5. <head>
  6. <title>protoplug: Module plugin</title>
  7. <link rel="stylesheet" href="../ldoc.css" type="text/css" />
  8. </head>
  9. <body>
  10. <div id="container">
  11. <div id="product">
  12. <div id="product_logo"></div>
  13. <div id="product_name"><big><b></b></big></div>
  14. <div id="product_description"></div>
  15. </div> <!-- id="product" -->
  16. <div id="main">
  17. <!-- Menu -->
  18. <div id="navigation">
  19. <a href="http://osar.fr">
  20. <div class=osarlogo> </div>
  21. </a>
  22. <br/>
  23. <a href="http://osar.fr/protoplug">
  24. <h1>protoplug</h1>
  25. </a>
  26. <span class="proto_subtitle">Lua API reference</span>
  27. <ul>
  28. <li><a href="../index.html">Index</a></li>
  29. </ul>
  30. <h2>Contents</h2>
  31. <ul>
  32. <li><a href="#Callback_functions">Callback functions </a></li>
  33. <li><a href="#Override_functions">Override functions </a></li>
  34. <li><a href="#Class_plugin_PositionInfo">Class plugin.PositionInfo </a></li>
  35. </ul>
  36. <h2>Modules</h2>
  37. <ul class="$(kind=='Topics' and '' or 'nowrap'">
  38. <li><strong>plugin</strong></li>
  39. <li><a href="../modules/script.html">script</a></li>
  40. <li><a href="../modules/midi.html">midi</a></li>
  41. <li><a href="../modules/gui.html">gui</a></li>
  42. <li><a href="../modules/polyGen.html">polyGen</a></li>
  43. <li><a href="../modules/stereoFx.html">stereoFx</a></li>
  44. </ul>
  45. <h2>Classes</h2>
  46. <ul class="$(kind=='Topics' and '' or 'nowrap'">
  47. <li><a href="../classes/juce.AffineTransform.html">juce.AffineTransform</a></li>
  48. <li><a href="../classes/juce.AudioFormatReader.html">juce.AudioFormatReader</a></li>
  49. <li><a href="../classes/juce.Colour.html">juce.Colour</a></li>
  50. <li><a href="../classes/juce.ColourGradient.html">juce.ColourGradient</a></li>
  51. <li><a href="../classes/juce.Component.html">juce.Component</a></li>
  52. <li><a href="../classes/juce.FillType.html">juce.FillType</a></li>
  53. <li><a href="../classes/juce.Font.html">juce.Font</a></li>
  54. <li><a href="../classes/juce.Graphics.html">juce.Graphics</a></li>
  55. <li><a href="../classes/juce.Image.html">juce.Image</a></li>
  56. <li><a href="../classes/juce.Justification.html">juce.Justification</a></li>
  57. <li><a href="../classes/juce.LagrangeInterpolator.html">juce.LagrangeInterpolator</a></li>
  58. <li><a href="../classes/juce.Line.html">juce.Line</a></li>
  59. <li><a href="../classes/juce.Path.html">juce.Path</a></li>
  60. <li><a href="../classes/juce.Point.html">juce.Point</a></li>
  61. <li><a href="../classes/juce.RectanglePlacement.html">juce.RectanglePlacement</a></li>
  62. <li><a href="../classes/juce.Rectangle_float.html">juce.Rectangle_float</a></li>
  63. <li><a href="../classes/juce.Rectangle_int.html">juce.Rectangle_int</a></li>
  64. </ul>
  65. <h2>Examples</h2>
  66. <ul class="$(kind=='Topics' and '' or 'nowrap'">
  67. <li><a href="../examples/classic-filter.lua.html">classic-filter.lua</a></li>
  68. <li><a href="../examples/sine-organ.lua.html">sine-organ.lua</a></li>
  69. <li><a href="../examples/midi-chordify.lua.html">midi-chordify.lua</a></li>
  70. <li><a href="../examples/sinemouse-demo.lua.html">sinemouse-demo.lua</a></li>
  71. <li><a href="../examples/soundfile-test.lua.html">soundfile-test.lua</a></li>
  72. </ul>
  73. </div>
  74. <div id="content">
  75. <h1>Module <code>plugin</code></h1>
  76. <p>Use <a href="../modules/plugin.html#">plugin</a> to define the AU/VST audio plugin's behaviour.</p>
  77. <p>
  78. <p> The <a href="../modules/plugin.html#">plugin</a> global is available to every protoplug script after including the
  79. main protoplug header :</p>
  80. <pre><code>require "include/protoplug"
  81. </code></pre>
  82. </p>
  83. <h2><a href="#Callback_functions">Callback functions </a></h2>
  84. <table class="function_list">
  85. <tr>
  86. <td class="name" nowrap><a href="#manageParams"><span class="proto_prefix">plugin</span>.manageParams (paramList)</a></td>
  87. <td class="summary">Automatically set up a list of parameters.</td>
  88. </tr>
  89. <tr>
  90. <td class="name" nowrap><a href="#setParameter"><span class="proto_prefix">plugin</span>.setParameter (index, value)</a></td>
  91. <td class="summary">Set (automate) a parameter's value.</td>
  92. </tr>
  93. <tr>
  94. <td class="name" nowrap><a href="#getParameter"><span class="proto_prefix">plugin</span>.getParameter (index)</a></td>
  95. <td class="summary">Get a parameter's value.</td>
  96. </tr>
  97. <tr>
  98. <td class="name" nowrap><a href="#getCurrentPosition"><span class="proto_prefix">plugin</span>.getCurrentPosition ()</a></td>
  99. <td class="summary">Get host position info, if available.</td>
  100. </tr>
  101. <tr>
  102. <td class="name" nowrap><a href="#getSampleRate"><span class="proto_prefix">plugin</span>.getSampleRate ()</a></td>
  103. <td class="summary">Get host samplerate.</td>
  104. </tr>
  105. <tr>
  106. <td class="name" nowrap><a href="#isSampleRateKnown"><span class="proto_prefix">plugin</span>.isSampleRateKnown ()</a></td>
  107. <td class="summary">Check if the samplerate is known.</td>
  108. </tr>
  109. <tr>
  110. <td class="name" nowrap><a href="#addHandler"><span class="proto_prefix">plugin</span>.addHandler (event, handler)</a></td>
  111. <td class="summary">Add a handler for a VST/AU event.</td>
  112. </tr>
  113. </table>
  114. <h2><a href="#Override_functions">Override functions </a></h2>
  115. <table class="function_list">
  116. <tr>
  117. <td class="name" nowrap><a href="#processBlock"><span class="proto_prefix">plugin</span>.processBlock (samples, smax, midiBuf)</a></td>
  118. <td class="summary">Process Audio Block.</td>
  119. </tr>
  120. <tr>
  121. <td class="name" nowrap><a href="#getParameterName"><span class="proto_prefix">plugin</span>.getParameterName (index)</a></td>
  122. <td class="summary">Return the name of a parameter.</td>
  123. </tr>
  124. <tr>
  125. <td class="name" nowrap><a href="#getParameterText"><span class="proto_prefix">plugin</span>.getParameterText (index)</a></td>
  126. <td class="summary">Return the representation of a parameter's value.</td>
  127. </tr>
  128. <tr>
  129. <td class="name" nowrap><a href="#paramChanged"><span class="proto_prefix">plugin</span>.paramChanged (index)</a></td>
  130. <td class="summary">Handle parameter changes.</td>
  131. </tr>
  132. <tr>
  133. <td class="name" nowrap><a href="#getTailLengthSeconds"><span class="proto_prefix">plugin</span>.getTailLengthSeconds ()</a></td>
  134. <td class="summary">Return the tail length in seconds (effects only).</td>
  135. </tr>
  136. </table>
  137. <h2><a href="#Class_plugin_PositionInfo">Class plugin.PositionInfo </a></h2>
  138. <table class="function_list">
  139. <tr>
  140. <td class="name" nowrap><a href="#PositionInfo.bpm"><span class="proto_prefix">plugin.PositionInfo</span>.bpm</a></td>
  141. <td class="summary">Host tempo (beats per minute)</td>
  142. </tr>
  143. <tr>
  144. <td class="name" nowrap><a href="#PositionInfo.timeSigNumerator"><span class="proto_prefix">plugin.PositionInfo</span>.timeSigNumerator</a></td>
  145. <td class="summary">Time signature numerator ie.</td>
  146. </tr>
  147. <tr>
  148. <td class="name" nowrap><a href="#PositionInfo.timeSigDenominator"><span class="proto_prefix">plugin.PositionInfo</span>.timeSigDenominator</a></td>
  149. <td class="summary">Time signature denominator ie.</td>
  150. </tr>
  151. <tr>
  152. <td class="name" nowrap><a href="#PositionInfo.timeInSamples"><span class="proto_prefix">plugin.PositionInfo</span>.timeInSamples</a></td>
  153. <td class="summary">Current position on the host's timeline (samples)</td>
  154. </tr>
  155. <tr>
  156. <td class="name" nowrap><a href="#PositionInfo.timeInSeconds"><span class="proto_prefix">plugin.PositionInfo</span>.timeInSeconds</a></td>
  157. <td class="summary">Current position on the host's timeline (seconds)</td>
  158. </tr>
  159. <tr>
  160. <td class="name" nowrap><a href="#PositionInfo.editOriginTime"><span class="proto_prefix">plugin.PositionInfo</span>.editOriginTime</a></td>
  161. <td class="summary">Position of the start of the edit region on the host's timeline</td>
  162. </tr>
  163. <tr>
  164. <td class="name" nowrap><a href="#PositionInfo.ppqPosition"><span class="proto_prefix">plugin.PositionInfo</span>.ppqPosition</a></td>
  165. <td class="summary">Current position on the host's timeline (pulses-per-quarter-note)</td>
  166. </tr>
  167. <tr>
  168. <td class="name" nowrap><a href="#PositionInfo.ppqPositionOfLastBarStart"><span class="proto_prefix">plugin.PositionInfo</span>.ppqPositionOfLastBarStart</a></td>
  169. <td class="summary">Position of the last bar start (pulses-per-quarter-note).</td>
  170. </tr>
  171. <tr>
  172. <td class="name" nowrap><a href="#PositionInfo.frameRate"><span class="proto_prefix">plugin.PositionInfo</span>.frameRate</a></td>
  173. <td class="summary">Video frame rate</td>
  174. </tr>
  175. <tr>
  176. <td class="name" nowrap><a href="#PositionInfo.isPlaying"><span class="proto_prefix">plugin.PositionInfo</span>.isPlaying</a></td>
  177. <td class="summary">Is playing</td>
  178. </tr>
  179. <tr>
  180. <td class="name" nowrap><a href="#PositionInfo.isRecording"><span class="proto_prefix">plugin.PositionInfo</span>.isRecording</a></td>
  181. <td class="summary">Is recording</td>
  182. </tr>
  183. <tr>
  184. <td class="name" nowrap><a href="#PositionInfo.ppqLoopStart"><span class="proto_prefix">plugin.PositionInfo</span>.ppqLoopStart</a></td>
  185. <td class="summary">Position of the loop start (pulses-per-quarter-note).</td>
  186. </tr>
  187. <tr>
  188. <td class="name" nowrap><a href="#PositionInfo.ppqLoopEnd"><span class="proto_prefix">plugin.PositionInfo</span>.ppqLoopEnd</a></td>
  189. <td class="summary">Position of the loop end (pulses-per-quarter-note).</td>
  190. </tr>
  191. <tr>
  192. <td class="name" nowrap><a href="#PositionInfo.isLooping"><span class="proto_prefix">plugin.PositionInfo</span>.isLooping</a></td>
  193. <td class="summary">Is looping</td>
  194. </tr>
  195. </table>
  196. <br/>
  197. <br/>
  198. <h2><a name="Callback_functions"></a>Callback functions </h2>
  199. Functions that your script can call.
  200. <br><br>
  201. <dl class="function">
  202. <dt>
  203. <a name = "manageParams"></a>
  204. <strong><span class="proto_prefix">plugin</span>.manageParams (paramList)</strong>
  205. </dt>
  206. <dd>
  207. Automatically set up a list of parameters.
  208. Call this function with a table containing parameter definitions as argument, and
  209. it will perform the repetitive task of defining all the parameter-related overrides.</p>
  210. <p> The format of the parameter list is demonstrated in <a href="../examples/classic-filter.lua.html#">classic-filter.lua</a>
  211. </ul>
  212. <h3>Parameters:</h3>
  213. <ul>
  214. <li><span class="parameter">paramList</span>
  215. a table with parameter definitions (see example)
  216. </li>
  217. </ul>
  218. </dd>
  219. <dt>
  220. <a name = "setParameter"></a>
  221. <strong><span class="proto_prefix">plugin</span>.setParameter (index, value)</strong>
  222. </dt>
  223. <dd>
  224. Set (automate) a parameter's value.
  225. The value must be normalized to be between 0 and 1.
  226. </ul>
  227. <h3>Parameters:</h3>
  228. <ul>
  229. <li><span class="parameter">index</span>
  230. parameter index (0-126)
  231. </li>
  232. <li><span class="parameter">value</span>
  233. parameter value (0-1)
  234. </li>
  235. </ul>
  236. </dd>
  237. <dt>
  238. <a name = "getParameter"></a>
  239. <strong><span class="proto_prefix">plugin</span>.getParameter (index)</strong>
  240. </dt>
  241. <dd>
  242. Get a parameter's value.
  243. The values are between 0 and 1, but different minimums and maximums can
  244. be easily simulated using <a href="../modules/plugin.html#manageParams">plugin.manageParams</a>.
  245. </ul>
  246. <h3>Parameters:</h3>
  247. <ul>
  248. <li><span class="parameter">index</span>
  249. parameter index (0-126)
  250. </li>
  251. </ul>
  252. </dd>
  253. <dt>
  254. <a name = "getCurrentPosition"></a>
  255. <strong><span class="proto_prefix">plugin</span>.getCurrentPosition ()</strong>
  256. </dt>
  257. <dd>
  258. Get host position info, if available.
  259. Only call this from within <a href="../modules/plugin.html#processBlock">processBlock</a>.
  260. </ul>
  261. <h3>Returns:</h3>
  262. <ol>
  263. <span class="types"><a class="type" href="../modules/plugin.html#plugin.PositionInfo">plugin.PositionInfo</a></span>
  264. current position info, or <code>nil</code> depending on the host.
  265. </ol>
  266. </dd>
  267. <dt>
  268. <a name = "getSampleRate"></a>
  269. <strong><span class="proto_prefix">plugin</span>.getSampleRate ()</strong>
  270. </dt>
  271. <dd>
  272. Get host samplerate.
  273. The value is unknown until the plugin <code>prepareToPlay</code> event has been emitted.
  274. The value is always known in <a href="../modules/plugin.html#processBlock">processBlock</a>. An error is caused if an
  275. attempt is made to access the sample rate prematurely.
  276. </ul>
  277. <h3>Returns:</h3>
  278. <ol>
  279. current samplerate.
  280. </ol>
  281. <h3>See also:</h3>
  282. <ul>
  283. <a href="../modules/plugin.html#addHandler">plugin.addHandler</a>
  284. </ul>
  285. </dd>
  286. <dt>
  287. <a name = "isSampleRateKnown"></a>
  288. <strong><span class="proto_prefix">plugin</span>.isSampleRateKnown ()</strong>
  289. </dt>
  290. <dd>
  291. Check if the samplerate is known.
  292. </ul>
  293. <h3>Returns:</h3>
  294. <ol>
  295. <span class="types"><span class="type">boolean</span></span>
  296. </ol>
  297. </dd>
  298. <dt>
  299. <a name = "addHandler"></a>
  300. <strong><span class="proto_prefix">plugin</span>.addHandler (event, handler)</strong>
  301. </dt>
  302. <dd>
  303. <p>Add a handler for a VST/AU event.
  304. The following events are available :</p>
  305. <ul>
  306. <li><code>"prepareToPlay"</code> - Emitted before the first call to <a href="../modules/plugin.html#processBlock">processBlock</a>, when the samplerate is known.</li>
  307. </ul>
  308. </ul>
  309. <h3>Parameters:</h3>
  310. <ul>
  311. <li><span class="parameter">event</span>
  312. <span class="types"><a class="type" href="http://www.lua.org/manual/5.1/manual.html#5.4">string</a></span>
  313. the event to handle
  314. </li>
  315. <li><span class="parameter">handler</span>
  316. <span class="types"><span class="type">function</span></span>
  317. a function to add the event's handlers
  318. </li>
  319. </ul>
  320. <h3>See also:</h3>
  321. <ul>
  322. <li><a href="../modules/script.html#addHandler">script.addHandler</a></li>
  323. <li><a href="../modules/gui.html#addHandler">gui.addHandler</a></li>
  324. </ul>
  325. </dd>
  326. </dl>
  327. <h2><a name="Override_functions"></a>Override functions </h2>
  328. Define these functions and the host will call them.
  329. <br><br>
  330. <dl class="function">
  331. <dt>
  332. <a name = "processBlock"></a>
  333. <strong><span class="proto_prefix">plugin</span>.processBlock (samples, smax, midiBuf)</strong>
  334. </dt>
  335. <dd>
  336. Process Audio Block.
  337. Override this function to input and output audio and MIDI data.</p>
  338. <p> This override is handled automatically if <a href="../modules/stereoFx.html#">stereoFx</a> or <a href="../modules/polyGen.html#">polyGen</a> are used.
  339. Use this function to handle the raw data instead.
  340. </ul>
  341. <h3>Parameters:</h3>
  342. <ul>
  343. <li><span class="parameter">samples</span>
  344. a C float** pointing to two channels of samples, serving as input and output
  345. </li>
  346. <li><span class="parameter">smax</span>
  347. the maximum sample index (nSamples - 1)
  348. </li>
  349. <li><span class="parameter">midiBuf</span>
  350. <span class="types"><a class="type" href="../modules/midi.html#midi.Buffer">midi.Buffer</a></span>
  351. the MIDI data for this block, serving as input and output
  352. </li>
  353. </ul>
  354. <h3>Usage:</h3>
  355. <ul>
  356. <pre class="example"> <span class="keyword">function</span> plugin.processBlock (samples, smax) <span class="comment">-- let's ignore midi for this example
  357. </span> <span class="keyword">for</span> i = <span class="number">0</span>, smax <span class="keyword">do</span>
  358. samples[<span class="number">0</span>][i] = sin(myTime) <span class="comment">-- left channel
  359. </span> samples[<span class="number">1</span>][i] = sin(myTime) <span class="comment">-- right channel
  360. </span> myTime = myTime + myDelta
  361. <span class="keyword">end</span>
  362. <span class="keyword">end</span></pre>
  363. </ul>
  364. </dd>
  365. <dt>
  366. <a name = "getParameterName"></a>
  367. <strong><span class="proto_prefix">plugin</span>.getParameterName (index)</strong>
  368. </dt>
  369. <dd>
  370. Return the name of a parameter. </p>
  371. <p> This override is handled automatically if <a href="../modules/plugin.html#manageParams">manageParams</a> is used.
  372. </ul>
  373. <h3>Parameters:</h3>
  374. <ul>
  375. <li><span class="parameter">index</span>
  376. parameter index (0-126)
  377. </li>
  378. </ul>
  379. <h3>Returns:</h3>
  380. <ol>
  381. <span class="types"><a class="type" href="http://www.lua.org/manual/5.1/manual.html#5.4">string</a></span>
  382. the parameter's name
  383. </ol>
  384. </dd>
  385. <dt>
  386. <a name = "getParameterText"></a>
  387. <strong><span class="proto_prefix">plugin</span>.getParameterText (index)</strong>
  388. </dt>
  389. <dd>
  390. Return the representation of a parameter's value.
  391. Override this function to choose how each parameter's value should
  392. be displayed by the host. The parameter's current value can be obtained
  393. using <a href="../modules/plugin.html#getParameter">plugin.getParameter</a></p>
  394. <p> This override is handled automatically if <a href="../modules/plugin.html#manageParams">manageParams</a> is used.
  395. </ul>
  396. <h3>Parameters:</h3>
  397. <ul>
  398. <li><span class="parameter">index</span>
  399. parameter index (0-126)
  400. </li>
  401. </ul>
  402. <h3>Returns:</h3>
  403. <ol>
  404. <span class="types"><a class="type" href="http://www.lua.org/manual/5.1/manual.html#5.4">string</a></span>
  405. a string representation of the parameter's current value
  406. </ol>
  407. </dd>
  408. <dt>
  409. <a name = "paramChanged"></a>
  410. <strong><span class="proto_prefix">plugin</span>.paramChanged (index)</strong>
  411. </dt>
  412. <dd>
  413. Handle parameter changes.
  414. Override this function to do something when a parameter changes
  415. The parameter's current value can be obtained using <a href="../modules/plugin.html#getParameter">plugin.getParameter</a></p>
  416. <p> This override is handled automatically if <a href="../modules/plugin.html#manageParams">manageParams</a> is used.
  417. </ul>
  418. <h3>Parameters:</h3>
  419. <ul>
  420. <li><span class="parameter">index</span>
  421. parameter index (0-126)
  422. </li>
  423. </ul>
  424. </dd>
  425. <dt>
  426. <a name = "getTailLengthSeconds"></a>
  427. <strong><span class="proto_prefix">plugin</span>.getTailLengthSeconds ()</strong>
  428. </dt>
  429. <dd>
  430. Return the tail length in seconds (effects only).
  431. Override this function to define the effect's audio tail length.
  432. </ul>
  433. <h3>Returns:</h3>
  434. <ol>
  435. the tail length in seconds
  436. </ol>
  437. </dd>
  438. </dl>
  439. <h2><a name="Class_plugin_PositionInfo"></a>Class plugin.PositionInfo </h2>
  440. A container type for host-related information as returned by <a href="../modules/plugin.html#getCurrentPosition">plugin.getCurrentPosition</a></p>
  441. <p> Is a <a href="http://www.juce.com/api/structAudioPlayHead_1_1CurrentPositionInfo.html">JUCE AudioPlayHead::CurrentPositionInfo</a>
  442. <br><br>
  443. <dl class="function">
  444. <dt>
  445. <a name = "PositionInfo.bpm"></a>
  446. <strong><span class="proto_prefix">plugin.PositionInfo</span>.bpm</strong>
  447. </dt>
  448. <dd>
  449. Host tempo (beats per minute)
  450. </ul>
  451. </dd>
  452. <dt>
  453. <a name = "PositionInfo.timeSigNumerator"></a>
  454. <strong><span class="proto_prefix">plugin.PositionInfo</span>.timeSigNumerator</strong>
  455. </dt>
  456. <dd>
  457. Time signature numerator ie. <em>3</em>/4
  458. </ul>
  459. </dd>
  460. <dt>
  461. <a name = "PositionInfo.timeSigDenominator"></a>
  462. <strong><span class="proto_prefix">plugin.PositionInfo</span>.timeSigDenominator</strong>
  463. </dt>
  464. <dd>
  465. Time signature denominator ie. 3/<em>4</em>
  466. </ul>
  467. </dd>
  468. <dt>
  469. <a name = "PositionInfo.timeInSamples"></a>
  470. <strong><span class="proto_prefix">plugin.PositionInfo</span>.timeInSamples</strong>
  471. </dt>
  472. <dd>
  473. Current position on the host's timeline (samples)
  474. </ul>
  475. </dd>
  476. <dt>
  477. <a name = "PositionInfo.timeInSeconds"></a>
  478. <strong><span class="proto_prefix">plugin.PositionInfo</span>.timeInSeconds</strong>
  479. </dt>
  480. <dd>
  481. Current position on the host's timeline (seconds)
  482. </ul>
  483. </dd>
  484. <dt>
  485. <a name = "PositionInfo.editOriginTime"></a>
  486. <strong><span class="proto_prefix">plugin.PositionInfo</span>.editOriginTime</strong>
  487. </dt>
  488. <dd>
  489. Position of the start of the edit region on the host's timeline
  490. </ul>
  491. </dd>
  492. <dt>
  493. <a name = "PositionInfo.ppqPosition"></a>
  494. <strong><span class="proto_prefix">plugin.PositionInfo</span>.ppqPosition</strong>
  495. </dt>
  496. <dd>
  497. Current position on the host's timeline (pulses-per-quarter-note)
  498. </ul>
  499. </dd>
  500. <dt>
  501. <a name = "PositionInfo.ppqPositionOfLastBarStart"></a>
  502. <strong><span class="proto_prefix">plugin.PositionInfo</span>.ppqPositionOfLastBarStart</strong>
  503. </dt>
  504. <dd>
  505. Position of the last bar start (pulses-per-quarter-note).
  506. (or zero if unavailable.)
  507. </ul>
  508. </dd>
  509. <dt>
  510. <a name = "PositionInfo.frameRate"></a>
  511. <strong><span class="proto_prefix">plugin.PositionInfo</span>.frameRate</strong>
  512. </dt>
  513. <dd>
  514. Video frame rate
  515. </ul>
  516. </dd>
  517. <dt>
  518. <a name = "PositionInfo.isPlaying"></a>
  519. <strong><span class="proto_prefix">plugin.PositionInfo</span>.isPlaying</strong>
  520. </dt>
  521. <dd>
  522. Is playing
  523. </ul>
  524. </dd>
  525. <dt>
  526. <a name = "PositionInfo.isRecording"></a>
  527. <strong><span class="proto_prefix">plugin.PositionInfo</span>.isRecording</strong>
  528. </dt>
  529. <dd>
  530. Is recording
  531. </ul>
  532. </dd>
  533. <dt>
  534. <a name = "PositionInfo.ppqLoopStart"></a>
  535. <strong><span class="proto_prefix">plugin.PositionInfo</span>.ppqLoopStart</strong>
  536. </dt>
  537. <dd>
  538. Position of the loop start (pulses-per-quarter-note).
  539. (or zero if unavailable.)
  540. </ul>
  541. </dd>
  542. <dt>
  543. <a name = "PositionInfo.ppqLoopEnd"></a>
  544. <strong><span class="proto_prefix">plugin.PositionInfo</span>.ppqLoopEnd</strong>
  545. </dt>
  546. <dd>
  547. Position of the loop end (pulses-per-quarter-note).
  548. (or zero if unavailable.)
  549. </ul>
  550. </dd>
  551. <dt>
  552. <a name = "PositionInfo.isLooping"></a>
  553. <strong><span class="proto_prefix">plugin.PositionInfo</span>.isLooping</strong>
  554. </dt>
  555. <dd>
  556. Is looping
  557. </ul>
  558. </dd>
  559. </dl>
  560. </div> <!-- id="content" -->
  561. </div> <!-- id="main" -->
  562. <div id="about">
  563. <i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc 1.4.2</a></i>
  564. </div> <!-- id="about" -->
  565. </div> <!-- id="container" -->
  566. </body>
  567. </html>