Multiple updates to fix issues on debugger and ease the pitch shifter

pull/495/head
Vincent 2 years ago
parent dacba15590
commit 4de38cbc70
  1. 40
      src/Makefile
  2. 2
      src/fx_engine.hpp
  3. 19
      src/fx_pitch_shifter.cpp
  4. 5
      src/fx_pitch_shifter.h
  5. 2
      src/fx_reverberator.h
  6. 2
      src/fx_shimmer_helper.cpp
  7. 4
      src/fx_shimmer_helper.h
  8. 2
      src/test/Makefile
  9. 2
      src/test/test_unitFXTuning.cpp

@ -6,14 +6,38 @@ CIRCLE_STDLIB_DIR = ../circle-stdlib
SYNTH_DEXED_DIR = ../Synth_Dexed/src
CMSIS_DIR = ../CMSIS_5/CMSIS
OBJS = main.o kernel.o minidexed.o config.o userinterface.o uimenu.o \
mididevice.o midikeyboard.o serialmididevice.o pckeyboard.o \
sysexfileloader.o performanceconfig.o perftimer.o \
effect_compressor.o effect_platervbstereo.o \
fx.o fx_components.o \
fx_svf.o fx_tube.o fx_chorus.o fx_flanger.o fx_orbitone.o fx_phaser.o \
fx_delay.o fx_diffuser.o fx_pitch_shifter.o fx_shimmer_reverb.o fx_dry.o \
uibuttons.o midipin.o
OBJS := main.o
OBJS += kernel.o
OBJS += minidexed.o
OBJS += config.o
OBJS += userinterface.o
OBJS += uimenu.o
OBJS += mididevice.o
OBJS += midikeyboard.o
OBJS += serialmididevice.o
OBJS += pckeyboard.o
OBJS += sysexfileloader.o
OBJS += performanceconfig.o
OBJS += perftimer.o
OBJS += effect_compressor.o
OBJS += effect_platervbstereo.o
OBJS += fx.o
OBJS += fx_components.o
OBJS += fx_svf.o
OBJS += fx_tube.o
OBJS += fx_chorus.o
OBJS += fx_flanger.o
OBJS += fx_orbitone.o
OBJS += fx_phaser.o
OBJS += fx_delay.o
OBJS += fx_shimmer_helper.o
OBJS += fx_diffuser.o
OBJS += fx_pitch_shifter.o
OBJS += fx_reverberator.o
OBJS += fx_shimmer_reverb.o
OBJS += fx_dry.o
OBJS += uibuttons.o
OBJS += midipin.o
OPTIMIZE = -O3

@ -481,7 +481,7 @@ private:
if(enable_lfo)
{
for(size_t i = 0; i < size; ++i)
for(size_t i = 0; i < LFOIndex::kLFOCount; ++i)
{
this->lfo_[i]->inspect(inspector, deepInspection, tag + ".lfo_[ " + std::to_string(i) + " ]");
}

@ -1,8 +1,11 @@
#include "fx_pitch_shifter.h"
#include "fx_shimmer_helper.h"
#include <cmath>
#include <algorithm>
#define PITCH_SHIFT_BOUND 36.0f
#define ONE_POLE(out, in, coefficient) out += (coefficient) * ((in) - out);
#define TAIL , -1
@ -11,11 +14,12 @@ PitchShifter::PitchShifter(float32_t sampling_rate) :
FXElement(sampling_rate),
engine_(sampling_rate),
phase_(0.0f),
transpose_(0.0f),
ratio_(0.0f),
size_(-1.0f),
sample_size_(0.0f)
{
this->setRatio(0.5f);
this->setTranspose(0.0f);
this->setSize(0.5f);
}
@ -68,14 +72,19 @@ void PitchShifter::processSample(float32_t inL, float32_t inR, float32_t& outL,
c.writeAndLoad(outR, 0.0f);
}
void PitchShifter::setRatio(float32_t ratio)
void PitchShifter::setTranspose(float32_t transpose)
{
this->ratio_ = constrain(ratio, 0.0f, 1.0f);
transpose = constrain(transpose, -PITCH_SHIFT_BOUND, PITCH_SHIFT_BOUND);
if(this->transpose_ != transpose)
{
this->transpose_ = transpose;
this->ratio_ = semitoneToRatio(transpose);
}
}
float32_t PitchShifter::getRatio() const
float32_t PitchShifter::getTranspose() const
{
return this->ratio_;
return this->transpose_;
}
void PitchShifter::setSize(float32_t size)

@ -36,8 +36,8 @@ public:
virtual void reset() override;
virtual void processSample(float32_t inL, float32_t inR, float32_t& outL, float32_t& outR) override;
void setRatio(float32_t ratio);
float32_t getRatio() const;
void setTranspose(float32_t transpose);
float32_t getTranspose() const;
void setSize(float32_t size);
float32_t getSize() const;
@ -47,6 +47,7 @@ private:
Engine engine_;
float32_t phase_;
float32_t transpose_;
float32_t ratio_;
float32_t size_;
float32_t sample_size_;

@ -97,7 +97,7 @@ private:
if(deepInspection)
{
this->engine.dump(out, deepInspection, tag + ".engine_");
this->engine_.dump(out, deepInspection, tag + ".engine_");
}
)

@ -1,5 +1,3 @@
#pragma once
#include "fx_shimmer_helper.h"
const float lut_pitch_ratio_high[] = {

@ -5,10 +5,10 @@
extern const float lut_pitch_ratio_high[257];
extern const float lut_pitch_ratio_low[257];
inline float32_t SemitonesToRatio(float32_t semitones)
inline float32_t semitoneToRatio(float32_t semitones)
{
float32_t pitch = semitones + 128.0f;
MAKE_INTEGRAL_FRACTIONAL(pitch)
MAKE_INTEGRAL_FRACTIONAL(pitch);
return lut_pitch_ratio_high[pitch_integral] * lut_pitch_ratio_low[static_cast<int32_t>(pitch_fractional * 256.0f)];
}

@ -34,8 +34,10 @@ FX__SRCS += ../fx_orbitone.cpp
FX__SRCS += ../fx_flanger.cpp
FX__SRCS += ../fx_delay.cpp
FX__SRCS += ../effect_platervbstereo.cpp
FX__SRCS += ../fx_shimmer_helper.cpp
FX__SRCS += ../fx_diffuser.cpp
FX__SRCS += ../fx_pitch_shifter.cpp
FX__SRCS += ../fx_reverberator.cpp
FX__SRCS += ../fx_shimmer_reverb.cpp
FX__SRCS += ../fx_dry.cpp
FX__SRCS += ../fx_rack.cpp

@ -131,7 +131,7 @@ TEST(UnitFXTuning, PitchShifter)
{
PitchShifter fx(SAMPLING_FREQUENCY);
fx.setSize(0.2f);
fx.setRatio(0.8f);
fx.setTranspose(24.0f);
PREPARE_AUDIO_TEST(size, inSamples, outSamples, full_test_name);
SIMPLE_AUDIO_LOOP(inSamples, outSamples, size, inL, inR, outL, outR, fx);

Loading…
Cancel
Save