mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-09 08:14:58 +01:00
Merge with 2.0-ongoing R2883.
git-svn-id: svn://localhost/ardour2/trunk@2885 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
bb457bb960
commit
8a2e30816e
45 changed files with 2346 additions and 701 deletions
|
|
@ -426,7 +426,7 @@ else:
|
||||||
keybindings_dict['%SECONDARY%'] = 'Alt'
|
keybindings_dict['%SECONDARY%'] = 'Alt'
|
||||||
keybindings_dict['%TERTIARY%'] = 'Shift'
|
keybindings_dict['%TERTIARY%'] = 'Shift'
|
||||||
keybindings_dict['%LEVEL4%'] = 'Mod2'
|
keybindings_dict['%LEVEL4%'] = 'Mod2'
|
||||||
keybindings_dict['%WINDOW%'] = 'Ctrl'
|
keybindings_dict['%WINDOW%'] = 'Alt'
|
||||||
|
|
||||||
ardourbindings = env.SubstInFile ('ardour.bindings', 'ardour.bindings.in', SUBST_DICT = keybindings_dict);
|
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);
|
ardoursaeDEbindings = env.SubstInFile ('ardour-sae-de.bindings', 'ardour-sae-de.bindings.in', SUBST_DICT = keybindings_dict);
|
||||||
|
|
|
||||||
|
|
@ -155,6 +155,7 @@ static const char* authors[] = {
|
||||||
N_("John Anderson"),
|
N_("John Anderson"),
|
||||||
N_("Nedko Arnaudov"),
|
N_("Nedko Arnaudov"),
|
||||||
N_("Carl Hetherington"),
|
N_("Carl Hetherington"),
|
||||||
|
N_("Colin Fletcher"),
|
||||||
0
|
0
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -200,7 +201,7 @@ About::About ()
|
||||||
}
|
}
|
||||||
|
|
||||||
set_translator_credits (t);
|
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"
|
set_license (_("Ardour comes with ABSOLUTELY NO WARRANTY\n"
|
||||||
"This is free software, and you are welcome to redistribute it\n"
|
"This is free software, and you are welcome to redistribute it\n"
|
||||||
"under certain conditions; see the file COPYING for details.\n"));
|
"under certain conditions; see the file COPYING for details.\n"));
|
||||||
|
|
|
||||||
|
|
@ -2,12 +2,11 @@ cd `dirname "$0"`/..
|
||||||
|
|
||||||
#export G_DEBUG=fatal_criticals
|
#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 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.
|
# DYLD_LIBRARY_PATH is for darwin.
|
||||||
export DYLD_FALLBACK_LIBRARY_PATH=$LD_LIBRARY_PATH
|
export DYLD_FALLBACK_LIBRARY_PATH=$LD_LIBRARY_PATH
|
||||||
|
|
@ -15,5 +14,3 @@ export DYLD_FALLBACK_LIBRARY_PATH=$LD_LIBRARY_PATH
|
||||||
export GTK_PATH=$PWD/libs/clearlooks:~/.ardour2
|
export GTK_PATH=$PWD/libs/clearlooks:~/.ardour2
|
||||||
|
|
||||||
EXECUTABLE=gtk2_ardour/ardour-%VERSION%
|
EXECUTABLE=gtk2_ardour/ardour-%VERSION%
|
||||||
|
|
||||||
ulimit -c unlimited
|
|
||||||
|
|
|
||||||
|
|
@ -73,6 +73,7 @@
|
||||||
<menuitem action='set-loop-from-edit-range'/>
|
<menuitem action='set-loop-from-edit-range'/>
|
||||||
<menuitem action='set-loop-from-region'/>
|
<menuitem action='set-loop-from-region'/>
|
||||||
<menuitem action='set-punch-from-edit-range'/>
|
<menuitem action='set-punch-from-edit-range'/>
|
||||||
|
<menuitem action='set-punch-from-region'/>
|
||||||
<menu action='LocateToMarker'>
|
<menu action='LocateToMarker'>
|
||||||
<menuitem action='goto-mark-1'/>
|
<menuitem action='goto-mark-1'/>
|
||||||
<menuitem action='goto-mark-2'/>
|
<menuitem action='goto-mark-2'/>
|
||||||
|
|
|
||||||
|
|
@ -1,332 +1,158 @@
|
||||||
; ardour-2.0beta11.1 GtkAccelMap rc-file -*- scheme -*-
|
; ardour-2.2 GtkAccelMap rc-file -*- scheme -*-
|
||||||
; this file is an automated accelerator map dump
|
; 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")
|
;; punctuation
|
||||||
(gtk_accel_path "<Actions>/Common/Save" "<%PRIMARY%>s")
|
|
||||||
; (gtk_accel_path "<Actions>/Editor/Pullup" "")
|
(gtk_accel_path "<Actions>/Editor/temporal-zoom-in" "equal")
|
||||||
; (gtk_accel_path "<Actions>/Editor/zoom-to-session" "")
|
(gtk_accel_path "<Actions>/Editor/temporal-zoom-out" "minus")
|
||||||
; (gtk_accel_path "<Actions>/JACK/JACKReconnect" "")
|
(gtk_accel_path "<Actions>/Editor/edit-cursor-to-previous-region-sync" "apostrophe")
|
||||||
; (gtk_accel_path "<Actions>/Editor/Autoconnect" "")
|
(gtk_accel_path "<Actions>/Editor/edit-cursor-to-next-region-sync" "semicolon")
|
||||||
; (gtk_accel_path "<Actions>/Editor/Edit" "")
|
(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-boundary" "comma")
|
||||||
(gtk_accel_path "<Actions>/Editor/playhead-to-previous-region-sync" "<%PRIMARY%>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>/Transport/ToggleRollForgetCapture" "<%PRIMARY%>space")
|
|
||||||
(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>/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>/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/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/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>/Editor/extend-range-to-end-of-region" "rightanglebracket")
|
||||||
(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>/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>/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>/Main/Windows" "")
|
|
||||||
; (gtk_accel_path "<Actions>/Main/CleanupUnused" "")
|
|
||||||
; (gtk_accel_path "<Actions>/processormenu/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>/options/FileHeaderFormatBWF" "")
|
|
||||||
; (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>/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>/Editor/extend-range-to-start-of-region" "leftanglebracket")
|
||||||
; (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>/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>/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>/options/StopTransportAtEndOfSession" "")
|
|
||||||
; (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>/Transport/ToggleRoll" "space")
|
||||||
; (gtk_accel_path "<Actions>/RegionList/SortBySourceFilesystem" "")
|
(gtk_accel_path "<Actions>/Transport/ToggleRollForgetCapture" "<%PRIMARY%>space")
|
||||||
(gtk_accel_path "<Actions>/Common/ToggleColorManager" "<%WINDOW%>c")
|
(gtk_accel_path "<Actions>/Transport/record-roll" "<%TERTIARY%>space")
|
||||||
; (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>/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>/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>/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-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" "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-from-start" "<%TERTIARY%>braceleft")
|
||||||
(gtk_accel_path "<Actions>/Editor/trim-to-end" "<%TERTIARY%>braceright")
|
(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/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>/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>/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/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/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>/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>/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/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>/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-1" "KP_1")
|
||||||
(gtk_accel_path "<Actions>/Editor/goto-mark-2" "KP_2")
|
(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-3" "KP_3")
|
||||||
|
|
@ -336,11 +162,246 @@
|
||||||
(gtk_accel_path "<Actions>/Editor/goto-mark-7" "KP_7")
|
(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-8" "KP_8")
|
||||||
(gtk_accel_path "<Actions>/Editor/goto-mark-9" "KP_9")
|
(gtk_accel_path "<Actions>/Editor/goto-mark-9" "KP_9")
|
||||||
(gtk_accel_path "<Actions>/Transport/ToggleClick" "5")
|
|
||||||
|
;; 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/ToggleAutoReturn" "4")
|
||||||
(gtk_accel_path "<Actions>/Transport/focus-on-clock" "KP_Divide")
|
(gtk_accel_path "<Actions>/Transport/ToggleClick" "5")
|
||||||
(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")
|
;; unbound actions
|
||||||
(gtk_accel_path "<Actions>/Editor/toggle-zoom" "<%TERTIARY%>z")
|
;;
|
||||||
(gtk_accel_path "<Actions>/Editor/zoom-to-region" "z")
|
|
||||||
|
; (gtk_accel_path "<Actions>/RegionList/RegionListSort" "")
|
||||||
|
; (gtk_accel_path "<Actions>/Main/Windows" "")
|
||||||
|
; (gtk_accel_path "<Actions>/Main/CleanupUnused" "")
|
||||||
|
; (gtk_accel_path "<Actions>/redirectmenu/deselectall" "")
|
||||||
|
; (gtk_accel_path "<Actions>/options/SoloViaBus" "")
|
||||||
|
; (gtk_accel_path "<Actions>/RegionList/rlAudition" "")
|
||||||
|
; (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>/RegionList/SortAscending" "")
|
||||||
|
; (gtk_accel_path "<Actions>/Main/Help" "")
|
||||||
|
; (gtk_accel_path "<Actions>/options/UseExternalMonitoring" "")
|
||||||
|
; (gtk_accel_path "<Actions>/Editor/Smpte23976" "")
|
||||||
|
; (gtk_accel_path "<Actions>/options/ShowSoloMutes" "")
|
||||||
|
; (gtk_accel_path "<Actions>/Snap/snap-to-eighths" "")
|
||||||
|
; (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>/RegionList/SortBySourceFileName" "")
|
||||||
|
; (gtk_accel_path "<Actions>/Editor/CrossfadesFull" "")
|
||||||
|
; (gtk_accel_path "<Actions>/Transport/ToggleClick" "")
|
||||||
|
; (gtk_accel_path "<Actions>/options/SendMTC" "")
|
||||||
|
; (gtk_accel_path "<Actions>/Transport/TogglePunchOut" "")
|
||||||
|
; (gtk_accel_path "<Actions>/options/SoloInPlace" "")
|
||||||
|
; (gtk_accel_path "<Actions>/Main/Options" "")
|
||||||
|
; (gtk_accel_path "<Actions>/options/MeterFalloffMedium" "")
|
||||||
|
; (gtk_accel_path "<Actions>/Main/SaveTemplate" "")
|
||||||
|
; (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/LayerMoveAddHigher" "")
|
||||||
|
; (gtk_accel_path "<Actions>/Editor/Smpte60" "")
|
||||||
|
; (gtk_accel_path "<Actions>/Main/Open" "")
|
||||||
|
; (gtk_accel_path "<Actions>/Zoom/zoom-focus-left" "")
|
||||||
|
; (gtk_accel_path "<Actions>/Main/TransportOptions" "")
|
||||||
|
; (gtk_accel_path "<Actions>/Main/ControlSurfaces" "")
|
||||||
|
; (gtk_accel_path "<Actions>/options/FileHeaderFormatBWF" "")
|
||||||
|
; (gtk_accel_path "<Actions>/Transport/ToggleAutoReturn" "")
|
||||||
|
; (gtk_accel_path "<Actions>/Editor/Smpte2997" "")
|
||||||
|
; (gtk_accel_path "<Actions>/Editor/ToggleWaveformVisibility" "")
|
||||||
|
; (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>/JACK/Latency" "")
|
||||||
|
; (gtk_accel_path "<Actions>/redirectmenu/rename" "")
|
||||||
|
; (gtk_accel_path "<Actions>/RegionList/rlShowAuto" "")
|
||||||
|
; (gtk_accel_path "<Actions>/Main/Session" "")
|
||||||
|
; (gtk_accel_path "<Actions>/Main/AudioFileFormat" "")
|
||||||
|
; (gtk_accel_path "<Actions>/Transport/Transport" "")
|
||||||
|
; (gtk_accel_path "<Actions>/RegionList/SortByRegionName" "")
|
||||||
|
; (gtk_accel_path "<Actions>/Main/KeyMouse Actions" "")
|
||||||
|
; (gtk_accel_path "<Actions>/Snap/snap-to-frame" "")
|
||||||
|
; (gtk_accel_path "<Actions>/Editor/SnapTo" "")
|
||||||
|
; (gtk_accel_path "<Actions>/Editor/Crossfades" "")
|
||||||
|
; (gtk_accel_path "<Actions>/Editor/PullupPlus4" "")
|
||||||
|
; (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>/Editor/PullupMinus4" "")
|
||||||
|
; (gtk_accel_path "<Actions>/RegionList/SortBySourceFileCreationDate" "")
|
||||||
|
; (gtk_accel_path "<Actions>/redirectmenu/activate" "")
|
||||||
|
; (gtk_accel_path "<Actions>/Editor/PullupMinus1" "")
|
||||||
|
; (gtk_accel_path "<Actions>/Editor/snap-normal" "")
|
||||||
|
; (gtk_accel_path "<Actions>/Snap/snap-to-asixteenthbeat" "")
|
||||||
|
; (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>/options/FileHeaderFormatWAVE" "")
|
||||||
|
; (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>/Editor/PullupMinus4Plus1" "")
|
||||||
|
; (gtk_accel_path "<Actions>/Editor/MeterHold" "")
|
||||||
|
; (gtk_accel_path "<Actions>/Snap/snap-to-cd-frame" "")
|
||||||
|
; (gtk_accel_path "<Actions>/options/StopTransportAtEndOfSession" "")
|
||||||
|
; (gtk_accel_path "<Actions>/Main/Cleanup" "")
|
||||||
|
; (gtk_accel_path "<Actions>/Main/Snapshot" "")
|
||||||
|
; (gtk_accel_path "<Actions>/Transport/ToggleVideoSync" "")
|
||||||
|
; (gtk_accel_path "<Actions>/RegionList/SortBySourceFilesystem" "")
|
||||||
|
; (gtk_accel_path "<Actions>/Common/About" "")
|
||||||
|
; (gtk_accel_path "<Actions>/JACK/JACKLatency32" "")
|
||||||
|
; (gtk_accel_path "<Actions>/options/FileHeaderFormatWAVE64" "")
|
||||||
|
; (gtk_accel_path "<Actions>/RegionList/rlShowAll" "")
|
||||||
|
; (gtk_accel_path "<Actions>/RegionList/SortByRegionTimestamp" "")
|
||||||
|
; (gtk_accel_path "<Actions>/options/VerifyRemoveLastCapture" "")
|
||||||
|
; (gtk_accel_path "<Actions>/options/OutputAutoConnectPhysical" "")
|
||||||
|
; (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/Subframes80" "")
|
||||||
|
; (gtk_accel_path "<Actions>/options/FileHeaderFormatCAF" "")
|
||||||
|
; (gtk_accel_path "<Actions>/Editor/ToggleGeneric MIDISurface" "")
|
||||||
|
; (gtk_accel_path "<Actions>/JACK/JACKLatency256" "")
|
||||||
|
; (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/toggle-xfades-active" "")
|
||||||
|
; (gtk_accel_path "<Actions>/Snap/snap-to-bar" "")
|
||||||
|
; (gtk_accel_path "<Actions>/Editor/LayerLaterHigher" "")
|
||||||
|
; (gtk_accel_path "<Actions>/redirectmenu/selectall" "")
|
||||||
|
; (gtk_accel_path "<Actions>/Snap/snap-to-quarters" "")
|
||||||
|
; (gtk_accel_path "<Actions>/options/UseSoftwareMonitoring" "")
|
||||||
|
; (gtk_accel_path "<Actions>/Editor/Subframes100" "")
|
||||||
|
|
||||||
|
|
||||||
|
; (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>/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>/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" "")
|
||||||
|
|
|
||||||
|
|
@ -87,6 +87,7 @@
|
||||||
<menuitem action='set-loop-from-edit-range'/>
|
<menuitem action='set-loop-from-edit-range'/>
|
||||||
<menuitem action='set-loop-from-region'/>
|
<menuitem action='set-loop-from-region'/>
|
||||||
<menuitem action='set-punch-from-edit-range'/>
|
<menuitem action='set-punch-from-edit-range'/>
|
||||||
|
<menuitem action='set-punch-from-region'/>
|
||||||
</menu>
|
</menu>
|
||||||
<menu name='Edit' action='Edit'>
|
<menu name='Edit' action='Edit'>
|
||||||
<menuitem action='undo'/>
|
<menuitem action='undo'/>
|
||||||
|
|
@ -429,7 +430,9 @@
|
||||||
<menuitem action='ShowTrackMeters'/>
|
<menuitem action='ShowTrackMeters'/>
|
||||||
<menuitem action='OnlyCopyImportedFiles'/>
|
<menuitem action='OnlyCopyImportedFiles'/>
|
||||||
<menuitem action='ShowTrackMeters'/>
|
<menuitem action='ShowTrackMeters'/>
|
||||||
|
<menuitem action='DefaultNarrowMS'/>
|
||||||
<menuitem action='link-region-and-track-selection'/>
|
<menuitem action='link-region-and-track-selection'/>
|
||||||
|
|
||||||
<separator/>
|
<separator/>
|
||||||
</menu>
|
</menu>
|
||||||
<menu name='Help' action='Help'>
|
<menu name='Help' action='Help'>
|
||||||
|
|
|
||||||
|
|
@ -741,32 +741,39 @@ ARDOUR_UI::check_memory_locking ()
|
||||||
void
|
void
|
||||||
ARDOUR_UI::finish()
|
ARDOUR_UI::finish()
|
||||||
{
|
{
|
||||||
if (session && session->dirty()) {
|
if (session) {
|
||||||
switch (ask_about_saving_session(_("quit"))) {
|
|
||||||
case -1:
|
if (session->transport_rolling()) {
|
||||||
return;
|
session->request_stop ();
|
||||||
break;
|
usleep (2500000);
|
||||||
case 1:
|
}
|
||||||
/* use the default name */
|
|
||||||
if (save_state_canfail ("")) {
|
if (session->dirty()) {
|
||||||
/* failed - don't quit */
|
switch (ask_about_saving_session(_("quit"))) {
|
||||||
MessageDialog msg (*editor,
|
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\
|
Ardour was unable to save your session.\n\n\
|
||||||
If you still wish to quit, please use the\n\n\
|
If you still wish to quit, please use the\n\n\
|
||||||
\"Just quit\" option."));
|
\"Just quit\" option."));
|
||||||
msg.run ();
|
msg.run ();
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 0:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
break;
|
|
||||||
case 0:
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (session) {
|
|
||||||
session->set_deletion_in_progress ();
|
session->set_deletion_in_progress ();
|
||||||
}
|
}
|
||||||
|
|
||||||
engine->stop (true);
|
engine->stop (true);
|
||||||
Config->save_state();
|
Config->save_state();
|
||||||
ARDOUR_UI::config()->save_state();
|
ARDOUR_UI::config()->save_state();
|
||||||
|
|
@ -1074,8 +1081,7 @@ ARDOUR_UI::build_session_selector ()
|
||||||
recent_session_display.set_model (recent_session_model);
|
recent_session_display.set_model (recent_session_model);
|
||||||
recent_session_display.append_column (_("Recent Sessions"), recent_session_columns.visible_name);
|
recent_session_display.append_column (_("Recent Sessions"), recent_session_columns.visible_name);
|
||||||
recent_session_display.set_headers_visible (false);
|
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));
|
recent_session_display.signal_row_activated().connect (mem_fun (*this, &ARDOUR_UI::recent_session_row_activated));
|
||||||
|
|
||||||
scroller->add (recent_session_display);
|
scroller->add (recent_session_display);
|
||||||
|
|
@ -1099,37 +1105,55 @@ ARDOUR_UI::recent_session_row_activated (const TreePath& path, TreeViewColumn* c
|
||||||
void
|
void
|
||||||
ARDOUR_UI::open_recent_session ()
|
ARDOUR_UI::open_recent_session ()
|
||||||
{
|
{
|
||||||
/* popup selector window */
|
bool can_return = (session != 0);
|
||||||
|
|
||||||
if (session_selector_window == 0) {
|
if (session_selector_window == 0) {
|
||||||
build_session_selector ();
|
build_session_selector ();
|
||||||
}
|
}
|
||||||
|
|
||||||
redisplay_recent_sessions ();
|
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) {
|
if (recent_session_display.get_selection()->count_selected_rows() == 0) {
|
||||||
case RESPONSE_ACCEPT:
|
continue;
|
||||||
break;
|
}
|
||||||
default:
|
|
||||||
return;
|
session_selector_window->hide();
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
can_return = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
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;
|
|
||||||
|
|
||||||
load_session (path, state);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
|
|
@ -2239,9 +2263,9 @@ ARDOUR_UI::get_session_parameters (Glib::ustring predetermined_path, bool have_e
|
||||||
goto try_again;
|
goto try_again;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (new_session_dialog->get_current_page()) {
|
switch (new_session_dialog->which_page()) {
|
||||||
case 1: /* recent session selector */
|
case NewSessionDialog::OpenPage:
|
||||||
case 2: /* audio engine control */
|
case NewSessionDialog::EnginePage:
|
||||||
|
|
||||||
if (session_name[0] == '/' ||
|
if (session_name[0] == '/' ||
|
||||||
(session_name.length() > 2 && session_name[0] == '.' && session_name[1] == '/') ||
|
(session_name.length() > 2 && session_name[0] == '.' && session_name[1] == '/') ||
|
||||||
|
|
@ -2262,7 +2286,9 @@ ARDOUR_UI::get_session_parameters (Glib::ustring predetermined_path, bool have_e
|
||||||
}
|
}
|
||||||
break;
|
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()) {
|
if (new_session_dialog->get_current_page() == 0 && ARDOUR_COMMAND_LINE::session_name.empty()) {
|
||||||
should_be_new = true;
|
should_be_new = true;
|
||||||
|
|
@ -2525,7 +2551,7 @@ ARDOUR_UI::load_session (const Glib::ustring& path, const Glib::ustring& snap_na
|
||||||
}
|
}
|
||||||
|
|
||||||
catch (...) {
|
catch (...) {
|
||||||
cerr << "Caught something\n";
|
|
||||||
MessageDialog msg (string_compose(_("Session \"%1 (snapshot %2)\" did not load successfully"), path, snap_name),
|
MessageDialog msg (string_compose(_("Session \"%1 (snapshot %2)\" did not load successfully"), path, snap_name),
|
||||||
true,
|
true,
|
||||||
Gtk::MESSAGE_INFO,
|
Gtk::MESSAGE_INFO,
|
||||||
|
|
@ -3027,7 +3053,7 @@ ARDOUR_UI::pending_state_dialog ()
|
||||||
{
|
{
|
||||||
HBox* hbox = new HBox();
|
HBox* hbox = new HBox();
|
||||||
Image* image = new Image (Stock::DIALOG_QUESTION, ICON_SIZE_DIALOG);
|
Image* image = new Image (Stock::DIALOG_QUESTION, ICON_SIZE_DIALOG);
|
||||||
ArdourDialog dialog (_("Crash recovery"), true);
|
ArdourDialog dialog (_("Crash Recovery"), true);
|
||||||
Label message (_("\
|
Label message (_("\
|
||||||
This session appears to have been in\n\
|
This session appears to have been in\n\
|
||||||
middle of recording when ardour or\n\
|
middle of recording when ardour or\n\
|
||||||
|
|
@ -3036,7 +3062,7 @@ the computer was shutdown.\n\
|
||||||
Ardour can recover any captured audio for\n\
|
Ardour can recover any captured audio for\n\
|
||||||
you, or it can ignore it. Please decide\n\
|
you, or it can ignore it. Please decide\n\
|
||||||
what you would like to do.\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_start (*image, PACK_EXPAND_WIDGET, 12);
|
||||||
hbox->pack_end (message, PACK_EXPAND_PADDING, 12);
|
hbox->pack_end (message, PACK_EXPAND_PADDING, 12);
|
||||||
dialog.get_vbox()->pack_start(*hbox, PACK_EXPAND_PADDING, 6);
|
dialog.get_vbox()->pack_start(*hbox, PACK_EXPAND_PADDING, 6);
|
||||||
|
|
@ -3047,8 +3073,7 @@ what you would like to do.\n"));
|
||||||
message.show();
|
message.show();
|
||||||
image->show();
|
image->show();
|
||||||
hbox->show();
|
hbox->show();
|
||||||
//dialog.get_vbox()->show();
|
|
||||||
|
|
||||||
switch (dialog.run ()) {
|
switch (dialog.run ()) {
|
||||||
case RESPONSE_ACCEPT:
|
case RESPONSE_ACCEPT:
|
||||||
return 1;
|
return 1;
|
||||||
|
|
|
||||||
|
|
@ -725,6 +725,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI
|
||||||
void toggle_SecondaryClockDeltaEditCursor ();
|
void toggle_SecondaryClockDeltaEditCursor ();
|
||||||
void toggle_ShowTrackMeters ();
|
void toggle_ShowTrackMeters ();
|
||||||
void toggle_only_copy_imported_files ();
|
void toggle_only_copy_imported_files ();
|
||||||
|
void toggle_use_narrow_ms();
|
||||||
|
|
||||||
void mtc_port_changed ();
|
void mtc_port_changed ();
|
||||||
void map_solo_model ();
|
void map_solo_model ();
|
||||||
|
|
|
||||||
|
|
@ -428,6 +428,7 @@ ARDOUR_UI::install_actions ()
|
||||||
ActionManager::register_toggle_action (option_actions, X_("SecondaryClockDeltaEditCursor"), _("Secondary Clock delta to edit point"), mem_fun (*this, &ARDOUR_UI::toggle_SecondaryClockDeltaEditCursor));
|
ActionManager::register_toggle_action (option_actions, X_("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_("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_("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;
|
RadioAction::Group denormal_group;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -517,6 +517,12 @@ ARDOUR_UI::toggle_ShowTrackMeters()
|
||||||
ActionManager::toggle_config_state ("options", "ShowTrackMeters", &Configuration::set_show_track_meters, &Configuration::get_show_track_meters);
|
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
|
void
|
||||||
ARDOUR_UI::mtc_port_changed ()
|
ARDOUR_UI::mtc_port_changed ()
|
||||||
{
|
{
|
||||||
|
|
@ -1122,6 +1128,8 @@ ARDOUR_UI::parameter_changed (const char* parameter_name)
|
||||||
} else if (PARAM_IS ("show-track-meters")) {
|
} else if (PARAM_IS ("show-track-meters")) {
|
||||||
ActionManager::map_some_state ("options", "ShowTrackMeters", &Configuration::get_show_track_meters);
|
ActionManager::map_some_state ("options", "ShowTrackMeters", &Configuration::get_show_track_meters);
|
||||||
editor->toggle_meter_updating();
|
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
|
#undef PARAM_IS
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,7 @@
|
||||||
|
|
||||||
#include "i18n.h"
|
#include "i18n.h"
|
||||||
|
|
||||||
#define MUTED_ALPHA 0x50
|
#define MUTED_ALPHA 10
|
||||||
|
|
||||||
using namespace sigc;
|
using namespace sigc;
|
||||||
using namespace ARDOUR;
|
using namespace ARDOUR;
|
||||||
|
|
@ -1226,14 +1226,22 @@ AudioRegionView::set_frame_color ()
|
||||||
|
|
||||||
UINT_TO_RGBA(ARDOUR_UI::config()->canvasvar_FrameBase.get(), &r, &g, &b, &a);
|
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) {
|
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 {
|
} else {
|
||||||
UINT_TO_RGBA(ARDOUR_UI::config()->canvasvar_FrameBase.get(), &r, &g, &b, &a);
|
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);
|
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) {
|
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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -155,6 +155,18 @@ static const gchar *_zoom_focus_strings[] = {
|
||||||
0
|
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 */
|
/* Soundfile drag-n-drop */
|
||||||
|
|
||||||
Gdk::Cursor* Editor::cross_hair_cursor = 0;
|
Gdk::Cursor* Editor::cross_hair_cursor = 0;
|
||||||
|
|
@ -256,7 +268,10 @@ Editor::Editor ()
|
||||||
snap_mode_strings = I18N (_snap_mode_strings);
|
snap_mode_strings = I18N (_snap_mode_strings);
|
||||||
zoom_focus_strings = I18N (_zoom_focus_strings);
|
zoom_focus_strings = I18N (_zoom_focus_strings);
|
||||||
edit_point_strings = I18N (_edit_point_strings);
|
edit_point_strings = I18N (_edit_point_strings);
|
||||||
|
#ifdef USE_RUBBERBAND
|
||||||
|
rb_opt_strings = I18N (_rb_opt_strings);
|
||||||
|
#endif
|
||||||
|
|
||||||
snap_threshold = 5.0;
|
snap_threshold = 5.0;
|
||||||
bbt_beat_subdivision = 4;
|
bbt_beat_subdivision = 4;
|
||||||
canvas_width = 0;
|
canvas_width = 0;
|
||||||
|
|
@ -4224,10 +4239,15 @@ struct EditorOrderTimeAxisSorter {
|
||||||
};
|
};
|
||||||
|
|
||||||
void
|
void
|
||||||
Editor::sort_track_selection ()
|
Editor::sort_track_selection (TrackSelection* sel)
|
||||||
{
|
{
|
||||||
EditorOrderTimeAxisSorter cmp;
|
EditorOrderTimeAxisSorter cmp;
|
||||||
selection->tracks.sort (cmp);
|
|
||||||
|
if (sel) {
|
||||||
|
sel->sort (cmp);
|
||||||
|
} else {
|
||||||
|
selection->tracks.sort (cmp);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
nframes64_t
|
nframes64_t
|
||||||
|
|
|
||||||
|
|
@ -168,6 +168,10 @@ class Editor : public PublicEditor
|
||||||
void hide_a_region (boost::shared_ptr<ARDOUR::Region>);
|
void hide_a_region (boost::shared_ptr<ARDOUR::Region>);
|
||||||
void remove_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 */
|
/* option editor-access */
|
||||||
|
|
||||||
void set_show_waveforms (bool yn);
|
void set_show_waveforms (bool yn);
|
||||||
|
|
@ -478,7 +482,7 @@ class Editor : public PublicEditor
|
||||||
CrossfadeView* clicked_crossfadeview;
|
CrossfadeView* clicked_crossfadeview;
|
||||||
ControlPoint* clicked_control_point;
|
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_relevant_tracks (std::set<RouteTimeAxisView*>& relevant_tracks);
|
||||||
void get_equivalent_regions (RegionView* rv, std::vector<RegionView*>&) const;
|
void get_equivalent_regions (RegionView* rv, std::vector<RegionView*>&) const;
|
||||||
|
|
@ -1179,7 +1183,8 @@ class Editor : public PublicEditor
|
||||||
void add_location_from_selection ();
|
void add_location_from_selection ();
|
||||||
void set_loop_from_selection (bool play);
|
void set_loop_from_selection (bool play);
|
||||||
void set_punch_from_selection ();
|
void set_punch_from_selection ();
|
||||||
|
void set_punch_from_region ();
|
||||||
|
|
||||||
void set_loop_from_edit_range (bool play);
|
void set_loop_from_edit_range (bool play);
|
||||||
void set_loop_from_region (bool play);
|
void set_loop_from_region (bool play);
|
||||||
void set_punch_from_edit_range ();
|
void set_punch_from_edit_range ();
|
||||||
|
|
@ -1930,11 +1935,20 @@ class Editor : public PublicEditor
|
||||||
Gtk::SpinButton pitch_cent_spinner;
|
Gtk::SpinButton pitch_cent_spinner;
|
||||||
RegionSelection regions;
|
RegionSelection regions;
|
||||||
Gtk::ProgressBar progress_bar;
|
Gtk::ProgressBar progress_bar;
|
||||||
|
|
||||||
|
/* SoundTouch */
|
||||||
Gtk::ToggleButton quick_button;
|
Gtk::ToggleButton quick_button;
|
||||||
Gtk::ToggleButton antialias_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* cancel_button;
|
||||||
Gtk::Button* action_button;
|
Gtk::Button* action_button;
|
||||||
Gtk::HBox upper_button_box;
|
|
||||||
Gtk::VBox packer;
|
Gtk::VBox packer;
|
||||||
int status;
|
int status;
|
||||||
|
|
||||||
|
|
@ -2061,6 +2075,18 @@ class Editor : public PublicEditor
|
||||||
|
|
||||||
TimeAxisView* entered_track;
|
TimeAxisView* entered_track;
|
||||||
RegionView* entered_regionview;
|
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_region_selected (bool op_acts_on_objects = false);
|
||||||
void ensure_entered_track_selected (bool op_acts_on_objects = false);
|
void ensure_entered_track_selected (bool op_acts_on_objects = false);
|
||||||
bool clear_entered_track;
|
bool clear_entered_track;
|
||||||
|
|
|
||||||
|
|
@ -270,7 +270,8 @@ Editor::register_actions ()
|
||||||
ActionManager::session_sensitive_actions.push_back (act);
|
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));
|
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);
|
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));
|
act = ActionManager::register_action (editor_actions, "pitch-shift-region", _("Transpose"), mem_fun(*this, &Editor::pitch_shift_regions));
|
||||||
ActionManager::session_sensitive_actions.push_back (act);
|
ActionManager::session_sensitive_actions.push_back (act);
|
||||||
|
|
|
||||||
|
|
@ -337,7 +337,7 @@ Editor::track_canvas_size_allocated ()
|
||||||
if (playhead_cursor) playhead_cursor->set_length (canvas_height);
|
if (playhead_cursor) playhead_cursor->set_length (canvas_height);
|
||||||
|
|
||||||
for (MarkerSelection::iterator x = selection->markers.begin(); x != selection->markers.end(); ++x) {
|
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) {
|
if (range_marker_drag_rect) {
|
||||||
|
|
@ -366,11 +366,17 @@ Editor::track_canvas_size_allocated ()
|
||||||
}
|
}
|
||||||
compute_fixed_ruler_scale ();
|
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();
|
update_fixed_rulers();
|
||||||
redisplay_tempo (true);
|
redisplay_tempo (true);
|
||||||
|
|
||||||
if (logo_item) {
|
if (logo_item) {
|
||||||
// logo_item->property_height() = canvas_height;
|
// logo_item->property_height() = full_canvas_height;
|
||||||
// logo_item->property_width() = canvas_width;
|
// logo_item->property_width() = canvas_width;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1172,7 +1172,7 @@ Editor::marker_selection_changed ()
|
||||||
}
|
}
|
||||||
|
|
||||||
for (MarkerSelection::iterator x = selection->markers.begin(); x != selection->markers.end(); ++x) {
|
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 ();
|
(*x)->show_line ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2389,7 +2389,7 @@ Editor::play_selected_region ()
|
||||||
nframes64_t start = max_frames;
|
nframes64_t start = max_frames;
|
||||||
nframes64_t end = 0;
|
nframes64_t end = 0;
|
||||||
|
|
||||||
ensure_entered_region_selected (true);
|
ExclusiveRegionSelection esr (*this, entered_regionview);
|
||||||
|
|
||||||
if (selection->regions.empty()) {
|
if (selection->regions.empty()) {
|
||||||
return;
|
return;
|
||||||
|
|
@ -2404,6 +2404,7 @@ Editor::play_selected_region ()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
session->request_stop ();
|
||||||
session->request_bounded_roll (start, end);
|
session->request_bounded_roll (start, end);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2567,27 +2568,58 @@ Editor::separate_regions_between (const TimeSelection& ts)
|
||||||
bool in_command = false;
|
bool in_command = false;
|
||||||
boost::shared_ptr<Playlist> playlist;
|
boost::shared_ptr<Playlist> playlist;
|
||||||
RegionSelection new_selection;
|
RegionSelection new_selection;
|
||||||
|
TrackSelection tmptracks;
|
||||||
sort_track_selection ();
|
|
||||||
|
|
||||||
for (TrackSelection::iterator i = selection->tracks.begin(); i != selection->tracks.end(); ++i) {
|
if (selection->tracks.empty()) {
|
||||||
|
|
||||||
|
/* use tracks with selected regions */
|
||||||
|
|
||||||
|
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;
|
RouteTimeAxisView* rtv;
|
||||||
|
|
||||||
if ((rtv = dynamic_cast<RouteTimeAxisView*> ((*i))) != 0) {
|
if ((rtv = dynamic_cast<RouteTimeAxisView*> ((*i))) != 0) {
|
||||||
|
|
||||||
boost::shared_ptr<Track> t = rtv->track();
|
if (rtv->is_track()) {
|
||||||
|
|
||||||
if (t != 0 && ! t->diskstream()->destructive()) {
|
/* no edits to destructive tracks */
|
||||||
|
|
||||||
|
if (rtv->track()->diskstream()->destructive()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if ((playlist = rtv->playlist()) != 0) {
|
if ((playlist = rtv->playlist()) != 0) {
|
||||||
|
|
||||||
XMLNode *before = &(playlist->get_state());
|
XMLNode *before;
|
||||||
bool got_some = false;
|
bool got_some;
|
||||||
|
|
||||||
|
before = &(playlist->get_state());
|
||||||
|
got_some = false;
|
||||||
|
|
||||||
/* XXX need to consider musical time selections here at some point */
|
/* 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) {
|
for (list<AudioRange>::const_iterator t = ts.begin(); t != ts.end(); ++t) {
|
||||||
|
|
@ -2986,29 +3018,59 @@ Editor::align_selection_relative (RegionPoint point, nframes_t position, const R
|
||||||
|
|
||||||
switch (point) {
|
switch (point) {
|
||||||
case Start:
|
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;
|
break;
|
||||||
|
|
||||||
case End:
|
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;
|
break;
|
||||||
|
|
||||||
case SyncPoint:
|
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;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pos > position) {
|
if (pos == r->position()) {
|
||||||
distance = pos - position;
|
return;
|
||||||
dir = -1;
|
|
||||||
} else {
|
|
||||||
distance = position - pos;
|
|
||||||
dir = 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
begin_reversible_command (_("align selection (relative)"));
|
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());
|
boost::shared_ptr<Region> region ((*i)->region());
|
||||||
|
|
||||||
|
|
@ -3100,7 +3162,7 @@ Editor::trim_region_to_punch ()
|
||||||
void
|
void
|
||||||
Editor::trim_region_to_location (const Location& loc, const char* str)
|
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 ());
|
RegionSelection& rs (get_regions_for_action ());
|
||||||
|
|
||||||
|
|
@ -3151,6 +3213,8 @@ Editor::trim_region_to_location (const Location& loc, const char* str)
|
||||||
void
|
void
|
||||||
Editor::trim_region_to_edit_point ()
|
Editor::trim_region_to_edit_point ()
|
||||||
{
|
{
|
||||||
|
ExclusiveRegionSelection ers (*this, entered_regionview);
|
||||||
|
|
||||||
RegionSelection& rs (get_regions_for_action ());
|
RegionSelection& rs (get_regions_for_action ());
|
||||||
nframes64_t where = get_preferred_edit_position();
|
nframes64_t where = get_preferred_edit_position();
|
||||||
|
|
||||||
|
|
@ -3193,6 +3257,8 @@ Editor::trim_region_to_edit_point ()
|
||||||
void
|
void
|
||||||
Editor::trim_region_from_edit_point ()
|
Editor::trim_region_from_edit_point ()
|
||||||
{
|
{
|
||||||
|
ExclusiveRegionSelection ers (*this, entered_regionview);
|
||||||
|
|
||||||
RegionSelection& rs (get_regions_for_action ());
|
RegionSelection& rs (get_regions_for_action ());
|
||||||
nframes64_t where = get_preferred_edit_position();
|
nframes64_t where = get_preferred_edit_position();
|
||||||
|
|
||||||
|
|
@ -4292,16 +4358,16 @@ Editor::toggle_region_opaque ()
|
||||||
void
|
void
|
||||||
Editor::set_fade_length (bool in)
|
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 */
|
/* we need a region to measure the offset from the start */
|
||||||
|
|
||||||
RegionView* rv;
|
RegionView* rv;
|
||||||
|
|
||||||
if (entered_regionview) {
|
if (!selection->regions.empty()) {
|
||||||
rv = entered_regionview;
|
|
||||||
} else if (!selection->regions.empty()) {
|
|
||||||
rv = selection->regions.front();
|
rv = selection->regions.front();
|
||||||
|
} else if (entered_regionview) {
|
||||||
|
rv = entered_regionview;
|
||||||
} else {
|
} else {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -4309,6 +4375,11 @@ Editor::set_fade_length (bool in)
|
||||||
nframes64_t pos = get_preferred_edit_position();
|
nframes64_t pos = get_preferred_edit_position();
|
||||||
nframes_t len;
|
nframes_t len;
|
||||||
char* cmd;
|
char* cmd;
|
||||||
|
|
||||||
|
if (pos > rv->region()->last_frame() || pos < rv->region()->first_frame()) {
|
||||||
|
/* edit point is outside the relevant region */
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (in) {
|
if (in) {
|
||||||
if (pos <= rv->region()->position()) {
|
if (pos <= rv->region()->position()) {
|
||||||
|
|
@ -4337,7 +4408,13 @@ Editor::set_fade_length (bool in)
|
||||||
return;
|
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();
|
XMLNode &before = alist->get_state();
|
||||||
|
|
||||||
if (in) {
|
if (in) {
|
||||||
|
|
@ -4347,13 +4424,12 @@ Editor::set_fade_length (bool in)
|
||||||
}
|
}
|
||||||
|
|
||||||
XMLNode &after = alist->get_state();
|
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 ();
|
commit_reversible_command ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
Editor::toggle_fade_active (bool in)
|
Editor::toggle_fade_active (bool in)
|
||||||
{
|
{
|
||||||
|
|
@ -4366,7 +4442,6 @@ Editor::toggle_fade_active (bool in)
|
||||||
const char* cmd = (in ? _("toggle fade in active") : _("toggle fade out active"));
|
const char* cmd = (in ? _("toggle fade in active") : _("toggle fade out active"));
|
||||||
bool have_switch = false;
|
bool have_switch = false;
|
||||||
bool yn;
|
bool yn;
|
||||||
bool in_command = false;
|
|
||||||
|
|
||||||
begin_reversible_command (cmd);
|
begin_reversible_command (cmd);
|
||||||
|
|
||||||
|
|
@ -4382,25 +4457,31 @@ Editor::toggle_fade_active (bool in)
|
||||||
/* make the behaviour consistent across all regions */
|
/* make the behaviour consistent across all regions */
|
||||||
|
|
||||||
if (!have_switch) {
|
if (!have_switch) {
|
||||||
yn = region->fade_in_active();
|
if (in) {
|
||||||
|
yn = region->fade_in_active();
|
||||||
|
} else {
|
||||||
|
yn = region->fade_out_active();
|
||||||
|
}
|
||||||
have_switch = true;
|
have_switch = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
XMLNode &before = region->get_state();
|
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();
|
XMLNode &after = region->get_state();
|
||||||
session->add_command(new MementoCommand<AudioRegion>(*region.get(), &before, &after));
|
session->add_command(new MementoCommand<AudioRegion>(*region.get(), &before, &after));
|
||||||
in_command = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (in_command) {
|
commit_reversible_command ();
|
||||||
commit_reversible_command ();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
Editor::set_fade_in_shape (AudioRegion::FadeShape shape)
|
Editor::set_fade_in_shape (AudioRegion::FadeShape shape)
|
||||||
{
|
{
|
||||||
|
|
||||||
begin_reversible_command (_("set fade in shape"));
|
begin_reversible_command (_("set fade in shape"));
|
||||||
|
|
||||||
for (RegionSelection::iterator x = selection->regions.begin(); x != selection->regions.end(); ++x) {
|
for (RegionSelection::iterator x = selection->regions.begin(); x != selection->regions.end(); ++x) {
|
||||||
|
|
@ -4420,6 +4501,7 @@ Editor::set_fade_in_shape (AudioRegion::FadeShape shape)
|
||||||
}
|
}
|
||||||
|
|
||||||
commit_reversible_command ();
|
commit_reversible_command ();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
@ -4468,6 +4550,8 @@ Editor::set_fade_in_active (bool yn)
|
||||||
XMLNode &after = ar->get_state();
|
XMLNode &after = ar->get_state();
|
||||||
session->add_command(new MementoCommand<AudioRegion>(*ar, &before, &after));
|
session->add_command(new MementoCommand<AudioRegion>(*ar, &before, &after));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
commit_reversible_command ();
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
@ -4491,6 +4575,8 @@ Editor::set_fade_out_active (bool yn)
|
||||||
XMLNode &after = ar->get_state();
|
XMLNode &after = ar->get_state();
|
||||||
session->add_command(new MementoCommand<AudioRegion>(*ar, &before, &after));
|
session->add_command(new MementoCommand<AudioRegion>(*ar, &before, &after));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
commit_reversible_command ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -4600,27 +4686,29 @@ Editor::ensure_entered_track_selected (bool op_really_wants_one_track_if_none_ar
|
||||||
void
|
void
|
||||||
Editor::ensure_entered_region_selected (bool op_really_wants_one_region_if_none_are_selected)
|
Editor::ensure_entered_region_selected (bool op_really_wants_one_region_if_none_are_selected)
|
||||||
{
|
{
|
||||||
if (entered_regionview && mouse_mode == MouseObject) {
|
if (!entered_regionview || mouse_mode != MouseObject) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/* heuristic:
|
|
||||||
|
/* heuristic:
|
||||||
- if there is no existing selection, don't change it. the operation will thus apply to "all"
|
|
||||||
|
- 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,
|
- if there is an existing selection, but the entered regionview isn't in it, add it. this
|
||||||
but also means that the operation will apply to the pointed-at region.
|
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()) {
|
if (!selection->regions.empty()) {
|
||||||
selection->add (entered_regionview);
|
if (!selection->selected (entered_regionview)) {
|
||||||
}
|
selection->add (entered_regionview);
|
||||||
} else {
|
}
|
||||||
/* there is no selection, but this operation requires/prefers selected objects */
|
} 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);
|
if (op_really_wants_one_region_if_none_are_selected) {
|
||||||
}
|
selection->set (entered_regionview, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -4640,6 +4728,8 @@ Editor::trim_region_back ()
|
||||||
void
|
void
|
||||||
Editor::trim_region (bool front)
|
Editor::trim_region (bool front)
|
||||||
{
|
{
|
||||||
|
ExclusiveRegionSelection ers (*this, entered_regionview);
|
||||||
|
|
||||||
nframes64_t where = get_preferred_edit_position();
|
nframes64_t where = get_preferred_edit_position();
|
||||||
RegionSelection& rs = get_regions_for_action ();
|
RegionSelection& rs = get_regions_for_action ();
|
||||||
|
|
||||||
|
|
@ -4662,6 +4752,7 @@ Editor::trim_region (bool front)
|
||||||
session->add_command(new MementoCommand<Playlist>(*pl.get(), &before, &after));
|
session->add_command(new MementoCommand<Playlist>(*pl.get(), &before, &after));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
commit_reversible_command ();
|
commit_reversible_command ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -4764,7 +4855,7 @@ Editor::set_loop_from_region (bool play)
|
||||||
nframes64_t start = max_frames;
|
nframes64_t start = max_frames;
|
||||||
nframes64_t end = 0;
|
nframes64_t end = 0;
|
||||||
|
|
||||||
ensure_entered_region_selected (true);
|
ExclusiveRegionSelection esr (*this, entered_regionview);
|
||||||
|
|
||||||
if (selection->regions.empty()) {
|
if (selection->regions.empty()) {
|
||||||
info << _("cannot set loop: no region selected") << endmsg;
|
info << _("cannot set loop: no region selected") << endmsg;
|
||||||
|
|
@ -4818,6 +4909,31 @@ Editor::set_punch_from_edit_range ()
|
||||||
set_punch_range (start, end, _("set punch range from edit range"));
|
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
|
void
|
||||||
Editor::pitch_shift_regions ()
|
Editor::pitch_shift_regions ()
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -808,7 +808,7 @@ void
|
||||||
Editor::select_all (Selection::Operation op)
|
Editor::select_all (Selection::Operation op)
|
||||||
{
|
{
|
||||||
list<Selectable *> touched;
|
list<Selectable *> touched;
|
||||||
|
|
||||||
for (TrackViewList::iterator iter = track_views.begin(); iter != track_views.end(); ++iter) {
|
for (TrackViewList::iterator iter = track_views.begin(); iter != track_views.end(); ++iter) {
|
||||||
if ((*iter)->hidden()) {
|
if ((*iter)->hidden()) {
|
||||||
continue;
|
continue;
|
||||||
|
|
@ -991,7 +991,15 @@ Editor::select_all_selectables_using_time_selection ()
|
||||||
return;
|
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()) {
|
if ((*iter)->hidden()) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
@ -1014,7 +1022,16 @@ Editor::select_all_selectables_using_punch()
|
||||||
return;
|
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()) {
|
if ((*iter)->hidden()) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
@ -1036,7 +1053,16 @@ Editor::select_all_selectables_using_loop()
|
||||||
return;
|
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()) {
|
if ((*iter)->hidden()) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
@ -1069,7 +1095,16 @@ Editor::select_all_selectables_using_cursor (Cursor *cursor, bool after)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (TrackViewList::iterator iter = track_views.begin(); iter != track_views.end(); ++iter) {
|
|
||||||
|
TrackSelection* ts;
|
||||||
|
|
||||||
|
if (selection->tracks.empty()) {
|
||||||
|
ts = &track_views;
|
||||||
|
} else {
|
||||||
|
ts = &selection->tracks;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (TrackViewList::iterator iter = ts->begin(); iter != ts->end(); ++iter) {
|
||||||
if ((*iter)->hidden()) {
|
if ((*iter)->hidden()) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
@ -1100,7 +1135,16 @@ Editor::select_all_selectables_using_edit (bool after)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (TrackViewList::iterator iter = track_views.begin(); iter != track_views.end(); ++iter) {
|
|
||||||
|
TrackSelection* ts;
|
||||||
|
|
||||||
|
if (selection->tracks.empty()) {
|
||||||
|
ts = &track_views;
|
||||||
|
} else {
|
||||||
|
ts = &selection->tracks;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (TrackViewList::iterator iter = ts->begin(); iter != ts->end(); ++iter) {
|
||||||
if ((*iter)->hidden()) {
|
if ((*iter)->hidden()) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
@ -1120,8 +1164,16 @@ Editor::select_all_selectables_between (bool within)
|
||||||
if (!get_edit_op_range (start, end)) {
|
if (!get_edit_op_range (start, end)) {
|
||||||
return;
|
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()) {
|
if ((*iter)->hidden()) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
@ -1241,3 +1293,28 @@ Editor::deselect_all ()
|
||||||
{
|
{
|
||||||
selection->clear ();
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
|
|
||||||
|
|
@ -27,6 +28,7 @@
|
||||||
#include <pbd/memento_command.h>
|
#include <pbd/memento_command.h>
|
||||||
|
|
||||||
#include <gtkmm2ext/window_title.h>
|
#include <gtkmm2ext/window_title.h>
|
||||||
|
#include <gtkmm2ext/utils.h>
|
||||||
|
|
||||||
#include "editor.h"
|
#include "editor.h"
|
||||||
#include "audio_time_axis.h"
|
#include "audio_time_axis.h"
|
||||||
|
|
@ -42,8 +44,14 @@
|
||||||
#include <ardour/stretch.h>
|
#include <ardour/stretch.h>
|
||||||
#include <ardour/pitch.h>
|
#include <ardour/pitch.h>
|
||||||
|
|
||||||
|
#ifdef USE_RUBBERBAND
|
||||||
|
#include <rubberband/RubberBandStretcher.h>
|
||||||
|
using namespace RubberBand;
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "i18n.h"
|
#include "i18n.h"
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
using namespace ARDOUR;
|
using namespace ARDOUR;
|
||||||
using namespace PBD;
|
using namespace PBD;
|
||||||
using namespace sigc;
|
using namespace sigc;
|
||||||
|
|
@ -54,14 +62,16 @@ Editor::TimeFXDialog::TimeFXDialog (Editor& e, bool pitch)
|
||||||
: ArdourDialog (X_("time fx dialog")),
|
: ArdourDialog (X_("time fx dialog")),
|
||||||
editor (e),
|
editor (e),
|
||||||
pitching (pitch),
|
pitching (pitch),
|
||||||
pitch_octave_adjustment (0.0, 0.0, 4.0, 1, 2.0),
|
pitch_octave_adjustment (0.0, -4.0, 4.0, 1, 2.0),
|
||||||
pitch_semitone_adjustment (0.0, 0.0, 12.0, 1.0, 4.0),
|
pitch_semitone_adjustment (0.0, -12.0, 12.0, 1.0, 4.0),
|
||||||
pitch_cent_adjustment (0.0, 0.0, 150.0, 5.0, 15.0),
|
pitch_cent_adjustment (0.0, -499.0, 500.0, 5.0, 15.0),
|
||||||
pitch_octave_spinner (pitch_octave_adjustment),
|
pitch_octave_spinner (pitch_octave_adjustment),
|
||||||
pitch_semitone_spinner (pitch_semitone_adjustment),
|
pitch_semitone_spinner (pitch_semitone_adjustment),
|
||||||
pitch_cent_spinner (pitch_cent_adjustment),
|
pitch_cent_spinner (pitch_cent_adjustment),
|
||||||
quick_button (_("Quick but Ugly")),
|
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_modal (true);
|
||||||
set_position (Gtk::WIN_POS_MOUSE);
|
set_position (Gtk::WIN_POS_MOUSE);
|
||||||
|
|
@ -79,8 +89,6 @@ Editor::TimeFXDialog::TimeFXDialog (Editor& e, bool pitch)
|
||||||
|
|
||||||
get_vbox()->set_spacing (5);
|
get_vbox()->set_spacing (5);
|
||||||
get_vbox()->set_border_width (12);
|
get_vbox()->set_border_width (12);
|
||||||
get_vbox()->pack_start (upper_button_box, false, false);
|
|
||||||
get_vbox()->pack_start (progress_bar);
|
|
||||||
|
|
||||||
if (pitching) {
|
if (pitching) {
|
||||||
|
|
||||||
|
|
@ -105,19 +113,44 @@ Editor::TimeFXDialog::TimeFXDialog (Editor& e, bool pitch)
|
||||||
|
|
||||||
add_button (_("Shift"), Gtk::RESPONSE_ACCEPT);
|
add_button (_("Shift"), Gtk::RESPONSE_ACCEPT);
|
||||||
|
|
||||||
|
get_vbox()->pack_start (upper_button_box, false, false);
|
||||||
|
|
||||||
} else {
|
} 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_homogeneous (true);
|
||||||
upper_button_box.set_spacing (5);
|
upper_button_box.set_spacing (5);
|
||||||
upper_button_box.set_border_width (5);
|
upper_button_box.set_border_width (5);
|
||||||
|
|
||||||
upper_button_box.pack_start (quick_button, true, true);
|
upper_button_box.pack_start (quick_button, true, true);
|
||||||
upper_button_box.pack_start (antialias_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);
|
add_button (_("Stretch/Shrink"), Gtk::RESPONSE_ACCEPT);
|
||||||
}
|
}
|
||||||
|
|
||||||
quick_button.set_name (N_("TimeFXButton"));
|
get_vbox()->pack_start (progress_bar);
|
||||||
antialias_button.set_name (N_("TimeFXButton"));
|
|
||||||
progress_bar.set_name (N_("TimeFXProgress"));
|
progress_bar.set_name (N_("TimeFXProgress"));
|
||||||
|
|
||||||
show_all_children ();
|
show_all_children ();
|
||||||
|
|
@ -184,6 +217,7 @@ Editor::time_fx (RegionSelection& regions, float val, bool pitching)
|
||||||
if (pitching) {
|
if (pitching) {
|
||||||
|
|
||||||
float cents = current_timefx->pitch_octave_adjustment.get_value() * 1200.0;
|
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_semitone_adjustment.get_value() * 100.0;
|
||||||
cents += current_timefx->pitch_cent_adjustment.get_value();
|
cents += current_timefx->pitch_cent_adjustment.get_value();
|
||||||
|
|
||||||
|
|
@ -193,19 +227,15 @@ Editor::time_fx (RegionSelection& regions, float val, bool pitching)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// we now have the pitch shift in cents. divide by 1200 to get octaves
|
// one octave == 1200 cents
|
||||||
// then multiply by 2.0 because 1 octave == doubling the frequency
|
// adding one octave doubles the frequency
|
||||||
|
// ratio is 2^^octaves
|
||||||
cents /= 1200.0;
|
|
||||||
cents /= 2.0;
|
pitch_fraction = pow(2, cents/1200);
|
||||||
|
|
||||||
// add 1.0 to convert to RB scale
|
|
||||||
|
|
||||||
cents += 1.0;
|
|
||||||
|
|
||||||
current_timefx->request.time_fraction = 1.0;
|
current_timefx->request.time_fraction = 1.0;
|
||||||
current_timefx->request.pitch_fraction = cents;
|
current_timefx->request.pitch_fraction = pitch_fraction;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
current_timefx->request.time_fraction = val;
|
current_timefx->request.time_fraction = val;
|
||||||
|
|
@ -213,8 +243,70 @@ Editor::time_fx (RegionSelection& regions, float val, bool pitching)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef USE_RUBBERBAND
|
||||||
|
/* parse options */
|
||||||
|
|
||||||
|
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;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
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.quick_seek = current_timefx->quick_button.get_active();
|
||||||
current_timefx->request.antialias = !current_timefx->antialias_button.get_active();
|
current_timefx->request.antialias = !current_timefx->antialias_button.get_active();
|
||||||
|
#endif
|
||||||
current_timefx->request.progress = 0.0f;
|
current_timefx->request.progress = 0.0f;
|
||||||
current_timefx->request.done = false;
|
current_timefx->request.done = false;
|
||||||
current_timefx->request.cancel = false;
|
current_timefx->request.cancel = false;
|
||||||
|
|
@ -239,7 +331,7 @@ Editor::time_fx (RegionSelection& regions, float val, bool pitching)
|
||||||
|
|
||||||
sigc::connection c = Glib::signal_timeout().connect (mem_fun (current_timefx, &TimeFXDialog::update_progress), 100);
|
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 ();
|
gtk_main_iteration ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
#include <map>
|
||||||
|
|
||||||
#include <glibmm.h>
|
#include <glibmm.h>
|
||||||
#include <pbd/xml++.h>
|
#include <pbd/xml++.h>
|
||||||
|
|
@ -22,6 +23,7 @@
|
||||||
|
|
||||||
#include <pbd/convert.h>
|
#include <pbd/convert.h>
|
||||||
#include <pbd/error.h>
|
#include <pbd/error.h>
|
||||||
|
#include <pbd/pathscanner.h>
|
||||||
|
|
||||||
#ifdef __APPLE
|
#ifdef __APPLE
|
||||||
#include <CFBundle.h>
|
#include <CFBundle.h>
|
||||||
|
|
@ -113,7 +115,6 @@ EngineControl::EngineControl ()
|
||||||
strings.push_back (X_("ALSA"));
|
strings.push_back (X_("ALSA"));
|
||||||
strings.push_back (X_("OSS"));
|
strings.push_back (X_("OSS"));
|
||||||
strings.push_back (X_("FFADO"));
|
strings.push_back (X_("FFADO"));
|
||||||
strings.push_back (X_("FreeBoB"));
|
|
||||||
#endif
|
#endif
|
||||||
strings.push_back (X_("NetJACK"));
|
strings.push_back (X_("NetJACK"));
|
||||||
strings.push_back (X_("Dummy"));
|
strings.push_back (X_("Dummy"));
|
||||||
|
|
@ -364,7 +365,7 @@ EngineControl::build_command_line (vector<string>& cmd)
|
||||||
bool using_coreaudio = false;
|
bool using_coreaudio = false;
|
||||||
bool using_netjack = false;
|
bool using_netjack = false;
|
||||||
bool using_ffado = false;
|
bool using_ffado = false;
|
||||||
bool using_freebob = false;
|
bool using_dummy = false;
|
||||||
|
|
||||||
/* first, path to jackd */
|
/* first, path to jackd */
|
||||||
|
|
||||||
|
|
@ -427,10 +428,10 @@ EngineControl::build_command_line (vector<string>& cmd)
|
||||||
} else if (driver == X_("FFADO")) {
|
} else if (driver == X_("FFADO")) {
|
||||||
using_ffado = true;
|
using_ffado = true;
|
||||||
cmd.push_back ("firewire");
|
cmd.push_back ("firewire");
|
||||||
} else if (driver == X_("FreeBoB")) {
|
} else if ( driver == X_("Dummy")) {
|
||||||
using_freebob = true;
|
using_dummy = true;
|
||||||
cmd.push_back ("freebob");
|
cmd.push_back ("dummy");
|
||||||
}
|
}
|
||||||
|
|
||||||
/* driver arguments */
|
/* driver arguments */
|
||||||
|
|
||||||
|
|
@ -454,8 +455,10 @@ EngineControl::build_command_line (vector<string>& cmd)
|
||||||
cmd.push_back ("-C");
|
cmd.push_back ("-C");
|
||||||
}
|
}
|
||||||
|
|
||||||
cmd.push_back ("-n");
|
if (! using_dummy ) {
|
||||||
cmd.push_back (to_string ((uint32_t) floor (periods_spinner.get_value()), std::dec));
|
cmd.push_back ("-n");
|
||||||
|
cmd.push_back (to_string ((uint32_t) floor (periods_spinner.get_value()), std::dec));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
cmd.push_back ("-r");
|
cmd.push_back ("-r");
|
||||||
|
|
@ -572,7 +575,6 @@ EngineControl::enumerate_devices ()
|
||||||
#else
|
#else
|
||||||
devices["ALSA"] = enumerate_alsa_devices ();
|
devices["ALSA"] = enumerate_alsa_devices ();
|
||||||
devices["FFADO"] = enumerate_ffado_devices ();
|
devices["FFADO"] = enumerate_ffado_devices ();
|
||||||
devices["FreeBoB"] = enumerate_freebob_devices ();
|
|
||||||
devices["OSS"] = enumerate_oss_devices ();
|
devices["OSS"] = enumerate_oss_devices ();
|
||||||
devices["Dummy"] = enumerate_dummy_devices ();
|
devices["Dummy"] = enumerate_dummy_devices ();
|
||||||
devices["NetJACK"] = enumerate_netjack_devices ();
|
devices["NetJACK"] = enumerate_netjack_devices ();
|
||||||
|
|
@ -825,6 +827,11 @@ EngineControl::audio_mode_changed ()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool jack_server_filter(const string& str, void *arg)
|
||||||
|
{
|
||||||
|
return str == "jackd" || str == "jackdmp";
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
EngineControl::find_jack_servers (vector<string>& strings)
|
EngineControl::find_jack_servers (vector<string>& strings)
|
||||||
{
|
{
|
||||||
|
|
@ -838,14 +845,11 @@ EngineControl::find_jack_servers (vector<string>& strings)
|
||||||
|
|
||||||
_NSGetExecutablePath (execpath, &pathsz);
|
_NSGetExecutablePath (execpath, &pathsz);
|
||||||
|
|
||||||
cerr << " execpath = " << execpath << endl;
|
|
||||||
|
|
||||||
Glib::ustring path (Glib::path_get_dirname (execpath));
|
Glib::ustring path (Glib::path_get_dirname (execpath));
|
||||||
path += "/jackd";
|
path += "/jackd";
|
||||||
|
|
||||||
if (Glib::file_test (path, FILE_TEST_EXISTS)) {
|
if (Glib::file_test (path, FILE_TEST_EXISTS)) {
|
||||||
strings.push_back (path);
|
strings.push_back (path);
|
||||||
cerr << "Found jack in " << path << endl;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (getenv ("ARDOUR_WITH_JACK")) {
|
if (getenv ("ARDOUR_WITH_JACK")) {
|
||||||
|
|
@ -856,29 +860,30 @@ EngineControl::find_jack_servers (vector<string>& strings)
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
string path;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (Glib::file_test ("/usr/bin/jackd", FILE_TEST_EXISTS)) {
|
PathScanner scanner;
|
||||||
strings.push_back ("/usr/bin/jackd");
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
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");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
string
|
string
|
||||||
EngineControl::get_device_name (const string& driver, const string& human_readable)
|
EngineControl::get_device_name (const string& driver, const string& human_readable)
|
||||||
{
|
{
|
||||||
|
|
@ -1023,9 +1028,18 @@ EngineControl::set_state (const XMLNode& root)
|
||||||
XMLNode* child;
|
XMLNode* child;
|
||||||
XMLProperty* prop;
|
XMLProperty* prop;
|
||||||
|
|
||||||
|
bool using_dummy = false;
|
||||||
|
|
||||||
int val;
|
int val;
|
||||||
string strval;
|
string strval;
|
||||||
|
|
||||||
|
if ( (child = root.child("driver"))){
|
||||||
|
prop = child->property("val");
|
||||||
|
if (prop && (prop->value() == "Dummy") ) {
|
||||||
|
using_dummy = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
clist = root.children();
|
clist = root.children();
|
||||||
|
|
||||||
for (citer = clist.begin(); citer != clist.end(); ++citer) {
|
for (citer = clist.begin(); citer != clist.end(); ++citer) {
|
||||||
|
|
@ -1035,6 +1049,8 @@ EngineControl::set_state (const XMLNode& root)
|
||||||
prop = child->property ("val");
|
prop = child->property ("val");
|
||||||
|
|
||||||
if (!prop || prop->value().empty()) {
|
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;
|
error << string_compose (_("AudioSetup value for %1 is missing data"), child->name()) << endmsg;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -971,22 +971,6 @@ GainMeter::gain_automation_state_changed ()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void GainMeter::setup_atv_meter (int len)
|
|
||||||
{
|
|
||||||
set_no_show_all();
|
|
||||||
regular_meter_width = 3;
|
|
||||||
set_width(Narrow, len);
|
|
||||||
hide_all();
|
|
||||||
|
|
||||||
//cerr << "Config->get_show_track_meters() = " << Config->get_show_track_meters() << endl;//DEBUG
|
|
||||||
|
|
||||||
if (Config->get_show_track_meters()) {
|
|
||||||
meter_packer.show_all();
|
|
||||||
hbox.show();
|
|
||||||
show();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void GainMeter::clear_meters ()
|
void GainMeter::clear_meters ()
|
||||||
{
|
{
|
||||||
for (vector<MeterInfo>::iterator i = meters.begin(); i < meters.end(); i++) {
|
for (vector<MeterInfo>::iterator i = meters.begin(); i < meters.end(); i++) {
|
||||||
|
|
|
||||||
|
|
@ -75,7 +75,6 @@ class GainMeter : public Gtk::VBox
|
||||||
void set_meter_strip_name (const char * name);
|
void set_meter_strip_name (const char * name);
|
||||||
void set_fader_name (const char * name);
|
void set_fader_name (const char * name);
|
||||||
|
|
||||||
void setup_atv_meter (int);
|
|
||||||
void clear_meters ();
|
void clear_meters ();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,8 @@
|
||||||
#include <pbd/strsplit.h>
|
#include <pbd/strsplit.h>
|
||||||
#include <pbd/replace_all.h>
|
#include <pbd/replace_all.h>
|
||||||
|
|
||||||
|
#include <ardour/profile.h>
|
||||||
|
|
||||||
#include "actions.h"
|
#include "actions.h"
|
||||||
#include "keyboard.h"
|
#include "keyboard.h"
|
||||||
#include "keyeditor.h"
|
#include "keyeditor.h"
|
||||||
|
|
@ -22,7 +24,10 @@ using namespace Gdk;
|
||||||
using namespace PBD;
|
using namespace PBD;
|
||||||
|
|
||||||
KeyEditor::KeyEditor ()
|
KeyEditor::KeyEditor ()
|
||||||
: ArdourDialog (_("Keybinding Editor"), false)
|
: ArdourDialog (_("Shortcut Editor"), false)
|
||||||
|
, unbind_button (_("Remove shortcut"))
|
||||||
|
, unbind_box (BUTTONBOX_END)
|
||||||
|
|
||||||
{
|
{
|
||||||
can_bind = false;
|
can_bind = false;
|
||||||
last_state = 0;
|
last_state = 0;
|
||||||
|
|
@ -31,7 +36,7 @@ KeyEditor::KeyEditor ()
|
||||||
|
|
||||||
view.set_model (model);
|
view.set_model (model);
|
||||||
view.append_column (_("Action"), columns.action);
|
view.append_column (_("Action"), columns.action);
|
||||||
view.append_column (_("Binding"), columns.binding);
|
view.append_column (_("Shortcut"), columns.binding);
|
||||||
view.set_headers_visible (true);
|
view.set_headers_visible (true);
|
||||||
view.get_selection()->set_mode (SELECTION_SINGLE);
|
view.get_selection()->set_mode (SELECTION_SINGLE);
|
||||||
view.set_reorderable (false);
|
view.set_reorderable (false);
|
||||||
|
|
@ -45,11 +50,49 @@ KeyEditor::KeyEditor ()
|
||||||
scroller.add (view);
|
scroller.add (view);
|
||||||
scroller.set_policy (Gtk::POLICY_NEVER, Gtk::POLICY_AUTOMATIC);
|
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);
|
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);
|
get_vbox()->set_border_width (12);
|
||||||
|
|
||||||
scroller.show ();
|
|
||||||
view.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
|
||||||
|
|
@ -69,6 +112,28 @@ KeyEditor::on_unmap ()
|
||||||
void
|
void
|
||||||
KeyEditor::action_selected ()
|
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
|
bool
|
||||||
|
|
@ -112,8 +177,6 @@ KeyEditor::on_key_release_event (GdkEventKey* ev)
|
||||||
(*i)[columns.binding] = string();
|
(*i)[columns.binding] = string();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
out:
|
out:
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
|
#include <gtkmm/buttonbox.h>
|
||||||
#include <gtkmm/treeview.h>
|
#include <gtkmm/treeview.h>
|
||||||
#include <gtkmm/treestore.h>
|
#include <gtkmm/treestore.h>
|
||||||
#include <gtkmm/scrolledwindow.h>
|
#include <gtkmm/scrolledwindow.h>
|
||||||
|
|
@ -39,6 +40,10 @@ class KeyEditor : public ArdourDialog
|
||||||
Gtk::TreeView view;
|
Gtk::TreeView view;
|
||||||
Glib::RefPtr<Gtk::TreeStore> model;
|
Glib::RefPtr<Gtk::TreeStore> model;
|
||||||
KeyEditorColumns columns;
|
KeyEditorColumns columns;
|
||||||
|
Gtk::Button unbind_button;
|
||||||
|
Gtk::HButtonBox unbind_box;
|
||||||
|
|
||||||
|
void unbind ();
|
||||||
|
|
||||||
bool can_bind;
|
bool can_bind;
|
||||||
guint last_state;
|
guint last_state;
|
||||||
|
|
|
||||||
|
|
@ -62,7 +62,7 @@ Mixer_UI::Mixer_UI ()
|
||||||
: Window (Gtk::WINDOW_TOPLEVEL)
|
: Window (Gtk::WINDOW_TOPLEVEL)
|
||||||
{
|
{
|
||||||
session = 0;
|
session = 0;
|
||||||
_strip_width = Wide;
|
Config->get_default_narrow_ms() ? _strip_width = Narrow : _strip_width = Wide;
|
||||||
track_menu = 0;
|
track_menu = 0;
|
||||||
mix_group_context_menu = 0;
|
mix_group_context_menu = 0;
|
||||||
no_track_list_redisplay = false;
|
no_track_list_redisplay = false;
|
||||||
|
|
@ -309,6 +309,8 @@ Mixer_UI::add_strip (Session::RouteList& routes)
|
||||||
strip = new MixerStrip (*this, *session, route);
|
strip = new MixerStrip (*this, *session, route);
|
||||||
strips.push_back (strip);
|
strips.push_back (strip);
|
||||||
|
|
||||||
|
Config->get_default_narrow_ms() ? _strip_width = Narrow : _strip_width = Wide;
|
||||||
|
|
||||||
if (strip->width_owner() != strip) {
|
if (strip->width_owner() != strip) {
|
||||||
strip->set_width (_strip_width, this);
|
strip->set_width (_strip_width, this);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -42,6 +42,7 @@ using namespace ARDOUR;
|
||||||
using namespace PBD;
|
using namespace PBD;
|
||||||
|
|
||||||
#include "opts.h"
|
#include "opts.h"
|
||||||
|
#include "utils.h"
|
||||||
|
|
||||||
NewSessionDialog::NewSessionDialog()
|
NewSessionDialog::NewSessionDialog()
|
||||||
: ArdourDialog ("session control")
|
: ArdourDialog ("session control")
|
||||||
|
|
@ -348,6 +349,30 @@ NewSessionDialog::NewSessionDialog()
|
||||||
get_vbox()->set_spacing(0);
|
get_vbox()->set_spacing(0);
|
||||||
get_vbox()->pack_start(*m_notebook, Gtk::PACK_SHRINK, 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());
|
WindowTitle title(Glib::get_application_name());
|
||||||
title += _("Session Control");
|
title += _("Session Control");
|
||||||
set_title(title.get_string());
|
set_title(title.get_string());
|
||||||
|
|
@ -360,7 +385,7 @@ NewSessionDialog::NewSessionDialog()
|
||||||
// add_button(Gtk::Stock::HELP, Gtk::RESPONSE_HELP);
|
// add_button(Gtk::Stock::HELP, Gtk::RESPONSE_HELP);
|
||||||
add_button(Gtk::Stock::QUIT, Gtk::RESPONSE_CANCEL);
|
add_button(Gtk::Stock::QUIT, Gtk::RESPONSE_CANCEL);
|
||||||
add_button(Gtk::Stock::CLEAR, Gtk::RESPONSE_NONE);
|
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);
|
recent_model = Gtk::TreeStore::create (recent_columns);
|
||||||
m_treeview->set_model (recent_model);
|
m_treeview->set_model (recent_model);
|
||||||
|
|
@ -425,7 +450,6 @@ NewSessionDialog::NewSessionDialog()
|
||||||
m_treeview->signal_row_activated().connect (mem_fun (*this, &NewSessionDialog::recent_row_activated));
|
m_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_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_template->signal_selection_changed ().connect (mem_fun (*this, &NewSessionDialog::template_chosen));
|
||||||
m_name->grab_focus();
|
|
||||||
|
|
||||||
page_set = Pages (0);
|
page_set = Pages (0);
|
||||||
}
|
}
|
||||||
|
|
@ -523,7 +547,10 @@ NewSessionDialog::session_name() const
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (on_newable_page()) {
|
int page = m_notebook->get_current_page();
|
||||||
|
|
||||||
|
if (page == 0 || page == 2) {
|
||||||
|
/* new or audio setup pages */
|
||||||
return Glib::filename_from_utf8(m_name->get_text());
|
return Glib::filename_from_utf8(m_name->get_text());
|
||||||
} else {
|
} else {
|
||||||
if (m_treeview->get_selection()->count_selected_rows() == 0) {
|
if (m_treeview->get_selection()->count_selected_rows() == 0) {
|
||||||
|
|
@ -537,12 +564,13 @@ NewSessionDialog::session_name() const
|
||||||
std::string
|
std::string
|
||||||
NewSessionDialog::session_folder() const
|
NewSessionDialog::session_folder() const
|
||||||
{
|
{
|
||||||
if (on_newable_page()) {
|
if (m_notebook->get_current_page() == 0) {
|
||||||
return Glib::filename_from_utf8(m_folder->get_filename());
|
return Glib::filename_from_utf8(m_folder->get_filename());
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
if (m_treeview->get_selection()->count_selected_rows() == 0) {
|
if (m_treeview->get_selection()->count_selected_rows() == 0) {
|
||||||
std::string str = Glib::filename_from_utf8(m_open_filechooser->get_filename());
|
const string filename(Glib::filename_from_utf8(m_open_filechooser->get_filename()));
|
||||||
return Glib::path_get_dirname(str);
|
return Glib::path_get_dirname(filename);
|
||||||
}
|
}
|
||||||
Gtk::TreeModel::iterator i = m_treeview->get_selection()->get_selected();
|
Gtk::TreeModel::iterator i = m_treeview->get_selection()->get_selected();
|
||||||
return (*i)[recent_columns.fullpath];
|
return (*i)[recent_columns.fullpath];
|
||||||
|
|
@ -634,19 +662,62 @@ NewSessionDialog::connect_outs_to_physical() const
|
||||||
return m_connect_outputs_to_physical->get_active();
|
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
|
int
|
||||||
NewSessionDialog::get_current_page() const
|
NewSessionDialog::get_current_page() const
|
||||||
{
|
{
|
||||||
return m_notebook->get_current_page();
|
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
|
void
|
||||||
NewSessionDialog::set_current_page(int page)
|
NewSessionDialog::set_current_page(int page)
|
||||||
{
|
{
|
||||||
|
|
@ -678,8 +749,11 @@ NewSessionDialog::notebook_page_changed (GtkNotebookPage* np, uint pagenum)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!on_newable_page ()) {
|
switch (which_page()) {
|
||||||
|
case OpenPage:
|
||||||
|
on_new_session_page = false;
|
||||||
m_okbutton->set_label(_("Open"));
|
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_NONE, false);
|
||||||
m_okbutton->set_image (*(new Gtk::Image (Gtk::Stock::OPEN, Gtk::ICON_SIZE_BUTTON)));
|
m_okbutton->set_image (*(new Gtk::Image (Gtk::Stock::OPEN, Gtk::ICON_SIZE_BUTTON)));
|
||||||
if (m_treeview->get_selection()->count_selected_rows() == 0) {
|
if (m_treeview->get_selection()->count_selected_rows() == 0) {
|
||||||
|
|
@ -687,14 +761,24 @@ NewSessionDialog::notebook_page_changed (GtkNotebookPage* np, uint pagenum)
|
||||||
} else {
|
} else {
|
||||||
set_response_sensitive (Gtk::RESPONSE_OK, true);
|
set_response_sensitive (Gtk::RESPONSE_OK, true);
|
||||||
}
|
}
|
||||||
} else {
|
break;
|
||||||
if (m_name->get_text() != "") {
|
|
||||||
set_response_sensitive (Gtk::RESPONSE_NONE, true);
|
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_label(_("New"));
|
||||||
m_okbutton->set_image (*(new Gtk::Image (Gtk::Stock::NEW, Gtk::ICON_SIZE_BUTTON)));
|
m_okbutton->set_image (*(new Gtk::Image (Gtk::Stock::NEW, Gtk::ICON_SIZE_BUTTON)));
|
||||||
if (m_name->get_text() == "") {
|
if (m_name->get_text() == "") {
|
||||||
set_response_sensitive (Gtk::RESPONSE_OK, false);
|
set_response_sensitive (Gtk::RESPONSE_OK, false);
|
||||||
|
m_name->grab_focus();
|
||||||
} else {
|
} else {
|
||||||
set_response_sensitive (Gtk::RESPONSE_OK, true);
|
set_response_sensitive (Gtk::RESPONSE_OK, true);
|
||||||
}
|
}
|
||||||
|
|
@ -718,12 +802,21 @@ NewSessionDialog::treeview_selection_changed ()
|
||||||
void
|
void
|
||||||
NewSessionDialog::file_chosen ()
|
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();
|
m_treeview->get_selection()->unselect_all();
|
||||||
|
|
||||||
if (get_window())
|
Glib::RefPtr<Gdk::Window> win (get_window());
|
||||||
get_window()->set_cursor(Gdk::Cursor(Gdk::WATCH));
|
|
||||||
|
if (win) {
|
||||||
|
win->set_cursor(Gdk::Cursor(Gdk::WATCH));
|
||||||
|
}
|
||||||
|
|
||||||
if (!m_open_filechooser->get_filename().empty()) {
|
if (!m_open_filechooser->get_filename().empty()) {
|
||||||
set_response_sensitive (Gtk::RESPONSE_OK, true);
|
set_response_sensitive (Gtk::RESPONSE_OK, true);
|
||||||
|
|
|
||||||
|
|
@ -54,6 +54,12 @@ class NewSessionDialog : public ArdourDialog
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
enum Pages {
|
||||||
|
NewPage = 0x1,
|
||||||
|
OpenPage = 0x2,
|
||||||
|
EnginePage = 0x4
|
||||||
|
};
|
||||||
|
|
||||||
NewSessionDialog();
|
NewSessionDialog();
|
||||||
~NewSessionDialog ();
|
~NewSessionDialog ();
|
||||||
|
|
||||||
|
|
@ -86,9 +92,9 @@ public:
|
||||||
|
|
||||||
bool connect_outs_to_master() const;
|
bool connect_outs_to_master() const;
|
||||||
bool connect_outs_to_physical() 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 set_current_page (int);
|
||||||
void reset_recent();
|
void reset_recent();
|
||||||
|
|
||||||
|
|
@ -170,11 +176,6 @@ protected:
|
||||||
Gtk::Notebook* m_notebook;
|
Gtk::Notebook* m_notebook;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
enum Pages {
|
|
||||||
NewPage = 0x1,
|
|
||||||
OpenPage = 0x2,
|
|
||||||
EnginePage = 0x4
|
|
||||||
};
|
|
||||||
|
|
||||||
Pages page_set;
|
Pages page_set;
|
||||||
|
|
||||||
|
|
@ -213,6 +214,7 @@ protected:
|
||||||
void master_bus_button_clicked ();
|
void master_bus_button_clicked ();
|
||||||
void monitor_bus_button_clicked ();
|
void monitor_bus_button_clicked ();
|
||||||
|
|
||||||
|
bool on_new_session_page;
|
||||||
bool have_engine;
|
bool have_engine;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -34,10 +34,10 @@ using namespace PBD;
|
||||||
|
|
||||||
TempoDialog::TempoDialog (TempoMap& map, nframes_t frame, const string & action)
|
TempoDialog::TempoDialog (TempoMap& map, nframes_t frame, const string & action)
|
||||||
: ArdourDialog (_("edit tempo")),
|
: ArdourDialog (_("edit tempo")),
|
||||||
note_frame (_("BPM denominator")),
|
|
||||||
bpm_adjustment (60.0, 1.0, 999.9, 0.1, 1.0, 1.0),
|
bpm_adjustment (60.0, 1.0, 999.9, 0.1, 1.0, 1.0),
|
||||||
bpm_spinner (bpm_adjustment),
|
bpm_spinner (bpm_adjustment),
|
||||||
bpm_frame (_("Beats per minute")),
|
bpm_frame (_("Beats per minute")),
|
||||||
|
note_frame (_("BPM denominator")),
|
||||||
ok_button (action),
|
ok_button (action),
|
||||||
cancel_button (_("Cancel")),
|
cancel_button (_("Cancel")),
|
||||||
when_bar_label (_("Bar")),
|
when_bar_label (_("Bar")),
|
||||||
|
|
|
||||||
|
|
@ -39,10 +39,10 @@ struct TempoDialog : public ArdourDialog
|
||||||
{
|
{
|
||||||
Gtk::ComboBoxText note_types;
|
Gtk::ComboBoxText note_types;
|
||||||
vector<string> strings;
|
vector<string> strings;
|
||||||
Gtk::Frame note_frame;
|
|
||||||
Gtk::Adjustment bpm_adjustment;
|
Gtk::Adjustment bpm_adjustment;
|
||||||
Gtk::SpinButton bpm_spinner;
|
Gtk::SpinButton bpm_spinner;
|
||||||
Gtk::Frame bpm_frame;
|
Gtk::Frame bpm_frame;
|
||||||
|
Gtk::Frame note_frame;
|
||||||
Gtk::VBox vpacker;
|
Gtk::VBox vpacker;
|
||||||
Gtk::Button ok_button;
|
Gtk::Button ok_button;
|
||||||
Gtk::Button cancel_button;
|
Gtk::Button cancel_button;
|
||||||
|
|
|
||||||
|
|
@ -199,7 +199,7 @@ load_rc_file (const string& filename, bool themechange)
|
||||||
return;
|
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);
|
Gtkmm2ext::UI::instance()->load_rcfile (rc_file_path.to_string(), themechange);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -152,6 +152,7 @@ CONFIG_VARIABLE (bool, sync_all_route_ordering, "sync-all-route-ordering", true)
|
||||||
CONFIG_VARIABLE (bool, only_copy_imported_files, "only-copy-imported-files", true)
|
CONFIG_VARIABLE (bool, only_copy_imported_files, "only-copy-imported-files", true)
|
||||||
CONFIG_VARIABLE (std::string, keyboard_layout, "keyboard-layout", "ansi")
|
CONFIG_VARIABLE (std::string, keyboard_layout, "keyboard-layout", "ansi")
|
||||||
CONFIG_VARIABLE (std::string, default_bindings, "default-bindings", "ardour")
|
CONFIG_VARIABLE (std::string, default_bindings, "default-bindings", "ardour")
|
||||||
|
CONFIG_VARIABLE (bool, default_narrow_ms, "default-narrow_ms", false)
|
||||||
|
|
||||||
/* denormal management */
|
/* denormal management */
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -54,6 +54,7 @@ class OSC : public BasicUI, public sigc::trackable
|
||||||
lo_server _osc_server;
|
lo_server _osc_server;
|
||||||
lo_server _osc_unix_server;
|
lo_server _osc_unix_server;
|
||||||
std::string _osc_unix_socket_path;
|
std::string _osc_unix_socket_path;
|
||||||
|
std::string _osc_url_file;
|
||||||
pthread_t _osc_thread;
|
pthread_t _osc_thread;
|
||||||
int _request_pipe[2];
|
int _request_pipe[2];
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1427,7 +1427,7 @@ class Session : public PBD::StatefulDestructible
|
||||||
|
|
||||||
SerializedRCUManager<RouteList> routes;
|
SerializedRCUManager<RouteList> routes;
|
||||||
|
|
||||||
void add_routes (RouteList&, bool save = true);
|
void add_routes (RouteList&, bool save);
|
||||||
uint32_t destructive_index;
|
uint32_t destructive_index;
|
||||||
|
|
||||||
int load_routes (const XMLNode&);
|
int load_routes (const XMLNode&);
|
||||||
|
|
|
||||||
|
|
@ -382,8 +382,11 @@ namespace ARDOUR {
|
||||||
struct TimeFXRequest : public InterThreadInfo {
|
struct TimeFXRequest : public InterThreadInfo {
|
||||||
float time_fraction;
|
float time_fraction;
|
||||||
float pitch_fraction;
|
float pitch_fraction;
|
||||||
|
/* SoundTouch */
|
||||||
bool quick_seek;
|
bool quick_seek;
|
||||||
bool antialias;
|
bool antialias;
|
||||||
|
/* RubberBand */
|
||||||
|
int opts; // really RubberBandStretcher::Options
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace ARDOUR
|
} // namespace ARDOUR
|
||||||
|
|
|
||||||
|
|
@ -264,7 +264,7 @@ AudioDiskstream::use_new_playlist ()
|
||||||
{
|
{
|
||||||
string newname;
|
string newname;
|
||||||
boost::shared_ptr<AudioPlaylist> playlist;
|
boost::shared_ptr<AudioPlaylist> playlist;
|
||||||
|
|
||||||
if (!in_set_state && destructive()) {
|
if (!in_set_state && destructive()) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
@ -1998,8 +1998,6 @@ AudioDiskstream::set_state (const XMLNode& node)
|
||||||
up of the IO that owns this DS (::non_realtime_input_change())
|
up of the IO that owns this DS (::non_realtime_input_change())
|
||||||
*/
|
*/
|
||||||
|
|
||||||
in_set_state = false;
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -548,7 +548,7 @@ AudioRegion::set_live_state (const XMLNode& node, Change& what_changed, bool sen
|
||||||
Region::set_live_state (node, what_changed, false);
|
Region::set_live_state (node, what_changed, false);
|
||||||
|
|
||||||
uint32_t old_flags = _flags;
|
uint32_t old_flags = _flags;
|
||||||
|
|
||||||
if ((prop = node.property ("flags")) != 0) {
|
if ((prop = node.property ("flags")) != 0) {
|
||||||
_flags = Flag (string_2_enum (prop->value(), _flags));
|
_flags = Flag (string_2_enum (prop->value(), _flags));
|
||||||
|
|
||||||
|
|
@ -599,17 +599,44 @@ AudioRegion::set_live_state (const XMLNode& node, Change& what_changed, bool sen
|
||||||
|
|
||||||
_fade_in->clear ();
|
_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 ();
|
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") {
|
} else if (child->name() == "FadeOut") {
|
||||||
|
|
||||||
_fade_out->clear ();
|
_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 ();
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
#include <fstream>
|
||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
#include <cerrno>
|
#include <cerrno>
|
||||||
|
|
@ -28,11 +29,13 @@
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
|
|
||||||
#include <pbd/pthread_utils.h>
|
#include <pbd/pthread_utils.h>
|
||||||
|
#include <pbd/file_utils.h>
|
||||||
|
|
||||||
#include <ardour/osc.h>
|
#include <ardour/osc.h>
|
||||||
#include <ardour/session.h>
|
#include <ardour/session.h>
|
||||||
#include <ardour/route.h>
|
#include <ardour/route.h>
|
||||||
#include <ardour/audio_track.h>
|
#include <ardour/audio_track.h>
|
||||||
|
#include <ardour/filesystem_paths.h>
|
||||||
|
|
||||||
#include "i18n.h"
|
#include "i18n.h"
|
||||||
|
|
||||||
|
|
@ -101,6 +104,24 @@ OSC::start ()
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
cerr << "OSC @ " << get_server_url () << endl;
|
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();
|
register_callbacks();
|
||||||
|
|
||||||
|
|
@ -131,6 +152,9 @@ OSC::stop ()
|
||||||
unlink(_osc_unix_socket_path.c_str());
|
unlink(_osc_unix_socket_path.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (! _osc_url_file.empty() ) {
|
||||||
|
unlink(_osc_url_file.c_str() );
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -324,7 +324,7 @@ PluginManager::get_ladspa_category (uint32_t plugin_id)
|
||||||
lrdf_statement* matches1 = lrdf_matches (&pattern);
|
lrdf_statement* matches1 = lrdf_matches (&pattern);
|
||||||
|
|
||||||
if (!matches1) {
|
if (!matches1) {
|
||||||
return _("");
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
pattern.subject = matches1->object;
|
pattern.subject = matches1->object;
|
||||||
|
|
@ -336,7 +336,7 @@ PluginManager::get_ladspa_category (uint32_t plugin_id)
|
||||||
lrdf_free_statements(matches1);
|
lrdf_free_statements(matches1);
|
||||||
|
|
||||||
if (!matches2) {
|
if (!matches2) {
|
||||||
return _("");
|
return ("");
|
||||||
}
|
}
|
||||||
|
|
||||||
string label = matches2->object;
|
string label = matches2->object;
|
||||||
|
|
|
||||||
|
|
@ -75,7 +75,7 @@ RBEffect::run (boost::shared_ptr<AudioRegion> region)
|
||||||
int avail = 0;
|
int avail = 0;
|
||||||
|
|
||||||
RubberBandStretcher stretcher (session.frame_rate(), region->n_channels(),
|
RubberBandStretcher stretcher (session.frame_rate(), region->n_channels(),
|
||||||
RubberBandStretcher::DefaultOptions,
|
(RubberBandStretcher::Options) tsr.opts,
|
||||||
tsr.time_fraction, tsr.pitch_fraction);
|
tsr.time_fraction, tsr.pitch_fraction);
|
||||||
|
|
||||||
stretcher.setExpectedInputDuration(region->length());
|
stretcher.setExpectedInputDuration(region->length());
|
||||||
|
|
@ -155,7 +155,7 @@ RBEffect::run (boost::shared_ptr<AudioRegion> region)
|
||||||
pos += this_read;
|
pos += this_read;
|
||||||
done += 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);
|
stretcher.study(buffers, this_read, pos == duration);
|
||||||
}
|
}
|
||||||
|
|
@ -193,7 +193,7 @@ RBEffect::run (boost::shared_ptr<AudioRegion> region)
|
||||||
pos += this_read;
|
pos += this_read;
|
||||||
done += 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);
|
stretcher.process(buffers, this_read, pos == duration);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -151,7 +151,6 @@ Session::Session (AudioEngine &eng,
|
||||||
new_session = !g_file_test (_path.c_str(), GFileTest (G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR));
|
new_session = !g_file_test (_path.c_str(), GFileTest (G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR));
|
||||||
if (new_session) {
|
if (new_session) {
|
||||||
if (create (new_session, mix_template, compute_initial_length())) {
|
if (create (new_session, mix_template, compute_initial_length())) {
|
||||||
cerr << "create failed\n";
|
|
||||||
destroy ();
|
destroy ();
|
||||||
throw failed_constructor ();
|
throw failed_constructor ();
|
||||||
}
|
}
|
||||||
|
|
@ -257,7 +256,7 @@ Session::Session (AudioEngine &eng,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!rl.empty()) {
|
if (!rl.empty()) {
|
||||||
add_routes (rl);
|
add_routes (rl, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -270,17 +269,12 @@ Session::Session (AudioEngine &eng,
|
||||||
throw failed_constructor ();
|
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);
|
_state_of_the_state = StateOfTheState (_state_of_the_state & ~Dirty);
|
||||||
|
|
||||||
Config->ParameterChanged.connect (mem_fun (*this, &Session::config_changed));
|
|
||||||
|
|
||||||
if (was_dirty) {
|
Config->ParameterChanged.connect (mem_fun (*this, &Session::config_changed));
|
||||||
DirtyChanged (); /* EMIT SIGNAL */
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Session::~Session ()
|
Session::~Session ()
|
||||||
|
|
@ -298,6 +292,7 @@ Session::destroy ()
|
||||||
remove_pending_capture_state ();
|
remove_pending_capture_state ();
|
||||||
|
|
||||||
_state_of_the_state = StateOfTheState (CannotSave|Deletion);
|
_state_of_the_state = StateOfTheState (CannotSave|Deletion);
|
||||||
|
|
||||||
_engine.remove_session ();
|
_engine.remove_session ();
|
||||||
|
|
||||||
GoingAway (); /* EMIT SIGNAL */
|
GoingAway (); /* EMIT SIGNAL */
|
||||||
|
|
@ -706,6 +701,7 @@ Session::when_engine_running ()
|
||||||
|
|
||||||
_state_of_the_state = StateOfTheState (_state_of_the_state & ~(CannotSave|Dirty));
|
_state_of_the_state = StateOfTheState (_state_of_the_state & ~(CannotSave|Dirty));
|
||||||
|
|
||||||
|
|
||||||
/* hook us up to the engine */
|
/* hook us up to the engine */
|
||||||
|
|
||||||
_engine.set_session (this);
|
_engine.set_session (this);
|
||||||
|
|
@ -716,9 +712,6 @@ Session::when_engine_running ()
|
||||||
osc->set_session (*this);
|
osc->set_session (*this);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
_state_of_the_state = Clean;
|
|
||||||
|
|
||||||
DirtyChanged (); /* EMIT SIGNAL */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
@ -730,6 +723,7 @@ Session::hookup_io ()
|
||||||
|
|
||||||
_state_of_the_state = StateOfTheState (_state_of_the_state | InitialConnecting);
|
_state_of_the_state = StateOfTheState (_state_of_the_state | InitialConnecting);
|
||||||
|
|
||||||
|
|
||||||
if (auditioner == 0) {
|
if (auditioner == 0) {
|
||||||
|
|
||||||
/* we delay creating the auditioner till now because
|
/* we delay creating the auditioner till now because
|
||||||
|
|
@ -805,6 +799,7 @@ Session::hookup_io ()
|
||||||
|
|
||||||
_state_of_the_state = StateOfTheState (_state_of_the_state & ~InitialConnecting);
|
_state_of_the_state = StateOfTheState (_state_of_the_state & ~InitialConnecting);
|
||||||
|
|
||||||
|
|
||||||
/* now handle the whole enchilada as if it was one
|
/* now handle the whole enchilada as if it was one
|
||||||
graph reorder event.
|
graph reorder event.
|
||||||
*/
|
*/
|
||||||
|
|
@ -1803,8 +1798,7 @@ Session::new_audio_track (int input_channels, int output_channels, TrackMode mod
|
||||||
|
|
||||||
failed:
|
failed:
|
||||||
if (!new_routes.empty()) {
|
if (!new_routes.empty()) {
|
||||||
add_routes (new_routes, false);
|
add_routes (new_routes, true);
|
||||||
save_state (_current_snapshot_name);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|
@ -1938,8 +1932,7 @@ Session::new_audio_route (int input_channels, int output_channels, uint32_t how_
|
||||||
|
|
||||||
failure:
|
failure:
|
||||||
if (!ret.empty()) {
|
if (!ret.empty()) {
|
||||||
add_routes (ret, false);
|
add_routes (ret, true);
|
||||||
save_state (_current_snapshot_name);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|
|
||||||
|
|
@ -257,8 +257,7 @@ Session::butler_thread_work ()
|
||||||
|
|
||||||
/*IO* io = ds->io();
|
/*IO* io = ds->io();
|
||||||
|
|
||||||
if (ds->io() && !ds->io()->active()) {
|
if (io && !io->active()) {
|
||||||
cerr << "Skip inactive diskstream " << ds->io()->name() << endl;
|
|
||||||
continue;
|
continue;
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -268,10 +268,10 @@ Session::process_with_events (nframes_t nframes)
|
||||||
nframes_t this_nframes;
|
nframes_t this_nframes;
|
||||||
nframes_t end_frame;
|
nframes_t end_frame;
|
||||||
nframes_t offset;
|
nframes_t offset;
|
||||||
|
bool session_needs_butler = false;
|
||||||
nframes_t stop_limit;
|
nframes_t stop_limit;
|
||||||
long frames_moved;
|
long frames_moved;
|
||||||
bool session_needs_butler = false;
|
|
||||||
|
|
||||||
/* make sure the auditioner is silent */
|
/* make sure the auditioner is silent */
|
||||||
|
|
||||||
if (auditioner) {
|
if (auditioner) {
|
||||||
|
|
|
||||||
|
|
@ -47,12 +47,12 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <glibmm.h>
|
#include <glibmm.h>
|
||||||
|
#include <glibmm/thread.h>
|
||||||
|
|
||||||
#include <midi++/mmc.h>
|
#include <midi++/mmc.h>
|
||||||
#include <midi++/port.h>
|
#include <midi++/port.h>
|
||||||
#include <pbd/error.h>
|
|
||||||
|
|
||||||
#include <glibmm/thread.h>
|
#include <pbd/error.h>
|
||||||
#include <pbd/pathscanner.h>
|
#include <pbd/pathscanner.h>
|
||||||
#include <pbd/pthread_utils.h>
|
#include <pbd/pthread_utils.h>
|
||||||
#include <pbd/search_path.h>
|
#include <pbd/search_path.h>
|
||||||
|
|
@ -178,7 +178,8 @@ Session::first_stage_init (string fullpath, string snapshot_name)
|
||||||
_worst_output_latency = 0;
|
_worst_output_latency = 0;
|
||||||
_worst_input_latency = 0;
|
_worst_input_latency = 0;
|
||||||
_worst_track_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;
|
_slave = 0;
|
||||||
butler_mixdown_buffer = 0;
|
butler_mixdown_buffer = 0;
|
||||||
butler_gain_buffer = 0;
|
butler_gain_buffer = 0;
|
||||||
|
|
@ -301,6 +302,7 @@ Session::second_stage_init (bool new_session)
|
||||||
|
|
||||||
// set_state() will call setup_raid_path(), but if it's a new session we need
|
// set_state() will call setup_raid_path(), but if it's a new session we need
|
||||||
// to call setup_raid_path() here.
|
// to call setup_raid_path() here.
|
||||||
|
|
||||||
if (state_tree) {
|
if (state_tree) {
|
||||||
if (set_state (*state_tree->root())) {
|
if (set_state (*state_tree->root())) {
|
||||||
return -1;
|
return -1;
|
||||||
|
|
@ -321,7 +323,7 @@ Session::second_stage_init (bool new_session)
|
||||||
|
|
||||||
_state_of_the_state = StateOfTheState (_state_of_the_state|CannotSave|Loading);
|
_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.changed.connect (mem_fun (this, &Session::locations_changed));
|
||||||
_locations.added.connect (mem_fun (this, &Session::locations_added));
|
_locations.added.connect (mem_fun (this, &Session::locations_added));
|
||||||
setup_click_sounds (0);
|
setup_click_sounds (0);
|
||||||
|
|
@ -360,6 +362,17 @@ Session::second_stage_init (bool new_session)
|
||||||
} else {
|
} else {
|
||||||
_end_location_is_free = false;
|
_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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
@ -1119,6 +1132,7 @@ Session::set_state (const XMLNode& node)
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
|
|
||||||
_state_of_the_state = StateOfTheState (_state_of_the_state|CannotSave);
|
_state_of_the_state = StateOfTheState (_state_of_the_state|CannotSave);
|
||||||
|
|
||||||
|
|
||||||
if (node.name() != X_("Session")){
|
if (node.name() != X_("Session")){
|
||||||
fatal << _("programming error: Session: incorrect XML node sent to set_state()") << endmsg;
|
fatal << _("programming error: Session: incorrect XML node sent to set_state()") << endmsg;
|
||||||
|
|
@ -1307,14 +1321,6 @@ Session::set_state (const XMLNode& node)
|
||||||
|
|
||||||
StateReady (); /* EMIT SIGNAL */
|
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;
|
return 0;
|
||||||
|
|
||||||
out:
|
out:
|
||||||
|
|
@ -1344,7 +1350,7 @@ Session::load_routes (const XMLNode& node)
|
||||||
new_routes.push_back (route);
|
new_routes.push_back (route);
|
||||||
}
|
}
|
||||||
|
|
||||||
add_routes (new_routes);
|
add_routes (new_routes, false);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
@ -2120,6 +2126,10 @@ Session::commit_reversible_command (Command *cmd)
|
||||||
current_trans->add_command (cmd);
|
current_trans->add_command (cmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (current_trans->empty()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
gettimeofday (&now, 0);
|
gettimeofday (&now, 0);
|
||||||
current_trans->set_timestamp (now);
|
current_trans->set_timestamp (now);
|
||||||
|
|
||||||
|
|
@ -2363,6 +2373,7 @@ Session::cleanup_sources (Session::cleanup_report& rep)
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
|
|
||||||
_state_of_the_state = (StateOfTheState) (_state_of_the_state | InCleanup);
|
_state_of_the_state = (StateOfTheState) (_state_of_the_state | InCleanup);
|
||||||
|
|
||||||
|
|
||||||
/* step 1: consider deleting all unused playlists */
|
/* step 1: consider deleting all unused playlists */
|
||||||
|
|
||||||
|
|
@ -2602,6 +2613,7 @@ Session::cleanup_sources (Session::cleanup_report& rep)
|
||||||
|
|
||||||
out:
|
out:
|
||||||
_state_of_the_state = (StateOfTheState) (_state_of_the_state & ~InCleanup);
|
_state_of_the_state = (StateOfTheState) (_state_of_the_state & ~InCleanup);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2675,6 +2687,7 @@ Session::set_dirty ()
|
||||||
|
|
||||||
_state_of_the_state = StateOfTheState (_state_of_the_state | Dirty);
|
_state_of_the_state = StateOfTheState (_state_of_the_state | Dirty);
|
||||||
|
|
||||||
|
|
||||||
if (!was_dirty) {
|
if (!was_dirty) {
|
||||||
DirtyChanged(); /* EMIT SIGNAL */
|
DirtyChanged(); /* EMIT SIGNAL */
|
||||||
}
|
}
|
||||||
|
|
@ -2688,6 +2701,7 @@ Session::set_clean ()
|
||||||
|
|
||||||
_state_of_the_state = Clean;
|
_state_of_the_state = Clean;
|
||||||
|
|
||||||
|
|
||||||
if (was_dirty) {
|
if (was_dirty) {
|
||||||
DirtyChanged(); /* EMIT SIGNAL */
|
DirtyChanged(); /* EMIT SIGNAL */
|
||||||
}
|
}
|
||||||
|
|
@ -2697,6 +2711,7 @@ void
|
||||||
Session::set_deletion_in_progress ()
|
Session::set_deletion_in_progress ()
|
||||||
{
|
{
|
||||||
_state_of_the_state = StateOfTheState (_state_of_the_state | Deletion);
|
_state_of_the_state = StateOfTheState (_state_of_the_state | Deletion);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
||||||
|
|
@ -55,7 +55,7 @@ Session::request_input_change_handling ()
|
||||||
if (!(_state_of_the_state & (InitialConnecting|Deletion))) {
|
if (!(_state_of_the_state & (InitialConnecting|Deletion))) {
|
||||||
Event* ev = new Event (Event::InputConfigurationChange, Event::Add, Event::Immediate, 0, 0.0);
|
Event* ev = new Event (Event::InputConfigurationChange, Event::Add, Event::Immediate, 0, 0.0);
|
||||||
queue_event (ev);
|
queue_event (ev);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue