diff options
Diffstat (limited to 'gui/wxmain_mrun_genupload.cpp')
-rw-r--r-- | gui/wxmain_mrun_genupload.cpp | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/gui/wxmain_mrun_genupload.cpp b/gui/wxmain_mrun_genupload.cpp new file mode 100644 index 0000000..b720e3a --- /dev/null +++ b/gui/wxmain_mrun_genupload.cpp @@ -0,0 +1,28 @@ +#include "stmdsp.hpp" +#include "exprtk.hpp" +#include <string> +#include <vector> + +std::vector<stmdsp::dacsample_t> siggen_formula_parse(const std::string& formulaString) +{ + double x = 0; + + exprtk::symbol_table<double> symbol_table; + symbol_table.add_variable("x", x); + symbol_table.add_constants(); + + exprtk::expression<double> expression; + expression.register_symbol_table(symbol_table); + + exprtk::parser<double> parser; + parser.compile(formulaString, expression); + + std::vector<stmdsp::dacsample_t> samples; + for (x = 0; samples.size() < stmdsp::SAMPLES_MAX; x += 1) { + auto y = static_cast<stmdsp::dacsample_t>(expression.value()); + samples.push_back(y); + } + + return samples; +} + |