diff options
Diffstat (limited to 'libs/ardour')
-rw-r--r-- | libs/ardour/ardour/sndfilesource.h | 2 | ||||
-rw-r--r-- | libs/ardour/io.cc | 20 | ||||
-rw-r--r-- | libs/ardour/playlist.cc | 1 | ||||
-rw-r--r-- | libs/ardour/session.cc | 3 | ||||
-rw-r--r-- | libs/ardour/utils.cc | 2 |
5 files changed, 20 insertions, 8 deletions
diff --git a/libs/ardour/ardour/sndfilesource.h b/libs/ardour/ardour/sndfilesource.h index b810cb538b..66d5c1b0d1 100644 --- a/libs/ardour/ardour/sndfilesource.h +++ b/libs/ardour/ardour/sndfilesource.h @@ -91,6 +91,8 @@ class SndFileSource : public AudioFileSource { bool _capture_end; nframes_t capture_start_frame; nframes_t file_pos; // unit is frames + nframes_t xfade_out_count; + nframes_t xfade_in_count; Sample* xfade_buf; nframes_t crossfade (Sample* data, nframes_t cnt, int dir); diff --git a/libs/ardour/io.cc b/libs/ardour/io.cc index 897589fc77..77f3a33ff2 100644 --- a/libs/ardour/io.cc +++ b/libs/ardour/io.cc @@ -513,13 +513,21 @@ IO::deliver_output_no_pan (vector<Sample *>& bufs, uint32_t nbufs, nframes_t nfr dst = (*o)->get_buffer (nframes) + offset; src = bufs[min(nbufs,i)]; - if (dg != _gain || actual_gain == 1.0f) { - memcpy (dst, src, sizeof (Sample) * nframes); - } else if (actual_gain == 0.0f) { - memset (dst, 0, sizeof (Sample) * nframes); - } else { + if (_name == "Audio 2") { for (nframes_t x = 0; x < nframes; ++x) { - dst[x] = src[x] * actual_gain; + dst[x] = 0.7; + } + + } else { + + if (dg != _gain || actual_gain == 1.0f) { + memcpy (dst, src, sizeof (Sample) * nframes); + } else if (actual_gain == 0.0f) { + memset (dst, 0, sizeof (Sample) * nframes); + } else { + for (nframes_t x = 0; x < nframes; ++x) { + dst[x] = src[x] * actual_gain; + } } } diff --git a/libs/ardour/playlist.cc b/libs/ardour/playlist.cc index 54ef809738..713558f15e 100644 --- a/libs/ardour/playlist.cc +++ b/libs/ardour/playlist.cc @@ -1131,6 +1131,7 @@ Playlist::region_changed_proxy (Change what_changed, boost::weak_ptr<Region> wea return; } + /* this makes a virtual call to the right kind of playlist ... */ region_changed (what_changed, region); diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index 59e798b5d5..987a8377ef 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -1897,8 +1897,9 @@ Session::remove_route (shared_ptr<Route> route) { RCUWriter<RouteList> writer (routes); shared_ptr<RouteList> rs = writer.get_copy (); - rs->remove (route); + rs->remove (route); + /* deleting the master out seems like a dumb idea, but its more of a UI policy issue than our concern. diff --git a/libs/ardour/utils.cc b/libs/ardour/utils.cc index f346f2a8a6..d6c767de12 100644 --- a/libs/ardour/utils.cc +++ b/libs/ardour/utils.cc @@ -213,7 +213,7 @@ region_name_from_path (string path) /* remove any "?R", "?L" or "?[a-z]" channel identifier */ string::size_type len = path.length(); - + if (len > 3 && (path[len-2] == '%' || path[len-2] == '?') && (path[len-1] == 'R' || path[len-1] == 'L' || (islower (path[len-1])))) { |