Skip to content

Commit

Permalink
makes changes requested in #232 discussion
Browse files Browse the repository at this point in the history
  • Loading branch information
hyperbolist authored and franky47 committed Oct 8, 2022
1 parent a6c3a48 commit 1fe67be
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 39 deletions.
4 changes: 1 addition & 3 deletions src/MIDI.h
Original file line number Diff line number Diff line change
Expand Up @@ -236,8 +236,6 @@ class MidiInterface
// MIDI Soft Thru

public:
inline bool getThruState() const;

using ThruFilterCallback = bool (*)(const MidiMessage& inMessage);
using ThruMapCallback = MidiMessage (*)(const MidiMessage& inMessage);
inline MidiInterface& turnThruOn(ThruFilterCallback fptr = thruOn);
Expand All @@ -254,7 +252,7 @@ class MidiInterface
}

private:
void thruFilter();
void processThru();
static inline bool thruOn(const MidiMessage& inMessage) { (void)inMessage; return true; }
static inline bool thruOff(const MidiMessage& inMessage) { (void)inMessage; return false; }
static inline MidiMessage thruEcho(const MidiMessage& inMessage) { return inMessage; }
Expand Down
18 changes: 6 additions & 12 deletions src/MIDI.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -816,7 +816,7 @@ inline bool MidiInterface<Transport, Settings, Platform>::read(Channel inChannel
if (channelMatch)
launchCallback();

thruFilter();
processThru();

return channelMatch;
}
Expand Down Expand Up @@ -1397,13 +1397,7 @@ void MidiInterface<Transport, Settings, Platform>::launchCallback()
*/

template<class Transport, class Settings, class Platform>
inline bool MidiInterface<Transport, Settings, Platform>::getThruState() const
{
return mThruFilterCallback != thruOff;
}

template<class Transport, class Settings, class Platform>
inline MidiInterface<Transport, Settings, Platform>& MidiInterface<Transport, Settings, Platform>::turnThruOn(ThruFilterCallback fptr)
inline void MidiInterface<Transport, Settings, Platform>::turnThruOn(ThruFilterCallback fptr)
{
mThruFilterCallback = fptr;
return *this;
Expand All @@ -1425,15 +1419,15 @@ inline MidiInterface<Transport, Settings, Platform>& MidiInterface<Transport, Se
// - Channel messages are passed to the output whether their channel
// is matching the input channel and the filter setting
template<class Transport, class Settings, class Platform>
void MidiInterface<Transport, Settings, Platform>::thruFilter()
void MidiInterface<Transport, Settings, Platform>::processThru()
{
if (!mThruFilterCallback(mMessage))
return;

MidiMessage thruMessage = mThruMapCallback(mMessage);

// First, check if the received message is Channel
if (mMessage.type >= NoteOff && mMessage.type <= PitchBend)
if (thruMessage.type >= NoteOff && thruMessage.type <= PitchBend)
{
send(thruMessage.type,
thruMessage.data1,
Expand All @@ -1443,7 +1437,7 @@ void MidiInterface<Transport, Settings, Platform>::thruFilter()
else
{
// Send the message to the output
switch (mMessage.type)
switch (thruMessage.type)
{
// Real Time and 1 byte
case Clock:
Expand All @@ -1453,7 +1447,7 @@ void MidiInterface<Transport, Settings, Platform>::thruFilter()
case ActiveSensing:
case SystemReset:
case TuneRequest:
sendRealTime(mMessage.type);
sendRealTime(thruMessage.type);
break;

case SystemExclusive:
Expand Down
24 changes: 0 additions & 24 deletions test/unit-tests/tests/unit-tests_MidiThru.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -59,30 +59,6 @@ MidiMessage thruMapNoteOnFullVelocity(const MidiMessage& inMessage)

// -----------------------------------------------------------------------------

TEST(MidiThru, defaultValues)
{
EXPECT_EQ(midi.getThruState(), true);
midi.begin(); // Should not change the state
EXPECT_EQ(midi.getThruState(), true);
}

TEST(MidiThru, beginEnablesThru)
{
midi.turnThruOff();
EXPECT_EQ(midi.getThruState(), false);
midi.begin();
EXPECT_EQ(midi.getThruState(), true);
}

TEST(MidiThru, setGet)
{
midi.turnThruOff();
EXPECT_EQ(midi.getThruState(), false);

midi.turnThruOn();
EXPECT_EQ(midi.getThruState(), true);
}

TEST(MidiThru, off)
{
midi.begin(MIDI_CHANNEL_OMNI);
Expand Down

0 comments on commit 1fe67be

Please sign in to comment.