commit 85ac88dfecbf7f5c268f63e6b1ada86749220afe
parent 1a68778f25713175c3d90a5f360fafa8caa6030a
Author: Matt Demanett <matt@demanett.net>
Date: Tue, 15 Oct 2019 21:38:43 -0400
Extend poly channel calculation to the FM inputs, along with V/OCT, on VCO, XCO, FM-OP. #66
Diffstat:
4 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/README.md b/README.md
@@ -61,7 +61,7 @@ A standard VCO featuring:
The main frequency knob is calibrated in volts, from -4 to +6, corresponding to notes from C0 to C6. The default "0V" position corresponds to C4 (261.63HZ). The knob value is added to the pitch CV input at the V/OCT port. With CV input, the pitch can be driven as high as 95% of the Nyquist frequency (so, over 20KHZ at Rack's default sample rate). The FINE knob allows an additional adjustment of up to +/-1 semitone (100 cents, 1/12 volt). In slow mode, the output frequency is 7 octaves lower than in normal mode with the same knob/CV values.
-_Polyphony:_ <a href="#polyphony">Polyphonic</a>, with channels defined by the input cable at V/OCT.
+_Polyphony:_ <a href="#polyphony">Polyphonic</a>, with channels defined by maximum of the channels on the V/OCT and FM inputs.
#### XCO
@@ -73,7 +73,7 @@ Includes all the features of VCO, adding:
- A mix knob/CV to control the level of the wave in the mix (waves are output at full level at their individual outputs). The knob/CV response is linear in amplitude.
- A CV input for FM depth.
-_Polyphony:_ <a href="#polyphony">Polyphonic</a>, with channels defined by the input cable at V/OCT.
+_Polyphony:_ <a href="#polyphony">Polyphonic</a>, with channels defined by maximum of the channels on the V/OCT and FM inputs.
#### ADDITATOR
@@ -99,7 +99,7 @@ A sine-wave oscillator and simple synth voice designed to allow patching up the
- An on-board ADSR, controlled by the GATE input, with selectable routing to output level, feedback and depth, with CV control over the sustain level.
- A main frequency knob calibrated for setting the frequency as a ratio of the frequency dictated by the V/OCT input - assuming a single V/OCT CV is routed to multiple FM-OPs, this allows the relative frequency of each operator to be set via ratios.
-_Polyphony:_ <a href="#polyphony">Polyphonic</a>, with channels defined by the input cable at V/OCT.
+_Polyphony:_ <a href="#polyphony">Polyphonic</a>, with channels defined by maximum of the channels on the V/OCT and FM inputs.
### <a name="lfos"></a> LFOs
diff --git a/src/FMOp.cpp b/src/FMOp.cpp
@@ -84,7 +84,7 @@ bool FMOp::active() {
}
int FMOp::channels() {
- return std::max(1, inputs[PITCH_INPUT].getChannels());
+ return std::max(1, std::max(inputs[PITCH_INPUT].getChannels(), inputs[FM_INPUT].getChannels()));
}
void FMOp::addEngine(int c) {
diff --git a/src/VCO.cpp b/src/VCO.cpp
@@ -55,7 +55,7 @@ bool VCO::active() {
}
int VCO::channels() {
- return std::max(1, inputs[PITCH_INPUT].getChannels());
+ return std::max(1, std::max(inputs[PITCH_INPUT].getChannels(), inputs[FM_INPUT].getChannels()));
}
void VCO::addEngine(int c) {
diff --git a/src/XCO.cpp b/src/XCO.cpp
@@ -67,7 +67,7 @@ bool XCO::active() {
}
int XCO::channels() {
- return std::max(1, inputs[PITCH_INPUT].getChannels());
+ return std::max(1, std::max(inputs[PITCH_INPUT].getChannels(), inputs[FM_INPUT].getChannels()));
}
void XCO::addEngine(int c) {