commit fd6729e458dd1b141a874fc64a2aba3e5a1ca7d5
parent fdacceb027fac59732013eecae681dfc457503e4
Author: dsp56300 <dsp56300@users.noreply.github.com>
Date: Mon, 7 Oct 2024 23:19:17 +0200
merge esai/essi rework back to main
Diffstat:
7 files changed, 13 insertions(+), 40 deletions(-)
diff --git a/source/mqLib/mqhardware.cpp b/source/mqLib/mqhardware.cpp
@@ -229,10 +229,9 @@ namespace mqLib
dsp56k::TWord* outputs[16]{nullptr};
// TODO: Right audio input channel needs to be delayed by one frame
- ::memcpy(&m_delayedAudioIn[1], m_audioInputs[1].data(), sizeof(dsp56k::TWord) * _frames);
- inputs[1] = &m_audioInputs[0].front();
- inputs[0] = m_delayedAudioIn.data();
+ inputs[0] = &m_audioInputs[0].front();
+ inputs[1] = &m_audioInputs[1].front();
inputs[2] = m_dummyInput.data();
inputs[3] = m_dummyInput.data();
inputs[4] = m_dummyInput.data();
@@ -344,8 +343,6 @@ namespace mqLib
outputs[5] += processCount;
}
- m_delayedAudioIn[0] = m_audioInputs[1][totalFrames-1];
-
m_processAudio = false;
}
@@ -357,9 +354,6 @@ namespace mqLib
input.resize(_frames);
}
- if(m_delayedAudioIn.size() < _frames + 1)
- m_delayedAudioIn.resize(_frames + 1);
-
if(m_audioOutputs.front().size() < _frames)
{
for (auto& output : m_audioOutputs)
diff --git a/source/nord/n2x/n2xLib/n2xdsp.cpp b/source/nord/n2x/n2xLib/n2xdsp.cpp
@@ -56,7 +56,7 @@ namespace n2x
// receives audio from DSP A at twice the sample rate
// sends its audio to the DACs at regular sample rate
clock.setEsaiDivider(&esai, 1, 0);
- clock.setEsaiCounter(&esai, -1, 0);
+// clock.setEsaiCounter(&esai, -1, 0);
}
}
diff --git a/source/nord/n2x/n2xLib/n2xhardware.cpp b/source/nord/n2x/n2xLib/n2xhardware.cpp
@@ -89,10 +89,10 @@ namespace n2x
ensureBufferSize(_frames);
dsp56k::TWord* outputs[12]{nullptr};
- outputs[0] = &m_audioOutputs[0].front();
- outputs[1] = &m_audioOutputs[1].front();
- outputs[2] = &m_audioOutputs[2].front();
- outputs[3] = &m_audioOutputs[3].front();
+ outputs[1] = &m_audioOutputs[0].front();
+ outputs[0] = &m_audioOutputs[1].front();
+ outputs[3] = &m_audioOutputs[2].front();
+ outputs[2] = &m_audioOutputs[3].front();
outputs[4] = m_dummyOutput.data();
outputs[5] = m_dummyOutput.data();
outputs[6] = m_dummyOutput.data();
diff --git a/source/virusLib/dspMultiTI.cpp b/source/virusLib/dspMultiTI.cpp
@@ -87,28 +87,17 @@ namespace virusLib
uint32_t blockIdx = 0;
- static constexpr uint32_t offset = 9;
+ static volatile uint32_t offset = 1;
- {
- uint32_t i=0;
-
- at(blockIdx + offset + (g_esai1RxBlockSize>>1)) = dsp56k::sample2dsp<T>(_inputs[0][i]);
- at(blockIdx + offset ) = m_previousInput;
-
- blockIdx += g_esai1RxBlockSize;
- }
-
- for(uint32_t i=1; i<_frames; ++i)
+ for(uint32_t i=0; i<_frames; ++i)
{
at(blockIdx + offset + (g_esai1RxBlockSize>>1)) = dsp56k::sample2dsp<T>(_inputs[0][i]);
- at(blockIdx + offset ) = dsp56k::sample2dsp<T>(_inputs[1][i-1]);
+ at(blockIdx + offset ) = dsp56k::sample2dsp<T>(_inputs[1][i]);
blockIdx += g_esai1RxBlockSize;
}
_esai.processAudioInput(data(), _frames * 2, 3, _latency * 2);
-
- m_previousInput = dsp56k::sample2dsp<T>(_inputs[1][_frames-1]);
}
DspMultiTI::DspMultiTI() : DspSingle(0x100000, true, "DSP A"), m_dsp2(0x100000, true, "DSP B")
diff --git a/source/virusLib/dspSingle.cpp b/source/virusLib/dspSingle.cpp
@@ -15,7 +15,7 @@ namespace virusLib
, m_periphX362(_use56367Peripherals ? &m_periphY367 : nullptr)
, m_hdi08(_use56303Peripherals ? m_periphX303.getHI08() : m_periphX362.getHDI08())
, m_audio(_use56303Peripherals ? static_cast<dsp56k::Audio&>(m_periphX303.getEssi0()) : static_cast<dsp56k::Audio&>(m_periphX362.getEsai()))
- , m_esxiClock(_use56303Peripherals ? m_periphX303.getEssiClock() : m_periphX362.getEsaiClock())
+ , m_esxiClock(_use56303Peripherals ? static_cast<dsp56k::EsxiClock&>(m_periphX303.getEssiClock()) : static_cast<dsp56k::EsxiClock&>(m_periphX362.getEsaiClock()))
{
const size_t requiredMemSize =
dsp56k::alignedSize<dsp56k::DSP>() +
diff --git a/source/wLib/wHardware.h b/source/wLib/wHardware.h
@@ -57,8 +57,6 @@ namespace wLib
dsp56k::RingBuffer<synthLib::SMidiEvent, 16384, true> m_midiIn;
uint32_t m_midiOffsetCounter = 0;
- std::vector<dsp56k::TWord> m_delayedAudioIn;
-
std::vector<dsp56k::TWord> m_dummyInput;
std::vector<dsp56k::TWord> m_dummyOutput;
diff --git a/source/xtLib/xtHardware.cpp b/source/xtLib/xtHardware.cpp
@@ -110,11 +110,8 @@ namespace xt
const dsp56k::TWord* inputs[16]{nullptr};
dsp56k::TWord* outputs[16]{nullptr};
- // TODO: Right audio input channel needs to be delayed by one frame
- ::memcpy(&m_delayedAudioIn[1], m_audioInputs[1].data(), sizeof(dsp56k::TWord) * _frames);
-
- inputs[1] = &m_audioInputs[0].front();
- inputs[0] = m_delayedAudioIn.data();
+ inputs[0] = &m_audioInputs[0].front();
+ inputs[1] = &m_audioInputs[1].front();
inputs[2] = m_dummyInput.data();
inputs[3] = m_dummyInput.data();
inputs[4] = m_dummyInput.data();
@@ -226,8 +223,6 @@ namespace xt
outputs[5] += processCount;
}
- m_delayedAudioIn[0] = m_audioInputs[1][totalFrames-1];
-
m_processAudio = false;
}
@@ -239,9 +234,6 @@ namespace xt
input.resize(_frames);
}
- if(m_delayedAudioIn.size() < _frames + 1)
- m_delayedAudioIn.resize(_frames + 1);
-
if(m_audioOutputs.front().size() < _frames)
{
for (auto& output : m_audioOutputs)