summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorJesse Chappell <jesse@essej.net>2007-06-26 02:16:54 +0000
committerJesse Chappell <jesse@essej.net>2007-06-26 02:16:54 +0000
commite9b1b7110ba49103af8e99547c3a165526a80b14 (patch)
treef6eac5ae42f48605df6167bdc9a12421bdbe103b /gtk2_ardour
parentcdccec62fe0ec32c8f4ae1efd3d2ab70dae19dfc (diff)
* Added (let's call it revealed) ability to record while the transport is looping.
This works for both Internal (seamless) and JACK sync, new regions are created each cycle around the loop and stacked on top of each other. It is recommended for now that automatic crossfades be turned off when doing this. Punch-In/Out may be used also (this used to be the only way to accomplish recording while looping, but now the GUI represents it without goofiness. * Fixed the stuttering/stuck problem when looping with JACK sync * Fixed gui bug that prevented record-disable when latch record option is on * Fixed issue where it would rec-enable unnecessarily when passing through the punch-out point * Fixed corner case in diskstream record length (that no one would ever notice) git-svn-id: svn://localhost/ardour2/trunk@2035 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/ardour_ui.cc2
-rw-r--r--gtk2_ardour/streamview.cc9
-rw-r--r--gtk2_ardour/streamview.h1
3 files changed, 11 insertions, 1 deletions
diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc
index 10f6a2fe7a..bde4ca2947 100644
--- a/gtk2_ardour/ardour_ui.cc
+++ b/gtk2_ardour/ardour_ui.cc
@@ -1244,7 +1244,7 @@ ARDOUR_UI::transport_record ()
break;
case Session::Recording:
case Session::Enabled:
- session->disable_record (true);
+ session->disable_record (false, true);
}
}
}
diff --git a/gtk2_ardour/streamview.cc b/gtk2_ardour/streamview.cc
index 305b5c3240..b18e5efb42 100644
--- a/gtk2_ardour/streamview.cc
+++ b/gtk2_ardour/streamview.cc
@@ -76,6 +76,7 @@ StreamView::StreamView (RouteTimeAxisView& tv)
if (_trackview.is_track()) {
_trackview.track()->DiskstreamChanged.connect (mem_fun (*this, &StreamView::diskstream_changed));
_trackview.session().TransportStateChange.connect (mem_fun (*this, &StreamView::transport_changed));
+ _trackview.session().TransportLooped.connect (mem_fun (*this, &StreamView::transport_looped));
_trackview.get_diskstream()->RecordEnableChanged.connect (mem_fun (*this, &StreamView::rec_enable_changed));
_trackview.session().RecordStateChanged.connect (mem_fun (*this, &StreamView::sess_rec_enable_changed));
}
@@ -315,6 +316,14 @@ StreamView::transport_changed()
}
void
+StreamView::transport_looped()
+{
+ // to force a new rec region
+ rec_active = false;
+ Gtkmm2ext::UI::instance()->call_slot (mem_fun (*this, &StreamView::setup_rec_box));
+}
+
+void
StreamView::update_rec_box ()
{
if (rec_active && rec_rects.size() > 0) {
diff --git a/gtk2_ardour/streamview.h b/gtk2_ardour/streamview.h
index 7011801560..15e354bdab 100644
--- a/gtk2_ardour/streamview.h
+++ b/gtk2_ardour/streamview.h
@@ -102,6 +102,7 @@ protected:
//private: (FIXME?)
void transport_changed();
+ void transport_looped();
void rec_enable_changed();
void sess_rec_enable_changed();
virtual void setup_rec_box () = 0;