diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2006-10-03 19:57:38 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2006-10-03 19:57:38 +0000 |
commit | aabf0be5a934f098d98ca83abb2209685d9b8ead (patch) | |
tree | aa727d2d8f4b9c542655837e17f6df3a0563a474 /libs/ardour/vst_plugin.cc | |
parent | c0fa196073f21587129aaf7e8305bbbb8f1ec5ca (diff) |
floating point precision fix, after months of waiting, plus fix for width of string ID representation
git-svn-id: svn://localhost/ardour2/trunk@940 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/vst_plugin.cc')
-rw-r--r-- | libs/ardour/vst_plugin.cc | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/libs/ardour/vst_plugin.cc b/libs/ardour/vst_plugin.cc index e5a84bbad0..02003a4238 100644 --- a/libs/ardour/vst_plugin.cc +++ b/libs/ardour/vst_plugin.cc @@ -212,7 +212,7 @@ VSTPlugin::get_state() char index[64]; char val[32]; snprintf (index, sizeof (index), "param_%ld", n); - snprintf (val, sizeof (val), "%f", _plugin->getParameter (_plugin, n)); + snprintf (val, sizeof (val), "%.12g", _plugin->getParameter (_plugin, n)); parameters->add_property (index, val); } @@ -244,11 +244,12 @@ VSTPlugin::set_state(const XMLNode& node) for (i = child->properties().begin(); i != child->properties().end(); ++i) { long param; - float val; + double val; + sscanf ((*i)->name().c_str(), "param_%ld", ¶m); - sscanf ((*i)->value().c_str(), "%f", &val); + sscanf ((*i)->value().c_str(), "%g", &val); - _plugin->setParameter (_plugin, param, val); + _plugin->setParameter (_plugin, param, (float) val); } return 0; |