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);
N_("John Anderson"),
N_("Nedko Arnaudov"),
N_("Carl Hetherington"),
+ N_("Colin Fletcher"),
0
};
}
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"));
#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
export GTK_PATH=$PWD/libs/clearlooks:~/.ardour2
EXECUTABLE=gtk2_ardour/ardour-%VERSION%
-
-ulimit -c unlimited
<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'/>
-; 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" "")
; (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" "")
; (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" "")
<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'/>
<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'>
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();
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);
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
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] == '/') ||
}
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;
}
catch (...) {
- cerr << "Caught something\n";
+
MessageDialog msg (string_compose(_("Session \"%1 (snapshot %2)\" did not load successfully"), path, snap_name),
true,
Gtk::MESSAGE_INFO,
{
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\
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);
message.show();
image->show();
hbox->show();
- //dialog.get_vbox()->show();
-
+
switch (dialog.run ()) {
case RESPONSE_ACCEPT:
return 1;
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 ();
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;
ActionManager::toggle_config_state ("options", "ShowTrackMeters", &Configuration::set_show_track_meters, &Configuration::get_show_track_meters);
}
+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 ()
{
} 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
#include "i18n.h"
-#define MUTED_ALPHA 0x50
+#define MUTED_ALPHA 10
using namespace sigc;
using namespace ARDOUR;
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();
+ }
}
}
}
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;
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;
};
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
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);
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;
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 ();
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;
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;
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);
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) {
}
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;
}
}
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 ();
}
nframes64_t start = max_frames;
nframes64_t end = 0;
- ensure_entered_region_selected (true);
+ ExclusiveRegionSelection esr (*this, entered_regionview);
if (selection->regions.empty()) {
return;
}
}
+ session->request_stop ();
session->request_bounded_roll (start, end);
}
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) {
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());
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 ());
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();
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();
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;
}
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()) {
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) {
}
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)
{
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);
/* 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) {
}
commit_reversible_command ();
+
}
void
XMLNode &after = ar->get_state();
session->add_command(new MementoCommand<AudioRegion>(*ar, &before, &after));
}
+
+ commit_reversible_command ();
}
void
XMLNode &after = ar->get_state();
session->add_command(new MementoCommand<AudioRegion>(*ar, &before, &after));
}
+
+ commit_reversible_command ();
}
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);
}
}
}
void
Editor::trim_region (bool front)
{
+ ExclusiveRegionSelection ers (*this, entered_regionview);
+
nframes64_t where = get_preferred_edit_position();
RegionSelection& rs = get_regions_for_action ();
session->add_command(new MementoCommand<Playlist>(*pl.get(), &before, &after));
}
}
+
commit_reversible_command ();
}
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;
set_punch_range (start, end, _("set punch range 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 ()
{
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;
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;
}
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;
}
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;
}
}
}
- 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;
}
}
}
- 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;
}
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;
}
{
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);
+ }
+}
+
*/
+#include <iostream>
#include <cstdlib>
#include <cmath>
#include <pbd/memento_command.h>
#include <gtkmm2ext/window_title.h>
+#include <gtkmm2ext/utils.h>
#include "editor.h"
#include "audio_time_axis.h"
#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;
: 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);
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) {
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 ();
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();
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;
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 ();
}
#include <vector>
#include <cmath>
#include <fstream>
+#include <map>
#include <glibmm.h>
#include <pbd/xml++.h>
#include <pbd/convert.h>
#include <pbd/error.h>
+#include <pbd/pathscanner.h>
#ifdef __APPLE
#include <CFBundle.h>
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"));
bool using_coreaudio = false;
bool using_netjack = false;
bool using_ffado = false;
- bool using_freebob = false;
+ bool using_dummy = false;
/* first, path to jackd */
} 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 */
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");
#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 ();
}
}
+static bool jack_server_filter(const string& str, void *arg)
+{
+ return str == "jackd" || str == "jackdmp";
+}
+
void
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")) {
}
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)
{
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) {
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;
}
}
}
-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++) {
void set_meter_strip_name (const char * name);
void set_fader_name (const char * name);
- void setup_atv_meter (int);
void clear_meters ();
private:
#include <pbd/strsplit.h>
#include <pbd/replace_all.h>
+#include <ardour/profile.h>
+
#include "actions.h"
#include "keyboard.h"
#include "keyeditor.h"
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;
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);
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
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
(*i)[columns.binding] = string();
}
}
-
-
}
out:
#include <string>
+#include <gtkmm/buttonbox.h>
#include <gtkmm/treeview.h>
#include <gtkmm/treestore.h>
#include <gtkmm/scrolledwindow.h>
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;
: 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;
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);
}
using namespace PBD;
#include "opts.h"
+#include "utils.h"
NewSessionDialog::NewSessionDialog()
: ArdourDialog ("session control")
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());
// 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);
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);
}
}
*/
- 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) {
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];
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)
{
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) {
} 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);
}
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);
{
public:
+ enum Pages {
+ NewPage = 0x1,
+ OpenPage = 0x2,
+ EnginePage = 0x4
+ };
+
NewSessionDialog();
~NewSessionDialog ();
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();
Gtk::Notebook* m_notebook;
private:
- enum Pages {
- NewPage = 0x1,
- OpenPage = 0x2,
- EnginePage = 0x4
- };
Pages page_set;
void master_bus_button_clicked ();
void monitor_bus_button_clicked ();
+ bool on_new_session_page;
bool have_engine;
};
"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
#: ../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"
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"
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"
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"
#: ../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"
#: 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"
#: 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
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"
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"
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"
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"
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"
#: ../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
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"
#: ../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"
#: ../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"
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
#: ../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"
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"
#: ../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
#: 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"
#: 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"
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:"
#: ../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"
#: ../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"
#: ../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"
#: ../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"
#: ../editor_actions.cc:163
msgid "Center Edit Cursor"
-msgstr "Centrera redigeringsmarkören"
+msgstr "Centrera redigeringspunkten"
#: ../editor_actions.cc:165
msgid "Playhead Forward"
#: ../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"
#: ../editor_actions.cc:192
msgid "Set Edit Cursor"
-msgstr "Placera redigeringsmarkör"
+msgstr "Placera redigeringspunkten"
#: ../editor_actions.cc:194
msgid "Mute/Unmute 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"
#: ../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"
#: ../editor_actions.cc:268
msgid "Zoom Focus Edit"
-msgstr "Zoomfokus: redigeringsmarkör"
+msgstr "Zoomfokus: redigeringspunkten"
#: ../editor_actions.cc:274
msgid "Object Tool"
#: ../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"
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 ""
#: ../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"
#: ../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"
#: ../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"
#: ../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"
#: ../editor_timefx.cc:50
msgid "Quick but Ugly"
-msgstr "Snabbt men Fult"
+msgstr "Snabbt men fult"
#: ../editor_timefx.cc:51
msgid "Skip Anti-aliasing"
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"
#: ../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"
#: 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 :"
#: ../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"
#: ../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"
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"
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")),
{
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;
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);
}
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 */
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];
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&);
struct TimeFXRequest : public InterThreadInfo {
float time_fraction;
float pitch_fraction;
+ /* SoundTouch */
bool quick_seek;
bool antialias;
+ /* RubberBand */
+ int opts; // really RubberBandStretcher::Options
};
} // namespace ARDOUR
{
string newname;
boost::shared_ptr<AudioPlaylist> playlist;
-
+
if (!in_set_state && destructive()) {
return 0;
}
up of the IO that owns this DS (::non_realtime_input_change())
*/
- in_set_state = false;
-
return 0;
}
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));
_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);
+ }
+ }
+
}
}
*/
#include <iostream>
+#include <fstream>
#include <cstdio>
#include <cstdlib>
#include <cerrno>
#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"
#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();
unlink(_osc_unix_socket_path.c_str());
}
+ if (! _osc_url_file.empty() ) {
+ unlink(_osc_url_file.c_str() );
+ }
return 0;
}
lrdf_statement* matches1 = lrdf_matches (&pattern);
if (!matches1) {
- return _("");
+ return "";
}
pattern.subject = matches1->object;
lrdf_free_statements(matches1);
if (!matches2) {
- return _("");
+ return ("");
}
string label = matches2->object;
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());
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);
}
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);
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 ();
}
}
if (!rl.empty()) {
- add_routes (rl);
+ add_routes (rl, false);
}
}
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 ()
remove_pending_capture_state ();
_state_of_the_state = StateOfTheState (CannotSave|Deletion);
+
_engine.remove_session ();
GoingAway (); /* EMIT SIGNAL */
_state_of_the_state = StateOfTheState (_state_of_the_state & ~(CannotSave|Dirty));
+
/* hook us up to the engine */
_engine.set_session (this);
osc->set_session (*this);
#endif
- _state_of_the_state = Clean;
-
- DirtyChanged (); /* EMIT SIGNAL */
}
void
_state_of_the_state = StateOfTheState (_state_of_the_state | InitialConnecting);
+
if (auditioner == 0) {
/* we delay creating the auditioner till now because
_state_of_the_state = StateOfTheState (_state_of_the_state & ~InitialConnecting);
+
/* now handle the whole enchilada as if it was one
graph reorder event.
*/
failed:
if (!new_routes.empty()) {
- add_routes (new_routes, false);
- save_state (_current_snapshot_name);
+ add_routes (new_routes, true);
}
return ret;
failure:
if (!ret.empty()) {
- add_routes (ret, false);
- save_state (_current_snapshot_name);
+ add_routes (ret, true);
}
return ret;
/*IO* io = ds->io();
- if (ds->io() && !ds->io()->active()) {
- cerr << "Skip inactive diskstream " << ds->io()->name() << endl;
+ if (io && !io->active()) {
continue;
}*/
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) {
#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>
_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;
// 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;
_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);
} 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;
}
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;
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:
new_routes.push_back (route);
}
- add_routes (new_routes);
+ add_routes (new_routes, false);
return 0;
}
current_trans->add_command (cmd);
}
+ if (current_trans->empty()) {
+ return;
+ }
+
gettimeofday (&now, 0);
current_trans->set_timestamp (now);
int ret = -1;
_state_of_the_state = (StateOfTheState) (_state_of_the_state | InCleanup);
+
/* step 1: consider deleting all unused playlists */
out:
_state_of_the_state = (StateOfTheState) (_state_of_the_state & ~InCleanup);
+
return ret;
}
_state_of_the_state = StateOfTheState (_state_of_the_state | Dirty);
+
if (!was_dirty) {
DirtyChanged(); /* EMIT SIGNAL */
}
_state_of_the_state = Clean;
+
if (was_dirty) {
DirtyChanged(); /* EMIT SIGNAL */
}
Session::set_deletion_in_progress ()
{
_state_of_the_state = StateOfTheState (_state_of_the_state | Deletion);
+
}
void
if (!(_state_of_the_state & (InitialConnecting|Deletion))) {
Event* ev = new Event (Event::InputConfigurationChange, Event::Add, Event::Immediate, 0, 0.0);
queue_event (ev);
- }
+ }
}
void