gearmulator

Emulation of classic VA synths of the late 90s/2000s that are based on Motorola 56300 family DSPs
Log | Files | Refs | Submodules | README | LICENSE

commit 2825b5a681e09f281dfb65e191633855ffbd9974
parent 6582060e0eb05fe0c0d4e2c9681e1032774b6540
Author: dsp56300 <dsp56300@users.noreply.github.com>
Date:   Thu,  7 Apr 2022 18:37:42 +0200

fix audio inputs not being const

Diffstat:
Msource/jucePlugin/PluginProcessor.cpp | 4++--
Msource/synthLib/audiobuffer.cpp | 8+++++++-
Msource/synthLib/audiobuffer.h | 3++-
Msource/synthLib/device.cpp | 4++--
Msource/synthLib/device.h | 2+-
Msource/synthLib/plugin.cpp | 6+++---
Msource/synthLib/plugin.h | 2+-
Msource/synthLib/resamplerInOut.cpp | 4++--
Msource/synthLib/resamplerInOut.h | 4++--
Msource/virusLib/device.cpp | 2+-
Msource/virusLib/device.h | 2+-
Msource/virusTestConsole/virusTestConsole.cpp | 2+-
12 files changed, 25 insertions(+), 18 deletions(-)

diff --git a/source/jucePlugin/PluginProcessor.cpp b/source/jucePlugin/PluginProcessor.cpp @@ -142,7 +142,7 @@ void AudioPluginAudioProcessor::processBlock (juce::AudioBuffer<float>& buffer, // Alternatively, you can process the samples with the channels // interleaved by keeping the same state. - float* inputs[8] = {}; + const float* inputs[8] = {}; float* outputs[8] = {}; for (int channel = 0; channel < totalNumInputChannels; ++channel) @@ -150,7 +150,7 @@ void AudioPluginAudioProcessor::processBlock (juce::AudioBuffer<float>& buffer, const float* in = buffer.getReadPointer(channel); float* out = buffer.getWritePointer(channel); - inputs[channel] = const_cast<float*>(in); // TODO: fixme + inputs[channel] = in; outputs[channel] = out; } diff --git a/source/synthLib/audiobuffer.cpp b/source/synthLib/audiobuffer.cpp @@ -49,7 +49,7 @@ namespace synthLib } } - void AudioBuffer::append(float** _data, size_t _size) + void AudioBuffer::append(const float** _data, size_t _size) { for(size_t c=0; c<m_data.size(); ++c) { @@ -74,6 +74,12 @@ namespace synthLib _pointers[c] = &m_data[c][_offset]; } + void AudioBuffer::fillPointers(const float** _pointers, size_t _offset) const + { + for(size_t c=0; c<m_data.size(); ++c) + _pointers[c] = &m_data[c][_offset]; + } + size_t AudioBuffer::size() const { if(m_data.empty()) diff --git a/source/synthLib/audiobuffer.h b/source/synthLib/audiobuffer.h @@ -13,11 +13,12 @@ namespace synthLib void reserve(size_t _capacity); void resize(size_t _capacity); void append(const TBuffer& _data); - void append(float** _data, size_t _size); + void append(const float** _data, size_t _size); void remove(size_t _count); void fillPointers(float** _pointers, size_t _offset = 0); + void fillPointers(const float** _pointers, size_t _offset = 0) const; size_t size() const; void ensureSize(size_t _size) diff --git a/source/synthLib/device.cpp b/source/synthLib/device.cpp @@ -52,7 +52,7 @@ namespace synthLib buf.resize(_numSamples); const auto ptr = &buf[0]; - float* in[2] = {ptr, ptr}; + const float* in[2] = {ptr, ptr}; float* out[2] = {ptr, ptr}; std::vector<SMidiEvent> midi; @@ -60,7 +60,7 @@ namespace synthLib process(in, out, _numSamples, midi, midi); } - void Device::process(float** _inputs, float** _outputs, const size_t _size, const std::vector<SMidiEvent>& _midiIn, std::vector<SMidiEvent>& _midiOut) + void Device::process(const float** _inputs, float** _outputs, const size_t _size, const std::vector<SMidiEvent>& _midiIn, std::vector<SMidiEvent>& _midiOut) { for (const auto& ev : _midiIn) sendMidi(ev, _midiOut); diff --git a/source/synthLib/device.h b/source/synthLib/device.h @@ -15,7 +15,7 @@ namespace synthLib public: Device(uint32_t _memorySize, uint32_t _externalMemStartAddress); virtual ~Device(); - virtual void process(float** _inputs, float** _outputs, size_t _size, const std::vector<SMidiEvent>& _midiIn, std::vector<SMidiEvent>& _midiOut); + virtual void process(const float** _inputs, float** _outputs, size_t _size, const std::vector<SMidiEvent>& _midiIn, std::vector<SMidiEvent>& _midiOut); void setExtraLatencySamples(uint32_t _size); uint32_t getExtraLatencySamples() const { return m_extraLatency; } diff --git a/source/synthLib/plugin.cpp b/source/synthLib/plugin.cpp @@ -44,7 +44,7 @@ namespace synthLib updateDeviceLatency(); } - void Plugin::process(float** _inputs, float** _outputs, size_t _count, const float _bpm, const float _ppqPos, const bool _isPlaying) + void Plugin::process(const float** _inputs, float** _outputs, size_t _count, const float _bpm, const float _ppqPos, const bool _isPlaying) { if(!m_device->isValid()) return; @@ -52,7 +52,7 @@ namespace synthLib setFlushDenormalsToZero(); - float* inputs[8] {}; + const float* inputs[8] {}; float* outputs[8] {}; inputs[0] = _inputs && _inputs[0] ? _inputs[0] : getDummyBuffer(_count); @@ -66,7 +66,7 @@ namespace synthLib processMidiClock(_bpm, _ppqPos, _isPlaying, _count); m_resampler.process(inputs, outputs, m_midiIn, m_midiOut, static_cast<uint32_t>(_count), - [&](float** _in, float** _out, size_t _c, const ResamplerInOut::TMidiVec& _midiIn, ResamplerInOut::TMidiVec& _midiOut) + [&](const float** _in, float** _out, size_t _c, const ResamplerInOut::TMidiVec& _midiIn, ResamplerInOut::TMidiVec& _midiOut) { m_device->process(_in, _out, _c, _midiIn, _midiOut); }); diff --git a/source/synthLib/plugin.h b/source/synthLib/plugin.h @@ -26,7 +26,7 @@ namespace synthLib uint32_t getLatencyMidiToOutput() const; uint32_t getLatencyInputToOutput() const; - void process(float** _inputs, float** _outputs, size_t _count, float _bpm, float _ppqPos, bool _isPlaying); + void process(const float** _inputs, float** _outputs, size_t _count, float _bpm, float _ppqPos, bool _isPlaying); void getMidiOut(std::vector<SMidiEvent>& _midiOut); bool isValid() const; diff --git a/source/synthLib/resamplerInOut.cpp b/source/synthLib/resamplerInOut.cpp @@ -79,7 +79,7 @@ namespace synthLib } } - void ResamplerInOut::process(float** _inputs, float** _outputs, const TMidiVec& _midiIn, TMidiVec& _midiOut, uint32_t _numSamples, const TProcessFunc& _processFunc) + void ResamplerInOut::process(const float** _inputs, float** _outputs, const TMidiVec& _midiIn, TMidiVec& _midiOut, uint32_t _numSamples, const TProcessFunc& _processFunc) { if(!m_in || !m_out) return; @@ -143,7 +143,7 @@ namespace synthLib clampMidiEvents(m_processedMidiIn, m_midiIn, 0, _numProcessedSamples-1); m_midiIn.clear(); - float* inputs[g_channelCount]; + const float* inputs[g_channelCount]; if(_numProcessedSamples > m_scaledInputSize) { // resampler prewarming, wants more data than we have diff --git a/source/synthLib/resamplerInOut.h b/source/synthLib/resamplerInOut.h @@ -12,14 +12,14 @@ namespace synthLib { public: using TMidiVec = std::vector<SMidiEvent>; - using TProcessFunc = std::function<void(float**, float**, size_t, const TMidiVec&, TMidiVec&)>; + using TProcessFunc = std::function<void(const float**, float**, size_t, const TMidiVec&, TMidiVec&)>; ResamplerInOut() = default; void setDeviceSamplerate(float _samplerate); void setHostSamplerate(float _samplerate); - void process(float** _inputs, float** _outputs, const TMidiVec& _midiIn, TMidiVec& _midiOut, uint32_t _numSamples, const TProcessFunc& _processFunc); + void process(const float** _inputs, float** _outputs, const TMidiVec& _midiIn, TMidiVec& _midiOut, uint32_t _numSamples, const TProcessFunc& _processFunc); uint32_t getOutputLatency() const { return m_outputLatency; } uint32_t getInputLatency() const { return m_inputLatency; } diff --git a/source/virusLib/device.cpp b/source/virusLib/device.cpp @@ -40,7 +40,7 @@ namespace virusLib return m_rom.isValid(); } - void Device::process(float** _inputs, float** _outputs, size_t _size, const std::vector<synthLib::SMidiEvent>& _midiIn, std::vector<synthLib::SMidiEvent>& _midiOut) + void Device::process(const float** _inputs, float** _outputs, size_t _size, const std::vector<synthLib::SMidiEvent>& _midiIn, std::vector<synthLib::SMidiEvent>& _midiOut) { synthLib::Device::process(_inputs, _outputs, _size, _midiIn, _midiOut); m_syx.process(_size); diff --git a/source/virusLib/device.h b/source/virusLib/device.h @@ -17,7 +17,7 @@ namespace virusLib float getSamplerate() const override; bool isValid() const override; - void process(float** _inputs, float** _outputs, size_t _size, const std::vector<synthLib::SMidiEvent>& _midiIn, std::vector<synthLib::SMidiEvent>& _midiOut) override; + void process(const float** _inputs, float** _outputs, size_t _size, const std::vector<synthLib::SMidiEvent>& _midiIn, std::vector<synthLib::SMidiEvent>& _midiOut) override; bool getState(std::vector<uint8_t>& _state, synthLib::StateType _type) override; bool setState(const std::vector<uint8_t>& _state, synthLib::StateType _type) override; diff --git a/source/virusTestConsole/virusTestConsole.cpp b/source/virusTestConsole/virusTestConsole.cpp @@ -80,7 +80,7 @@ void audioCallback(dsp56k::Audio* audio) constexpr size_t channelsOut = 2; TWord inputData[channelsIn][sampleCount] = {{0,0,0,0}, {0,0,0,0}}; - TWord* audioIn [channelsIn ] = {inputData[0], inputData[1] }; + const TWord* audioIn [channelsIn ] = {inputData[0], inputData[1] }; TWord outputData[channelsOut][sampleCount] ={{0, 0, 0, 0}, {0, 0, 0, 0}}; TWord* audioOut[channelsOut] = {outputData[0], outputData[1]};