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.

141 lines
6.0KB

  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: Example sinemouse-demo.lua</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>Examples</h2>
  31. <ul class="$(kind=='Topics' and '' or 'nowrap'">
  32. <li><a href="../examples/classic-filter.lua.html">classic-filter.lua</a></li>
  33. <li><a href="../examples/sine-organ.lua.html">sine-organ.lua</a></li>
  34. <li><a href="../examples/midi-chordify.lua.html">midi-chordify.lua</a></li>
  35. <li><strong>sinemouse-demo.lua</strong></li>
  36. <li><a href="../examples/soundfile-test.lua.html">soundfile-test.lua</a></li>
  37. </ul>
  38. <h2>Modules</h2>
  39. <ul class="$(kind=='Topics' and '' or 'nowrap'">
  40. <li><a href="../modules/plugin.html">plugin</a></li>
  41. <li><a href="../modules/script.html">script</a></li>
  42. <li><a href="../modules/midi.html">midi</a></li>
  43. <li><a href="../modules/gui.html">gui</a></li>
  44. <li><a href="../modules/polyGen.html">polyGen</a></li>
  45. <li><a href="../modules/stereoFx.html">stereoFx</a></li>
  46. </ul>
  47. <h2>Classes</h2>
  48. <ul class="$(kind=='Topics' and '' or 'nowrap'">
  49. <li><a href="../classes/juce.AffineTransform.html">juce.AffineTransform</a></li>
  50. <li><a href="../classes/juce.AudioFormatReader.html">juce.AudioFormatReader</a></li>
  51. <li><a href="../classes/juce.Colour.html">juce.Colour</a></li>
  52. <li><a href="../classes/juce.ColourGradient.html">juce.ColourGradient</a></li>
  53. <li><a href="../classes/juce.Component.html">juce.Component</a></li>
  54. <li><a href="../classes/juce.FillType.html">juce.FillType</a></li>
  55. <li><a href="../classes/juce.Font.html">juce.Font</a></li>
  56. <li><a href="../classes/juce.Graphics.html">juce.Graphics</a></li>
  57. <li><a href="../classes/juce.Image.html">juce.Image</a></li>
  58. <li><a href="../classes/juce.Justification.html">juce.Justification</a></li>
  59. <li><a href="../classes/juce.LagrangeInterpolator.html">juce.LagrangeInterpolator</a></li>
  60. <li><a href="../classes/juce.Line.html">juce.Line</a></li>
  61. <li><a href="../classes/juce.Path.html">juce.Path</a></li>
  62. <li><a href="../classes/juce.Point.html">juce.Point</a></li>
  63. <li><a href="../classes/juce.RectanglePlacement.html">juce.RectanglePlacement</a></li>
  64. <li><a href="../classes/juce.Rectangle_float.html">juce.Rectangle_float</a></li>
  65. <li><a href="../classes/juce.Rectangle_int.html">juce.Rectangle_int</a></li>
  66. </ul>
  67. </div>
  68. <div id="content">
  69. <pre>
  70. <span class="comment">--[[
  71. name: sinemouse demo
  72. description: &gt;
  73. Custom GUI demonstration : Drag your mouse around in the
  74. frame to control the sine wave's amplitude and frequency.
  75. author: osar.fr
  76. --]]</span>
  77. <span class="global">require</span> <span class="string">"include/protoplug"</span>
  78. <span class="keyword">local</span> freq,amp = <span class="number">440</span>, <span class="number">0</span>
  79. <span class="keyword">local</span> delta, phase = <span class="number">0.06</span>, <span class="number">0</span>
  80. <span class="keyword">function</span> plugin.processBlock(samples, smax)
  81. <span class="keyword">for</span> i=<span class="number">0</span>,smax <span class="keyword">do</span>
  82. <span class="keyword">local</span> s = <span class="global">math</span>.sin(phase)*amp
  83. samples[<span class="number">0</span>][i] = s <span class="comment">-- left
  84. </span> samples[<span class="number">1</span>][i] = s <span class="comment">-- right
  85. </span> phase = phase + delta
  86. <span class="keyword">end</span>
  87. <span class="keyword">end</span>
  88. <span class="keyword">local</span> J = juce
  89. <span class="keyword">local</span> frame = J.Rectangle_int(<span class="number">20</span>,<span class="number">20</span>,<span class="number">400</span>,<span class="number">300</span>)
  90. <span class="keyword">local</span> sideways = J.AffineTransform():rotated(<span class="global">math</span>.pi*<span class="number">0.5</span>)
  91. <span class="keyword">function</span> gui.paint(g)
  92. g:fillAll()
  93. g:setColour(J.Colour.green)
  94. g:drawRect(frame)
  95. g:drawText(<span class="string">"Frequency"</span>, <span class="number">20</span>, <span class="number">320</span>, <span class="number">400</span>, <span class="number">20</span>, J.Justification.centred)
  96. g:addTransform(sideways)
  97. g:drawText(<span class="string">"amplitude"</span>, <span class="number">20</span>, -<span class="number">440</span>, <span class="number">300</span>, <span class="number">20</span>, J.Justification.centred)
  98. <span class="keyword">end</span>
  99. <span class="keyword">local</span> <span class="keyword">function</span> mouseHandler(event)
  100. <span class="keyword">if</span> <span class="keyword">not</span> frame:contains(J.Point(event.x,event.y)) <span class="keyword">then</span>
  101. <span class="keyword">return</span>
  102. <span class="keyword">end</span>
  103. freq = event.x + <span class="number">80</span>
  104. amp = (<span class="number">320</span>-event.y)/<span class="number">300</span>
  105. <span class="keyword">local</span> sr = plugin.isSampleRateKnown() <span class="keyword">and</span> plugin.getSampleRate() <span class="keyword">or</span> <span class="number">44100</span>
  106. delta = <span class="number">2</span>*<span class="global">math</span>.pi*freq/sr
  107. <span class="keyword">end</span>
  108. gui.addHandler(<span class="string">"mouseDrag"</span>, mouseHandler)
  109. gui.addHandler(<span class="string">"mouseDown"</span>, mouseHandler)</pre>
  110. </div> <!-- id="content" -->
  111. </div> <!-- id="main" -->
  112. <div id="about">
  113. <i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc 1.4.2</a></i>
  114. </div> <!-- id="about" -->
  115. </div> <!-- id="container" -->
  116. </body>
  117. </html>