9#if !defined(JUCE_AUDIO_DEVICES_H_INCLUDED)
52 typedef std::map<int, std::map<std::string, const vital::ValueDetails*>>
midi_map;
133 std::map<std::string, String>* gui_state,
Listener* listener =
nullptr);
224 void processAllNotesOff(
const MidiMessage& midi_message,
int sample_position,
int channel);
238 void processSustain(
const MidiMessage& midi_message,
int sample_position,
int channel);
247 void processSostenuto(
const MidiMessage& midi_message,
int sample_position,
int channel);
256 void processPitchBend(
const MidiMessage& midi_message,
int sample_position,
int channel);
265 void processPressure(
const MidiMessage& midi_message,
int sample_position,
int channel);
274 void processSlide(
const MidiMessage& midi_message,
int sample_position,
int channel);
392 JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(
MidiManager)
An interface for classes that listen to MIDI-driven parameter changes.
Definition midi_manager.h:91
virtual ~Listener()
Definition midi_manager.h:93
virtual void modWheelMidiChanged(vital::mono_float value)=0
Called when the mod wheel changes.
virtual void valueChangedThroughMidi(const std::string &name, vital::mono_float value)=0
Called when a parameter value changes due to a MIDI control message.
virtual void presetChangedThroughMidi(File preset)=0
Called when a preset change is triggered via MIDI.
virtual void pitchWheelMidiChanged(vital::mono_float value)=0
Called when the pitch wheel changes.
The MidiManager class handles all incoming MIDI messages and directs them to the synthesizer engine.
Definition midi_manager.h:44
MidiSecondaryType
Enum representing secondary MIDI controller values (MIDI CC numbers).
Definition midi_manager.h:70
@ kAllNotesOff
Definition midi_manager.h:82
@ kBankSelect
Definition midi_manager.h:71
@ kAllControllersOff
Definition midi_manager.h:81
@ kLsbSlide
Definition midi_manager.h:79
@ kAllSoundsOff
Definition midi_manager.h:80
@ kModWheel
Definition midi_manager.h:72
@ kSostenutoPedal
Definition midi_manager.h:75
@ kSlide
Definition midi_manager.h:77
@ kSustainPedal
Definition midi_manager.h:74
@ kSoftPedalOn
Definition midi_manager.h:76
@ kFolderSelect
Definition midi_manager.h:73
@ kLsbPressure
Definition midi_manager.h:78
const vital::ValueDetails * armed_value_
Parameter armed for MIDI learn.
Definition midi_manager.h:380
int current_bank_
Tracks the current bank for preset selection.
Definition midi_manager.h:376
void setSampleRate(double sample_rate)
Sets the audio sample rate for MIDI message timing.
Definition midi_manager.cpp:101
midi_map getMidiLearnMap()
Returns the current MIDI learn map.
Definition midi_manager.h:317
void readMpeMessage(const MidiMessage &message)
Parses and processes an MPE-related MIDI message.
Definition midi_manager.cpp:109
void midiInput(int control, vital::mono_float value)
Handles a direct MIDI input value and applies MIDI learn if armed.
Definition midi_manager.cpp:69
void processSlide(const MidiMessage &midi_message, int sample_position, int channel)
Processes slide messages (MPE CC events) translating them to appropriate modulation.
Definition midi_manager.cpp:202
bool isMpeChannelMasterLowerZone(int channel)
Checks if the given channel is the MPE master channel for the lower zone.
Definition midi_manager.cpp:212
MidiMessageCollector midi_collector_
Collects incoming MIDI messages.
Definition midi_manager.h:373
std::map< std::string, String > * gui_state_
Holds GUI-related state info.
Definition midi_manager.h:374
MidiMainType
Enum representing main categories of MIDI events (status bytes).
Definition midi_manager.h:57
@ kProgramChange
MIDI Program Change.
Definition midi_manager.h:62
@ kChannelPressure
MIDI Channel Pressure (monophonic aftertouch)
Definition midi_manager.h:63
@ kPitchWheel
MIDI Pitch Wheel event.
Definition midi_manager.h:64
@ kController
MIDI Control Change event.
Definition midi_manager.h:61
@ kNoteOn
MIDI Note On event.
Definition midi_manager.h:59
@ kAftertouch
MIDI Polyphonic Aftertouch.
Definition midi_manager.h:60
@ kNoteOff
MIDI Note Off event.
Definition midi_manager.h:58
void setMidiLearnMap(const midi_map &midi_learn_map)
Sets the current MIDI learn map, overriding existing mappings.
Definition midi_manager.h:324
std::map< int, std::map< std::string, const vital::ValueDetails * > > midi_map
A nested type defining a map from MIDI controls to a map of parameter names and their ValueDetails.
Definition midi_manager.h:52
Listener * listener_
Listener for MIDI-driven parameter changes and preset loads.
Definition midi_manager.h:375
void setMpeEnabled(bool enabled)
Enables or disables MPE mode for MIDI processing.
Definition midi_manager.h:310
void processPressure(const MidiMessage &midi_message, int sample_position, int channel)
Processes channel pressure (aftertouch) MIDI messages.
Definition midi_manager.cpp:192
bool isMpeChannelMasterUpperZone(int channel)
Checks if the given channel is the MPE master channel for the upper zone.
Definition midi_manager.cpp:216
int lsb_pressure_values_[vital::kNumMidiChannels]
LSB values for channel pressure.
Definition midi_manager.h:384
void handleIncomingMidiMessage(MidiInput *source, const MidiMessage &midi_message) override
Handles incoming MIDI messages from a MidiInput source (MidiInputCallback interface).
Definition midi_manager.cpp:310
bool isMidiMapped(const std::string &name) const
Checks if a parameter is already mapped to a MIDI control.
Definition midi_manager.cpp:93
void processAllSoundsOff()
Processes an 'All Sounds Off' MIDI message, turning off all voices immediately.
Definition midi_manager.cpp:122
void processAllNotesOff(const MidiMessage &midi_message, int sample_position, int channel)
Processes an 'All Notes Off' MIDI message.
Definition midi_manager.cpp:113
int lsb_slide_values_[vital::kNumMidiChannels]
LSB values for slide control.
Definition midi_manager.h:386
force_inline int upperMasterChannel()
Returns the master channel index (0-based) of the MPE upper zone.
Definition midi_manager.h:303
MidiManager(SynthBase *synth, MidiKeyboardState *keyboard_state, std::map< std::string, String > *gui_state, Listener *listener=nullptr)
Constructs a MidiManager to handle MIDI events for a given SynthBase instance.
Definition midi_manager.cpp:27
int current_preset_
Tracks the current preset within a folder.
Definition midi_manager.h:378
void replaceKeyboardMessages(MidiBuffer &buffer, int num_samples)
Replaces keyboard messages in the given MIDI buffer.
Definition midi_manager.cpp:314
void processSostenuto(const MidiMessage &midi_message, int sample_position, int channel)
Processes a sostenuto pedal MIDI message.
Definition midi_manager.cpp:148
void processPitchBend(const MidiMessage &midi_message, int sample_position, int channel)
Processes a pitch bend MIDI message.
Definition midi_manager.cpp:170
void armMidiLearn(std::string name)
Arms the MIDI learn functionality for a given parameter.
Definition midi_manager.cpp:49
void removeNextBlockOfMessages(MidiBuffer &buffer, int num_samples)
Removes the next block of MIDI messages, filling a MidiBuffer.
Definition midi_manager.cpp:105
int current_folder_
Tracks the current folder for preset selection.
Definition midi_manager.h:377
force_inline int lowerZoneEndChannel()
Returns the end channel index (0-based) of the MPE lower zone.
Definition midi_manager.h:297
int msb_pressure_values_[vital::kNumMidiChannels]
MSB values for channel pressure.
Definition midi_manager.h:383
MPEZoneLayout mpe_zone_layout_
MPE zone layout object.
Definition midi_manager.h:389
midi_map midi_learn_map_
Mapping of MIDI controls to synth parameters.
Definition midi_manager.h:381
force_inline int lowerZoneStartChannel()
Returns the start channel index (0-based) of the MPE lower zone.
Definition midi_manager.h:293
vital::SoundEngine * engine_
The sound engine for handling audio events.
Definition midi_manager.h:371
SynthBase * synth_
Associated synthesizer base instance.
Definition midi_manager.h:370
void processSustain(const MidiMessage &midi_message, int sample_position, int channel)
Processes a sustain pedal MIDI message.
Definition midi_manager.cpp:126
MidiKeyboardState * keyboard_state_
The keyboard state for on-screen keyboard integration.
Definition midi_manager.h:372
bool mpe_enabled_
True if MPE mode is enabled.
Definition midi_manager.h:388
virtual ~MidiManager()
Destructor.
Definition midi_manager.cpp:46
void clearMidiLearn(const std::string &name)
Clears an existing MIDI mapping for a given parameter.
Definition midi_manager.cpp:60
force_inline int upperZoneStartChannel()
Returns the start channel index (0-based) of the MPE upper zone.
Definition midi_manager.h:295
int msb_slide_values_[vital::kNumMidiChannels]
MSB values for slide control.
Definition midi_manager.h:385
void processMidiMessage(const MidiMessage &midi_message, int sample_position=0)
Processes a given MIDI message and forwards it to the synth engine.
Definition midi_manager.cpp:220
force_inline int upperZoneEndChannel()
Returns the end channel index (0-based) of the MPE upper zone.
Definition midi_manager.h:299
MidiRPNDetector rpn_detector_
Detects and processes MIDI RPN/NRPN messages.
Definition midi_manager.h:390
void cancelMidiLearn()
Cancels the MIDI learn operation without assigning any mapping.
Definition midi_manager.cpp:56
force_inline int lowerMasterChannel()
Returns the master channel index (0-based) of the MPE lower zone.
Definition midi_manager.h:301
Definition midi_manager.h:20
void removeNextBlockOfMessages(MidiBuffer &buffer, int num_samples)
Definition midi_manager.h:23
void reset(int sample_rate)
Definition midi_manager.h:22
void addMessageToQueue(const MidiMessage &midi_message)
Definition midi_manager.h:24
A base class providing foundational functionality for the Vital synthesizer’s engine,...
Definition synth_base.h:42
Core class responsible for handling note events, oversampling, and the main effects chain.
Definition sound_engine.h:33
#define force_inline
Definition common.h:23
Contains classes and functions used within the Vital synthesizer framework.
constexpr int kNumMidiChannels
MIDI channels available per device.
Definition common.h:57
float mono_float
Definition common.h:33
A callback message class that notifies listeners of preset changes through MIDI.
Definition midi_manager.h:341
Listener * listener
The listener to notify.
Definition midi_manager.h:358
File preset
The preset file that was loaded.
Definition midi_manager.h:359
void messageCallback() override
The callback invoked when the message is delivered.
Definition midi_manager.h:353
PresetLoadedCallback(Listener *lis, File pre)
Constructs a PresetLoadedCallback.
Definition midi_manager.h:348
Holds metadata about a single parameter (control) in the Vital synthesizer.
Definition synth_parameters.h:23