iPlug2 - C++ Audio Plug-in Framework
|
A monophonic/polyphonic synthesiser base class which can be supplied with a custom voice. More...
#include <MidiSynth.h>
Public Member Functions | |
MidiSynth (VoiceAllocator::EPolyMode mode, int blockSize=kDefaultBlockSize) | |
MidiSynth (const MidiSynth &)=delete | |
MidiSynth & | operator= (const MidiSynth &)=delete |
void | Reset () |
void | SetSampleRateAndBlockSize (double sampleRate, int blockSize) |
void | SetVoicesActive (bool active) |
If you are using this class in a non-traditional mode of polyphony (e.g.to stack loads of voices) you might want to manually SetVoicesActive() usually this would happen when you trigger notes. More... | |
void | InitBasicMPE () |
void | SetPitchBendRange (int pitchBendRange) |
Set the pitch bend range for non-MPE mode. More... | |
void | SetPolyMode (VoiceAllocator::EPolyMode mode) |
void | SetATMode (VoiceAllocator::EATMode mode) |
void | SetKeyToPitchFn (const std::function< float(int)> &fn) |
Set this function to something other than the default if you need to implement a tuning table for microtonal support. More... | |
void | SetNoteOffset (double offset) |
void | SetNoteGlideTime (double t) |
void | SetControlGlideTime (double t) |
SynthVoice * | GetVoice (int voiceIdx) |
void | ForEachVoice (std::function< void(SynthVoice &voice)> func) |
size_t | NVoices () const |
void | AddVoice (SynthVoice *pVoice, uint8_t zone) |
adds a SynthVoice to this MidiSynth, taking ownership of the object. More... | |
void | AddMidiMsgToQueue (const IMidiMsg &msg) |
bool | ProcessBlock (sample **inputs, sample **outputs, int nInputs, int nOutputs, int nFrames) |
Processes a block of audio samples. More... | |
Static Public Attributes | |
static constexpr int | kDefaultBlockSize = 32 |
This defines the size in samples of a single block of processing that will be done by the synth. More... | |
static constexpr int | kDefaultPitchBendRange = 12 |
A monophonic/polyphonic synthesiser base class which can be supplied with a custom voice.
Supports different kinds of after touch, pitch bend, velocity and after touch curves, unison (currently monophonic mode only)
Definition at line 37 of file MidiSynth.h.
MidiSynth::MidiSynth | ( | VoiceAllocator::EPolyMode | mode, |
int | blockSize = kDefaultBlockSize |
||
) |
Definition at line 15 of file MidiSynth.cpp.
MidiSynth::~MidiSynth | ( | ) |
Definition at line 34 of file MidiSynth.cpp.
|
inline |
Definition at line 143 of file MidiSynth.h.
|
inline |
adds a SynthVoice to this MidiSynth, taking ownership of the object.
Definition at line 138 of file MidiSynth.h.
References VoiceAllocator::AddVoice().
|
inline |
Definition at line 126 of file MidiSynth.h.
|
inline |
Definition at line 121 of file MidiSynth.h.
|
inline |
Definition at line 68 of file MidiSynth.h.
|
inline |
Definition at line 132 of file MidiSynth.h.
bool MidiSynth::ProcessBlock | ( | sample ** | inputs, |
sample ** | outputs, | ||
int | nInputs, | ||
int | nOutputs, | ||
int | nFrames | ||
) |
Processes a block of audio samples.
inputs | Pointer to input Arrays |
outputs | Pointer to output Arrays |
nInputs | The number of input channels that contain valid data |
nOutputs | input channels that contain valid data |
nFrames | The number of sample frames to process |
true
if the synth is silent Definition at line 402 of file MidiSynth.cpp.
References VoiceAllocator::AddEvent(), SynthVoice::GetBusy(), and VoiceAllocator::ProcessEvents().
|
inline |
Definition at line 52 of file MidiSynth.h.
|
inline |
Definition at line 92 of file MidiSynth.h.
|
inline |
Definition at line 116 of file MidiSynth.h.
|
inline |
Set this function to something other than the default if you need to implement a tuning table for microtonal support.
fn | A function taking an integer key value and returning a double-precision pitch value, where 0.5 = 220Hz, 1.0 = 440 Hz, 2.0 = 880 Hz ("1v / octave"). |
Definition at line 101 of file MidiSynth.h.
|
inline |
Definition at line 111 of file MidiSynth.h.
|
inline |
Definition at line 106 of file MidiSynth.h.
|
inline |
Set the pitch bend range for non-MPE mode.
Definition at line 74 of file MidiSynth.h.
|
inline |
Definition at line 87 of file MidiSynth.h.
void MidiSynth::SetSampleRateAndBlockSize | ( | double | sampleRate, |
int | blockSize | ||
) |
Definition at line 477 of file MidiSynth.cpp.
|
inline |
If you are using this class in a non-traditional mode of polyphony (e.g.to stack loads of voices) you might want to manually SetVoicesActive() usually this would happen when you trigger notes.
active | should the class report that voices are active |
Definition at line 63 of file MidiSynth.h.
|
staticconstexpr |
This defines the size in samples of a single block of processing that will be done by the synth.
Definition at line 41 of file MidiSynth.h.
|
staticconstexpr |
Definition at line 42 of file MidiSynth.h.