Skip to content

Commit 0b9ebc5

Browse files
authored
[BUGFIX] Fix resampler bugs (#419)
* 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
1 parent a18269f commit 0b9ebc5

File tree

11 files changed

+208
-14
lines changed

11 files changed

+208
-14
lines changed

NeuralAmpModeler/NeuralAmpModeler.h

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,11 @@
66
#include "AudioDSPTools/dsp/RecursiveLinearFilter.h"
77
#include "AudioDSPTools/dsp/dsp.h"
88
#include "AudioDSPTools/dsp/wav.h"
9+
#include "AudioDSPTools/dsp/ResamplingContainer/ResamplingContainer.h"
910

1011
#include "IPlug_include_in_plug_hdr.h"
1112
#include "ISender.h"
12-
#include "RealtimeResampler.h"
13+
1314

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

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

190191
// The resampling wrapper
191-
iplug::RealtimeResampler<NAM_SAMPLE, 1, 12> mResampler;
192+
dsp::ResamplingContainer<NAM_SAMPLE, 1, 12> mResampler;
192193

193194
// Used to check that we don't get too large a block to process.
194195
int mMaxExternalBlockSize = 0;

NeuralAmpModeler/projects/NeuralAmpModeler-aax.vcxproj

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -515,6 +515,11 @@
515515
<ClInclude Include="..\AudioDSPTools\dsp\NoiseGate.h" />
516516
<ClInclude Include="..\AudioDSPTools\dsp\RecursiveLinearFilter.h" />
517517
<ClInclude Include="..\AudioDSPTools\dsp\Resample.h" />
518+
<ClInclude Include="..\AudioDSPTools\dsp\ResamplingContainer\Dependencies\LanczosResampler.h" />
519+
<ClInclude Include="..\AudioDSPTools\dsp\ResamplingContainer\Dependencies\WDL\heapbuf.h" />
520+
<ClInclude Include="..\AudioDSPTools\dsp\ResamplingContainer\Dependencies\WDL\ptrlist.h" />
521+
<ClInclude Include="..\AudioDSPTools\dsp\ResamplingContainer\Dependencies\WDL\wdltypes.h" />
522+
<ClInclude Include="..\AudioDSPTools\dsp\ResamplingContainer\ResamplingContainer.h" />
518523
<ClInclude Include="..\AudioDSPTools\dsp\version.h" />
519524
<ClInclude Include="..\AudioDSPTools\dsp\wav.h" />
520525
<ClInclude Include="..\Colors.h" />

NeuralAmpModeler/projects/NeuralAmpModeler-aax.vcxproj.filters

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -296,6 +296,21 @@
296296
<ClInclude Include="..\..\iPlug2\IPlug\Extras\LanczosResampler.h">
297297
<Filter>IPlug\Extras</Filter>
298298
</ClInclude>
299+
<ClInclude Include="..\AudioDSPTools\dsp\ResamplingContainer\ResamplingContainer.h">
300+
<Filter>dsp\ResamplingContainer</Filter>
301+
</ClInclude>
302+
<ClInclude Include="..\AudioDSPTools\dsp\ResamplingContainer\Dependencies\LanczosResampler.h">
303+
<Filter>dsp\ResamplingContainer\Dependencies</Filter>
304+
</ClInclude>
305+
<ClInclude Include="..\AudioDSPTools\dsp\ResamplingContainer\Dependencies\WDL\heapbuf.h">
306+
<Filter>dsp\ResamplingContainer\Dependencies\WDL</Filter>
307+
</ClInclude>
308+
<ClInclude Include="..\AudioDSPTools\dsp\ResamplingContainer\Dependencies\WDL\ptrlist.h">
309+
<Filter>dsp\ResamplingContainer\Dependencies\WDL</Filter>
310+
</ClInclude>
311+
<ClInclude Include="..\AudioDSPTools\dsp\ResamplingContainer\Dependencies\WDL\wdltypes.h">
312+
<Filter>dsp\ResamplingContainer\Dependencies\WDL</Filter>
313+
</ClInclude>
299314
</ItemGroup>
300315
<ItemGroup>
301316
<Filter Include="resources">
@@ -331,6 +346,15 @@
331346
<Filter Include="IPlug\Extras">
332347
<UniqueIdentifier>{db86886b-3f03-4c59-acdb-b4a137147b3c}</UniqueIdentifier>
333348
</Filter>
349+
<Filter Include="dsp\ResamplingContainer">
350+
<UniqueIdentifier>{16dd1eb5-2d88-4f96-b703-3cefcfda4ad2}</UniqueIdentifier>
351+
</Filter>
352+
<Filter Include="dsp\ResamplingContainer\Dependencies">
353+
<UniqueIdentifier>{34fba925-37ff-48d3-899f-ac65a8006eb5}</UniqueIdentifier>
354+
</Filter>
355+
<Filter Include="dsp\ResamplingContainer\Dependencies\WDL">
356+
<UniqueIdentifier>{6d4ce6d3-2b3a-40d7-b093-9428bc7ffd6d}</UniqueIdentifier>
357+
</Filter>
334358
</ItemGroup>
335359
<ItemGroup>
336360
<ResourceCompile Include="..\resources\main.rc">

NeuralAmpModeler/projects/NeuralAmpModeler-app.vcxproj

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -324,6 +324,11 @@
324324
<ClInclude Include="..\AudioDSPTools\dsp\NoiseGate.h" />
325325
<ClInclude Include="..\AudioDSPTools\dsp\RecursiveLinearFilter.h" />
326326
<ClInclude Include="..\AudioDSPTools\dsp\Resample.h" />
327+
<ClInclude Include="..\AudioDSPTools\dsp\ResamplingContainer\Dependencies\LanczosResampler.h" />
328+
<ClInclude Include="..\AudioDSPTools\dsp\ResamplingContainer\Dependencies\WDL\heapbuf.h" />
329+
<ClInclude Include="..\AudioDSPTools\dsp\ResamplingContainer\Dependencies\WDL\ptrlist.h" />
330+
<ClInclude Include="..\AudioDSPTools\dsp\ResamplingContainer\Dependencies\WDL\wdltypes.h" />
331+
<ClInclude Include="..\AudioDSPTools\dsp\ResamplingContainer\ResamplingContainer.h" />
327332
<ClInclude Include="..\AudioDSPTools\dsp\version.h" />
328333
<ClInclude Include="..\AudioDSPTools\dsp\wav.h" />
329334
<ClInclude Include="..\Colors.h" />

NeuralAmpModeler/projects/NeuralAmpModeler-app.vcxproj.filters

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -344,6 +344,21 @@
344344
<ClInclude Include="..\..\iPlug2\IPlug\Extras\LanczosResampler.h">
345345
<Filter>IPlug\Extras</Filter>
346346
</ClInclude>
347+
<ClInclude Include="..\AudioDSPTools\dsp\ResamplingContainer\ResamplingContainer.h">
348+
<Filter>dsp\ResamplingContainer</Filter>
349+
</ClInclude>
350+
<ClInclude Include="..\AudioDSPTools\dsp\ResamplingContainer\Dependencies\LanczosResampler.h">
351+
<Filter>dsp\ResamplingContainer\Dependencies</Filter>
352+
</ClInclude>
353+
<ClInclude Include="..\AudioDSPTools\dsp\ResamplingContainer\Dependencies\WDL\heapbuf.h">
354+
<Filter>dsp\ResamplingContainer\Dependencies\WDL</Filter>
355+
</ClInclude>
356+
<ClInclude Include="..\AudioDSPTools\dsp\ResamplingContainer\Dependencies\WDL\ptrlist.h">
357+
<Filter>dsp\ResamplingContainer\Dependencies\WDL</Filter>
358+
</ClInclude>
359+
<ClInclude Include="..\AudioDSPTools\dsp\ResamplingContainer\Dependencies\WDL\wdltypes.h">
360+
<Filter>dsp\ResamplingContainer\Dependencies\WDL</Filter>
361+
</ClInclude>
347362
</ItemGroup>
348363
<ItemGroup>
349364
<Filter Include="resources">
@@ -385,6 +400,15 @@
385400
<Filter Include="IPlug\Extras">
386401
<UniqueIdentifier>{91ab74a9-d5f2-42db-9c8f-3bef7ee22bd3}</UniqueIdentifier>
387402
</Filter>
403+
<Filter Include="dsp\ResamplingContainer">
404+
<UniqueIdentifier>{f6876073-a059-4852-bb59-10721432789b}</UniqueIdentifier>
405+
</Filter>
406+
<Filter Include="dsp\ResamplingContainer\Dependencies">
407+
<UniqueIdentifier>{f6334b2f-876a-49d4-bf81-92346df50ea7}</UniqueIdentifier>
408+
</Filter>
409+
<Filter Include="dsp\ResamplingContainer\Dependencies\WDL">
410+
<UniqueIdentifier>{f22f96a8-fd44-4509-987d-7683e32f3592}</UniqueIdentifier>
411+
</Filter>
388412
</ItemGroup>
389413
<ItemGroup>
390414
<ResourceCompile Include="..\resources\main.rc">

NeuralAmpModeler/projects/NeuralAmpModeler-iOS.xcodeproj/project.pbxproj

Lines changed: 60 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,11 @@
8484
4FE0DEE829A183B700DDBCC8 /* NeuralAmpModelerAU.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4FC6982F293BA47F0076EC33 /* NeuralAmpModelerAU.framework */; };
8585
4FE0DEF029A2E0F100DDBCC8 /* IPlugAUViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4FFF105A20A0E57100D3092F /* IPlugAUViewController.mm */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
8686
91236D811B08F59300734C5E /* NeuralAmpModelerAppExtension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 91236D771B08F59300734C5E /* NeuralAmpModelerAppExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
87+
AA7C860B2B43A42F00B5FB3A /* ResamplingContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = AA7C86042B43A42E00B5FB3A /* ResamplingContainer.h */; };
88+
AA7C860C2B43A42F00B5FB3A /* LanczosResampler.h in Headers */ = {isa = PBXBuildFile; fileRef = AA7C86062B43A42E00B5FB3A /* LanczosResampler.h */; };
89+
AA7C860D2B43A42F00B5FB3A /* wdltypes.h in Headers */ = {isa = PBXBuildFile; fileRef = AA7C86082B43A42E00B5FB3A /* wdltypes.h */; };
90+
AA7C860E2B43A42F00B5FB3A /* ptrlist.h in Headers */ = {isa = PBXBuildFile; fileRef = AA7C86092B43A42E00B5FB3A /* ptrlist.h */; };
91+
AA7C860F2B43A42F00B5FB3A /* heapbuf.h in Headers */ = {isa = PBXBuildFile; fileRef = AA7C860A2B43A42E00B5FB3A /* heapbuf.h */; };
8792
AA8CA7772A452EF500F5BEF0 /* resample.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AA8CA7752A452EF500F5BEF0 /* resample.cpp */; };
8893
/* End PBXBuildFile section */
8994

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

343352
/* Begin PBXFrameworksBuildPhase section */
@@ -620,17 +629,18 @@
620629
4FBDC93229FFF143004FF203 /* dsp */ = {
621630
isa = PBXGroup;
622631
children = (
623-
4FBDC93329FFF143004FF203 /* Resample.h */,
624-
4FBDC93429FFF143004FF203 /* RecursiveLinearFilter.cpp */,
625-
4FBDC93529FFF143004FF203 /* wav.h */,
626-
4FBDC93629FFF143004FF203 /* NoiseGate.h */,
632+
AA7C86032B43A42E00B5FB3A /* ResamplingContainer */,
627633
4FBDC93729FFF143004FF203 /* dsp.cpp */,
628-
4FBDC93829FFF143004FF203 /* NoiseGate.cpp */,
634+
4FBDC93C29FFF143004FF203 /* dsp.h */,
629635
4FBDC93929FFF143004FF203 /* ImpulseResponse.cpp */,
630-
4FBDC93A29FFF143004FF203 /* RecursiveLinearFilter.h */,
631636
4FBDC93B29FFF143004FF203 /* ImpulseResponse.h */,
632-
4FBDC93C29FFF143004FF203 /* dsp.h */,
637+
4FBDC93829FFF143004FF203 /* NoiseGate.cpp */,
638+
4FBDC93629FFF143004FF203 /* NoiseGate.h */,
639+
4FBDC93429FFF143004FF203 /* RecursiveLinearFilter.cpp */,
640+
4FBDC93A29FFF143004FF203 /* RecursiveLinearFilter.h */,
641+
4FBDC93329FFF143004FF203 /* Resample.h */,
633642
4FBDC93D29FFF143004FF203 /* wav.cpp */,
643+
4FBDC93529FFF143004FF203 /* wav.h */,
634644
);
635645
name = dsp;
636646
path = ../AudioDSPTools/dsp;
@@ -748,6 +758,7 @@
748758
4F67D51620A121F60061FB8E /* Other Sources */,
749759
4F3E0F9B20A0C64100A9C2BE /* Frameworks */,
750760
91D3DA171B023C1E008FFFBB /* Products */,
761+
AA7C85EC2B43941500B5FB3A /* Recovered References */,
751762
);
752763
sourceTree = "<group>";
753764
};
@@ -761,6 +772,42 @@
761772
name = Products;
762773
sourceTree = "<group>";
763774
};
775+
AA7C85EC2B43941500B5FB3A /* Recovered References */ = {
776+
isa = PBXGroup;
777+
children = (
778+
AA8CA7752A452EF500F5BEF0 /* resample.cpp */,
779+
);
780+
name = "Recovered References";
781+
sourceTree = "<group>";
782+
};
783+
AA7C86032B43A42E00B5FB3A /* ResamplingContainer */ = {
784+
isa = PBXGroup;
785+
children = (
786+
AA7C86042B43A42E00B5FB3A /* ResamplingContainer.h */,
787+
AA7C86052B43A42E00B5FB3A /* Dependencies */,
788+
);
789+
path = ResamplingContainer;
790+
sourceTree = "<group>";
791+
};
792+
AA7C86052B43A42E00B5FB3A /* Dependencies */ = {
793+
isa = PBXGroup;
794+
children = (
795+
AA7C86062B43A42E00B5FB3A /* LanczosResampler.h */,
796+
AA7C86072B43A42E00B5FB3A /* WDL */,
797+
);
798+
path = Dependencies;
799+
sourceTree = "<group>";
800+
};
801+
AA7C86072B43A42E00B5FB3A /* WDL */ = {
802+
isa = PBXGroup;
803+
children = (
804+
AA7C86082B43A42E00B5FB3A /* wdltypes.h */,
805+
AA7C86092B43A42E00B5FB3A /* ptrlist.h */,
806+
AA7C860A2B43A42E00B5FB3A /* heapbuf.h */,
807+
);
808+
path = WDL;
809+
sourceTree = "<group>";
810+
};
764811
/* End PBXGroup section */
765812

766813
/* Begin PBXHeadersBuildPhase section */
@@ -769,13 +816,18 @@
769816
buildActionMask = 2147483647;
770817
files = (
771818
4FC6983C293BA5090076EC33 /* IPlugAUViewController.h in Headers */,
819+
AA7C860F2B43A42F00B5FB3A /* heapbuf.h in Headers */,
820+
AA7C860E2B43A42F00B5FB3A /* ptrlist.h in Headers */,
772821
4FBDC94D29FFF143004FF203 /* Resample.h in Headers */,
773822
4FC6983A293BA4F10076EC33 /* NeuralAmpModelerAU.h in Headers */,
774823
4FBDC95629FFF143004FF203 /* dsp.h in Headers */,
775824
4FBDC95E29FFF143004FF203 /* wavenet.h in Headers */,
776825
4FC6983B293BA5020076EC33 /* IPlugAUAudioUnit.h in Headers */,
826+
AA7C860B2B43A42F00B5FB3A /* ResamplingContainer.h in Headers */,
777827
4FBDC95B29FFF143004FF203 /* convnet.h in Headers */,
778828
4FBDC95929FFF143004FF203 /* version.h in Headers */,
829+
AA7C860C2B43A42F00B5FB3A /* LanczosResampler.h in Headers */,
830+
AA7C860D2B43A42F00B5FB3A /* wdltypes.h in Headers */,
779831
4FBDC96229FFF143004FF203 /* activations.h in Headers */,
780832
4FBDC95429FFF143004FF203 /* RecursiveLinearFilter.h in Headers */,
781833
4FBDC95C29FFF143004FF203 /* lstm.h in Headers */,

0 commit comments

Comments
 (0)