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.

492 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 Point CarbonDummyPointName
  118. #define Component CarbonDummyCompName
  119. #include <Accelerate/Accelerate.h>
  120. #undef Point
  121. #undef Component
  122. #endif
  123. #undef min
  124. #undef max
  125. #ifdef __clang__
  126. #pragma clang diagnostic push
  127. #pragma clang diagnostic ignored "-Wunused-function"
  128. #endif
  129. //=============================================================================
  130. /** Config: DROWAUDIO_USE_FFTREAL
  131. Enables the FFTReal library. By default this is enabled except on the Mac
  132. where the Accelerate framework is preferred. However, if you do explicity
  133. enable this setting fftreal can be used for testing purposes.
  134. */
  135. #ifndef DROWAUDIO_USE_FFTREAL
  136. #if (! JUCE_MAC)
  137. #define DROWAUDIO_USE_FFTREAL 1
  138. #endif
  139. #endif
  140. /** Config: DROWAUDIO_USE_SOUNDTOUCH
  141. Enables the SoundTouch library and the associated SoundTouch classes for
  142. independant pitch and tempo scaling. By default this is enabled.
  143. */
  144. #ifndef DROWAUDIO_USE_SOUNDTOUCH
  145. #define DROWAUDIO_USE_SOUNDTOUCH 1
  146. #endif
  147. /** Config: DROWAUDIO_USE_CURL
  148. Enables the cURL library and the associated network classes. By default
  149. this is enabled.
  150. */
  151. #ifndef DROWAUDIO_USE_CURL
  152. #define DROWAUDIO_USE_CURL 1
  153. #endif
  154. //=============================================================================
  155. // fftReal needs to be outside of the drow namespace
  156. #if DROWAUDIO_USE_FFTREAL
  157. #include "audio/fft/fftreal/FFTReal.h"
  158. #endif
  159. //=============================================================================
  160. namespace drow {
  161. using namespace juce;
  162. using juce::int64;
  163. using juce::uint32;
  164. using juce::int32;
  165. using juce::MemoryBlock;
  166. using juce::UnitTest;
  167. //using juce::Rectangle;
  168. // Audio
  169. #ifndef __DROWAUDIO_AUDIOFILEPLAYER_H__
  170. #include "audio/dRowAudio_AudioFilePlayer.h"
  171. #endif
  172. #ifndef __DROWAUDIO_AUDIOFILEPLAYEREXT_H__
  173. #include "audio/dRowAudio_AudioFilePlayerExt.h"
  174. #endif
  175. #ifndef __DROWAUDIO_AUDIOSAMPLEBUFFERAUDIOFORMAT_H__
  176. #include "audio/dRowAudio_AudioSampleBufferAudioFormat.h"
  177. #endif
  178. #ifndef __DROWAUDIO_SOUNDTOUCHPROCESSOR_H__
  179. #include "audio/dRowAudio_SoundTouchProcessor.h"
  180. #endif
  181. #ifndef __DROWAUDIO_SOUNDTOUCHAUDIOSOURCE_H__
  182. #include "audio/dRowAudio_SoundTouchAudioSource.h"
  183. #endif
  184. #ifndef __DROWAUDIO_FILTERINGAUDIOSOURCE_H__
  185. #include "audio/dRowAudio_FilteringAudioSource.h"
  186. #endif
  187. #ifndef __DROWAUDIO_REVERSIBLEAUDIOSOURCE_H__
  188. #include "audio/dRowAudio_ReversibleAudioSource.h"
  189. #endif
  190. #ifndef __DROWAUDIO_LOOPINGAUDIOSOURCE_H__
  191. #include "audio/dRowAudio_LoopingAudioSource.h"
  192. #endif
  193. #ifndef __DROWAUDIO_PITCH_H__
  194. #include "audio/dRowAudio_Pitch.h"
  195. #endif
  196. #ifndef __DROWAUDIO_PITCHDETECTOR_H__
  197. #include "audio/dRowAudio_PitchDetector.h"
  198. #endif
  199. #ifndef __DROWAUDIO_AUDIOUTILITY_H__
  200. #include "audio/dRowAudio_AudioUtility.h"
  201. #endif
  202. #ifndef __DROWAUDIO_FIFOBUFFER_H__
  203. #include "audio/dRowAudio_FifoBuffer.h"
  204. #endif
  205. #ifndef __DROWAUDIO_BUFFER_H__
  206. #include "audio/dRowAudio_Buffer.h"
  207. #endif
  208. #ifndef __DROWAUDIO_ENVELOPEFOLLOWER_H__
  209. #include "audio/dRowAudio_EnvelopeFollower.h"
  210. #endif
  211. #ifndef __DROWAUDIO_SAMPLERATECONVERTER_H__
  212. #include "audio/dRowAudio_SampleRateConverter.h"
  213. #endif
  214. #ifndef __DROWAUDIO_BIQUADFILTER_H__
  215. #include "audio/filters/dRowAudio_BiquadFilter.h"
  216. #endif
  217. #ifndef __DROWAUDIO_ONEPOLEFILTER_H__
  218. #include "audio/filters/dRowAudio_OnePoleFilter.h"
  219. #endif
  220. #ifndef __DROWAUDIO_WINDOW_H__
  221. #include "audio/fft/dRowAudio_Window.h"
  222. #endif
  223. #ifndef DROWAUDIO_FFT_H_INCLUDED
  224. #include "audio/fft/dRowAudio_FFT.h"
  225. #endif
  226. #ifndef __DROWAUDIO_LTAS_H__
  227. #include "audio/fft/dRowAudio_LTAS.h"
  228. #endif
  229. // Gui
  230. #ifndef __DROWAUDIO_AUDIOFILEDROPTARGET_H__
  231. #include "gui/dRowAudio_AudioFileDropTarget.h"
  232. #endif
  233. #ifndef __DROWAUDIO_GUIHELPERS_H__
  234. #include "gui/dRowAudio_GuiHelpers.h"
  235. #endif
  236. #ifndef __DROWAUDIO_GRAPHICALCOMPONENT_H__
  237. #include "gui/dRowAudio_GraphicalComponent.h"
  238. #endif
  239. #ifndef __DROWAUDIO_AUDIOOSCILLOSCOPE_H__
  240. #include "gui/dRowAudio_AudioOscilloscope.h"
  241. #endif
  242. #ifndef __DROWAUDIO_AUDIOTRANSPORTCUROSR_H__
  243. #include "gui/dRowAudio_AudioTransportCursor.h"
  244. #endif
  245. #ifndef __DROWAUDIO_SEGMENTEDMETER_H__
  246. #include "gui/dRowAudio_SegmentedMeter.h"
  247. #endif
  248. #ifndef __DROWAUDIO_SONOGRAM_H__
  249. #include "gui/dRowAudio_Sonogram.h"
  250. #endif
  251. #ifndef __DROWAUDIO_SPECTROGRAPH_H__
  252. #include "gui/dRowAudio_Spectrograph.h"
  253. #endif
  254. #ifndef __DROWAUDIO_SPECTROSCOPE_H__
  255. #include "gui/dRowAudio_Spectroscope.h"
  256. #endif
  257. #ifndef __DROWAUDIO_TRIGGEREDSCOPE_H__
  258. #include "gui/dRowAudio_TriggeredScope.h"
  259. #endif
  260. #ifndef __DROWAUDIO_CPUMETER_H__
  261. #include "gui/dRowAudio_CpuMeter.h"
  262. #endif
  263. #ifndef __DROWAUDIO_CLOCK_H__
  264. #include "gui/dRowAudio_Clock.h"
  265. #endif
  266. #ifndef __DROWAUDIO_CENTREALIGNVIEWPORT_H__
  267. //#include "gui/dRowAudio_CentreAlignViewport.h"
  268. #endif
  269. #ifndef __DROWAUDIO_MUSICLIBRARYTABLE_H__
  270. #include "gui/dRowAudio_MusicLibraryTable.h"
  271. #endif
  272. #ifndef __DROWAUDIO_BASICFILEBROWSER_H__
  273. #include "gui/filebrowser/dRowAudio_BasicFileBrowser.h"
  274. #endif
  275. #ifndef __DROWAUDIO_COLUMNFILEBROWSERLOOKANDFEEL_H__
  276. #include "gui/filebrowser/dRowAudio_ColumnFileBrowserLookAndFeel.h"
  277. #endif
  278. #ifndef __DROWAUDIO_COLUMNFILEBROWSER_H__
  279. #include "gui/filebrowser/dRowAudio_ColumnFileBrowser.h"
  280. #endif
  281. // audiothumbnail
  282. #ifndef __DROWAUDIO_AUDIOTHUMBNAILIMAGE_H__
  283. #include "gui/audiothumbnail/dRowAudio_AudioThumbnailImage.h"
  284. #endif
  285. #ifndef __DROWAUDIO_COLOUREDAUDIOTHUMBNAIL_H__
  286. #include "gui/audiothumbnail/dRowAudio_ColouredAudioThumbnail.h"
  287. #endif
  288. #ifndef __DROWAUDIO_POSITIONALWAVEDISPLAY_H__
  289. #include "gui/audiothumbnail/dRowAudio_PositionableWaveDisplay.h"
  290. #endif
  291. #ifndef __DROWAUDIO_DRAGGABLEWAVEDISPLAY_H__
  292. #include "gui/audiothumbnail/dRowAudio_DraggableWaveDisplay.h"
  293. #endif
  294. #if ! defined(__DROWAUDIO_DEFAULTCOLOURS_H__) && ! JUCE_AUDIOPROCESSOR_NO_GUI
  295. #include "gui/dRowAudio_DefaultColours.h"
  296. #endif
  297. // maths
  298. #ifndef __DROWAUDIO_MATHSUTILITIES_H__
  299. #include "maths/dRowAudio_MathsUtilities.h"
  300. #endif
  301. #ifndef __DROWAUDIO_CUMULATIVEMOVINGAVERAGE_H__
  302. #include "maths/dRowAudio_CumulativeMovingAverage.h"
  303. #endif
  304. #ifndef __DROWAUDIO_BEZIERCURVE_H__
  305. #include "maths/dRowAudio_BezierCurve.h"
  306. #endif
  307. // native
  308. #ifndef __DROWAUDIO_AUDIOPICKER__
  309. #include "native/dRowAudio_AudioPicker.h"
  310. #endif
  311. #ifndef __DROWAUDIO_AVASSETAUDIOFORMAT_H__
  312. #include "native/dRowAudio_AVAssetAudioFormat.h"
  313. #endif
  314. #ifndef __DROWAUDIO_IOSAUDIOCONVERTER__
  315. #include "native/dRowAudio_IOSAudioConverter.h"
  316. #endif
  317. // network
  318. #ifndef __DROWAUDIO_CURLMANAGER_H__
  319. #include "network/dRowAudio_CURLManager.h"
  320. #endif
  321. #ifndef __DROWAUDIO_CURLEASYSESSION_H__
  322. #include "network/dRowAudio_CURLEasySession.h"
  323. #endif
  324. // streams
  325. #ifndef __DROWAUDIO_STREAMANDFILEHANDLER_H__
  326. #include "audio/dRowAudio_StreamAndFileHandler.h"
  327. #endif
  328. #ifndef __DROWAUDIO_MEMORYINPUTSOURCE_H__
  329. #include "streams/dRowAudio_MemoryInputSource.h"
  330. #endif
  331. // Utility
  332. #ifndef __DROWAUDIO_PLUGINPARAMETER_H__
  333. #include "parameters/dRowAudio_PluginParameter.h"
  334. #endif
  335. #ifndef __DROWAUDIO_CONSTANTS_H__
  336. #include "utility/dRowAudio_Constants.h"
  337. #endif
  338. #ifndef __DROWAUDIO_DEBUGOBJECT_H__
  339. #include "utility/dRowAudio_DebugObject.h"
  340. #endif
  341. #ifndef __DROWAUDIO_ENCRYPTEDSTRING_H__
  342. #include "utility/dRowAudio_EncryptedString.h"
  343. #endif
  344. #ifndef __DROWAUDIO_UNITYBUILDER_H__
  345. #include "utility/dRowAudio_UnityBuilder.h"
  346. #endif
  347. #ifndef __UNITYPROJECTBUILDER_H_27A8CF68__
  348. #include "utility/dRowAudio_UnityProjectBuilder.h"
  349. #endif
  350. #ifndef __DROWAUDIO_UTILITY_H__
  351. #include "utility/dRowAudio_Utility.h"
  352. #endif
  353. #ifndef __DROWAUDIO_STATEVARIABLE_H__
  354. #include "utility/dRowAudio_StateVariable.h"
  355. #endif
  356. #ifndef __DROWAUDIO_XMLHELPERS_H__
  357. #include "utility/dRowAudio_XmlHelpers.h"
  358. #endif
  359. #ifndef __DROWAUDIO_COMPARATORS_H__
  360. #include "utility/dRowAudio_Comparators.h"
  361. #endif
  362. #ifndef __DROWAUDIO_MUSICLIBRARYHELPERS_H__
  363. #include "utility/dRowAudio_MusicLibraryHelpers.h"
  364. #endif
  365. #ifndef __DROWAUDIO_ITUNESLIBRARY_H__
  366. #include "utility/dRowAudio_ITunesLibrary.h"
  367. #endif
  368. #ifndef __DROWAUDIO_ITUNESLIBRARYPARSER_H__
  369. #include "utility/dRowAudio_ITunesLibraryParser.h"
  370. #endif
  371. #ifndef __DROWAUDIO_LOCKEDPOINTER_H__
  372. #include "utility/dRowAudio_LockedPointer.h"
  373. #endif
  374. }
  375. #ifdef __clang__
  376. #pragma clang diagnostic pop
  377. #endif
  378. #endif //_DROWAUDIOHEADER_H_