LMMS
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//==============================================================================
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 //==============================================================================
112
131 void processNextMidiBuffer (MidiBuffer& buffer,
132 int startSample,
133 int numSamples,
134 bool injectIndirectEvents);
135
136 //==============================================================================
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 //==============================================================================
183 std::atomic<uint16> noteStates[128];
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
static void message(int level, const char *fmt,...)
Definition adplugdb.cpp:120
Definition juce_CriticalSection.h:43
Definition juce_ListenerList.h:70
Definition juce_MidiBuffer.h:145
Definition juce_MidiKeyboardState.h:139
virtual void handleNoteOff(MidiKeyboardState *source, int midiChannel, int midiNoteNumber, float velocity)=0
virtual void handleNoteOn(MidiKeyboardState *source, int midiChannel, int midiNoteNumber, float velocity)=0
void processNextMidiBuffer(MidiBuffer &buffer, int startSample, int numSamples, bool injectIndirectEvents)
Definition juce_MidiKeyboardState.cpp:135
MidiBuffer eventsToAdd
Definition juce_MidiKeyboardState.h:184
void addListener(Listener *listener)
Definition juce_MidiKeyboardState.cpp:161
void noteOff(int midiChannel, int midiNoteNumber, float velocity)
Definition juce_MidiKeyboardState.cpp:79
void allNotesOff(int midiChannel)
Definition juce_MidiKeyboardState.cpp:102
void processNextMidiEvent(const MidiMessage &message)
Definition juce_MidiKeyboardState.cpp:118
void removeListener(Listener *listener)
Definition juce_MidiKeyboardState.cpp:167
CriticalSection lock
Definition juce_MidiKeyboardState.h:182
bool isNoteOn(int midiChannel, int midiNoteNumber) const noexcept
Definition juce_MidiKeyboardState.cpp:39
void noteOnInternal(int midiChannel, int midiNoteNumber, float velocity)
Definition juce_MidiKeyboardState.cpp:70
void noteOffInternal(int midiChannel, int midiNoteNumber, float velocity)
Definition juce_MidiKeyboardState.cpp:93
ListenerList< Listener > listeners
Definition juce_MidiKeyboardState.h:185
MidiKeyboardState()
Definition juce_MidiKeyboardState.cpp:26
void noteOn(int midiChannel, int midiNoteNumber, float velocity)
Definition juce_MidiKeyboardState.cpp:53
std::atomic< uint16 > noteStates[128]
Definition juce_MidiKeyboardState.h:183
void reset()
Definition juce_MidiKeyboardState.cpp:32
bool isNoteOnForChannels(int midiChannelMask, int midiNoteNumber) const noexcept
Definition juce_MidiKeyboardState.cpp:47
Definition juce_MidiMessage.h:35
#define JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(className)
#define JUCE_API
Definition juce_StandardHeader.h:152
Definition carla_juce.cpp:31
MidiKeyboardState::Listener MidiKeyboardStateListener
Definition juce_MidiKeyboardState.h:193