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:
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]};