JUCE-7.0.12-0-g4f43011b96 JUCE-7.0.12-0-g4f43011b96
JUCE — C++ application framework with suport for VST, VST3, LV2 audio plug-ins

« « « Anklang Documentation
Loading...
Searching...
No Matches
juce_MPESynthesiserBase.h
Go to the documentation of this file.
1 /*
2 ==============================================================================
3
4 This file is part of the JUCE library.
5 Copyright (c) 2022 - Raw Material Software Limited
6
7 JUCE is an open source library subject to commercial or open-source
8 licensing.
9
10 The code included in this file is provided under the terms of the ISC license
11 http://www.isc.org/downloads/software-support-policy/isc-license. Permission
12 To use, copy, modify, and/or distribute this software for any purpose with or
13 without fee is hereby granted provided that the above copyright notice and
14 this permission notice appear in all copies.
15
16 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
17 EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
18 DISCLAIMED.
19
20 ==============================================================================
21*/
22
23namespace juce
24{
25
26//==============================================================================
47{
48public:
49 //==============================================================================
52
61
62 //==============================================================================
66 MPEZoneLayout getZoneLayout() const noexcept;
67
72 void setZoneLayout (MPEZoneLayout newLayout);
73
74 //==============================================================================
78 virtual void setCurrentPlaybackSampleRate (double sampleRate);
79
83 double getSampleRate() const noexcept { return sampleRate; }
84
85 //==============================================================================
99 template <typename floatType>
100 void renderNextBlock (AudioBuffer<floatType>& outputAudio,
101 const MidiBuffer& inputMidi,
102 int startSample,
103 int numSamples);
104
105 //==============================================================================
117 virtual void handleMidiEvent (const MidiMessage&);
118
119 //==============================================================================
140 void setMinimumRenderingSubdivisionSize (int numSamples, bool shouldBeStrict = false) noexcept;
141
142 //==============================================================================
153 void enableLegacyMode (int pitchbendRange = 2,
154 Range<int> channelRange = Range<int> (1, 17));
155
157 bool isLegacyModeEnabled() const noexcept;
158
160 Range<int> getLegacyModeChannelRange() const noexcept;
161
163 void setLegacyModeChannelRange (Range<int> channelRange);
164
166 int getLegacyModePitchbendRange() const noexcept;
167
169 void setLegacyModePitchbendRange (int pitchbendRange);
170
171 //==============================================================================
172 using TrackingMode = MPEInstrument::TrackingMode;
173
175 void setPressureTrackingMode (TrackingMode modeToUse);
176
178 void setPitchbendTrackingMode (TrackingMode modeToUse);
179
181 void setTimbreTrackingMode (TrackingMode modeToUse);
182
183protected:
184 //==============================================================================
188 virtual void renderNextSubBlock (AudioBuffer<float>& outputAudio,
189 int startSample,
190 int numSamples) = 0;
191
195 virtual void renderNextSubBlock (AudioBuffer<double>& /*outputAudio*/,
196 int /*startSample*/,
197 int /*numSamples*/) {}
198
199protected:
200 //==============================================================================
202 MPEInstrument& instrument;
203
204private:
205 //==============================================================================
206 MPEInstrument defaultInstrument { MPEZone (MPEZone::Type::lower, 15) };
207
208 CriticalSection noteStateLock;
209 double sampleRate = 0.0;
210 int minimumSubBlockSize = 32;
211 bool subBlockSubdivisionIsStrict = false;
212
214};
215
216} // namespace juce
A multi-channel buffer containing floating point audio samples.
Derive from this class to be informed about any changes in the MPE notes played by this instrument,...
This class represents an instrument handling MPE.
This class represents the current MPE zone layout of a device capable of handling MPE.
Holds a sequence of time-stamped midi events.
Encapsulates a MIDI message.
A general-purpose range object, that simply represents any linear range with a start and end point.
Definition juce_Range.h:40
#define JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(className)
This is a shorthand way of writing both a JUCE_DECLARE_NON_COPYABLE and JUCE_LEAK_DETECTOR macro for ...
JUCE Namespace.
Derive from this class to create a basic audio generator capable of MPE.
double getSampleRate() const noexcept
Returns the current target sample rate at which rendering is being done.
This struct represents an MPE zone.