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_MidiKeyboardState.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//==============================================================================
41class JUCE_API MidiKeyboardState
42{
43public:
44 //==============================================================================
46
47 //==============================================================================
56 void reset();
57
63 bool isNoteOn (int midiChannel, int midiNoteNumber) const noexcept;
64
72 bool isNoteOnForChannels (int midiChannelMask, int midiNoteNumber) const noexcept;
73
82 void noteOn (int midiChannel, int midiNoteNumber, float velocity);
83
94 void noteOff (int midiChannel, int midiNoteNumber, float velocity);
95
103 void allNotesOff (int midiChannel);
104
105 //==============================================================================
111 void processNextMidiEvent (const MidiMessage& message);
112
131 void processNextMidiBuffer (MidiBuffer& buffer,
132 int startSample,
133 int numSamples,
134 bool injectIndirectEvents);
135
136 //==============================================================================
138 class JUCE_API Listener
139 {
140 public:
141 //==============================================================================
142 virtual ~Listener() = default;
143
144 //==============================================================================
154 virtual void handleNoteOn (MidiKeyboardState* source,
155 int midiChannel, int midiNoteNumber, float velocity) = 0;
156
166 virtual void handleNoteOff (MidiKeyboardState* source,
167 int midiChannel, int midiNoteNumber, float velocity) = 0;
168 };
169
173 void addListener (Listener* listener);
174
178 void removeListener (Listener* listener);
179
180private:
181 //==============================================================================
182 CriticalSection lock;
183 std::atomic<uint16> noteStates[128];
184 MidiBuffer eventsToAdd;
185 ListenerList<Listener> listeners;
186
187 void noteOnInternal (int midiChannel, int midiNoteNumber, float velocity);
188 void noteOffInternal (int midiChannel, int midiNoteNumber, float velocity);
189
191};
192
194
195} // namespace juce
Holds a set of objects and can invoke a member function callback on each object in the set with a sin...
Holds a sequence of time-stamped midi events.
Receives events from a MidiKeyboardState object.
virtual void handleNoteOff(MidiKeyboardState *source, int midiChannel, int midiNoteNumber, float velocity)=0
Called when one of the MidiKeyboardState's keys is released.
virtual void handleNoteOn(MidiKeyboardState *source, int midiChannel, int midiNoteNumber, float velocity)=0
Called when one of the MidiKeyboardState's keys is pressed.
Represents a piano keyboard, keeping track of which keys are currently pressed.
Encapsulates a MIDI message.
#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.