mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-10 23:44:24 +00:00
MIDI-CI: Add module
This commit is contained in:
parent
387ab88c13
commit
8ebbc20311
85 changed files with 11013 additions and 16 deletions
|
|
@ -124,3 +124,10 @@ JUCE_END_IGNORE_WARNINGS_MSVC
|
|||
#include "synthesisers/juce_Synthesiser.h"
|
||||
#include "audio_play_head/juce_AudioPlayHead.h"
|
||||
#include "utilities/juce_AudioWorkgroup.h"
|
||||
#include "midi/ump/juce_UMPBytesOnGroup.h"
|
||||
#include "midi/ump/juce_UMPDeviceInfo.h"
|
||||
|
||||
namespace juce
|
||||
{
|
||||
namespace ump = universal_midi_packets;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -685,6 +685,11 @@ MidiMessage MidiMessage::createSysExMessage (const void* sysexData, const int da
|
|||
return MidiMessage (m, dataSize + 2);
|
||||
}
|
||||
|
||||
MidiMessage MidiMessage::createSysExMessage (Span<const std::byte> data)
|
||||
{
|
||||
return createSysExMessage (data.data(), (int) data.size());
|
||||
}
|
||||
|
||||
const uint8* MidiMessage::getSysExData() const noexcept
|
||||
{
|
||||
return isSysEx() ? getRawData() + 1 : nullptr;
|
||||
|
|
|
|||
|
|
@ -218,6 +218,13 @@ public:
|
|||
*/
|
||||
int getSysExDataSize() const noexcept;
|
||||
|
||||
/** Returns a span that bounds the sysex body bytes contained in this message. */
|
||||
Span<const std::byte> getSysExDataSpan() const noexcept
|
||||
{
|
||||
return { reinterpret_cast<const std::byte*> (getSysExData()),
|
||||
(size_t) getSysExDataSize() };
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
/** Returns true if this message is a 'key-down' event.
|
||||
|
||||
|
|
@ -855,6 +862,10 @@ public:
|
|||
static MidiMessage createSysExMessage (const void* sysexData,
|
||||
int dataSize);
|
||||
|
||||
/** Creates a system-exclusive message.
|
||||
The data passed in is wrapped with header and tail bytes of 0xf0 and 0xf7.
|
||||
*/
|
||||
static MidiMessage createSysExMessage (Span<const std::byte> data);
|
||||
|
||||
//==============================================================================
|
||||
#ifndef DOXYGEN
|
||||
|
|
|
|||
38
modules/juce_audio_basics/midi/ump/juce_UMPBytesOnGroup.h
Normal file
38
modules/juce_audio_basics/midi/ump/juce_UMPBytesOnGroup.h
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
/*
|
||||
==============================================================================
|
||||
|
||||
This file is part of the JUCE library.
|
||||
Copyright (c) 2022 - Raw Material Software Limited
|
||||
|
||||
JUCE is an open source library subject to commercial or open-source
|
||||
licensing.
|
||||
|
||||
The code included in this file is provided under the terms of the ISC license
|
||||
http://www.isc.org/downloads/software-support-policy/isc-license. Permission
|
||||
To use, copy, modify, and/or distribute this software for any purpose with or
|
||||
without fee is hereby granted provided that the above copyright notice and
|
||||
this permission notice appear in all copies.
|
||||
|
||||
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
|
||||
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
|
||||
DISCLAIMED.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
namespace juce::universal_midi_packets
|
||||
{
|
||||
|
||||
/**
|
||||
Holds a UMP group, and a span of bytes that were received or are to be
|
||||
sent on that group. Helpful when working with sysex messages.
|
||||
|
||||
@tags{Audio}
|
||||
*/
|
||||
struct BytesOnGroup
|
||||
{
|
||||
uint8_t group{};
|
||||
Span<const std::byte> bytes;
|
||||
};
|
||||
|
||||
} // namespace juce::universal_midi_packets
|
||||
58
modules/juce_audio_basics/midi/ump/juce_UMPDeviceInfo.h
Normal file
58
modules/juce_audio_basics/midi/ump/juce_UMPDeviceInfo.h
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
/*
|
||||
==============================================================================
|
||||
|
||||
This file is part of the JUCE library.
|
||||
Copyright (c) 2022 - Raw Material Software Limited
|
||||
|
||||
JUCE is an open source library subject to commercial or open-source
|
||||
licensing.
|
||||
|
||||
The code included in this file is provided under the terms of the ISC license
|
||||
http://www.isc.org/downloads/software-support-policy/isc-license. Permission
|
||||
To use, copy, modify, and/or distribute this software for any purpose with or
|
||||
without fee is hereby granted provided that the above copyright notice and
|
||||
this permission notice appear in all copies.
|
||||
|
||||
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
|
||||
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
|
||||
DISCLAIMED.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
namespace juce::universal_midi_packets
|
||||
{
|
||||
|
||||
/**
|
||||
Holds MIDI device info that may be required by certain UMP messages and
|
||||
MIDI-CI messages.
|
||||
|
||||
@tags{Audio}
|
||||
*/
|
||||
struct DeviceInfo
|
||||
{
|
||||
std::array<std::byte, 3> manufacturer; ///< LSB first
|
||||
std::array<std::byte, 2> family; ///< LSB first
|
||||
std::array<std::byte, 2> modelNumber; ///< LSB first
|
||||
std::array<std::byte, 4> revision;
|
||||
|
||||
private:
|
||||
auto tie() const { return std::tie (manufacturer, family, modelNumber, revision); }
|
||||
|
||||
public:
|
||||
bool operator== (const DeviceInfo& other) const { return tie() == other.tie(); }
|
||||
bool operator!= (const DeviceInfo& other) const { return tie() != other.tie(); }
|
||||
|
||||
static constexpr auto marshallingVersion = std::nullopt;
|
||||
|
||||
template <typename Archive, typename This>
|
||||
static auto serialise (Archive& archive, This& t)
|
||||
{
|
||||
return archive (named ("manufacturer", t.manufacturer),
|
||||
named ("family", t.family),
|
||||
named ("modelNumber", t.modelNumber),
|
||||
named ("revision", t.revision));
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace juce::universal_midi_packets
|
||||
Loading…
Add table
Add a link
Reference in a new issue