diff --git a/lib/hooks/dp.cpp b/lib/hooks/dp.cpp index fd2b47687..c9c1e590a 100644 --- a/lib/hooks/dp.cpp +++ b/lib/hooks/dp.cpp @@ -196,9 +196,11 @@ public: assert(state != State::STARTED); if (signal_name) { - signal_index = signals->getIndexByName(signal_name); - if (signal_index < 0) + int si = signals->getIndexByName(signal_name); + if (si < 0) { throw RuntimeError("Failed to find signal: {}", signal_name); + } + signal_index = si; } if (inverse) { @@ -245,6 +247,24 @@ public: state = State::PREPARED; } + virtual void check() { + assert(state == State::PARSED); + + if (signal_index < 0) + throw RuntimeError("Signal index not set"); + + if (fharmonics_len <= 0) + throw RuntimeError("No harmonics given"); + + if (timestep <= 0) + throw RuntimeError("Invalid timestep"); + + if (f0 <= 0) + throw RuntimeError("Invalid fundamental frequency"); + + state = State::CHECKED; + } + virtual Hook::Reason process(struct Sample *smp) { if (signal_index >= smp->length) return Hook::Reason::ERROR;