Skip to content

Commit

Permalink
[BUGFIX] Fix resampler bugs (#419)
Browse files Browse the repository at this point in the history
* Start fixing resampling. Needs another look-through.

* Update iPlug2

* Update AudioDSPTools

* Switch to AudioDSPTools ResamplingContainer

* Revert iPlug2 to main branch version

* Add files to VS projects

* Revert iPlug2 to version on main

* Track main iPlug2/iPlug2 fork
  • Loading branch information
sdatkinson authored Jan 2, 2024
1 parent a18269f commit 0b9ebc5
Show file tree
Hide file tree
Showing 11 changed files with 208 additions and 14 deletions.
9 changes: 5 additions & 4 deletions NeuralAmpModeler/NeuralAmpModeler.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,11 @@
#include "AudioDSPTools/dsp/RecursiveLinearFilter.h"
#include "AudioDSPTools/dsp/dsp.h"
#include "AudioDSPTools/dsp/wav.h"
#include "AudioDSPTools/dsp/ResamplingContainer/ResamplingContainer.h"

#include "IPlug_include_in_plug_hdr.h"
#include "ISender.h"
#include "RealtimeResampler.h"


const int kNumPresets = 1;
// The plugin is mono inside
Expand Down Expand Up @@ -90,7 +91,7 @@ class ResamplingNAM : public nam::DSP
ResamplingNAM(std::unique_ptr<nam::DSP> encapsulated, const double expected_sample_rate)
: nam::DSP(expected_sample_rate)
, mEncapsulated(std::move(encapsulated))
, mResampler(GetNAMSampleRate(mEncapsulated), iplug::ESRCMode::kLancsoz)
, mResampler(GetNAMSampleRate(mEncapsulated))
{
// Assign the encapsulated object's processing function to this object's member so that the resampler can use it:
auto ProcessBlockFunc = [&](NAM_SAMPLE** input, NAM_SAMPLE** output, int numFrames) {
Expand Down Expand Up @@ -140,7 +141,7 @@ class ResamplingNAM : public nam::DSP
mFinalized = false;
};

void finalize_(const int num_frames)
void finalize_(const int num_frames) override
{
if (mFinalized)
throw std::runtime_error("Call to ResamplingNAM.finalize_() when the object is already in a finalized state!");
Expand Down Expand Up @@ -188,7 +189,7 @@ class ResamplingNAM : public nam::DSP
bool mFinalized = true;

// The resampling wrapper
iplug::RealtimeResampler<NAM_SAMPLE, 1, 12> mResampler;
dsp::ResamplingContainer<NAM_SAMPLE, 1, 12> mResampler;

// Used to check that we don't get too large a block to process.
int mMaxExternalBlockSize = 0;
Expand Down
5 changes: 5 additions & 0 deletions NeuralAmpModeler/projects/NeuralAmpModeler-aax.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -515,6 +515,11 @@
<ClInclude Include="..\AudioDSPTools\dsp\NoiseGate.h" />
<ClInclude Include="..\AudioDSPTools\dsp\RecursiveLinearFilter.h" />
<ClInclude Include="..\AudioDSPTools\dsp\Resample.h" />
<ClInclude Include="..\AudioDSPTools\dsp\ResamplingContainer\Dependencies\LanczosResampler.h" />
<ClInclude Include="..\AudioDSPTools\dsp\ResamplingContainer\Dependencies\WDL\heapbuf.h" />
<ClInclude Include="..\AudioDSPTools\dsp\ResamplingContainer\Dependencies\WDL\ptrlist.h" />
<ClInclude Include="..\AudioDSPTools\dsp\ResamplingContainer\Dependencies\WDL\wdltypes.h" />
<ClInclude Include="..\AudioDSPTools\dsp\ResamplingContainer\ResamplingContainer.h" />
<ClInclude Include="..\AudioDSPTools\dsp\version.h" />
<ClInclude Include="..\AudioDSPTools\dsp\wav.h" />
<ClInclude Include="..\Colors.h" />
Expand Down
24 changes: 24 additions & 0 deletions NeuralAmpModeler/projects/NeuralAmpModeler-aax.vcxproj.filters
Original file line number Diff line number Diff line change
Expand Up @@ -296,6 +296,21 @@
<ClInclude Include="..\..\iPlug2\IPlug\Extras\LanczosResampler.h">
<Filter>IPlug\Extras</Filter>
</ClInclude>
<ClInclude Include="..\AudioDSPTools\dsp\ResamplingContainer\ResamplingContainer.h">
<Filter>dsp\ResamplingContainer</Filter>
</ClInclude>
<ClInclude Include="..\AudioDSPTools\dsp\ResamplingContainer\Dependencies\LanczosResampler.h">
<Filter>dsp\ResamplingContainer\Dependencies</Filter>
</ClInclude>
<ClInclude Include="..\AudioDSPTools\dsp\ResamplingContainer\Dependencies\WDL\heapbuf.h">
<Filter>dsp\ResamplingContainer\Dependencies\WDL</Filter>
</ClInclude>
<ClInclude Include="..\AudioDSPTools\dsp\ResamplingContainer\Dependencies\WDL\ptrlist.h">
<Filter>dsp\ResamplingContainer\Dependencies\WDL</Filter>
</ClInclude>
<ClInclude Include="..\AudioDSPTools\dsp\ResamplingContainer\Dependencies\WDL\wdltypes.h">
<Filter>dsp\ResamplingContainer\Dependencies\WDL</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<Filter Include="resources">
Expand Down Expand Up @@ -331,6 +346,15 @@
<Filter Include="IPlug\Extras">
<UniqueIdentifier>{db86886b-3f03-4c59-acdb-b4a137147b3c}</UniqueIdentifier>
</Filter>
<Filter Include="dsp\ResamplingContainer">
<UniqueIdentifier>{16dd1eb5-2d88-4f96-b703-3cefcfda4ad2}</UniqueIdentifier>
</Filter>
<Filter Include="dsp\ResamplingContainer\Dependencies">
<UniqueIdentifier>{34fba925-37ff-48d3-899f-ac65a8006eb5}</UniqueIdentifier>
</Filter>
<Filter Include="dsp\ResamplingContainer\Dependencies\WDL">
<UniqueIdentifier>{6d4ce6d3-2b3a-40d7-b093-9428bc7ffd6d}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\resources\main.rc">
Expand Down
5 changes: 5 additions & 0 deletions NeuralAmpModeler/projects/NeuralAmpModeler-app.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -324,6 +324,11 @@
<ClInclude Include="..\AudioDSPTools\dsp\NoiseGate.h" />
<ClInclude Include="..\AudioDSPTools\dsp\RecursiveLinearFilter.h" />
<ClInclude Include="..\AudioDSPTools\dsp\Resample.h" />
<ClInclude Include="..\AudioDSPTools\dsp\ResamplingContainer\Dependencies\LanczosResampler.h" />
<ClInclude Include="..\AudioDSPTools\dsp\ResamplingContainer\Dependencies\WDL\heapbuf.h" />
<ClInclude Include="..\AudioDSPTools\dsp\ResamplingContainer\Dependencies\WDL\ptrlist.h" />
<ClInclude Include="..\AudioDSPTools\dsp\ResamplingContainer\Dependencies\WDL\wdltypes.h" />
<ClInclude Include="..\AudioDSPTools\dsp\ResamplingContainer\ResamplingContainer.h" />
<ClInclude Include="..\AudioDSPTools\dsp\version.h" />
<ClInclude Include="..\AudioDSPTools\dsp\wav.h" />
<ClInclude Include="..\Colors.h" />
Expand Down
24 changes: 24 additions & 0 deletions NeuralAmpModeler/projects/NeuralAmpModeler-app.vcxproj.filters
Original file line number Diff line number Diff line change
Expand Up @@ -344,6 +344,21 @@
<ClInclude Include="..\..\iPlug2\IPlug\Extras\LanczosResampler.h">
<Filter>IPlug\Extras</Filter>
</ClInclude>
<ClInclude Include="..\AudioDSPTools\dsp\ResamplingContainer\ResamplingContainer.h">
<Filter>dsp\ResamplingContainer</Filter>
</ClInclude>
<ClInclude Include="..\AudioDSPTools\dsp\ResamplingContainer\Dependencies\LanczosResampler.h">
<Filter>dsp\ResamplingContainer\Dependencies</Filter>
</ClInclude>
<ClInclude Include="..\AudioDSPTools\dsp\ResamplingContainer\Dependencies\WDL\heapbuf.h">
<Filter>dsp\ResamplingContainer\Dependencies\WDL</Filter>
</ClInclude>
<ClInclude Include="..\AudioDSPTools\dsp\ResamplingContainer\Dependencies\WDL\ptrlist.h">
<Filter>dsp\ResamplingContainer\Dependencies\WDL</Filter>
</ClInclude>
<ClInclude Include="..\AudioDSPTools\dsp\ResamplingContainer\Dependencies\WDL\wdltypes.h">
<Filter>dsp\ResamplingContainer\Dependencies\WDL</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<Filter Include="resources">
Expand Down Expand Up @@ -385,6 +400,15 @@
<Filter Include="IPlug\Extras">
<UniqueIdentifier>{91ab74a9-d5f2-42db-9c8f-3bef7ee22bd3}</UniqueIdentifier>
</Filter>
<Filter Include="dsp\ResamplingContainer">
<UniqueIdentifier>{f6876073-a059-4852-bb59-10721432789b}</UniqueIdentifier>
</Filter>
<Filter Include="dsp\ResamplingContainer\Dependencies">
<UniqueIdentifier>{f6334b2f-876a-49d4-bf81-92346df50ea7}</UniqueIdentifier>
</Filter>
<Filter Include="dsp\ResamplingContainer\Dependencies\WDL">
<UniqueIdentifier>{f22f96a8-fd44-4509-987d-7683e32f3592}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\resources\main.rc">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,11 @@
4FE0DEE829A183B700DDBCC8 /* NeuralAmpModelerAU.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4FC6982F293BA47F0076EC33 /* NeuralAmpModelerAU.framework */; };
4FE0DEF029A2E0F100DDBCC8 /* IPlugAUViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4FFF105A20A0E57100D3092F /* IPlugAUViewController.mm */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
91236D811B08F59300734C5E /* NeuralAmpModelerAppExtension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 91236D771B08F59300734C5E /* NeuralAmpModelerAppExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
AA7C860B2B43A42F00B5FB3A /* ResamplingContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = AA7C86042B43A42E00B5FB3A /* ResamplingContainer.h */; };
AA7C860C2B43A42F00B5FB3A /* LanczosResampler.h in Headers */ = {isa = PBXBuildFile; fileRef = AA7C86062B43A42E00B5FB3A /* LanczosResampler.h */; };
AA7C860D2B43A42F00B5FB3A /* wdltypes.h in Headers */ = {isa = PBXBuildFile; fileRef = AA7C86082B43A42E00B5FB3A /* wdltypes.h */; };
AA7C860E2B43A42F00B5FB3A /* ptrlist.h in Headers */ = {isa = PBXBuildFile; fileRef = AA7C86092B43A42E00B5FB3A /* ptrlist.h */; };
AA7C860F2B43A42F00B5FB3A /* heapbuf.h in Headers */ = {isa = PBXBuildFile; fileRef = AA7C860A2B43A42E00B5FB3A /* heapbuf.h */; };
AA8CA7772A452EF500F5BEF0 /* resample.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AA8CA7752A452EF500F5BEF0 /* resample.cpp */; };
/* End PBXBuildFile section */

Expand Down Expand Up @@ -336,8 +341,12 @@
4FFF108820A1036200D3092F /* NeuralAmpModeler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NeuralAmpModeler.h; path = ../NeuralAmpModeler.h; sourceTree = "<group>"; };
91236D0D1B08F42B00734C5E /* NeuralAmpModeler.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = NeuralAmpModeler.app; sourceTree = BUILT_PRODUCTS_DIR; };
91236D771B08F59300734C5E /* NeuralAmpModelerAppExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = NeuralAmpModelerAppExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; };
AA7C86042B43A42E00B5FB3A /* ResamplingContainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResamplingContainer.h; sourceTree = "<group>"; };
AA7C86062B43A42E00B5FB3A /* LanczosResampler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LanczosResampler.h; sourceTree = "<group>"; };
AA7C86082B43A42E00B5FB3A /* wdltypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wdltypes.h; sourceTree = "<group>"; };
AA7C86092B43A42E00B5FB3A /* ptrlist.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ptrlist.h; sourceTree = "<group>"; };
AA7C860A2B43A42E00B5FB3A /* heapbuf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = heapbuf.h; sourceTree = "<group>"; };
AA8CA7752A452EF500F5BEF0 /* resample.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = resample.cpp; sourceTree = "<group>"; };
AA8CA7762A452EF500F5BEF0 /* resample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = resample.h; sourceTree = "<group>"; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
Expand Down Expand Up @@ -620,17 +629,18 @@
4FBDC93229FFF143004FF203 /* dsp */ = {
isa = PBXGroup;
children = (
4FBDC93329FFF143004FF203 /* Resample.h */,
4FBDC93429FFF143004FF203 /* RecursiveLinearFilter.cpp */,
4FBDC93529FFF143004FF203 /* wav.h */,
4FBDC93629FFF143004FF203 /* NoiseGate.h */,
AA7C86032B43A42E00B5FB3A /* ResamplingContainer */,
4FBDC93729FFF143004FF203 /* dsp.cpp */,
4FBDC93829FFF143004FF203 /* NoiseGate.cpp */,
4FBDC93C29FFF143004FF203 /* dsp.h */,
4FBDC93929FFF143004FF203 /* ImpulseResponse.cpp */,
4FBDC93A29FFF143004FF203 /* RecursiveLinearFilter.h */,
4FBDC93B29FFF143004FF203 /* ImpulseResponse.h */,
4FBDC93C29FFF143004FF203 /* dsp.h */,
4FBDC93829FFF143004FF203 /* NoiseGate.cpp */,
4FBDC93629FFF143004FF203 /* NoiseGate.h */,
4FBDC93429FFF143004FF203 /* RecursiveLinearFilter.cpp */,
4FBDC93A29FFF143004FF203 /* RecursiveLinearFilter.h */,
4FBDC93329FFF143004FF203 /* Resample.h */,
4FBDC93D29FFF143004FF203 /* wav.cpp */,
4FBDC93529FFF143004FF203 /* wav.h */,
);
name = dsp;
path = ../AudioDSPTools/dsp;
Expand Down Expand Up @@ -748,6 +758,7 @@
4F67D51620A121F60061FB8E /* Other Sources */,
4F3E0F9B20A0C64100A9C2BE /* Frameworks */,
91D3DA171B023C1E008FFFBB /* Products */,
AA7C85EC2B43941500B5FB3A /* Recovered References */,
);
sourceTree = "<group>";
};
Expand All @@ -761,6 +772,42 @@
name = Products;
sourceTree = "<group>";
};
AA7C85EC2B43941500B5FB3A /* Recovered References */ = {
isa = PBXGroup;
children = (
AA8CA7752A452EF500F5BEF0 /* resample.cpp */,
);
name = "Recovered References";
sourceTree = "<group>";
};
AA7C86032B43A42E00B5FB3A /* ResamplingContainer */ = {
isa = PBXGroup;
children = (
AA7C86042B43A42E00B5FB3A /* ResamplingContainer.h */,
AA7C86052B43A42E00B5FB3A /* Dependencies */,
);
path = ResamplingContainer;
sourceTree = "<group>";
};
AA7C86052B43A42E00B5FB3A /* Dependencies */ = {
isa = PBXGroup;
children = (
AA7C86062B43A42E00B5FB3A /* LanczosResampler.h */,
AA7C86072B43A42E00B5FB3A /* WDL */,
);
path = Dependencies;
sourceTree = "<group>";
};
AA7C86072B43A42E00B5FB3A /* WDL */ = {
isa = PBXGroup;
children = (
AA7C86082B43A42E00B5FB3A /* wdltypes.h */,
AA7C86092B43A42E00B5FB3A /* ptrlist.h */,
AA7C860A2B43A42E00B5FB3A /* heapbuf.h */,
);
path = WDL;
sourceTree = "<group>";
};
/* End PBXGroup section */

/* Begin PBXHeadersBuildPhase section */
Expand All @@ -769,13 +816,18 @@
buildActionMask = 2147483647;
files = (
4FC6983C293BA5090076EC33 /* IPlugAUViewController.h in Headers */,
AA7C860F2B43A42F00B5FB3A /* heapbuf.h in Headers */,
AA7C860E2B43A42F00B5FB3A /* ptrlist.h in Headers */,
4FBDC94D29FFF143004FF203 /* Resample.h in Headers */,
4FC6983A293BA4F10076EC33 /* NeuralAmpModelerAU.h in Headers */,
4FBDC95629FFF143004FF203 /* dsp.h in Headers */,
4FBDC95E29FFF143004FF203 /* wavenet.h in Headers */,
4FC6983B293BA5020076EC33 /* IPlugAUAudioUnit.h in Headers */,
AA7C860B2B43A42F00B5FB3A /* ResamplingContainer.h in Headers */,
4FBDC95B29FFF143004FF203 /* convnet.h in Headers */,
4FBDC95929FFF143004FF203 /* version.h in Headers */,
AA7C860C2B43A42F00B5FB3A /* LanczosResampler.h in Headers */,
AA7C860D2B43A42F00B5FB3A /* wdltypes.h in Headers */,
4FBDC96229FFF143004FF203 /* activations.h in Headers */,
4FBDC95429FFF143004FF203 /* RecursiveLinearFilter.h in Headers */,
4FBDC95C29FFF143004FF203 /* lstm.h in Headers */,
Expand Down
Loading

0 comments on commit 0b9ebc5

Please sign in to comment.