ElectroTechnique / TSynth-Teensy4.1

TSynth for Teensy 4.1

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

First Voice in Unisono Mode 1

rolfdegen opened this issue · comments

I have a question about Unisono Mode1 in TSynth 4.1. In the old Firmware (Version 2.00 ) you don't use DETUNE for the 1st voice. The Oscillator Frequency for Midi Note A4 is always 440Hz.

Firmware 2.00
void updateVoice1() { if (unison == 1) { waveformMod1a.frequency(NOTEFREQS[voices[0].note + oscPitchA]); waveformMod1b.frequency(NOTEFREQS[voices[0].note + oscPitchB] * (detune + ((1 - detune) * DETUNE[notesOn - 1][1]))); } else if (unison == 2) { waveformMod1a.frequency(NOTEFREQS[voices[0].note + oscPitchA + CHORD_DETUNE[0][chordDetune]]) ; waveformMod1b.frequency(NOTEFREQS[voices[0].note + oscPitchB + CHORD_DETUNE[0][chordDetune]] * CDT_DETUNE); } else { waveformMod1a.frequency(NOTEFREQS[voices[0].note + oscPitchA]); waveformMod1b.frequency(NOTEFREQS[voices[0].note + oscPitchB] * detune); } }

In the latest firmware version 2.33, the oscillator frequency for the 1st voice changes with the DETUNE.

Firmware 2.33
` void updateVoice(VoiceParams &params, uint8_t notesOn) {
Patch& osc = this->patch();

        if (params.unisonMode == 1) {
            int offset = 2 * this->index();
            osc.waveformMod_a.frequency(NOTEFREQS[this->_note + params.oscPitchA] * (params.detune + ((1 - params.detune) * DETUNE[notesOn - 1][offset])));
            osc.waveformMod_b.frequency(NOTEFREQS[this->_note + params.oscPitchB] * (params.detune + ((1 - params.detune) * DETUNE[notesOn - 1][offset + 1])));
        } else if (params.unisonMode == 2) {
            // TODO: This approach doesn't make sense with voices spread across multiple timbres.
            osc.waveformMod_a.frequency(NOTEFREQS[this->_note + params.oscPitchA + CHORD_DETUNE[this->index()][params.chordDetune]]) ;
            osc.waveformMod_b.frequency(NOTEFREQS[this->_note + params.oscPitchB + CHORD_DETUNE[this->index()][params.chordDetune]] * CDT_DETUNE);
        } else {
            osc.waveformMod_a.frequency(NOTEFREQS[this->_note + params.oscPitchA]);
            osc.waveformMod_b.frequency(NOTEFREQS[this->_note + params.oscPitchB] * params.detune);
        }
    }`

The base frequency of oscillator 1 in voice 1 (440 Hz) changes with the DETUNE setting. Is that correct ?

Greetings from germany and have a nice time :)