LMMS
Loading...
Searching...
No Matches
juce_UMPU32InputHandler.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
23#ifndef DOXYGEN
24
25namespace juce
26{
28{
29
37{
38 virtual ~U32InputHandler() noexcept = default;
39
40 virtual void reset() = 0;
41 virtual void pushMidiData (const uint32_t* begin, const uint32_t* end, double time) = 0;
42};
43
51{
54
62 class Factory
63 {
64 public:
66 : callback (c) {}
67
68 std::unique_ptr<U32ToBytestreamHandler> operator() (MidiInput& i) const
69 {
70 if (callback != nullptr)
71 return std::make_unique<U32ToBytestreamHandler> (i, *callback);
72
74 return {};
75 }
76
77 private:
79 };
80
81 void reset() override { dispatcher.reset(); }
82
83 void pushMidiData (const uint32_t* begin, const uint32_t* end, double time) override
84 {
85 dispatcher.dispatch (begin, end, time, [this] (const MidiMessage& m)
86 {
87 callback.handleIncomingMidiMessage (&input, m);
88 });
89 }
90
94};
95
103{
105 : recipient (c), converter (protocol) {}
106
115 {
116 public:
119
120 std::unique_ptr<U32ToUMPHandler> operator() (MidiInput&) const
121 {
122 return std::make_unique<U32ToUMPHandler> (protocol, callback);
123 }
124
125 private:
128 };
129
130 void reset() override
131 {
132 dispatcher.reset();
133 converter.reset();
134 }
135
136 void pushMidiData (const uint32_t* begin, const uint32_t* end, double time) override
137 {
138 dispatcher.dispatch (begin, end, time, [this] (const View& view, double thisTime)
139 {
140 converter.convert (view, [&] (const View& converted)
141 {
142 recipient.packetReceived (converted, thisTime);
143 });
144 });
145 }
146
150};
151
152}
153}
154
155#endif
#define noexcept
Definition DistrhoDefines.h:72
Definition juce_MidiDevices.h:195
Definition juce_MidiDevices.h:82
Definition juce_MidiMessage.h:35
Definition juce_UMPDispatcher.h:37
Definition juce_UMPConverters.h:90
Definition juce_UMPDispatcher.h:158
Factory(MidiInputCallback *c)
Definition juce_UMPU32InputHandler.h:65
MidiInputCallback * callback
Definition juce_UMPU32InputHandler.h:78
PacketProtocol protocol
Definition juce_UMPU32InputHandler.h:126
Receiver & callback
Definition juce_UMPU32InputHandler.h:127
Factory(PacketProtocol p, Receiver &c)
Definition juce_UMPU32InputHandler.h:117
Definition juce_UMPView.h:46
unsigned * m
Definition inflate.c:1559
register unsigned i
Definition inflate.c:1575
#define jassertfalse
unsigned int uint32_t
Definition mid.cpp:100
Definition juce_UMP_test.cpp:26
PacketProtocol
Definition juce_UMPProtocols.h:32
Definition carla_juce.cpp:31
RangedDirectoryIterator end(const RangedDirectoryIterator &)
Definition juce_RangedDirectoryIterator.h:184
RangedDirectoryIterator begin(const RangedDirectoryIterator &it)
Definition juce_RangedDirectoryIterator.h:179
Definition juce_UMPReceiver.h:36
Definition juce_UMPU32InputHandler.h:37
virtual ~U32InputHandler() noexcept=default
virtual void pushMidiData(const uint32_t *begin, const uint32_t *end, double time)=0
void reset() override
Definition juce_UMPU32InputHandler.h:81
void pushMidiData(const uint32_t *begin, const uint32_t *end, double time) override
Definition juce_UMPU32InputHandler.h:83
MidiInputCallback & callback
Definition juce_UMPU32InputHandler.h:92
U32ToBytestreamHandler(MidiInput &i, MidiInputCallback &c)
Definition juce_UMPU32InputHandler.h:52
ToBytestreamDispatcher dispatcher
Definition juce_UMPU32InputHandler.h:93
MidiInput & input
Definition juce_UMPU32InputHandler.h:91
void reset() override
Definition juce_UMPU32InputHandler.h:130
U32ToUMPHandler(PacketProtocol protocol, Receiver &c)
Definition juce_UMPU32InputHandler.h:104
GenericUMPConverter converter
Definition juce_UMPU32InputHandler.h:149
Dispatcher dispatcher
Definition juce_UMPU32InputHandler.h:148
void pushMidiData(const uint32_t *begin, const uint32_t *end, double time) override
Definition juce_UMPU32InputHandler.h:136
Receiver & recipient
Definition juce_UMPU32InputHandler.h:147
uch * p
Definition crypt.c:594
return c
Definition crypt.c:175
#define const
Definition zconf.h:137