OpenShot Audio Library | OpenShotAudio 0.3.2

Loading...
Searching...
No Matches
juce_MidiRPN.h
1/*
2 ==============================================================================
3
4 This file is part of the JUCE library.
5 Copyright (c) 2017 - ROLI Ltd.
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
23 namespace juce
24{
25
26//==============================================================================
32 struct MidiRPNMessage
33{
35 int channel;
36
38 int parameterNumber;
39
44 int value;
45
47 bool isNRPN;
48
52 bool is14BitValue;
53};
54
55//==============================================================================
67 class JUCE_API MidiRPNDetector
68{
69 public:
71 MidiRPNDetector() noexcept;
72
74 ~MidiRPNDetector() noexcept;
75
79 void reset() noexcept;
80
81 //==============================================================================
89 bool parseControllerMessage (int midiChannel,
90 int controllerNumber,
91 int controllerValue,
92 MidiRPNMessage& result) noexcept;
93
94 private:
95 //==============================================================================
96 struct ChannelState
97 {
98 ChannelState() noexcept;
99 bool handleController (int channel, int controllerNumber,
100 int value, MidiRPNMessage&) noexcept;
101 void resetValue() noexcept;
102 bool sendIfReady (int channel, MidiRPNMessage&) noexcept;
103
104 uint8 parameterMSB, parameterLSB, valueMSB, valueLSB;
105 bool isNRPN;
106 };
107
108 //==============================================================================
109 ChannelState states[16];
110
111 JUCE_LEAK_DETECTOR (MidiRPNDetector)
112};
113
114//==============================================================================
123 class JUCE_API MidiRPNGenerator
124{
125 public:
126 //==============================================================================
128 static MidiBuffer generate (MidiRPNMessage message);
129
130 //==============================================================================
147 static MidiBuffer generate (int channel,
148 int parameterNumber,
149 int value,
150 bool isNRPN = false,
151 bool use14BitValue = true);
152};
153
154} // namespace juce
juce::MidiBuffer
Definition: juce_MidiBuffer.h:43
juce::MidiRPNDetector
Definition: juce_MidiRPN.h:68
juce::MidiRPNGenerator
Definition: juce_MidiRPN.h:124
juce::MidiRPNMessage
Definition: juce_MidiRPN.h:33
juce::MidiRPNMessage::isNRPN
bool isNRPN
Definition: juce_MidiRPN.h:47
juce::MidiRPNMessage::is14BitValue
bool is14BitValue
Definition: juce_MidiRPN.h:52
juce::MidiRPNMessage::channel
int channel
Definition: juce_MidiRPN.h:35
juce::MidiRPNMessage::parameterNumber
int parameterNumber
Definition: juce_MidiRPN.h:38
juce::MidiRPNMessage::value
int value
Definition: juce_MidiRPN.h:44