summaryrefslogtreecommitdiff
path: root/libs/ardour/audioregion.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libs/ardour/audioregion.cc')
-rw-r--r--libs/ardour/audioregion.cc147
1 files changed, 77 insertions, 70 deletions
diff --git a/libs/ardour/audioregion.cc b/libs/ardour/audioregion.cc
index 939f9c02dd..8b533deda3 100644
--- a/libs/ardour/audioregion.cc
+++ b/libs/ardour/audioregion.cc
@@ -32,6 +32,7 @@
#include <pbd/basename.h>
#include <pbd/xml++.h>
#include <pbd/stacktrace.h>
+#include <pbd/enumwriter.h>
#include <ardour/audioregion.h>
#include <ardour/session.h>
@@ -482,8 +483,8 @@ AudioRegion::state (bool full)
char buf2[64];
LocaleGuard lg (X_("POSIX"));
- snprintf (buf, sizeof (buf), "0x%x", (int) _flags);
- node.add_property ("flags", buf);
+ node.add_property ("flags", enum_2_string (_flags));
+
snprintf (buf, sizeof(buf), "%.12g", _scale_amplitude);
node.add_property ("scale-gain", buf);
@@ -564,7 +565,9 @@ AudioRegion::set_live_state (const XMLNode& node, Change& what_changed, bool sen
uint32_t old_flags = _flags;
if ((prop = node.property ("flags")) != 0) {
- _flags = Flag (strtol (prop->value().c_str(), (char **) 0, 16));
+ _flags = Flag (string_2_enum (prop->value(), _flags));
+
+ //_flags = Flag (strtol (prop->value().c_str(), (char **) 0, 16));
_flags = Flag (_flags & ~Region::LeftOfSplit);
_flags = Flag (_flags & ~Region::RightOfSplit);
@@ -662,49 +665,49 @@ AudioRegion::set_fade_in (FadeShape shape, nframes_t len)
switch (shape) {
case Linear:
- _fade_in.add (0.0, 0.0);
- _fade_in.add (len, 1.0);
+ _fade_in.fast_simple_add (0.0, 0.0);
+ _fade_in.fast_simple_add (len, 1.0);
break;
case Fast:
- _fade_in.add (0, 0);
- _fade_in.add (len * 0.389401, 0.0333333);
- _fade_in.add (len * 0.629032, 0.0861111);
- _fade_in.add (len * 0.829493, 0.233333);
- _fade_in.add (len * 0.9447, 0.483333);
- _fade_in.add (len * 0.976959, 0.697222);
- _fade_in.add (len, 1);
+ _fade_in.fast_simple_add (0, 0);
+ _fade_in.fast_simple_add (len * 0.389401, 0.0333333);
+ _fade_in.fast_simple_add (len * 0.629032, 0.0861111);
+ _fade_in.fast_simple_add (len * 0.829493, 0.233333);
+ _fade_in.fast_simple_add (len * 0.9447, 0.483333);
+ _fade_in.fast_simple_add (len * 0.976959, 0.697222);
+ _fade_in.fast_simple_add (len, 1);
break;
case Slow:
- _fade_in.add (0, 0);
- _fade_in.add (len * 0.0207373, 0.197222);
- _fade_in.add (len * 0.0645161, 0.525);
- _fade_in.add (len * 0.152074, 0.802778);
- _fade_in.add (len * 0.276498, 0.919444);
- _fade_in.add (len * 0.481567, 0.980556);
- _fade_in.add (len * 0.767281, 1);
- _fade_in.add (len, 1);
+ _fade_in.fast_simple_add (0, 0);
+ _fade_in.fast_simple_add (len * 0.0207373, 0.197222);
+ _fade_in.fast_simple_add (len * 0.0645161, 0.525);
+ _fade_in.fast_simple_add (len * 0.152074, 0.802778);
+ _fade_in.fast_simple_add (len * 0.276498, 0.919444);
+ _fade_in.fast_simple_add (len * 0.481567, 0.980556);
+ _fade_in.fast_simple_add (len * 0.767281, 1);
+ _fade_in.fast_simple_add (len, 1);
break;
case LogA:
- _fade_in.add (0, 0);
- _fade_in.add (len * 0.0737327, 0.308333);
- _fade_in.add (len * 0.246544, 0.658333);
- _fade_in.add (len * 0.470046, 0.886111);
- _fade_in.add (len * 0.652074, 0.972222);
- _fade_in.add (len * 0.771889, 0.988889);
- _fade_in.add (len, 1);
+ _fade_in.fast_simple_add (0, 0);
+ _fade_in.fast_simple_add (len * 0.0737327, 0.308333);
+ _fade_in.fast_simple_add (len * 0.246544, 0.658333);
+ _fade_in.fast_simple_add (len * 0.470046, 0.886111);
+ _fade_in.fast_simple_add (len * 0.652074, 0.972222);
+ _fade_in.fast_simple_add (len * 0.771889, 0.988889);
+ _fade_in.fast_simple_add (len, 1);
break;
case LogB:
- _fade_in.add (0, 0);
- _fade_in.add (len * 0.304147, 0.0694444);
- _fade_in.add (len * 0.529954, 0.152778);
- _fade_in.add (len * 0.725806, 0.333333);
- _fade_in.add (len * 0.847926, 0.558333);
- _fade_in.add (len * 0.919355, 0.730556);
- _fade_in.add (len, 1);
+ _fade_in.fast_simple_add (0, 0);
+ _fade_in.fast_simple_add (len * 0.304147, 0.0694444);
+ _fade_in.fast_simple_add (len * 0.529954, 0.152778);
+ _fade_in.fast_simple_add (len * 0.725806, 0.333333);
+ _fade_in.fast_simple_add (len * 0.847926, 0.558333);
+ _fade_in.fast_simple_add (len * 0.919355, 0.730556);
+ _fade_in.fast_simple_add (len, 1);
break;
}
@@ -722,47 +725,47 @@ AudioRegion::set_fade_out (FadeShape shape, nframes_t len)
switch (shape) {
case Fast:
- _fade_out.add (len * 0, 1);
- _fade_out.add (len * 0.023041, 0.697222);
- _fade_out.add (len * 0.0553, 0.483333);
- _fade_out.add (len * 0.170507, 0.233333);
- _fade_out.add (len * 0.370968, 0.0861111);
- _fade_out.add (len * 0.610599, 0.0333333);
- _fade_out.add (len * 1, 0);
+ _fade_out.fast_simple_add (len * 0, 1);
+ _fade_out.fast_simple_add (len * 0.023041, 0.697222);
+ _fade_out.fast_simple_add (len * 0.0553, 0.483333);
+ _fade_out.fast_simple_add (len * 0.170507, 0.233333);
+ _fade_out.fast_simple_add (len * 0.370968, 0.0861111);
+ _fade_out.fast_simple_add (len * 0.610599, 0.0333333);
+ _fade_out.fast_simple_add (len * 1, 0);
break;
case LogA:
- _fade_out.add (len * 0, 1);
- _fade_out.add (len * 0.228111, 0.988889);
- _fade_out.add (len * 0.347926, 0.972222);
- _fade_out.add (len * 0.529954, 0.886111);
- _fade_out.add (len * 0.753456, 0.658333);
- _fade_out.add (len * 0.9262673, 0.308333);
- _fade_out.add (len * 1, 0);
+ _fade_out.fast_simple_add (len * 0, 1);
+ _fade_out.fast_simple_add (len * 0.228111, 0.988889);
+ _fade_out.fast_simple_add (len * 0.347926, 0.972222);
+ _fade_out.fast_simple_add (len * 0.529954, 0.886111);
+ _fade_out.fast_simple_add (len * 0.753456, 0.658333);
+ _fade_out.fast_simple_add (len * 0.9262673, 0.308333);
+ _fade_out.fast_simple_add (len * 1, 0);
break;
case Slow:
- _fade_out.add (len * 0, 1);
- _fade_out.add (len * 0.305556, 1);
- _fade_out.add (len * 0.548611, 0.991736);
- _fade_out.add (len * 0.759259, 0.931129);
- _fade_out.add (len * 0.918981, 0.68595);
- _fade_out.add (len * 0.976852, 0.22865);
- _fade_out.add (len * 1, 0);
+ _fade_out.fast_simple_add (len * 0, 1);
+ _fade_out.fast_simple_add (len * 0.305556, 1);
+ _fade_out.fast_simple_add (len * 0.548611, 0.991736);
+ _fade_out.fast_simple_add (len * 0.759259, 0.931129);
+ _fade_out.fast_simple_add (len * 0.918981, 0.68595);
+ _fade_out.fast_simple_add (len * 0.976852, 0.22865);
+ _fade_out.fast_simple_add (len * 1, 0);
break;
case LogB:
- _fade_out.add (len * 0, 1);
- _fade_out.add (len * 0.080645, 0.730556);
- _fade_out.add (len * 0.277778, 0.289256);
- _fade_out.add (len * 0.470046, 0.152778);
- _fade_out.add (len * 0.695853, 0.0694444);
- _fade_out.add (len * 1, 0);
+ _fade_out.fast_simple_add (len * 0, 1);
+ _fade_out.fast_simple_add (len * 0.080645, 0.730556);
+ _fade_out.fast_simple_add (len * 0.277778, 0.289256);
+ _fade_out.fast_simple_add (len * 0.470046, 0.152778);
+ _fade_out.fast_simple_add (len * 0.695853, 0.0694444);
+ _fade_out.fast_simple_add (len * 1, 0);
break;
case Linear:
- _fade_out.add (len * 0, 1);
- _fade_out.add (len * 1, 0);
+ _fade_out.fast_simple_add (len * 0, 1);
+ _fade_out.fast_simple_add (len * 1, 0);
break;
}
@@ -851,8 +854,8 @@ AudioRegion::set_default_envelope ()
{
_envelope.freeze ();
_envelope.clear ();
- _envelope.add (0, 1.0f);
- _envelope.add (_length, 1.0f);
+ _envelope.fast_simple_add (0, 1.0f);
+ _envelope.fast_simple_add (_length, 1.0f);
_envelope.thaw ();
}
@@ -996,12 +999,14 @@ AudioRegion::exportme (Session& session, AudioExportSpecification& spec)
void
AudioRegion::set_scale_amplitude (gain_t g)
{
+ boost::shared_ptr<Playlist> pl (playlist());
+
_scale_amplitude = g;
/* tell the diskstream we're in */
-
- if (_playlist) {
- _playlist->Modified();
+
+ if (pl) {
+ pl->Modified();
}
/* tell everybody else */
@@ -1068,8 +1073,10 @@ AudioRegion::normalize_to (float target_dB)
/* tell the diskstream we're in */
- if (_playlist) {
- _playlist->Modified();
+ boost::shared_ptr<Playlist> pl (playlist());
+
+ if (pl) {
+ pl->Modified();
}
/* tell everybody else */