NAP
midiinputcomponent.h
1 /* This Source Code Form is subject to the terms of the Mozilla Public
2  * License, v. 2.0. If a copy of the MPL was not distributed with this
3  * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4 
5 #pragma once
6 
7 // Midi includes
8 #include "midievent.h"
9 #include "midiservice.h"
10 
11 // Nap includes
12 #include <component.h>
13 #include <nap/signalslot.h>
14 
15 
16 namespace nap
17 {
18  class MidiInputComponentInstance;
19 
23  class NAPAPI MidiInputComponent : public nap::Component
24  {
25  RTTI_ENABLE(nap::Component)
27 
28  public:
30 
31  std::vector<std::string> mPorts;
32  std::vector<MidiValue> mChannels;
33  std::vector<MidiValue> mNumbers;
34  bool mNoteOn = true;
35  bool mNoteOff = true;
36  bool mAfterTouch = true;
37  bool mControlChange = true;
38  bool mProgramChange = true;
39  bool mChannelPressure = true;
40  bool mPitchBend = true;
41  };
42 
43 
48  {
49  RTTI_ENABLE(nap::ComponentInstance)
50  friend class MidiService;
51 
52  public:
53  MidiInputComponentInstance(EntityInstance& entity, Component& resource) : nap::ComponentInstance(entity, resource) { }
54 
55  // Initialize the component
56  bool init(utility::ErrorState& errorState) override;
57 
58  virtual ~MidiInputComponentInstance();
59 
64 
65  std::vector<std::string> mPorts;
66  std::vector<MidiValue> mChannels;
67  std::vector<MidiValue> mNumbers;
68  std::vector<MidiEvent::Type> mTypes;
70  nap::Signal<const MidiEvent&>* getMessageReceived() { return &messageReceived; }
71 
72  protected:
76  void trigger(const MidiEvent& event) { messageReceived(event); }
77 
78  private:
79  MidiService* mService = nullptr;
80  };
81 
82 }
nap::MidiInputComponentInstance::mChannels
std::vector< MidiValue > mChannels
Definition: midiinputcomponent.h:66
nap::MidiInputComponent::MidiInputComponent
MidiInputComponent()
Definition: midiinputcomponent.h:29
nap::MidiInputComponentInstance::trigger
void trigger(const MidiEvent &event)
Definition: midiinputcomponent.h:76
nap::MidiInputComponentInstance
Definition: midiinputcomponent.h:47
nap::utility::ErrorState
Definition: errorstate.h:19
nap::MidiInputComponentInstance::getMessageReceived
nap::Signal< const MidiEvent & > * getMessageReceived()
Definition: midiinputcomponent.h:70
nap::MidiInputComponent::mNumbers
std::vector< MidiValue > mNumbers
Property: 'Numbers' Filter specifying what number bytes (like cc numbers) to listen to....
Definition: midiinputcomponent.h:33
nap::MidiInputComponent::mPorts
std::vector< std::string > mPorts
Property: 'Ports' Filter specifying input ports that will be listened to. Empty means all ports....
Definition: midiinputcomponent.h:31
nap::Signal
Definition: signalslot.h:28
nap::EntityInstance
Definition: entity.h:34
nap::ComponentInstance
Definition: component.h:43
nap::MidiInputComponent::mChannels
std::vector< MidiValue > mChannels
Property: 'Channels' Filter specifying what midi channels to listen to. Empty means all channels....
Definition: midiinputcomponent.h:32
nap::MidiEvent
Definition: midievent.h:22
nap::Component
Definition: component.h:151
nap::MidiService
Definition: midiservice.h:26
nap
Definition: templateapp.h:17
nap::MidiInputComponentInstance::messageReceived
nap::Signal< const MidiEvent & > messageReceived
Definition: midiinputcomponent.h:63
nap::MidiInputComponentInstance::mTypes
std::vector< MidiEvent::Type > mTypes
Definition: midiinputcomponent.h:68
nap::MidiInputComponentInstance::mNumbers
std::vector< MidiValue > mNumbers
Definition: midiinputcomponent.h:67
nap::MidiInputComponent
Definition: midiinputcomponent.h:23
nap::MidiInputComponentInstance::mPorts
std::vector< std::string > mPorts
Definition: midiinputcomponent.h:65