|
Gin
|
Advanced MPE-capable synthesizer with mono/poly modes, glide, and voice management. More...
#include <gin_synthesiser.h>
Inherits juce::MPESynthesiser.
Protected Attributes | |
| int | noteOnIndex = -1 |
| int | noteOffIndex = -1 |
Advanced MPE-capable synthesizer with mono/poly modes, glide, and voice management.
Synthesiser extends JUCE's MPESynthesiser with professional features commonly needed in modern synthesizers:
Key Features:
Mono Mode: In monophonic mode, only one voice plays at a time. New notes either retrigger the envelope (non-legato) or smoothly transition pitch without retriggering (legato). Released notes in the note stack will cause the synth to jump back to the most recent held note.
Voice Stealing: When voice limit is reached, the oldest voice is stolen. The fast-kill mechanism allows immediate voice termination rather than waiting for release envelope, preventing audio glitches.
Glide Modes:
Usage:
| Synthesiser::Synthesiser | ( | ) |
Referenced by handleMidiEvent().
References turnOffAllVoices().
|
override |
References findVoiceToSteal(), getNumActiveVoices(), noteAddedMono(), and startVoice().
|
override |
References noteReleasedMono(), and noteReleasedMonoGlide().
| void Synthesiser::noteAddedMono | ( | juce::MPENote | newNote | ) |
References retriggerVoice(), and startVoice().
Referenced by noteAdded().
| void Synthesiser::noteReleasedMonoGlide | ( | juce::MPENote | finishedNote | ) |
References retriggerVoice(), and startVoice().
Referenced by noteReleased().
| void Synthesiser::noteReleasedMono | ( | juce::MPENote | finishedNote | ) |
References retriggerVoice(), and startVoice().
Referenced by noteReleased().
| bool Synthesiser::isNotePlaying | ( | juce::MPENote & | n | ) |
| int Synthesiser::getNumActiveVoices | ( | ) |
Referenced by noteAdded().
| juce::Array< SynthesiserVoice * > Synthesiser::getActiveVoices | ( | ) |
| int Synthesiser::getCpuUsage | ( | ) |
| void Synthesiser::startBlock | ( | ) |
| void Synthesiser::retriggerVoice | ( | SynthesiserVoice * | v, |
| juce::MPENote | note | ||
| ) |
References SynthesiserVoice::noteRetriggered(), SynthesiserVoice::setCurrentlyPlayingNote(), and updateGlide().
Referenced by noteAddedMono(), noteReleasedMono(), and noteReleasedMonoGlide().
References updateGlide().
Referenced by noteAdded(), noteAddedMono(), noteReleasedMono(), and noteReleasedMonoGlide().
| void Synthesiser::updateGlide | ( | juce::MPESynthesiserVoice * | v | ) |
Referenced by retriggerVoice(), and startVoice().
| void Synthesiser::stopVoiceFastKill | ( | juce::MPESynthesiserVoice * | v, |
| juce::MPENote | note, | ||
| bool | tailOff | ||
| ) |
|
override |
Referenced by noteAdded().
| void Synthesiser::renderNextBlock | ( | juce::AudioBuffer< floatType > & | outputAudio, |
| const juce::MidiBuffer & | inputMidi, | ||
| int | startSample, | ||
| int | numSamples | ||
| ) |
References getNewestVoice(), noteOffIndex, and noteOnIndex.
| SynthesiserVoice * Synthesiser::getOldestVoice | ( | ) |
| SynthesiserVoice * Synthesiser::getNewestVoice | ( | ) |
Referenced by renderNextBlock().
|
protected |
Referenced by renderNextBlock().
|
protected |
Referenced by renderNextBlock().