You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

490 lines
15KB

  1. /*
  2. ==============================================================================
  3. This file is part of the dRowAudio JUCE module
  4. Copyright 2004-13 by dRowAudio.
  5. ------------------------------------------------------------------------------
  6. dRowAudio is provided under the terms of The MIT License (MIT):
  7. Permission is hereby granted, free of charge, to any person obtaining a copy
  8. of this software and associated documentation files (the "Software"), to deal
  9. in the Software without restriction, including without limitation the rights
  10. to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  11. copies of the Software, and to permit persons to whom the Software is
  12. furnished to do so, subject to the following conditions:
  13. The above copyright notice and this permission notice shall be included in all
  14. copies or substantial portions of the Software.
  15. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  16. IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  17. FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  18. AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  19. LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  20. OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  21. SOFTWARE.
  22. ==============================================================================
  23. */
  24. #ifndef _DROWAUDIOHEADER_H_
  25. #define _DROWAUDIOHEADER_H_
  26. /**
  27. @mainpage dRowAudio - A JUCE module for high level audio application development.
  28. @details
  29. dRowAudio is a 3rd party JUCE module designed for rapid audio application
  30. development. It contains classes for audio processing and gui elements.
  31. Additionally there are several wrappers around 3rd party libraries including
  32. cURL, FFTReal and SoundTouch. dRowAudio is written in the strict JUCE style,
  33. closely following the style guide set out at [JUCE Coding Standards][1].
  34. dRowAudio is hosted on Github at [https://github.com/drowaudio/drowaudio][2]
  35. The online documentation is at [http://drowaudio.co.uk/docs/][3]
  36. A wiki with feature overview and demo screenshots can be found at
  37. [http://www.rawmaterialsoftware.com/wiki/index.php/DRowAudio][4]
  38. ## Platforms
  39. All platforms supported by JUCE are also supported by dRowAudio. Currently these
  40. platforms include:
  41. - **Windows**: Applications and VST/RTAS/NPAPI/ActiveX plugins can be built
  42. using MS Visual Studio. The results are all fully compatible with Windows
  43. XP, Vista or Windows 7.
  44. - **Mac OS X**: Applications and VST/AudioUnit/RTAS/NPAPI plugins with Xcode.
  45. - **GNU/Linux**: Applications and plugins can be built for any kernel 2.6 or
  46. later.
  47. - **iOS**: Native iPhone and iPad apps.
  48. - **Android**: Supported.
  49. ## Prerequisites
  50. This documentation assumes that the reader has a working knowledge of JUCE.
  51. ## External Modules
  52. In order to use the cURL classes you will need to link to the cURL library.
  53. This is included as part of Mac OSX, for Windows there pre-built 32-bit binaries
  54. or you can download the library yourself for the most recent version.
  55. Instructions for linkage are detailed on the [dRowAudio wiki][4].
  56. Although some aspects of dRowAudio rely on other 3rd party modules such as
  57. [SoundTouch][5] and [FFTReal][6], these are included as part of the module so
  58. no external linking is required. Their use should be transparent to the user.
  59. ## Integration
  60. dRowAudio requires recent versions of JUCE. It won't work with versions 2.28 or
  61. earlier. To use the library it is necessary to first download JUCE to a
  62. location where your development environment can find it. Or, you can use your
  63. existing installation of JUCE.
  64. To use the module simply include it, or a symbolic link to it, in your
  65. juce/modules folder. Simply them run the Introjucer as normal and tick the
  66. dRowAudio module. Config flags are provided to disable some functionality if
  67. not required.
  68. ## License
  69. Copyright (C) 2013 by David Rowland ([e-mail][0])
  70. dRowAudio is provided under the terms of The MIT License (MIT):
  71. Permission is hereby granted, free of charge, to any person obtaining a copy of
  72. this software and associated documentation files (the "Software"), to deal in the
  73. Software without restriction, including without limitation the rights to use,
  74. copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
  75. Software, and to permit persons to whom the Software is furnished to do so,
  76. subject to the following conditions:
  77. The above copyright notice and this permission notice shall be included in all
  78. copies or substantial portions of the Software.
  79. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  80. IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
  81. FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
  82. COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
  83. IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
  84. WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  85. Some portions of the software including but not limited to [SoundTouch][5] and
  86. [FFTReal][6] are included with in the repository but released under separate
  87. licences. Please see the individual source files for details.
  88. [0]: mailto:dave@drowaudio.co.uk "David Rowland (Email)"
  89. [1]: http://www.rawmaterialsoftware.com/wiki/index.php/Coding_Standards
  90. [2]: https://github.com/drowaudio/drowaudio
  91. [3]: http://drowaudio.co.uk/docs/
  92. [4]: http://www.rawmaterialsoftware.com/wiki/index.php/DRowAudio
  93. [5]: http://www.surina.net/soundtouch/index.html
  94. [6]: http://ldesoras.free.fr/prod.html
  95. [7]: http://www.gnu.org/licenses/gpl-2.0.html
  96. [8]: http://www.opensource.org/licenses/mit-license.html "The MIT License"
  97. @author David Rowland (<a href="mailto:dave@drowaudio.co.uk">email</a>)
  98. @version 1.0
  99. @date 2008
  100. @copyright Copyright (C) 2013 by David Rowland.
  101. @copyright Provided under the [The MIT License][5]
  102. */
  103. //=============================================================================
  104. #include <modules/juce_audio_basics/juce_audio_basics.h>
  105. #include <modules/juce_audio_devices/juce_audio_devices.h>
  106. #include <modules/juce_audio_formats/juce_audio_formats.h>
  107. #include <modules/juce_audio_utils/juce_audio_utils.h>
  108. #include <modules/juce_core/juce_core.h>
  109. #include <modules/juce_data_structures/juce_data_structures.h>
  110. #include <modules/juce_events/juce_events.h>
  111. #include <modules/juce_graphics/juce_graphics.h>
  112. #include <modules/juce_gui_basics/juce_gui_basics.h>
  113. #if JUCE_MODULE_AVAILABLE_juce_cryptography
  114. #include <modules/juce_cryptography/juce_cryptography.h>
  115. #endif
  116. #if JUCE_MAC || JUCE_IOS
  117. #define Component CarbonDummyCompName
  118. #include <Accelerate/Accelerate.h>
  119. #undef Component
  120. #endif
  121. #undef min
  122. #undef max
  123. #ifdef __clang__
  124. #pragma clang diagnostic push
  125. #pragma clang diagnostic ignored "-Wunused-function"
  126. #endif
  127. //=============================================================================
  128. /** Config: DROWAUDIO_USE_FFTREAL
  129. Enables the FFTReal library. By default this is enabled except on the Mac
  130. where the Accelerate framework is preferred. However, if you do explicity
  131. enable this setting fftreal can be used for testing purposes.
  132. */
  133. #ifndef DROWAUDIO_USE_FFTREAL
  134. #if (! JUCE_MAC)
  135. #define DROWAUDIO_USE_FFTREAL 1
  136. #endif
  137. #endif
  138. /** Config: DROWAUDIO_USE_SOUNDTOUCH
  139. Enables the SoundTouch library and the associated SoundTouch classes for
  140. independant pitch and tempo scaling. By default this is enabled.
  141. */
  142. #ifndef DROWAUDIO_USE_SOUNDTOUCH
  143. #define DROWAUDIO_USE_SOUNDTOUCH 1
  144. #endif
  145. /** Config: DROWAUDIO_USE_CURL
  146. Enables the cURL library and the associated network classes. By default
  147. this is enabled.
  148. */
  149. #ifndef DROWAUDIO_USE_CURL
  150. #define DROWAUDIO_USE_CURL 1
  151. #endif
  152. //=============================================================================
  153. // fftReal needs to be outside of the drow namespace
  154. #if DROWAUDIO_USE_FFTREAL
  155. #include "audio/fft/fftreal/FFTReal.h"
  156. #endif
  157. //=============================================================================
  158. namespace drow {
  159. using namespace juce;
  160. using juce::int64;
  161. using juce::uint32;
  162. using juce::int32;
  163. using juce::MemoryBlock;
  164. using juce::UnitTest;
  165. //using juce::Rectangle;
  166. // Audio
  167. #ifndef __DROWAUDIO_AUDIOFILEPLAYER_H__
  168. #include "audio/dRowAudio_AudioFilePlayer.h"
  169. #endif
  170. #ifndef __DROWAUDIO_AUDIOFILEPLAYEREXT_H__
  171. #include "audio/dRowAudio_AudioFilePlayerExt.h"
  172. #endif
  173. #ifndef __DROWAUDIO_AUDIOSAMPLEBUFFERAUDIOFORMAT_H__
  174. #include "audio/dRowAudio_AudioSampleBufferAudioFormat.h"
  175. #endif
  176. #ifndef __DROWAUDIO_SOUNDTOUCHPROCESSOR_H__
  177. #include "audio/dRowAudio_SoundTouchProcessor.h"
  178. #endif
  179. #ifndef __DROWAUDIO_SOUNDTOUCHAUDIOSOURCE_H__
  180. #include "audio/dRowAudio_SoundTouchAudioSource.h"
  181. #endif
  182. #ifndef __DROWAUDIO_FILTERINGAUDIOSOURCE_H__
  183. #include "audio/dRowAudio_FilteringAudioSource.h"
  184. #endif
  185. #ifndef __DROWAUDIO_REVERSIBLEAUDIOSOURCE_H__
  186. #include "audio/dRowAudio_ReversibleAudioSource.h"
  187. #endif
  188. #ifndef __DROWAUDIO_LOOPINGAUDIOSOURCE_H__
  189. #include "audio/dRowAudio_LoopingAudioSource.h"
  190. #endif
  191. #ifndef __DROWAUDIO_PITCH_H__
  192. #include "audio/dRowAudio_Pitch.h"
  193. #endif
  194. #ifndef __DROWAUDIO_PITCHDETECTOR_H__
  195. #include "audio/dRowAudio_PitchDetector.h"
  196. #endif
  197. #ifndef __DROWAUDIO_AUDIOUTILITY_H__
  198. #include "audio/dRowAudio_AudioUtility.h"
  199. #endif
  200. #ifndef __DROWAUDIO_FIFOBUFFER_H__
  201. #include "audio/dRowAudio_FifoBuffer.h"
  202. #endif
  203. #ifndef __DROWAUDIO_BUFFER_H__
  204. #include "audio/dRowAudio_Buffer.h"
  205. #endif
  206. #ifndef __DROWAUDIO_ENVELOPEFOLLOWER_H__
  207. #include "audio/dRowAudio_EnvelopeFollower.h"
  208. #endif
  209. #ifndef __DROWAUDIO_SAMPLERATECONVERTER_H__
  210. #include "audio/dRowAudio_SampleRateConverter.h"
  211. #endif
  212. #ifndef __DROWAUDIO_BIQUADFILTER_H__
  213. #include "audio/filters/dRowAudio_BiquadFilter.h"
  214. #endif
  215. #ifndef __DROWAUDIO_ONEPOLEFILTER_H__
  216. #include "audio/filters/dRowAudio_OnePoleFilter.h"
  217. #endif
  218. #ifndef __DROWAUDIO_WINDOW_H__
  219. #include "audio/fft/dRowAudio_Window.h"
  220. #endif
  221. #ifndef DROWAUDIO_FFT_H_INCLUDED
  222. #include "audio/fft/dRowAudio_FFT.h"
  223. #endif
  224. #ifndef __DROWAUDIO_LTAS_H__
  225. #include "audio/fft/dRowAudio_LTAS.h"
  226. #endif
  227. // Gui
  228. #ifndef __DROWAUDIO_AUDIOFILEDROPTARGET_H__
  229. #include "gui/dRowAudio_AudioFileDropTarget.h"
  230. #endif
  231. #ifndef __DROWAUDIO_GUIHELPERS_H__
  232. #include "gui/dRowAudio_GuiHelpers.h"
  233. #endif
  234. #ifndef __DROWAUDIO_GRAPHICALCOMPONENT_H__
  235. #include "gui/dRowAudio_GraphicalComponent.h"
  236. #endif
  237. #ifndef __DROWAUDIO_AUDIOOSCILLOSCOPE_H__
  238. #include "gui/dRowAudio_AudioOscilloscope.h"
  239. #endif
  240. #ifndef __DROWAUDIO_AUDIOTRANSPORTCUROSR_H__
  241. #include "gui/dRowAudio_AudioTransportCursor.h"
  242. #endif
  243. #ifndef __DROWAUDIO_SEGMENTEDMETER_H__
  244. #include "gui/dRowAudio_SegmentedMeter.h"
  245. #endif
  246. #ifndef __DROWAUDIO_SONOGRAM_H__
  247. #include "gui/dRowAudio_Sonogram.h"
  248. #endif
  249. #ifndef __DROWAUDIO_SPECTROGRAPH_H__
  250. #include "gui/dRowAudio_Spectrograph.h"
  251. #endif
  252. #ifndef __DROWAUDIO_SPECTROSCOPE_H__
  253. #include "gui/dRowAudio_Spectroscope.h"
  254. #endif
  255. #ifndef __DROWAUDIO_TRIGGEREDSCOPE_H__
  256. #include "gui/dRowAudio_TriggeredScope.h"
  257. #endif
  258. #ifndef __DROWAUDIO_CPUMETER_H__
  259. #include "gui/dRowAudio_CpuMeter.h"
  260. #endif
  261. #ifndef __DROWAUDIO_CLOCK_H__
  262. #include "gui/dRowAudio_Clock.h"
  263. #endif
  264. #ifndef __DROWAUDIO_CENTREALIGNVIEWPORT_H__
  265. //#include "gui/dRowAudio_CentreAlignViewport.h"
  266. #endif
  267. #ifndef __DROWAUDIO_MUSICLIBRARYTABLE_H__
  268. #include "gui/dRowAudio_MusicLibraryTable.h"
  269. #endif
  270. #ifndef __DROWAUDIO_BASICFILEBROWSER_H__
  271. #include "gui/filebrowser/dRowAudio_BasicFileBrowser.h"
  272. #endif
  273. #ifndef __DROWAUDIO_COLUMNFILEBROWSERLOOKANDFEEL_H__
  274. #include "gui/filebrowser/dRowAudio_ColumnFileBrowserLookAndFeel.h"
  275. #endif
  276. #ifndef __DROWAUDIO_COLUMNFILEBROWSER_H__
  277. #include "gui/filebrowser/dRowAudio_ColumnFileBrowser.h"
  278. #endif
  279. // audiothumbnail
  280. #ifndef __DROWAUDIO_AUDIOTHUMBNAILIMAGE_H__
  281. #include "gui/audiothumbnail/dRowAudio_AudioThumbnailImage.h"
  282. #endif
  283. #ifndef __DROWAUDIO_COLOUREDAUDIOTHUMBNAIL_H__
  284. #include "gui/audiothumbnail/dRowAudio_ColouredAudioThumbnail.h"
  285. #endif
  286. #ifndef __DROWAUDIO_POSITIONALWAVEDISPLAY_H__
  287. #include "gui/audiothumbnail/dRowAudio_PositionableWaveDisplay.h"
  288. #endif
  289. #ifndef __DROWAUDIO_DRAGGABLEWAVEDISPLAY_H__
  290. #include "gui/audiothumbnail/dRowAudio_DraggableWaveDisplay.h"
  291. #endif
  292. #if ! defined(__DROWAUDIO_DEFAULTCOLOURS_H__) && ! JUCE_AUDIOPROCESSOR_NO_GUI
  293. #include "gui/dRowAudio_DefaultColours.h"
  294. #endif
  295. // maths
  296. #ifndef __DROWAUDIO_MATHSUTILITIES_H__
  297. #include "maths/dRowAudio_MathsUtilities.h"
  298. #endif
  299. #ifndef __DROWAUDIO_CUMULATIVEMOVINGAVERAGE_H__
  300. #include "maths/dRowAudio_CumulativeMovingAverage.h"
  301. #endif
  302. #ifndef __DROWAUDIO_BEZIERCURVE_H__
  303. #include "maths/dRowAudio_BezierCurve.h"
  304. #endif
  305. // native
  306. #ifndef __DROWAUDIO_AUDIOPICKER__
  307. #include "native/dRowAudio_AudioPicker.h"
  308. #endif
  309. #ifndef __DROWAUDIO_AVASSETAUDIOFORMAT_H__
  310. #include "native/dRowAudio_AVAssetAudioFormat.h"
  311. #endif
  312. #ifndef __DROWAUDIO_IOSAUDIOCONVERTER__
  313. #include "native/dRowAudio_IOSAudioConverter.h"
  314. #endif
  315. // network
  316. #ifndef __DROWAUDIO_CURLMANAGER_H__
  317. #include "network/dRowAudio_CURLManager.h"
  318. #endif
  319. #ifndef __DROWAUDIO_CURLEASYSESSION_H__
  320. #include "network/dRowAudio_CURLEasySession.h"
  321. #endif
  322. // streams
  323. #ifndef __DROWAUDIO_STREAMANDFILEHANDLER_H__
  324. #include "audio/dRowAudio_StreamAndFileHandler.h"
  325. #endif
  326. #ifndef __DROWAUDIO_MEMORYINPUTSOURCE_H__
  327. #include "streams/dRowAudio_MemoryInputSource.h"
  328. #endif
  329. // Utility
  330. #ifndef __DROWAUDIO_PLUGINPARAMETER_H__
  331. #include "parameters/dRowAudio_PluginParameter.h"
  332. #endif
  333. #ifndef __DROWAUDIO_CONSTANTS_H__
  334. #include "utility/dRowAudio_Constants.h"
  335. #endif
  336. #ifndef __DROWAUDIO_DEBUGOBJECT_H__
  337. #include "utility/dRowAudio_DebugObject.h"
  338. #endif
  339. #ifndef __DROWAUDIO_ENCRYPTEDSTRING_H__
  340. #include "utility/dRowAudio_EncryptedString.h"
  341. #endif
  342. #ifndef __DROWAUDIO_UNITYBUILDER_H__
  343. #include "utility/dRowAudio_UnityBuilder.h"
  344. #endif
  345. #ifndef __UNITYPROJECTBUILDER_H_27A8CF68__
  346. #include "utility/dRowAudio_UnityProjectBuilder.h"
  347. #endif
  348. #ifndef __DROWAUDIO_UTILITY_H__
  349. #include "utility/dRowAudio_Utility.h"
  350. #endif
  351. #ifndef __DROWAUDIO_STATEVARIABLE_H__
  352. #include "utility/dRowAudio_StateVariable.h"
  353. #endif
  354. #ifndef __DROWAUDIO_XMLHELPERS_H__
  355. #include "utility/dRowAudio_XmlHelpers.h"
  356. #endif
  357. #ifndef __DROWAUDIO_COMPARATORS_H__
  358. #include "utility/dRowAudio_Comparators.h"
  359. #endif
  360. #ifndef __DROWAUDIO_MUSICLIBRARYHELPERS_H__
  361. #include "utility/dRowAudio_MusicLibraryHelpers.h"
  362. #endif
  363. #ifndef __DROWAUDIO_ITUNESLIBRARY_H__
  364. #include "utility/dRowAudio_ITunesLibrary.h"
  365. #endif
  366. #ifndef __DROWAUDIO_ITUNESLIBRARYPARSER_H__
  367. #include "utility/dRowAudio_ITunesLibraryParser.h"
  368. #endif
  369. #ifndef __DROWAUDIO_LOCKEDPOINTER_H__
  370. #include "utility/dRowAudio_LockedPointer.h"
  371. #endif
  372. }
  373. #ifdef __clang__
  374. #pragma clang diagnostic pop
  375. #endif
  376. #endif //_DROWAUDIOHEADER_H_