LMMS
Loading...
Searching...
No Matches
AudioProcessor.h
Go to the documentation of this file.
1/*
2 ==============================================================================
3
4 This file is part of the Water library.
5 Copyright (c) 2015 ROLI Ltd.
6 Copyright (C) 2017-2022 Filipe Coelho <falktx@falktx.com>
7
8 Permission is granted to use this software under the terms of the GNU
9 General Public License as published by the Free Software Foundation;
10 either version 2 of the License, or any later version.
11
12 This program is distributed in the hope that it will be useful, but WITHOUT
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
14 FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
15
16 For a full copy of the GNU General Public License see the doc/GPL.txt file.
17
18 ==============================================================================
19*/
20
21#ifndef WATER_AUDIOPROCESSOR_H_INCLUDED
22#define WATER_AUDIOPROCESSOR_H_INCLUDED
23
24#include "../text/String.h"
26
27#include "CarlaMutex.hpp"
28
29namespace water {
30
31//==============================================================================
46{
47protected:
48 //==============================================================================
56
57public:
63
64 //==============================================================================
66 virtual ~AudioProcessor();
67
68 //==============================================================================
70 virtual const String getName() const = 0;
71
72 //==============================================================================
91 virtual void prepareToPlay (double sampleRate,
92 int maximumExpectedSamplesPerBlock) = 0;
93
97 virtual void releaseResources() = 0;
98
157 virtual void processBlockWithCV (AudioSampleBuffer& audioBuffer,
158 const AudioSampleBuffer& cvInBuffer,
159 AudioSampleBuffer& cvOutBuffer,
160 MidiBuffer& midiMessages) = 0;
161
162 //==============================================================================
165
168
169 //==============================================================================
176
187
188 //==============================================================================
189
197
203 void setLatencySamples (int newLatency);
204
206 virtual bool acceptsMidi() const = 0;
207
209 virtual bool producesMidi() const = 0;
210
212 virtual bool supportsMPE() const { return false; }
213
214 virtual const String getInputChannelName (ChannelType, uint) const;
215 virtual const String getOutputChannelName (ChannelType, uint) const;
216
217 //==============================================================================
229 const CarlaRecursiveMutex& getCallbackLock() const noexcept { return callbackLock; }
230
259 void suspendProcessing (bool shouldBeSuspended);
260
265
271 virtual void reset();
272
278 virtual void reconfigure();
279
280 //==============================================================================
292
296 virtual void setNonRealtime (bool isNonRealtime) noexcept;
297
298 //==============================================================================
305 double sampleRate, int blockSize);
306
313 void setRateAndBufferSizeDetails (double sampleRate, int blockSize) noexcept;
314
315private:
316 //==============================================================================
320 CarlaRecursiveMutex callbackLock;
321
325
327};
328
329}
330
331#endif // WATER_AUDIOPROCESSOR_H_INCLUDED
unsigned int uint
Definition CarlaDefines.h:327
#define CARLA_DECLARE_NON_COPYABLE(ClassName)
Definition CarlaDefines.h:242
#define noexcept
Definition DistrhoDefines.h:72
AudioProcessor()
Definition AudioProcessor.cpp:25
int getBlockSize() const noexcept
Definition AudioProcessor.h:186
double getSampleRate() const noexcept
Definition AudioProcessor.h:175
bool suspended
Definition AudioProcessor.h:319
bool isNonRealtime() const noexcept
Definition AudioProcessor.h:291
virtual void setNonRealtime(bool isNonRealtime) noexcept
Definition AudioProcessor.cpp:72
uint getTotalNumOutputChannels(ChannelType t) const noexcept
Definition AudioProcessor.cpp:107
virtual const String getOutputChannelName(ChannelType, uint) const
Definition AudioProcessor.cpp:127
virtual ~AudioProcessor()
Definition AudioProcessor.cpp:42
void setPlayConfigDetails(uint numAudioIns, uint numAudioOuts, uint numCVIns, uint numCVOuts, uint numMIDIIns, uint numMIDIOuts, double sampleRate, int blockSize)
Definition AudioProcessor.cpp:47
const CarlaRecursiveMutex & getCallbackLock() const noexcept
Definition AudioProcessor.h:229
virtual void prepareToPlay(double sampleRate, int maximumExpectedSamplesPerBlock)=0
int getLatencySamples() const noexcept
Definition AudioProcessor.h:196
virtual bool supportsMPE() const
Definition AudioProcessor.h:212
virtual void reconfigure()
Definition AudioProcessor.cpp:90
virtual void processBlockWithCV(AudioSampleBuffer &audioBuffer, const AudioSampleBuffer &cvInBuffer, AudioSampleBuffer &cvOutBuffer, MidiBuffer &midiMessages)=0
virtual void releaseResources()=0
uint numMIDIIns
Definition AudioProcessor.h:324
uint getTotalNumInputChannels(ChannelType t) const noexcept
Definition AudioProcessor.cpp:92
virtual const String getName() const =0
bool nonRealtime
Definition AudioProcessor.h:319
bool isSuspended() const noexcept
Definition AudioProcessor.h:264
uint numMIDIOuts
Definition AudioProcessor.h:324
virtual bool producesMidi() const =0
AudioProcessor()
Definition AudioProcessor.cpp:25
virtual bool acceptsMidi() const =0
void setLatencySamples(int newLatency)
Definition AudioProcessor.cpp:77
ChannelType
Definition AudioProcessor.h:58
@ ChannelTypeCV
Definition AudioProcessor.h:60
@ ChannelTypeMIDI
Definition AudioProcessor.h:61
@ ChannelTypeAudio
Definition AudioProcessor.h:59
int blockSize
Definition AudioProcessor.h:318
uint numCVIns
Definition AudioProcessor.h:323
virtual void reset()
Definition AudioProcessor.cpp:89
CarlaRecursiveMutex callbackLock
Definition AudioProcessor.h:320
void setRateAndBufferSizeDetails(double sampleRate, int blockSize) noexcept
Definition AudioProcessor.cpp:65
void suspendProcessing(bool shouldBeSuspended)
Definition AudioProcessor.cpp:83
uint numCVOuts
Definition AudioProcessor.h:323
uint numAudioIns
Definition AudioProcessor.h:322
double currentSampleRate
Definition AudioProcessor.h:317
virtual const String getInputChannelName(ChannelType, uint) const
Definition AudioProcessor.cpp:122
uint numAudioOuts
Definition AudioProcessor.h:322
int latencySamples
Definition AudioProcessor.h:318
Definition AudioSampleBuffer.h:42
Definition MidiBuffer.h:48
Definition String.h:48
struct huft * t
Definition inflate.c:943
Definition AudioSampleBuffer.h:33
#define const
Definition zconf.h:137