From b707da2ec9d55f7f3fbc6da3a1383abccd408a44 Mon Sep 17 00:00:00 2001 From: Steven Atkinson Date: Tue, 13 Jan 2026 15:08:47 -0800 Subject: [PATCH 1/9] Update core to current 0.4.0 work in progress --- .../project.pbxproj | 46 +++++++++++++++++++ NeuralAmpModelerCore | 2 +- 2 files changed, 47 insertions(+), 1 deletion(-) diff --git a/NeuralAmpModeler/projects/NeuralAmpModeler-macOS.xcodeproj/project.pbxproj b/NeuralAmpModeler/projects/NeuralAmpModeler-macOS.xcodeproj/project.pbxproj index 9ee8d2eb8..4631b33c2 100644 --- a/NeuralAmpModeler/projects/NeuralAmpModeler-macOS.xcodeproj/project.pbxproj +++ b/NeuralAmpModeler/projects/NeuralAmpModeler-macOS.xcodeproj/project.pbxproj @@ -137,6 +137,26 @@ 4F2FB19C2A0047430027AB66 /* convnet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4F2FB14B2A0047420027AB66 /* convnet.cpp */; }; 4F2FB19D2A0047430027AB66 /* convnet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4F2FB14B2A0047420027AB66 /* convnet.cpp */; }; 4F2FB19E2A0047430027AB66 /* convnet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4F2FB14B2A0047420027AB66 /* convnet.cpp */; }; + 4F2FB1CE2A0047430027AB66 /* conv1d.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4F2FB1562A0047420027AB67 /* conv1d.cpp */; }; + 4F2FB1CF2A0047430027AB66 /* conv1d.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4F2FB1562A0047420027AB67 /* conv1d.cpp */; }; + 4F2FB1D02A0047430027AB66 /* conv1d.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4F2FB1562A0047420027AB67 /* conv1d.cpp */; }; + 4F2FB1D12A0047430027AB66 /* conv1d.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4F2FB1562A0047420027AB67 /* conv1d.cpp */; }; + 4F2FB1D22A0047430027AB66 /* conv1d.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4F2FB1562A0047420027AB67 /* conv1d.cpp */; }; + 4F2FB1D32A0047430027AB66 /* conv1d.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4F2FB1562A0047420027AB67 /* conv1d.cpp */; }; + 4F2FB1D42A0047430027AB66 /* conv1d.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4F2FB1562A0047420027AB67 /* conv1d.cpp */; }; + 4F2FB1D52A0047430027AB66 /* conv1d.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4F2FB1562A0047420027AB67 /* conv1d.cpp */; }; + 4F2FB1D62A0047430027AB66 /* conv1d.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4F2FB1562A0047420027AB67 /* conv1d.cpp */; }; + 4F2FB1D72A0047430027AB66 /* conv1d.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F2FB1572A0047420027AB67 /* conv1d.h */; }; + 4F2FB1D82A0047430027AB66 /* ring_buffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4F2FB1582A0047420027AB67 /* ring_buffer.cpp */; }; + 4F2FB1D92A0047430027AB66 /* ring_buffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4F2FB1582A0047420027AB67 /* ring_buffer.cpp */; }; + 4F2FB1DA2A0047430027AB66 /* ring_buffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4F2FB1582A0047420027AB67 /* ring_buffer.cpp */; }; + 4F2FB1DB2A0047430027AB66 /* ring_buffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4F2FB1582A0047420027AB67 /* ring_buffer.cpp */; }; + 4F2FB1DC2A0047430027AB66 /* ring_buffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4F2FB1582A0047420027AB67 /* ring_buffer.cpp */; }; + 4F2FB1DD2A0047430027AB66 /* ring_buffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4F2FB1582A0047420027AB67 /* ring_buffer.cpp */; }; + 4F2FB1DE2A0047430027AB66 /* ring_buffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4F2FB1582A0047420027AB67 /* ring_buffer.cpp */; }; + 4F2FB1DF2A0047430027AB66 /* ring_buffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4F2FB1582A0047420027AB67 /* ring_buffer.cpp */; }; + 4F2FB1E02A0047430027AB66 /* ring_buffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4F2FB1582A0047420027AB67 /* ring_buffer.cpp */; }; + 4F2FB1E12A0047430027AB66 /* ring_buffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F2FB1592A0047420027AB67 /* ring_buffer.h */; }; 4F2FB19F2A0047430027AB66 /* convnet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4F2FB14B2A0047420027AB66 /* convnet.cpp */; }; 4F2FB1A02A0047430027AB66 /* convnet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4F2FB14B2A0047420027AB66 /* convnet.cpp */; }; 4F2FB1A12A0047430027AB66 /* convnet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4F2FB14B2A0047420027AB66 /* convnet.cpp */; }; @@ -668,6 +688,10 @@ 4F2FB1492A0047420027AB66 /* convnet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = convnet.h; sourceTree = ""; }; 4F2FB14A2A0047420027AB66 /* lstm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lstm.h; sourceTree = ""; }; 4F2FB14B2A0047420027AB66 /* convnet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = convnet.cpp; sourceTree = ""; }; + 4F2FB1562A0047420027AB67 /* conv1d.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = conv1d.cpp; sourceTree = ""; }; + 4F2FB1572A0047420027AB67 /* conv1d.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = conv1d.h; sourceTree = ""; }; + 4F2FB1582A0047420027AB67 /* ring_buffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ring_buffer.cpp; sourceTree = ""; }; + 4F2FB1592A0047420027AB67 /* ring_buffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ring_buffer.h; sourceTree = ""; }; 4F2FB14C2A0047420027AB66 /* wavenet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wavenet.h; sourceTree = ""; }; 4F2FB14D2A0047420027AB66 /* lstm.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lstm.cpp; sourceTree = ""; }; 4F2FB14E2A0047420027AB66 /* util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = util.h; sourceTree = ""; }; @@ -1294,7 +1318,11 @@ 4F2FB1502A0047420027AB66 /* activations.h */, 4F2FB14B2A0047420027AB66 /* convnet.cpp */, 4F2FB1492A0047420027AB66 /* convnet.h */, + 4F2FB1562A0047420027AB67 /* conv1d.cpp */, + 4F2FB1572A0047420027AB67 /* conv1d.h */, 4F2FB1482A0047420027AB66 /* dsp.cpp */, + 4F2FB1582A0047420027AB67 /* ring_buffer.cpp */, + 4F2FB1592A0047420027AB67 /* ring_buffer.h */, 4F2FB14F2A0047420027AB66 /* dsp.h */, 4F2FB1532A0047420027AB66 /* get_dsp.cpp */, AAB7BBB62CC4B8C6000B8B6E /* get_dsp.h */, @@ -2635,6 +2663,8 @@ 4F7C4958255DDFC400DF7588 /* IControls.cpp in Sources */, 4F2FB1562A0047420027AB66 /* RecursiveLinearFilter.cpp in Sources */, 4F2FB1BC2A0047430027AB66 /* wavenet.cpp in Sources */, + 4F2FB1CE2A0047430027AB66 /* conv1d.cpp in Sources */, + 4F2FB1D82A0047430027AB66 /* ring_buffer.cpp in Sources */, 4F2FB1922A0047430027AB66 /* dsp.cpp in Sources */, 4F8D9707209EF5AC006E2A11 /* NeuralAmpModeler.cpp in Sources */, 4F7C495A255DDFC400DF7588 /* ITextEntryControl.cpp in Sources */, @@ -2658,6 +2688,8 @@ 4F2FB1A22A0047430027AB66 /* convnet.cpp in Sources */, 4F2FB1842A0047430027AB66 /* wav.cpp in Sources */, 4F2FB1C12A0047430027AB66 /* wavenet.cpp in Sources */, + 4F2FB1CF2A0047430027AB66 /* conv1d.cpp in Sources */, + 4F2FB1D92A0047430027AB66 /* ring_buffer.cpp in Sources */, 4F2FB1662A0047430027AB66 /* dsp.cpp in Sources */, 4F2FB1AC2A0047430027AB66 /* lstm.cpp in Sources */, 4F2FB1B82A0047430027AB66 /* activations.cpp in Sources */, @@ -2693,6 +2725,8 @@ 4F2FB18A2A0047430027AB66 /* util.cpp in Sources */, 4F993F7423055C96000313AF /* IPlugProcessor.cpp in Sources */, 4F2FB1BE2A0047430027AB66 /* wavenet.cpp in Sources */, + 4F2FB1D02A0047430027AB66 /* conv1d.cpp in Sources */, + 4F2FB1DA2A0047430027AB66 /* ring_buffer.cpp in Sources */, 4F8C10E320BA2796006320CD /* IGraphicsEditorDelegate.cpp in Sources */, 4F6FD2B422675B6300FC59E6 /* IGraphicsCoreText.mm in Sources */, 4FDAC0ED207D76C600299363 /* IPlugTimer.cpp in Sources */, @@ -2731,6 +2765,8 @@ 4F3EE1CF231438D000004786 /* swell-menu.mm in Sources */, 4F2FB1992A0047430027AB66 /* dsp.cpp in Sources */, 4F2FB1C32A0047430027AB66 /* wavenet.cpp in Sources */, + 4F2FB1D12A0047430027AB66 /* conv1d.cpp in Sources */, + 4F2FB1DB2A0047430027AB66 /* ring_buffer.cpp in Sources */, 4F3EE1D0231438D000004786 /* IGraphicsMac_view.mm in Sources */, 4F7C496E255DDFCB00DF7588 /* IPopupMenuControl.cpp in Sources */, 4F3EE1D1231438D000004786 /* swell-appstub.mm in Sources */, @@ -2795,6 +2831,8 @@ AA341E252B9E5A530069C260 /* ToneStack.cpp in Sources */, 4F78BE2522E7406D00AD537E /* IPlugPluginBase.cpp in Sources */, 4F2FB1C22A0047430027AB66 /* wavenet.cpp in Sources */, + 4F2FB1D22A0047430027AB66 /* conv1d.cpp in Sources */, + 4F2FB1DC2A0047430027AB66 /* ring_buffer.cpp in Sources */, 4F2FB1A32A0047430027AB66 /* convnet.cpp in Sources */, 4F78BE2622E7406D00AD537E /* IPlugAPIBase.cpp in Sources */, 4F2FB1AD2A0047430027AB66 /* lstm.cpp in Sources */, @@ -2827,6 +2865,8 @@ 4F2FB1802A0047430027AB66 /* wav.cpp in Sources */, 4F2FB1622A0047430027AB66 /* dsp.cpp in Sources */, 4F2FB1BD2A0047430027AB66 /* wavenet.cpp in Sources */, + 4F2FB1D32A0047430027AB66 /* conv1d.cpp in Sources */, + 4F2FB1DD2A0047430027AB66 /* ring_buffer.cpp in Sources */, 4F815919205D50EB00393585 /* memorystream.cpp in Sources */, 4F9828C1140A9EB700F3FCC1 /* IPlugParameter.cpp in Sources */, 4F81591A205D50EB00393585 /* pluginview.cpp in Sources */, @@ -2905,6 +2945,8 @@ AA341E212B9E5A530069C260 /* ToneStack.cpp in Sources */, 4FB600231567CB0A0020189A /* IPlugParameter.cpp in Sources */, 4F2FB1BF2A0047430027AB66 /* wavenet.cpp in Sources */, + 4F2FB1D42A0047430027AB66 /* conv1d.cpp in Sources */, + 4F2FB1DE2A0047430027AB66 /* ring_buffer.cpp in Sources */, 4F2FB1A02A0047430027AB66 /* convnet.cpp in Sources */, 4FB600261567CB0A0020189A /* AAX_Exports.cpp in Sources */, 4F2FB1AA2A0047430027AB66 /* lstm.cpp in Sources */, @@ -2959,6 +3001,8 @@ 4FD16D3E13B63595001D0217 /* swell-menu.mm in Sources */, 4F2FB1912A0047430027AB66 /* dsp.cpp in Sources */, 4F2FB1BB2A0047430027AB66 /* wavenet.cpp in Sources */, + 4F2FB1D52A0047430027AB66 /* conv1d.cpp in Sources */, + 4F2FB1DF2A0047430027AB66 /* ring_buffer.cpp in Sources */, 4FB1F59120E4B011004157C8 /* IGraphicsMac_view.mm in Sources */, 4F7C4956255DDFC300DF7588 /* IPopupMenuControl.cpp in Sources */, 4F5C5F6B21BED08700E024A7 /* swell-appstub.mm in Sources */, @@ -3032,6 +3076,8 @@ 4F2FB1652A0047430027AB66 /* dsp.cpp in Sources */, 4F2FB1AB2A0047430027AB66 /* lstm.cpp in Sources */, 4F2FB1C02A0047430027AB66 /* wavenet.cpp in Sources */, + 4F2FB1D62A0047430027AB66 /* conv1d.cpp in Sources */, + 4F2FB1E02A0047430027AB66 /* ring_buffer.cpp in Sources */, 4FFBB91F20863B0E00DDD0E7 /* vstparameters.cpp in Sources */, 4FFBB92120863B0E00DDD0E7 /* vstcomponentbase.cpp in Sources */, 4FFBB92220863B0E00DDD0E7 /* IPlugVST3_Processor.cpp in Sources */, diff --git a/NeuralAmpModelerCore b/NeuralAmpModelerCore index 846968710..045adea09 160000 --- a/NeuralAmpModelerCore +++ b/NeuralAmpModelerCore @@ -1 +1 @@ -Subproject commit 846968710a670d662b15e449edba852d747d748e +Subproject commit 045adea09efe378b4c288779ba4f22f6ffd8bc20 From 9b45a986f923f5d6790ddb88a5b626cc5b4badc1 Mon Sep 17 00:00:00 2001 From: Steven Atkinson Date: Wed, 14 Jan 2026 09:39:18 -0800 Subject: [PATCH 2/9] Update NeuralAmpModelerCore --- NeuralAmpModelerCore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NeuralAmpModelerCore b/NeuralAmpModelerCore index 045adea09..03a4f737c 160000 --- a/NeuralAmpModelerCore +++ b/NeuralAmpModelerCore @@ -1 +1 @@ -Subproject commit 045adea09efe378b4c288779ba4f22f6ffd8bc20 +Subproject commit 03a4f737c727381a7cab36c47518dc1a32965da6 From a2a9ec22e82d6289a7f6c9ed1386791d372d0f74 Mon Sep 17 00:00:00 2001 From: Steven Atkinson Date: Wed, 14 Jan 2026 17:55:16 -0800 Subject: [PATCH 3/9] Update NeuralAmpModelerCore --- NeuralAmpModelerCore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NeuralAmpModelerCore b/NeuralAmpModelerCore index 03a4f737c..e3e51542d 160000 --- a/NeuralAmpModelerCore +++ b/NeuralAmpModelerCore @@ -1 +1 @@ -Subproject commit 03a4f737c727381a7cab36c47518dc1a32965da6 +Subproject commit e3e51542da7a92529224d24d7c879907e1524ecd From f5deb5778161bd39645fb679d2d235cb9283b582 Mon Sep 17 00:00:00 2001 From: Steven Atkinson Date: Fri, 16 Jan 2026 16:46:44 -0800 Subject: [PATCH 4/9] Update NeuralAmpModelerCore --- NeuralAmpModelerCore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NeuralAmpModelerCore b/NeuralAmpModelerCore index e3e51542d..8031a0659 160000 --- a/NeuralAmpModelerCore +++ b/NeuralAmpModelerCore @@ -1 +1 @@ -Subproject commit e3e51542da7a92529224d24d7c879907e1524ecd +Subproject commit 8031a06596c1db8bdfb61c4f5e2f9b0e2b09d2ef From 68f9aee584d16add20cade341ba3981bbf819dc3 Mon Sep 17 00:00:00 2001 From: Steven Atkinson Date: Mon, 19 Jan 2026 15:49:57 -0800 Subject: [PATCH 5/9] Update NeuralAmpModelerCore to mimo, head 1x1 --- NeuralAmpModeler/NeuralAmpModeler.cpp | 13 ++++++++++++- NeuralAmpModeler/NeuralAmpModeler.h | 8 ++++---- NeuralAmpModelerCore | 2 +- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/NeuralAmpModeler/NeuralAmpModeler.cpp b/NeuralAmpModeler/NeuralAmpModeler.cpp index 7774c4ba0..003528c9c 100644 --- a/NeuralAmpModeler/NeuralAmpModeler.cpp +++ b/NeuralAmpModeler/NeuralAmpModeler.cpp @@ -322,7 +322,7 @@ void NeuralAmpModeler::ProcessBlock(iplug::sample** inputs, iplug::sample** outp if (mModel != nullptr) { - mModel->process(triggerOutput[0], mOutputPointers[0], nFrames); + mModel->process(triggerOutput, mOutputPointers, nFrames); } else { @@ -693,6 +693,17 @@ std::string NeuralAmpModeler::_StageModel(const WDL_String& modelPath) { auto dspPath = std::filesystem::u8path(modelPath.Get()); std::unique_ptr model = nam::get_dsp(dspPath); + + // Check that the model has 1 input and 1 output channel + if (model->NumInputChannels() != 1) + { + throw std::runtime_error("Model must have 1 input channel, but has " + std::to_string(model->NumInputChannels())); + } + if (model->NumOutputChannels() != 1) + { + throw std::runtime_error("Model must have 1 output channel, but has " + std::to_string(model->NumOutputChannels())); + } + std::unique_ptr temp = std::make_unique(std::move(model), GetSampleRate()); temp->Reset(GetSampleRate(), GetBlockSize()); mStagedModel = std::move(temp); diff --git a/NeuralAmpModeler/NeuralAmpModeler.h b/NeuralAmpModeler/NeuralAmpModeler.h index f22298cdf..446bbf42c 100644 --- a/NeuralAmpModeler/NeuralAmpModeler.h +++ b/NeuralAmpModeler/NeuralAmpModeler.h @@ -95,13 +95,13 @@ class ResamplingNAM : public nam::DSP public: // Resampling wrapper around the NAM models ResamplingNAM(std::unique_ptr encapsulated, const double expected_sample_rate) - : nam::DSP(expected_sample_rate) + : nam::DSP(encapsulated->NumInputChannels(), encapsulated->NumOutputChannels(), expected_sample_rate) , mEncapsulated(std::move(encapsulated)) , 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) { - mEncapsulated->process(input[0], output[0], numFrames); + mEncapsulated->process(input, output, numFrames); }; mBlockProcessFunc = ProcessBlockFunc; @@ -133,7 +133,7 @@ class ResamplingNAM : public nam::DSP void prewarm() override { mEncapsulated->prewarm(); }; - void process(NAM_SAMPLE* input, NAM_SAMPLE* output, const int num_frames) override + void process(NAM_SAMPLE** input, NAM_SAMPLE** output, const int num_frames) override { if (num_frames > mMaxExternalBlockSize) // We can afford to be careful @@ -145,7 +145,7 @@ class ResamplingNAM : public nam::DSP } else { - mResampler.ProcessBlock(&input, &output, num_frames, mBlockProcessFunc); + mResampler.ProcessBlock(input, output, num_frames, mBlockProcessFunc); } }; diff --git a/NeuralAmpModelerCore b/NeuralAmpModelerCore index 8031a0659..d1ffcb308 160000 --- a/NeuralAmpModelerCore +++ b/NeuralAmpModelerCore @@ -1 +1 @@ -Subproject commit 8031a06596c1db8bdfb61c4f5e2f9b0e2b09d2ef +Subproject commit d1ffcb308852007ea621f92cf360d13de3e377e3 From f9fc2897882bd503f849f5067070f943080d49b5 Mon Sep 17 00:00:00 2001 From: Steven Atkinson Date: Wed, 21 Jan 2026 01:55:13 -0800 Subject: [PATCH 6/9] Temp last-touches branch --- NeuralAmpModelerCore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NeuralAmpModelerCore b/NeuralAmpModelerCore index d1ffcb308..f85901c74 160000 --- a/NeuralAmpModelerCore +++ b/NeuralAmpModelerCore @@ -1 +1 @@ -Subproject commit d1ffcb308852007ea621f92cf360d13de3e377e3 +Subproject commit f85901c744a8a246b1a51778f67caa5fc808ab4e From 6660fc2b1d8da6efe8650828a7c3f04e4b4bea8e Mon Sep 17 00:00:00 2001 From: Steven Atkinson Date: Wed, 21 Jan 2026 19:05:53 -0800 Subject: [PATCH 7/9] NeuralAmpModelerCore v0.4.0.rc1 --- NeuralAmpModelerCore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NeuralAmpModelerCore b/NeuralAmpModelerCore index f85901c74..be317cfb4 160000 --- a/NeuralAmpModelerCore +++ b/NeuralAmpModelerCore @@ -1 +1 @@ -Subproject commit f85901c744a8a246b1a51778f67caa5fc808ab4e +Subproject commit be317cfb4a763c3a280aaa0ffe54e9a33fe07267 From c743e5dd4d83063bfd85624322cdd39cf65bec68 Mon Sep 17 00:00:00 2001 From: Steven Atkinson Date: Wed, 21 Jan 2026 19:07:10 -0800 Subject: [PATCH 8/9] Formatting --- NeuralAmpModeler/NeuralAmpModeler.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/NeuralAmpModeler/NeuralAmpModeler.cpp b/NeuralAmpModeler/NeuralAmpModeler.cpp index 003528c9c..bb3916fc7 100644 --- a/NeuralAmpModeler/NeuralAmpModeler.cpp +++ b/NeuralAmpModeler/NeuralAmpModeler.cpp @@ -693,7 +693,7 @@ std::string NeuralAmpModeler::_StageModel(const WDL_String& modelPath) { auto dspPath = std::filesystem::u8path(modelPath.Get()); std::unique_ptr model = nam::get_dsp(dspPath); - + // Check that the model has 1 input and 1 output channel if (model->NumInputChannels() != 1) { @@ -701,9 +701,10 @@ std::string NeuralAmpModeler::_StageModel(const WDL_String& modelPath) } if (model->NumOutputChannels() != 1) { - throw std::runtime_error("Model must have 1 output channel, but has " + std::to_string(model->NumOutputChannels())); + throw std::runtime_error("Model must have 1 output channel, but has " + + std::to_string(model->NumOutputChannels())); } - + std::unique_ptr temp = std::make_unique(std::move(model), GetSampleRate()); temp->Reset(GetSampleRate(), GetBlockSize()); mStagedModel = std::move(temp); From b7be1129dbf48ccc5fa97cd5cd70a504fb06beec Mon Sep 17 00:00:00 2001 From: Steven Atkinson Date: Wed, 21 Jan 2026 22:53:12 -0800 Subject: [PATCH 9/9] Update NeuralAmpModelerCore integration: add missing files and upgrade to C++20 - Update C++ standard to C++20 in common-win.props and common-mac.xcconfig (required by NeuralAmpModelerCore dependency) - Add missing NAM source/header files to Visual Studio projects: - conv1d.cpp/h, ring_buffer.cpp/h - film.h, gating_activations.h, registry.h (header-only) - Updated: vst3, app, aax projects - Add missing files to macOS Xcode project: - film.h, gating_activations.h, registry.h (header-only) - Add missing files to iOS Xcode project: - conv1d.cpp/h, ring_buffer.cpp/h - film.h, gating_activations.h, registry.h (header-only) All new files from NeuralAmpModelerCore are now properly included in build configurations. --- .../projects/NeuralAmpModeler-aax.vcxproj | 9 +++++- .../projects/NeuralAmpModeler-app.vcxproj | 9 +++++- .../project.pbxproj | 28 +++++++++++++++++++ .../project.pbxproj | 12 ++++++++ .../projects/NeuralAmpModeler-vst3.vcxproj | 9 +++++- common-mac.xcconfig | 2 +- common-win.props | 2 +- 7 files changed, 66 insertions(+), 5 deletions(-) diff --git a/NeuralAmpModeler/projects/NeuralAmpModeler-aax.vcxproj b/NeuralAmpModeler/projects/NeuralAmpModeler-aax.vcxproj index ccd34be0f..f0e48d1ff 100644 --- a/NeuralAmpModeler/projects/NeuralAmpModeler-aax.vcxproj +++ b/NeuralAmpModeler/projects/NeuralAmpModeler-aax.vcxproj @@ -1,4 +1,4 @@ - + @@ -416,6 +416,7 @@ + $(IntDir)%(RelativeDir) @@ -427,6 +428,7 @@ + @@ -528,10 +530,15 @@ + + + + + diff --git a/NeuralAmpModeler/projects/NeuralAmpModeler-app.vcxproj b/NeuralAmpModeler/projects/NeuralAmpModeler-app.vcxproj index d81a7e050..b881807d6 100644 --- a/NeuralAmpModeler/projects/NeuralAmpModeler-app.vcxproj +++ b/NeuralAmpModeler/projects/NeuralAmpModeler-app.vcxproj @@ -1,4 +1,4 @@ - + @@ -335,10 +335,15 @@ + + + + + @@ -392,6 +397,7 @@ + $(IntDir)%(RelativeDir) @@ -403,6 +409,7 @@ + diff --git a/NeuralAmpModeler/projects/NeuralAmpModeler-iOS.xcodeproj/project.pbxproj b/NeuralAmpModeler/projects/NeuralAmpModeler-iOS.xcodeproj/project.pbxproj index 04bdb95e5..db784687d 100644 --- a/NeuralAmpModeler/projects/NeuralAmpModeler-iOS.xcodeproj/project.pbxproj +++ b/NeuralAmpModeler/projects/NeuralAmpModeler-iOS.xcodeproj/project.pbxproj @@ -52,6 +52,13 @@ 4FBDC96329FFF143004FF203 /* activations.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4FBDC94A29FFF143004FF203 /* activations.cpp */; }; 4FBDC96429FFF143004FF203 /* wavenet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4FBDC94B29FFF143004FF203 /* wavenet.cpp */; }; 4FBDC96529FFF143004FF203 /* get_dsp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4FBDC94C29FFF143004FF203 /* get_dsp.cpp */; }; + 4FBDC97729FFF143004FF203 /* conv1d.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4FBDC97029FFF143004FF203 /* conv1d.cpp */; }; + 4FBDC97829FFF143004FF203 /* conv1d.h in Headers */ = {isa = PBXBuildFile; fileRef = 4FBDC97129FFF143004FF203 /* conv1d.h */; }; + 4FBDC97929FFF143004FF203 /* ring_buffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4FBDC97229FFF143004FF203 /* ring_buffer.cpp */; }; + 4FBDC97A29FFF143004FF203 /* ring_buffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 4FBDC97329FFF143004FF203 /* ring_buffer.h */; }; + 4FBDC97B29FFF143004FF203 /* film.h in Headers */ = {isa = PBXBuildFile; fileRef = 4FBDC97429FFF143004FF203 /* film.h */; }; + 4FBDC97C29FFF143004FF203 /* gating_activations.h in Headers */ = {isa = PBXBuildFile; fileRef = 4FBDC97529FFF143004FF203 /* gating_activations.h */; }; + 4FBDC97D29FFF143004FF203 /* registry.h in Headers */ = {isa = PBXBuildFile; fileRef = 4FBDC97629FFF143004FF203 /* registry.h */; }; 4FC69835293BA47F0076EC33 /* NeuralAmpModelerAU.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4FC6982F293BA47F0076EC33 /* NeuralAmpModelerAU.framework */; }; 4FC69836293BA47F0076EC33 /* NeuralAmpModelerAU.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 4FC6982F293BA47F0076EC33 /* NeuralAmpModelerAU.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 4FC6983A293BA4F10076EC33 /* NeuralAmpModelerAU.h in Headers */ = {isa = PBXBuildFile; fileRef = 4FA61F7B22E89A5900A92C58 /* NeuralAmpModelerAU.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -282,6 +289,13 @@ 4FBDC94429FFF143004FF203 /* convnet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = convnet.cpp; sourceTree = ""; }; 4FBDC94529FFF143004FF203 /* wavenet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wavenet.h; sourceTree = ""; }; 4FBDC94629FFF143004FF203 /* lstm.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lstm.cpp; sourceTree = ""; }; + 4FBDC97029FFF143004FF203 /* conv1d.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = conv1d.cpp; sourceTree = ""; }; + 4FBDC97129FFF143004FF203 /* conv1d.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = conv1d.h; sourceTree = ""; }; + 4FBDC97229FFF143004FF203 /* ring_buffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ring_buffer.cpp; sourceTree = ""; }; + 4FBDC97329FFF143004FF203 /* ring_buffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ring_buffer.h; sourceTree = ""; }; + 4FBDC97429FFF143004FF203 /* film.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = film.h; sourceTree = ""; }; + 4FBDC97529FFF143004FF203 /* gating_activations.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gating_activations.h; sourceTree = ""; }; + 4FBDC97629FFF143004FF203 /* registry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = registry.h; sourceTree = ""; }; 4FBDC94729FFF143004FF203 /* util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = util.h; sourceTree = ""; }; 4FBDC94829FFF143004FF203 /* dsp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dsp.h; sourceTree = ""; }; 4FBDC94929FFF143004FF203 /* activations.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = activations.h; sourceTree = ""; }; @@ -672,6 +686,13 @@ 4FBDC94029FFF143004FF203 /* version.h */, 4FBDC94B29FFF143004FF203 /* wavenet.cpp */, 4FBDC94529FFF143004FF203 /* wavenet.h */, + 4FBDC97029FFF143004FF203 /* conv1d.cpp */, + 4FBDC97129FFF143004FF203 /* conv1d.h */, + 4FBDC97229FFF143004FF203 /* ring_buffer.cpp */, + 4FBDC97329FFF143004FF203 /* ring_buffer.h */, + 4FBDC97429FFF143004FF203 /* film.h */, + 4FBDC97529FFF143004FF203 /* gating_activations.h */, + 4FBDC97629FFF143004FF203 /* registry.h */, ); name = NAM; path = ../../NeuralAmpModelerCore/NAM; @@ -833,6 +854,11 @@ 4FC6983A293BA4F10076EC33 /* NeuralAmpModelerAU.h in Headers */, 4FBDC95629FFF143004FF203 /* dsp.h in Headers */, 4FBDC95E29FFF143004FF203 /* wavenet.h in Headers */, + 4FBDC97829FFF143004FF203 /* conv1d.h in Headers */, + 4FBDC97A29FFF143004FF203 /* ring_buffer.h in Headers */, + 4FBDC97B29FFF143004FF203 /* film.h in Headers */, + 4FBDC97C29FFF143004FF203 /* gating_activations.h in Headers */, + 4FBDC97D29FFF143004FF203 /* registry.h in Headers */, 4FC6983B293BA5020076EC33 /* IPlugAUAudioUnit.h in Headers */, AA7C860B2B43A42F00B5FB3A /* ResamplingContainer.h in Headers */, AA341E2B2B9E5A650069C260 /* ToneStack.h in Headers */, @@ -1059,6 +1085,8 @@ 4FBDC95829FFF143004FF203 /* util.cpp in Sources */, 4FC69849293BA5F90076EC33 /* ITextEntryControl.cpp in Sources */, 4FBDC96429FFF143004FF203 /* wavenet.cpp in Sources */, + 4FBDC97729FFF143004FF203 /* conv1d.cpp in Sources */, + 4FBDC97929FFF143004FF203 /* ring_buffer.cpp in Sources */, 4FC6984C293BA6010076EC33 /* IGraphicsCoreText.mm in Sources */, 4FC6984F293BA6420076EC33 /* IControl.cpp in Sources */, 4FC69848293BA5F90076EC33 /* IControls.cpp in Sources */, diff --git a/NeuralAmpModeler/projects/NeuralAmpModeler-macOS.xcodeproj/project.pbxproj b/NeuralAmpModeler/projects/NeuralAmpModeler-macOS.xcodeproj/project.pbxproj index 4631b33c2..357a71ca4 100644 --- a/NeuralAmpModeler/projects/NeuralAmpModeler-macOS.xcodeproj/project.pbxproj +++ b/NeuralAmpModeler/projects/NeuralAmpModeler-macOS.xcodeproj/project.pbxproj @@ -164,6 +164,9 @@ 4F2FB1A32A0047430027AB66 /* convnet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4F2FB14B2A0047420027AB66 /* convnet.cpp */; }; 4F2FB1A42A0047430027AB66 /* convnet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4F2FB14B2A0047420027AB66 /* convnet.cpp */; }; 4F2FB1A52A0047430027AB66 /* wavenet.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F2FB14C2A0047420027AB66 /* wavenet.h */; }; + 4F2FB1E22A0047430027AB68 /* film.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F2FB15A2A0047420027AB68 /* film.h */; }; + 4F2FB1E32A0047430027AB68 /* gating_activations.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F2FB15B2A0047420027AB68 /* gating_activations.h */; }; + 4F2FB1E42A0047430027AB68 /* registry.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F2FB15C2A0047420027AB68 /* registry.h */; }; 4F2FB1A62A0047430027AB66 /* lstm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4F2FB14D2A0047420027AB66 /* lstm.cpp */; }; 4F2FB1A72A0047430027AB66 /* lstm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4F2FB14D2A0047420027AB66 /* lstm.cpp */; }; 4F2FB1A82A0047430027AB66 /* lstm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4F2FB14D2A0047420027AB66 /* lstm.cpp */; }; @@ -693,6 +696,9 @@ 4F2FB1582A0047420027AB67 /* ring_buffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ring_buffer.cpp; sourceTree = ""; }; 4F2FB1592A0047420027AB67 /* ring_buffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ring_buffer.h; sourceTree = ""; }; 4F2FB14C2A0047420027AB66 /* wavenet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wavenet.h; sourceTree = ""; }; + 4F2FB15A2A0047420027AB68 /* film.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = film.h; sourceTree = ""; }; + 4F2FB15B2A0047420027AB68 /* gating_activations.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gating_activations.h; sourceTree = ""; }; + 4F2FB15C2A0047420027AB68 /* registry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = registry.h; sourceTree = ""; }; 4F2FB14D2A0047420027AB66 /* lstm.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lstm.cpp; sourceTree = ""; }; 4F2FB14E2A0047420027AB66 /* util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = util.h; sourceTree = ""; }; 4F2FB14F2A0047420027AB66 /* dsp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dsp.h; sourceTree = ""; }; @@ -1333,6 +1339,9 @@ 4F2FB1472A0047420027AB66 /* version.h */, 4F2FB1522A0047420027AB66 /* wavenet.cpp */, 4F2FB14C2A0047420027AB66 /* wavenet.h */, + 4F2FB15A2A0047420027AB68 /* film.h */, + 4F2FB15B2A0047420027AB68 /* gating_activations.h */, + 4F2FB15C2A0047420027AB68 /* registry.h */, ); name = NAM; path = ../../NeuralAmpModelerCore/NAM; @@ -2046,6 +2055,9 @@ 4F2FB15F2A0047420027AB66 /* NoiseGate.h in Headers */, 4F2FB17D2A0047430027AB66 /* dsp.h in Headers */, 4F2FB1A52A0047430027AB66 /* wavenet.h in Headers */, + 4F2FB1E22A0047430027AB68 /* film.h in Headers */, + 4F2FB1E32A0047430027AB68 /* gating_activations.h in Headers */, + 4F2FB1E42A0047430027AB68 /* registry.h in Headers */, 4F78BE1222E73DD900AD537E /* NeuralAmpModelerAU.h in Headers */, 4F2FB1542A0047420027AB66 /* Resample.h in Headers */, 4F2FB15E2A0047420027AB66 /* wav.h in Headers */, diff --git a/NeuralAmpModeler/projects/NeuralAmpModeler-vst3.vcxproj b/NeuralAmpModeler/projects/NeuralAmpModeler-vst3.vcxproj index 4763a404e..64577fa07 100644 --- a/NeuralAmpModeler/projects/NeuralAmpModeler-vst3.vcxproj +++ b/NeuralAmpModeler/projects/NeuralAmpModeler-vst3.vcxproj @@ -1,4 +1,4 @@ - + @@ -344,10 +344,15 @@ + + + + + @@ -420,6 +425,7 @@ + $(IntDir)%(RelativeDir) @@ -431,6 +437,7 @@ + diff --git a/common-mac.xcconfig b/common-mac.xcconfig index fb1b2be53..efb6c582e 100644 --- a/common-mac.xcconfig +++ b/common-mac.xcconfig @@ -9,7 +9,7 @@ COMPILER = com.apple.compilers.llvm.clang.1_0 // which osx sdk to compile against - defaults to latest SDK available BASE_SDK_MAC = macosx // latest SDK -CLANG_CXX_LANGUAGE_STANDARD = c++17 +CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_CXX_LIBRARY = libc++ CLANG_WARN_DOCUMENTATION_COMMENTS = NO diff --git a/common-win.props b/common-win.props index 3f4930f78..d4478742a 100644 --- a/common-win.props +++ b/common-win.props @@ -78,7 +78,7 @@ $(ALL_DEFS);%(PreprocessorDefinitions) 4996;4250;4018;4267;4068; $(WDL_PATH);$(IPLUG_PATH);$(SolutionDir);%(AdditionalIncludeDirectories) - stdcpp17 + stdcpp20 true