MostlyHarmless 0.0.1
Loading...
Searching...
No Matches
mostlyharmless_IEngine.h
Go to the documentation of this file.
1//
2// Created by Syl Morrison on 20/10/2024.
3//
4
5#ifndef MOSTLYHARMLESS_MOSTLYHARMLESS_IENGINE_H
6#define MOSTLYHARMLESS_MOSTLYHARMLESS_IENGINE_H
9#include <mostly_harmless/mostlyharmless_Concepts.h>
10#include <marvin/containers/marvin_BufferView.h>
11#include <marvin/library/marvin_Concepts.h>
12namespace mostly_harmless::core {
13
17 struct InitContext {
21 double sampleRate;
25 std::uint32_t minBufferSize;
29 std::uint32_t maxBufferSize;
30 };
31
39 marvin::containers::BufferView<float> buffer;
43 std::optional<mostly_harmless::TransportState> transportState;
44 };
45
56 class IEngine {
57 public:
61 virtual ~IEngine() noexcept = default;
62
68 virtual void initialise(InitContext context) noexcept = 0;
69
75 virtual void process(ProcessContext context) noexcept = 0;
76
80 virtual void reset() noexcept = 0;
81
90 virtual void handleNoteOn([[maybe_unused]] std::uint16_t portIndex, [[maybe_unused]] std::uint8_t channel, [[maybe_unused]] std::uint8_t note, [[maybe_unused]] double velocity) {}
91
100 virtual void handleNoteOff([[maybe_unused]] std::uint16_t portIndex, [[maybe_unused]] std::uint8_t channel, [[maybe_unused]] std::uint8_t note, [[maybe_unused]] double velocity) {}
101
111 virtual void handleControlChange([[maybe_unused]] std::uint16_t portIndex, [[maybe_unused]] std::uint8_t channel, [[maybe_unused]] std::uint8_t controlNumber, [[maybe_unused]] std::uint8_t data) {}
112
120 virtual void handleProgramChange([[maybe_unused]] std::uint16_t portIndex, [[maybe_unused]] std::uint8_t channel, [[maybe_unused]] std::uint8_t programNumber) {};
121
131 virtual void handlePolyAftertouch([[maybe_unused]] std::uint16_t portIndex, [[maybe_unused]] std::uint8_t channel, [[maybe_unused]] std::uint8_t note, [[maybe_unused]] std::uint8_t pressure) {}
132
141 virtual void handleChannelAftertouch([[maybe_unused]] std::uint16_t portIndex, [[maybe_unused]] std::uint8_t channel, [[maybe_unused]] std::uint8_t pressure) {}
142
150 virtual void handlePitchWheel([[maybe_unused]] std::uint16_t portIndex, [[maybe_unused]] std::uint8_t channel, [[maybe_unused]] double value) {}
151 };
152} // namespace mostly_harmless::core
153#endif // MOSTLYHARMLESS_MOSTLYHARMLESS_IENGINE_H
Interface for the plugin's audio processing functionality.
Definition mostlyharmless_IEngine.h:56
virtual ~IEngine() noexcept=default
virtual void process(ProcessContext context) noexcept=0
virtual void reset() noexcept=0
virtual void initialise(InitContext context) noexcept=0
virtual void handleNoteOff(std::uint16_t portIndex, std::uint8_t channel, std::uint8_t note, double velocity)
Definition mostlyharmless_IEngine.h:100
virtual void handleProgramChange(std::uint16_t portIndex, std::uint8_t channel, std::uint8_t programNumber)
Definition mostlyharmless_IEngine.h:120
virtual void handleNoteOn(std::uint16_t portIndex, std::uint8_t channel, std::uint8_t note, double velocity)
Definition mostlyharmless_IEngine.h:90
virtual void handleChannelAftertouch(std::uint16_t portIndex, std::uint8_t channel, std::uint8_t pressure)
Definition mostlyharmless_IEngine.h:141
virtual void handlePolyAftertouch(std::uint16_t portIndex, std::uint8_t channel, std::uint8_t note, std::uint8_t pressure)
Definition mostlyharmless_IEngine.h:131
virtual void handleControlChange(std::uint16_t portIndex, std::uint8_t channel, std::uint8_t controlNumber, std::uint8_t data)
Definition mostlyharmless_IEngine.h:111
virtual void handlePitchWheel(std::uint16_t portIndex, std::uint8_t channel, double value)
Definition mostlyharmless_IEngine.h:150
Contains core functionality of the framework.
Definition mostlyharmless_PluginBase.h:15
Contains classes and functions related to data management.
Definition mostlyharmless_DatabaseState.h:16
Container for context passed to IEngine::initialise.
Definition mostlyharmless_IEngine.h:17
double sampleRate
Definition mostlyharmless_IEngine.h:21
std::uint32_t maxBufferSize
Definition mostlyharmless_IEngine.h:29
std::uint32_t minBufferSize
Definition mostlyharmless_IEngine.h:25
Container for context passed to IEngine::process.
Definition mostlyharmless_IEngine.h:35
std::optional< mostly_harmless::TransportState > transportState
Definition mostlyharmless_IEngine.h:43
marvin::containers::BufferView< float > buffer
Definition mostlyharmless_IEngine.h:39