MIDI2LR 6.3.0.1
MIDI2LR is an application that interfaces MIDI controllers with Lightroom 6+/CC Classic. It processes MIDI input into develop parameter updates and photo actions, and sends MIDI output when parameters are changed for motorized feedback (on controllers that have motorized faders). A listing of available LightRoom commands is in the Wiki. Assistance on the code and design is welcome.
Loading...
Searching...
No Matches
rsj::MidiMessage Struct Reference

#include <MidiUtilities.h>

Public Member Functions

constexpr MidiMessage () noexcept=default
 MidiMessage (const juce::MidiMessage &mm)
constexpr MidiMessage (MessageType mt, int ch, int nu, int va) noexcept

Public Attributes

int channel {0}
int control_number {0}
MessageType message_type_byte {MessageType::kNoteOn}
int value {0}

Constructor & Destructor Documentation

◆ MidiMessage() [1/3]

rsj::MidiMessage::MidiMessage ( )
constexprdefaultnoexcept

◆ MidiMessage() [2/3]

rsj::MidiMessage::MidiMessage ( MessageType mt,
int ch,
int nu,
int va )
inlineconstexprnoexcept
128 : message_type_byte(mt), channel(ch), control_number(nu), value(va)
129 {
130 }
int control_number
Definition MidiUtilities.h:123
int channel
Definition MidiUtilities.h:122
MessageType message_type_byte
Definition MidiUtilities.h:121
int value
Definition MidiUtilities.h:124

References channel, control_number, and value.

◆ MidiMessage() [3/3]

rsj::MidiMessage::MidiMessage ( const juce::MidiMessage & mm)
explicit
30{
31 /* anything not set below is set to zero by default constructor */
32#pragma warning(push)
33#pragma warning(disable : 26481) /* doing raw pointer arithmetic, parsing low-level structure */
34 // ReSharper disable CppClangTidyCppcoreguidelinesProBoundsPointerArithmetic
35 const auto* const __restrict raw {mm.getRawData()};
36 Ensures(raw);
37 const auto rawSize {mm.getRawDataSize()};
38 if (rawSize >= 3 && rsj::ValidMessageType(raw[0])) {
40 channel = raw[0] & 0xF;
41 switch (message_type_byte) {
43 value = raw[2] << 7 | raw[1];
44 break;
49 value = raw[2];
50 control_number = raw[1];
51 break;
53 control_number = raw[1];
54 break;
56 value = raw[1];
57 break;
59 break; /* no action */
60 }
61 }
62 else {
64 }
65#pragma warning(pop)
66 // ReSharper restore CppClangTidyCppcoreguidelinesProBoundsPointerArithmetic
67}
@ kChanPressure
Definition MidiUtilities.h:47
@ kSystem
Definition MidiUtilities.h:49
@ kCc
Definition MidiUtilities.h:45
@ kKeyPressure
Definition MidiUtilities.h:44
@ kNoteOff
Definition MidiUtilities.h:42
@ kNoteOn
Definition MidiUtilities.h:43
@ kPgmChange
Definition MidiUtilities.h:46
@ kPw
Definition MidiUtilities.h:48
constexpr MessageType ToMessageType(std::underlying_type_t< MessageType > value)
Definition MidiUtilities.h:60
constexpr bool ValidMessageType(std::underlying_type_t< MessageType > value) noexcept
Definition MidiUtilities.h:52

References channel, control_number, rsj::kCc, rsj::kChanPressure, rsj::kKeyPressure, rsj::kNoteOff, rsj::kNoteOn, rsj::kPgmChange, rsj::kPw, rsj::kSystem, message_type_byte, and value.

Member Data Documentation

◆ channel

◆ control_number

int rsj::MidiMessage::control_number {0}

◆ message_type_byte

MessageType rsj::MidiMessage::message_type_byte {MessageType::kNoteOn}

◆ value

int rsj::MidiMessage::value {0}

The documentation for this struct was generated from the following files:
  • C:/Users/rsjaf/source/repos/MIDI2LR/src/application/MidiUtilities.h
  • C:/Users/rsjaf/source/repos/MIDI2LR/src/application/MidiUtilities.cpp