cyfaust 0.1.0__cp311-cp311-macosx_15_0_arm64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (693) hide show
  1. cyfaust/CMakeLists.txt +93 -0
  2. cyfaust/__init__.py +0 -0
  3. cyfaust/__main__.py +819 -0
  4. cyfaust/box.pxd +46 -0
  5. cyfaust/box.pyx +2459 -0
  6. cyfaust/common.pxd +5 -0
  7. cyfaust/common.pyx +61 -0
  8. cyfaust/cyfaust.cpython-311-darwin.so +0 -0
  9. cyfaust/faust_box.pxd +298 -0
  10. cyfaust/faust_box_oo.pyx +66 -0
  11. cyfaust/faust_gui.pxd +261 -0
  12. cyfaust/faust_interp.pxd +160 -0
  13. cyfaust/faust_player.pxd +80 -0
  14. cyfaust/faust_signal.pxd +257 -0
  15. cyfaust/gui_statics.cpp +15 -0
  16. cyfaust/interp.pyx +673 -0
  17. cyfaust/player.cpp +32519 -0
  18. cyfaust/player.pyx +191 -0
  19. cyfaust/resources/architecture/AU/AUPublic/AUBase/AUBase.cpp +2327 -0
  20. cyfaust/resources/architecture/AU/AUPublic/AUBase/AUBase.h +1019 -0
  21. cyfaust/resources/architecture/AU/AUPublic/AUBase/AUDispatch.cpp +423 -0
  22. cyfaust/resources/architecture/AU/AUPublic/AUBase/AUDispatch.h +82 -0
  23. cyfaust/resources/architecture/AU/AUPublic/AUBase/AUInputElement.cpp +151 -0
  24. cyfaust/resources/architecture/AU/AUPublic/AUBase/AUInputElement.h +119 -0
  25. cyfaust/resources/architecture/AU/AUPublic/AUBase/AUOutputElement.cpp +62 -0
  26. cyfaust/resources/architecture/AU/AUPublic/AUBase/AUOutputElement.h +66 -0
  27. cyfaust/resources/architecture/AU/AUPublic/AUBase/AUPlugInDispatch.cpp +615 -0
  28. cyfaust/resources/architecture/AU/AUPublic/AUBase/AUPlugInDispatch.h +128 -0
  29. cyfaust/resources/architecture/AU/AUPublic/AUBase/AUScopeElement.cpp +512 -0
  30. cyfaust/resources/architecture/AU/AUPublic/AUBase/AUScopeElement.h +544 -0
  31. cyfaust/resources/architecture/AU/AUPublic/AUBase/ComponentBase.cpp +370 -0
  32. cyfaust/resources/architecture/AU/AUPublic/AUBase/ComponentBase.h +340 -0
  33. cyfaust/resources/architecture/AU/AUPublic/AUEffectBase/AUEffectBase.cpp +463 -0
  34. cyfaust/resources/architecture/AU/AUPublic/AUEffectBase/AUEffectBase.h +391 -0
  35. cyfaust/resources/architecture/AU/AUPublic/AUInstrumentBase/AUInstrumentBase.cpp +837 -0
  36. cyfaust/resources/architecture/AU/AUPublic/AUInstrumentBase/AUInstrumentBase.h +267 -0
  37. cyfaust/resources/architecture/AU/AUPublic/AUInstrumentBase/AUMIDIBase.cpp +495 -0
  38. cyfaust/resources/architecture/AU/AUPublic/AUInstrumentBase/AUMIDIBase.h +213 -0
  39. cyfaust/resources/architecture/AU/AUPublic/AUInstrumentBase/LockFreeFIFO.h +168 -0
  40. cyfaust/resources/architecture/AU/AUPublic/AUInstrumentBase/MIDIControlHandler.h +92 -0
  41. cyfaust/resources/architecture/AU/AUPublic/AUInstrumentBase/MusicDeviceBase.cpp +354 -0
  42. cyfaust/resources/architecture/AU/AUPublic/AUInstrumentBase/MusicDeviceBase.h +126 -0
  43. cyfaust/resources/architecture/AU/AUPublic/AUInstrumentBase/SynthElement.cpp +419 -0
  44. cyfaust/resources/architecture/AU/AUPublic/AUInstrumentBase/SynthElement.h +227 -0
  45. cyfaust/resources/architecture/AU/AUPublic/AUInstrumentBase/SynthEvent.h +145 -0
  46. cyfaust/resources/architecture/AU/AUPublic/AUInstrumentBase/SynthNote.cpp +138 -0
  47. cyfaust/resources/architecture/AU/AUPublic/AUInstrumentBase/SynthNote.h +186 -0
  48. cyfaust/resources/architecture/AU/AUPublic/AUInstrumentBase/SynthNoteList.cpp +93 -0
  49. cyfaust/resources/architecture/AU/AUPublic/AUInstrumentBase/SynthNoteList.h +232 -0
  50. cyfaust/resources/architecture/AU/AUPublic/Utility/AUBaseHelper.cpp +134 -0
  51. cyfaust/resources/architecture/AU/AUPublic/Utility/AUBaseHelper.h +80 -0
  52. cyfaust/resources/architecture/AU/AUPublic/Utility/AUBuffer.cpp +217 -0
  53. cyfaust/resources/architecture/AU/AUPublic/Utility/AUBuffer.h +267 -0
  54. cyfaust/resources/architecture/AU/AUPublic/Utility/AUMIDIDefs.h +136 -0
  55. cyfaust/resources/architecture/AU/AUPublic/Utility/AUSilentTimeout.h +93 -0
  56. cyfaust/resources/architecture/AU/English.lproj/InfoPlist.strings +0 -0
  57. cyfaust/resources/architecture/AU/FaustAU.exp +2 -0
  58. cyfaust/resources/architecture/AU/FaustAU.xcodeproj/project.pbxproj +968 -0
  59. cyfaust/resources/architecture/AU/FaustAU.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  60. cyfaust/resources/architecture/AU/FaustAUCustomView.plist +14 -0
  61. cyfaust/resources/architecture/AU/Info.plist +47 -0
  62. cyfaust/resources/architecture/AU/PublicUtility/CAAtomic.h +305 -0
  63. cyfaust/resources/architecture/AU/PublicUtility/CAAtomicStack.h +239 -0
  64. cyfaust/resources/architecture/AU/PublicUtility/CAAudioChannelLayout.cpp +153 -0
  65. cyfaust/resources/architecture/AU/PublicUtility/CAAudioChannelLayout.h +199 -0
  66. cyfaust/resources/architecture/AU/PublicUtility/CAAutoDisposer.h +508 -0
  67. cyfaust/resources/architecture/AU/PublicUtility/CABufferList.cpp +264 -0
  68. cyfaust/resources/architecture/AU/PublicUtility/CABufferList.h +319 -0
  69. cyfaust/resources/architecture/AU/PublicUtility/CAByteOrder.h +161 -0
  70. cyfaust/resources/architecture/AU/PublicUtility/CADebugMacros.cpp +88 -0
  71. cyfaust/resources/architecture/AU/PublicUtility/CADebugMacros.h +580 -0
  72. cyfaust/resources/architecture/AU/PublicUtility/CADebugPrintf.cpp +89 -0
  73. cyfaust/resources/architecture/AU/PublicUtility/CADebugPrintf.h +115 -0
  74. cyfaust/resources/architecture/AU/PublicUtility/CADebugger.cpp +77 -0
  75. cyfaust/resources/architecture/AU/PublicUtility/CADebugger.h +56 -0
  76. cyfaust/resources/architecture/AU/PublicUtility/CAException.h +83 -0
  77. cyfaust/resources/architecture/AU/PublicUtility/CAGuard.cpp +339 -0
  78. cyfaust/resources/architecture/AU/PublicUtility/CAGuard.h +133 -0
  79. cyfaust/resources/architecture/AU/PublicUtility/CAHostTimeBase.cpp +110 -0
  80. cyfaust/resources/architecture/AU/PublicUtility/CAHostTimeBase.h +231 -0
  81. cyfaust/resources/architecture/AU/PublicUtility/CALogMacros.h +140 -0
  82. cyfaust/resources/architecture/AU/PublicUtility/CAMath.h +68 -0
  83. cyfaust/resources/architecture/AU/PublicUtility/CAMutex.cpp +345 -0
  84. cyfaust/resources/architecture/AU/PublicUtility/CAMutex.h +163 -0
  85. cyfaust/resources/architecture/AU/PublicUtility/CAReferenceCounted.h +87 -0
  86. cyfaust/resources/architecture/AU/PublicUtility/CAStreamBasicDescription.cpp +795 -0
  87. cyfaust/resources/architecture/AU/PublicUtility/CAStreamBasicDescription.h +409 -0
  88. cyfaust/resources/architecture/AU/PublicUtility/CAThreadSafeList.h +255 -0
  89. cyfaust/resources/architecture/AU/PublicUtility/CAVectorUnit.cpp +191 -0
  90. cyfaust/resources/architecture/AU/PublicUtility/CAVectorUnit.h +100 -0
  91. cyfaust/resources/architecture/AU/PublicUtility/CAVectorUnitTypes.h +59 -0
  92. cyfaust/resources/architecture/AU/PublicUtility/CAXException.cpp +49 -0
  93. cyfaust/resources/architecture/AU/PublicUtility/CAXException.h +338 -0
  94. cyfaust/resources/architecture/AU/SectionPatternLight.tiff +0 -0
  95. cyfaust/resources/architecture/AU/Source/AUSource/FaustAU.h +38 -0
  96. cyfaust/resources/architecture/AU/Source/AUSource/FaustAU.r +153 -0
  97. cyfaust/resources/architecture/AU/Source/AUSource/FaustAUVersion.h +64 -0
  98. cyfaust/resources/architecture/AU/Source/CocoaUI/FaustAU_Bargraph.h +18 -0
  99. cyfaust/resources/architecture/AU/Source/CocoaUI/FaustAU_Bargraph.m +21 -0
  100. cyfaust/resources/architecture/AU/Source/CocoaUI/FaustAU_Button.h +20 -0
  101. cyfaust/resources/architecture/AU/Source/CocoaUI/FaustAU_Button.m +56 -0
  102. cyfaust/resources/architecture/AU/Source/CocoaUI/FaustAU_CustomView.h +87 -0
  103. cyfaust/resources/architecture/AU/Source/CocoaUI/FaustAU_CustomView.m +834 -0
  104. cyfaust/resources/architecture/AU/Source/CocoaUI/FaustAU_CustomViewFactory.h +13 -0
  105. cyfaust/resources/architecture/AU/Source/CocoaUI/FaustAU_CustomViewFactory.m +22 -0
  106. cyfaust/resources/architecture/AU/Source/CocoaUI/FaustAU_Knob.h +81 -0
  107. cyfaust/resources/architecture/AU/Source/CocoaUI/FaustAU_Knob.m +199 -0
  108. cyfaust/resources/architecture/AU/Source/CocoaUI/FaustAU_Slider.h +18 -0
  109. cyfaust/resources/architecture/AU/Source/CocoaUI/FaustAU_Slider.m +21 -0
  110. cyfaust/resources/architecture/AU/version.plist +16 -0
  111. cyfaust/resources/architecture/VST/Info.plist +28 -0
  112. cyfaust/resources/architecture/VST/PkgInfo +1 -0
  113. cyfaust/resources/architecture/VST/README +11 -0
  114. cyfaust/resources/architecture/VST/VST.xcode/project.pbxproj +655 -0
  115. cyfaust/resources/architecture/alsa-console.cpp +246 -0
  116. cyfaust/resources/architecture/alsa-gtk.cpp +220 -0
  117. cyfaust/resources/architecture/alsa-qt.cpp +229 -0
  118. cyfaust/resources/architecture/api/DspFaust.cpp +612 -0
  119. cyfaust/resources/architecture/api/DspFaust.h +511 -0
  120. cyfaust/resources/architecture/api/README.md +237 -0
  121. cyfaust/resources/architecture/api/doc/Generic.md +38 -0
  122. cyfaust/resources/architecture/au-effect.cpp +487 -0
  123. cyfaust/resources/architecture/au-instrument.cpp +573 -0
  124. cyfaust/resources/architecture/bench.cpp +91 -0
  125. cyfaust/resources/architecture/c-jack-gtk.c +227 -0
  126. cyfaust/resources/architecture/ca-gtk.cpp +284 -0
  127. cyfaust/resources/architecture/ca-qt.cpp +424 -0
  128. cyfaust/resources/architecture/cpal.rs +195 -0
  129. cyfaust/resources/architecture/csound.cpp +245 -0
  130. cyfaust/resources/architecture/csvplot.cpp +227 -0
  131. cyfaust/resources/architecture/daisy/Makefile +14 -0
  132. cyfaust/resources/architecture/daisy/README.md +50 -0
  133. cyfaust/resources/architecture/daisy/ex_faust.cpp +173 -0
  134. cyfaust/resources/architecture/dssi.cpp +1262 -0
  135. cyfaust/resources/architecture/dummy-mem.cpp +186 -0
  136. cyfaust/resources/architecture/dummy.cpp +294 -0
  137. cyfaust/resources/architecture/faust/au/AUUI.h +404 -0
  138. cyfaust/resources/architecture/faust/audio/alsa-dsp.h +693 -0
  139. cyfaust/resources/architecture/faust/audio/android-dsp.h +583 -0
  140. cyfaust/resources/architecture/faust/audio/audio.h +115 -0
  141. cyfaust/resources/architecture/faust/audio/channels.h +122 -0
  142. cyfaust/resources/architecture/faust/audio/coreaudio-dsp.h +1543 -0
  143. cyfaust/resources/architecture/faust/audio/coreaudio-ios-dsp.h +743 -0
  144. cyfaust/resources/architecture/faust/audio/dummy-audio.h +255 -0
  145. cyfaust/resources/architecture/faust/audio/esp32-dsp.h +284 -0
  146. cyfaust/resources/architecture/faust/audio/fpe.h +164 -0
  147. cyfaust/resources/architecture/faust/audio/jack-dsp.h +534 -0
  148. cyfaust/resources/architecture/faust/audio/juce-dsp.h +119 -0
  149. cyfaust/resources/architecture/faust/audio/netjack-dsp.h +354 -0
  150. cyfaust/resources/architecture/faust/audio/oboe-dsp.h +308 -0
  151. cyfaust/resources/architecture/faust/audio/ofaudio-dsp.h +155 -0
  152. cyfaust/resources/architecture/faust/audio/opensles-android-dsp.h +631 -0
  153. cyfaust/resources/architecture/faust/audio/osc-dsp.h +120 -0
  154. cyfaust/resources/architecture/faust/audio/portaudio-dsp.h +236 -0
  155. cyfaust/resources/architecture/faust/audio/rtaudio-dsp.h +241 -0
  156. cyfaust/resources/architecture/faust/audio/samAudio.h +140 -0
  157. cyfaust/resources/architecture/faust/audio/teensy-dsp.h +171 -0
  158. cyfaust/resources/architecture/faust/dsp/cmajor-cpp-dsp.h +253 -0
  159. cyfaust/resources/architecture/faust/dsp/cmajorpatch-dsp.h +483 -0
  160. cyfaust/resources/architecture/faust/dsp/cpp-dsp-adapter.h +38 -0
  161. cyfaust/resources/architecture/faust/dsp/dsp-adapter.h +836 -0
  162. cyfaust/resources/architecture/faust/dsp/dsp-bench.h +611 -0
  163. cyfaust/resources/architecture/faust/dsp/dsp-checker.h +115 -0
  164. cyfaust/resources/architecture/faust/dsp/dsp-combiner.h +810 -0
  165. cyfaust/resources/architecture/faust/dsp/dsp-compute-adapter.h +159 -0
  166. cyfaust/resources/architecture/faust/dsp/dsp-multi.h +702 -0
  167. cyfaust/resources/architecture/faust/dsp/dsp-multifun.h +90 -0
  168. cyfaust/resources/architecture/faust/dsp/dsp-optimizer.h +511 -0
  169. cyfaust/resources/architecture/faust/dsp/dsp-tools.h +229 -0
  170. cyfaust/resources/architecture/faust/dsp/dsp.h +321 -0
  171. cyfaust/resources/architecture/faust/dsp/fastmath.cpp +301 -0
  172. cyfaust/resources/architecture/faust/dsp/faust-dynamic-engine.cpp +494 -0
  173. cyfaust/resources/architecture/faust/dsp/faust-dynamic-engine.h +386 -0
  174. cyfaust/resources/architecture/faust/dsp/faust-engine.h +75 -0
  175. cyfaust/resources/architecture/faust/dsp/faust-poly-engine.h +638 -0
  176. cyfaust/resources/architecture/faust/dsp/interpreter-dsp-c.h +288 -0
  177. cyfaust/resources/architecture/faust/dsp/interpreter-dsp.h +362 -0
  178. cyfaust/resources/architecture/faust/dsp/interpreter-machine-dsp.h +233 -0
  179. cyfaust/resources/architecture/faust/dsp/libfaust-box-c.h +817 -0
  180. cyfaust/resources/architecture/faust/dsp/libfaust-box.h +889 -0
  181. cyfaust/resources/architecture/faust/dsp/libfaust-c.h +116 -0
  182. cyfaust/resources/architecture/faust/dsp/libfaust-signal-c.h +649 -0
  183. cyfaust/resources/architecture/faust/dsp/libfaust-signal.h +731 -0
  184. cyfaust/resources/architecture/faust/dsp/llvm-dsp-adapter.h +160 -0
  185. cyfaust/resources/architecture/faust/dsp/llvm-dsp-c.h +524 -0
  186. cyfaust/resources/architecture/faust/dsp/llvm-dsp.h +575 -0
  187. cyfaust/resources/architecture/faust/dsp/llvm-machine-dsp.h +215 -0
  188. cyfaust/resources/architecture/faust/dsp/one-sample-dsp.h +477 -0
  189. cyfaust/resources/architecture/faust/dsp/poly-dsp.h +1079 -0
  190. cyfaust/resources/architecture/faust/dsp/poly-interpreter-dsp.h +143 -0
  191. cyfaust/resources/architecture/faust/dsp/poly-llvm-dsp.h +249 -0
  192. cyfaust/resources/architecture/faust/dsp/poly-wasm-dsp.h +257 -0
  193. cyfaust/resources/architecture/faust/dsp/proxy-dsp.h +108 -0
  194. cyfaust/resources/architecture/faust/dsp/proxy-osc-dsp.h +109 -0
  195. cyfaust/resources/architecture/faust/dsp/rnbo-dsp.h +187 -0
  196. cyfaust/resources/architecture/faust/dsp/sound-player.h +428 -0
  197. cyfaust/resources/architecture/faust/dsp/timed-dsp.h +279 -0
  198. cyfaust/resources/architecture/faust/dsp/wasm-dsp-imp.h +188 -0
  199. cyfaust/resources/architecture/faust/dsp/wasm-dsp.h +309 -0
  200. cyfaust/resources/architecture/faust/dsp/ysfx-dsp.h +188 -0
  201. cyfaust/resources/architecture/faust/export.h +61 -0
  202. cyfaust/resources/architecture/faust/gui/APIUI.h +726 -0
  203. cyfaust/resources/architecture/faust/gui/BelaOSCUI.h +170 -0
  204. cyfaust/resources/architecture/faust/gui/CGlue.h +667 -0
  205. cyfaust/resources/architecture/faust/gui/CInterface.h +142 -0
  206. cyfaust/resources/architecture/faust/gui/ControlSequenceUI.h +197 -0
  207. cyfaust/resources/architecture/faust/gui/ControlUI.h +137 -0
  208. cyfaust/resources/architecture/faust/gui/DaisyControlUI.h +283 -0
  209. cyfaust/resources/architecture/faust/gui/DaisyPatchInitControlUI.h +254 -0
  210. cyfaust/resources/architecture/faust/gui/DecoratorUI.h +115 -0
  211. cyfaust/resources/architecture/faust/gui/Esp32ControlUI.h +341 -0
  212. cyfaust/resources/architecture/faust/gui/Esp32Reader.h +102 -0
  213. cyfaust/resources/architecture/faust/gui/Esp32SensorUI.h +137 -0
  214. cyfaust/resources/architecture/faust/gui/FUI.h +147 -0
  215. cyfaust/resources/architecture/faust/gui/GTKUI.h +1414 -0
  216. cyfaust/resources/architecture/faust/gui/GUI.h +465 -0
  217. cyfaust/resources/architecture/faust/gui/JSONControl.h +48 -0
  218. cyfaust/resources/architecture/faust/gui/JSONUI.h +722 -0
  219. cyfaust/resources/architecture/faust/gui/JSONUIDecoder.h +589 -0
  220. cyfaust/resources/architecture/faust/gui/JuceGUI.h +2061 -0
  221. cyfaust/resources/architecture/faust/gui/JuceOSCUI.h +163 -0
  222. cyfaust/resources/architecture/faust/gui/JuceParameterUI.h +158 -0
  223. cyfaust/resources/architecture/faust/gui/JuceReader.h +103 -0
  224. cyfaust/resources/architecture/faust/gui/JuceStateUI.h +88 -0
  225. cyfaust/resources/architecture/faust/gui/LayoutUI.h +423 -0
  226. cyfaust/resources/architecture/faust/gui/LibsndfileReader.h +366 -0
  227. cyfaust/resources/architecture/faust/gui/MapUI.h +370 -0
  228. cyfaust/resources/architecture/faust/gui/MemoryReader.h +111 -0
  229. cyfaust/resources/architecture/faust/gui/MetaDataUI.h +357 -0
  230. cyfaust/resources/architecture/faust/gui/MidiUI.h +939 -0
  231. cyfaust/resources/architecture/faust/gui/OCVUI.h +688 -0
  232. cyfaust/resources/architecture/faust/gui/OSCUI.h +219 -0
  233. cyfaust/resources/architecture/faust/gui/PathBuilder.h +228 -0
  234. cyfaust/resources/architecture/faust/gui/PresetUI.h +337 -0
  235. cyfaust/resources/architecture/faust/gui/PrintCUI.h +152 -0
  236. cyfaust/resources/architecture/faust/gui/PrintUI.h +121 -0
  237. cyfaust/resources/architecture/faust/gui/QTUI.h +1891 -0
  238. cyfaust/resources/architecture/faust/gui/RosCI.h +493 -0
  239. cyfaust/resources/architecture/faust/gui/RosUI.h +488 -0
  240. cyfaust/resources/architecture/faust/gui/SaveUI.h +163 -0
  241. cyfaust/resources/architecture/faust/gui/SimpleParser.h +583 -0
  242. cyfaust/resources/architecture/faust/gui/SoundUI.h +217 -0
  243. cyfaust/resources/architecture/faust/gui/Soundfile.h +342 -0
  244. cyfaust/resources/architecture/faust/gui/Styles/Blue.qrc +5 -0
  245. cyfaust/resources/architecture/faust/gui/Styles/Blue.qss +177 -0
  246. cyfaust/resources/architecture/faust/gui/Styles/Default.qrc +5 -0
  247. cyfaust/resources/architecture/faust/gui/Styles/Default.qss +117 -0
  248. cyfaust/resources/architecture/faust/gui/Styles/Grey.qrc +5 -0
  249. cyfaust/resources/architecture/faust/gui/Styles/Grey.qss +174 -0
  250. cyfaust/resources/architecture/faust/gui/Styles/Salmon.qrc +5 -0
  251. cyfaust/resources/architecture/faust/gui/Styles/Salmon.qss +171 -0
  252. cyfaust/resources/architecture/faust/gui/UI.h +87 -0
  253. cyfaust/resources/architecture/faust/gui/ValueConverter.h +543 -0
  254. cyfaust/resources/architecture/faust/gui/WaveReader.h +364 -0
  255. cyfaust/resources/architecture/faust/gui/console.h +322 -0
  256. cyfaust/resources/architecture/faust/gui/httpdUI.h +372 -0
  257. cyfaust/resources/architecture/faust/gui/meta.h +39 -0
  258. cyfaust/resources/architecture/faust/gui/mspUI.h +580 -0
  259. cyfaust/resources/architecture/faust/gui/qrcodegen.h +269 -0
  260. cyfaust/resources/architecture/faust/gui/qrcodegen.impl.h +1025 -0
  261. cyfaust/resources/architecture/faust/gui/ring-buffer.h +414 -0
  262. cyfaust/resources/architecture/faust/midi/RtMidi.cpp +3054 -0
  263. cyfaust/resources/architecture/faust/midi/RtMidi.h +1034 -0
  264. cyfaust/resources/architecture/faust/midi/bela-midi.h +266 -0
  265. cyfaust/resources/architecture/faust/midi/daisy-midi.h +116 -0
  266. cyfaust/resources/architecture/faust/midi/esp32-midi.h +185 -0
  267. cyfaust/resources/architecture/faust/midi/gramophone-midi.h +107 -0
  268. cyfaust/resources/architecture/faust/midi/iplug2-midi.h +148 -0
  269. cyfaust/resources/architecture/faust/midi/jack-midi.h +247 -0
  270. cyfaust/resources/architecture/faust/midi/juce-midi.h +275 -0
  271. cyfaust/resources/architecture/faust/midi/midi.h +475 -0
  272. cyfaust/resources/architecture/faust/midi/rt-midi.h +315 -0
  273. cyfaust/resources/architecture/faust/midi/teensy-midi.h +89 -0
  274. cyfaust/resources/architecture/faust/misc.h +106 -0
  275. cyfaust/resources/architecture/faust/sound-file.h +132 -0
  276. cyfaust/resources/architecture/faust/unity/AudioPluginInterface.h +301 -0
  277. cyfaust/resources/architecture/faust/vst/faust.h +141 -0
  278. cyfaust/resources/architecture/faust/vst/voice.h +43 -0
  279. cyfaust/resources/architecture/faust/vst/vstui.h +524 -0
  280. cyfaust/resources/architecture/faustvst.cpp +3435 -0
  281. cyfaust/resources/architecture/faustvstqt.h +91 -0
  282. cyfaust/resources/architecture/gen-json.cpp +76 -0
  283. cyfaust/resources/architecture/jack-console.cpp +267 -0
  284. cyfaust/resources/architecture/jack-gtk-ros.cpp +139 -0
  285. cyfaust/resources/architecture/jack-gtk.cpp +282 -0
  286. cyfaust/resources/architecture/jack-internal.cpp +560 -0
  287. cyfaust/resources/architecture/jack-qt-chain-footer.cpp +87 -0
  288. cyfaust/resources/architecture/jack-qt-chain-header.cpp +92 -0
  289. cyfaust/resources/architecture/jack-qt.cpp +281 -0
  290. cyfaust/resources/architecture/jack.rs +171 -0
  291. cyfaust/resources/architecture/juce/README.md +84 -0
  292. cyfaust/resources/architecture/juce/juce-plugin.cpp +809 -0
  293. cyfaust/resources/architecture/juce/juce-standalone.cpp +413 -0
  294. cyfaust/resources/architecture/juce/plugin/plugin-llvm.jucer +184 -0
  295. cyfaust/resources/architecture/juce/plugin/plugin.jucer +159 -0
  296. cyfaust/resources/architecture/juce/standalone/standalone-llvm.jucer +216 -0
  297. cyfaust/resources/architecture/juce/standalone/standalone.jucer +191 -0
  298. cyfaust/resources/architecture/ladspa.cpp +543 -0
  299. cyfaust/resources/architecture/latexheader.tex +65 -0
  300. cyfaust/resources/architecture/lv2.cpp +2090 -0
  301. cyfaust/resources/architecture/lv2qtgui.h +62 -0
  302. cyfaust/resources/architecture/lv2ui.cpp +1966 -0
  303. cyfaust/resources/architecture/max-msp/README.md +109 -0
  304. cyfaust/resources/architecture/max-msp/faustgen-wrapper-poly.maxpat +184 -0
  305. cyfaust/resources/architecture/max-msp/faustgen-wrapper.maxpat +163 -0
  306. cyfaust/resources/architecture/max-msp/max-msp.cpp +734 -0
  307. cyfaust/resources/architecture/max-msp/max-msp64.cpp +789 -0
  308. cyfaust/resources/architecture/max-msp/py2max/README.md +277 -0
  309. cyfaust/resources/architecture/max-msp/py2max/py2max/__init__.py +3 -0
  310. cyfaust/resources/architecture/max-msp/py2max/py2max/common.py +7 -0
  311. cyfaust/resources/architecture/max-msp/py2max/py2max/core.py +1387 -0
  312. cyfaust/resources/architecture/max-msp/py2max/py2max/maxclassdb.py +318 -0
  313. cyfaust/resources/architecture/max-msp/py2max/py2max/utils.py +20 -0
  314. cyfaust/resources/architecture/max-msp/rnbo.py +1591 -0
  315. cyfaust/resources/architecture/max-msp/sndfile/sndfile.h +857 -0
  316. cyfaust/resources/architecture/max-msp/ui.js +230 -0
  317. cyfaust/resources/architecture/max-msp/wrapper-poly.maxpat +153 -0
  318. cyfaust/resources/architecture/max-msp/wrapper.maxpat +131 -0
  319. cyfaust/resources/architecture/minimal-bench.cpp +100 -0
  320. cyfaust/resources/architecture/minimal-effect.c +149 -0
  321. cyfaust/resources/architecture/minimal-effect.cpp +70 -0
  322. cyfaust/resources/architecture/minimal-fixed-point.cpp +195 -0
  323. cyfaust/resources/architecture/minimal-static.cpp +160 -0
  324. cyfaust/resources/architecture/minimal.c +103 -0
  325. cyfaust/resources/architecture/minimal.cpp +84 -0
  326. cyfaust/resources/architecture/minimal.rs +223 -0
  327. cyfaust/resources/architecture/module.cpp +91 -0
  328. cyfaust/resources/architecture/octave.cpp +471 -0
  329. cyfaust/resources/architecture/oscio-gtk.cpp +115 -0
  330. cyfaust/resources/architecture/oscio-qt.cpp +121 -0
  331. cyfaust/resources/architecture/owl.cpp +345 -0
  332. cyfaust/resources/architecture/pa-gtk.cpp +119 -0
  333. cyfaust/resources/architecture/pa-qt.cpp +261 -0
  334. cyfaust/resources/architecture/path-printer.cpp +100 -0
  335. cyfaust/resources/architecture/plot.cpp +128 -0
  336. cyfaust/resources/architecture/portaudio.rs +192 -0
  337. cyfaust/resources/architecture/puredata.cpp +636 -0
  338. cyfaust/resources/architecture/ra-qt.cpp +238 -0
  339. cyfaust/resources/architecture/sam/fast_pow2.h +69 -0
  340. cyfaust/resources/architecture/sam/fastexp.h +140 -0
  341. cyfaust/resources/architecture/sam/samFaustDSP.cpp +125 -0
  342. cyfaust/resources/architecture/sam/samFaustDSP.h +107 -0
  343. cyfaust/resources/architecture/scheduler.cpp +1391 -0
  344. cyfaust/resources/architecture/sndfile.cpp +291 -0
  345. cyfaust/resources/architecture/supercollider.cpp +611 -0
  346. cyfaust/resources/architecture/teensy/README.md +13 -0
  347. cyfaust/resources/architecture/teensy/teensy.cpp +214 -0
  348. cyfaust/resources/architecture/teensy/teensy.h +71 -0
  349. cyfaust/resources/architecture/thread.h +373 -0
  350. cyfaust/resources/architecture/vcvrack/README.md +78 -0
  351. cyfaust/resources/architecture/vcvrack/template/.gitignore +6 -0
  352. cyfaust/resources/architecture/vcvrack/template/Makefile +22 -0
  353. cyfaust/resources/architecture/vcvrack/template/res/FaustModule.svg +299 -0
  354. cyfaust/resources/architecture/vcvrack/template/src/FaustModule.cpp +942 -0
  355. cyfaust/resources/architecture/vst.cpp +947 -0
  356. cyfaust/resources/libraries/aanl.lib +900 -0
  357. cyfaust/resources/libraries/all.lib +36 -0
  358. cyfaust/resources/libraries/analyzers.lib +980 -0
  359. cyfaust/resources/libraries/basics.lib +2681 -0
  360. cyfaust/resources/libraries/compressors.lib +1341 -0
  361. cyfaust/resources/libraries/delays.lib +401 -0
  362. cyfaust/resources/libraries/demos.lib +1556 -0
  363. cyfaust/resources/libraries/dx7.lib +1036 -0
  364. cyfaust/resources/libraries/effect.lib +1645 -0
  365. cyfaust/resources/libraries/envelopes.lib +666 -0
  366. cyfaust/resources/libraries/examples/README.md +13 -0
  367. cyfaust/resources/libraries/examples/ambisonics/fourSourcesToOcto.dsp +20 -0
  368. cyfaust/resources/libraries/examples/ambisonics/oneSourceToStereo.dsp +12 -0
  369. cyfaust/resources/libraries/examples/analysis/FFT.dsp +26 -0
  370. cyfaust/resources/libraries/examples/analysis/dbmeter.dsp +19 -0
  371. cyfaust/resources/libraries/examples/analysis/spectralLevel.dsp +8 -0
  372. cyfaust/resources/libraries/examples/analysis/spectralTiltLab.dsp +20 -0
  373. cyfaust/resources/libraries/examples/analysis/vumeter.dsp +18 -0
  374. cyfaust/resources/libraries/examples/autodiff/delay/diff.dsp +2 -0
  375. cyfaust/resources/libraries/examples/autodiff/delay/gt.dsp +2 -0
  376. cyfaust/resources/libraries/examples/autodiff/gain/diff.dsp +7 -0
  377. cyfaust/resources/libraries/examples/autodiff/gain/gt.dsp +1 -0
  378. cyfaust/resources/libraries/examples/autodiff/gain_dc/diff.dsp +7 -0
  379. cyfaust/resources/libraries/examples/autodiff/gain_dc/gt.dsp +4 -0
  380. cyfaust/resources/libraries/examples/autodiff/gain_exp/diff.dsp +9 -0
  381. cyfaust/resources/libraries/examples/autodiff/gain_exp/gt.dsp +1 -0
  382. cyfaust/resources/libraries/examples/autodiff/gain_pow/diff.dsp +9 -0
  383. cyfaust/resources/libraries/examples/autodiff/gain_pow/gt.dsp +1 -0
  384. cyfaust/resources/libraries/examples/autodiff/gain_pow_trig/diff.dsp +12 -0
  385. cyfaust/resources/libraries/examples/autodiff/gain_pow_trig/gt.dsp +1 -0
  386. cyfaust/resources/libraries/examples/autodiff/gain_sq/diff.dsp +7 -0
  387. cyfaust/resources/libraries/examples/autodiff/gain_sq/gt.dsp +1 -0
  388. cyfaust/resources/libraries/examples/autodiff/mem/diff.dsp +1 -0
  389. cyfaust/resources/libraries/examples/autodiff/mem/gt.dsp +1 -0
  390. cyfaust/resources/libraries/examples/autodiff/noise.dsp +2 -0
  391. cyfaust/resources/libraries/examples/autodiff/noop.dsp +2 -0
  392. cyfaust/resources/libraries/examples/autodiff/one_zero/diff.dsp +2 -0
  393. cyfaust/resources/libraries/examples/autodiff/one_zero/gt.dsp +2 -0
  394. cyfaust/resources/libraries/examples/autodiff/ramp.dsp +1 -0
  395. cyfaust/resources/libraries/examples/autodiff/recursion/diff.dsp +2 -0
  396. cyfaust/resources/libraries/examples/autodiff/recursion/gt.dsp +1 -0
  397. cyfaust/resources/libraries/examples/autodiff/recursion/target.dsp +13 -0
  398. cyfaust/resources/libraries/examples/autodiff/tremolo/diff.dsp +14 -0
  399. cyfaust/resources/libraries/examples/autodiff/tremolo/diffable.lib +7 -0
  400. cyfaust/resources/libraries/examples/autodiff/tremolo/gt.dsp +11 -0
  401. cyfaust/resources/libraries/examples/delayEcho/echo.dsp +15 -0
  402. cyfaust/resources/libraries/examples/delayEcho/quadEcho.dsp +21 -0
  403. cyfaust/resources/libraries/examples/delayEcho/smoothDelay.dsp +26 -0
  404. cyfaust/resources/libraries/examples/delayEcho/stereoEcho.dsp +16 -0
  405. cyfaust/resources/libraries/examples/delayEcho/tapiir.dsp +44 -0
  406. cyfaust/resources/libraries/examples/dynamic/compressor.dsp +8 -0
  407. cyfaust/resources/libraries/examples/dynamic/distortion.dsp +8 -0
  408. cyfaust/resources/libraries/examples/dynamic/gateCompressor.dsp +10 -0
  409. cyfaust/resources/libraries/examples/dynamic/noiseGate.dsp +8 -0
  410. cyfaust/resources/libraries/examples/dynamic/volume.dsp +15 -0
  411. cyfaust/resources/libraries/examples/filtering/APF.dsp +13 -0
  412. cyfaust/resources/libraries/examples/filtering/BPF.dsp +13 -0
  413. cyfaust/resources/libraries/examples/filtering/DNN.dsp +25 -0
  414. cyfaust/resources/libraries/examples/filtering/HPF.dsp +13 -0
  415. cyfaust/resources/libraries/examples/filtering/LPF.dsp +13 -0
  416. cyfaust/resources/libraries/examples/filtering/bandFilter.dsp +44 -0
  417. cyfaust/resources/libraries/examples/filtering/cryBaby.dsp +4 -0
  418. cyfaust/resources/libraries/examples/filtering/diodeLadder.dsp +12 -0
  419. cyfaust/resources/libraries/examples/filtering/filterBank.dsp +6 -0
  420. cyfaust/resources/libraries/examples/filtering/graphicEqLab.dsp +10 -0
  421. cyfaust/resources/libraries/examples/filtering/highShelf.dsp +13 -0
  422. cyfaust/resources/libraries/examples/filtering/korg35HPF.dsp +13 -0
  423. cyfaust/resources/libraries/examples/filtering/korg35LPF.dsp +13 -0
  424. cyfaust/resources/libraries/examples/filtering/lfBoost.dsp +40 -0
  425. cyfaust/resources/libraries/examples/filtering/lowBoost.dsp +40 -0
  426. cyfaust/resources/libraries/examples/filtering/lowCut.dsp +40 -0
  427. cyfaust/resources/libraries/examples/filtering/lowShelf.dsp +13 -0
  428. cyfaust/resources/libraries/examples/filtering/moogHalfLadder.dsp +12 -0
  429. cyfaust/resources/libraries/examples/filtering/moogLadder.dsp +12 -0
  430. cyfaust/resources/libraries/examples/filtering/moogVCF.dsp +6 -0
  431. cyfaust/resources/libraries/examples/filtering/multibandFilter.dsp +14 -0
  432. cyfaust/resources/libraries/examples/filtering/notch.dsp +13 -0
  433. cyfaust/resources/libraries/examples/filtering/oberheim.dsp +14 -0
  434. cyfaust/resources/libraries/examples/filtering/oberheimBPF.dsp +13 -0
  435. cyfaust/resources/libraries/examples/filtering/oberheimBSF.dsp +13 -0
  436. cyfaust/resources/libraries/examples/filtering/oberheimHPF.dsp +13 -0
  437. cyfaust/resources/libraries/examples/filtering/oberheimLPF.dsp +13 -0
  438. cyfaust/resources/libraries/examples/filtering/parametricEqLab.dsp +10 -0
  439. cyfaust/resources/libraries/examples/filtering/parametricEqualizer.dsp +6 -0
  440. cyfaust/resources/libraries/examples/filtering/peakNotch.dsp +13 -0
  441. cyfaust/resources/libraries/examples/filtering/peakingEQ.dsp +13 -0
  442. cyfaust/resources/libraries/examples/filtering/sallenKey2ndOrder.dsp +14 -0
  443. cyfaust/resources/libraries/examples/filtering/sallenKey2ndOrderBPF.dsp +13 -0
  444. cyfaust/resources/libraries/examples/filtering/sallenKey2ndOrderHPF.dsp +13 -0
  445. cyfaust/resources/libraries/examples/filtering/sallenKey2ndOrderLPF.dsp +13 -0
  446. cyfaust/resources/libraries/examples/filtering/sallenKeyOnePole.dsp +13 -0
  447. cyfaust/resources/libraries/examples/filtering/sallenKeyOnePoleHPF.dsp +12 -0
  448. cyfaust/resources/libraries/examples/filtering/sallenKeyOnePoleLPF.dsp +12 -0
  449. cyfaust/resources/libraries/examples/filtering/spectralTilt.dsp +8 -0
  450. cyfaust/resources/libraries/examples/filtering/vcfWahLab.dsp +12 -0
  451. cyfaust/resources/libraries/examples/filtering/vocoder.dsp +8 -0
  452. cyfaust/resources/libraries/examples/filtering/wahPedal.dsp +6 -0
  453. cyfaust/resources/libraries/examples/gameaudio/bubble.dsp +42 -0
  454. cyfaust/resources/libraries/examples/gameaudio/door.dsp +58 -0
  455. cyfaust/resources/libraries/examples/gameaudio/fire.dsp +46 -0
  456. cyfaust/resources/libraries/examples/gameaudio/insects.dsp +148 -0
  457. cyfaust/resources/libraries/examples/gameaudio/rain.dsp +27 -0
  458. cyfaust/resources/libraries/examples/gameaudio/wind.dsp +23 -0
  459. cyfaust/resources/libraries/examples/generator/filterOsc.dsp +8 -0
  460. cyfaust/resources/libraries/examples/generator/noise.dsp +52 -0
  461. cyfaust/resources/libraries/examples/generator/noiseMetadata.dsp +74 -0
  462. cyfaust/resources/libraries/examples/generator/osc.dsp +17 -0
  463. cyfaust/resources/libraries/examples/generator/osci.dsp +17 -0
  464. cyfaust/resources/libraries/examples/generator/sawtoothLab.dsp +8 -0
  465. cyfaust/resources/libraries/examples/generator/virtualAnalog.dsp +8 -0
  466. cyfaust/resources/libraries/examples/generator/virtualAnalogLab.dsp +10 -0
  467. cyfaust/resources/libraries/examples/misc/UITester.dsp +71 -0
  468. cyfaust/resources/libraries/examples/misc/autopan.dsp +59 -0
  469. cyfaust/resources/libraries/examples/misc/capture.dsp +24 -0
  470. cyfaust/resources/libraries/examples/misc/drumkit.dsp +36 -0
  471. cyfaust/resources/libraries/examples/misc/guitarix.dsp +184 -0
  472. cyfaust/resources/libraries/examples/misc/matrix.dsp +17 -0
  473. cyfaust/resources/libraries/examples/misc/midiTester.dsp +122 -0
  474. cyfaust/resources/libraries/examples/misc/mixer.dsp +27 -0
  475. cyfaust/resources/libraries/examples/misc/statespace.dsp +39 -0
  476. cyfaust/resources/libraries/examples/misc/switcher.dsp +20 -0
  477. cyfaust/resources/libraries/examples/misc/tester.dsp +32 -0
  478. cyfaust/resources/libraries/examples/misc/tester2.dsp +31 -0
  479. cyfaust/resources/libraries/examples/old/README.md +5 -0
  480. cyfaust/resources/libraries/examples/old/freeverb.dsp +109 -0
  481. cyfaust/resources/libraries/examples/old/rewriting/Makefile +21 -0
  482. cyfaust/resources/libraries/examples/old/rewriting/fact.dsp +3 -0
  483. cyfaust/resources/libraries/examples/old/rewriting/fold.dsp +61 -0
  484. cyfaust/resources/libraries/examples/old/rewriting/mesh.dsp +43 -0
  485. cyfaust/resources/libraries/examples/old/rewriting/mesh.pd +37 -0
  486. cyfaust/resources/libraries/examples/old/rewriting/sample.pd +12 -0
  487. cyfaust/resources/libraries/examples/old/rewriting/serial.dsp +7 -0
  488. cyfaust/resources/libraries/examples/old/rewriting/sum.dsp +55 -0
  489. cyfaust/resources/libraries/examples/old/rewriting/test.pd +48 -0
  490. cyfaust/resources/libraries/examples/phasing/flanger.dsp +8 -0
  491. cyfaust/resources/libraries/examples/phasing/phaser.dsp +8 -0
  492. cyfaust/resources/libraries/examples/phasing/phaserFlangerLab.dsp +12 -0
  493. cyfaust/resources/libraries/examples/physicalModeling/brass.dsp +8 -0
  494. cyfaust/resources/libraries/examples/physicalModeling/brassMIDI.dsp +8 -0
  495. cyfaust/resources/libraries/examples/physicalModeling/churchBell.dsp +8 -0
  496. cyfaust/resources/libraries/examples/physicalModeling/clarinet.dsp +8 -0
  497. cyfaust/resources/libraries/examples/physicalModeling/clarinetMIDI.dsp +8 -0
  498. cyfaust/resources/libraries/examples/physicalModeling/djembeMIDI.dsp +8 -0
  499. cyfaust/resources/libraries/examples/physicalModeling/elecGuitarMIDI.dsp +10 -0
  500. cyfaust/resources/libraries/examples/physicalModeling/englishBell.dsp +8 -0
  501. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/NLFeks.dsp +91 -0
  502. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/NLFfm.dsp +70 -0
  503. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/README +125 -0
  504. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/bass.dsp +84 -0
  505. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/bass.h +91 -0
  506. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/blowBottle.dsp +102 -0
  507. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/bowed.dsp +114 -0
  508. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/brass.dsp +103 -0
  509. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/clarinet.dsp +110 -0
  510. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/flute.dsp +116 -0
  511. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/fluteStk.dsp +121 -0
  512. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/glassHarmonica.dsp +131 -0
  513. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/harpsi.dsp +90 -0
  514. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/harpsichord.h +185 -0
  515. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/instrument.h +114 -0
  516. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/modalBar.dsp +122 -0
  517. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/modalBar.h +48 -0
  518. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/audio-out.pd +33 -0
  519. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/bottle.pd +10 -0
  520. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/clarinets.pd +15 -0
  521. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/canon/audio-out.pd +33 -0
  522. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/canon/bass.pd +162 -0
  523. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/canon/canon.pd +55 -0
  524. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/canon/flute.pd +343 -0
  525. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/canon/pachelbel.mid +0 -0
  526. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/daisy/audio-out.pd +33 -0
  527. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/daisy/daisy.mid +0 -0
  528. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/daisy/daisy.pd +45 -0
  529. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/daisy/piano.pd +205 -0
  530. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/daisy/voiceForm.pd +340 -0
  531. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/take5/audio-out.pd +33 -0
  532. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/take5/blowHole.pd +330 -0
  533. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/take5/piano.pd +205 -0
  534. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/take5/take5.mid +0 -0
  535. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/take5/take5.pd +45 -0
  536. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/turkish-march/audio-out.pd +33 -0
  537. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/turkish-march/harpsi.pd +204 -0
  538. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/turkish-march/turkish-march.mid +0 -0
  539. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/turkish-march/turkish-march.pd +31 -0
  540. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/what-a-friend/audio-out.pd +33 -0
  541. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/what-a-friend/bass.pd +162 -0
  542. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/what-a-friend/modalBar.pd +258 -0
  543. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/what-a-friend/piano.pd +205 -0
  544. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/what-a-friend/what-a-friend.pd +52 -0
  545. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/what-a-friend/what_a_friend.mid +0 -0
  546. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/flutes.pd +15 -0
  547. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fm.pd +10 -0
  548. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/glassBare.pd +10 -0
  549. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/harpsichord-poly.pd +10 -0
  550. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/ironBare.pd +10 -0
  551. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/midi-in.pd +111 -0
  552. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/modal.pd +10 -0
  553. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/osc.pd +26 -0
  554. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/piano-poly.pd +10 -0
  555. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/plucked.pd +20 -0
  556. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/saxophone.pd +10 -0
  557. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/tibetan.pd +10 -0
  558. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/trumpet.pd +10 -0
  559. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/violin.pd +10 -0
  560. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/voiceSynth.pd +10 -0
  561. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/woodenBare.pd +10 -0
  562. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/phonemes.h +189 -0
  563. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/piano.dsp +255 -0
  564. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/piano.h +751 -0
  565. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/saxophony.dsp +114 -0
  566. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/sitar.dsp +48 -0
  567. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/tibetanBowl.dsp +155 -0
  568. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/tunedBar.dsp +123 -0
  569. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/uniBar.dsp +100 -0
  570. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/voiceForm.dsp +125 -0
  571. cyfaust/resources/libraries/examples/physicalModeling/fds/1dDampedWaveEquation.dsp +43 -0
  572. cyfaust/resources/libraries/examples/physicalModeling/fds/2dKirchhoffThinPlate.dsp +75 -0
  573. cyfaust/resources/libraries/examples/physicalModeling/fds/BowedString.dsp +61 -0
  574. cyfaust/resources/libraries/examples/physicalModeling/fds/ControllableNonPhysicalString.dsp +72 -0
  575. cyfaust/resources/libraries/examples/physicalModeling/fds/HammeredString.dsp +74 -0
  576. cyfaust/resources/libraries/examples/physicalModeling/fds/PianoHammeredString.dsp +85 -0
  577. cyfaust/resources/libraries/examples/physicalModeling/fds/StiffString.dsp +54 -0
  578. cyfaust/resources/libraries/examples/physicalModeling/flute.dsp +8 -0
  579. cyfaust/resources/libraries/examples/physicalModeling/fluteMIDI.dsp +8 -0
  580. cyfaust/resources/libraries/examples/physicalModeling/frenchBell.dsp +8 -0
  581. cyfaust/resources/libraries/examples/physicalModeling/germanBell.dsp +8 -0
  582. cyfaust/resources/libraries/examples/physicalModeling/guitarMIDI.dsp +8 -0
  583. cyfaust/resources/libraries/examples/physicalModeling/karplus.dsp +8 -0
  584. cyfaust/resources/libraries/examples/physicalModeling/marimbaMIDI.dsp +10 -0
  585. cyfaust/resources/libraries/examples/physicalModeling/mi-faust/00_BasicOscillator/harmonicOscillator.dsp +58 -0
  586. cyfaust/resources/libraries/examples/physicalModeling/mi-faust/00_BasicOscillator/harmonicOscillator2.dsp +62 -0
  587. cyfaust/resources/libraries/examples/physicalModeling/mi-faust/00_BasicOscillator/harmonicOscillator3.dsp +65 -0
  588. cyfaust/resources/libraries/examples/physicalModeling/mi-faust/01_ParamControl/paramOsc.dsp +63 -0
  589. cyfaust/resources/libraries/examples/physicalModeling/mi-faust/02_AudioParamControl/audioParamOsc.dsp +63 -0
  590. cyfaust/resources/libraries/examples/physicalModeling/mi-faust/03_HammerTime/hammerOsc.dsp +71 -0
  591. cyfaust/resources/libraries/examples/physicalModeling/mi-faust/04_Gravity/bouncingOsc.dsp +64 -0
  592. cyfaust/resources/libraries/examples/physicalModeling/mi-faust/05_PluckedOscillator/pluckedOsc.dsp +57 -0
  593. cyfaust/resources/libraries/examples/physicalModeling/mi-faust/06_BowedOscillator/bowedOsc.dsp +65 -0
  594. cyfaust/resources/libraries/examples/physicalModeling/mi-faust/07_NonLinearOscillator/nlOsc.dsp +78 -0
  595. cyfaust/resources/libraries/examples/physicalModeling/mi-faust/08_TwoMassChain/2massChain.dsp +75 -0
  596. cyfaust/resources/libraries/examples/physicalModeling/mi-faust/09_TinyString/tinyString.dsp +101 -0
  597. cyfaust/resources/libraries/examples/physicalModeling/mi-faust/10_PluckedString/pluckedString.dsp +678 -0
  598. cyfaust/resources/libraries/examples/physicalModeling/mi-faust/11_BowedString/bowedString.dsp +671 -0
  599. cyfaust/resources/libraries/examples/physicalModeling/mi-faust/12_TriangleMesh/triangleMesh.dsp +448 -0
  600. cyfaust/resources/libraries/examples/physicalModeling/mi-faust/13_Construction/construction.dsp +1036 -0
  601. cyfaust/resources/libraries/examples/physicalModeling/mi-faust/14_Polyphonic/polyTriangle.dsp +79 -0
  602. cyfaust/resources/libraries/examples/physicalModeling/mi-faust/15_PhysicalLFO/physicalLFO.dsp +107 -0
  603. cyfaust/resources/libraries/examples/physicalModeling/modularInterpInstrMIDI.dsp +8 -0
  604. cyfaust/resources/libraries/examples/physicalModeling/nylonGuitarMIDI.dsp +8 -0
  605. cyfaust/resources/libraries/examples/physicalModeling/old/harpe.dsp +45 -0
  606. cyfaust/resources/libraries/examples/physicalModeling/old/karplus.dsp +34 -0
  607. cyfaust/resources/libraries/examples/physicalModeling/old/karplus32.dsp +47 -0
  608. cyfaust/resources/libraries/examples/physicalModeling/russianBell.dsp +8 -0
  609. cyfaust/resources/libraries/examples/physicalModeling/standardBell.dsp +8 -0
  610. cyfaust/resources/libraries/examples/physicalModeling/violin.dsp +8 -0
  611. cyfaust/resources/libraries/examples/physicalModeling/violinMIDI.dsp +8 -0
  612. cyfaust/resources/libraries/examples/physicalModeling/vocalBP.dsp +8 -0
  613. cyfaust/resources/libraries/examples/physicalModeling/vocalBPMIDI.dsp +8 -0
  614. cyfaust/resources/libraries/examples/physicalModeling/vocalFOF.dsp +8 -0
  615. cyfaust/resources/libraries/examples/physicalModeling/vocalFOFMIDI.dsp +8 -0
  616. cyfaust/resources/libraries/examples/pitchShifting/pitchShifter.dsp +20 -0
  617. cyfaust/resources/libraries/examples/psychoacoustic/harmonicExciter.dsp +10 -0
  618. cyfaust/resources/libraries/examples/quantizing/quantizedChords.dsp +49 -0
  619. cyfaust/resources/libraries/examples/reverb/dattorro.dsp +8 -0
  620. cyfaust/resources/libraries/examples/reverb/fdnRev.dsp +8 -0
  621. cyfaust/resources/libraries/examples/reverb/freeverb.dsp +8 -0
  622. cyfaust/resources/libraries/examples/reverb/greyhole.dsp +8 -0
  623. cyfaust/resources/libraries/examples/reverb/jprev.dsp +8 -0
  624. cyfaust/resources/libraries/examples/reverb/reverbDesigner.dsp +12 -0
  625. cyfaust/resources/libraries/examples/reverb/reverbTester.dsp +8 -0
  626. cyfaust/resources/libraries/examples/reverb/zitaRev.dsp +8 -0
  627. cyfaust/resources/libraries/examples/reverb/zitaRevFDN.dsp +8 -0
  628. cyfaust/resources/libraries/examples/smartKeyboard/acGuitar.dsp +100 -0
  629. cyfaust/resources/libraries/examples/smartKeyboard/associatedEffects/elecGuitarEffect.dsp +8 -0
  630. cyfaust/resources/libraries/examples/smartKeyboard/associatedEffects/myEffect.dsp +5 -0
  631. cyfaust/resources/libraries/examples/smartKeyboard/associatedEffects/reverb.dsp +5 -0
  632. cyfaust/resources/libraries/examples/smartKeyboard/bells.dsp +80 -0
  633. cyfaust/resources/libraries/examples/smartKeyboard/bowed.dsp +87 -0
  634. cyfaust/resources/libraries/examples/smartKeyboard/brass.dsp +82 -0
  635. cyfaust/resources/libraries/examples/smartKeyboard/clarinet.dsp +113 -0
  636. cyfaust/resources/libraries/examples/smartKeyboard/crazyGuiro.dsp +96 -0
  637. cyfaust/resources/libraries/examples/smartKeyboard/drums.dsp +74 -0
  638. cyfaust/resources/libraries/examples/smartKeyboard/dubDub.dsp +87 -0
  639. cyfaust/resources/libraries/examples/smartKeyboard/elecGuitar.dsp +67 -0
  640. cyfaust/resources/libraries/examples/smartKeyboard/fm.dsp +78 -0
  641. cyfaust/resources/libraries/examples/smartKeyboard/frog.dsp +74 -0
  642. cyfaust/resources/libraries/examples/smartKeyboard/harp.dsp +84 -0
  643. cyfaust/resources/libraries/examples/smartKeyboard/midiOnly.dsp +62 -0
  644. cyfaust/resources/libraries/examples/smartKeyboard/multiSynth.dsp +75 -0
  645. cyfaust/resources/libraries/examples/smartKeyboard/toy.dsp +71 -0
  646. cyfaust/resources/libraries/examples/smartKeyboard/trumpet.dsp +59 -0
  647. cyfaust/resources/libraries/examples/smartKeyboard/turenas.dsp +114 -0
  648. cyfaust/resources/libraries/examples/smartKeyboard/violin.dsp +91 -0
  649. cyfaust/resources/libraries/examples/smartKeyboard/violin2.dsp +84 -0
  650. cyfaust/resources/libraries/examples/smartKeyboard/vocal.dsp +43 -0
  651. cyfaust/resources/libraries/examples/spat/panpot.dsp +17 -0
  652. cyfaust/resources/libraries/examples/spat/spat.dsp +25 -0
  653. cyfaust/resources/libraries/fds.lib +535 -0
  654. cyfaust/resources/libraries/filter.lib +1710 -0
  655. cyfaust/resources/libraries/filters.lib +3125 -0
  656. cyfaust/resources/libraries/hoa.lib +1081 -0
  657. cyfaust/resources/libraries/instruments.lib +263 -0
  658. cyfaust/resources/libraries/interpolators.lib +675 -0
  659. cyfaust/resources/libraries/math.lib +602 -0
  660. cyfaust/resources/libraries/maths.lib +798 -0
  661. cyfaust/resources/libraries/maxmsp.lib +237 -0
  662. cyfaust/resources/libraries/mi.lib +528 -0
  663. cyfaust/resources/libraries/misceffects.lib +998 -0
  664. cyfaust/resources/libraries/music.lib +496 -0
  665. cyfaust/resources/libraries/noises.lib +487 -0
  666. cyfaust/resources/libraries/oscillator.lib +450 -0
  667. cyfaust/resources/libraries/oscillators.lib +1838 -0
  668. cyfaust/resources/libraries/phaflangers.lib +235 -0
  669. cyfaust/resources/libraries/physmodels.lib +3990 -0
  670. cyfaust/resources/libraries/platform.lib +59 -0
  671. cyfaust/resources/libraries/quantizers.lib +310 -0
  672. cyfaust/resources/libraries/reducemaps.lib +235 -0
  673. cyfaust/resources/libraries/reverbs.lib +686 -0
  674. cyfaust/resources/libraries/routes.lib +262 -0
  675. cyfaust/resources/libraries/sf.lib +53 -0
  676. cyfaust/resources/libraries/signals.lib +570 -0
  677. cyfaust/resources/libraries/soundfiles.lib +234 -0
  678. cyfaust/resources/libraries/spats.lib +173 -0
  679. cyfaust/resources/libraries/stdfaust.lib +38 -0
  680. cyfaust/resources/libraries/synths.lib +322 -0
  681. cyfaust/resources/libraries/tonestacks.lib +427 -0
  682. cyfaust/resources/libraries/tubes.lib +5039 -0
  683. cyfaust/resources/libraries/vaeffects.lib +984 -0
  684. cyfaust/resources/libraries/version.lib +22 -0
  685. cyfaust/resources/libraries/wdmodels.lib +2276 -0
  686. cyfaust/resources/libraries/webaudio.lib +402 -0
  687. cyfaust/signal.pxd +44 -0
  688. cyfaust/signal.pyx +1993 -0
  689. cyfaust-0.1.0.dist-info/METADATA +355 -0
  690. cyfaust-0.1.0.dist-info/RECORD +693 -0
  691. cyfaust-0.1.0.dist-info/WHEEL +5 -0
  692. cyfaust-0.1.0.dist-info/entry_points.txt +3 -0
  693. cyfaust-0.1.0.dist-info/licenses/LICENSE +26 -0
@@ -0,0 +1,1891 @@
1
+ /************************** BEGIN QTUI.h *****************************
2
+ FAUST Architecture File
3
+ Copyright (C) 2003-2022 GRAME, Centre National de Creation Musicale
4
+ ---------------------------------------------------------------------
5
+ This program is free software; you can redistribute it and/or modify
6
+ it under the terms of the GNU Lesser General Public License as published by
7
+ the Free Software Foundation; either version 2.1 of the License, or
8
+ (at your option) any later version.
9
+
10
+ This program is distributed in the hope that it will be useful,
11
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ GNU Lesser General Public License for more details.
14
+
15
+ You should have received a copy of the GNU Lesser General Public License
16
+ along with this program; if not, write to the Free Software
17
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18
+
19
+ EXCEPTION : As a special exception, you may create a larger work
20
+ that contains this FAUST architecture section and distribute
21
+ that work under terms of your choice, so long as this FAUST
22
+ architecture section is not modified.
23
+ ************************************************************************/
24
+
25
+ #ifndef __QTUI__
26
+ #define __QTUI__
27
+
28
+ #include <cassert>
29
+ #include <cmath>
30
+ #include <fstream>
31
+ #include <iostream>
32
+ #include <list>
33
+ #include <map>
34
+ #include <set>
35
+ #include <vector>
36
+ #include <stack>
37
+
38
+ #if defined(HTTPCTRL) && defined(QRCODECTRL)
39
+
40
+ #ifdef _WIN32
41
+ # include <winsock2.h>
42
+ # undef min
43
+ # undef max
44
+ # pragma warning (disable: 4100)
45
+ #else
46
+ # include <netdb.h>
47
+ # include <arpa/inet.h>
48
+ # include <unistd.h>
49
+ #endif
50
+
51
+ #include <QtNetwork>
52
+
53
+ #endif
54
+
55
+ #include <QtGlobal>
56
+ #include <QtGui>
57
+ #if QT_VERSION >= 0x050000
58
+ #include <QtWidgets>
59
+ #endif
60
+ #if QT_VERSION >= 0x060000
61
+ #define QTSetMargins(a) setContentsMargins(a, a, a, a)
62
+ #else
63
+ #define QTSetMargins(a) setMargin(a)
64
+ #endif
65
+ #include <QApplication>
66
+ #include <QLabel>
67
+ #include <QComboBox>
68
+ #include <QHBoxLayout>
69
+ #include <QVBoxLayout>
70
+ #include <sstream>
71
+
72
+ #include "faust/gui/GUI.h"
73
+ #include "faust/gui/ValueConverter.h"
74
+ #include "faust/gui/SimpleParser.h"
75
+ #include "faust/gui/MetaDataUI.h"
76
+
77
+ #if defined(HTTPCTRL) && defined(QRCODECTRL)
78
+ #include "faust/gui/qrcodegen.h"
79
+ #endif
80
+
81
+ #if QT_VERSION >= 0x040300
82
+ #define QTColorLighter lighter
83
+ #define QTColorDarker darker
84
+ #else
85
+ #define QTColorLighter light
86
+ #define QTColorDarker dark
87
+ #endif
88
+
89
+ // for compatibility
90
+ #define minValue minimum
91
+ #define maxValue maximum
92
+
93
+ //==============================BEGIN QSYNTHKNOB=====================================
94
+ //
95
+ // qsynthknob and qsynthDialVokiStyle borrowed from qsynth-0.3.3 by Rui Nuno Capela
96
+ // This widget is based on a design by Thorsten Wilms,
97
+ // implemented by Chris Cannam in Rosegarden,
98
+ // adapted for QSynth by Pedro Lopez-Cabanillas,
99
+ // improved for Qt4 by David Garcia Garzon.
100
+ //
101
+
102
+ #define DIAL_MIN (0.25 * M_PI)
103
+ #define DIAL_MAX (1.75 * M_PI)
104
+ #define DIAL_RANGE (DIAL_MAX - DIAL_MIN)
105
+ #define DIAL_WRAPPING false
106
+
107
+ class qsynthDialVokiStyle : public QCommonStyle
108
+ {
109
+
110
+ public:
111
+ qsynthDialVokiStyle() {}
112
+ virtual ~qsynthDialVokiStyle() {}
113
+
114
+ virtual void drawComplexControl(ComplexControl cc, const QStyleOptionComplex* opt, QPainter* p, const QWidget* widget = NULL) const
115
+ {
116
+ if (cc != QStyle::CC_Dial) {
117
+ QCommonStyle::drawComplexControl(cc, opt, p, widget);
118
+ return;
119
+ }
120
+
121
+ const QStyleOptionSlider* dial = qstyleoption_cast<const QStyleOptionSlider*>(opt);
122
+ if (dial == NULL) return;
123
+
124
+ double angle = DIAL_MIN // offset
125
+ + (DIAL_RANGE *
126
+ (double(dial->sliderValue - dial->minimum) /
127
+ (double(dial->maximum - dial->minimum))));
128
+ int degrees = int(angle * 180.0 / M_PI);
129
+ int side = dial->rect.width() < dial->rect.height() ? dial->rect.width() : dial->rect.height();
130
+ int xcenter = dial->rect.width() / 2;
131
+ int ycenter = dial->rect.height() / 2;
132
+ int notchWidth = 1 + side / 400;
133
+ int pointerWidth = 2 + side / 30;
134
+ int scaleShadowWidth = 1 + side / 100;
135
+ int knobBorderWidth = 0;
136
+ int ns = dial->tickInterval;
137
+ int numTicks = 1 + (dial->maximum + ns - dial->minimum) / ns;
138
+ int indent = int(0.15 * side) + 2;
139
+ int knobWidth = side - 2 * indent;
140
+ int shineFocus = knobWidth / 4;
141
+ int shineCenter = knobWidth / 5;
142
+ int shineExtension = shineCenter * 4;
143
+ int shadowShift = shineCenter * 2;
144
+ int meterWidth = side - 2 * scaleShadowWidth;
145
+
146
+ QPalette pal = opt->palette;
147
+ QColor knobColor = pal.mid().color();
148
+ QColor borderColor = knobColor.QTColorLighter();
149
+ QColor meterColor = (dial->state & State_Enabled) ?
150
+ QColor("orange") : pal.mid().color();
151
+ // pal.highlight().color() : pal.mid().color();
152
+ QColor background = pal.window().color();
153
+
154
+ p->save();
155
+ p->setRenderHint(QPainter::Antialiasing, true);
156
+
157
+ // The bright metering bit...
158
+ QConicalGradient meterShadow(xcenter, ycenter, -90);
159
+ meterShadow.setColorAt(0, meterColor.QTColorDarker());
160
+ meterShadow.setColorAt(0.5, meterColor);
161
+ meterShadow.setColorAt(1.0, meterColor.QTColorLighter().QTColorLighter());
162
+ p->setBrush(meterShadow);
163
+ p->setPen(Qt::transparent);
164
+ p->drawPie(xcenter - meterWidth / 2, ycenter - meterWidth / 2,
165
+ meterWidth, meterWidth, (180 + 45) * 16, -(degrees - 45) * 16);
166
+
167
+ // Knob projected shadow
168
+ QRadialGradient projectionGradient(xcenter + shineCenter, ycenter + shineCenter,
169
+ shineExtension, xcenter + shadowShift, ycenter + shadowShift);
170
+ projectionGradient.setColorAt(0, QColor( 0, 0, 0, 100));
171
+ projectionGradient.setColorAt(1, QColor(200, 0, 0, 10));
172
+ QBrush shadowBrush(projectionGradient);
173
+ p->setBrush(shadowBrush);
174
+ p->drawEllipse(xcenter - shadowShift, ycenter - shadowShift,
175
+ knobWidth, knobWidth);
176
+
177
+ // Knob body and face...
178
+ QPen pen;
179
+ pen.setColor(knobColor);
180
+ pen.setWidth(knobBorderWidth);
181
+ p->setPen(pen);
182
+
183
+ QRadialGradient gradient(xcenter - shineCenter, ycenter - shineCenter,
184
+ shineExtension, xcenter - shineFocus, ycenter - shineFocus);
185
+ gradient.setColorAt(0.2, knobColor.QTColorLighter().QTColorLighter());
186
+ gradient.setColorAt(0.5, knobColor);
187
+ gradient.setColorAt(1.0, knobColor.QTColorDarker(150));
188
+ QBrush knobBrush(gradient);
189
+ p->setBrush(knobBrush);
190
+ p->drawEllipse(xcenter - knobWidth / 2, ycenter - knobWidth / 2,
191
+ knobWidth, knobWidth);
192
+
193
+ // Tick notches...
194
+ p->setBrush(Qt::NoBrush);
195
+
196
+ if (dial->subControls & QStyle::SC_DialTickmarks) {
197
+ pen.setColor(pal.dark().color());
198
+ pen.setWidth(notchWidth);
199
+ p->setPen(pen);
200
+ double hyp = double(side - scaleShadowWidth) / 2.0;
201
+ double len = hyp / 4;
202
+ for (int i = 0; i < numTicks; ++i) {
203
+ int div = numTicks;
204
+ if (div > 1) --div;
205
+ bool internal = (i != 0 && i != numTicks - 1);
206
+ double angle = DIAL_MIN
207
+ + (DIAL_MAX - DIAL_MIN) * i / div;
208
+ double dir = (internal ? -1 : len);
209
+ double sinAngle = sin(angle);
210
+ double cosAngle = cos(angle);
211
+ double x0 = xcenter - (hyp - len) * sinAngle;
212
+ double y0 = ycenter + (hyp - len) * cosAngle;
213
+ double x1 = xcenter - (hyp + dir) * sinAngle;
214
+ double y1 = ycenter + (hyp + dir) * cosAngle;
215
+ p->drawLine(QLineF(x0, y0, x1, y1));
216
+ }
217
+ }
218
+
219
+ // Shadowing...
220
+
221
+ // Knob shadow...
222
+ if (knobBorderWidth > 0) {
223
+ QLinearGradient inShadow(xcenter - side / 4, ycenter - side / 4,
224
+ xcenter + side / 4, ycenter + side / 4);
225
+ inShadow.setColorAt(0.0, borderColor.QTColorLighter());
226
+ inShadow.setColorAt(1.0, borderColor.QTColorDarker());
227
+ p->setPen(QPen(QBrush(inShadow), knobBorderWidth * 7 / 8));
228
+ p->drawEllipse(xcenter - side / 2 + indent,
229
+ ycenter - side / 2 + indent,
230
+ side - 2 * indent, side - 2 * indent);
231
+ }
232
+
233
+ // Scale shadow...
234
+ QLinearGradient outShadow(xcenter - side / 3, ycenter - side / 3,
235
+ xcenter + side / 3, ycenter + side / 3);
236
+ outShadow.setColorAt(0.0, background.QTColorDarker().QTColorDarker());
237
+ outShadow.setColorAt(1.0, background.QTColorLighter().QTColorLighter());
238
+ p->setPen(QPen(QBrush(outShadow), scaleShadowWidth));
239
+ p->drawArc(xcenter - side / 2 + scaleShadowWidth / 2,
240
+ ycenter - side / 2 + scaleShadowWidth / 2,
241
+ side - scaleShadowWidth, side - scaleShadowWidth, -45 * 16, 270 * 16);
242
+
243
+ // Pointer notch...
244
+ double hyp = double(side) / 2.0;
245
+ double len = hyp - indent - 1;
246
+
247
+ double x = xcenter - len * sin(angle);
248
+ double y = ycenter + len * cos(angle);
249
+
250
+ QColor pointerColor = pal.dark().color();
251
+ pen.setColor((dial->state & State_Enabled) ? pointerColor.QTColorDarker(140) : pointerColor);
252
+ pen.setWidth(pointerWidth + 2);
253
+ p->setPen(pen);
254
+ p->drawLine(QLineF(xcenter, ycenter, x, y));
255
+ pen.setColor((dial->state & State_Enabled) ? pointerColor.QTColorLighter() : pointerColor.QTColorLighter(140));
256
+ pen.setWidth(pointerWidth);
257
+ p->setPen(pen);
258
+ p->drawLine(QLineF(xcenter - 1, ycenter - 1, x - 1, y - 1));
259
+
260
+ // done
261
+ p->restore();
262
+ }
263
+
264
+ };
265
+
266
+ //===============================END QSYNTHKNOB======================================
267
+
268
+ //==============================BEGIN DISPLAYS===================================
269
+ //
270
+ // This section constains displays, passive QT widgets that displays values in
271
+ // different ways, in particular bargraphs
272
+ //
273
+
274
+ /**
275
+ * An abstract widget that display a value in a range
276
+ */
277
+ class AbstractDisplay : public QWidget
278
+ {
279
+
280
+ protected:
281
+
282
+ FAUSTFLOAT fMin;
283
+ FAUSTFLOAT fMax;
284
+ FAUSTFLOAT fValue;
285
+
286
+ public:
287
+
288
+ AbstractDisplay(FAUSTFLOAT lo, FAUSTFLOAT hi) : fMin(lo), fMax(hi), fValue(lo)
289
+ {}
290
+
291
+ /**
292
+ * set the range of displayed values
293
+ */
294
+ virtual void setRange(FAUSTFLOAT lo, FAUSTFLOAT hi)
295
+ {
296
+ fMin = lo;
297
+ fMax = hi;
298
+ }
299
+
300
+ /**
301
+ * set the value to be displayed
302
+ */
303
+ virtual void setValue(FAUSTFLOAT v)
304
+ {
305
+ if (v < fMin) v = fMin;
306
+ else if (v > fMax) v = fMax;
307
+
308
+ if (v != fValue) {
309
+ fValue = v;
310
+ update();
311
+ }
312
+ }
313
+ };
314
+
315
+ /**
316
+ * Displays dB values using a scale of colors
317
+ */
318
+ class dbAbstractDisplay : public AbstractDisplay
319
+ {
320
+
321
+ protected:
322
+
323
+ FAUSTFLOAT fScaleMin;
324
+ FAUSTFLOAT fScaleMax;
325
+ std::vector<int> fLevel;
326
+ std::vector<QBrush> fBrush;
327
+
328
+ /**
329
+ * Create the scale of colors used to paint the bargraph in relation to the levels
330
+ * The parameter x indicates the direction of the gradient. x=1 means an horizontal
331
+ * gradient typically used by a vertical bargraph, and x=0 a vertical gradient.
332
+ */
333
+ void initLevelsColors(int x)
334
+ {
335
+ int alpha = 200;
336
+ { // level until -10 dB
337
+ QColor c(40, 160, 40, alpha);
338
+ QLinearGradient g(0,0,x,1-x);
339
+ g.setCoordinateMode(QGradient::ObjectBoundingMode);
340
+ g.setColorAt(0.0, c.lighter());
341
+ g.setColorAt(0.2, c);
342
+ g.setColorAt(0.8, c);
343
+ g.setColorAt(0.9, c.darker(120));
344
+
345
+ fLevel.push_back(-10);
346
+ fBrush.push_back(QBrush(g));
347
+ }
348
+
349
+ { // level until -6 dB
350
+ QColor c(160, 220, 20, alpha);
351
+ QLinearGradient g(0,0,x,1-x);
352
+ g.setCoordinateMode(QGradient::ObjectBoundingMode);
353
+ g.setColorAt(0.0, c.lighter());
354
+ g.setColorAt(0.2, c);
355
+ g.setColorAt(0.8, c);
356
+ g.setColorAt(0.9, c.darker(120));
357
+
358
+ fLevel.push_back(-6);
359
+ fBrush.push_back(QBrush(g));
360
+ }
361
+
362
+ { // level until -3 dB
363
+ QColor c(220, 220, 20, alpha);
364
+ QLinearGradient g(0,0,x,1-x);
365
+ g.setCoordinateMode(QGradient::ObjectBoundingMode);
366
+ g.setColorAt(0.0, c.lighter());
367
+ g.setColorAt(0.2, c);
368
+ g.setColorAt(0.8, c);
369
+ g.setColorAt(0.9, c.darker(120));
370
+
371
+ fLevel.push_back(-3);
372
+ fBrush.push_back(QBrush(g));
373
+ }
374
+
375
+ { // level until -0 dB
376
+ QColor c(240, 160, 20, alpha);
377
+ QLinearGradient g(0,0,x,1-x);
378
+ g.setCoordinateMode(QGradient::ObjectBoundingMode);
379
+ g.setColorAt(0.0, c.lighter());
380
+ g.setColorAt(0.2, c);
381
+ g.setColorAt(0.8, c);
382
+ g.setColorAt(0.9, c.darker(120));
383
+
384
+ fLevel.push_back(0);
385
+ fBrush.push_back(QBrush(g));
386
+ }
387
+
388
+ { // until 10 dB (and over because last one)
389
+ QColor c(240, 0, 20, alpha); // ColorOver
390
+ QLinearGradient g(0,0,x,1-x);
391
+ g.setCoordinateMode(QGradient::ObjectBoundingMode);
392
+ g.setColorAt(0.0, c.lighter());
393
+ g.setColorAt(0.2, c);
394
+ g.setColorAt(0.8, c);
395
+ g.setColorAt(0.9, c.darker(120));
396
+
397
+ fLevel.push_back(+10);
398
+ fBrush.push_back(QBrush(g));
399
+ }
400
+ }
401
+
402
+ public:
403
+
404
+ dbAbstractDisplay(FAUSTFLOAT lo, FAUSTFLOAT hi) : AbstractDisplay(lo, hi), fScaleMin(0), fScaleMax(0)
405
+ {}
406
+
407
+ /**
408
+ * set the range of displayed values
409
+ */
410
+ virtual void setRange(FAUSTFLOAT lo, FAUSTFLOAT hi)
411
+ {
412
+ AbstractDisplay::setRange(lo, hi);
413
+ fScaleMin = dB2Scale(fMin);
414
+ fScaleMax = dB2Scale(fMax);
415
+ }
416
+ };
417
+
418
+ /**
419
+ * Small rectangular LED display which color changes with the level in dB
420
+ */
421
+ class dbLED : public dbAbstractDisplay
422
+ {
423
+
424
+ protected:
425
+
426
+ /**
427
+ * Draw the LED using a color depending of its value in dB
428
+ */
429
+ virtual void paintEvent(QPaintEvent*)
430
+ {
431
+ QPainter painter(this);
432
+ painter.drawRect(rect());
433
+
434
+ if (fValue <= fLevel[0]) {
435
+ // interpolate the first color on the alpha channel
436
+ QColor c(40, 160, 40) ;
437
+ FAUSTFLOAT a = (fValue-fMin)/(fLevel[0]-fMin);
438
+ c.setAlphaF(a);
439
+ painter.fillRect(rect(), c);
440
+
441
+ } else {
442
+ // find the minimal level > value
443
+ size_t l = fLevel.size()-1; while (fValue < fLevel[l] && l > 0) l--;
444
+ painter.fillRect(rect(), fBrush[l]);
445
+ }
446
+ }
447
+
448
+ public:
449
+
450
+ dbLED(FAUSTFLOAT lo, FAUSTFLOAT hi) : dbAbstractDisplay(lo,hi)
451
+ {
452
+ setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
453
+ initLevelsColors(1);
454
+ }
455
+
456
+ virtual QSize sizeHint() const
457
+ {
458
+ return QSize(16, 8);
459
+ }
460
+ };
461
+
462
+ /**
463
+ * Small rectangular LED display which intensity (alpha channel) changes according to the value
464
+ */
465
+ class LED : public AbstractDisplay
466
+ {
467
+
468
+ protected:
469
+
470
+ QColor fColor;
471
+
472
+ /**
473
+ * Draw the LED using a transparency depending of its value
474
+ */
475
+ virtual void paintEvent(QPaintEvent*)
476
+ {
477
+ QPainter painter(this);
478
+ painter.drawRect(rect());
479
+ // interpolate the first color on the alpha channel
480
+ QColor c = fColor ;
481
+ FAUSTFLOAT a = (fValue-fMin)/(fMax-fMin);
482
+ c.setAlphaF(a);
483
+ painter.fillRect(rect(), c);
484
+ }
485
+
486
+ public:
487
+
488
+ LED(FAUSTFLOAT lo, FAUSTFLOAT hi) : AbstractDisplay(lo, hi), fColor("yellow")
489
+ {
490
+ setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
491
+ }
492
+
493
+ virtual QSize sizeHint() const
494
+ {
495
+ return QSize(16, 8);
496
+ }
497
+ };
498
+
499
+ /**
500
+ * A simple bargraph that detect automatically its direction
501
+ */
502
+ class linBargraph : public AbstractDisplay
503
+ {
504
+
505
+ protected:
506
+
507
+ QBrush fBrush;
508
+
509
+ /**
510
+ * No scale implemented yet
511
+ */
512
+ void paintScale(QPainter* painter) const
513
+ {
514
+ painter->drawRect(0, 0, width(), height());
515
+ }
516
+
517
+ /**
518
+ * The length of the rectangle is proportional to the value
519
+ */
520
+ void paintContent(QPainter* painter) const
521
+ {
522
+ int w = width();
523
+ int h = height();
524
+ FAUSTFLOAT v = (fValue-fMin)/(fMax-fMin);
525
+
526
+ if (h > w) {
527
+ // draw vertical rectangle
528
+ painter->fillRect(0, (1-v)*h, w, v*h, fBrush);
529
+ } else {
530
+ // draw horizontal rectangle
531
+ painter->fillRect(0, 0, v*w, h, fBrush);
532
+ }
533
+ }
534
+
535
+ virtual void paintEvent(QPaintEvent*)
536
+ {
537
+ QPainter painter(this);
538
+ paintContent(&painter);
539
+ paintScale(&painter);
540
+ }
541
+
542
+ public:
543
+
544
+ linBargraph(FAUSTFLOAT lo, FAUSTFLOAT hi) : AbstractDisplay(lo, hi)
545
+ {
546
+ // compute the brush that will be used to
547
+ // paint the value
548
+ QColor c(0xffa500); // orange
549
+ int x = int(height() < width()); // gradient direction
550
+ QLinearGradient g(0,0,x,1-x);
551
+ g.setCoordinateMode(QGradient::ObjectBoundingMode);
552
+ g.setColorAt(0.0, c.lighter());
553
+ g.setColorAt(0.2, c);
554
+ g.setColorAt(0.8, c);
555
+ g.setColorAt(0.9, c.darker(120));
556
+ fBrush = QBrush(g);
557
+ }
558
+ };
559
+
560
+ /**
561
+ * A simple vertical bargraph
562
+ */
563
+ class linVerticalBargraph : public linBargraph
564
+ {
565
+
566
+ public:
567
+
568
+ linVerticalBargraph(FAUSTFLOAT lo, FAUSTFLOAT hi) : linBargraph(lo, hi)
569
+ {
570
+ setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred);
571
+ }
572
+
573
+ virtual QSize sizeHint() const
574
+ {
575
+ return QSize(16, 128);
576
+ }
577
+ };
578
+
579
+ /**
580
+ * A simple horizontal bargraph
581
+ */
582
+ class linHorizontalBargraph : public linBargraph
583
+ {
584
+
585
+ public:
586
+
587
+ linHorizontalBargraph(FAUSTFLOAT lo, FAUSTFLOAT hi) : linBargraph(lo, hi)
588
+ {
589
+ setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
590
+ }
591
+
592
+ virtual QSize sizeHint() const
593
+ {
594
+ return QSize(128, 16);
595
+ }
596
+ };
597
+
598
+ /**
599
+ * A dB Bargraph with a scale of colors
600
+ */
601
+ class dbBargraph : public dbAbstractDisplay
602
+ {
603
+
604
+ protected:
605
+
606
+ QBrush fBackColor;
607
+
608
+ // These two abstract methods are implemented
609
+ // according to the vertical or horizontal direction
610
+ // in dbVerticalBargraph and dbHorizontalBargraph
611
+ virtual void paintMark(QPainter* painter, FAUSTFLOAT v) const = 0;
612
+ virtual int paintSegment(QPainter* painter, int pos, FAUSTFLOAT v, const QBrush& b) const = 0;
613
+
614
+ /**
615
+ * Draw the logarithmic scale
616
+ */
617
+ void paintScale(QPainter* painter) const
618
+ {
619
+ painter->fillRect(0,0,width(),height(), fBackColor);
620
+ painter->save();
621
+ painter->setPen(QColor(0x6699aa)); //0xffa500));
622
+ for (FAUSTFLOAT v = -10; v > fMin; v -= 10) paintMark(painter, v);
623
+ for (FAUSTFLOAT v = -6; v < fMax; v += 3) paintMark(painter, v);
624
+ painter->restore();
625
+ }
626
+
627
+ /**
628
+ * Draw the content using colored segments
629
+ */
630
+ void paintContent(QPainter* painter) const
631
+ {
632
+ size_t l = fLevel.size();
633
+
634
+ FAUSTFLOAT p = -1; // fake value indicates to start from border
635
+ size_t n = 0;
636
+ // paint all the full segments < fValue
637
+ for (n = 0; (n < l) && (fValue > fLevel[n]); n++) {
638
+ p = paintSegment(painter, p, fLevel[n], fBrush[n]);
639
+ }
640
+ // paint the last segment
641
+ if (n == l) n = n-1;
642
+ p=paintSegment(painter, p, fValue, fBrush[n]);
643
+
644
+ painter->drawRect(0,0,width(),height());
645
+ }
646
+
647
+ virtual void paintEvent(QPaintEvent*)
648
+ {
649
+ QPainter painter(this);
650
+ paintScale(&painter);
651
+ paintContent(&painter);
652
+ }
653
+
654
+ public:
655
+
656
+ dbBargraph(FAUSTFLOAT lo, FAUSTFLOAT hi) : dbAbstractDisplay(lo,hi)
657
+ {
658
+ QFont f = this->font();
659
+ f.setPointSize(6);
660
+ this->setFont(f);
661
+ fBackColor = QBrush(QColor(20,20,20));
662
+ }
663
+ };
664
+
665
+ /**
666
+ * Vertical dB Bargraph
667
+ */
668
+ class dbVerticalBargraph : public dbBargraph
669
+ {
670
+
671
+ protected:
672
+ /**
673
+ * Convert a dB value into a vertical position
674
+ */
675
+ FAUSTFLOAT dB2y(FAUSTFLOAT dB) const
676
+ {
677
+ FAUSTFLOAT s0 = fScaleMin;
678
+ FAUSTFLOAT s1 = fScaleMax;
679
+ FAUSTFLOAT sx = dB2Scale(dB);
680
+ int h = height();
681
+ return h - h*(s0-sx)/(s0-s1);
682
+ }
683
+
684
+ /**
685
+ * Paint a vertical graduation mark
686
+ */
687
+ virtual void paintMark(QPainter* painter, FAUSTFLOAT v) const
688
+ {
689
+ int n = 10;
690
+ int y = dB2y(v);
691
+ QRect r(0,y-n,width()-1,2*n);
692
+ if (v > 0.0) {
693
+ painter->drawText(r, Qt::AlignRight|Qt::AlignVCenter, QString::number(v).prepend('+'));
694
+ } else {
695
+ painter->drawText(r, Qt::AlignRight|Qt::AlignVCenter, QString::number(v));
696
+ }
697
+ }
698
+
699
+ /**
700
+ * Paint a color segment
701
+ */
702
+ virtual int paintSegment(QPainter* painter, int pos, FAUSTFLOAT v, const QBrush& b) const
703
+ {
704
+ if (pos == -1) pos = height();
705
+ FAUSTFLOAT y = dB2y(v);
706
+ painter->fillRect(0, y, width(), pos-y+1, b);
707
+ return y;
708
+ }
709
+
710
+ public:
711
+
712
+ dbVerticalBargraph(FAUSTFLOAT lo, FAUSTFLOAT hi) : dbBargraph(lo,hi)
713
+ {
714
+ setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred);
715
+ initLevelsColors(1);
716
+ }
717
+
718
+ virtual QSize sizeHint() const
719
+ {
720
+ return QSize(18, 256);
721
+ }
722
+ };
723
+
724
+ /**
725
+ * Horizontal dB Bargraph
726
+ */
727
+ class dbHorizontalBargraph : public dbBargraph
728
+ {
729
+
730
+ protected:
731
+
732
+ /**
733
+ * Convert a dB value into an horizontal position
734
+ */
735
+ FAUSTFLOAT dB2x(FAUSTFLOAT dB) const
736
+ {
737
+ FAUSTFLOAT s0 = fScaleMin;
738
+ FAUSTFLOAT s1 = fScaleMax;
739
+ FAUSTFLOAT sx = dB2Scale(dB);
740
+ int w = width();
741
+ return w - w*(s1-sx)/(s1-s0);
742
+ }
743
+
744
+ /**
745
+ * Paint an horizontal graduation mark
746
+ */
747
+ void paintMark(QPainter* painter, FAUSTFLOAT v) const
748
+ {
749
+ int n = 10;
750
+ int x = dB2x(v);
751
+ QRect r(x-n, 0, 2*n, height());
752
+ painter->drawText(r, Qt::AlignHCenter|Qt::AlignVCenter, QString::number(v));
753
+ }
754
+
755
+ /**
756
+ * Paint a horizontal color segment
757
+ */
758
+ int paintSegment(QPainter* painter, int pos, FAUSTFLOAT v, const QBrush& b) const
759
+ {
760
+ if (pos == -1) pos = 0;
761
+ FAUSTFLOAT x = dB2x(v);
762
+ painter->fillRect(pos, 0, x-pos, height(), b);
763
+ return x;
764
+ }
765
+
766
+ public:
767
+
768
+ dbHorizontalBargraph(FAUSTFLOAT lo, FAUSTFLOAT hi) : dbBargraph(lo, hi)
769
+ {
770
+ setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
771
+ initLevelsColors(0);
772
+ }
773
+
774
+ virtual QSize sizeHint() const
775
+ {
776
+ return QSize(256, 18);
777
+ }
778
+
779
+ };
780
+
781
+ //===============================END DISPLAYS====================================
782
+
783
+ /******************************************************************************
784
+ *******************************************************************************
785
+
786
+ IMPLEMENTATION OF GUI ITEMS
787
+ (QT 4.3 for FAUST)
788
+
789
+ *******************************************************************************
790
+ *******************************************************************************/
791
+
792
+
793
+ /**
794
+ * A push button that controls/reflects the value (O/1)
795
+ * of a zone.
796
+ */
797
+ class uiButton : public QObject, public uiItem
798
+ {
799
+ Q_OBJECT
800
+
801
+ public:
802
+
803
+ QAbstractButton* fButton;
804
+
805
+ uiButton(GUI* ui, FAUSTFLOAT* zone, QAbstractButton* b) : uiItem(ui, zone), fButton(b) {}
806
+
807
+ virtual void reflectZone()
808
+ {
809
+ FAUSTFLOAT v = *fZone;
810
+ fCache = v;
811
+ fButton->setDown(v > 0.0);
812
+ }
813
+
814
+ public slots :
815
+ void pressed() { modifyZone(1.0); }
816
+ void released() { modifyZone(0.0); }
817
+ };
818
+
819
+
820
+ /**
821
+ * A checkbox that controls/reflects the value (O/1)
822
+ * of a zone.
823
+ */
824
+ class uiCheckButton : public QObject, public uiItem
825
+ {
826
+ Q_OBJECT
827
+
828
+ public:
829
+
830
+ QCheckBox* fCheckBox;
831
+
832
+ uiCheckButton(GUI* ui, FAUSTFLOAT* zone, QCheckBox* b) : uiItem(ui, zone), fCheckBox(b) {}
833
+
834
+ virtual void reflectZone()
835
+ {
836
+ FAUSTFLOAT v = *fZone;
837
+ fCache = v;
838
+ fCheckBox->setCheckState((v < 0.5) ? Qt::Unchecked : Qt::Checked);
839
+ }
840
+
841
+ public slots :
842
+ void setState(int v) { modifyZone(FAUSTFLOAT(v > 0)); }
843
+ };
844
+
845
+ /**
846
+ * A slider that controls/reflects the value (min..max)
847
+ * of a zone.
848
+ */
849
+ class uiSlider : public QObject, public uiItem, public uiConverter
850
+ {
851
+ Q_OBJECT
852
+
853
+ protected:
854
+
855
+ QAbstractSlider* fSlider;
856
+ FAUSTFLOAT fCur;
857
+ FAUSTFLOAT fMin;
858
+ FAUSTFLOAT fMax;
859
+ FAUSTFLOAT fStep;
860
+
861
+ public:
862
+
863
+ uiSlider(GUI* ui, FAUSTFLOAT* zone, QAbstractSlider* slider, FAUSTFLOAT cur, FAUSTFLOAT lo, FAUSTFLOAT hi, FAUSTFLOAT step, MetaDataUI::Scale scale)
864
+ : uiItem(ui, zone), uiConverter(scale, 0, 10000, lo, hi), fSlider(slider), fCur(cur), fMin(lo), fMax(hi), fStep(step)
865
+ {
866
+ fSlider->setMinimum(0);
867
+ fSlider->setMaximum(10000);
868
+ //fSlider->setSingleStep(fStep);
869
+ fSlider->setValue(int(0.5+fConverter->faust2ui(fCur)));
870
+ *fZone = fCur;
871
+ }
872
+
873
+ virtual ~uiSlider()
874
+ {}
875
+
876
+ virtual void reflectZone()
877
+ {
878
+ FAUSTFLOAT v = *fZone;
879
+ fCache = v;
880
+ fSlider->setValue(int(0.5+fConverter->faust2ui(v)));
881
+ }
882
+
883
+ public slots :
884
+ void setValue(int v)
885
+ {
886
+ modifyZone(fConverter->ui2faust(v));
887
+ }
888
+ };
889
+
890
+
891
+ /**
892
+ * A zone setter, an object that sets a zone with a predefined value
893
+ * every time the set(bool) method is called. The boolean parameter
894
+ * is here for compatibility with some signals and is ignored.
895
+ */
896
+ class ZoneSetter : public QObject
897
+ {
898
+ Q_OBJECT
899
+
900
+ protected:
901
+
902
+ FAUSTFLOAT fValue;
903
+ FAUSTFLOAT* fZone;
904
+
905
+ public:
906
+ explicit ZoneSetter(FAUSTFLOAT v, FAUSTFLOAT* z, QObject* parent = NULL):
907
+ QObject(parent), fValue(v), fZone(z)
908
+ {}
909
+
910
+ public slots:
911
+ void set(bool)
912
+ {
913
+ *fZone = fValue;
914
+ }
915
+ };
916
+
917
+
918
+ /**
919
+ * A set of mutually exclusive radio buttons vertically
920
+ * layed out. The names and values used for the radio buttons
921
+ * are described in the string mdescr with the following syntax
922
+ * "{'foo':3.14; 'faa':-0.34; ... 'fii':10.5}"
923
+ */
924
+ class uiRadioButtons : public QGroupBox, public uiItem
925
+ {
926
+ Q_OBJECT
927
+
928
+ protected:
929
+
930
+ std::vector<double> fValues;
931
+ std::vector<QRadioButton*> fButtons;
932
+
933
+ public:
934
+
935
+ uiRadioButtons(GUI* ui, FAUSTFLOAT* z, const char* label,
936
+ FAUSTFLOAT cur, FAUSTFLOAT lo, FAUSTFLOAT hi, FAUSTFLOAT /*step*/,
937
+ bool vertical, const char* mdescr, QWidget* parent)
938
+ : QGroupBox(label, parent), uiItem(ui, z)
939
+ {
940
+ std::vector<std::string> names;
941
+ std::vector<double> values;
942
+
943
+ if (parseMenuList(mdescr, names, values)) {
944
+
945
+ QBoxLayout* l;
946
+ if (vertical) {
947
+ l = new QVBoxLayout(this);
948
+ } else {
949
+ l = new QHBoxLayout(this);
950
+ }
951
+ l->setSpacing(5);
952
+
953
+ QRadioButton* defaultbutton = NULL;
954
+ double mindelta = FLT_MAX;
955
+
956
+ for (unsigned int i = 0; i < names.size(); i++) {
957
+ double v = values[i];
958
+ if ((v >= lo) && (v <= hi)) {
959
+
960
+ // It is a valid value included in slider's range
961
+ QRadioButton* b = new QRadioButton(QString(names[i].c_str()), this);
962
+ ZoneSetter* s = new ZoneSetter(v,z,b);
963
+ fValues.push_back(v);
964
+ fButtons.push_back(b);
965
+ connect(b,SIGNAL(clicked(bool)), s, SLOT(set(bool)));
966
+ l->addWidget(b);
967
+
968
+ // Check if this item is a good candidate to represent the current value
969
+ double delta = fabs(cur-v);
970
+ if (delta < mindelta) {
971
+ mindelta = delta;
972
+ defaultbutton = b;
973
+ }
974
+ }
975
+ }
976
+ // check the best candidate to represent the current value
977
+ if (defaultbutton) { defaultbutton->setChecked(true); }
978
+ setLayout(l);
979
+ } else {
980
+ std::cerr << "parseMenuList : (" << mdescr << ") is not a menu !\n";
981
+ }
982
+ *fZone = cur;
983
+ }
984
+
985
+ virtual void reflectZone()
986
+ {
987
+ FAUSTFLOAT v = *fZone;
988
+ fCache = v;
989
+
990
+ // select closest value
991
+ int defaultitem = -1;
992
+ double mindelta = FLT_MAX;
993
+
994
+ for (unsigned int i = 0; i < fValues.size(); i++) {
995
+ double delta = fabs(fValues[i]-v);
996
+ if (delta < mindelta) {
997
+ mindelta = delta;
998
+ defaultitem = i;
999
+ }
1000
+ }
1001
+ if (defaultitem > -1) { fButtons[defaultitem]->setChecked(true); }
1002
+ }
1003
+ };
1004
+
1005
+ /**
1006
+ * A popup menu. The names and values used for the menu items
1007
+ * are described in the string mdescr with the following syntax
1008
+ * "{'foo':3.14; 'faa':-0.34; ... 'fii':10.5}"
1009
+ */
1010
+ class uiMenu : public QComboBox, public uiItem
1011
+ {
1012
+ Q_OBJECT
1013
+
1014
+ protected:
1015
+
1016
+ std::vector<double> fValues;
1017
+
1018
+ public:
1019
+
1020
+ uiMenu(GUI* ui, FAUSTFLOAT* z, const char* /*label*/,
1021
+ FAUSTFLOAT cur, FAUSTFLOAT lo, FAUSTFLOAT hi, FAUSTFLOAT /*step*/,
1022
+ const char* mdescr, QWidget* parent)
1023
+ : QComboBox(parent), uiItem(ui, z)
1024
+ {
1025
+ std::vector<std::string> names;
1026
+ std::vector<double> values;
1027
+
1028
+ if (parseMenuList(mdescr, names, values)) {
1029
+
1030
+ int defaultitem = -1;
1031
+ double mindelta = FLT_MAX;
1032
+
1033
+ for (unsigned int i = 0; i < names.size(); i++) {
1034
+ double v = values[i];
1035
+ if ((v >= lo) && (v <= hi)) {
1036
+
1037
+ // It is a valid value : add corresponding menu item
1038
+ addItem(QString(names[i].c_str()), v);
1039
+ fValues.push_back(v);
1040
+
1041
+ // Check if this item is a good candidate to represent the current value
1042
+ double delta = fabs(cur-v);
1043
+ if (delta < mindelta) {
1044
+ mindelta = delta;
1045
+ defaultitem = count()-1;
1046
+ }
1047
+ }
1048
+ }
1049
+ // check the best candidate to represent the current value
1050
+ if (defaultitem > -1) { setCurrentIndex(defaultitem); }
1051
+ } else {
1052
+ std::cerr << "parseMenuList : (" << mdescr << ") is not a menu !\n";
1053
+ }
1054
+ connect(this,SIGNAL(activated(int)), this, SLOT(updateZone(int)));
1055
+ *fZone = cur;
1056
+ }
1057
+
1058
+ virtual void reflectZone()
1059
+ {
1060
+ FAUSTFLOAT v = *fZone;
1061
+ fCache = v;
1062
+
1063
+ // search closest value
1064
+ int defaultitem = -1;
1065
+ double mindelta = FLT_MAX;
1066
+
1067
+ for (unsigned int i=0; i<fValues.size(); i++) {
1068
+ double delta = fabs(fValues[i]-v);
1069
+ if (delta < mindelta) {
1070
+ mindelta = delta;
1071
+ defaultitem = i;
1072
+ }
1073
+ }
1074
+ if (defaultitem > -1) { setCurrentIndex(defaultitem); }
1075
+ }
1076
+
1077
+ public slots :
1078
+
1079
+ void updateZone(int)
1080
+ {
1081
+ double x = itemData(currentIndex()).toDouble();
1082
+ *fZone = x;
1083
+ }
1084
+ };
1085
+
1086
+ /**
1087
+ * A bargraph representing the value of a zone
1088
+ */
1089
+ class uiBargraph : public QObject, public uiItem
1090
+ {
1091
+ Q_OBJECT
1092
+
1093
+ protected:
1094
+
1095
+ AbstractDisplay* fBar;
1096
+
1097
+ public:
1098
+
1099
+ uiBargraph(GUI* ui, FAUSTFLOAT* zone, AbstractDisplay* bar, FAUSTFLOAT lo, FAUSTFLOAT hi)
1100
+ : uiItem(ui, zone), fBar(bar)
1101
+ {
1102
+ fBar->setRange(lo, hi);
1103
+ fBar->setValue(lo);
1104
+ *fZone = lo;
1105
+ }
1106
+
1107
+ virtual void reflectZone()
1108
+ {
1109
+ FAUSTFLOAT v = *fZone;
1110
+ fCache = v;
1111
+ fBar->setValue(v);
1112
+ }
1113
+ };
1114
+
1115
+ /**
1116
+ * A numerical entry that controls/reflects the value (min..max)
1117
+ * of a zone.
1118
+ */
1119
+ class uiNumEntry : public QObject, public uiItem
1120
+ {
1121
+ Q_OBJECT
1122
+
1123
+ protected:
1124
+
1125
+ QDoubleSpinBox* fNumEntry;
1126
+ FAUSTFLOAT fCur;
1127
+ FAUSTFLOAT fMin;
1128
+ FAUSTFLOAT fMax;
1129
+ FAUSTFLOAT fStep;
1130
+
1131
+ public:
1132
+
1133
+ uiNumEntry(GUI* ui, FAUSTFLOAT* zone, QDoubleSpinBox* numEntry, FAUSTFLOAT cur, FAUSTFLOAT lo, FAUSTFLOAT hi, FAUSTFLOAT step)
1134
+ : uiItem(ui, zone), fNumEntry(numEntry), fCur(cur), fMin(lo), fMax(hi), fStep(step)
1135
+ {
1136
+ int decimals = (fStep >= 1.0) ? 0 : int(0.5+log10(1.0/fStep));
1137
+ fNumEntry->setMinimum(fMin);
1138
+ fNumEntry->setMaximum(fMax);
1139
+ fNumEntry->setSingleStep(fStep);
1140
+ fNumEntry->setDecimals(decimals);
1141
+ fNumEntry->setValue(fCur);
1142
+ *fZone = fCur;
1143
+ }
1144
+
1145
+ virtual void reflectZone()
1146
+ {
1147
+ FAUSTFLOAT v = *fZone;
1148
+ fCache = v;
1149
+ fNumEntry->setValue(v);
1150
+ }
1151
+
1152
+ public slots :
1153
+ void setValue(double v)
1154
+ {
1155
+ modifyZone(FAUSTFLOAT(v));
1156
+ }
1157
+ };
1158
+
1159
+ /******************************************************************************
1160
+ *******************************************************************************
1161
+
1162
+ IMPLEMENTATION OF THE USER INTERFACE
1163
+ (QT 4.3 for FAUST)
1164
+
1165
+ *******************************************************************************
1166
+ *******************************************************************************/
1167
+ #if defined(HTTPCTRL) && defined(QRCODECTRL)
1168
+ // a simple utility to retrieve an abstract qr code
1169
+ // introduced to remove the dependency to qrencode
1170
+ static QImage getQRCode(const QString& url, int padding)
1171
+ {
1172
+ qrcodegen_Ecc errCorLvl = qrcodegen_Ecc_HIGH; //qrcodegen_Ecc_MEDIUM qrcodegen_Ecc_LOW Error correction level
1173
+ uint8_t qrcode[qrcodegen_BUFFER_LEN_MAX];
1174
+ uint8_t tempBuffer[qrcodegen_BUFFER_LEN_MAX];
1175
+ if (!qrcodegen_encodeText(url.toStdString().c_str(), tempBuffer, qrcode, errCorLvl, qrcodegen_VERSION_MIN, qrcodegen_VERSION_MAX, qrcodegen_Mask_AUTO, true))
1176
+ return QImage(1, 1, QImage::Format_RGB32);
1177
+
1178
+ int size = qrcodegen_getSize(qrcode);
1179
+ QRgb colors[2];
1180
+ colors[0] = qRgb(255, 255, 255); // 0 is white
1181
+ colors[1] = qRgb(0, 0, 0); // 1 is black
1182
+ // build the QRCode image
1183
+ QImage image(size+2*padding, size+2*padding, QImage::Format_RGB32);
1184
+ // clear the image
1185
+ for (int y=0; y<size + 2*padding; y++) {
1186
+ for (int x=0; x<size + 2*padding; x++) {
1187
+ image.setPixel(x, y, colors[0]);
1188
+ }
1189
+ }
1190
+ // copy the qrcode inside
1191
+ for (int y = 0; y < size; y++) {
1192
+ for (int x = 0; x < size; x++) {
1193
+ image.setPixel(x+padding, y+padding, colors[qrcodegen_getModule(qrcode, x, y) & 1]);
1194
+ }
1195
+ }
1196
+ return image;
1197
+ }
1198
+ #endif
1199
+
1200
+ class QTGUI : public QWidget, public GUI, public MetaDataUI
1201
+ {
1202
+ Q_OBJECT
1203
+
1204
+ protected:
1205
+
1206
+ QTimer* fTimer;
1207
+ std::stack<QWidget* > fGroupStack;
1208
+
1209
+ QMainWindow* fMainWindow;
1210
+ QVBoxLayout* fGeneralLayout;
1211
+
1212
+ QPixmap fQrCode;
1213
+
1214
+ bool isTabContext()
1215
+ {
1216
+ //return fGroupStack.empty() || ((!fGroupStack.empty()) && (dynamic_cast<QTabWidget*>(fGroupStack.top()) != 0));
1217
+ return ((!fGroupStack.empty()) && (dynamic_cast<QTabWidget*>(fGroupStack.top()) != NULL));
1218
+ }
1219
+
1220
+ /**
1221
+ * Insert a widget into the parent widget (the top of
1222
+ * the stack group). The label is used if this group is
1223
+ * a tab.
1224
+ */
1225
+
1226
+ void insert(const char* label, QWidget* widget)
1227
+ {
1228
+ if (!fGroupStack.empty()) {
1229
+ QWidget* mother = fGroupStack.top();
1230
+ QTabWidget* tab = dynamic_cast<QTabWidget*>(mother);
1231
+ if (tab) {
1232
+ tab->addTab(widget, label);
1233
+ } else {
1234
+ widget->setParent(mother);
1235
+ mother->layout()->addWidget(widget);
1236
+ }
1237
+ }
1238
+ }
1239
+
1240
+ /**
1241
+ * Analyses a full label and activates the relevant options. Returns a simplified
1242
+ * label (without options) and an amount of stack adjustement (in case additional
1243
+ * containers were pushed on the stack).
1244
+ */
1245
+
1246
+ int checkLabelOptions(QWidget* widget, const std::string& fullLabel, std::string& simplifiedLabel)
1247
+ {
1248
+ std::map<std::string, std::string> metadata;
1249
+ extractMetadata(fullLabel, simplifiedLabel, metadata);
1250
+
1251
+ if (metadata.count("tooltip")) {
1252
+ widget->setToolTip(metadata["tooltip"].c_str());
1253
+ }
1254
+ if (metadata["option"] == "detachable") {
1255
+ //openHandleBox(simplifiedLabel.c_str());
1256
+ return 1;
1257
+ }
1258
+
1259
+ // no adjustement of the stack needed
1260
+ return 0;
1261
+ }
1262
+
1263
+ /**
1264
+ * Check if a tooltip is associated to a zone and add it to the corresponding widget
1265
+ */
1266
+ void checkForTooltip(FAUSTFLOAT* zone, QWidget* widget)
1267
+ {
1268
+ if (fTooltip.count(zone)) {
1269
+ widget->setToolTip(fTooltip[zone].c_str());
1270
+ }
1271
+ }
1272
+
1273
+ void openBox(const char* fulllabel, QLayout* layout)
1274
+ {
1275
+ std::map<std::string, std::string> metadata;
1276
+ std::string label;
1277
+ extractMetadata(fulllabel, label, metadata);
1278
+ layout->QTSetMargins(5);
1279
+ QWidget* box;
1280
+
1281
+ label = startWith(label, "0x") ? "" : label;
1282
+
1283
+ if (fGroupStack.empty()) {
1284
+ if (isTabContext()) {
1285
+ box = new QWidget(this);
1286
+ // set background color
1287
+ QPalette pal = box->palette();
1288
+ pal.setColor(box->backgroundRole(), QColor::fromRgb(150, 150, 150));
1289
+ box->setPalette(pal);
1290
+
1291
+ } else if (label.size() > 0) {
1292
+ QGroupBox* group = new QGroupBox(this);
1293
+ group->setTitle(label.c_str());
1294
+ box = group;
1295
+
1296
+ } else {
1297
+ // no label here we use simple widget
1298
+ layout->QTSetMargins(0);
1299
+ box = new QWidget(this);
1300
+ }
1301
+
1302
+ box->setLayout(layout);
1303
+ fGeneralLayout->addWidget(box);
1304
+ if (fGroupTooltip != "") {
1305
+ box->setToolTip(fGroupTooltip.c_str());
1306
+ fGroupTooltip = "";
1307
+ }
1308
+ } else {
1309
+ if (isTabContext()) {
1310
+ box = new QWidget();
1311
+ // set background color
1312
+ QPalette pal = box->palette();
1313
+ pal.setColor(box->backgroundRole(), QColor::fromRgb(150, 150, 150));
1314
+ box->setPalette(pal);
1315
+
1316
+ } else if (label.size()>0) {
1317
+ QGroupBox* group = new QGroupBox();
1318
+ group->setTitle(label.c_str());
1319
+ box = group;
1320
+
1321
+ } else {
1322
+ // no label here we use simple widget
1323
+ layout->QTSetMargins(0);
1324
+ box = new QWidget;
1325
+ }
1326
+
1327
+ box->setLayout(layout);
1328
+ if (fGroupTooltip != "") {
1329
+ box->setToolTip(fGroupTooltip.c_str());
1330
+ fGroupTooltip = "";
1331
+ }
1332
+ }
1333
+ insert(label.c_str(), box);
1334
+ fGroupStack.push(box);
1335
+ }
1336
+
1337
+ void openTab(const char* label)
1338
+ {
1339
+ QTabWidget* group;
1340
+
1341
+ if (fGroupStack.empty()) {
1342
+ group = new QTabWidget(this);
1343
+ fGeneralLayout->addWidget(group);
1344
+ } else {
1345
+ group = new QTabWidget();
1346
+ }
1347
+
1348
+ insert(label, group);
1349
+ fGroupStack.push(group);
1350
+ }
1351
+
1352
+ public slots:
1353
+
1354
+ void update()
1355
+ {
1356
+ updateAllGuis();
1357
+ }
1358
+
1359
+ public:
1360
+
1361
+ QTGUI(QWidget* parent) : QWidget(parent)
1362
+ {
1363
+ fGeneralLayout = new QVBoxLayout;
1364
+ setLayout(fGeneralLayout);
1365
+ QWidget::show();
1366
+
1367
+ fMainWindow = NULL;
1368
+ fTimer = NULL;
1369
+ }
1370
+
1371
+ QTGUI():QWidget()
1372
+ {
1373
+ fGeneralLayout = new QVBoxLayout;
1374
+ setLayout(fGeneralLayout);
1375
+ QWidget::show();
1376
+
1377
+ fTimer = NULL;
1378
+
1379
+ fMainWindow = new QMainWindow;
1380
+ QScrollArea *sa = new QScrollArea(fMainWindow);
1381
+
1382
+ sa->setWidgetResizable(true);
1383
+ sa->setWidget(this);
1384
+
1385
+ fMainWindow->setCentralWidget(sa);
1386
+ }
1387
+
1388
+ virtual ~QTGUI()
1389
+ {
1390
+ delete fGeneralLayout;
1391
+ }
1392
+
1393
+ QString styleSheet()
1394
+ {
1395
+ QString styleSheet("");
1396
+ QFile file(":/Grey.qss");
1397
+
1398
+ if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {
1399
+ styleSheet = QLatin1String(file.readAll());
1400
+ file.close();
1401
+ }
1402
+
1403
+ return styleSheet;
1404
+ }
1405
+
1406
+ /**
1407
+ * Analyses the widget zone metadata declarations and takes
1408
+ * appropriate actions
1409
+ */
1410
+ virtual void declare(FAUSTFLOAT* zone, const char* key, const char* value)
1411
+ {
1412
+ MetaDataUI::declare(zone, key, value);
1413
+ }
1414
+
1415
+ #if defined(HTTPCTRL) && defined(QRCODECTRL)
1416
+
1417
+ //
1418
+ // Returns the IP address of the machine (to be qrcoded)
1419
+ //
1420
+ QString extractIPnum()
1421
+ {
1422
+ QList<QHostAddress> ipAdresses = QNetworkInterface::allAddresses();
1423
+ QList<QHostAddress>::iterator it;
1424
+ QString localhost("localhost");
1425
+
1426
+ for (it = ipAdresses.begin(); it != ipAdresses.end(); it++) {
1427
+ if ((*it).protocol() == QAbstractSocket::IPv4Protocol && (*it) != QHostAddress::LocalHost) {
1428
+ return it->toString();
1429
+ } else if ((*it).protocol() == QAbstractSocket::IPv4Protocol && (*it) == QHostAddress::LocalHost) {
1430
+ localhost = it->toString();
1431
+ }
1432
+ }
1433
+
1434
+ return localhost;
1435
+ }
1436
+
1437
+ //
1438
+ // Used in HTTPD mode, display the QRCode of the URL of the application
1439
+ //
1440
+ void displayQRCode(int portnum)
1441
+ {
1442
+ QString url("http://");
1443
+ url += extractIPnum();
1444
+ url += ":";
1445
+ url += QString::number(portnum);
1446
+ displayQRCode(url, NULL);
1447
+ }
1448
+
1449
+ void displayQRCode(const QString& url, QMainWindow* parent = NULL)
1450
+ {
1451
+ if (parent == NULL) {
1452
+ parent = new QMainWindow;
1453
+ }
1454
+
1455
+ QWidget* centralWidget = new QWidget;
1456
+ parent->setCentralWidget(centralWidget);
1457
+ // QTextEdit* httpdText = new QTextEdit(centralWidget);
1458
+ QTextBrowser* myBro = new QTextBrowser(centralWidget);
1459
+
1460
+ // //Construction of the flashcode
1461
+ // const int padding = 5;
1462
+ // QRcode* qrc = QRcode_encodeString(url.toLatin1().data(), 0, QR_ECLEVEL_H, QR_MODE_8, 1);
1463
+ //
1464
+ // // qDebug() << "QRcode width = " << qrc->width;
1465
+ //
1466
+ // QRgb colors[2];
1467
+ // colors[0] = qRgb(255, 255, 255); // 0 is white
1468
+ // colors[1] = qRgb(0, 0, 0); // 1 is black
1469
+ //
1470
+ // // build the QRCode image
1471
+ // QImage image(qrc->width+2*padding, qrc->width+2*padding, QImage::Format_RGB32);
1472
+ // // clear the image
1473
+ // for (int y = 0; y < qrc->width+2*padding; y++) {
1474
+ // for (int x = 0; x < qrc->width+2*padding; x++) {
1475
+ // image.setPixel(x, y, colors[0]);
1476
+ // }
1477
+ // }
1478
+ // // copy the qrcode inside
1479
+ // for (int y = 0; y < qrc->width; y++) {
1480
+ // for (int x = 0; x < qrc->width; x++) {
1481
+ // image.setPixel(x+padding, y+padding, colors[qrc->data[y*qrc->width+x]&1]);
1482
+ // }
1483
+ // }
1484
+
1485
+ const int padding = 5;
1486
+ QImage image = getQRCode (url, padding);
1487
+ // QImage big = image.scaledToWidth(qrc->width*8);
1488
+ QImage big = image.scaledToWidth(image.width() * 8);
1489
+ QLabel* myLabel = new QLabel(centralWidget);
1490
+
1491
+ fQrCode = QPixmap::fromImage(big);
1492
+ myLabel->setPixmap(fQrCode);
1493
+
1494
+ //----Written Address
1495
+
1496
+ QString sheet = QString::fromLatin1("a{ text-decoration: underline; color: white; font: Menlo; font-size: 14px }");
1497
+ // myBro->document()->setDefaultStyleSheet(sheet);
1498
+ // myBro->setStyleSheet("*{color: white; font: Menlo; font-size: 14px }");
1499
+
1500
+ QString text("<br>Please connect to ");
1501
+ text += "<br><a href = " + url + ">"+ url+ "</a>";
1502
+ text += "<br>Or scan the QR code below";
1503
+
1504
+ myBro->setOpenExternalLinks(true);
1505
+ myBro->setHtml(text);
1506
+ myBro->setAlignment(Qt::AlignCenter);
1507
+ myBro->setFixedWidth(big.width());
1508
+ // myBro->setFixedHeight(myBro->minimumHeight());
1509
+
1510
+ QGridLayout *mainLayout = new QGridLayout;
1511
+ mainLayout->addWidget(myBro, 0, 1);
1512
+ mainLayout->addWidget(myLabel, 1, 1);
1513
+ centralWidget->setLayout(mainLayout);
1514
+ centralWidget->show();
1515
+ centralWidget->adjustSize();
1516
+ parent->show();
1517
+ }
1518
+
1519
+ bool toPNG(const QString& filename, QString& error)
1520
+ {
1521
+ QFile file(filename);
1522
+ if (file.open(QIODevice::WriteOnly)) {
1523
+ fQrCode.save(&file, "PNG");
1524
+ return true;
1525
+ } else {
1526
+ error = "Impossible to write file.";
1527
+ return false;
1528
+ }
1529
+ }
1530
+ #endif
1531
+
1532
+ virtual bool run()
1533
+ {
1534
+ if (!fTimer) {
1535
+ fTimer = new QTimer(this);
1536
+ QObject::connect(fTimer, SIGNAL(timeout()), this, SLOT(update()));
1537
+ fTimer->start(100);
1538
+ }
1539
+
1540
+ if (fMainWindow) {
1541
+ fMainWindow->show();
1542
+ }
1543
+ return true;
1544
+ }
1545
+
1546
+ virtual void stop()
1547
+ {
1548
+ if (fTimer) {
1549
+ fTimer->stop();
1550
+ delete fTimer;
1551
+ fTimer = NULL;
1552
+ }
1553
+
1554
+ GUI::stop();
1555
+ }
1556
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////
1557
+ //
1558
+ // OPEN AND CLOSE GROUPS
1559
+ //
1560
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////
1561
+
1562
+ virtual void openHorizontalBox(const char* label)
1563
+ {
1564
+ openBox(label, new QHBoxLayout());
1565
+ }
1566
+
1567
+ virtual void openVerticalBox(const char* label)
1568
+ {
1569
+ openBox(label, new QVBoxLayout());
1570
+ }
1571
+
1572
+ virtual void openFrameBox(const char*)
1573
+ {}
1574
+
1575
+ virtual void openTabBox(const char* label)
1576
+ {
1577
+ openTab(label);
1578
+ }
1579
+
1580
+ virtual void closeBox()
1581
+ {
1582
+ QWidget* group = fGroupStack.top();
1583
+ fGroupStack.pop();
1584
+ if (fGroupStack.empty()) {
1585
+ group->show();
1586
+ group->adjustSize();
1587
+ }
1588
+ }
1589
+
1590
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////
1591
+ //
1592
+ // ADD BUTTONS AND CHECKBOX
1593
+ //
1594
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////
1595
+
1596
+ virtual void addButton(const char* label, FAUSTFLOAT* zone)
1597
+ {
1598
+ QAbstractButton* w = new QPushButton(label);
1599
+ // w->setAttribute(Qt::WA_MacNoClickThrough); // obsolete at least since Qt 5.11
1600
+ uiButton* c = new uiButton(this, zone, w);
1601
+
1602
+ insert(label, w);
1603
+ QObject::connect(w, SIGNAL(pressed()), c, SLOT(pressed()));
1604
+ QObject::connect(w, SIGNAL(released()), c, SLOT(released()));
1605
+ checkForTooltip(zone, w);
1606
+ clearMetadata();
1607
+ }
1608
+
1609
+ virtual void addToggleButton(const char*, FAUSTFLOAT*)
1610
+ {}
1611
+
1612
+ virtual void addCheckButton(const char* label, FAUSTFLOAT* zone)
1613
+ {
1614
+ QCheckBox* w = new QCheckBox(label);
1615
+ uiCheckButton* c = new uiCheckButton(this, zone, w);
1616
+
1617
+ insert(label, w);
1618
+ QObject::connect(w, SIGNAL(stateChanged(int)), c, SLOT(setState(int)));
1619
+ checkForTooltip(zone, w);
1620
+ clearMetadata();
1621
+ }
1622
+
1623
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////
1624
+ //
1625
+ // ADD NUMERICAL ENTRY
1626
+ //
1627
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////
1628
+
1629
+ virtual void addNumEntry(const char* label, FAUSTFLOAT* zone, FAUSTFLOAT init, FAUSTFLOAT min, FAUSTFLOAT max, FAUSTFLOAT step)
1630
+ {
1631
+ if (isKnob(zone)) {
1632
+ addVerticalKnob(label, zone, init, min, max, step);
1633
+ return;
1634
+ } else if (isRadio(zone)) {
1635
+ addVerticalRadioButtons(label, zone, init, min, max, step, fRadioDescription[zone].c_str());
1636
+ return;
1637
+ } else if (isMenu(zone)) {
1638
+ addMenu(label, zone, init, min, max, step, fMenuDescription[zone].c_str());
1639
+ return;
1640
+ }
1641
+ //insert(label, new QDoubleSpinBox());
1642
+ if (label && label[0]) openVerticalBox(label);
1643
+ QDoubleSpinBox* w = new QDoubleSpinBox();
1644
+ uiNumEntry* c = new uiNumEntry(this, zone, w, init, min, max, step);
1645
+ insert(label, w);
1646
+ std::string suffix = " " + fUnit[zone];
1647
+ w->setSuffix(suffix.c_str());
1648
+ QObject::connect(w, SIGNAL(valueChanged(double)), c, SLOT(setValue(double)));
1649
+ if (label && label[0]) closeBox();
1650
+ checkForTooltip(zone, w);
1651
+ clearMetadata();
1652
+ }
1653
+
1654
+ // special num entry without buttons
1655
+ virtual void addNumDisplay(const char* label, FAUSTFLOAT* zone, FAUSTFLOAT init, FAUSTFLOAT min, FAUSTFLOAT max, FAUSTFLOAT step)
1656
+ {
1657
+ //insert(label, new QDoubleSpinBox());
1658
+ if (label && label[0]) openVerticalBox(label);
1659
+ QDoubleSpinBox* w = new QDoubleSpinBox();
1660
+ w->setAlignment(Qt::AlignHCenter);
1661
+ #if 1
1662
+ w->setStyleSheet(
1663
+ "QDoubleSpinBox {"
1664
+ "border: 2px solid orange;"
1665
+ "border-radius: 5px;"
1666
+ "font-size: 8pt;"
1667
+ "}"
1668
+ );
1669
+ #endif
1670
+ uiNumEntry* c = new uiNumEntry(this, zone, w, init, min, max, step);
1671
+ insert(label, w);
1672
+ w->setButtonSymbols(QAbstractSpinBox::NoButtons);
1673
+ std::string suffix = " " + fUnit[zone];
1674
+ w->setSuffix(suffix.c_str());
1675
+ QObject::connect(w, SIGNAL(valueChanged(double)), c, SLOT(setValue(double)));
1676
+ if (label && label[0]) closeBox();
1677
+ checkForTooltip(zone, w);
1678
+ // Metadata is not cleared here, since it will be by the enclosing element calling addNumDisplay
1679
+ }
1680
+
1681
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////
1682
+ //
1683
+ // ADD KNOBS
1684
+ //
1685
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////
1686
+
1687
+ virtual void addVerticalKnob(const char* label, FAUSTFLOAT* zone, FAUSTFLOAT init, FAUSTFLOAT min, FAUSTFLOAT max, FAUSTFLOAT step)
1688
+ {
1689
+ openVerticalBox(label);
1690
+ QDial* w = new QDial(); //qsynthKnob();
1691
+ uiSlider* c = new uiSlider(this, zone, w, init, min, max, step, getScale(zone));
1692
+ insert(label, w);
1693
+ w->setStyle(new qsynthDialVokiStyle());
1694
+ w->setFocusPolicy(Qt::StrongFocus);
1695
+ w->setWrapping(DIAL_WRAPPING);
1696
+ QObject::connect(w, SIGNAL(valueChanged(int)), c, SLOT(setValue(int)));
1697
+ addNumDisplay(0, zone, init, min, max, step);
1698
+
1699
+ // compute the size of the knob+display
1700
+ int width = int(64 * pow(2, fGuiSize[zone]));
1701
+ int height = int(100 * pow(2, fGuiSize[zone]));
1702
+ fGroupStack.top()->setMinimumSize(width, height);
1703
+ fGroupStack.top()->setMaximumSize(width, height);
1704
+
1705
+ closeBox();
1706
+ checkForTooltip(zone, w);
1707
+ clearMetadata();
1708
+ }
1709
+
1710
+ virtual void addHorizontalKnob(const char* label, FAUSTFLOAT* zone, FAUSTFLOAT init, FAUSTFLOAT min, FAUSTFLOAT max, FAUSTFLOAT step)
1711
+ {
1712
+ openHorizontalBox(label);
1713
+ QDial* w = new QDial(); //new qsynthKnob();
1714
+ uiSlider* c = new uiSlider(this, zone, w, init, min, max, step, getScale(zone));
1715
+ insert(label, w);
1716
+ w->setStyle(new qsynthDialVokiStyle());
1717
+ w->setFocusPolicy(Qt::StrongFocus);
1718
+ w->setWrapping(DIAL_WRAPPING);
1719
+ QObject::connect(w, SIGNAL(valueChanged(int)), c, SLOT(setValue(int)));
1720
+ addNumDisplay(0, zone, init, min, max, step);
1721
+ closeBox();
1722
+ checkForTooltip(zone, w);
1723
+ clearMetadata();
1724
+ }
1725
+
1726
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////
1727
+ //
1728
+ // ADD SLIDERS
1729
+ //
1730
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////
1731
+
1732
+ virtual void addVerticalSlider(const char* label, FAUSTFLOAT* zone, FAUSTFLOAT init, FAUSTFLOAT min, FAUSTFLOAT max, FAUSTFLOAT step)
1733
+ {
1734
+ if (isKnob(zone)) {
1735
+ addVerticalKnob(label, zone, init, min, max, step);
1736
+ return;
1737
+ } else if (isRadio(zone)) {
1738
+ addVerticalRadioButtons(label, zone, init, min, max, step, fRadioDescription[zone].c_str());
1739
+ return;
1740
+ } else if (isMenu(zone)) {
1741
+ addMenu(label, zone, init, min, max, step, fMenuDescription[zone].c_str());
1742
+ return;
1743
+ }
1744
+ openVerticalBox(label);
1745
+ QSlider* w = new QSlider(Qt::Vertical);
1746
+ w->setMinimumHeight(160);
1747
+ w->setMinimumWidth(34);
1748
+ //w->setTickPosition(QSlider::TicksBothSides);
1749
+ uiSlider* c = new uiSlider(this, zone, w, init, min, max, step, getScale(zone));
1750
+ insert(label, w);
1751
+ QObject::connect(w, SIGNAL(valueChanged(int)), c, SLOT(setValue(int)));
1752
+ addNumDisplay(0, zone, init, min, max, step);
1753
+ closeBox();
1754
+ checkForTooltip(zone, w);
1755
+ clearMetadata();
1756
+ }
1757
+
1758
+ virtual void addHorizontalSlider(const char* label, FAUSTFLOAT* zone, FAUSTFLOAT init, FAUSTFLOAT min, FAUSTFLOAT max, FAUSTFLOAT step)
1759
+ {
1760
+ if (isKnob(zone)) {
1761
+ addHorizontalKnob(label, zone, init, min, max, step);
1762
+ return;
1763
+ } else if (isRadio(zone)) {
1764
+ addHorizontalRadioButtons(label, zone, init, min, max, step, fRadioDescription[zone].c_str());
1765
+ return;
1766
+ } else if (isMenu(zone)) {
1767
+ addMenu(label, zone, init, min, max, step, fMenuDescription[zone].c_str());
1768
+ return;
1769
+ }
1770
+ openHorizontalBox(label);
1771
+ QSlider* w = new QSlider(Qt::Horizontal);
1772
+ w->setMinimumHeight(34);
1773
+ w->setMinimumWidth(160);
1774
+ //w->setTickPosition(QSlider::TicksBothSides);
1775
+ uiSlider* c = new uiSlider(this, zone, w, init, min, max, step, getScale(zone));
1776
+ insert(label, w);
1777
+ QObject::connect(w, SIGNAL(valueChanged(int)), c, SLOT(setValue(int)));
1778
+ addNumDisplay(0, zone, init, min, max, step);
1779
+ closeBox();
1780
+ checkForTooltip(zone, w);
1781
+ clearMetadata();
1782
+ }
1783
+
1784
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////
1785
+ //
1786
+ // ADD RADIO-BUTTONS AND MENUS
1787
+ //
1788
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////
1789
+
1790
+ virtual void addVerticalRadioButtons(const char* label, FAUSTFLOAT* zone, FAUSTFLOAT init, FAUSTFLOAT min,
1791
+ FAUSTFLOAT max, FAUSTFLOAT step, const char* mdescr)
1792
+ {
1793
+ uiRadioButtons* w = new uiRadioButtons(this, zone, label, init, min, max, step, true, mdescr, 0);
1794
+ insert(label, w);
1795
+ checkForTooltip(zone, w);
1796
+ clearMetadata();
1797
+ }
1798
+
1799
+ virtual void addHorizontalRadioButtons(const char* label, FAUSTFLOAT* zone, FAUSTFLOAT init, FAUSTFLOAT min,
1800
+ FAUSTFLOAT max, FAUSTFLOAT step, const char* mdescr)
1801
+ {
1802
+ uiRadioButtons* w = new uiRadioButtons(this, zone, label, init, min, max, step, false, mdescr, 0);
1803
+ insert(label, w);
1804
+ checkForTooltip(zone, w);
1805
+ clearMetadata();
1806
+ }
1807
+
1808
+ virtual void addMenu(const char* label, FAUSTFLOAT* zone, FAUSTFLOAT init, FAUSTFLOAT min,
1809
+ FAUSTFLOAT max, FAUSTFLOAT step, const char* mdescr)
1810
+ {
1811
+ if (label && label[0]) openVerticalBox(label);
1812
+ uiMenu* w = new uiMenu(this, zone, label, init, min, max, step, mdescr, 0);
1813
+ insert(label, w);
1814
+ checkForTooltip(zone, w);
1815
+ if (label && label[0]) closeBox();
1816
+ clearMetadata();
1817
+ }
1818
+
1819
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////
1820
+ //
1821
+ // ADD BARGRAPHS
1822
+ //
1823
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////
1824
+
1825
+ virtual void addHorizontalBargraph(const char* label, FAUSTFLOAT* zone, FAUSTFLOAT min, FAUSTFLOAT max)
1826
+ {
1827
+ openVerticalBox(label);
1828
+ if (isNumerical(zone)) {
1829
+ addNumDisplay(0, zone, min, min, max, (max-min)/pow(10, FLT_DIG));
1830
+ } else {
1831
+ AbstractDisplay* bargraph;
1832
+ bool db = (fUnit[zone] == "dB");
1833
+ if (isLed(zone)) {
1834
+ if (db) {
1835
+ bargraph = new dbLED(min, max);
1836
+ } else {
1837
+ bargraph = new LED(min, max);
1838
+ }
1839
+ } else {
1840
+ if (db) {
1841
+ bargraph = new dbHorizontalBargraph(min, max);
1842
+ } else {
1843
+ bargraph = new linHorizontalBargraph(min, max);
1844
+ }
1845
+ }
1846
+
1847
+ new uiBargraph(this, zone, bargraph, min, max);
1848
+ insert(label, bargraph);
1849
+ checkForTooltip(zone, bargraph);
1850
+ }
1851
+ closeBox();
1852
+ clearMetadata();
1853
+ }
1854
+
1855
+ virtual void addVerticalBargraph(const char* label, FAUSTFLOAT* zone, FAUSTFLOAT min, FAUSTFLOAT max)
1856
+ {
1857
+ openVerticalBox(label);
1858
+ if (isNumerical(zone)) {
1859
+ addNumDisplay(0, zone, min, min, max, (max-min)/pow(10, FLT_DIG));
1860
+ } else {
1861
+ AbstractDisplay* bargraph;
1862
+ bool db = (fUnit[zone] == "dB");
1863
+ if (isLed(zone)) {
1864
+ if (db) {
1865
+ bargraph = new dbLED(min, max);
1866
+ } else {
1867
+ bargraph = new LED(min, max);
1868
+ }
1869
+ } else {
1870
+ if (db) {
1871
+ bargraph = new dbVerticalBargraph(min, max);
1872
+ } else {
1873
+ bargraph = new linVerticalBargraph(min, max);
1874
+ }
1875
+ }
1876
+ new uiBargraph(this, zone, bargraph, min, max);
1877
+ insert(label, bargraph);
1878
+ addNumDisplay(0, zone, min, min, max, (max-min)/1000.0);
1879
+ checkForTooltip(zone, bargraph);
1880
+ }
1881
+ closeBox();
1882
+ clearMetadata();
1883
+ }
1884
+ };
1885
+
1886
+ #ifdef _WIN32
1887
+ # pragma warning (default: 4100)
1888
+ #endif
1889
+
1890
+ #endif
1891
+ /************************** END QTUI.h **************************/