summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk2_ardour/SConscript2
-rw-r--r--gtk2_ardour/about.cc3
-rw-r--r--gtk2_ardour/ardev_common.sh.in7
-rw-r--r--gtk2_ardour/ardour-sae.menus1
-rw-r--r--gtk2_ardour/ardour.bindings.in505
-rw-r--r--gtk2_ardour/ardour.menus3
-rw-r--r--gtk2_ardour/ardour_ui.cc125
-rw-r--r--gtk2_ardour/ardour_ui.h1
-rw-r--r--gtk2_ardour/ardour_ui_ed.cc1
-rw-r--r--gtk2_ardour/ardour_ui_options.cc8
-rw-r--r--gtk2_ardour/audio_region_view.cc14
-rw-r--r--gtk2_ardour/editor.cc26
-rw-r--r--gtk2_ardour/editor.h32
-rw-r--r--gtk2_ardour/editor_actions.cc3
-rw-r--r--gtk2_ardour/editor_canvas.cc10
-rw-r--r--gtk2_ardour/editor_markers.cc2
-rw-r--r--gtk2_ardour/editor_ops.cc232
-rw-r--r--gtk2_ardour/editor_selection.cc93
-rw-r--r--gtk2_ardour/editor_timefx.cc132
-rw-r--r--gtk2_ardour/engine_dialog.cc76
-rw-r--r--gtk2_ardour/gain_meter.cc16
-rw-r--r--gtk2_ardour/gain_meter.h1
-rw-r--r--gtk2_ardour/keyeditor.cc73
-rw-r--r--gtk2_ardour/keyeditor.h5
-rw-r--r--gtk2_ardour/mixer_ui.cc4
-rw-r--r--gtk2_ardour/new_session_dialog.cc137
-rw-r--r--gtk2_ardour/new_session_dialog.h16
-rw-r--r--gtk2_ardour/po/sv_SE.po1140
-rw-r--r--gtk2_ardour/tempo_dialog.cc2
-rw-r--r--gtk2_ardour/tempo_dialog.h2
-rw-r--r--gtk2_ardour/theme_manager.cc2
-rw-r--r--libs/ardour/ardour/configuration_vars.h1
-rw-r--r--libs/ardour/ardour/osc.h1
-rw-r--r--libs/ardour/ardour/session.h2
-rw-r--r--libs/ardour/ardour/types.h3
-rw-r--r--libs/ardour/audio_diskstream.cc4
-rw-r--r--libs/ardour/audioregion.cc37
-rw-r--r--libs/ardour/osc.cc24
-rw-r--r--libs/ardour/plugin_manager.cc4
-rw-r--r--libs/ardour/rb_effect.cc6
-rw-r--r--libs/ardour/session.cc25
-rw-r--r--libs/ardour/session_butler.cc3
-rw-r--r--libs/ardour/session_process.cc4
-rw-r--r--libs/ardour/session_state.cc41
-rw-r--r--libs/ardour/session_transport.cc2
45 files changed, 2238 insertions, 593 deletions
diff --git a/gtk2_ardour/SConscript b/gtk2_ardour/SConscript
index f3b8788fad..4d34a46176 100644
--- a/gtk2_ardour/SConscript
+++ b/gtk2_ardour/SConscript
@@ -426,7 +426,7 @@ else:
keybindings_dict['%SECONDARY%'] = 'Alt'
keybindings_dict['%TERTIARY%'] = 'Shift'
keybindings_dict['%LEVEL4%'] = 'Mod2'
- keybindings_dict['%WINDOW%'] = 'Ctrl'
+ keybindings_dict['%WINDOW%'] = 'Alt'
ardourbindings = env.SubstInFile ('ardour.bindings', 'ardour.bindings.in', SUBST_DICT = keybindings_dict);
ardoursaeDEbindings = env.SubstInFile ('ardour-sae-de.bindings', 'ardour-sae-de.bindings.in', SUBST_DICT = keybindings_dict);
diff --git a/gtk2_ardour/about.cc b/gtk2_ardour/about.cc
index 06845cccd2..a201a1c404 100644
--- a/gtk2_ardour/about.cc
+++ b/gtk2_ardour/about.cc
@@ -155,6 +155,7 @@ static const char* authors[] = {
N_("John Anderson"),
N_("Nedko Arnaudov"),
N_("Carl Hetherington"),
+ N_("Colin Fletcher"),
0
};
@@ -200,7 +201,7 @@ About::About ()
}
set_translator_credits (t);
- set_copyright (_("Copyright (C) 1999-2007 Paul Davis\n"));
+ set_copyright (_("Copyright (C) 1999-2008 Paul Davis\n"));
set_license (_("Ardour comes with ABSOLUTELY NO WARRANTY\n"
"This is free software, and you are welcome to redistribute it\n"
"under certain conditions; see the file COPYING for details.\n"));
diff --git a/gtk2_ardour/ardev_common.sh.in b/gtk2_ardour/ardev_common.sh.in
index 8165b22bc4..28c9acb6f2 100644
--- a/gtk2_ardour/ardev_common.sh.in
+++ b/gtk2_ardour/ardev_common.sh.in
@@ -2,12 +2,11 @@ cd `dirname "$0"`/..
#export G_DEBUG=fatal_criticals
-export ARDOUR_PATH=.:gtk2_ardour
+export ARDOUR_PATH=gtk2_ardour/icons:gtk2_ardour/pixmaps:gtk2_ardour:.
export GTK_PATH=libs/clearlooks
-export ARDOUR_SURFACES_PATH=libs/surfaces/frontier:libs/surfaces/generic_midi:libs/surfaces/mackie:libs/surfaces/tranzport
-export LD_LIBRARY_PATH=libs/surfaces/control_protocol:libs/ardour:libs/midi++2:libs/pbd:libs/rubberband:libs/soundtouch:libs/gtkmm2ext:libs/sigc++2:libs/glibmm2:libs/gtkmm2/atk:libs/gtkmm2/pango:libs/gtkmm2/gdk:libs/gtkmm2/gtk:libs/libgnomecanvasmm:libs/libsndfile:libs/appleutility:$LD_LIBRARY_PATH
+export LD_LIBRARY_PATH=libs/vamp-sdk:libs/surfaces/control_protocol:libs/ardour:libs/midi++2:libs/pbd:libs/rubberband:libs/soundtouch:libs/gtkmm2ext:libs/sigc++2:libs/glibmm2:libs/gtkmm2/atk:libs/gtkmm2/pango:libs/gtkmm2/gdk:libs/gtkmm2/gtk:libs/libgnomecanvasmm:libs/libsndfile:libs/appleutility:$LD_LIBRARY_PATH
# DYLD_LIBRARY_PATH is for darwin.
export DYLD_FALLBACK_LIBRARY_PATH=$LD_LIBRARY_PATH
@@ -15,5 +14,3 @@ export DYLD_FALLBACK_LIBRARY_PATH=$LD_LIBRARY_PATH
export GTK_PATH=$PWD/libs/clearlooks:~/.ardour2
EXECUTABLE=gtk2_ardour/ardour-%VERSION%
-
-ulimit -c unlimited
diff --git a/gtk2_ardour/ardour-sae.menus b/gtk2_ardour/ardour-sae.menus
index a1818a9965..e3efc7a849 100644
--- a/gtk2_ardour/ardour-sae.menus
+++ b/gtk2_ardour/ardour-sae.menus
@@ -73,6 +73,7 @@
<menuitem action='set-loop-from-edit-range'/>
<menuitem action='set-loop-from-region'/>
<menuitem action='set-punch-from-edit-range'/>
+ <menuitem action='set-punch-from-region'/>
<menu action='LocateToMarker'>
<menuitem action='goto-mark-1'/>
<menuitem action='goto-mark-2'/>
diff --git a/gtk2_ardour/ardour.bindings.in b/gtk2_ardour/ardour.bindings.in
index fb26ff1b56..1efdb1cdd4 100644
--- a/gtk2_ardour/ardour.bindings.in
+++ b/gtk2_ardour/ardour.bindings.in
@@ -1,193 +1,226 @@
-; ardour-2.0beta11.1 GtkAccelMap rc-file -*- scheme -*-
-; this file is an automated accelerator map dump
+; ardour-2.2 GtkAccelMap rc-file -*- scheme -*-
+; this file is a hand-edited map that is processed by scons
+; to produce a real accelmap.
;
-; (gtk_accel_path "<Actions>/RegionList/RegionListSort" "")
-(gtk_accel_path "<Actions>/Common/Quit" "<%PRIMARY%>q")
-(gtk_accel_path "<Actions>/Common/Save" "<%PRIMARY%>s")
-; (gtk_accel_path "<Actions>/Editor/Pullup" "")
-; (gtk_accel_path "<Actions>/Editor/zoom-to-session" "")
-; (gtk_accel_path "<Actions>/JACK/JACKReconnect" "")
-; (gtk_accel_path "<Actions>/Editor/Autoconnect" "")
-; (gtk_accel_path "<Actions>/Editor/Edit" "")
+
+;; punctuation
+
+(gtk_accel_path "<Actions>/Editor/temporal-zoom-in" "equal")
+(gtk_accel_path "<Actions>/Editor/temporal-zoom-out" "minus")
+(gtk_accel_path "<Actions>/Editor/edit-cursor-to-previous-region-sync" "apostrophe")
+(gtk_accel_path "<Actions>/Editor/edit-cursor-to-next-region-sync" "semicolon")
+(gtk_accel_path "<Actions>/Editor/cycle-edit-point" "grave")
+
+(gtk_accel_path "<Actions>/Editor/playhead-to-next-region-boundary" "period")
+(gtk_accel_path "<Actions>/Editor/playhead-to-next-region-sync" "<%PRIMARY%>period")
+
(gtk_accel_path "<Actions>/Editor/playhead-to-previous-region-boundary" "comma")
(gtk_accel_path "<Actions>/Editor/playhead-to-previous-region-sync" "<%PRIMARY%>comma")
-; (gtk_accel_path "<Actions>/processormenu/copy" "")
-; (gtk_accel_path "<Actions>/options/MeterFalloffFaster" "")
+
+(gtk_accel_path "<Actions>/Editor/extend-range-to-end-of-region" "rightanglebracket")
+(gtk_accel_path "<Actions>/Editor/extend-range-to-start-of-region" "leftanglebracket")
+
+(gtk_accel_path "<Actions>/Transport/ToggleRoll" "space")
(gtk_accel_path "<Actions>/Transport/ToggleRollForgetCapture" "<%PRIMARY%>space")
+(gtk_accel_path "<Actions>/Transport/record-roll" "<%TERTIARY%>space")
+
+(gtk_accel_path "<Actions>/Editor/set-fade-in-length" "slash")
+(gtk_accel_path "<Actions>/Editor/set-fade-in-length" "<%SECONDARY%>slash")
+(gtk_accel_path "<Actions>/Editor/set-fade-out-length" "backslash")
+(gtk_accel_path "<Actions>/Editor/set-fade-out-length" "<%SECONDARY%>backslash")
+
+(gtk_accel_path "<Actions>/Editor/trim-from-start" "<%TERTIARY%>braceleft")
+(gtk_accel_path "<Actions>/Editor/trim-to-end" "<%TERTIARY%>braceright")
+
+(gtk_accel_path "<Actions>/Editor/set-loop-from-edit-range" "bracketright")
+(gtk_accel_path "<Actions>/Editor/set-loop-from-region" "<%SECONDARY%>bracketright")
+
+(gtk_accel_path "<Actions>/Editor/set-punch-from-edit-range" "bracketleft")
+(gtk_accel_path "<Actions>/Editor/set-punch-from-region" "<%SECONDARY%>bracketleft")
+
+;; letters
+
+;; TOP ROW
+
+(gtk_accel_path "<Actions>/Common/Quit" "<%PRIMARY%>q")
+
+;; note that ctrl-w is special and consumed by the keyboard snooper
+
+(gtk_accel_path "<Actions>/Editor/set-edit-point" "e")
+(gtk_accel_path "<Actions>/Editor/select-all-before-edit-cursor" "<%PRIMARY%>e")
+(gtk_accel_path "<Actions>/Editor/show-editor-mixer" "<%TERTIARY%>e")
+(gtk_accel_path "<Actions>/Common/goto-editor" "<%WINDOW%>e")
+(gtk_accel_path "<Actions>/MouseMode/set-mouse-mode-range" "r")
+(gtk_accel_path "<Actions>/Editor/redo" "<%PRIMARY%>r")
(gtk_accel_path "<Actions>/Transport/Record" "<%TERTIARY%>r")
-; (gtk_accel_path "<Actions>/RegionList/SortByRegionLength" "")
-; (gtk_accel_path "<Actions>/options/MeterFalloffSlowest" "")
-; (gtk_accel_path "<Actions>/Editor/playhead-to-previous-region-sync" "")
-; (gtk_accel_path "<Actions>/processormenu/deactivate_all" "")
-; (gtk_accel_path "<Actions>/RegionList/SortByRegionPosition" "")
-; (gtk_accel_path "<Actions>/Editor/ZoomFocus" "")
+(gtk_accel_path "<Actions>/MouseMode/set-mouse-mode-timefx" "t")
+(gtk_accel_path "<Actions>/Editor/select-all-between-cursors" "u")
+(gtk_accel_path "<Actions>/Editor/insert-region" "i")
+(gtk_accel_path "<Actions>/Editor/invert-selection" "<%TERTIARY%>i")
(gtk_accel_path "<Actions>/Editor/addExistingAudioFiles" "<%SECONDARY%>i")
-; (gtk_accel_path "<Actions>/options/MeterFalloffSlow" "")
-(gtk_accel_path "<Actions>/options/ABAllPlugins" "<Control><Alt>p")
-; (gtk_accel_path "<Actions>/RegionList/rlHide" "")
-; (gtk_accel_path "<Actions>/Main/Metering" "")
-(gtk_accel_path "<Actions>/Editor/playhead-to-next-region-sync" "<%PRIMARY%>period")
-; (gtk_accel_path "<Actions>/Zoom/zoom-focus-playhead" "")
-; (gtk_accel_path "<Actions>/Editor/center-edit-cursor" "")
-; (gtk_accel_path "<Actions>/Editor/Monitoring" "")
-; (gtk_accel_path "<Actions>/processormenu/deactivate" "")
-; (gtk_accel_path "<Actions>/options/LatchedRecordEnable" "")
-; (gtk_accel_path "<Actions>/Transport/TogglePunchIn" "")
-; (gtk_accel_path "<Actions>/ShuttleActions/SetShuttleUnitsPercentage" "")
-(gtk_accel_path "<Actions>/Editor/edit-cursor-to-previous-region-start" "bracketleft")
-; (gtk_accel_path "<Actions>/Main/Close" "")
-; (gtk_accel_path "<Actions>/Main/New" "")
-(gtk_accel_path "<Actions>/Editor/nudge-next-backward" "<%PRIMARY%>KP_Subtract")
-; (gtk_accel_path "<Actions>/Editor/EditSelectRangeOptions" "")
-; (gtk_accel_path "<Actions>/Transport/ToggleTimeMaster" "")
-; (gtk_accel_path "<Actions>/Snap/snap-to-thirds" "")
-(gtk_accel_path "<Actions>/Editor/align-regions-start-relative" "<%TERTIARY%>a")
-; (gtk_accel_path "<Actions>/Main/Export" "")
-(gtk_accel_path "<Actions>/Editor/jump-forward-to-mark" "<%PRIMARY%>KP_Right")
-; (gtk_accel_path "<Actions>/Editor/Smpte30" "")
-; (gtk_accel_path "<Actions>/Editor/playhead-to-range-start" "")
-; (gtk_accel_path "<Actions>/Editor/Subframes" "")
-; (gtk_accel_path "<Actions>/Editor/Smpte2997drop" "")
-; (gtk_accel_path "<Actions>/Main/AddTrackBus" "")
-(gtk_accel_path "<Actions>/Editor/align-regions-end" "<%PRIMARY%><%LEVEL4%>a")
-; (gtk_accel_path "<Actions>/JACK/JACKDisconnect" "")
-; (gtk_accel_path "<Actions>/options/MeterFalloffFast" "")
-; (gtk_accel_path "<Actions>/options/FileDataFormatFloat" "")
-; (gtk_accel_path "<Actions>/Snap/snap-to-region-end" "")
-(gtk_accel_path "<Actions>/Editor/edit-cursor-to-next-region-sync" "semicolon")
-; (gtk_accel_path "<Actions>/options/StopRecordingOnXrun" "")
-; (gtk_accel_path "<Actions>/Editor/addExternalAudioToRegionList" "")
-; (gtk_accel_path "<Actions>/RegionList/SortDescending" "")
-; (gtk_accel_path "<Actions>/options/DoNotRunPluginsWhileRecording" "")
-; (gtk_accel_path "<Actions>/Editor/PullupNone" "")
-(gtk_accel_path "<Actions>/MouseMode/set-mouse-mode-range" "r")
-(gtk_accel_path "<Actions>/Editor/jump-backward-to-mark" "<%PRIMARY%>KP_Left")
-; (gtk_accel_path "<Actions>/Main/AudioFileFormatData" "")
-; (gtk_accel_path "<Actions>/options/MeterFalloffFastest" "")
-; (gtk_accel_path "<Actions>/Editor/audition-at-mouse" "")
-(gtk_accel_path "<Actions>/Transport/Forward" "<%PRIMARY%>rightarrow")
-; (gtk_accel_path "<Actions>/Snap/snap-to-smpte-seconds" "")
-; (gtk_accel_path "<Actions>/Snap/snap-to-smpte-frame" "")
-; (gtk_accel_path "<Actions>/Main/ExportSelection" "")
-; (gtk_accel_path "<Actions>/options/StopPluginsWithTransport" "")
+(gtk_accel_path "<Actions>/MouseMode/set-mouse-mode-object" "o")
+(gtk_accel_path "<Actions>/Common/ToggleOptionsEditor" "<%WINDOW%>o")
+(gtk_accel_path "<Actions>/Editor/set-playhead" "p")
+(gtk_accel_path "<Actions>/Editor/select-all-before-playhead" "<%PRIMARY%>p")
+
+;; MIDDLE ROW
+
+(gtk_accel_path "<Actions>/Editor/align-regions-sync-relative" "a")
+(gtk_accel_path "<Actions>/Editor/align-regions-start-relative" "<%PRIMARY%>a")
+(gtk_accel_path "<Actions>/Editor/align-regions-end" "<%SECONDARY%>a")
+(gtk_accel_path "<Actions>/Editor/align-regions-sync" "<%TERTIARY%>a")
+(gtk_accel_path "<Actions>/Editor/split-region" "s")
+(gtk_accel_path "<Actions>/Common/Save" "<%PRIMARY%>s")
+(gtk_accel_path "<Actions>/Editor/duplicate-region" "d")
+(gtk_accel_path "<Actions>/Editor/select-all-in-punch-range" "<%PRIMARY%>d")
+
+(gtk_accel_path "<Actions>/Editor/select-all" "<%PRIMARY%>a")
+(gtk_accel_path "<Actions>/Editor/select-all-after-playhead" "<%TERTIARY%><%PRIMARY%>p")
+(gtk_accel_path "<Actions>/Editor/select-all-after-edit-cursor" "<%TERTIARY%><%PRIMARY%>e")
+
+(gtk_accel_path "<Actions>/Editor/toggle-follow-playhead" "f")
+(gtk_accel_path "<Actions>/MouseMode/set-mouse-mode-gain" "g")
+(gtk_accel_path "<Actions>/Editor/play-selected-regions" "h")
+(gtk_accel_path "<Actions>/Editor/trim-front" "j")
+(gtk_accel_path "<Actions>/Editor/trim-back" "k")
+(gtk_accel_path "<Actions>/Common/ToggleKeyEditor" "<%WINDOW%>k")
+(gtk_accel_path "<Actions>/Transport/Loop" "l")
+(gtk_accel_path "<Actions>/Editor/select-all-in-loop-range" "<%PRIMARY%>l")
+(gtk_accel_path "<Actions>/Common/ToggleLocations" "<%WINDOW%>l")
+
+;; HOME ROW
+
+(gtk_accel_path "<Actions>/Editor/zoom-to-region" "z")
+(gtk_accel_path "<Actions>/Editor/undo" "<%PRIMARY%>z")
+(gtk_accel_path "<Actions>/Editor/toggle-zoom" "<%TERTIARY%>z")
+(gtk_accel_path "<Actions>/MouseMode/set-mouse-mode-zoom" "<%TERTIARY%>z")
+(gtk_accel_path "<Actions>/Editor/editor-cut" "<%PRIMARY%>x")
+(gtk_accel_path "<Actions>/Editor/editor-copy" "<%PRIMARY%>c")
+(gtk_accel_path "<Actions>/Common/ToggleColorManager" "<%WINDOW%>c")
+(gtk_accel_path "<Actions>/Editor/set-region-sync-position" "v")
(gtk_accel_path "<Actions>/Editor/editor-paste" "<%PRIMARY%>v")
-(gtk_accel_path "<Actions>/Editor/scroll-tracks-down" "Page_Down")
-; (gtk_accel_path "<Actions>/Snap/snap-to-smpte-minutes" "")
-; (gtk_accel_path "<Actions>/Main/FlushWastebasket" "")
+(gtk_accel_path "<Actions>/Editor/brush-at-mouse" "<%PRIMARY%>b")
+(gtk_accel_path "<Actions>/Common/ToggleBigClock" "<%WINDOW%>b")
(gtk_accel_path "<Actions>/Editor/normalize-region" "n")
-(gtk_accel_path "<Actions>/Editor/nudge-forward" "KP_Add")
-; (gtk_accel_path "<Actions>/RegionList/SortByRegionEndinFile" "")
-; (gtk_accel_path "<Actions>/Editor/ToggleMeasureVisibility" "")
-; (gtk_accel_path "<Actions>/Zoom/zoom-focus-center" "")
-(gtk_accel_path "<Actions>/Editor/nudge-backward" "KP_Subtract")
-; (gtk_accel_path "<Actions>/options/LatchedSolo" "")
-; (gtk_accel_path "<Actions>/options/MeterHoldOff" "")
-; (gtk_accel_path "<Actions>/options/OutputAutoConnectMaster" "")
-; (gtk_accel_path "<Actions>/JACK/JACKLatency64" "")
-(gtk_accel_path "<Actions>/Editor/undo" "<%PRIMARY%>z")
-(gtk_accel_path "<Actions>/Editor/insert-region" "i")
-; (gtk_accel_path "<Actions>/Editor/center-playhead" "")
-; (gtk_accel_path "<Actions>/Snap/snap-to-region-start" "")
-; (gtk_accel_path "<Actions>/Editor/View" "")
-; (gtk_accel_path "<Actions>/Editor/Layering" "")
-; (gtk_accel_path "<Actions>/JACK/JACKLatency4096" "")
-(gtk_accel_path "<Actions>/Editor/scroll-tracks-up" "Page_Up")
-(gtk_accel_path "<Actions>/Editor/set-edit-point" "e")
-; (gtk_accel_path "<Actions>/Editor/Smpte30drop" "")
-; (gtk_accel_path "<Actions>/Zoom/zoom-focus-edit" "")
-; (gtk_accel_path "<Actions>/Editor/EditCursorMovementOptions" "")
-; (gtk_accel_path "<Actions>/processormenu/activate_all" "")
-; (gtk_accel_path "<Actions>/Editor/addExternalAudioAsTapeTrack" "")
-; (gtk_accel_path "<Actions>/processormenu/paste" "")
-; (gtk_accel_path "<Actions>/Editor/Smpte25" "")
-; (gtk_accel_path "<Actions>/options/RegionEquivalentsOverlap" "")
-; (gtk_accel_path "<Actions>/Main/MeteringFallOffRate" "")
-; (gtk_accel_path "<Actions>/options/UseHardwareMonitoring" "")
-; (gtk_accel_path "<Actions>/Editor/Smpte24" "")
-; (gtk_accel_path "<Actions>/Snap/snap-to-mark" "")
-; (gtk_accel_path "<Actions>/Editor/CrossfadesShort" "")
-; (gtk_accel_path "<Actions>/Editor/Smpte5994" "")
-; (gtk_accel_path "<Actions>/JACK/JACKLatency8192" "")
+(gtk_accel_path "<Actions>/Editor/mute-unmute-region" "m")
+(gtk_accel_path "<Actions>/Common/goto-mixer" "<%WINDOW%>m")
+
+;; arrow keys, navigation etc.
+
+(gtk_accel_path "<Actions>/Editor/step-tracks-up" "uparrow")
+(gtk_accel_path "<Actions>/Transport/TransitionToRoll" "<%PRIMARY%>uparrow")
+(gtk_accel_path "<Actions>/Editor/select-prev-route" "<%SECONDARY%>uparrow")
+
(gtk_accel_path "<Actions>/Editor/step-tracks-down" "downarrow")
-; (gtk_accel_path "<Actions>/Editor/toggle-xfades-visible" "")
-(gtk_accel_path "<Actions>/Editor/extend-range-to-end-of-region" "rightanglebracket")
+(gtk_accel_path "<Actions>/Transport/TransitionToReverse" "<%PRIMARY%>downarrow")
+(gtk_accel_path "<Actions>/Editor/select-next-route" "<%SECONDARY%>downarrow")
+
(gtk_accel_path "<Actions>/Editor/scroll-backward" "leftarrow")
-(gtk_accel_path "<Actions>/Editor/start-range" "<%PRIMARY%>KP_Down")
-; (gtk_accel_path "<Actions>/ShuttleActions/SetShuttleUnitsSemitones" "")
-; (gtk_accel_path "<Actions>/JACK/JACKLatency128" "")
-; (gtk_accel_path "<Actions>/Snap/snap-to-beat" "")
-; (gtk_accel_path "<Actions>/Editor/RegionEditOps" "")
-; (gtk_accel_path "<Actions>/Editor/snap-magnetic" "")
-; (gtk_accel_path "<Actions>/Editor/playhead-to-range-end" "")
+(gtk_accel_path "<Actions>/Transport/Rewind" "<%PRIMARY%>leftarrow")
+(gtk_accel_path "<Actions>/Editor/scroll-playhead-backward" "<%TERTIARY%>leftarrow")
+
+(gtk_accel_path "<Actions>/Editor/scroll-forward" "rightarrow")
+(gtk_accel_path "<Actions>/Transport/Forward" "<%PRIMARY%>rightarrow")
(gtk_accel_path "<Actions>/Editor/scroll-playhead-forward" "<%TERTIARY%>rightarrow")
-(gtk_accel_path "<Actions>/Editor/align-regions-sync-relative" "a")
-; (gtk_accel_path "<Actions>/Editor/EditSelectRegionOptions" "")
-(gtk_accel_path "<Actions>/Editor/crop" "c")
-; (gtk_accel_path "<Actions>/processormenu/newsend" "")
-; (gtk_accel_path "<Actions>/Editor/ToggleGeneric MIDISurfaceSubMenu" "")
-; (gtk_accel_path "<Actions>/Editor/MeterFalloff" "")
-; (gtk_accel_path "<Actions>/RegionList/rlRemove" "")
+
+(gtk_accel_path "<Actions>/Editor/scroll-tracks-down" "Page_Down")
+(gtk_accel_path "<Actions>/Editor/scroll-tracks-up" "Page_Up")
(gtk_accel_path "<Actions>/Transport/GotoStart" "Home")
-(gtk_accel_path "<Actions>/Editor/scroll-playhead-backward" "<%TERTIARY%>leftarrow")
-(gtk_accel_path "<Actions>/Editor/split-region" "s")
-; (gtk_accel_path "<Actions>/Transport/ToggleAutoInput" "")
-; (gtk_accel_path "<Actions>/Snap/snap-to-thirtyseconds" "")
-; (gtk_accel_path "<Actions>/Snap/snap-to-minutes" "")
-(gtk_accel_path "<Actions>/Editor/align-regions-sync" "<%LEVEL4%>a")
+(gtk_accel_path "<Actions>/Transport/GotoEnd" "End")
+(gtk_accel_path "<Actions>/Editor/editor-delete" "Delete")
+
+(gtk_accel_path "<Actions>/Editor/playhead-to-edit" "Return")
+(gtk_accel_path "<Actions>/Editor/edit-to-playhead" "<%SECONDARY%>Return")
+(gtk_accel_path "<Actions>/Editor/remove-last-capture" "<%PRIMARY%>Delete")
+
+;; keypad
+
+(gtk_accel_path "<Actions>/Editor/nudge-backward" "KP_Subtract")
+(gtk_accel_path "<Actions>/Editor/nudge-next-backward" "<%PRIMARY%>KP_Subtract")
+
+(gtk_accel_path "<Actions>/Editor/jump-forward-to-mark" "<%PRIMARY%>KP_Right")
+(gtk_accel_path "<Actions>/Editor/jump-backward-to-mark" "<%PRIMARY%>KP_Left")
+
+(gtk_accel_path "<Actions>/Editor/nudge-forward" "KP_Add")
+(gtk_accel_path "<Actions>/Editor/nudge-next-forward" "<%PRIMARY%>KP_Add")
+
+(gtk_accel_path "<Actions>/Editor/start-range" "<%PRIMARY%>KP_Down")
+
+(gtk_accel_path "<Actions>/Editor/finish-range" "<%PRIMARY%>KP_Up")
+(gtk_accel_path "<Actions>/Editor/finish-add-range" "<%TERTIARY%><%PRIMARY%>KP_Up")
+
+(gtk_accel_path "<Actions>/Editor/add-location-from-playhead" "KP_Enter")
+(gtk_accel_path "<Actions>/Transport/focus-on-clock" "KP_Divide")
+
+(gtk_accel_path "<Actions>/Transport/GotoZero" "KP_0")
+(gtk_accel_path "<Actions>/Editor/goto-mark-1" "KP_1")
+(gtk_accel_path "<Actions>/Editor/goto-mark-2" "KP_2")
+(gtk_accel_path "<Actions>/Editor/goto-mark-3" "KP_3")
+(gtk_accel_path "<Actions>/Editor/goto-mark-4" "KP_4")
+(gtk_accel_path "<Actions>/Editor/goto-mark-5" "KP_5")
+(gtk_accel_path "<Actions>/Editor/goto-mark-6" "KP_6")
+(gtk_accel_path "<Actions>/Editor/goto-mark-7" "KP_7")
+(gtk_accel_path "<Actions>/Editor/goto-mark-8" "KP_8")
+(gtk_accel_path "<Actions>/Editor/goto-mark-9" "KP_9")
+
+;; F-N keys
+
+(gtk_accel_path "<Actions>/Editor/edit-cursor-to-range-start" "F1")
+(gtk_accel_path "<Actions>/Editor/edit-cursor-to-range-end" "F2")
+(gtk_accel_path "<Actions>/Editor/crop" "F3")
+(gtk_accel_path "<Actions>/Editor/separate" "F4")
+(gtk_accel_path "<Actions>/Editor/pitch-shift-region" "F5")
+(gtk_accel_path "<Actions>/Editor/select-range-between-cursors" "F6")
+(gtk_accel_path "<Actions>/Common/ToggleMaximalEditor" "F11")
+
+;; numbers
+
+(gtk_accel_path "<Actions>/Editor/toggle-edit-mode" "1")
+(gtk_accel_path "<Actions>/Editor/cycle-snap-mode" "2")
+(gtk_accel_path "<Actions>/Editor/cycle-snap-choice" "3")
+(gtk_accel_path "<Actions>/Transport/ToggleAutoReturn" "4")
+(gtk_accel_path "<Actions>/Transport/ToggleClick" "5")
+
+;;
+;; unbound actions
+;;
+
+; (gtk_accel_path "<Actions>/RegionList/RegionListSort" "")
; (gtk_accel_path "<Actions>/Main/Windows" "")
; (gtk_accel_path "<Actions>/Main/CleanupUnused" "")
-; (gtk_accel_path "<Actions>/processormenu/deselectall" "")
+; (gtk_accel_path "<Actions>/redirectmenu/deselectall" "")
; (gtk_accel_path "<Actions>/options/SoloViaBus" "")
-(gtk_accel_path "<Actions>/MouseMode/set-mouse-mode-zoom" "<Shift>z")
; (gtk_accel_path "<Actions>/RegionList/rlAudition" "")
-(gtk_accel_path "<Actions>/Editor/set-region-sync-position" "v")
; (gtk_accel_path "<Actions>/Editor/PullupPlus4Plus1" "")
; (gtk_accel_path "<Actions>/Snap/snap-to-region-boundary" "")
; (gtk_accel_path "<Actions>/JACK/JACK" "")
-(gtk_accel_path "<Actions>/Editor/editor-cut" "<%PRIMARY%>x")
; (gtk_accel_path "<Actions>/RegionList/SortAscending" "")
; (gtk_accel_path "<Actions>/Main/Help" "")
; (gtk_accel_path "<Actions>/options/UseExternalMonitoring" "")
; (gtk_accel_path "<Actions>/Editor/Smpte23976" "")
-(gtk_accel_path "<Actions>/Common/goto-editor" "<%WINDOW%>e")
-(gtk_accel_path "<Actions>/Editor/select-all" "<%PRIMARY%>a")
-(gtk_accel_path "<Actions>/Editor/nudge-next-forward" "<%PRIMARY%>KP_Add")
; (gtk_accel_path "<Actions>/options/ShowSoloMutes" "")
; (gtk_accel_path "<Actions>/Snap/snap-to-eighths" "")
-(gtk_accel_path "<Actions>/Editor/select-all-after-playhead" "<%TERTIARY%><%PRIMARY%>p")
-(gtk_accel_path "<Actions>/Common/ToggleMaximalEditor" "F11")
; (gtk_accel_path "<Actions>/RegionList/SortBySourceFileLength" "")
; (gtk_accel_path "<Actions>/Editor/Timecode" "")
; (gtk_accel_path "<Actions>/Transport/PlaySelection" "")
; (gtk_accel_path "<Actions>/Editor/PullupMinus4Minus1" "")
-(gtk_accel_path "<Actions>/Editor/select-all-after-edit-cursor" "<%TERTIARY%><%PRIMARY%>e")
; (gtk_accel_path "<Actions>/RegionList/SortBySourceFileName" "")
-(gtk_accel_path "<Actions>/Editor/finish-range" "<%PRIMARY%>KP_Up")
-(gtk_accel_path "<Actions>/Transport/Loop" "l")
; (gtk_accel_path "<Actions>/Editor/CrossfadesFull" "")
-(gtk_accel_path "<Actions>/Editor/finish-add-range" "<%TERTIARY%><%PRIMARY%>KP_Up")
; (gtk_accel_path "<Actions>/Transport/ToggleClick" "")
; (gtk_accel_path "<Actions>/options/SendMTC" "")
; (gtk_accel_path "<Actions>/Transport/TogglePunchOut" "")
-(gtk_accel_path "<Actions>/Editor/select-all-in-loop-range" "<%PRIMARY%>l")
-(gtk_accel_path "<Actions>/Editor/show-editor-mixer" "<%TERTIARY%>e")
-(gtk_accel_path "<Actions>/Editor/show-editor-list" "<Shift>l")
; (gtk_accel_path "<Actions>/options/SoloInPlace" "")
; (gtk_accel_path "<Actions>/Main/Options" "")
; (gtk_accel_path "<Actions>/options/MeterFalloffMedium" "")
-(gtk_accel_path "<Actions>/Editor/toggle-follow-playhead" "f")
; (gtk_accel_path "<Actions>/Main/SaveTemplate" "")
-(gtk_accel_path "<Actions>/Transport/TransitionToRoll" "<%PRIMARY%>uparrow")
; (gtk_accel_path "<Actions>/RegionList/SortByRegionStartinFile" "")
; (gtk_accel_path "<Actions>/options/GainReduceFastTransport" "")
; (gtk_accel_path "<Actions>/Common/ToggleInspector" "")
; (gtk_accel_path "<Actions>/Transport/ToggleAutoPlay" "")
; (gtk_accel_path "<Actions>/Editor/playhead-to-next-region-sync" "")
-(gtk_accel_path "<Actions>/Editor/edit-to-playhead" "<%SECONDARY%>Return")
; (gtk_accel_path "<Actions>/Editor/LayerMoveAddHigher" "")
; (gtk_accel_path "<Actions>/Editor/Smpte60" "")
; (gtk_accel_path "<Actions>/Main/Open" "")
-(gtk_accel_path "<Actions>/Editor/scroll-forward" "rightarrow")
; (gtk_accel_path "<Actions>/Zoom/zoom-focus-left" "")
; (gtk_accel_path "<Actions>/Main/TransportOptions" "")
; (gtk_accel_path "<Actions>/Main/ControlSurfaces" "")
@@ -195,66 +228,41 @@
; (gtk_accel_path "<Actions>/Transport/ToggleAutoReturn" "")
; (gtk_accel_path "<Actions>/Editor/Smpte2997" "")
; (gtk_accel_path "<Actions>/Editor/ToggleWaveformVisibility" "")
-(gtk_accel_path "<Actions>/Editor/redo" "<%PRIMARY%>r")
-; (gtk_accel_path "<Actions>/Editor/addExternalAudioAsRegion" "")
; (gtk_accel_path "<Actions>/Main/ExportSession" "")
; (gtk_accel_path "<Actions>/options/InputAutoConnectPhysical" "")
; (gtk_accel_path "<Actions>/Snap/snap-to-edit-cursor" "")
-(gtk_accel_path "<Actions>/Editor/temporal-zoom-in" "minus")
; (gtk_accel_path "<Actions>/JACK/Latency" "")
-(gtk_accel_path "<Actions>/Editor/edit-cursor-to-range-end" "F2")
-; (gtk_accel_path "<Actions>/processormenu/rename" "")
+; (gtk_accel_path "<Actions>/redirectmenu/rename" "")
; (gtk_accel_path "<Actions>/RegionList/rlShowAuto" "")
-(gtk_accel_path "<Actions>/Editor/select-all-before-playhead" "<%PRIMARY%>p")
-; (gtk_accel_path "<Actions>/Editor/addExistingAudioFiles" "")
; (gtk_accel_path "<Actions>/Main/Session" "")
-(gtk_accel_path "<Actions>/Editor/edit-cursor-to-range-start" "F1")
; (gtk_accel_path "<Actions>/Main/AudioFileFormat" "")
; (gtk_accel_path "<Actions>/Transport/Transport" "")
-(gtk_accel_path "<Actions>/MouseMode/set-mouse-mode-timefx" "t")
-(gtk_accel_path "<Actions>/MouseMode/set-mouse-mode-note" "n")
; (gtk_accel_path "<Actions>/RegionList/SortByRegionName" "")
; (gtk_accel_path "<Actions>/Main/KeyMouse Actions" "")
-(gtk_accel_path "<Actions>/MouseMode/set-mouse-mode-gain" "g")
; (gtk_accel_path "<Actions>/Snap/snap-to-frame" "")
; (gtk_accel_path "<Actions>/Editor/SnapTo" "")
-(gtk_accel_path "<Actions>/Transport/TransitionToReverse" "<%PRIMARY%>downarrow")
; (gtk_accel_path "<Actions>/Editor/Crossfades" "")
; (gtk_accel_path "<Actions>/Editor/PullupPlus4" "")
-(gtk_accel_path "<Actions>/Editor/add-location-from-playhead" "KP_Enter")
-(gtk_accel_path "<Actions>/Editor/edit-cursor-to-previous-region-end" "<%PRIMARY%>bracketleft")
; (gtk_accel_path "<Actions>/Main/MeteringHoldTime" "")
; (gtk_accel_path "<Actions>/Editor/PullupPlus1" "")
; (gtk_accel_path "<Actions>/Editor/Smpte24976" "")
; (gtk_accel_path "<Actions>/options/FileDataFormat24bit" "")
; (gtk_accel_path "<Actions>/Editor/SnapMode" "")
-(gtk_accel_path "<Actions>/Common/ToggleOptionsEditor" "<%WINDOW%>o")
; (gtk_accel_path "<Actions>/Editor/PullupMinus4" "")
-(gtk_accel_path "<Actions>/Common/goto-mixer" "<%WINDOW%>m")
-; (gtk_accel_path "<Actions>/Editor/addExternalAudioToTrack" "")
; (gtk_accel_path "<Actions>/RegionList/SortBySourceFileCreationDate" "")
-; (gtk_accel_path "<Actions>/processormenu/activate" "")
-(gtk_accel_path "<Actions>/Editor/extend-range-to-start-of-region" "leftanglebracket")
+; (gtk_accel_path "<Actions>/redirectmenu/activate" "")
; (gtk_accel_path "<Actions>/Editor/PullupMinus1" "")
; (gtk_accel_path "<Actions>/Editor/snap-normal" "")
-(gtk_accel_path "<Actions>/Common/ToggleBigClock" "<%WINDOW%>b")
-(gtk_accel_path "<Actions>/Common/ToggleKeyEditor" "<%WINDOW%>k")
; (gtk_accel_path "<Actions>/Snap/snap-to-asixteenthbeat" "")
-(gtk_accel_path "<Actions>/Editor/select-all-in-punch-range" "<%PRIMARY%>d")
-; (gtk_accel_path "<Actions>/processormenu/edit" "")
-(gtk_accel_path "<Actions>/Editor/duplicate-region" "d")
+; (gtk_accel_path "<Actions>/redirectmenu/edit" "")
; (gtk_accel_path "<Actions>/JACK/JACKLatency2048" "")
; (gtk_accel_path "<Actions>/Editor/ToggleWaveformsWhileRecording" "")
; (gtk_accel_path "<Actions>/Zoom/zoom-focus-right" "")
-(gtk_accel_path "<Actions>/Editor/remove-last-capture" "<%PRIMARY%>Delete")
; (gtk_accel_path "<Actions>/options/FileHeaderFormatWAVE" "")
-(gtk_accel_path "<Actions>/Transport/GotoZero" "KP_0")
-(gtk_accel_path "<Actions>/Transport/GotoEnd" "End")
-; (gtk_accel_path "<Actions>/processormenu/cut" "")
-; (gtk_accel_path "<Actions>/processormenu/newinsert" "")
+; (gtk_accel_path "<Actions>/redirectmenu/cut" "")
+; (gtk_accel_path "<Actions>/redirectmenu/newinsert" "")
; (gtk_accel_path "<Actions>/options/UseMMC" "")
; (gtk_accel_path "<Actions>/options/MeterFalloffOff" "")
-(gtk_accel_path "<Actions>/MouseMode/set-mouse-mode-object" "o")
; (gtk_accel_path "<Actions>/Editor/PullupMinus4Plus1" "")
; (gtk_accel_path "<Actions>/Editor/MeterHold" "")
; (gtk_accel_path "<Actions>/Snap/snap-to-cd-frame" "")
@@ -262,85 +270,138 @@
; (gtk_accel_path "<Actions>/Main/Cleanup" "")
; (gtk_accel_path "<Actions>/Main/Snapshot" "")
; (gtk_accel_path "<Actions>/Transport/ToggleVideoSync" "")
-(gtk_accel_path "<Actions>/Transport/ToggleRoll" "space")
; (gtk_accel_path "<Actions>/RegionList/SortBySourceFilesystem" "")
-(gtk_accel_path "<Actions>/Common/ToggleColorManager" "<%WINDOW%>c")
; (gtk_accel_path "<Actions>/Common/About" "")
; (gtk_accel_path "<Actions>/JACK/JACKLatency32" "")
-(gtk_accel_path "<Actions>/Editor/playhead-to-edit" "Return")
; (gtk_accel_path "<Actions>/options/FileHeaderFormatWAVE64" "")
-(gtk_accel_path "<Actions>/Editor/brush-at-mouse" "<%PRIMARY%>b")
; (gtk_accel_path "<Actions>/RegionList/rlShowAll" "")
-(gtk_accel_path "<Actions>/Transport/Rewind" "<%PRIMARY%>leftarrow")
; (gtk_accel_path "<Actions>/RegionList/SortByRegionTimestamp" "")
; (gtk_accel_path "<Actions>/options/VerifyRemoveLastCapture" "")
; (gtk_accel_path "<Actions>/options/OutputAutoConnectPhysical" "")
-(gtk_accel_path "<Actions>/Editor/step-tracks-up" "uparrow")
-(gtk_accel_path "<Actions>/Editor/playhead-to-next-region-boundary" "period")
; (gtk_accel_path "<Actions>/options/SendMMC" "")
; (gtk_accel_path "<Actions>/Editor/toggle-auto-xfades" "")
; (gtk_accel_path "<Actions>/Main/AudioFileFormatHeader" "")
; (gtk_accel_path "<Actions>/options/MeterHoldShort" "")
; (gtk_accel_path "<Actions>/options/MeterHoldMedium" "")
-(gtk_accel_path "<Actions>/Editor/select-all-before-edit-cursor" "<%PRIMARY%>e")
; (gtk_accel_path "<Actions>/Editor/Subframes80" "")
; (gtk_accel_path "<Actions>/options/FileHeaderFormatCAF" "")
-(gtk_accel_path "<Actions>/Common/ToggleLocations" "<%WINDOW%>l")
; (gtk_accel_path "<Actions>/Editor/ToggleGeneric MIDISurface" "")
-(gtk_accel_path "<Actions>/Editor/editor-delete" "Delete")
; (gtk_accel_path "<Actions>/JACK/JACKLatency256" "")
-(gtk_accel_path "<Actions>/Editor/select-all-between-cursors" "u")
; (gtk_accel_path "<Actions>/Editor/LayerAddHigher" "")
; (gtk_accel_path "<Actions>/Editor/Solo" "")
; (gtk_accel_path "<Actions>/JACK/JACKLatency1024" "")
; (gtk_accel_path "<Actions>/Main/ExportRangeMarkers" "")
-(gtk_accel_path "<Actions>/Editor/set-playhead" "p")
; (gtk_accel_path "<Actions>/Editor/toggle-xfades-active" "")
; (gtk_accel_path "<Actions>/Snap/snap-to-bar" "")
; (gtk_accel_path "<Actions>/Editor/LayerLaterHigher" "")
-; (gtk_accel_path "<Actions>/processormenu/selectall" "")
-(gtk_accel_path "<Actions>/Editor/editor-copy" "<%PRIMARY%>c")
+; (gtk_accel_path "<Actions>/redirectmenu/selectall" "")
; (gtk_accel_path "<Actions>/Snap/snap-to-quarters" "")
-(gtk_accel_path "<Actions>/Editor/temporal-zoom-out" "equal")
; (gtk_accel_path "<Actions>/options/UseSoftwareMonitoring" "")
; (gtk_accel_path "<Actions>/Editor/Subframes100" "")
-(gtk_accel_path "<Actions>/Editor/mute-unmute-region" "m")
-; (gtk_accel_path "<Actions>/options/OutputAutoConnectManual" "")
-; (gtk_accel_path "<Actions>/Snap/snap-to-region-sync" "")
-(gtk_accel_path "<Actions>/Editor/edit-cursor-to-previous-region-sync" "apostrophe")
-; (gtk_accel_path "<Actions>/processormenu/clear" "")
+
+
+; (gtk_accel_path "<Actions>/redirectmenu/clear" "")
; (gtk_accel_path "<Actions>/Editor/ToggleGeneric MIDISurfaceFeedback" "")
; (gtk_accel_path "<Actions>/Editor/PullupPlus4Minus1" "")
; (gtk_accel_path "<Actions>/JACK/JACKLatency512" "")
; (gtk_accel_path "<Actions>/Main/Recent" "")
-; (gtk_accel_path "<Actions>/processormenu/newplugin" "")
+; (gtk_accel_path "<Actions>/redirectmenu/newplugin" "")
; (gtk_accel_path "<Actions>/options/InputAutoConnectManual" "")
; (gtk_accel_path "<Actions>/options/MeterHoldLong" "")
; (gtk_accel_path "<Actions>/Snap/snap-to-seconds" "")
-(gtk_accel_path "<Actions>/Editor/cycle-edit-point" "grave")
-(gtk_accel_path "<Actions>/Editor/toggle-edit-mode" "1")
-(gtk_accel_path "<Actions>/Editor/cycle-snap-mode" "2")
-(gtk_accel_path "<Actions>/Editor/cycle-snap-choice" "3")
-(gtk_accel_path "<Actions>/Editor/set-fade-in-length" "slash")
-(gtk_accel_path "<Actions>/Editor/set-fade-out-length" "backslash")
-(gtk_accel_path "<Actions>/Editor/trim-from-start" "<%TERTIARY%>braceleft")
-(gtk_accel_path "<Actions>/Editor/trim-to-end" "<%TERTIARY%>braceright")
-;(gtk_accel_path "<Actions>/Editor/trim-front" "a")
-;(gtk_accel_path "<Actions>/Editor/trim-back" "s")
-(gtk_accel_path "<Actions>/Editor/goto-mark-1" "KP_1")
-(gtk_accel_path "<Actions>/Editor/goto-mark-2" "KP_2")
-(gtk_accel_path "<Actions>/Editor/goto-mark-3" "KP_3")
-(gtk_accel_path "<Actions>/Editor/goto-mark-4" "KP_4")
-(gtk_accel_path "<Actions>/Editor/goto-mark-5" "KP_5")
-(gtk_accel_path "<Actions>/Editor/goto-mark-6" "KP_6")
-(gtk_accel_path "<Actions>/Editor/goto-mark-7" "KP_7")
-(gtk_accel_path "<Actions>/Editor/goto-mark-8" "KP_8")
-(gtk_accel_path "<Actions>/Editor/goto-mark-9" "KP_9")
-(gtk_accel_path "<Actions>/Transport/ToggleClick" "5")
-(gtk_accel_path "<Actions>/Transport/ToggleAutoReturn" "4")
-(gtk_accel_path "<Actions>/Transport/focus-on-clock" "KP_Divide")
-(gtk_accel_path "<Actions>/Editor/set-loop-from-edit-range" "bracketright")
-(gtk_accel_path "<Actions>/Editor/set-punch-from-edit-range" "bracketleft")
-(gtk_accel_path "<Actions>/Editor/set-loop-from-region" "<%PRIMARY%><%SECONDARY%>bracketright")
-(gtk_accel_path "<Actions>/Editor/toggle-zoom" "<%TERTIARY%>z")
-(gtk_accel_path "<Actions>/Editor/zoom-to-region" "z")
+; (gtk_accel_path "<Actions>/options/OutputAutoConnectManual" "")
+; (gtk_accel_path "<Actions>/Snap/snap-to-region-sync" "")
+; (gtk_accel_path "<Actions>/Editor/Pullup" "")
+; (gtk_accel_path "<Actions>/Editor/zoom-to-session" "")
+; (gtk_accel_path "<Actions>/JACK/JACKReconnect" "")
+; (gtk_accel_path "<Actions>/Editor/Autoconnect" "")
+; (gtk_accel_path "<Actions>/Editor/Edit" "")
+; (gtk_accel_path "<Actions>/redirectmenu/copy" "")
+; (gtk_accel_path "<Actions>/options/MeterFalloffFaster" "")
+; (gtk_accel_path "<Actions>/RegionList/SortByRegionLength" "")
+; (gtk_accel_path "<Actions>/options/MeterFalloffSlowest" "")
+; (gtk_accel_path "<Actions>/Editor/playhead-to-previous-region-sync" "")
+; (gtk_accel_path "<Actions>/redirectmenu/deactivate_all" "")
+; (gtk_accel_path "<Actions>/RegionList/SortByRegionPosition" "")
+; (gtk_accel_path "<Actions>/Editor/ZoomFocus" "")
+; (gtk_accel_path "<Actions>/options/MeterFalloffSlow" "")
+; (gtk_accel_path "<Actions>/RegionList/rlHide" "")
+; (gtk_accel_path "<Actions>/Main/Metering" "")
+; (gtk_accel_path "<Actions>/Zoom/zoom-focus-playhead" "")
+; (gtk_accel_path "<Actions>/Editor/center-edit-cursor" "")
+; (gtk_accel_path "<Actions>/Editor/Monitoring" "")
+; (gtk_accel_path "<Actions>/redirectmenu/deactivate" "")
+; (gtk_accel_path "<Actions>/options/LatchedRecordEnable" "")
+; (gtk_accel_path "<Actions>/Transport/TogglePunchIn" "")
+; (gtk_accel_path "<Actions>/ShuttleActions/SetShuttleUnitsPercentage" "")
+; (gtk_accel_path "<Actions>/Main/Close" "")
+; (gtk_accel_path "<Actions>/Main/New" "")
+; (gtk_accel_path "<Actions>/Editor/EditSelectRangeOptions" "")
+; (gtk_accel_path "<Actions>/Transport/ToggleTimeMaster" "")
+; (gtk_accel_path "<Actions>/Snap/snap-to-thirds" "")
+; (gtk_accel_path "<Actions>/Main/Export" "")
+; (gtk_accel_path "<Actions>/Editor/Smpte30" "")
+; (gtk_accel_path "<Actions>/Editor/playhead-to-range-start" "")
+; (gtk_accel_path "<Actions>/Editor/Subframes" "")
+; (gtk_accel_path "<Actions>/Editor/Smpte2997drop" "")
+; (gtk_accel_path "<Actions>/Main/AddTrackBus" "")
+; (gtk_accel_path "<Actions>/JACK/JACKDisconnect" "")
+; (gtk_accel_path "<Actions>/options/MeterFalloffFast" "")
+; (gtk_accel_path "<Actions>/options/FileDataFormatFloat" "")
+; (gtk_accel_path "<Actions>/Snap/snap-to-region-end" "")
+; (gtk_accel_path "<Actions>/options/StopRecordingOnXrun" "")
+; (gtk_accel_path "<Actions>/RegionList/SortDescending" "")
+; (gtk_accel_path "<Actions>/options/DoNotRunPluginsWhileRecording" "")
+; (gtk_accel_path "<Actions>/Editor/PullupNone" "")
+; (gtk_accel_path "<Actions>/Main/AudioFileFormatData" "")
+; (gtk_accel_path "<Actions>/options/MeterFalloffFastest" "")
+; (gtk_accel_path "<Actions>/Editor/audition-at-mouse" "")
+; (gtk_accel_path "<Actions>/Snap/snap-to-smpte-seconds" "")
+; (gtk_accel_path "<Actions>/Snap/snap-to-smpte-frame" "")
+; (gtk_accel_path "<Actions>/Main/ExportSelection" "")
+; (gtk_accel_path "<Actions>/options/StopPluginsWithTransport" "")
+; (gtk_accel_path "<Actions>/Snap/snap-to-smpte-minutes" "")
+; (gtk_accel_path "<Actions>/Main/FlushWastebasket" "")
+; (gtk_accel_path "<Actions>/RegionList/SortByRegionEndinFile" "")
+; (gtk_accel_path "<Actions>/Editor/ToggleMeasureVisibility" "")
+; (gtk_accel_path "<Actions>/Zoom/zoom-focus-center" "")
+; (gtk_accel_path "<Actions>/options/LatchedSolo" "")
+; (gtk_accel_path "<Actions>/options/MeterHoldOff" "")
+; (gtk_accel_path "<Actions>/options/OutputAutoConnectMaster" "")
+; (gtk_accel_path "<Actions>/JACK/JACKLatency64" "")
+; (gtk_accel_path "<Actions>/Editor/center-playhead" "")
+; (gtk_accel_path "<Actions>/Snap/snap-to-region-start" "")
+; (gtk_accel_path "<Actions>/Editor/View" "")
+; (gtk_accel_path "<Actions>/Editor/Layering" "")
+; (gtk_accel_path "<Actions>/JACK/JACKLatency4096" "")
+; (gtk_accel_path "<Actions>/Editor/Smpte30drop" "")
+; (gtk_accel_path "<Actions>/Zoom/zoom-focus-edit" "")
+; (gtk_accel_path "<Actions>/Editor/EditCursorMovementOptions" "")
+; (gtk_accel_path "<Actions>/redirectmenu/activate_all" "")
+; (gtk_accel_path "<Actions>/redirectmenu/paste" "")
+; (gtk_accel_path "<Actions>/Editor/Smpte25" "")
+; (gtk_accel_path "<Actions>/options/RegionEquivalentsOverlap" "")
+; (gtk_accel_path "<Actions>/Main/MeteringFallOffRate" "")
+; (gtk_accel_path "<Actions>/options/UseHardwareMonitoring" "")
+; (gtk_accel_path "<Actions>/Editor/Smpte24" "")
+; (gtk_accel_path "<Actions>/Snap/snap-to-mark" "")
+; (gtk_accel_path "<Actions>/Editor/CrossfadesShort" "")
+; (gtk_accel_path "<Actions>/Editor/Smpte5994" "")
+; (gtk_accel_path "<Actions>/JACK/JACKLatency8192" "")
+; (gtk_accel_path "<Actions>/Editor/toggle-xfades-visible" "")
+; (gtk_accel_path "<Actions>/ShuttleActions/SetShuttleUnitsSemitones" "")
+; (gtk_accel_path "<Actions>/JACK/JACKLatency128" "")
+; (gtk_accel_path "<Actions>/Snap/snap-to-beat" "")
+; (gtk_accel_path "<Actions>/Editor/RegionEditOps" "")
+; (gtk_accel_path "<Actions>/Editor/snap-magnetic" "")
+; (gtk_accel_path "<Actions>/Editor/playhead-to-range-end" "")
+; (gtk_accel_path "<Actions>/Editor/EditSelectRegionOptions" "")
+; (gtk_accel_path "<Actions>/redirectmenu/newsend" "")
+; (gtk_accel_path "<Actions>/Editor/ToggleGeneric MIDISurfaceSubMenu" "")
+; (gtk_accel_path "<Actions>/Editor/MeterFalloff" "")
+; (gtk_accel_path "<Actions>/RegionList/rlRemove" "")
+; (gtk_accel_path "<Actions>/Transport/ToggleAutoInput" "")
+; (gtk_accel_path "<Actions>/Snap/snap-to-thirtyseconds" "")
+; (gtk_accel_path "<Actions>/Snap/snap-to-minutes" "")
+; (gtk_accel_path "<Actions>/RegionList/RegionListSort" "")
+; (gtk_accel_path "<Actions>/Editor/edit-cursor-to-previous-region-start" "")
diff --git a/gtk2_ardour/ardour.menus b/gtk2_ardour/ardour.menus
index 11e75137dd..1964fb8193 100644
--- a/gtk2_ardour/ardour.menus
+++ b/gtk2_ardour/ardour.menus
@@ -87,6 +87,7 @@
<menuitem action='set-loop-from-edit-range'/>
<menuitem action='set-loop-from-region'/>
<menuitem action='set-punch-from-edit-range'/>
+ <menuitem action='set-punch-from-region'/>
</menu>
<menu name='Edit' action='Edit'>
<menuitem action='undo'/>
@@ -429,7 +430,9 @@
<menuitem action='ShowTrackMeters'/>
<menuitem action='OnlyCopyImportedFiles'/>
<menuitem action='ShowTrackMeters'/>
+ <menuitem action='DefaultNarrowMS'/>
<menuitem action='link-region-and-track-selection'/>
+
<separator/>
</menu>
<menu name='Help' action='Help'>
diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc
index d0261849f6..70dac73a59 100644
--- a/gtk2_ardour/ardour_ui.cc
+++ b/gtk2_ardour/ardour_ui.cc
@@ -741,32 +741,39 @@ ARDOUR_UI::check_memory_locking ()
void
ARDOUR_UI::finish()
{
- if (session && session->dirty()) {
- switch (ask_about_saving_session(_("quit"))) {
- case -1:
- return;
- break;
- case 1:
- /* use the default name */
- if (save_state_canfail ("")) {
- /* failed - don't quit */
- MessageDialog msg (*editor,
- _("\
+ if (session) {
+
+ if (session->transport_rolling()) {
+ session->request_stop ();
+ usleep (2500000);
+ }
+
+ if (session->dirty()) {
+ switch (ask_about_saving_session(_("quit"))) {
+ case -1:
+ return;
+ break;
+ case 1:
+ /* use the default name */
+ if (save_state_canfail ("")) {
+ /* failed - don't quit */
+ MessageDialog msg (*editor,
+ _("\
Ardour was unable to save your session.\n\n\
If you still wish to quit, please use the\n\n\
\"Just quit\" option."));
- msg.run ();
- return;
+ msg.run ();
+ return;
+ }
+ break;
+ case 0:
+ break;
}
- break;
- case 0:
- break;
}
- }
-
- if (session) {
+
session->set_deletion_in_progress ();
}
+
engine->stop (true);
Config->save_state();
ARDOUR_UI::config()->save_state();
@@ -1074,8 +1081,7 @@ ARDOUR_UI::build_session_selector ()
recent_session_display.set_model (recent_session_model);
recent_session_display.append_column (_("Recent Sessions"), recent_session_columns.visible_name);
recent_session_display.set_headers_visible (false);
- recent_session_display.get_selection()->set_mode (SELECTION_SINGLE);
-
+ recent_session_display.get_selection()->set_mode (SELECTION_BROWSE);
recent_session_display.signal_row_activated().connect (mem_fun (*this, &ARDOUR_UI::recent_session_row_activated));
scroller->add (recent_session_display);
@@ -1099,37 +1105,55 @@ ARDOUR_UI::recent_session_row_activated (const TreePath& path, TreeViewColumn* c
void
ARDOUR_UI::open_recent_session ()
{
- /* popup selector window */
+ bool can_return = (session != 0);
if (session_selector_window == 0) {
build_session_selector ();
}
-
+
redisplay_recent_sessions ();
- ResponseType r = (ResponseType) session_selector_window->run ();
+ while (true) {
+
+ session_selector_window->set_position (WIN_POS_MOUSE);
- session_selector_window->hide();
+ ResponseType r = (ResponseType) session_selector_window->run ();
+
+ switch (r) {
+ case RESPONSE_ACCEPT:
+ break;
+ default:
+ if (can_return) {
+ session_selector_window->hide();
+ return;
+ } else {
+ exit (1);
+ }
+ }
- switch (r) {
- case RESPONSE_ACCEPT:
- break;
- default:
- return;
- }
+ if (recent_session_display.get_selection()->count_selected_rows() == 0) {
+ continue;
+ }
+
+ session_selector_window->hide();
- Gtk::TreeModel::iterator i = recent_session_display.get_selection()->get_selected();
+ Gtk::TreeModel::iterator i = recent_session_display.get_selection()->get_selected();
+
+ if (i == recent_session_model->children().end()) {
+ return;
+ }
+
+ Glib::ustring path = (*i)[recent_session_columns.fullpath];
+ Glib::ustring state = (*i)[recent_session_columns.visible_name];
+
+ _session_is_new = false;
+
+ if (load_session (path, state) == 0) {
+ break;
+ }
- if (i == recent_session_model->children().end()) {
- return;
+ can_return = false;
}
-
- Glib::ustring path = (*i)[recent_session_columns.fullpath];
- Glib::ustring state = (*i)[recent_session_columns.visible_name];
-
- _session_is_new = false;
-
- load_session (path, state);
}
bool
@@ -2239,9 +2263,9 @@ ARDOUR_UI::get_session_parameters (Glib::ustring predetermined_path, bool have_e
goto try_again;
}
- switch (new_session_dialog->get_current_page()) {
- case 1: /* recent session selector */
- case 2: /* audio engine control */
+ switch (new_session_dialog->which_page()) {
+ case NewSessionDialog::OpenPage:
+ case NewSessionDialog::EnginePage:
if (session_name[0] == '/' ||
(session_name.length() > 2 && session_name[0] == '.' && session_name[1] == '/') ||
@@ -2262,7 +2286,9 @@ ARDOUR_UI::get_session_parameters (Glib::ustring predetermined_path, bool have_e
}
break;
- case 0: /* nominally the "new" session creator, but could be in use for an old session */
+ case NewSessionDialog::NewPage: /* nominally the "new" session creator, but could be in use for an old session */
+
+ cerr << "on page zero\n";
if (new_session_dialog->get_current_page() == 0 && ARDOUR_COMMAND_LINE::session_name.empty()) {
should_be_new = true;
@@ -2525,7 +2551,7 @@ ARDOUR_UI::load_session (const Glib::ustring& path, const Glib::ustring& snap_na
}
catch (...) {
- cerr << "Caught something\n";
+
MessageDialog msg (string_compose(_("Session \"%1 (snapshot %2)\" did not load successfully"), path, snap_name),
true,
Gtk::MESSAGE_INFO,
@@ -3027,7 +3053,7 @@ ARDOUR_UI::pending_state_dialog ()
{
HBox* hbox = new HBox();
Image* image = new Image (Stock::DIALOG_QUESTION, ICON_SIZE_DIALOG);
- ArdourDialog dialog (_("Crash recovery"), true);
+ ArdourDialog dialog (_("Crash Recovery"), true);
Label message (_("\
This session appears to have been in\n\
middle of recording when ardour or\n\
@@ -3036,7 +3062,7 @@ the computer was shutdown.\n\
Ardour can recover any captured audio for\n\
you, or it can ignore it. Please decide\n\
what you would like to do.\n"));
-
+ image->set_alignment(ALIGN_CENTER, ALIGN_TOP);
hbox->pack_start (*image, PACK_EXPAND_WIDGET, 12);
hbox->pack_end (message, PACK_EXPAND_PADDING, 12);
dialog.get_vbox()->pack_start(*hbox, PACK_EXPAND_PADDING, 6);
@@ -3047,8 +3073,7 @@ what you would like to do.\n"));
message.show();
image->show();
hbox->show();
- //dialog.get_vbox()->show();
-
+
switch (dialog.run ()) {
case RESPONSE_ACCEPT:
return 1;
diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h
index 996349c990..5e43b8a64b 100644
--- a/gtk2_ardour/ardour_ui.h
+++ b/gtk2_ardour/ardour_ui.h
@@ -725,6 +725,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI
void toggle_SecondaryClockDeltaEditCursor ();
void toggle_ShowTrackMeters ();
void toggle_only_copy_imported_files ();
+ void toggle_use_narrow_ms();
void mtc_port_changed ();
void map_solo_model ();
diff --git a/gtk2_ardour/ardour_ui_ed.cc b/gtk2_ardour/ardour_ui_ed.cc
index af8206ceac..f5e4cfa549 100644
--- a/gtk2_ardour/ardour_ui_ed.cc
+++ b/gtk2_ardour/ardour_ui_ed.cc
@@ -428,6 +428,7 @@ ARDOUR_UI::install_actions ()
ActionManager::register_toggle_action (option_actions, X_("SecondaryClockDeltaEditCursor"), _("Secondary Clock delta to edit point"), mem_fun (*this, &ARDOUR_UI::toggle_SecondaryClockDeltaEditCursor));
ActionManager::register_toggle_action (option_actions, X_("ShowTrackMeters"), _("Enable Editor Meters"), mem_fun (*this, &ARDOUR_UI::toggle_ShowTrackMeters));
ActionManager::register_toggle_action (option_actions, X_("OnlyCopyImportedFiles"), _("Always copy imported files"), mem_fun (*this, &ARDOUR_UI::toggle_only_copy_imported_files));
+ ActionManager::register_toggle_action (option_actions, X_("DefaultNarrowMS"), _("Use narrow mixer strips"), mem_fun (*this, &ARDOUR_UI::toggle_use_narrow_ms));
RadioAction::Group denormal_group;
diff --git a/gtk2_ardour/ardour_ui_options.cc b/gtk2_ardour/ardour_ui_options.cc
index a76e3725a0..2b730fd585 100644
--- a/gtk2_ardour/ardour_ui_options.cc
+++ b/gtk2_ardour/ardour_ui_options.cc
@@ -518,6 +518,12 @@ ARDOUR_UI::toggle_ShowTrackMeters()
}
void
+ARDOUR_UI::toggle_use_narrow_ms()
+{
+ ActionManager::toggle_config_state ("options", "DefaultNarrowMS", &Configuration::set_default_narrow_ms, &Configuration::get_default_narrow_ms);
+}
+
+void
ARDOUR_UI::mtc_port_changed ()
{
bool have_mtc;
@@ -1122,6 +1128,8 @@ ARDOUR_UI::parameter_changed (const char* parameter_name)
} else if (PARAM_IS ("show-track-meters")) {
ActionManager::map_some_state ("options", "ShowTrackMeters", &Configuration::get_show_track_meters);
editor->toggle_meter_updating();
+ } else if (PARAM_IS ("default-narrow_ms")) {
+ ActionManager::map_some_state ("options", "DefaultNarrowMS", &Configuration::get_default_narrow_ms);
}
#undef PARAM_IS
diff --git a/gtk2_ardour/audio_region_view.cc b/gtk2_ardour/audio_region_view.cc
index 96b8a57261..333d7ea87a 100644
--- a/gtk2_ardour/audio_region_view.cc
+++ b/gtk2_ardour/audio_region_view.cc
@@ -52,7 +52,7 @@
#include "i18n.h"
-#define MUTED_ALPHA 0x50
+#define MUTED_ALPHA 10
using namespace sigc;
using namespace ARDOUR;
@@ -1226,14 +1226,22 @@ AudioRegionView::set_frame_color ()
UINT_TO_RGBA(ARDOUR_UI::config()->canvasvar_FrameBase.get(), &r, &g, &b, &a);
for (vector<ArdourCanvas::WaveView*>::iterator w = waves.begin(); w != waves.end(); ++w) {
- (*w)->property_wave_color() = RGBA_TO_UINT(r, g, b, fill_opacity ? fill_opacity : a);// Lets still use the theme's opacity value if Opaque is not set
+ if (_region->muted()) {
+ (*w)->property_wave_color() = RGBA_TO_UINT(r, g, b, MUTED_ALPHA);
+ } else {
+ (*w)->property_wave_color() = RGBA_TO_UINT(r, g, b, fill_opacity ? fill_opacity : a);// Lets still use the theme's opacity value if Opaque is not set
+ }
}
} else {
UINT_TO_RGBA(ARDOUR_UI::config()->canvasvar_FrameBase.get(), &r, &g, &b, &a);
frame->property_fill_color_rgba() = RGBA_TO_UINT(r, g, b, fill_opacity ? fill_opacity : a);
for (vector<ArdourCanvas::WaveView*>::iterator w = waves.begin(); w != waves.end(); ++w) {
- (*w)->property_wave_color() = ARDOUR_UI::config()->canvasvar_WaveForm.get();
+ if (_region->muted()) {
+ (*w)->property_wave_color() = UINT_RGBA_CHANGE_A(ARDOUR_UI::config()->canvasvar_WaveForm.get(), MUTED_ALPHA);
+ } else {
+ (*w)->property_wave_color() = ARDOUR_UI::config()->canvasvar_WaveForm.get();
+ }
}
}
}
diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc
index 613c34f551..325584f7ed 100644
--- a/gtk2_ardour/editor.cc
+++ b/gtk2_ardour/editor.cc
@@ -155,6 +155,18 @@ static const gchar *_zoom_focus_strings[] = {
0
};
+#ifdef USE_RUBBERBAND
+static const gchar *_rb_opt_strings[] = {
+ N_("Mushy"),
+ N_("Smooth"),
+ N_("Balanced multitimbral mixture"),
+ N_("Unpitched percussion with stable notes"),
+ N_("Crisp monophonic instrumental"),
+ N_("Unpitched solo percussion"),
+ 0
+};
+#endif
+
/* Soundfile drag-n-drop */
Gdk::Cursor* Editor::cross_hair_cursor = 0;
@@ -256,7 +268,10 @@ Editor::Editor ()
snap_mode_strings = I18N (_snap_mode_strings);
zoom_focus_strings = I18N (_zoom_focus_strings);
edit_point_strings = I18N (_edit_point_strings);
-
+#ifdef USE_RUBBERBAND
+ rb_opt_strings = I18N (_rb_opt_strings);
+#endif
+
snap_threshold = 5.0;
bbt_beat_subdivision = 4;
canvas_width = 0;
@@ -4224,10 +4239,15 @@ struct EditorOrderTimeAxisSorter {
};
void
-Editor::sort_track_selection ()
+Editor::sort_track_selection (TrackSelection* sel)
{
EditorOrderTimeAxisSorter cmp;
- selection->tracks.sort (cmp);
+
+ if (sel) {
+ sel->sort (cmp);
+ } else {
+ selection->tracks.sort (cmp);
+ }
}
nframes64_t
diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h
index 69f7e18a7f..14ed3a46a8 100644
--- a/gtk2_ardour/editor.h
+++ b/gtk2_ardour/editor.h
@@ -168,6 +168,10 @@ class Editor : public PublicEditor
void hide_a_region (boost::shared_ptr<ARDOUR::Region>);
void remove_a_region (boost::shared_ptr<ARDOUR::Region>);
+#ifdef USE_RUBBERBAND
+ std::vector<std::string> rb_opt_strings;
+#endif
+
/* option editor-access */
void set_show_waveforms (bool yn);
@@ -478,7 +482,7 @@ class Editor : public PublicEditor
CrossfadeView* clicked_crossfadeview;
ControlPoint* clicked_control_point;
- void sort_track_selection ();
+ void sort_track_selection (TrackSelection* sel = 0);
void get_relevant_tracks (std::set<RouteTimeAxisView*>& relevant_tracks);
void get_equivalent_regions (RegionView* rv, std::vector<RegionView*>&) const;
@@ -1179,7 +1183,8 @@ class Editor : public PublicEditor
void add_location_from_selection ();
void set_loop_from_selection (bool play);
void set_punch_from_selection ();
-
+ void set_punch_from_region ();
+
void set_loop_from_edit_range (bool play);
void set_loop_from_region (bool play);
void set_punch_from_edit_range ();
@@ -1930,11 +1935,20 @@ class Editor : public PublicEditor
Gtk::SpinButton pitch_cent_spinner;
RegionSelection regions;
Gtk::ProgressBar progress_bar;
+
+ /* SoundTouch */
Gtk::ToggleButton quick_button;
Gtk::ToggleButton antialias_button;
+ Gtk::HBox upper_button_box;
+
+ /* RubberBand */
+ Gtk::ComboBoxText stretch_opts_selector;
+ Gtk::Label stretch_opts_label;
+ Gtk::ToggleButton precise_button;
+ Gtk::HBox opts_box;
+
Gtk::Button* cancel_button;
Gtk::Button* action_button;
- Gtk::HBox upper_button_box;
Gtk::VBox packer;
int status;
@@ -2061,6 +2075,18 @@ class Editor : public PublicEditor
TimeAxisView* entered_track;
RegionView* entered_regionview;
+
+ class ExclusiveRegionSelection {
+ public:
+ ExclusiveRegionSelection (Editor&, RegionView*);
+ ~ExclusiveRegionSelection ();
+
+ private:
+ Editor& editor;
+ RegionView* regionview;
+ bool remove;
+ };
+
void ensure_entered_region_selected (bool op_acts_on_objects = false);
void ensure_entered_track_selected (bool op_acts_on_objects = false);
bool clear_entered_track;
diff --git a/gtk2_ardour/editor_actions.cc b/gtk2_ardour/editor_actions.cc
index fd95fd46b9..e881b02a4e 100644
--- a/gtk2_ardour/editor_actions.cc
+++ b/gtk2_ardour/editor_actions.cc
@@ -270,7 +270,8 @@ Editor::register_actions ()
ActionManager::session_sensitive_actions.push_back (act);
act = ActionManager::register_action (editor_actions, "set-punch-from-edit-range", _("Set Punch From Edit Range"), mem_fun(*this, &Editor::set_punch_from_edit_range));
ActionManager::session_sensitive_actions.push_back (act);
-
+ act = ActionManager::register_action (editor_actions, "set-punch-from-region", _("Set Punch From Region"), mem_fun(*this, &Editor::set_punch_from_region));
+ ActionManager::session_sensitive_actions.push_back (act);
act = ActionManager::register_action (editor_actions, "pitch-shift-region", _("Transpose"), mem_fun(*this, &Editor::pitch_shift_regions));
ActionManager::session_sensitive_actions.push_back (act);
diff --git a/gtk2_ardour/editor_canvas.cc b/gtk2_ardour/editor_canvas.cc
index 87a92790bc..68e0f62be4 100644
--- a/gtk2_ardour/editor_canvas.cc
+++ b/gtk2_ardour/editor_canvas.cc
@@ -337,7 +337,7 @@ Editor::track_canvas_size_allocated ()
if (playhead_cursor) playhead_cursor->set_length (canvas_height);
for (MarkerSelection::iterator x = selection->markers.begin(); x != selection->markers.end(); ++x) {
- (*x)->set_line_length (canvas_height);
+ (*x)->set_line_length (full_canvas_height);
}
if (range_marker_drag_rect) {
@@ -366,11 +366,17 @@ Editor::track_canvas_size_allocated ()
}
compute_fixed_ruler_scale ();
+ range_marker_drag_rect->property_y2() = full_canvas_height;
+ transport_loop_range_rect->property_y2() = full_canvas_height;
+ transport_punch_range_rect->property_y2() = full_canvas_height;
+ transport_punchin_line->property_y2() = full_canvas_height;
+ transport_punchout_line->property_y2() = full_canvas_height;
+
update_fixed_rulers();
redisplay_tempo (true);
if (logo_item) {
- // logo_item->property_height() = canvas_height;
+ // logo_item->property_height() = full_canvas_height;
// logo_item->property_width() = canvas_width;
}
diff --git a/gtk2_ardour/editor_markers.cc b/gtk2_ardour/editor_markers.cc
index 68ce914025..e6fb32feca 100644
--- a/gtk2_ardour/editor_markers.cc
+++ b/gtk2_ardour/editor_markers.cc
@@ -1172,7 +1172,7 @@ Editor::marker_selection_changed ()
}
for (MarkerSelection::iterator x = selection->markers.begin(); x != selection->markers.end(); ++x) {
- (*x)->add_line (cursor_group, canvas_height);
+ (*x)->add_line (cursor_group, full_canvas_height);
(*x)->show_line ();
}
diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc
index 9cee32cebb..4919091a62 100644
--- a/gtk2_ardour/editor_ops.cc
+++ b/gtk2_ardour/editor_ops.cc
@@ -2389,7 +2389,7 @@ Editor::play_selected_region ()
nframes64_t start = max_frames;
nframes64_t end = 0;
- ensure_entered_region_selected (true);
+ ExclusiveRegionSelection esr (*this, entered_regionview);
if (selection->regions.empty()) {
return;
@@ -2404,6 +2404,7 @@ Editor::play_selected_region ()
}
}
+ session->request_stop ();
session->request_bounded_roll (start, end);
}
@@ -2567,27 +2568,58 @@ Editor::separate_regions_between (const TimeSelection& ts)
bool in_command = false;
boost::shared_ptr<Playlist> playlist;
RegionSelection new_selection;
+ TrackSelection tmptracks;
+
+ if (selection->tracks.empty()) {
- sort_track_selection ();
+ /* use tracks with selected regions */
- for (TrackSelection::iterator i = selection->tracks.begin(); i != selection->tracks.end(); ++i) {
+ for (RegionSelection::iterator i = selection->regions.begin(); i != selection->regions.end(); ++i) {
+ TimeAxisView* tv = &(*i)->get_time_axis_view();
+
+ if (find (tmptracks.begin(), tmptracks.end(), tv) == tmptracks.end()) {
+ tmptracks.push_back (tv);
+ }
+ }
+
+ if (tmptracks.empty()) {
+ /* no regions selected: use all tracks */
+ tmptracks = track_views;
+ }
+
+ } else {
+
+ tmptracks = selection->tracks;
+
+ }
+
+ sort_track_selection (&tmptracks);
+
+ for (TrackSelection::iterator i = tmptracks.begin(); i != tmptracks.end(); ++i) {
RouteTimeAxisView* rtv;
-
+
if ((rtv = dynamic_cast<RouteTimeAxisView*> ((*i))) != 0) {
- boost::shared_ptr<Track> t = rtv->track();
+ if (rtv->is_track()) {
- if (t != 0 && ! t->diskstream()->destructive()) {
-
- if ((playlist = rtv->playlist()) != 0) {
+ /* no edits to destructive tracks */
- XMLNode *before = &(playlist->get_state());
- bool got_some = false;
+ if (rtv->track()->diskstream()->destructive()) {
+ continue;
+ }
+ if ((playlist = rtv->playlist()) != 0) {
+
+ XMLNode *before;
+ bool got_some;
+
+ before = &(playlist->get_state());
+ got_some = false;
+
/* XXX need to consider musical time selections here at some point */
- double speed = t->diskstream()->speed();
+ double speed = rtv->get_diskstream()->speed();
for (list<AudioRange>::const_iterator t = ts.begin(); t != ts.end(); ++t) {
@@ -2986,29 +3018,59 @@ Editor::align_selection_relative (RegionPoint point, nframes_t position, const R
switch (point) {
case Start:
- pos = r->first_frame ();
+ pos = position;
+ if (position > r->position()) {
+ distance = position - r->position();
+ dir = 1;
+ } else {
+ distance = r->position() - position;
+ dir = -1;
+ }
break;
-
+
case End:
- pos = r->last_frame();
+ if (position > r->last_frame()) {
+ distance = position - r->last_frame();
+ pos = r->position() + distance;
+ dir = 1;
+ } else {
+ distance = r->last_frame() - position;
+ pos = r->position() - distance;
+ dir = -1;
+ }
break;
case SyncPoint:
- pos = r->adjust_to_sync (r->first_frame());
+ pos = r->adjust_to_sync (position);
+ if (pos > r->position()) {
+ distance = pos - r->position();
+ dir = 1;
+ } else {
+ distance = r->position() - pos;
+ dir = -1;
+ }
break;
}
- if (pos > position) {
- distance = pos - position;
- dir = -1;
- } else {
- distance = position - pos;
- dir = 1;
+ if (pos == r->position()) {
+ return;
}
begin_reversible_command (_("align selection (relative)"));
- for (RegionSelection::const_iterator i = rs.begin(); i != rs.end(); ++i) {
+ /* move first one specially */
+
+ XMLNode &before = r->playlist()->get_state();
+ r->set_position (pos, this);
+ XMLNode &after = r->playlist()->get_state();
+ session->add_command(new MementoCommand<Playlist>(*(r->playlist()), &before, &after));
+
+ /* move rest by the same amount */
+
+ RegionSelection::const_iterator i = rs.begin();
+ ++i;
+
+ for (; i != rs.end(); ++i) {
boost::shared_ptr<Region> region ((*i)->region());
@@ -3100,7 +3162,7 @@ Editor::trim_region_to_punch ()
void
Editor::trim_region_to_location (const Location& loc, const char* str)
{
- ensure_entered_region_selected ();
+ ExclusiveRegionSelection ers (*this, entered_regionview);
RegionSelection& rs (get_regions_for_action ());
@@ -3151,6 +3213,8 @@ Editor::trim_region_to_location (const Location& loc, const char* str)
void
Editor::trim_region_to_edit_point ()
{
+ ExclusiveRegionSelection ers (*this, entered_regionview);
+
RegionSelection& rs (get_regions_for_action ());
nframes64_t where = get_preferred_edit_position();
@@ -3193,6 +3257,8 @@ Editor::trim_region_to_edit_point ()
void
Editor::trim_region_from_edit_point ()
{
+ ExclusiveRegionSelection ers (*this, entered_regionview);
+
RegionSelection& rs (get_regions_for_action ());
nframes64_t where = get_preferred_edit_position();
@@ -4292,16 +4358,16 @@ Editor::toggle_region_opaque ()
void
Editor::set_fade_length (bool in)
{
- ensure_entered_region_selected (true);
+ ExclusiveRegionSelection esr (*this, entered_regionview);
/* we need a region to measure the offset from the start */
RegionView* rv;
- if (entered_regionview) {
- rv = entered_regionview;
- } else if (!selection->regions.empty()) {
+ if (!selection->regions.empty()) {
rv = selection->regions.front();
+ } else if (entered_regionview) {
+ rv = entered_regionview;
} else {
return;
}
@@ -4309,6 +4375,11 @@ Editor::set_fade_length (bool in)
nframes64_t pos = get_preferred_edit_position();
nframes_t len;
char* cmd;
+
+ if (pos > rv->region()->last_frame() || pos < rv->region()->first_frame()) {
+ /* edit point is outside the relevant region */
+ return;
+ }
if (in) {
if (pos <= rv->region()->position()) {
@@ -4337,7 +4408,13 @@ Editor::set_fade_length (bool in)
return;
}
- boost::shared_ptr<AutomationList> alist = tmp->audio_region()->fade_in();
+ boost::shared_ptr<AutomationList> alist;
+ if (in) {
+ alist = tmp->audio_region()->fade_in();
+ } else {
+ alist = tmp->audio_region()->fade_out();
+ }
+
XMLNode &before = alist->get_state();
if (in) {
@@ -4347,13 +4424,12 @@ Editor::set_fade_length (bool in)
}
XMLNode &after = alist->get_state();
- session->add_command(new MementoCommand<AutomationList>(*alist.get(), &before, &after));
+ session->add_command(new MementoCommand<AutomationList>(*alist, &before, &after));
}
commit_reversible_command ();
}
-
void
Editor::toggle_fade_active (bool in)
{
@@ -4366,7 +4442,6 @@ Editor::toggle_fade_active (bool in)
const char* cmd = (in ? _("toggle fade in active") : _("toggle fade out active"));
bool have_switch = false;
bool yn;
- bool in_command = false;
begin_reversible_command (cmd);
@@ -4382,25 +4457,31 @@ Editor::toggle_fade_active (bool in)
/* make the behaviour consistent across all regions */
if (!have_switch) {
- yn = region->fade_in_active();
+ if (in) {
+ yn = region->fade_in_active();
+ } else {
+ yn = region->fade_out_active();
+ }
have_switch = true;
}
XMLNode &before = region->get_state();
- region->set_fade_in_active (!yn);
+ if (in) {
+ region->set_fade_in_active (!yn);
+ } else {
+ region->set_fade_out_active (!yn);
+ }
XMLNode &after = region->get_state();
session->add_command(new MementoCommand<AudioRegion>(*region.get(), &before, &after));
- in_command = true;
}
- if (in_command) {
- commit_reversible_command ();
- }
+ commit_reversible_command ();
}
void
Editor::set_fade_in_shape (AudioRegion::FadeShape shape)
{
+
begin_reversible_command (_("set fade in shape"));
for (RegionSelection::iterator x = selection->regions.begin(); x != selection->regions.end(); ++x) {
@@ -4420,6 +4501,7 @@ Editor::set_fade_in_shape (AudioRegion::FadeShape shape)
}
commit_reversible_command ();
+
}
void
@@ -4468,6 +4550,8 @@ Editor::set_fade_in_active (bool yn)
XMLNode &after = ar->get_state();
session->add_command(new MementoCommand<AudioRegion>(*ar, &before, &after));
}
+
+ commit_reversible_command ();
}
void
@@ -4491,6 +4575,8 @@ Editor::set_fade_out_active (bool yn)
XMLNode &after = ar->get_state();
session->add_command(new MementoCommand<AudioRegion>(*ar, &before, &after));
}
+
+ commit_reversible_command ();
}
@@ -4600,27 +4686,29 @@ Editor::ensure_entered_track_selected (bool op_really_wants_one_track_if_none_ar
void
Editor::ensure_entered_region_selected (bool op_really_wants_one_region_if_none_are_selected)
{
- if (entered_regionview && mouse_mode == MouseObject) {
-
- /* heuristic:
-
- - if there is no existing selection, don't change it. the operation will thus apply to "all"
-
- - if there is an existing selection, but the entered regionview isn't in it, add it. this
- avoids key-mouse ops on unselected regions from interfering with an existing selection,
- but also means that the operation will apply to the pointed-at region.
- */
-
- if (!selection->regions.empty()) {
- if (find (selection->regions.begin(), selection->regions.end(), entered_regionview) != selection->regions.end()) {
- selection->add (entered_regionview);
- }
- } else {
- /* there is no selection, but this operation requires/prefers selected objects */
+ if (!entered_regionview || mouse_mode != MouseObject) {
+ return;
+ }
- if (op_really_wants_one_region_if_none_are_selected) {
- selection->set (entered_regionview, false);
- }
+
+ /* heuristic:
+
+ - if there is no existing selection, don't change it. the operation will thus apply to "all"
+
+ - if there is an existing selection, but the entered regionview isn't in it, add it. this
+ avoids key-mouse ops on unselected regions from interfering with an existing selection,
+ but also means that the operation will apply to the pointed-at region.
+ */
+
+ if (!selection->regions.empty()) {
+ if (!selection->selected (entered_regionview)) {
+ selection->add (entered_regionview);
+ }
+ } else {
+ /* there is no selection, but this operation requires/prefers selected objects */
+
+ if (op_really_wants_one_region_if_none_are_selected) {
+ selection->set (entered_regionview, false);
}
}
}
@@ -4640,6 +4728,8 @@ Editor::trim_region_back ()
void
Editor::trim_region (bool front)
{
+ ExclusiveRegionSelection ers (*this, entered_regionview);
+
nframes64_t where = get_preferred_edit_position();
RegionSelection& rs = get_regions_for_action ();
@@ -4662,6 +4752,7 @@ Editor::trim_region (bool front)
session->add_command(new MementoCommand<Playlist>(*pl.get(), &before, &after));
}
}
+
commit_reversible_command ();
}
@@ -4764,7 +4855,7 @@ Editor::set_loop_from_region (bool play)
nframes64_t start = max_frames;
nframes64_t end = 0;
- ensure_entered_region_selected (true);
+ ExclusiveRegionSelection esr (*this, entered_regionview);
if (selection->regions.empty()) {
info << _("cannot set loop: no region selected") << endmsg;
@@ -4819,6 +4910,31 @@ Editor::set_punch_from_edit_range ()
}
void
+Editor::set_punch_from_region ()
+{
+ nframes64_t start = max_frames;
+ nframes64_t end = 0;
+
+ ExclusiveRegionSelection esr (*this, entered_regionview);
+
+ if (selection->regions.empty()) {
+ info << _("cannot set punch: no region selected") << endmsg;
+ return;
+ }
+
+ for (RegionSelection::iterator i = selection->regions.begin(); i != selection->regions.end(); ++i) {
+ if ((*i)->region()->position() < start) {
+ start = (*i)->region()->position();
+ }
+ if ((*i)->region()->last_frame() + 1 > end) {
+ end = (*i)->region()->last_frame() + 1;
+ }
+ }
+
+ set_punch_range (start, end, _("set punch range from region"));
+}
+
+void
Editor::pitch_shift_regions ()
{
ensure_entered_region_selected (true);
diff --git a/gtk2_ardour/editor_selection.cc b/gtk2_ardour/editor_selection.cc
index 5fcdb8ef32..87b9eba6f7 100644
--- a/gtk2_ardour/editor_selection.cc
+++ b/gtk2_ardour/editor_selection.cc
@@ -808,7 +808,7 @@ void
Editor::select_all (Selection::Operation op)
{
list<Selectable *> touched;
-
+
for (TrackViewList::iterator iter = track_views.begin(); iter != track_views.end(); ++iter) {
if ((*iter)->hidden()) {
continue;
@@ -991,7 +991,15 @@ Editor::select_all_selectables_using_time_selection ()
return;
}
- for (TrackViewList::iterator iter = selection->tracks.begin(); iter != selection->tracks.end(); ++iter) {
+ TrackSelection* ts;
+
+ if (selection->tracks.empty()) {
+ ts = &track_views;
+ } else {
+ ts = &selection->tracks;
+ }
+
+ for (TrackViewList::iterator iter = ts->begin(); iter != ts->end(); ++iter) {
if ((*iter)->hidden()) {
continue;
}
@@ -1014,7 +1022,16 @@ Editor::select_all_selectables_using_punch()
return;
}
- for (TrackViewList::iterator iter = track_views.begin(); iter != track_views.end(); ++iter) {
+
+ TrackSelection* ts;
+
+ if (selection->tracks.empty()) {
+ ts = &track_views;
+ } else {
+ ts = &selection->tracks;
+ }
+
+ for (TrackViewList::iterator iter = ts->begin(); iter != ts->end(); ++iter) {
if ((*iter)->hidden()) {
continue;
}
@@ -1036,7 +1053,16 @@ Editor::select_all_selectables_using_loop()
return;
}
- for (TrackViewList::iterator iter = track_views.begin(); iter != track_views.end(); ++iter) {
+
+ TrackSelection* ts;
+
+ if (selection->tracks.empty()) {
+ ts = &track_views;
+ } else {
+ ts = &selection->tracks;
+ }
+
+ for (TrackViewList::iterator iter = ts->begin(); iter != ts->end(); ++iter) {
if ((*iter)->hidden()) {
continue;
}
@@ -1069,7 +1095,16 @@ Editor::select_all_selectables_using_cursor (Cursor *cursor, bool after)
}
}
- for (TrackViewList::iterator iter = track_views.begin(); iter != track_views.end(); ++iter) {
+
+ TrackSelection* ts;
+
+ if (selection->tracks.empty()) {
+ ts = &track_views;
+ } else {
+ ts = &selection->tracks;
+ }
+
+ for (TrackViewList::iterator iter = ts->begin(); iter != ts->end(); ++iter) {
if ((*iter)->hidden()) {
continue;
}
@@ -1100,7 +1135,16 @@ Editor::select_all_selectables_using_edit (bool after)
}
}
- for (TrackViewList::iterator iter = track_views.begin(); iter != track_views.end(); ++iter) {
+
+ TrackSelection* ts;
+
+ if (selection->tracks.empty()) {
+ ts = &track_views;
+ } else {
+ ts = &selection->tracks;
+ }
+
+ for (TrackViewList::iterator iter = ts->begin(); iter != ts->end(); ++iter) {
if ((*iter)->hidden()) {
continue;
}
@@ -1120,8 +1164,16 @@ Editor::select_all_selectables_between (bool within)
if (!get_edit_op_range (start, end)) {
return;
}
-
- for (TrackViewList::iterator iter = track_views.begin(); iter != track_views.end(); ++iter) {
+
+ TrackSelection* ts;
+
+ if (selection->tracks.empty()) {
+ ts = &track_views;
+ } else {
+ ts = &selection->tracks;
+ }
+
+ for (TrackViewList::iterator iter = ts->begin(); iter != ts->end(); ++iter) {
if ((*iter)->hidden()) {
continue;
}
@@ -1241,3 +1293,28 @@ Editor::deselect_all ()
{
selection->clear ();
}
+
+Editor::ExclusiveRegionSelection::ExclusiveRegionSelection (Editor& ed, RegionView* rv)
+ : editor (ed),
+ regionview (rv)
+{
+
+ if (!rv || ed.current_mouse_mode() != Editing::MouseObject) {
+ return;
+ }
+
+ if (ed.get_selection().regions.empty() && !ed.get_selection().selected (rv)) {
+ ed.get_selection().set (rv, false);
+ remove = true;
+ } else {
+ remove = false;
+ }
+}
+
+Editor::ExclusiveRegionSelection::~ExclusiveRegionSelection ()
+{
+ if (remove) {
+ editor.get_selection().remove (regionview);
+ }
+}
+
diff --git a/gtk2_ardour/editor_timefx.cc b/gtk2_ardour/editor_timefx.cc
index 015a265a9b..2b91c6df28 100644
--- a/gtk2_ardour/editor_timefx.cc
+++ b/gtk2_ardour/editor_timefx.cc
@@ -17,6 +17,7 @@
*/
+#include <iostream>
#include <cstdlib>
#include <cmath>
@@ -27,6 +28,7 @@
#include <pbd/memento_command.h>
#include <gtkmm2ext/window_title.h>
+#include <gtkmm2ext/utils.h>
#include "editor.h"
#include "audio_time_axis.h"
@@ -42,8 +44,14 @@
#include <ardour/stretch.h>
#include <ardour/pitch.h>
+#ifdef USE_RUBBERBAND
+#include <rubberband/RubberBandStretcher.h>
+using namespace RubberBand;
+#endif
+
#include "i18n.h"
+using namespace std;
using namespace ARDOUR;
using namespace PBD;
using namespace sigc;
@@ -54,14 +62,16 @@ Editor::TimeFXDialog::TimeFXDialog (Editor& e, bool pitch)
: ArdourDialog (X_("time fx dialog")),
editor (e),
pitching (pitch),
- pitch_octave_adjustment (0.0, 0.0, 4.0, 1, 2.0),
- pitch_semitone_adjustment (0.0, 0.0, 12.0, 1.0, 4.0),
- pitch_cent_adjustment (0.0, 0.0, 150.0, 5.0, 15.0),
+ pitch_octave_adjustment (0.0, -4.0, 4.0, 1, 2.0),
+ pitch_semitone_adjustment (0.0, -12.0, 12.0, 1.0, 4.0),
+ pitch_cent_adjustment (0.0, -499.0, 500.0, 5.0, 15.0),
pitch_octave_spinner (pitch_octave_adjustment),
pitch_semitone_spinner (pitch_semitone_adjustment),
pitch_cent_spinner (pitch_cent_adjustment),
quick_button (_("Quick but Ugly")),
- antialias_button (_("Skip Anti-aliasing"))
+ antialias_button (_("Skip Anti-aliasing")),
+ stretch_opts_label (_("Contents:")),
+ precise_button (_("Strict Linear"))
{
set_modal (true);
set_position (Gtk::WIN_POS_MOUSE);
@@ -79,8 +89,6 @@ Editor::TimeFXDialog::TimeFXDialog (Editor& e, bool pitch)
get_vbox()->set_spacing (5);
get_vbox()->set_border_width (12);
- get_vbox()->pack_start (upper_button_box, false, false);
- get_vbox()->pack_start (progress_bar);
if (pitching) {
@@ -105,19 +113,44 @@ Editor::TimeFXDialog::TimeFXDialog (Editor& e, bool pitch)
add_button (_("Shift"), Gtk::RESPONSE_ACCEPT);
+ get_vbox()->pack_start (upper_button_box, false, false);
+
} else {
+#ifdef USE_RUBBERBAND
+ opts_box.set_spacing (5);
+ opts_box.set_border_width (5);
+ vector<string> strings;
+
+ set_popdown_strings (stretch_opts_selector, editor.rb_opt_strings);
+ /* set default */
+ stretch_opts_selector.set_active_text (editor.rb_opt_strings[4]);
+
+ opts_box.pack_start (precise_button, false, false);
+ opts_box.pack_start (stretch_opts_label, false, false);
+ opts_box.pack_start (stretch_opts_selector, false, false);
+
+ get_vbox()->pack_start (opts_box, false, false);
+
+#else
upper_button_box.set_homogeneous (true);
upper_button_box.set_spacing (5);
upper_button_box.set_border_width (5);
+
upper_button_box.pack_start (quick_button, true, true);
upper_button_box.pack_start (antialias_button, true, true);
-
+
+ quick_button.set_name (N_("TimeFXButton"));
+ antialias_button.set_name (N_("TimeFXButton"));
+
+ get_vbox()->pack_start (upper_button_box, false, false);
+
+#endif
add_button (_("Stretch/Shrink"), Gtk::RESPONSE_ACCEPT);
}
- quick_button.set_name (N_("TimeFXButton"));
- antialias_button.set_name (N_("TimeFXButton"));
+ get_vbox()->pack_start (progress_bar);
+
progress_bar.set_name (N_("TimeFXProgress"));
show_all_children ();
@@ -184,6 +217,7 @@ Editor::time_fx (RegionSelection& regions, float val, bool pitching)
if (pitching) {
float cents = current_timefx->pitch_octave_adjustment.get_value() * 1200.0;
+ float pitch_fraction;
cents += current_timefx->pitch_semitone_adjustment.get_value() * 100.0;
cents += current_timefx->pitch_cent_adjustment.get_value();
@@ -193,28 +227,86 @@ Editor::time_fx (RegionSelection& regions, float val, bool pitching)
return 0;
}
- // we now have the pitch shift in cents. divide by 1200 to get octaves
- // then multiply by 2.0 because 1 octave == doubling the frequency
+ // one octave == 1200 cents
+ // adding one octave doubles the frequency
+ // ratio is 2^^octaves
+
+ pitch_fraction = pow(2, cents/1200);
+
+ current_timefx->request.time_fraction = 1.0;
+ current_timefx->request.pitch_fraction = pitch_fraction;
- cents /= 1200.0;
- cents /= 2.0;
+ } else {
+
+ current_timefx->request.time_fraction = val;
+ current_timefx->request.pitch_fraction = 1.0;
- // add 1.0 to convert to RB scale
+ }
- cents += 1.0;
+#ifdef USE_RUBBERBAND
+ /* parse options */
- current_timefx->request.time_fraction = 1.0;
- current_timefx->request.pitch_fraction = cents;
+ RubberBandStretcher::Options options = 0;
+ bool realtime = false;
+ bool precise = false;
+ bool peaklock = true;
+ bool softening = true;
+ bool longwin = false;
+ bool shortwin = false;
+ string txt;
+
+ enum {
+ NoTransients,
+ BandLimitedTransients,
+ Transients
+ } transients = Transients;
+
+ precise = current_timefx->precise_button.get_active();
+
+ txt = current_timefx->stretch_opts_selector.get_active_text ();
+
+ if (txt == rb_opt_strings[0]) {
+ transients = NoTransients; peaklock = false; longwin = true; shortwin = false;
+ } else if (txt == rb_opt_strings[1]) {
+ transients = NoTransients; peaklock = false; longwin = false; shortwin = false;
+ } else if (txt == rb_opt_strings[2]) {
+ transients = NoTransients; peaklock = true; longwin = false; shortwin = false;
+ } else if (txt == rb_opt_strings[3]) {
+ transients = BandLimitedTransients; peaklock = true; longwin = false; shortwin = false;
+ } else if (txt == rb_opt_strings[5]) {
+ transients = Transients; peaklock = false; longwin = false; shortwin = true;
} else {
+ /* default/4 */
+
+ transients = Transients; peaklock = true; longwin = false; shortwin = false;
+ };
- current_timefx->request.time_fraction = val;
- current_timefx->request.pitch_fraction = 1.0;
+ if (realtime) options |= RubberBandStretcher::OptionProcessRealTime;
+ if (precise) options |= RubberBandStretcher::OptionStretchPrecise;
+ if (!peaklock) options |= RubberBandStretcher::OptionPhaseIndependent;
+ if (!softening) options |= RubberBandStretcher::OptionPhasePeakLocked;
+ if (longwin) options |= RubberBandStretcher::OptionWindowLong;
+ if (shortwin) options |= RubberBandStretcher::OptionWindowShort;
+
+ switch (transients) {
+ case NoTransients:
+ options |= RubberBandStretcher::OptionTransientsSmooth;
+ break;
+ case BandLimitedTransients:
+ options |= RubberBandStretcher::OptionTransientsMixed;
+ break;
+ case Transients:
+ options |= RubberBandStretcher::OptionTransientsCrisp;
+ break;
}
+ current_timefx->request.opts = (int) options;
+#else
current_timefx->request.quick_seek = current_timefx->quick_button.get_active();
current_timefx->request.antialias = !current_timefx->antialias_button.get_active();
+#endif
current_timefx->request.progress = 0.0f;
current_timefx->request.done = false;
current_timefx->request.cancel = false;
@@ -239,7 +331,7 @@ Editor::time_fx (RegionSelection& regions, float val, bool pitching)
sigc::connection c = Glib::signal_timeout().connect (mem_fun (current_timefx, &TimeFXDialog::update_progress), 100);
- while (!current_timefx->request.done) {
+ while (!current_timefx->request.done && !current_timefx->request.cancel) {
gtk_main_iteration ();
}
diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc
index 8a8f99f745..e511e59af2 100644
--- a/gtk2_ardour/engine_dialog.cc
+++ b/gtk2_ardour/engine_dialog.cc
@@ -1,6 +1,7 @@
#include <vector>
#include <cmath>
#include <fstream>
+#include <map>
#include <glibmm.h>
#include <pbd/xml++.h>
@@ -22,6 +23,7 @@
#include <pbd/convert.h>
#include <pbd/error.h>
+#include <pbd/pathscanner.h>
#ifdef __APPLE
#include <CFBundle.h>
@@ -113,7 +115,6 @@ EngineControl::EngineControl ()
strings.push_back (X_("ALSA"));
strings.push_back (X_("OSS"));
strings.push_back (X_("FFADO"));
- strings.push_back (X_("FreeBoB"));
#endif
strings.push_back (X_("NetJACK"));
strings.push_back (X_("Dummy"));
@@ -364,7 +365,7 @@ EngineControl::build_command_line (vector<string>& cmd)
bool using_coreaudio = false;
bool using_netjack = false;
bool using_ffado = false;
- bool using_freebob = false;
+ bool using_dummy = false;
/* first, path to jackd */
@@ -427,10 +428,10 @@ EngineControl::build_command_line (vector<string>& cmd)
} else if (driver == X_("FFADO")) {
using_ffado = true;
cmd.push_back ("firewire");
- } else if (driver == X_("FreeBoB")) {
- using_freebob = true;
- cmd.push_back ("freebob");
- }
+ } else if ( driver == X_("Dummy")) {
+ using_dummy = true;
+ cmd.push_back ("dummy");
+ }
/* driver arguments */
@@ -454,8 +455,10 @@ EngineControl::build_command_line (vector<string>& cmd)
cmd.push_back ("-C");
}
- cmd.push_back ("-n");
- cmd.push_back (to_string ((uint32_t) floor (periods_spinner.get_value()), std::dec));
+ if (! using_dummy ) {
+ cmd.push_back ("-n");
+ cmd.push_back (to_string ((uint32_t) floor (periods_spinner.get_value()), std::dec));
+ }
}
cmd.push_back ("-r");
@@ -572,7 +575,6 @@ EngineControl::enumerate_devices ()
#else
devices["ALSA"] = enumerate_alsa_devices ();
devices["FFADO"] = enumerate_ffado_devices ();
- devices["FreeBoB"] = enumerate_freebob_devices ();
devices["OSS"] = enumerate_oss_devices ();
devices["Dummy"] = enumerate_dummy_devices ();
devices["NetJACK"] = enumerate_netjack_devices ();
@@ -825,6 +827,11 @@ EngineControl::audio_mode_changed ()
}
}
+static bool jack_server_filter(const string& str, void *arg)
+{
+ return str == "jackd" || str == "jackdmp";
+}
+
void
EngineControl::find_jack_servers (vector<string>& strings)
{
@@ -838,14 +845,11 @@ EngineControl::find_jack_servers (vector<string>& strings)
_NSGetExecutablePath (execpath, &pathsz);
- cerr << " execpath = " << execpath << endl;
-
Glib::ustring path (Glib::path_get_dirname (execpath));
path += "/jackd";
if (Glib::file_test (path, FILE_TEST_EXISTS)) {
strings.push_back (path);
- cerr << "Found jack in " << path << endl;
}
if (getenv ("ARDOUR_WITH_JACK")) {
@@ -856,29 +860,30 @@ EngineControl::find_jack_servers (vector<string>& strings)
}
return;
}
+#else
+ string path;
#endif
- if (Glib::file_test ("/usr/bin/jackd", FILE_TEST_EXISTS)) {
- strings.push_back ("/usr/bin/jackd");
- }
- if (Glib::file_test ("/usr/local/bin/jackd", FILE_TEST_EXISTS)) {
- strings.push_back ("/usr/local/bin/jackd");
- }
- if (Glib::file_test ("/opt/bin/jackd", FILE_TEST_EXISTS)) {
- strings.push_back ("/opt/bin/jackd");
- }
- if (Glib::file_test ("/usr/bin/jackdmp", FILE_TEST_EXISTS)) {
- strings.push_back ("/usr/bin/jackd");
- }
- if (Glib::file_test ("/usr/local/bin/jackdmp", FILE_TEST_EXISTS)) {
- strings.push_back ("/usr/local/bin/jackd");
- }
- if (Glib::file_test ("/opt/bin/jackdmp", FILE_TEST_EXISTS)) {
- strings.push_back ("/opt/bin/jackd");
+ PathScanner scanner;
+ vector<string *> *jack_servers;
+ std::map<string,int> un;
+
+ path = getenv ("PATH");
+
+ jack_servers = scanner (path, jack_server_filter, 0, false, true);
+
+ vector<string *>::iterator iter;
+
+ for (iter = jack_servers->begin(); iter != jack_servers->end(); iter++) {
+ string p = **iter;
+
+ if (un[p]++ == 0) {
+ strings.push_back(p);
+ }
}
-
}
+
string
EngineControl::get_device_name (const string& driver, const string& human_readable)
{
@@ -1023,9 +1028,18 @@ EngineControl::set_state (const XMLNode& root)
XMLNode* child;
XMLProperty* prop;
+ bool using_dummy = false;
+
int val;
string strval;
+ if ( (child = root.child("driver"))){
+ prop = child->property("val");
+ if (prop && (prop->value() == "Dummy") ) {
+ using_dummy = true;
+ }
+ }
+
clist = root.children();
for (citer = clist.begin(); citer != clist.end(); ++citer) {
@@ -1035,6 +1049,8 @@ EngineControl::set_state (const XMLNode& root)
prop = child->property ("val");
if (!prop || prop->value().empty()) {
+ if ( using_dummy && ( child->name() == "interface" || child->name() == "inputdevice" || child->name() == "outputdevice" ))
+ continue;
error << string_compose (_("AudioSetup value for %1 is missing data"), child->name()) << endmsg;
continue;
}
diff --git a/gtk2_ardour/gain_meter.cc b/gtk2_ardour/gain_meter.cc
index a20d8b9019..8406e21aa3 100644
--- a/gtk2_ardour/gain_meter.cc
+++ b/gtk2_ardour/gain_meter.cc
@@ -971,22 +971,6 @@ GainMeter::gain_automation_state_changed ()
}
}
-void GainMeter::setup_atv_meter (int len)
-{
- set_no_show_all();
- regular_meter_width = 3;
- set_width(Narrow, len);
- hide_all();
-
- //cerr << "Config->get_show_track_meters() = " << Config->get_show_track_meters() << endl;//DEBUG
-
- if (Config->get_show_track_meters()) {
- meter_packer.show_all();
- hbox.show();
- show();
- }
-}
-
void GainMeter::clear_meters ()
{
for (vector<MeterInfo>::iterator i = meters.begin(); i < meters.end(); i++) {
diff --git a/gtk2_ardour/gain_meter.h b/gtk2_ardour/gain_meter.h
index 669ed50906..af4f55709c 100644
--- a/gtk2_ardour/gain_meter.h
+++ b/gtk2_ardour/gain_meter.h
@@ -75,7 +75,6 @@ class GainMeter : public Gtk::VBox
void set_meter_strip_name (const char * name);
void set_fader_name (const char * name);
- void setup_atv_meter (int);
void clear_meters ();
private:
diff --git a/gtk2_ardour/keyeditor.cc b/gtk2_ardour/keyeditor.cc
index 4f378d2dbc..c914b6282b 100644
--- a/gtk2_ardour/keyeditor.cc
+++ b/gtk2_ardour/keyeditor.cc
@@ -10,6 +10,8 @@
#include <pbd/strsplit.h>
#include <pbd/replace_all.h>
+#include <ardour/profile.h>
+
#include "actions.h"
#include "keyboard.h"
#include "keyeditor.h"
@@ -22,7 +24,10 @@ using namespace Gdk;
using namespace PBD;
KeyEditor::KeyEditor ()
- : ArdourDialog (_("Keybinding Editor"), false)
+ : ArdourDialog (_("Shortcut Editor"), false)
+ , unbind_button (_("Remove shortcut"))
+ , unbind_box (BUTTONBOX_END)
+
{
can_bind = false;
last_state = 0;
@@ -31,7 +36,7 @@ KeyEditor::KeyEditor ()
view.set_model (model);
view.append_column (_("Action"), columns.action);
- view.append_column (_("Binding"), columns.binding);
+ view.append_column (_("Shortcut"), columns.binding);
view.set_headers_visible (true);
view.get_selection()->set_mode (SELECTION_SINGLE);
view.set_reorderable (false);
@@ -45,11 +50,49 @@ KeyEditor::KeyEditor ()
scroller.add (view);
scroller.set_policy (Gtk::POLICY_NEVER, Gtk::POLICY_AUTOMATIC);
+ unbind_box.pack_start (unbind_button, false, false);
+
+ unbind_button.signal_clicked().connect (mem_fun (*this, &KeyEditor::unbind));
+
+ get_vbox()->set_spacing (6);
get_vbox()->pack_start (scroller);
+
+ if (!ARDOUR::Profile->get_sae()) {
+ get_vbox()->pack_start (unbind_box, false, false);
+ unbind_box.show ();
+ unbind_button.show ();
+ }
+
get_vbox()->set_border_width (12);
- scroller.show ();
view.show ();
+ scroller.show ();
+
+ unbind_button.set_sensitive (false);
+}
+
+void
+KeyEditor::unbind ()
+{
+ TreeModel::iterator i = view.get_selection()->get_selected();
+
+ unbind_button.set_sensitive (false);
+
+ if (i != model->children().end()) {
+ string path = (*i)[columns.path];
+
+ if (!(*i)[columns.bindable]) {
+ return;
+ }
+
+ bool result = AccelMap::change_entry (path,
+ 0,
+ (ModifierType) 0,
+ true);
+ if (result) {
+ (*i)[columns.binding] = string ();
+ }
+ }
}
void
@@ -69,6 +112,28 @@ KeyEditor::on_unmap ()
void
KeyEditor::action_selected ()
{
+ if (view.get_selection()->count_selected_rows() == 0) {
+ return;
+ }
+
+ TreeModel::iterator i = view.get_selection()->get_selected();
+
+ unbind_button.set_sensitive (false);
+
+ if (i != model->children().end()) {
+
+ string path = (*i)[columns.path];
+
+ if (!(*i)[columns.bindable]) {
+ return;
+ }
+
+ string binding = (*i)[columns.binding];
+
+ if (!binding.empty()) {
+ unbind_button.set_sensitive (true);
+ }
+ }
}
bool
@@ -112,8 +177,6 @@ KeyEditor::on_key_release_event (GdkEventKey* ev)
(*i)[columns.binding] = string();
}
}
-
-
}
out:
diff --git a/gtk2_ardour/keyeditor.h b/gtk2_ardour/keyeditor.h
index 9fd129ca31..085bfbb6d9 100644
--- a/gtk2_ardour/keyeditor.h
+++ b/gtk2_ardour/keyeditor.h
@@ -3,6 +3,7 @@
#include <string>
+#include <gtkmm/buttonbox.h>
#include <gtkmm/treeview.h>
#include <gtkmm/treestore.h>
#include <gtkmm/scrolledwindow.h>
@@ -39,6 +40,10 @@ class KeyEditor : public ArdourDialog
Gtk::TreeView view;
Glib::RefPtr<Gtk::TreeStore> model;
KeyEditorColumns columns;
+ Gtk::Button unbind_button;
+ Gtk::HButtonBox unbind_box;
+
+ void unbind ();
bool can_bind;
guint last_state;
diff --git a/gtk2_ardour/mixer_ui.cc b/gtk2_ardour/mixer_ui.cc
index 8d349d8dc8..94c687f829 100644
--- a/gtk2_ardour/mixer_ui.cc
+++ b/gtk2_ardour/mixer_ui.cc
@@ -62,7 +62,7 @@ Mixer_UI::Mixer_UI ()
: Window (Gtk::WINDOW_TOPLEVEL)
{
session = 0;
- _strip_width = Wide;
+ Config->get_default_narrow_ms() ? _strip_width = Narrow : _strip_width = Wide;
track_menu = 0;
mix_group_context_menu = 0;
no_track_list_redisplay = false;
@@ -309,6 +309,8 @@ Mixer_UI::add_strip (Session::RouteList& routes)
strip = new MixerStrip (*this, *session, route);
strips.push_back (strip);
+ Config->get_default_narrow_ms() ? _strip_width = Narrow : _strip_width = Wide;
+
if (strip->width_owner() != strip) {
strip->set_width (_strip_width, this);
}
diff --git a/gtk2_ardour/new_session_dialog.cc b/gtk2_ardour/new_session_dialog.cc
index 9ecc7ea2f5..820a614ecc 100644
--- a/gtk2_ardour/new_session_dialog.cc
+++ b/gtk2_ardour/new_session_dialog.cc
@@ -42,6 +42,7 @@ using namespace ARDOUR;
using namespace PBD;
#include "opts.h"
+#include "utils.h"
NewSessionDialog::NewSessionDialog()
: ArdourDialog ("session control")
@@ -348,6 +349,30 @@ NewSessionDialog::NewSessionDialog()
get_vbox()->set_spacing(0);
get_vbox()->pack_start(*m_notebook, Gtk::PACK_SHRINK, 0);
+ /*
+ icon setting is done again in the editor (for the whole app),
+ but its all chickens and eggs at this point.
+ */
+
+ list<Glib::RefPtr<Gdk::Pixbuf> > window_icons;
+ Glib::RefPtr<Gdk::Pixbuf> icon;
+
+ if ((icon = ::get_icon ("ardour_icon_16px")) != 0) {
+ window_icons.push_back (icon);
+ }
+ if ((icon = ::get_icon ("ardour_icon_22px")) != 0) {
+ window_icons.push_back (icon);
+ }
+ if ((icon = ::get_icon ("ardour_icon_32px")) != 0) {
+ window_icons.push_back (icon);
+ }
+ if ((icon = ::get_icon ("ardour_icon_48px")) != 0) {
+ window_icons.push_back (icon);
+ }
+ if (!window_icons.empty()) {
+ set_icon_list (window_icons);
+ }
+
WindowTitle title(Glib::get_application_name());
title += _("Session Control");
set_title(title.get_string());
@@ -360,7 +385,7 @@ NewSessionDialog::NewSessionDialog()
// add_button(Gtk::Stock::HELP, Gtk::RESPONSE_HELP);
add_button(Gtk::Stock::QUIT, Gtk::RESPONSE_CANCEL);
add_button(Gtk::Stock::CLEAR, Gtk::RESPONSE_NONE);
- m_okbutton = add_button(Gtk::Stock::OPEN, Gtk::RESPONSE_OK);
+ m_okbutton = add_button(Gtk::Stock::NEW, Gtk::RESPONSE_OK);
recent_model = Gtk::TreeStore::create (recent_columns);
m_treeview->set_model (recent_model);
@@ -425,7 +450,6 @@ NewSessionDialog::NewSessionDialog()
m_treeview->signal_row_activated().connect (mem_fun (*this, &NewSessionDialog::recent_row_activated));
m_open_filechooser->signal_selection_changed ().connect (mem_fun (*this, &NewSessionDialog::file_chosen));
m_template->signal_selection_changed ().connect (mem_fun (*this, &NewSessionDialog::template_chosen));
- m_name->grab_focus();
page_set = Pages (0);
}
@@ -523,7 +547,10 @@ NewSessionDialog::session_name() const
}
*/
- if (on_newable_page()) {
+ int page = m_notebook->get_current_page();
+
+ if (page == 0 || page == 2) {
+ /* new or audio setup pages */
return Glib::filename_from_utf8(m_name->get_text());
} else {
if (m_treeview->get_selection()->count_selected_rows() == 0) {
@@ -537,12 +564,13 @@ NewSessionDialog::session_name() const
std::string
NewSessionDialog::session_folder() const
{
- if (on_newable_page()) {
- return Glib::filename_from_utf8(m_folder->get_filename());
+ if (m_notebook->get_current_page() == 0) {
+ return Glib::filename_from_utf8(m_folder->get_filename());
} else {
+
if (m_treeview->get_selection()->count_selected_rows() == 0) {
- std::string str = Glib::filename_from_utf8(m_open_filechooser->get_filename());
- return Glib::path_get_dirname(str);
+ const string filename(Glib::filename_from_utf8(m_open_filechooser->get_filename()));
+ return Glib::path_get_dirname(filename);
}
Gtk::TreeModel::iterator i = m_treeview->get_selection()->get_selected();
return (*i)[recent_columns.fullpath];
@@ -634,19 +662,62 @@ NewSessionDialog::connect_outs_to_physical() const
return m_connect_outputs_to_physical->get_active();
}
-bool
-NewSessionDialog::on_newable_page() const
-{
- return (m_notebook->get_current_page() == 0 ||
- m_notebook->get_current_page() == 2);
-}
-
int
NewSessionDialog::get_current_page() const
{
return m_notebook->get_current_page();
}
+NewSessionDialog::Pages
+NewSessionDialog::which_page ()
+{
+ int num = m_notebook->get_current_page();
+
+ if (page_set == NewPage) {
+ return NewPage;
+
+ } else if (page_set == OpenPage) {
+ return OpenPage;
+
+ } else if (page_set == EnginePage) {
+ return EnginePage;
+
+ } else if (page_set == NewPage|OpenPage) {
+ switch (num) {
+ case 0:
+ return NewPage;
+ default:
+ return OpenPage;
+ }
+
+ } else if (page_set == NewPage|EnginePage) {
+ switch (num) {
+ case 0:
+ return NewPage;
+ default:
+ return EnginePage;
+ }
+
+ } else if (page_set == NewPage|EnginePage|OpenPage) {
+ switch (num) {
+ case 0:
+ return NewPage;
+ case 1:
+ return OpenPage;
+ default:
+ return EnginePage;
+ }
+
+ } else if (page_set == OpenPage|EnginePage) {
+ switch (num) {
+ case 0:
+ return OpenPage;
+ default:
+ return EnginePage;
+ }
+ }
+}
+
void
NewSessionDialog::set_current_page(int page)
{
@@ -678,8 +749,11 @@ NewSessionDialog::notebook_page_changed (GtkNotebookPage* np, uint pagenum)
return;
}
- if (!on_newable_page ()) {
+ switch (which_page()) {
+ case OpenPage:
+ on_new_session_page = false;
m_okbutton->set_label(_("Open"));
+ m_okbutton->set_image (*(manage (new Gtk::Image (Gtk::Stock::OPEN, Gtk::ICON_SIZE_BUTTON))));
set_response_sensitive (Gtk::RESPONSE_NONE, false);
m_okbutton->set_image (*(new Gtk::Image (Gtk::Stock::OPEN, Gtk::ICON_SIZE_BUTTON)));
if (m_treeview->get_selection()->count_selected_rows() == 0) {
@@ -687,14 +761,24 @@ NewSessionDialog::notebook_page_changed (GtkNotebookPage* np, uint pagenum)
} else {
set_response_sensitive (Gtk::RESPONSE_OK, true);
}
- } else {
- if (m_name->get_text() != "") {
- set_response_sensitive (Gtk::RESPONSE_NONE, true);
- }
+ break;
+
+ case EnginePage:
+ on_new_session_page = false;
+ m_okbutton->set_label(_("Open"));
+ m_okbutton->set_image (*(manage (new Gtk::Image (Gtk::Stock::OPEN, Gtk::ICON_SIZE_BUTTON))));
+ set_response_sensitive (Gtk::RESPONSE_NONE, false);
+ set_response_sensitive (Gtk::RESPONSE_OK, true);
+ break;
+
+ default:
+ m_okbutton->set_label(_("New"));
+ m_okbutton->set_image (*(new Gtk::Image (Gtk::Stock::NEW, Gtk::ICON_SIZE_BUTTON)));
m_okbutton->set_label(_("New"));
m_okbutton->set_image (*(new Gtk::Image (Gtk::Stock::NEW, Gtk::ICON_SIZE_BUTTON)));
if (m_name->get_text() == "") {
set_response_sensitive (Gtk::RESPONSE_OK, false);
+ m_name->grab_focus();
} else {
set_response_sensitive (Gtk::RESPONSE_OK, true);
}
@@ -718,12 +802,21 @@ NewSessionDialog::treeview_selection_changed ()
void
NewSessionDialog::file_chosen ()
{
- if (on_newable_page ()) return;
+ switch (which_page()) {
+ case OpenPage:
+ break;
+ case NewPage:
+ case EnginePage:
+ return;
+ }
m_treeview->get_selection()->unselect_all();
- if (get_window())
- get_window()->set_cursor(Gdk::Cursor(Gdk::WATCH));
+ Glib::RefPtr<Gdk::Window> win (get_window());
+
+ if (win) {
+ win->set_cursor(Gdk::Cursor(Gdk::WATCH));
+ }
if (!m_open_filechooser->get_filename().empty()) {
set_response_sensitive (Gtk::RESPONSE_OK, true);
diff --git a/gtk2_ardour/new_session_dialog.h b/gtk2_ardour/new_session_dialog.h
index 0998f8a39a..6f0820168b 100644
--- a/gtk2_ardour/new_session_dialog.h
+++ b/gtk2_ardour/new_session_dialog.h
@@ -54,6 +54,12 @@ class NewSessionDialog : public ArdourDialog
{
public:
+ enum Pages {
+ NewPage = 0x1,
+ OpenPage = 0x2,
+ EnginePage = 0x4
+ };
+
NewSessionDialog();
~NewSessionDialog ();
@@ -86,9 +92,9 @@ public:
bool connect_outs_to_master() const;
bool connect_outs_to_physical() const ;
+ Pages which_page ();
- bool on_newable_page() const;
- int get_current_page () const;
+ int get_current_page() const;
void set_current_page (int);
void reset_recent();
@@ -170,11 +176,6 @@ protected:
Gtk::Notebook* m_notebook;
private:
- enum Pages {
- NewPage = 0x1,
- OpenPage = 0x2,
- EnginePage = 0x4
- };
Pages page_set;
@@ -213,6 +214,7 @@ protected:
void master_bus_button_clicked ();
void monitor_bus_button_clicked ();
+ bool on_new_session_page;
bool have_engine;
};
diff --git a/gtk2_ardour/po/sv_SE.po b/gtk2_ardour/po/sv_SE.po
index 2bf641b089..9804869d95 100644
--- a/gtk2_ardour/po/sv_SE.po
+++ b/gtk2_ardour/po/sv_SE.po
@@ -661,7 +661,7 @@ msgstr ""
"datorn stängdes av.\n"
"\n"
"Ardour kan återhämta inspelade ljud åt\n"
-"dig, eller ignorera dem. Välj\n"
+"dig, eller ignorera dem. Markera\n"
"vad du vill göra.\n"
#: ../ardour_ui.cc:2292
@@ -775,7 +775,7 @@ msgstr "Shuttle-hastighetskontrol"
#: ../ardour_ui2.cc:305
#, c-format
msgid "Select semitones or %%-age for speed display"
-msgstr "Välj halvtoner eller %% för hastighetsvisning"
+msgstr "Markera halvtoner eller %% för hastighetsvisning"
#: ../ardour_ui2.cc:306
msgid "Current transport speed"
@@ -991,6 +991,10 @@ msgstr "Stor klocka"
msgid "About"
msgstr "Om"
+#: gtk2_ardour/ardour_ui_ed.cc:207
+msgid "Theme Manager"
+msgstr "Färgtema"
+
#: ../ardour_ui_ed.cc:194
msgid "Colors"
msgstr "Färger"
@@ -1374,6 +1378,15 @@ msgstr "Inspelningsläge ändras ej vid stopp"
msgid "Region equivalents overlap"
msgstr "Likvärda regioner överlappar"
+#: gtk2_ardour/ardour_ui_ed.cc:416
+msgid "Primary Clock delta to edit cursor"
+msgstr "Primär klockdelta till redigeringspunkten"
+
+#: gtk2_ardour/ardour_ui_ed.cc:417
+msgid "Secondary Clock delta to edit cursor"
+msgstr "Sekundär klockdelta till redigeringspunkten"
+
+
#. session options
#: ../ardour_ui_ed.cc:418
msgid "Do not run plugins while recording"
@@ -1561,6 +1574,18 @@ msgstr "Visa existerande automatisering"
msgid "Hide all automation"
msgstr "Göm all automatisering"
+#: gtk2_ardour/route_time_axis.cc:509
+msgid "Overlaid"
+msgstr "Överlappande"
+
+#: gtk2_ardour/route_time_axis.cc:511
+msgid "Stacked"
+msgstr "I trappa"
+
+#: gtk2_ardour/route_time_axis.cc:514
+msgid "Layers"
+msgstr "Lager"
+
#: ../audio_time_axis.cc:728
msgid "Fader"
msgstr "Volym"
@@ -1666,7 +1691,7 @@ msgstr "Rensa aktuell"
#: ../audio_time_axis.cc:1858 ../editor.cc:2023 ../editor.cc:2099
msgid "Select"
-msgstr "Välj"
+msgstr "Markera"
#: ../automation_line.cc:883
msgid "automation event move"
@@ -2015,7 +2040,7 @@ msgstr "Markörer"
#: gtk2_ardour/editor.cc:126 gtk2_ardour/editor.cc:3550
msgid "Edit Cursor"
-msgstr "Redigeringsmarkör"
+msgstr "Redigeringspunkten"
#: gtk2_ardour/editor.cc:127 gtk2_ardour/editor.cc:3552
msgid "Region starts"
@@ -2055,11 +2080,11 @@ msgstr "Fokus: mitten"
#: gtk2_ardour/editor.cc:135
msgid "Focus Play"
-msgstr "Fokus: spelhuvud"
+msgstr "Fokus: startmarkören"
#: gtk2_ardour/editor.cc:136
msgid "Focus Edit"
-msgstr "Fokus: redigeringsmarkör"
+msgstr "Fokus: redigeringspunkten"
#. time display buttons
#: ../editor.cc:185
@@ -2134,12 +2159,6 @@ msgstr "Fästläge"
msgid "Zoom Focus"
msgstr "Zoomfokus"
-#. </CMT Additions>
-#. nudge
-#: ../editor.cc:236 ../editor.cc:1899 ../editor.cc:2065 ../editor.cc:2121
-msgid "Nudge"
-msgstr "Knuffa"
-
#: ../editor.cc:469
msgid "Zoom in"
msgstr "Zooma in"
@@ -2288,6 +2307,14 @@ msgstr "Visa regionsredigerare"
msgid "Raise to top layer"
msgstr "Höj till översta lagret"
+#: gtk2_ardour/editor.cc:1483
+msgid "Edit..."
+msgstr "Redigera..."
+
+#: gtk2_ardour/editor.cc:1491
+msgid "Define"
+msgstr "Definiera"
+
#: ../editor.cc:1828
msgid "Lower to bottom layer"
msgstr "Sänk till lägsta lagret"
@@ -2304,6 +2331,10 @@ msgstr "Ta bort synk.-punkt"
msgid "Bounce"
msgstr "Skriv till disk"
+#: gtk2_ardour/editor.cc:1494
+msgid "Sync points"
+msgstr "Synkpunkter"
+
#: ../editor.cc:1839
msgid "Analyze region"
msgstr "Analysera regioner"
@@ -2312,10 +2343,23 @@ msgstr "Analysera regioner"
msgid "Lock"
msgstr "Lås"
+#: gtk2_ardour/editor.cc:1510
+msgid "Lock Position"
+msgstr "Lås position"
+
+#: gtk2_ardour/editor.cc:1511
+msgid "Unlock Position"
+msgstr "Frigör position"
+
+
#: gtk2_ardour/editor.cc:1755
msgid "Opaque"
msgstr "Ogenomskinlig"
+#: gtk2_ardour/editor.cc:1515
+msgid "Transparent"
+msgstr "Genomskinlig"
+
#: ../editor.cc:1852
msgid "Unlock"
msgstr "Lås upp"
@@ -2352,6 +2396,38 @@ msgstr "Avnormalisera"
msgid "Normalize"
msgstr "Normalisera"
+#: gtk2_ardour/editor.cc:1563
+msgid "Quantize"
+msgstr "Kvantisera"
+
+#: gtk2_ardour/editor.cc:1570 gtk2_ardour/editor.cc:1638
+msgid "Add range markers"
+msgstr "Lägg till omfångsmarkörer"
+
+#: gtk2_ardour/editor.cc:1572
+msgid "Set range selection"
+msgstr "Ställ in omfångsmarkering"
+
+#: gtk2_ardour/editor.cc:1582
+msgid "Nudge forward"
+msgstr "Knuffa framåt"
+
+#: gtk2_ardour/editor.cc:1583
+msgid "Nudge backward"
+msgstr "Knuffa bakåt"
+
+#: gtk2_ardour/editor.cc:1584
+msgid "Nudge forward by capture offset"
+msgstr "Knuffa framåt utifrån inspelningskompensation"
+
+#: gtk2_ardour/editor.cc:1585
+msgid "Nudge backward by capture offset"
+msgstr "Knuffa bakåt utifrån inspelningskompensation"
+
+#: gtk2_ardour/editor.cc:1587 gtk2_ardour/editor.cc:1788
+msgid "Nudge"
+msgstr "Knuffa"
+
#: ../editor.cc:1878
msgid "Reverse"
msgstr "Motsatt riktning"
@@ -2387,11 +2463,11 @@ msgstr "Knuffa bakåt utifrån inspelningskompensation"
#: ../editor.cc:1906
msgid "Start to edit cursor"
-msgstr "Början till redigeringsmarkören"
+msgstr "Början till redigeringspunkten"
#: ../editor.cc:1907
msgid "Edit cursor to end"
-msgstr "Redigeringsmarkör till slutet"
+msgstr "Redigeringspunkten till slutet"
#: ../editor.cc:1909 ../gain_meter.cc:180 ../gain_meter.cc:808
#: ../panner_ui.cc:97 ../panner_ui.cc:802
@@ -2410,6 +2486,11 @@ msgstr "Skapa monoregioner"
msgid "Duplicate"
msgstr "Duplicera"
+#: gtk2_ardour/editor.cc:1600
+msgid "Fill track"
+msgstr "Fyll spåret"
+
+
#: ../editor.cc:1919
msgid "Fill Track"
msgstr "Fyll spåret"
@@ -2440,11 +2521,11 @@ msgstr "Separera omfång till regionlista"
#: ../editor.cc:1966
msgid "Select all in range"
-msgstr "Välj allt i omfång"
+msgstr "Markera allt i omfång"
#: gtk2_ardour/editor_markers.cc:515
msgid "Select Range"
-msgstr "Välj omfång"
+msgstr "Markera omfång"
#: ../editor.cc:1968 ../editor.cc:2013
msgid "Set range to loop range"
@@ -2484,7 +2565,7 @@ msgstr "Omfång"
#: ../editor.cc:1994 ../editor.cc:2079
msgid "Play from edit cursor"
-msgstr "Spela från redigeringsmarkören"
+msgstr "Spela från redigeringspunkten"
#: ../editor.cc:1995 ../editor.cc:2080
msgid "Play from start"
@@ -2498,41 +2579,53 @@ msgstr "Spela region"
msgid "Loop Region"
msgstr "Loopa region"
+#: gtk2_ardour/editor.cc:1691
+msgid "Loop region"
+msgstr "Loopa region"
+
+#: gtk2_ardour/editor.cc:1701
+msgid "Select all in track"
+msgstr "Markera allt i spåret"
+
+#: gtk2_ardour/editor.cc:1701
+msgid "Select all in tracks"
+msgstr "Markera allt i spåren"
+
+#: gtk2_ardour/editor.cc:1705
+msgid "Select all"
+msgstr "Markera allt"
+
#: ../editor.cc:2008 ../editor.cc:2089
msgid "Select All in track"
-msgstr "Välj allt i spåret"
+msgstr "Markera allt i spåret"
#: ../editor.cc:2009 ../editor.cc:2090 ../redirect_box.cc:1066
msgid "Select All"
-msgstr "Välj allt"
+msgstr "Markera allt"
#: ../editor.cc:2010 ../editor.cc:2091
msgid "Invert selection in track"
msgstr "Invertera i spåret"
-#: ../editor.cc:2011 ../editor.cc:2092
-msgid "Invert selection"
-msgstr "Invertera"
-
#: ../editor.cc:2016 ../editor.cc:2094
msgid "Select all after edit cursor"
-msgstr "Välj allt efter redigeringsmarkören"
+msgstr "Markera allt efter redigeringspunkten"
#: ../editor.cc:2017 ../editor.cc:2095
msgid "Select all before edit cursor"
-msgstr "Välj allt innan redigeringsmarkören"
+msgstr "Markera allt innan redigeringspunkten"
#: ../editor.cc:2018 ../editor.cc:2096
msgid "Select all after playhead"
-msgstr "Välj allt efter startmarkören"
+msgstr "Markera allt efter startmarkören"
#: ../editor.cc:2019 ../editor.cc:2097
msgid "Select all before playhead"
-msgstr "Välj allt innan startmarkören"
+msgstr "Markera allt innan startmarkören"
#: ../editor.cc:2020
msgid "Select all between cursors"
-msgstr "Välj allt mellan markörerna"
+msgstr "Markera allt mellan markörerna"
#. standard editing stuff
#: ../editor.cc:2031 ../editor.cc:2107 ../editor.cc:3482
@@ -2547,7 +2640,7 @@ msgstr "Kopiera"
#: ../editor.cc:2033
msgid "Paste at edit cursor"
-msgstr "Klistra in vid redigeringsmarkören"
+msgstr "Klistra in vid redigeringspunkten"
#: ../editor.cc:2034
msgid "Paste at mouse"
@@ -2561,6 +2654,10 @@ msgstr "Justera"
msgid "Align Relative"
msgstr "Justera relativt"
+#: gtk2_ardour/editor.cc:1747
+msgid "Align relative"
+msgstr "Justera relativt"
+
#: ../editor.cc:2043
msgid "Insert chunk"
msgstr "Infoga bit"
@@ -2575,19 +2672,19 @@ msgstr "Infoga ljudfil"
#: ../editor.cc:2060 ../editor.cc:2116
msgid "Nudge entire track fwd"
-msgstr "Knuffa hela spåret framåt"
+msgstr "Knuffa spåret framåt"
#: ../editor.cc:2061 ../editor.cc:2117
msgid "Nudge track after edit cursor fwd"
-msgstr "Knuffa spåret framåt efter redigeringsmarkören"
+msgstr "Knuffa spåret framåt efter redigeringspunkten"
#: ../editor.cc:2062 ../editor.cc:2118
msgid "Nudge entire track bwd"
-msgstr "Knuffa hela spåret bakåt"
+msgstr "Knuffa spåret bakåt"
#: ../editor.cc:2063 ../editor.cc:2119
msgid "Nudge track after edit cursor bwd"
-msgstr "Knuffa spåret bakåt efter redigeringsmarkören"
+msgstr "Knuffa spåret bakåt efter redigeringspunkten"
#: ../editor.cc:2109 ../editor.cc:3486 ../editor_actions.cc:220
#: ../redirect_box.cc:1063
@@ -2596,11 +2693,11 @@ msgstr "Klistra in"
#: gtk2_ardour/editor.cc:2608
msgid "Select/Move Objects"
-msgstr "Välj/flytta objekt"
+msgstr "Markera/flytta objekt"
#: gtk2_ardour/editor.cc:2609
msgid "Select/Move Ranges"
-msgstr "Välj/flytta omfång"
+msgstr "Markera/flytta omfång"
#: gtk2_ardour/editor.cc:2610
msgid "Draw Gain Automation"
@@ -2608,7 +2705,7 @@ msgstr "Rita volymautomatisering"
#: gtk2_ardour/editor.cc:2611
msgid "Select Zoom Range"
-msgstr "Välj zoom-omfång"
+msgstr "Markera zoom-omfång"
#: gtk2_ardour/editor.cc:2612
msgid "Stretch/Shrink Regions"
@@ -2618,6 +2715,11 @@ msgstr "Förläng/förkorta regioner"
msgid "Listen to Specific Regions"
msgstr "Lyssna på specifika regioner"
+#: gtk2_ardour/editor.cc:2454
+msgid "Edit MIDI Notes"
+msgstr "Redigera MIDI-noter"
+
+
#: ../editor.cc:2745
msgid "Start:"
@@ -2706,15 +2808,15 @@ msgstr "rensa spellistor"
#: ../editor_actions.cc:27
msgid "Select regions"
-msgstr "Välj regioner"
+msgstr "Markera regioner"
#: ../editor_actions.cc:28
msgid "Select range operations"
-msgstr "Välj omfångsåtgärder"
+msgstr "Markera omfångsåtgärder"
#: ../editor_actions.cc:29
msgid "Move edit cursor"
-msgstr "Flytta redigeringsmarkör"
+msgstr "Flytta redigeringspunkten"
#: ../editor_actions.cc:30
msgid "Region operations"
@@ -2819,7 +2921,7 @@ msgstr "Startmarkören till nästa regionslut"
#: ../editor_actions.cc:70
msgid "Playhead to Next Region Sync"
-msgstr "Startmarkören till nästa regionsynk.-punkt"
+msgstr "Startmarkören till nästa regionsynk.-punkten"
#: ../editor_actions.cc:73
msgid "Playhead to Previous Region Start"
@@ -2835,27 +2937,27 @@ msgstr "Startmarkören till förra regionsynk.-punkten"
#: ../editor_actions.cc:80
msgid "Edit Cursor to Next Region Start"
-msgstr "Redigeringsmarkören till nästa regionstart"
+msgstr "Redigeringspunkten till nästa regionstart"
#: ../editor_actions.cc:82
msgid "Edit Cursor to Next Region End"
-msgstr "Redigeringsmarkören till nästa regionslut"
+msgstr "Redigeringspunkten till nästa regionslut"
#: ../editor_actions.cc:84
msgid "Edit Cursor to Next Region Sync"
-msgstr "Redigeringsmarkören till nästa regionssynk.-punkt"
+msgstr "Redigeringspunkten till nästa regionssynk.-punkt"
#: ../editor_actions.cc:87
msgid "Edit Cursor to Previous Region Start"
-msgstr "Redigeringsmarkören till förra regionstart"
+msgstr "Redigeringspunkten till förra regionstart"
#: ../editor_actions.cc:89
msgid "Edit Cursor to Previous Region End"
-msgstr "Redigeringsmarkören till förra regionslutet"
+msgstr "Redigeringspunkten till förra regionslutet"
#: ../editor_actions.cc:91
msgid "Edit Cursor to Previous Region Sync"
-msgstr "Redigeringsmarkören till förra regionssynk.-punkten"
+msgstr "Redigeringspunkten till förra regionssynk.-punkten"
#: ../editor_actions.cc:94
msgid "Playhead to Range Start"
@@ -2867,43 +2969,43 @@ msgstr "Startmarkören till omfångslutet"
#: ../editor_actions.cc:99
msgid "Edit Cursor to Range Start"
-msgstr "Redigeringsmarkören till omfångstarten"
+msgstr "Redigeringspunkten till omfångstarten"
#: ../editor_actions.cc:101
msgid "Edit Cursor to Range End"
-msgstr "Redigeringsmarkören till omfångslutet"
+msgstr "Redigeringspunkten till omfångslutet"
#: ../editor_actions.cc:104 ../editor_ops.cc:1364
msgid "select all"
-msgstr "Välj allt"
+msgstr "Markera allt"
#: ../editor_actions.cc:106
msgid "Select All After Edit Cursor"
-msgstr "Välj allt efter redigeringsmarkören"
+msgstr "Markera allt efter redigeringspunkten"
#: ../editor_actions.cc:108
msgid "Select All Before Edit Cursor"
-msgstr "Välj allt innan redigeringsmarkören"
+msgstr "Markera allt innan redigeringspunkten"
#: ../editor_actions.cc:111
msgid "Select All After Playhead"
-msgstr "Välj allt efter startmarkören"
+msgstr "Markera allt efter startmarkören"
#: ../editor_actions.cc:113
msgid "Select All Before Playhead"
-msgstr "Välj allt innan startmarkören"
+msgstr "Markera allt innan startmarkören"
#: ../editor_actions.cc:115
msgid "Select All Between Cursors"
-msgstr "Välj allt mellan markörerna"
+msgstr "Markera allt mellan markörerna"
#: ../editor_actions.cc:118
msgid "Select All in Punch Range"
-msgstr "Välj allt i inslagsomfånget"
+msgstr "Markera allt i inslagsomfånget"
#: ../editor_actions.cc:120
msgid "Select All in Loop Range"
-msgstr "Välj allt i loop-omfånget"
+msgstr "Markera allt i loop-omfånget"
#: ../editor_actions.cc:123
msgid "Jump Forward to Mark"
@@ -2983,7 +3085,7 @@ msgstr "Centrera startmarkören"
#: ../editor_actions.cc:163
msgid "Center Edit Cursor"
-msgstr "Centrera redigeringsmarkören"
+msgstr "Centrera redigeringspunkten"
#: ../editor_actions.cc:165
msgid "Playhead Forward"
@@ -2999,11 +3101,11 @@ msgstr "Startmarkören bakåt"
#: ../editor_actions.cc:169
msgid "Playhead to Edit"
-msgstr "Startmarkören till redigeringsmarkören"
+msgstr "Startmarkören till redigeringspunkten"
#: ../editor_actions.cc:171
msgid "Edit to Playhead"
-msgstr "Redigeringsmarkören till Startmarkören"
+msgstr "Redigeringspunkten till Startmarkören"
#: ../editor_actions.cc:174
msgid "Align Regions Start"
@@ -3039,7 +3141,7 @@ msgstr "Måla vid mus"
#: ../editor_actions.cc:192
msgid "Set Edit Cursor"
-msgstr "Placera redigeringsmarkör"
+msgstr "Placera redigeringspunkten"
#: ../editor_actions.cc:194
msgid "Mute/Unmute Region"
@@ -3087,8 +3189,12 @@ msgid "Reverse Region"
msgstr "Motsatt riktning"
#: ../editor_actions.cc:230
-msgid "Normalize Region"
-msgstr "Normalisera region"
+msgid "Normalize Regions"
+msgstr "Normalisera regioner"
+
+#: gtk2_ardour/editor_actions.cc:257
+msgid "Quantize Regions"
+msgstr "Kvantisera regioner"
#: ../editor_actions.cc:232
msgid "crop"
@@ -3100,7 +3206,7 @@ msgstr "Infoga bit"
#: ../editor_actions.cc:237
msgid "Split at edit cursor"
-msgstr "Dela vid redigeringsmarkör"
+msgstr "Dela vid redigeringspunkten"
#: ../editor_actions.cc:240
msgid "Start Range"
@@ -3144,7 +3250,7 @@ msgstr "Zoomfokus: startmarkören"
#: ../editor_actions.cc:268
msgid "Zoom Focus Edit"
-msgstr "Zoomfokus: redigeringsmarkör"
+msgstr "Zoomfokus: redigeringspunkten"
#: ../editor_actions.cc:274
msgid "Object Tool"
@@ -3228,7 +3334,7 @@ msgstr "Fäst mot markörer"
#: ../editor_actions.cc:300
msgid "Snap to edit cursor"
-msgstr "Fäst mot redigeringsmarkören"
+msgstr "Fäst mot redigeringspunkten"
#: ../editor_actions.cc:301
msgid "Snap to region start"
@@ -3457,7 +3563,7 @@ msgid ""
msgstr ""
"Det finns ingen markering att exportera.\n"
"\n"
-"Välj en markering i omfångsläget"
+"Markera en markering i omfångsläget"
#: ../editor_export_audio.cc:109
msgid ""
@@ -3564,7 +3670,7 @@ msgstr "Separera regioner i omfånget"
#: ../editor_markers.cc:493 ../editor_markers.cc:542
msgid "Select All in Range"
-msgstr "Välj allt i omfånget"
+msgstr "Markera allt i omfånget"
#: ../editor_markers.cc:519
msgid "Set Loop Range"
@@ -3797,7 +3903,7 @@ msgstr ""
#: ../editor_ops.cc:1421
msgid "select all within"
-msgstr "välj allt inom"
+msgstr "markera allt inom"
#: ../editor_ops.cc:1453
msgid "set selection from region"
@@ -3809,27 +3915,27 @@ msgstr "ställ markering från omfång"
#: ../editor_ops.cc:1516
msgid "select all from range"
-msgstr "välj allt inom omfång"
+msgstr "markera allt inom omfång"
#: ../editor_ops.cc:1538
msgid "select all from punch"
-msgstr "välj allt från inslag"
+msgstr "markera allt från inslag"
#: ../editor_ops.cc:1560
msgid "select all from loop"
-msgstr "välj allt från loop"
+msgstr "markera allt från loop"
#: ../editor_ops.cc:1574
msgid "select all after cursor"
-msgstr "välj allt efter markör"
+msgstr "markera allt efter markör"
#: ../editor_ops.cc:1579
msgid "select all before cursor"
-msgstr "välj allt före markör"
+msgstr "markera allt före markör"
#: ../editor_ops.cc:1609
msgid "select all between cursors"
-msgstr "välj allt mellan markörerna"
+msgstr "markera allt mellan markörerna"
#: ../editor_ops.cc:1740
msgid "clear markers"
@@ -3889,7 +3995,7 @@ msgstr "Placera redigerinsmarkören på avsedd synk.-punkt"
#: ../editor_ops.cc:2532
msgid "set sync from edit cursor"
-msgstr "ställ synk. från redigeringsmarkör"
+msgstr "ställ synk. från redigeringspunkten"
#: ../editor_ops.cc:2544
msgid "remove sync"
@@ -4103,7 +4209,7 @@ msgstr "ta bort tempomarkör"
#: ../editor_timefx.cc:50
msgid "Quick but Ugly"
-msgstr "Snabbt men Fult"
+msgstr "Snabbt men fult"
#: ../editor_timefx.cc:51
msgid "Skip Anti-aliasing"
@@ -4121,6 +4227,10 @@ msgstr "TidsTänjningsDialog"
msgid "Stretch/Shrink it"
msgstr "Förläng/Förkorta den"
+#: gtk2_ardour/editor_timefx.cc:116
+msgid "Stretch/Shrink"
+msgstr "Förläng/Förkorta"
+
#: ../editor_timefx.cc:72 ../editor_timefx.cc:73
msgid "TimeStretchButton"
msgstr "TidsTänjningsKnapp"
@@ -4594,11 +4704,11 @@ msgstr ""
#: ../location_ui.cc:603
msgid "Location (CD Index) Markers"
-msgstr "Plats-markörer (CD-Index)"
+msgstr "Platsmarkörer (CD-Index)"
#: ../location_ui.cc:623
msgid "Range (CD Track) Markers"
-msgstr "Omfång-markörer (CD-spår)"
+msgstr "Omfångsmarkörer (CD-spår)"
#: ../location_ui.cc:789
msgid "add range marker"
@@ -4936,7 +5046,7 @@ msgstr "Namn:"
#: gtk2_ardour/new_session_dialog.cc:79
msgid "Create Folder In :"
-msgstr "Skapa katalog i:"
+msgstr "Skapa i:"
#: gtk2_ardour/new_session_dialog.cc:72
msgid "Template :"
@@ -5139,11 +5249,11 @@ msgstr "frånkopplad"
#: ../option_editor.cc:669
msgid "Choose Click"
-msgstr "Välj klick"
+msgstr "Markera klick"
#: ../option_editor.cc:688
msgid "Choose Click Emphasis"
-msgstr "Välj klickbetoning"
+msgstr "Markera klickbetoning"
#: ../option_editor.cc:802
msgid "Click audio file"
@@ -5692,7 +5802,7 @@ msgstr "ardour: spår/buss-inspektör"
#: ../route_params_ui.cc:698
msgid "No Route Selected"
-msgstr "Ingen Rutt Vald"
+msgstr "Ingen rutt vald"
#: ../route_params_ui.cc:699
msgid "ardour: track/bus/inspector: no route selected"
@@ -6086,3 +6196,869 @@ msgstr "stopp"
msgid "Logarithmic"
msgstr "Logaritmisk"
+#: gtk2_ardour/ardour_ui_ed.cc:98
+msgid "Denormal Handling"
+msgstr "Denormal-hantering"
+
+#: gtk2_ardour/ardour_ui_ed.cc:423
+msgid "Use DC bias"
+msgstr "Använd DC-bias"
+
+#: gtk2_ardour/ardour_ui_ed.cc:427
+msgid "No processor handling"
+msgstr "Ingen processorhantering"
+
+#: gtk2_ardour/ardour_ui_ed.cc:429
+msgid "Use FlushToZero"
+msgstr "Använd FlushToZero"
+
+#: gtk2_ardour/ardour_ui_ed.cc:433
+msgid "Use DenormalsAreZero"
+msgstr "Använda DenormalsAreZero"
+
+#: gtk2_ardour/ardour_ui_ed.cc:437
+msgid "Use FlushToZero & DenormalsAreZero"
+msgstr "Använd FlushToZero och DenormalsAreZero"
+
+#: gtk2_ardour/midi_time_axis.cc:181
+msgid "Note range"
+msgstr "Notomfång"
+
+#: gtk2_ardour/midi_time_axis.cc:173
+msgid "Show Full Range"
+msgstr "Visa hela omfånget"
+
+#: gtk2_ardour/midi_time_axis.cc:177
+msgid "Fit Contents"
+msgstr "Anpassa innehållet"
+
+
+#: gtk2_ardour/midi_time_axis.cc:163
+msgid "Controller..."
+msgstr "Kontrollerare..."
+
+#: gtk2_ardour/midi_controller_time_axis.cc:65
+msgid "add midi controller automation event"
+msgstr "lägg till automatiseringshändelse för midi-kontroller"
+
+#: gtk2_ardour/ardour_ui_ed.cc:450
+msgid "Disable All Plugins"
+msgstr "Avaktivera alla insticksprogram"
+
+#: gtk2_ardour/ardour_ui_ed.cc:452
+msgid "A/B All Plugins"
+msgstr "A/B:a alla insticksprogram"
+
+#: gtk2_ardour/engine_dialog.cc:46
+msgid "Realtime"
+msgstr "Realtid"
+
+#: gtk2_ardour/engine_dialog.cc:47
+msgid "Do not lock memory"
+msgstr "Lås ej minnet"
+
+#: gtk2_ardour/engine_dialog.cc:48
+msgid "Unlock memory"
+msgstr "Frigör minnet"
+
+#: gtk2_ardour/engine_dialog.cc:49
+msgid "No zombies"
+msgstr "Inga zombies"
+
+#: gtk2_ardour/engine_dialog.cc:50
+msgid "Provide monitor ports"
+msgstr "Skapa medhörningsportar"
+
+#: gtk2_ardour/engine_dialog.cc:51
+msgid "Force 16 bit"
+msgstr "Tvinga 16 bit"
+
+#: gtk2_ardour/engine_dialog.cc:52
+msgid "H/W monitoring"
+msgstr "Hårdvarumedhörning"
+
+#: gtk2_ardour/engine_dialog.cc:53
+msgid "H/W metering"
+msgstr "Hårdvarunivåmätning"
+
+#: gtk2_ardour/engine_dialog.cc:54
+msgid "Verbose output"
+msgstr "Utförlig information"
+
+#: gtk2_ardour/engine_dialog.cc:55
+msgid "Start"
+msgstr ""
+
+#: gtk2_ardour/engine_dialog.cc:74
+msgid "8000Hz"
+msgstr ""
+
+#: gtk2_ardour/engine_dialog.cc:75
+msgid "22050Hz"
+msgstr ""
+
+#: gtk2_ardour/engine_dialog.cc:76
+msgid "44100Hz"
+msgstr ""
+
+#: gtk2_ardour/engine_dialog.cc:77
+msgid "48000Hz"
+msgstr ""
+
+#: gtk2_ardour/engine_dialog.cc:78
+msgid "88200Hz"
+msgstr ""
+
+#: gtk2_ardour/engine_dialog.cc:79
+msgid "96000Hz"
+msgstr ""
+
+#: gtk2_ardour/engine_dialog.cc:80
+msgid "192000Hz"
+msgstr ""
+
+
+#: gtk2_ardour/engine_dialog.cc:129 gtk2_ardour/engine_dialog.cc:435
+#: gtk2_ardour/engine_dialog.cc:824
+msgid "Playback/Recording on 1 Device"
+msgstr "Upp-/inspelning på 1 enhet"
+
+#: gtk2_ardour/engine_dialog.cc:130 gtk2_ardour/engine_dialog.cc:439
+#: gtk2_ardour/engine_dialog.cc:464 gtk2_ardour/engine_dialog.cc:827
+msgid "Playback/Recording on 2 Devices"
+msgstr "Upp-/inspelning på 2 enheter"
+
+#: gtk2_ardour/engine_dialog.cc:131 gtk2_ardour/engine_dialog.cc:446
+#: gtk2_ardour/engine_dialog.cc:830
+msgid "Playback only"
+msgstr "Uppspelning endast"
+
+#: gtk2_ardour/engine_dialog.cc:132 gtk2_ardour/engine_dialog.cc:448
+#: gtk2_ardour/engine_dialog.cc:832
+msgid "Recording only"
+msgstr "Inspelning endast"
+
+#: gtk2_ardour/engine_dialog.cc:141
+msgid "Driver"
+msgstr "Drivrutin"
+
+#: gtk2_ardour/engine_dialog.cc:146
+msgid "Interface"
+msgstr "Enhet"
+
+#: gtk2_ardour/engine_dialog.cc:162
+msgid "Number of buffers"
+msgstr "Antal buffertar"
+
+#: gtk2_ardour/engine_dialog.cc:169
+msgid "Approximate latency"
+msgstr "Ungefärlig fördröjning"
+
+#: gtk2_ardour/engine_dialog.cc:183
+msgid "Audio Mode"
+msgstr "Audio-läge"
+
+#: gtk2_ardour/engine_dialog.cc:222
+msgid "Realtime Priority"
+msgstr "Realtidsprioritering"
+
+#: gtk2_ardour/engine_dialog.cc:251 gtk2_ardour/engine_dialog.cc:374
+msgid "Ignore"
+msgstr "Ignorera"
+
+#: gtk2_ardour/engine_dialog.cc:259
+msgid "Client timeout"
+msgstr "Klient-timeout"
+
+#: gtk2_ardour/engine_dialog.cc:265
+msgid "Number of ports"
+msgstr "Antal portar"
+
+#: gtk2_ardour/engine_dialog.cc:272
+msgid "Dither"
+msgstr ""
+
+#: gtk2_ardour/engine_dialog.cc:282
+msgid ""
+"No JACK server found anywhere on this system. Please install JACK and restart"
+msgstr ""
+"Ingen JACK-server hittades. Installera JACK och starta om"
+
+#: gtk2_ardour/engine_dialog.cc:290
+msgid "Server:"
+msgstr ""
+
+#: gtk2_ardour/engine_dialog.cc:303
+msgid "Input device"
+msgstr "Inljudsenhet"
+
+#: gtk2_ardour/engine_dialog.cc:308
+msgid "Output device"
+msgstr "Utljudsenhet"
+
+#: gtk2_ardour/engine_dialog.cc:314
+msgid "Input channels"
+msgstr "Ingångar"
+
+#: gtk2_ardour/engine_dialog.cc:319
+msgid "Output channels"
+msgstr "Utgångar"
+
+#: gtk2_ardour/engine_dialog.cc:324
+msgid "Hardware input latency (samples)"
+msgstr "Hårdvarans ingångsfördröjning (smpl)"
+
+#: gtk2_ardour/engine_dialog.cc:329
+msgid "Hardware output latency (samples)"
+msgstr "Hårdvarans utgångsfördröjning (smpl)"
+
+#: gtk2_ardour/engine_dialog.cc:342
+msgid "Device"
+msgstr "Enhet"
+
+#: gtk2_ardour/engine_dialog.cc:344
+msgid "Advanced"
+msgstr "Avancerat"
+
+#: gtk2_ardour/engine_dialog.cc:537
+msgid "cannot open JACK rc file %1 to store parameters"
+msgstr "kan ej öppna JACKs rc-fil %1 för att lagra parametrar"
+
+#: gtk2_ardour/engine_dialog.cc:559
+msgid "could not start JACK server: "
+msgstr "kunde inte starta JACK-servern:"
+
+#: gtk2_ardour/engine_dialog.cc:863
+msgid "JACK appears to be missing from the Ardour bundle"
+msgstr "JACK tycks saknas från Ardours bundle"
+
+#: gtk2_ardour/engine_dialog.cc:1047
+msgid "AudioSetup value for %1 is missing data"
+msgstr "AudioSetup-värde för %1 saknar data"
+
+#: gtk2_ardour/engine_dialog.cc:1127
+msgid "configuration files contain a JACK server path that doesn't exist (%1)"
+msgstr "konfigurationsfilerna anger en JACK-serversökväg som inte existerar"
+
+#: gtk2_ardour/engine_dialog.cc:101 gtk2_ardour/engine_dialog.cc:484
+msgid "Shaped"
+msgstr "Formad"
+
+#: gtk2_ardour/ardour_ui_ed.cc:300
+msgid "Focus On Clock"
+msgstr "Fokus på klockan"
+
+#: gtk2_ardour/editor_markers.cc:467
+#msgid "Locate to Mark"
+#msgstr "Flytta startmarkören till platsmarkör"
+
+#: gtk2_ardour/editor_actions.cc:295
+msgid "Separate"
+msgstr "Separera"
+
+#: gtk2_ardour/editor_actions.cc:297 gtk2_ardour/editor_actions.cc:320
+msgid "Crop"
+msgstr "Beskär"
+
+#: gtk2_ardour/editor_actions.cc:302 gtk2_ardour/redirect_box.cc:1208
+#: gtk2_ardour/connection_editor.cc:55
+#msgid "Delete"
+#msgstr "Radera"
+
+#: gtk2_ardour/editor_actions.cc:51
+msgid "Move Selected Marker"
+msgstr "Flytta vald platsmarkör"
+
+#: gtk2_ardour/editor_actions.cc:106
+msgid "to Next Region Start"
+msgstr "till nästa regions början"
+
+#: gtk2_ardour/editor_actions.cc:108
+msgid "to Next Region End"
+msgstr "till nästa regions slut"
+
+#: gtk2_ardour/editor_actions.cc:110
+msgid "to Next Region Sync"
+msgstr "till nästa regions synk.-punkt"
+
+#: gtk2_ardour/editor_actions.cc:113
+msgid "to Previous Region Start"
+msgstr "till förra regionens början"
+
+#: gtk2_ardour/editor_actions.cc:115
+msgid "to Previous Region End"
+msgstr "till förra regionens slut"
+
+#: gtk2_ardour/editor_actions.cc:117
+msgid "to Previous Region Sync"
+msgstr "till förra regionens synk.-punkt"
+
+#: gtk2_ardour/editor_actions.cc:120
+msgid "to Range Start"
+msgstr "till omfångsmarkeringens början"
+
+#: gtk2_ardour/editor_actions.cc:122
+msgid "to Range End"
+msgstr "till omfångsmarkeringens slut"
+
+#: gtk2_ardour/editor_actions.cc:223
+msgid "Center Edit Point"
+msgstr "Redigeringspunktens mitt"
+
+#: gtk2_ardour/editor_actions.cc:278
+msgid "Set Edit Point"
+msgstr "Markera redigeringspunkten"
+
+#: gtk2_ardour/editor_actions.cc:375
+msgid "Change edit point"
+msgstr "Ändra redigeringspunkten"
+
+#: gtk2_ardour/editor_actions.cc:379
+msgid "Toggle Edit Mode"
+msgstr "Skifta redigeringsläge"
+
+#: gtk2_ardour/editor.cc:1949 gtk2_ardour/editor_actions.cc:150
+msgid "Select Range Between Playhead & Edit Point"
+msgstr "Markera omfång mellan startmarkör & redigeringspunkten"
+
+#: gtk2_ardour/editor_actions.cc:134
+msgid "Invert Selection"
+msgstr "Invertera"
+
+#: gtk2_ardour/editor.cc:1943 gtk2_ardour/editor_actions.cc:136
+msgid "Select All After Edit Point"
+msgstr "Markera allt efter redigeringspunkten"
+
+#: gtk2_ardour/editor.cc:1944 gtk2_ardour/editor_actions.cc:138
+msgid "Select All Before Edit Point"
+msgstr "Markera allt innan redigeringspunkten"
+
+#: gtk2_ardour/editor.cc:1945 gtk2_ardour/editor_actions.cc:141
+#msgid "Select All After Playhead"
+#msgstr "Markera allt efter startmarkören"
+
+#: gtk2_ardour/editor.cc:1946 gtk2_ardour/editor_actions.cc:143
+#msgid "Select All Before Playhead"
+#msgstr "Markera allt efter startmarkören"
+
+#: gtk2_ardour/editor.cc:1947 gtk2_ardour/editor_actions.cc:145
+msgid "Select All Between Playhead & Edit Point"
+msgstr "Markera allt mellan startmarkör & redigeringspunkten"
+
+#: gtk2_ardour/editor.cc:1948 gtk2_ardour/editor_actions.cc:147
+msgid "Select All Within Playhead & Edit Point"
+msgstr "Markera allt inom startmarkör & redigeringspunkten"
+
+#: gtk2_ardour/editor.cc:1949 gtk2_ardour/editor_actions.cc:150
+#msgid "Select Range Between Playhead & Edit Point"
+#msgstr "Markera omfång mellan startmarkör & redigeringspunkten"
+
+#: gtk2_ardour/editor_actions.cc:310
+msgid "Multi-Duplicate Region"
+msgstr "Multiduplicera region"
+
+
+#: gtk2_ardour/editor_actions.cc:318
+msgid "Normalize Region"
+msgstr "Normalisera region"
+
+#: gtk2_ardour/editor_actions.cc:236
+msgid "Trim front at edit point"
+msgstr "Beskär början vid redingeringspunkt"
+
+#: gtk2_ardour/editor_actions.cc:238
+msgid "Trim back at edit point"
+msgstr "Beskär slutet vid redingerspunkt"
+
+#: gtk2_ardour/editor.cc:1830 gtk2_ardour/editor_actions.cc:241
+msgid "Start to edit point"
+msgstr "Början till redigeringspunkten"
+
+#: gtk2_ardour/editor.cc:1831 gtk2_ardour/editor_actions.cc:243
+msgid "Edit point to end"
+msgstr "Redigeringspunkt till slutet"
+
+#: gtk2_ardour/editor.cc:1832 gtk2_ardour/editor_actions.cc:245
+msgid "Trim To Loop"
+msgstr "Beskär till loop"
+
+#: gtk2_ardour/editor.cc:1833 gtk2_ardour/editor_actions.cc:247
+msgid "Trim To Punch"
+msgstr "Beskär till in-/utslag"
+
+#: gtk2_ardour/ardour_ui_ed.cc:413
+msgid "Sync Editor and Mixer track order"
+msgstr "Matcha Redigerare och Mixers spårordning"
+
+
+#: gtk2_ardour/ardour_ui_ed.cc:212
+msgid "Keybindings"
+msgstr "Kortkommandon"
+
+#: gtk2_ardour/keyeditor.cc:21
+msgid "Keybinding Editor"
+msgstr "Kortkommandon"
+
+#: gtk2_ardour/keyeditor.cc:29
+msgid "Action"
+msgstr "Händelse"
+
+#: gtk2_ardour/keyeditor.cc:30
+msgid "Binding"
+msgstr "Bindning"
+
+#: gtk2_ardour/ardour_ui_ed.cc:422
+msgid "Primary Clock delta to edit point"
+msgstr "Primär klock-delta till redigeringspunkten"
+
+#: gtk2_ardour/ardour_ui_ed.cc:423
+msgid "Secondary Clock delta to edit point"
+msgstr "Sekundär klock-delta till redigeringspunkta"
+
+#: gtk2_ardour/ardour_ui_ed.cc:424
+msgid "Enable Editor Meters"
+msgstr "Sätt på nivåmätare i redigeraren"
+
+#: gtk2_ardour/ardour_ui_ed.cc:425
+msgid "Always copy imported files"
+msgstr "Kopiera alltid importerade filer"
+
+#: gtk2_ardour/ardour_ui_ed.cc:201 gtk2_ardour/option_editor.cc:117
+msgid "Preferences"
+msgstr "Inställningar"
+
+#: gtk2_ardour/option_editor.cc:84
+msgid "Timecode source is sample-clock synced"
+msgstr "Tidskodens källa är samplingsklocka-synkad"
+
+#: gtk2_ardour/option_editor.cc:149
+msgid "Misc"
+msgstr "Diverse"
+
+#: gtk2_ardour/option_editor.cc:77
+msgid "Limit undo history"
+msgstr "Begränsa ångrahistoriken"
+
+#: gtk2_ardour/option_editor.cc:78
+msgid "Save undo history"
+msgstr "Spara ångrahistorik"
+
+#: gtk2_ardour/option_editor.cc:288
+msgid "History depth (commands)"
+msgstr "Historikdjup (kommandon)"
+
+#: gtk2_ardour/option_editor.cc:309
+msgid "Saved history depth (commands)"
+msgstr "Sparad historiks djup (kommando)"
+
+#: gtk2_ardour/new_session_dialog.cc:460
+msgid "Audio Setup"
+msgstr "Ljudinställningar"
+
+#: gtk2_ardour/editor.cc:131 gtk2_ardour/editor.cc:3237
+#: gtk2_ardour/editor_actions.cc:401
+msgid "No Grid"
+msgstr "Inget rutnät"
+
+#: gtk2_ardour/editor.cc:132 gtk2_ardour/editor.cc:3239
+#: gtk2_ardour/editor_actions.cc:402
+msgid "Grid"
+msgstr "Rutnät"
+
+#: gtk2_ardour/editor.cc:140 gtk2_ardour/editor.cc:149
+#: gtk2_ardour/editor.cc:3307 gtk2_ardour/editor_actions.cc:387
+msgid "Mouse"
+msgstr "Mus"
+
+#: gtk2_ardour/editor.cc:2734
+msgid "Zoom focus"
+msgstr "Zoom-fokus"
+
+#: gtk2_ardour/editor.cc:2748
+msgid "Snap/Grid Units"
+msgstr "Fästläge/rutnätsenheter"
+
+#: gtk2_ardour/editor.cc:2754
+msgid "Snap/Grid Mode"
+msgstr "Fästläge/rutnätsläge"
+
+#: gtk2_ardour/editor.cc:2760
+msgid "Edit point"
+msgstr "redigeringspunkten"
+
+#: gtk2_ardour/ardour_ui2.cc:347
+msgid ""
+"When active, something is soloed.\n"
+"Click to de-solo everything"
+msgstr ""
+"I aktivt läge är valda kanaler i sololäge.\n"
+"Klicka för att stänga av"
+
+#: gtk2_ardour/ardour_ui2.cc:348
+msgid ""
+"When active, auditioning is taking place\n"
+"Click to stop the audition"
+msgstr ""
+"I aktivt läge avlyssnas något\n"
+"Klicka för att stoppa avlyssningen"
+
+#: gtk2_ardour/editor.cc:1846
+msgid "Multi-Duplicate"
+msgstr "Multiduplicera"
+
+#: gtk2_ardour/editor.cc:186 gtk2_ardour/editor_rulers.cc:430
+msgid "CD Markers"
+msgstr "CD-markörer"
+
+#: gtk2_ardour/editor.cc:1939 gtk2_ardour/editor.cc:2022
+msgid "Invert selection"
+msgstr "Invertera markeringen"
+
+#: gtk2_ardour/editor.cc:1991 gtk2_ardour/editor.cc:2047
+msgid "Nudge track after edit point fwd"
+msgstr "Knuffa spåret framåt efter redigeringspunkten"
+
+#: gtk2_ardour/editor.cc:1993 gtk2_ardour/editor.cc:2049
+msgid "Nudge track after edit point bwd"
+msgstr "Knuffa spåret bakåt efter redigeringspunkten"
+
+#: gtk2_ardour/ardour_ui.cc:2082
+msgid "Starting audio engine"
+msgstr "Startar ljudsystemet"
+
+#: gtk2_ardour/ardour_ui.cc:2352
+msgid "Please wait while Ardour loads your session"
+msgstr "Vänta medan Ardour laddar din session"
+
+#: gtk2_ardour/editor_ops.cc:2170
+msgid "Rename Region"
+msgstr "Byt namn på region"
+
+#: gtk2_ardour/editor_ops.cc:2174
+msgid "New name:"
+msgstr "Nytt namn:"
+
+
+#: gtk2_ardour/editor_actions.cc:226 gtk2_ardour/editor_actions.cc:228
+msgid "to Center"
+msgstr "Startmarkören till mitten"
+
+#: gtk2_ardour/editor_actions.cc:236
+msgid "to Edit"
+msgstr "Startmarkören till redigeringspunkten"
+
+#: gtk2_ardour/editor_actions.cc:241
+msgid "Trim start at edit point"
+msgstr "Beskär början vid redigeringspunkten"
+
+#: gtk2_ardour/editor_actions.cc:243
+msgid "Trim end at edit point"
+msgstr "Beskär slutet vid redigeringspunkten"
+
+#: gtk2_ardour/editor_actions.cc:169
+msgid "Locate to Mark 1"
+msgstr "Hoppa till markör 1"
+
+#: gtk2_ardour/editor_actions.cc:171
+msgid "Locate to Mark 2"
+msgstr "Hoppa till markör 2"
+
+#: gtk2_ardour/editor_actions.cc:173
+msgid "Locate to Mark 3"
+msgstr "Hoppa till markör 3"
+
+#: gtk2_ardour/editor_actions.cc:175
+msgid "Locate to Mark 4"
+msgstr "Hoppa till markör 4"
+
+#: gtk2_ardour/editor_actions.cc:177
+msgid "Locate to Mark 5"
+msgstr "Hoppa till markör 5"
+
+#: gtk2_ardour/editor_actions.cc:179
+msgid "Locate to Mark 6"
+msgstr "Hoppa till markör 6"
+
+#: gtk2_ardour/editor_actions.cc:181
+msgid "Locate to Mark 7"
+msgstr "Hoppa till markör 7"
+
+#: gtk2_ardour/editor_actions.cc:183
+msgid "Locate to Mark 8"
+msgstr "Hoppa till markör 8"
+
+#: gtk2_ardour/editor_actions.cc:185
+msgid "Locate to Mark 9"
+msgstr "Hoppa till markör 9"
+
+#: gtk2_ardour/audio_clock.cc:1888 gtk2_ardour/editor.cc:180
+#: gtk2_ardour/editor_rulers.cc:390
+msgid "Samples"
+msgstr "Samplingar"
+
+#: gtk2_ardour/editor.cc:1924 gtk2_ardour/editor.cc:2011
+msgid "Play from edit point"
+msgstr "Spela från redigeringspunkten"
+
+#: gtk2_ardour/editor_actions.cc:70
+msgid "Link Region/Track Selection"
+msgstr "Lås region/spår-markeringen"
+
+#: gtk2_ardour/sfdb_ui.cc:425
+msgid "Browse Files"
+msgstr "Bläddra"
+
+#: gtk2_ardour/sfdb_ui.cc:426
+msgid "Search Tags"
+msgstr "Sök taggar"
+
+#: gtk2_ardour/sfdb_ui.cc:434
+msgid "Audio files"
+msgstr "Ljudfiler"
+
+#: gtk2_ardour/sfdb_ui.cc:437
+msgid "All files"
+msgstr "Alla filer"
+
+#: gtk2_ardour/sfdb_ui.cc:1002
+msgid "Add files:"
+msgstr "Lägg till:"
+
+#: gtk2_ardour/sfdb_ui.cc:1024
+msgid "Insert:"
+msgstr "Infoga:"
+
+#: gtk2_ardour/sfdb_ui.cc:1037
+msgid "Mapping:"
+msgstr "Lägg som:"
+
+#: gtk2_ardour/sfdb_ui.cc:1055
+msgid "Conversion Quality:"
+msgstr "Konverteringskvalitet:"
+
+#: gtk2_ardour/sfdb_ui.cc:91 gtk2_ardour/sfdb_ui.cc:100
+msgid "as new tracks"
+msgstr "som nya spår"
+
+#: gtk2_ardour/sfdb_ui.cc:93
+msgid "to selected tracks"
+msgstr "till valda spår"
+
+#: gtk2_ardour/sfdb_ui.cc:95
+msgid "to region list"
+msgstr "till regionslistan"
+
+#: gtk2_ardour/sfdb_ui.cc:97
+msgid "as new tape tracks"
+msgstr "som nya bandspår"
+
+#: gtk2_ardour/sfdb_ui.cc:109
+msgid "Auto-play"
+msgstr "Spela automatiskt"
+
+#: gtk2_ardour/sfdb_ui.cc:994 gtk2_ardour/sfdb_ui.cc:1129
+msgid "use file timestamp"
+msgstr "använd timestamp i filen"
+
+#: gtk2_ardour/sfdb_ui.cc:995 gtk2_ardour/sfdb_ui.cc:1131
+msgid "at edit point"
+msgstr "vid redigeringspunkten"
+
+#: gtk2_ardour/sfdb_ui.cc:996 gtk2_ardour/sfdb_ui.cc:1133
+msgid "at playhead"
+msgstr "vid startmarkören"
+
+#: gtk2_ardour/sfdb_ui.cc:997
+msgid "at session start"
+msgstr "vid början"
+
+#: gtk2_ardour/sfdb_ui.cc:118 gtk2_ardour/sfdb_ui.cc:228
+msgid "<b>Soundfile Info</b>"
+msgstr "<b>Information</b>"
+
+#: gtk2_ardour/sfdb_ui.cc:129
+msgid "Length:"
+msgstr "Längd:"
+
+#: gtk2_ardour/sfdb_ui.cc:130
+msgid "Timestamp:"
+msgstr ""
+
+#: gtk2_ardour/sfdb_ui.cc:131
+msgid "Format:"
+msgstr ""
+
+#: gtk2_ardour/sfdb_ui.cc:132
+msgid "Channels:"
+msgstr "Kanaler:"
+
+#: gtk2_ardour/sfdb_ui.cc:133 gtk2_ardour/sfdb_ui.cc:248
+#: gtk2_ardour/sfdb_ui.cc:253
+msgid "Sample rate:"
+msgstr "Samplingsfrekvens:"
+
+#: gtk2_ardour/sfdb_ui.cc:165
+msgid "Tags:"
+msgstr "Taggar:"
+
+#: gtk2_ardour/sfdb_ui.cc:175
+msgid "Play (double click)"
+msgstr "Spela (dblklicka)"
+
+#: gtk2_ardour/sfdb_ui.cc:847
+msgid ""
+"One or more of the selected files\n"
+"cannot be used by Ardour"
+msgstr ""
+"En eller flera filer kunde\n"
+"inte användas av Ardour"
+
+#: gtk2_ardour/sfdb_ui.cc:978
+msgid "Copy files to session"
+msgstr "Kopiera filer till sessionen"
+
+#: gtk2_ardour/keyeditor.cc:28
+msgid "Remove shortcut"
+msgstr "Ta bort kortkommando"
+
+#: gtk2_ardour/keyeditor.cc:39
+msgid "Shortcut"
+msgstr "Kortkommando"
+
+#: gtk2_ardour/keyeditor.cc:27
+msgid "Shortcut Editor"
+msgstr "Kortkommandon"
+
+#: gtk2_ardour/editor_actions.cc:262
+msgid "Set Loop From Edit Range"
+msgstr "Sätt loop från redigeringsomfång"
+
+#: gtk2_ardour/editor_actions.cc:264
+msgid "Set Loop From Region"
+msgstr "Sätt loop från region"
+
+#: gtk2_ardour/editor_actions.cc:268
+msgid "Set Punch From Edit Range"
+msgstr "Sätt inslag från redigeringsomfång"
+
+#: gtk2_ardour/editor_actions.cc:298
+msgid "Play From Edit Point"
+msgstr "Spela från redigeringspunkten"
+
+#: gtk2_ardour/editor_actions.cc:300
+msgid "Play from Edit Point & Return"
+msgstr "Spela från redigeringspunkten & återvänd"
+
+#: gtk2_ardour/editor_actions.cc:303
+msgid "Play Edit Range"
+msgstr "Spela redigeringsomfånget"
+
+#: gtk2_ardour/editor_actions.cc:89
+msgid "Playhead to Next Region Boundary"
+msgstr "Startmarkören till nästa regiongränsen"
+
+#: gtk2_ardour/editor_actions.cc:91
+msgid "Playhead to Previous Region Boundary"
+msgstr "Startmarkören till förra regiongränsen"
+
+#: gtk2_ardour/editor_actions.cc:245
+msgid "to Playhead"
+msgstr "till startmarkören"
+
+#: gtk2_ardour/editor_actions.cc:304
+msgid "Play Selected Region(s)"
+msgstr "Spela valda regioner"
+
+#: gtk2_ardour/editor_actions.cc:411
+msgid "Change edit point (w/Marker)"
+msgstr "Ändra redigeringspunkten (med platsmarkör)"
+
+#: gtk2_ardour/editor_actions.cc:277
+msgid "Toggle Fade In Active"
+msgstr "Intoning av/på"
+
+#: gtk2_ardour/editor_actions.cc:275
+msgid "Set Fade In Length"
+msgstr "Välj intoningslängd"
+
+#: gtk2_ardour/editor_actions.cc:279
+msgid "Set Fade Out Length"
+msgstr "Välj uttoningslängd"
+
+#: gtk2_ardour/editor_actions.cc:281
+msgid "Toggle Fade Out Active"
+msgstr "Uttoning av/på"
+
+#: gtk2_ardour/editor_actions.cc:165
+msgid "Select Next Track/Bus"
+msgstr "Välj nästa spår/buss"
+
+#: gtk2_ardour/editor_actions.cc:167
+msgid "Select Previous Track/Bus"
+msgstr "Välj tidigare spår/buss"
+
+#: gtk2_ardour/editor_actions.cc:272
+msgid "Transpose"
+msgstr "Transponera"
+
+#: gtk2_ardour/editor_actions.cc:215
+msgid "Toggle Zoom State"
+msgstr "Växla zoomtillstånd"
+
+#: gtk2_ardour/editor_actions.cc:213
+msgid "Zoom to Region"
+msgstr "Zooma till region"
+
+#: gtk2_ardour/editor_timefx.cc:72
+msgid "Pitch Shift"
+msgstr "Tonhöjdsändring"
+
+#: gtk2_ardour/editor_timefx.cc:92
+msgid "Octaves"
+msgstr "Oktaver"
+
+#: gtk2_ardour/editor_timefx.cc:96
+msgid "Semitones (12TET)"
+msgstr "Halvtoner (12TET)"
+
+#: gtk2_ardour/editor_timefx.cc:100
+msgid "Cents"
+msgstr "Cent"
+
+#: gtk2_ardour/editor_timefx.cc:106
+msgid "Shift"
+msgstr "Ändra"
+
+#: gtk2_ardour/ardour_ui_ed.cc:803
+msgid "Clock"
+msgstr "Klocka"
+
+#: gtk2_ardour/editor.cc:150 gtk2_ardour/editor.cc:3312
+msgid "Edit Point"
+msgstr "Redigeringspunkten"
+
+
+#: gtk2_ardour/ardour_ui_ed.cc:271
+msgid "Start Recording"
+msgstr "Börja inspelning"
+
+#: gtk2_ardour/ardour_ui_ed.cc:428
+msgid "Use narrow mixer strips"
+msgstr "Använd smala mixerremsor"
+
+#: gtk2_ardour/sfdb_ui.cc:766 gtk2_ardour/sfdb_ui.cc:1049
+#: gtk2_ardour/sfdb_ui.cc:1091
+msgid "one track per file"
+msgstr "ett spår per fil"
+
+#: gtk2_ardour/sfdb_ui.cc:1067 gtk2_ardour/sfdb_ui.cc:1145
+msgid "Best"
+msgstr "Bäst"
+
+#: gtk2_ardour/sfdb_ui.cc:1068 gtk2_ardour/sfdb_ui.cc:1147
+msgid "Good"
+msgstr "Bra"
+
+#: gtk2_ardour/sfdb_ui.cc:1069 gtk2_ardour/sfdb_ui.cc:1149
+msgid "Quick"
+msgstr "Snabb"
diff --git a/gtk2_ardour/tempo_dialog.cc b/gtk2_ardour/tempo_dialog.cc
index 61adb7c0fe..9d5ba926c5 100644
--- a/gtk2_ardour/tempo_dialog.cc
+++ b/gtk2_ardour/tempo_dialog.cc
@@ -34,10 +34,10 @@ using namespace PBD;
TempoDialog::TempoDialog (TempoMap& map, nframes_t frame, const string & action)
: ArdourDialog (_("edit tempo")),
- note_frame (_("BPM denominator")),
bpm_adjustment (60.0, 1.0, 999.9, 0.1, 1.0, 1.0),
bpm_spinner (bpm_adjustment),
bpm_frame (_("Beats per minute")),
+ note_frame (_("BPM denominator")),
ok_button (action),
cancel_button (_("Cancel")),
when_bar_label (_("Bar")),
diff --git a/gtk2_ardour/tempo_dialog.h b/gtk2_ardour/tempo_dialog.h
index a92f26f8e3..47baa0cd42 100644
--- a/gtk2_ardour/tempo_dialog.h
+++ b/gtk2_ardour/tempo_dialog.h
@@ -39,10 +39,10 @@ struct TempoDialog : public ArdourDialog
{
Gtk::ComboBoxText note_types;
vector<string> strings;
- Gtk::Frame note_frame;
Gtk::Adjustment bpm_adjustment;
Gtk::SpinButton bpm_spinner;
Gtk::Frame bpm_frame;
+ Gtk::Frame note_frame;
Gtk::VBox vpacker;
Gtk::Button ok_button;
Gtk::Button cancel_button;
diff --git a/gtk2_ardour/theme_manager.cc b/gtk2_ardour/theme_manager.cc
index 2de1e2b653..d7b4c99f92 100644
--- a/gtk2_ardour/theme_manager.cc
+++ b/gtk2_ardour/theme_manager.cc
@@ -199,7 +199,7 @@ load_rc_file (const string& filename, bool themechange)
return;
}
- info << "Loading ui configuration file " << rc_file_path.to_string() << endmsg;
+ cerr << "Loading ui configuration file " << rc_file_path.to_string() << endmsg;
Gtkmm2ext::UI::instance()->load_rcfile (rc_file_path.to_string(), themechange);
}
diff --git a/libs/ardour/ardour/configuration_vars.h b/libs/ardour/ardour/configuration_vars.h
index aa27a3ef24..99776929a4 100644
--- a/libs/ardour/ardour/configuration_vars.h
+++ b/libs/ardour/ardour/configuration_vars.h
@@ -152,6 +152,7 @@ CONFIG_VARIABLE (bool, sync_all_route_ordering, "sync-all-route-ordering", true)
CONFIG_VARIABLE (bool, only_copy_imported_files, "only-copy-imported-files", true)
CONFIG_VARIABLE (std::string, keyboard_layout, "keyboard-layout", "ansi")
CONFIG_VARIABLE (std::string, default_bindings, "default-bindings", "ardour")
+CONFIG_VARIABLE (bool, default_narrow_ms, "default-narrow_ms", false)
/* denormal management */
diff --git a/libs/ardour/ardour/osc.h b/libs/ardour/ardour/osc.h
index ca2f4488dd..3f1ce03445 100644
--- a/libs/ardour/ardour/osc.h
+++ b/libs/ardour/ardour/osc.h
@@ -54,6 +54,7 @@ class OSC : public BasicUI, public sigc::trackable
lo_server _osc_server;
lo_server _osc_unix_server;
std::string _osc_unix_socket_path;
+ std::string _osc_url_file;
pthread_t _osc_thread;
int _request_pipe[2];
diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h
index 90a9563ad1..c6b913b979 100644
--- a/libs/ardour/ardour/session.h
+++ b/libs/ardour/ardour/session.h
@@ -1427,7 +1427,7 @@ class Session : public PBD::StatefulDestructible
SerializedRCUManager<RouteList> routes;
- void add_routes (RouteList&, bool save = true);
+ void add_routes (RouteList&, bool save);
uint32_t destructive_index;
int load_routes (const XMLNode&);
diff --git a/libs/ardour/ardour/types.h b/libs/ardour/ardour/types.h
index d7961babbd..48b41cbd96 100644
--- a/libs/ardour/ardour/types.h
+++ b/libs/ardour/ardour/types.h
@@ -382,8 +382,11 @@ namespace ARDOUR {
struct TimeFXRequest : public InterThreadInfo {
float time_fraction;
float pitch_fraction;
+ /* SoundTouch */
bool quick_seek;
bool antialias;
+ /* RubberBand */
+ int opts; // really RubberBandStretcher::Options
};
} // namespace ARDOUR
diff --git a/libs/ardour/audio_diskstream.cc b/libs/ardour/audio_diskstream.cc
index bc4a352c45..c36c9de184 100644
--- a/libs/ardour/audio_diskstream.cc
+++ b/libs/ardour/audio_diskstream.cc
@@ -264,7 +264,7 @@ AudioDiskstream::use_new_playlist ()
{
string newname;
boost::shared_ptr<AudioPlaylist> playlist;
-
+
if (!in_set_state && destructive()) {
return 0;
}
@@ -1998,8 +1998,6 @@ AudioDiskstream::set_state (const XMLNode& node)
up of the IO that owns this DS (::non_realtime_input_change())
*/
- in_set_state = false;
-
return 0;
}
diff --git a/libs/ardour/audioregion.cc b/libs/ardour/audioregion.cc
index 301351fe71..f1534827fd 100644
--- a/libs/ardour/audioregion.cc
+++ b/libs/ardour/audioregion.cc
@@ -548,7 +548,7 @@ AudioRegion::set_live_state (const XMLNode& node, Change& what_changed, bool sen
Region::set_live_state (node, what_changed, false);
uint32_t old_flags = _flags;
-
+
if ((prop = node.property ("flags")) != 0) {
_flags = Flag (string_2_enum (prop->value(), _flags));
@@ -599,17 +599,44 @@ AudioRegion::set_live_state (const XMLNode& node, Change& what_changed, bool sen
_fade_in->clear ();
- if ((prop = child->property ("default")) != 0 || (prop = child->property ("steepness")) != 0 || _fade_in->set_state (*child)) {
+ if ((prop = child->property ("default")) != 0 || (prop = child->property ("steepness")) != 0) {
set_default_fade_in ();
- }
+ } else {
+ XMLNode* grandchild = child->child ("AutomationList");
+ if (grandchild) {
+ _fade_in->set_state (*grandchild);
+ }
+ }
+
+ if ((prop = child->property ("active")) != 0) {
+ if (prop->value() == "yes") {
+ set_fade_in_active (true);
+ } else {
+ set_fade_in_active (true);
+ }
+ }
} else if (child->name() == "FadeOut") {
_fade_out->clear ();
- if ((prop = child->property ("default")) != 0 || (prop = child->property ("steepness")) != 0 || _fade_out->set_state (*child)) {
+ if ((prop = child->property ("default")) != 0 || (prop = child->property ("steepness")) != 0) {
set_default_fade_out ();
- }
+ } else {
+ XMLNode* grandchild = child->child ("AutomationList");
+ if (grandchild) {
+ _fade_out->set_state (*grandchild);
+ }
+ }
+
+ if ((prop = child->property ("active")) != 0) {
+ if (prop->value() == "yes") {
+ set_fade_out_active (true);
+ } else {
+ set_fade_out_active (false);
+ }
+ }
+
}
}
diff --git a/libs/ardour/osc.cc b/libs/ardour/osc.cc
index 8903c3781a..b0bd35b8c6 100644
--- a/libs/ardour/osc.cc
+++ b/libs/ardour/osc.cc
@@ -18,6 +18,7 @@
*/
#include <iostream>
+#include <fstream>
#include <cstdio>
#include <cstdlib>
#include <cerrno>
@@ -28,11 +29,13 @@
#include <fcntl.h>
#include <pbd/pthread_utils.h>
+#include <pbd/file_utils.h>
#include <ardour/osc.h>
#include <ardour/session.h>
#include <ardour/route.h>
#include <ardour/audio_track.h>
+#include <ardour/filesystem_paths.h>
#include "i18n.h"
@@ -101,6 +104,24 @@ OSC::start ()
#endif
cerr << "OSC @ " << get_server_url () << endl;
+
+ sys::path url_file;
+
+ if (find_file_in_search_path (ardour_search_path() + system_config_search_path(),
+ "osc_url", url_file)) {
+ _osc_url_file = url_file.to_string();
+ ofstream urlfile;
+ urlfile.open(_osc_url_file.c_str(), ios::trunc);
+ if ( urlfile )
+ {
+ urlfile << get_server_url () << endl;
+ urlfile.close();
+ }
+ else
+ {
+ cerr << "Couldn't write '" << _osc_url_file << "'" <<endl;
+ }
+ }
register_callbacks();
@@ -131,6 +152,9 @@ OSC::stop ()
unlink(_osc_unix_socket_path.c_str());
}
+ if (! _osc_url_file.empty() ) {
+ unlink(_osc_url_file.c_str() );
+ }
return 0;
}
diff --git a/libs/ardour/plugin_manager.cc b/libs/ardour/plugin_manager.cc
index d866a0d49f..f0465d0ad5 100644
--- a/libs/ardour/plugin_manager.cc
+++ b/libs/ardour/plugin_manager.cc
@@ -324,7 +324,7 @@ PluginManager::get_ladspa_category (uint32_t plugin_id)
lrdf_statement* matches1 = lrdf_matches (&pattern);
if (!matches1) {
- return _("");
+ return "";
}
pattern.subject = matches1->object;
@@ -336,7 +336,7 @@ PluginManager::get_ladspa_category (uint32_t plugin_id)
lrdf_free_statements(matches1);
if (!matches2) {
- return _("");
+ return ("");
}
string label = matches2->object;
diff --git a/libs/ardour/rb_effect.cc b/libs/ardour/rb_effect.cc
index 0de5a5bf4a..7a948f6004 100644
--- a/libs/ardour/rb_effect.cc
+++ b/libs/ardour/rb_effect.cc
@@ -75,7 +75,7 @@ RBEffect::run (boost::shared_ptr<AudioRegion> region)
int avail = 0;
RubberBandStretcher stretcher (session.frame_rate(), region->n_channels(),
- RubberBandStretcher::DefaultOptions,
+ (RubberBandStretcher::Options) tsr.opts,
tsr.time_fraction, tsr.pitch_fraction);
stretcher.setExpectedInputDuration(region->length());
@@ -155,7 +155,7 @@ RBEffect::run (boost::shared_ptr<AudioRegion> region)
pos += this_read;
done += this_read;
- tsr.progress = ((float) done / duration) * 0.75;
+ tsr.progress = ((float) done / duration) * 0.25;
stretcher.study(buffers, this_read, pos == duration);
}
@@ -193,7 +193,7 @@ RBEffect::run (boost::shared_ptr<AudioRegion> region)
pos += this_read;
done += this_read;
- tsr.progress = 0.75 + ((float) done / duration) * 0.25;
+ tsr.progress = 0.25 + ((float) done / duration) * 0.75;
stretcher.process(buffers, this_read, pos == duration);
diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc
index a7f85a5c84..cef5c7df48 100644
--- a/libs/ardour/session.cc
+++ b/libs/ardour/session.cc
@@ -151,7 +151,6 @@ Session::Session (AudioEngine &eng,
new_session = !g_file_test (_path.c_str(), GFileTest (G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR));
if (new_session) {
if (create (new_session, mix_template, compute_initial_length())) {
- cerr << "create failed\n";
destroy ();
throw failed_constructor ();
}
@@ -257,7 +256,7 @@ Session::Session (AudioEngine &eng,
}
if (!rl.empty()) {
- add_routes (rl);
+ add_routes (rl, false);
}
}
@@ -270,17 +269,12 @@ Session::Session (AudioEngine &eng,
throw failed_constructor ();
}
- store_recent_sessions(_name, _path);
+ store_recent_sessions (_name, _path);
- bool was_dirty = dirty ();
-
_state_of_the_state = StateOfTheState (_state_of_the_state & ~Dirty);
- Config->ParameterChanged.connect (mem_fun (*this, &Session::config_changed));
- if (was_dirty) {
- DirtyChanged (); /* EMIT SIGNAL */
- }
+ Config->ParameterChanged.connect (mem_fun (*this, &Session::config_changed));
}
Session::~Session ()
@@ -298,6 +292,7 @@ Session::destroy ()
remove_pending_capture_state ();
_state_of_the_state = StateOfTheState (CannotSave|Deletion);
+
_engine.remove_session ();
GoingAway (); /* EMIT SIGNAL */
@@ -706,6 +701,7 @@ Session::when_engine_running ()
_state_of_the_state = StateOfTheState (_state_of_the_state & ~(CannotSave|Dirty));
+
/* hook us up to the engine */
_engine.set_session (this);
@@ -716,9 +712,6 @@ Session::when_engine_running ()
osc->set_session (*this);
#endif
- _state_of_the_state = Clean;
-
- DirtyChanged (); /* EMIT SIGNAL */
}
void
@@ -730,6 +723,7 @@ Session::hookup_io ()
_state_of_the_state = StateOfTheState (_state_of_the_state | InitialConnecting);
+
if (auditioner == 0) {
/* we delay creating the auditioner till now because
@@ -805,6 +799,7 @@ Session::hookup_io ()
_state_of_the_state = StateOfTheState (_state_of_the_state & ~InitialConnecting);
+
/* now handle the whole enchilada as if it was one
graph reorder event.
*/
@@ -1803,8 +1798,7 @@ Session::new_audio_track (int input_channels, int output_channels, TrackMode mod
failed:
if (!new_routes.empty()) {
- add_routes (new_routes, false);
- save_state (_current_snapshot_name);
+ add_routes (new_routes, true);
}
return ret;
@@ -1938,8 +1932,7 @@ Session::new_audio_route (int input_channels, int output_channels, uint32_t how_
failure:
if (!ret.empty()) {
- add_routes (ret, false);
- save_state (_current_snapshot_name);
+ add_routes (ret, true);
}
return ret;
diff --git a/libs/ardour/session_butler.cc b/libs/ardour/session_butler.cc
index 148ff92739..ccbc08248d 100644
--- a/libs/ardour/session_butler.cc
+++ b/libs/ardour/session_butler.cc
@@ -257,8 +257,7 @@ Session::butler_thread_work ()
/*IO* io = ds->io();
- if (ds->io() && !ds->io()->active()) {
- cerr << "Skip inactive diskstream " << ds->io()->name() << endl;
+ if (io && !io->active()) {
continue;
}*/
diff --git a/libs/ardour/session_process.cc b/libs/ardour/session_process.cc
index 6476ab30f7..40a70c6862 100644
--- a/libs/ardour/session_process.cc
+++ b/libs/ardour/session_process.cc
@@ -268,10 +268,10 @@ Session::process_with_events (nframes_t nframes)
nframes_t this_nframes;
nframes_t end_frame;
nframes_t offset;
+ bool session_needs_butler = false;
nframes_t stop_limit;
long frames_moved;
- bool session_needs_butler = false;
-
+
/* make sure the auditioner is silent */
if (auditioner) {
diff --git a/libs/ardour/session_state.cc b/libs/ardour/session_state.cc
index fa4b103958..a08d09d949 100644
--- a/libs/ardour/session_state.cc
+++ b/libs/ardour/session_state.cc
@@ -47,12 +47,12 @@
#endif
#include <glibmm.h>
+#include <glibmm/thread.h>
#include <midi++/mmc.h>
#include <midi++/port.h>
-#include <pbd/error.h>
-#include <glibmm/thread.h>
+#include <pbd/error.h>
#include <pbd/pathscanner.h>
#include <pbd/pthread_utils.h>
#include <pbd/search_path.h>
@@ -178,7 +178,8 @@ Session::first_stage_init (string fullpath, string snapshot_name)
_worst_output_latency = 0;
_worst_input_latency = 0;
_worst_track_latency = 0;
- _state_of_the_state = StateOfTheState(CannotSave|InitialConnecting|Loading|Deletion);
+ _state_of_the_state = StateOfTheState(CannotSave|InitialConnecting|Loading);
+
_slave = 0;
butler_mixdown_buffer = 0;
butler_gain_buffer = 0;
@@ -301,6 +302,7 @@ Session::second_stage_init (bool new_session)
// set_state() will call setup_raid_path(), but if it's a new session we need
// to call setup_raid_path() here.
+
if (state_tree) {
if (set_state (*state_tree->root())) {
return -1;
@@ -321,7 +323,7 @@ Session::second_stage_init (bool new_session)
_state_of_the_state = StateOfTheState (_state_of_the_state|CannotSave|Loading);
- // set_auto_input (true);
+
_locations.changed.connect (mem_fun (this, &Session::locations_changed));
_locations.added.connect (mem_fun (this, &Session::locations_added));
setup_click_sounds (0);
@@ -360,6 +362,17 @@ Session::second_stage_init (bool new_session)
} else {
_end_location_is_free = false;
}
+
+ _state_of_the_state = Clean;
+
+
+ DirtyChanged (); /* EMIT SIGNAL */
+
+ if (state_was_pending) {
+ save_state (_current_snapshot_name);
+ remove_pending_capture_state ();
+ state_was_pending = false;
+ }
return 0;
}
@@ -1119,6 +1132,7 @@ Session::set_state (const XMLNode& node)
int ret = -1;
_state_of_the_state = StateOfTheState (_state_of_the_state|CannotSave);
+
if (node.name() != X_("Session")){
fatal << _("programming error: Session: incorrect XML node sent to set_state()") << endmsg;
@@ -1307,14 +1321,6 @@ Session::set_state (const XMLNode& node)
StateReady (); /* EMIT SIGNAL */
- _state_of_the_state = Clean;
-
- if (state_was_pending) {
- save_state (_current_snapshot_name);
- remove_pending_capture_state ();
- state_was_pending = false;
- }
-
return 0;
out:
@@ -1344,7 +1350,7 @@ Session::load_routes (const XMLNode& node)
new_routes.push_back (route);
}
- add_routes (new_routes);
+ add_routes (new_routes, false);
return 0;
}
@@ -2120,6 +2126,10 @@ Session::commit_reversible_command (Command *cmd)
current_trans->add_command (cmd);
}
+ if (current_trans->empty()) {
+ return;
+ }
+
gettimeofday (&now, 0);
current_trans->set_timestamp (now);
@@ -2363,6 +2373,7 @@ Session::cleanup_sources (Session::cleanup_report& rep)
int ret = -1;
_state_of_the_state = (StateOfTheState) (_state_of_the_state | InCleanup);
+
/* step 1: consider deleting all unused playlists */
@@ -2602,6 +2613,7 @@ Session::cleanup_sources (Session::cleanup_report& rep)
out:
_state_of_the_state = (StateOfTheState) (_state_of_the_state & ~InCleanup);
+
return ret;
}
@@ -2675,6 +2687,7 @@ Session::set_dirty ()
_state_of_the_state = StateOfTheState (_state_of_the_state | Dirty);
+
if (!was_dirty) {
DirtyChanged(); /* EMIT SIGNAL */
}
@@ -2688,6 +2701,7 @@ Session::set_clean ()
_state_of_the_state = Clean;
+
if (was_dirty) {
DirtyChanged(); /* EMIT SIGNAL */
}
@@ -2697,6 +2711,7 @@ void
Session::set_deletion_in_progress ()
{
_state_of_the_state = StateOfTheState (_state_of_the_state | Deletion);
+
}
void
diff --git a/libs/ardour/session_transport.cc b/libs/ardour/session_transport.cc
index 1398872b36..d422698f30 100644
--- a/libs/ardour/session_transport.cc
+++ b/libs/ardour/session_transport.cc
@@ -55,7 +55,7 @@ Session::request_input_change_handling ()
if (!(_state_of_the_state & (InitialConnecting|Deletion))) {
Event* ev = new Event (Event::InputConfigurationChange, Event::Add, Event::Immediate, 0, 0.0);
queue_event (ev);
- }
+ }
}
void