LMMS
Loading...
Searching...
No Matches
juce_UMPBytestreamInputHandler.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
36{
37 virtual ~BytestreamInputHandler() noexcept = default;
38
39 virtual void reset() = 0;
40 virtual void pushMidiData (const void* data, int bytes, double time) = 0;
41};
42
50{
53
61 class Factory
62 {
63 public:
65 : callback (c) {}
66
67 std::unique_ptr<BytestreamToBytestreamHandler> operator() (MidiInput& i) const
68 {
69 if (callback != nullptr)
70 return std::make_unique<BytestreamToBytestreamHandler> (i, *callback);
71
73 return {};
74 }
75
76 private:
78 };
79
80 void reset() override { concatenator.reset(); }
81
82 void pushMidiData (const void* data, int bytes, double time) override
83 {
84 concatenator.pushMidiData (data, bytes, time, &input, callback);
85 }
86
90};
91
99{
101 : recipient (c), dispatcher (protocol, 2048) {}
102
111 {
112 public:
115
116 std::unique_ptr<BytestreamToUMPHandler> operator() (MidiInput&) const
117 {
118 return std::make_unique<BytestreamToUMPHandler> (protocol, callback);
119 }
120
121 private:
124 };
125
126 void reset() override { dispatcher.reset(); }
127
128 void pushMidiData (const void* data, int bytes, double time) override
129 {
130 const auto* ptr = static_cast<const uint8_t*> (data);
131 dispatcher.dispatch (ptr, ptr + bytes, time, [&] (const View& v)
132 {
133 recipient.packetReceived (v, time);
134 });
135 }
136
139};
140
141}
142}
143
144#endif
#define noexcept
Definition DistrhoDefines.h:72
Definition juce_MidiDataConcatenator.h:34
Definition juce_MidiDevices.h:195
Definition juce_MidiDevices.h:82
Factory(MidiInputCallback *c)
Definition juce_UMPBytestreamInputHandler.h:64
MidiInputCallback * callback
Definition juce_UMPBytestreamInputHandler.h:77
Factory(PacketProtocol p, Receiver &c)
Definition juce_UMPBytestreamInputHandler.h:113
Receiver & callback
Definition juce_UMPBytestreamInputHandler.h:123
PacketProtocol protocol
Definition juce_UMPBytestreamInputHandler.h:122
Definition juce_UMPView.h:46
unsigned v[N_MAX]
Definition inflate.c:1584
register unsigned i
Definition inflate.c:1575
JSAMPIMAGE data
Definition jpeglib.h:945
#define jassertfalse
unsigned char uint8_t
Definition mid.cpp:98
Definition juce_UMP_test.cpp:26
PacketProtocol
Definition juce_UMPProtocols.h:32
Definition carla_juce.cpp:31
jack_client_t client jack_client_t client jack_client_t client jack_client_t JackInfoShutdownCallback void arg jack_client_t jack_port_t port void func jack_client_t const char const char unsigned long flags const jack_port_t port jack_client_t jack_port_id_t port_id const jack_port_t const char port_name const jack_port_t port void * ptr
Definition juce_linux_JackAudio.cpp:79
Definition juce_UMPBytestreamInputHandler.h:36
virtual void pushMidiData(const void *data, int bytes, double time)=0
MidiDataConcatenator concatenator
Definition juce_UMPBytestreamInputHandler.h:89
MidiInput & input
Definition juce_UMPBytestreamInputHandler.h:87
void reset() override
Definition juce_UMPBytestreamInputHandler.h:80
MidiInputCallback & callback
Definition juce_UMPBytestreamInputHandler.h:88
void pushMidiData(const void *data, int bytes, double time) override
Definition juce_UMPBytestreamInputHandler.h:82
BytestreamToBytestreamHandler(MidiInput &i, MidiInputCallback &c)
Definition juce_UMPBytestreamInputHandler.h:51
BytestreamToUMPHandler(PacketProtocol protocol, Receiver &c)
Definition juce_UMPBytestreamInputHandler.h:100
Receiver & recipient
Definition juce_UMPBytestreamInputHandler.h:137
void pushMidiData(const void *data, int bytes, double time) override
Definition juce_UMPBytestreamInputHandler.h:128
BytestreamToUMPDispatcher dispatcher
Definition juce_UMPBytestreamInputHandler.h:138
void reset() override
Definition juce_UMPBytestreamInputHandler.h:126
Definition juce_UMPReceiver.h:36
uch * p
Definition crypt.c:594
return c
Definition crypt.c:175
#define const
Definition zconf.h:137