Merge with 2.0-ongoing R3082.
Superficial generification of export stuff. git-svn-id: svn://localhost/ardour2/branches/3.0@3088 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
4cbd7f0eab
commit
a2a6cc0404
|
@ -7,7 +7,7 @@
|
|||
|
||||
(gtk_accel_path "<Actions>/Transport/ToggleRoll" "space")
|
||||
(gtk_accel_path "<Actions>/Transport/ToggleRollForgetCapture" "<%PRIMARY%>space")
|
||||
(gtk_accel_path "<Actions>/Transport/record-roll" "<%TERTIARY%>space")
|
||||
(gtk_accel_path "<Actions>/Transport/record-roll" "<%PRIMARY%>space")
|
||||
|
||||
(gtk_accel_path "<Actions>/Editor/align-regions-end" "<%PRIMARY%><%SECONDARY%>less")
|
||||
(gtk_accel_path "<Actions>/Editor/align-regions-end-relative" "<%PRIMARY%>less")
|
||||
|
@ -43,17 +43,18 @@
|
|||
|
||||
;; note that ctrl-w is special and consumed by the keyboard snooper
|
||||
|
||||
(gtk_accel_path "<Actions>/Editor/audition-at-mouse" "w")
|
||||
(gtk_accel_path "<Actions>/Editor/play-from-edit-point-and-return" "<%LEVEL4%>space")
|
||||
(gtk_accel_path "<Actions>/Editor/play-edit-range" "<%SECONDARY%>space")
|
||||
(gtk_accel_path "<Actions>/Editor/play-selected-regions" "s")
|
||||
(gtk_accel_path "<Actions>/Main/Close" "<%PRIMARY%>w")
|
||||
(gtk_accel_path "<Actions>/Editor/set-fade-out-length" "e")
|
||||
(gtk_accel_path "<Actions>/Main/ExportSession" "<%PRIMARY%>e")
|
||||
(gtk_accel_path "<Actions>/Editor/select-all-before-edit-cursor" "<%PRIMARY%>e")
|
||||
(gtk_accel_path "<Actions>/Editor/toggle-fade-out-active" "<%SECONDARY%>e")
|
||||
(gtk_accel_path "<Actions>/Editor/show-editor-mixer" "<%TERTIARY%>e")
|
||||
(gtk_accel_path "<Actions>/Common/goto-editor" "<%WINDOW%>e")
|
||||
; (gtk_accel_path "<Actions>/Common/goto-editor" "<%SECONDARY%>e")
|
||||
(gtk_accel_path "<Actions>/Editor/select-all-after-edit-cursor" "<%TERTIARY%><%PRIMARY%>e")
|
||||
(gtk_accel_path "<Actions>/MouseMode/set-mouse-mode-range" "r")
|
||||
(gtk_accel_path "<Actions>/Editor/redo" "<%PRIMARY%>r")
|
||||
(gtk_accel_path "<Actions>/Editor/redo" "<%PRIMARY%><%TERTIARY%>z")
|
||||
(gtk_accel_path "<Actions>/Transport/Record" "<%TERTIARY%>r")
|
||||
(gtk_accel_path "<Actions>/Editor/temporal-zoom-out" "r")
|
||||
(gtk_accel_path "<Actions>/Editor/temporal-zoom-in" "t")
|
||||
|
@ -62,28 +63,28 @@
|
|||
(gtk_accel_path "<Actions>/Editor/insert-region" "i")
|
||||
(gtk_accel_path "<Actions>/Editor/addExistingAudioFiles" "<%PRIMARY%>i")
|
||||
(gtk_accel_path "<Actions>/Editor/invert-selection" "<%TERTIARY%>i")
|
||||
(gtk_accel_path "<Actions>/Common/ToggleOptionsEditor" "<%WINDOW%>o")
|
||||
(gtk_accel_path "<Actions>/Common/ToggleOptionsEditor" "<%SECONDARY%>o")
|
||||
(gtk_accel_path "<Actions>/Main/Open" "<%PRIMARY%>o")
|
||||
(gtk_accel_path "<Actions>/Main/Recent" "<%PRIMARY%><%TERTIARY%>o")
|
||||
(gtk_accel_path "<Actions>/Editor/set-playhead" "p")
|
||||
(gtk_accel_path "<Actions>/Editor/set-playhead" "w")
|
||||
(gtk_accel_path "<Actions>/Editor/select-all-in-punch-range" "<%TERTIARY%>p")
|
||||
|
||||
;; MITTELZEILE
|
||||
|
||||
(gtk_accel_path "<Actions>/Editor/trim-front" "a")
|
||||
(gtk_accel_path "<Actions>/Editor/select-all" "<%PRIMARY%>a")
|
||||
(gtk_accel_path "<Actions>/Editor/trim-back" "s")
|
||||
(gtk_accel_path "<Actions>/Editor/trim-back" "d")
|
||||
(gtk_accel_path "<Actions>/Common/Save" "<%PRIMARY%>s")
|
||||
(gtk_accel_path "<Actions>/Main/Snapshot" "<%PRIMARY%><%TERTIARY%>s")
|
||||
(gtk_accel_path "<Actions>/Editor/duplicate-region" "d")
|
||||
(gtk_accel_path "<Actions>/Editor/multi-duplicate-region" "<%SECONDARY%>d")
|
||||
(gtk_accel_path "<Actions>/Editor/duplicate-region" "<%PRIMARY%>d")
|
||||
(gtk_accel_path "<Actions>/Editor/multi-duplicate-region" "<%PRIMARY%><%TERTIARY%>d")
|
||||
(gtk_accel_path "<Actions>/Editor/toggle-follow-playhead" "f")
|
||||
(gtk_accel_path "<Actions>/Editor/set-edit-point" "g")
|
||||
(gtk_accel_path "<Actions>/MouseMode/set-mouse-mode-gain" "g")
|
||||
; (gtk_accel_path "<Actions>/Editor/set-edit-point" "g")
|
||||
; (gtk_accel_path "<Actions>/MouseMode/set-mouse-mode-gain" "g")
|
||||
(gtk_accel_path "<Actions>/Editor/nudge-backward" "g")
|
||||
(gtk_accel_path "<Actions>/Editor/nudge-forward" "h")
|
||||
(gtk_accel_path "<Actions>/Common/ToggleKeyEditor" "<%WINDOW%>k")
|
||||
(gtk_accel_path "<Actions>/Common/ToggleLocations" "<%WINDOW%>l")
|
||||
(gtk_accel_path "<Actions>/Common/ToggleKeyEditor" "<%SECONDARY%>k")
|
||||
(gtk_accel_path "<Actions>/Common/ToggleLocations" "<%SECONDARY%>l")
|
||||
(gtk_accel_path "<Actions>/Transport/Loop" "l")
|
||||
(gtk_accel_path "<Actions>/Editor/select-all-in-loop-range" "<%TERTIARY%>l")
|
||||
|
||||
|
@ -97,14 +98,14 @@
|
|||
(gtk_accel_path "<Actions>/Editor/editor-cut" "<%PRIMARY%>x")
|
||||
(gtk_accel_path "<Actions>/Editor/crop" "c")
|
||||
(gtk_accel_path "<Actions>/Editor/editor-copy" "<%PRIMARY%>c")
|
||||
(gtk_accel_path "<Actions>/Common/ToggleColorManager" "<%WINDOW%>c")
|
||||
(gtk_accel_path "<Actions>/Common/ToggleColorManager" "<%SECONDARY%>c")
|
||||
(gtk_accel_path "<Actions>/Editor/editor-paste" "<%PRIMARY%>v")
|
||||
(gtk_accel_path "<Actions>/Common/ToggleBigClock" "<%WINDOW%>b")
|
||||
(gtk_accel_path "<Actions>/Common/ToggleBigClock" "<%SECONDARY%>b")
|
||||
(gtk_accel_path "<Actions>/Editor/normalize-region" "n")
|
||||
(gtk_accel_path "<Actions>/Main/New" "<%PRIMARY%>n")
|
||||
(gtk_accel_path "<Actions>/Main/AddTrackBus" "<%PRIMARY%><%TERTIARY%>n")
|
||||
(gtk_accel_path "<Actions>/Common/goto-mixer" "<%WINDOW%>m")
|
||||
(gtk_accel_path "<Actions>/Editor/add-location-from-playhead" "m")
|
||||
(gtk_accel_path "<Actions>/Common/goto-mixer" "<%SECONDARY%>m")
|
||||
(gtk_accel_path "<Actions>/Editor/add-location-from-playhead" "KP_Enter")
|
||||
(gtk_accel_path "<Actions>/Editor/mute-unmute-region" "<%SECONDARY%>m")
|
||||
|
||||
;; arrow keys, navigation etc.
|
||||
|
|
|
@ -80,7 +80,8 @@ ActionManager::init ()
|
|||
ui_manager->add_ui_from_file (ui_file.to_string());
|
||||
loaded = true;
|
||||
} catch (Glib::MarkupError& err) {
|
||||
error << _("badly formatted UI definition file") << endmsg;
|
||||
error << string_compose (_("badly formatted UI definition file: %1"), err.what()) << endmsg;
|
||||
cerr << string_compose (_("badly formatted UI definition file: %1"), err.what()) << endl;
|
||||
} catch (...) {
|
||||
error << _("Ardour menu definition file not found") << endmsg;
|
||||
}
|
||||
|
|
|
@ -1,12 +1,11 @@
|
|||
<ui>
|
||||
|
||||
<menubar name='Main' action='MainMenu'>
|
||||
|
||||
<menu name='Session' action='Session'>
|
||||
<menuitem action='New'/>
|
||||
<menuitem action='Open'/>
|
||||
<menuitem action='Recent'/>
|
||||
<menuitem action='Close'/>
|
||||
<menuitem action='Quit'/>
|
||||
<separator/>
|
||||
<menuitem action='Save'/>
|
||||
<menuitem action='Snapshot'/>
|
||||
|
@ -18,6 +17,7 @@
|
|||
<menuitem action='addExistingAudioFiles'/>
|
||||
<separator/>
|
||||
<menuitem action='ExportSession'/>
|
||||
<menuitem action='export-region'/>
|
||||
</menu>
|
||||
|
||||
<separator/>
|
||||
|
@ -28,43 +28,78 @@
|
|||
<menuitem action='ToggleOptionsEditor'/>
|
||||
<menuitem action='About'/>
|
||||
</menu>
|
||||
|
||||
<menu name='Transport' action='Transport'>
|
||||
<menuitem action='ToggleRoll'/>
|
||||
<menuitem action='play-from-edit-point-and-return'/>
|
||||
<menuitem action='play-edit-range'/>
|
||||
<menu action="PlayMenu">
|
||||
<menuitem action='play-selected-regions'/>
|
||||
<menuitem action='play-edit-range'/>
|
||||
<menuitem action='play-from-edit-point-and-return'/>
|
||||
<menuitem action='Loop'/>
|
||||
</menu>
|
||||
<menuitem action='record-roll'/>
|
||||
<menuitem action='Record'/>
|
||||
<menuitem action='ToggleRollForgetCapture'/>
|
||||
<menuitem action='Loop'/>
|
||||
<menuitem action='loop-region'/>
|
||||
<menuitem action='set-playhead'/>
|
||||
<menuitem action='remove-last-capture'/>
|
||||
<menu action="SetLoopMenu">
|
||||
<menuitem action='set-loop-from-edit-range'/>
|
||||
<menuitem action='set-loop-from-region'/>
|
||||
</menu>
|
||||
<menu action="SetPunchMenu">
|
||||
<menuitem action='set-punch-from-edit-range'/>
|
||||
<menuitem action='set-punch-from-region'/>
|
||||
</menu>
|
||||
|
||||
<menuitem action='Forward'/>
|
||||
<menuitem action='Rewind'/>
|
||||
<menuitem action='GotoZero'/>
|
||||
<menuitem action='GotoStart'/>
|
||||
<menuitem action='GotoEnd'/>
|
||||
<separator/>
|
||||
<menuitem action='tab-to-transient-forwards'/>
|
||||
<menuitem action='tab-to-transient-backwards'/>
|
||||
<menuitem action='nudge-playhead-forward'/>
|
||||
<menuitem action='nudge-playhead-backward'/>
|
||||
<separator/>
|
||||
<menuitem action='Record'/>
|
||||
<separator/>
|
||||
<menuitem action='TransitionToRoll'/>
|
||||
<menuitem action='TransitionToReverse'/>
|
||||
<separator/>
|
||||
<menuitem action='jump-forward-to-mark'/>
|
||||
<menuitem action='jump-backward-to-mark'/>
|
||||
<menuitem action='add-location-from-playhead'/>
|
||||
<separator/>
|
||||
<menuitem action='playhead-to-next-region-boundary'/>
|
||||
<menuitem action='playhead-to-previous-region-boundary'/>
|
||||
<menuitem action='playhead-to-next-region-sync'/>
|
||||
<menuitem action='playhead-to-previous-region-sync'/>
|
||||
<menuitem action='center-playhead'/>
|
||||
<separator/>
|
||||
<menuitem action='center-playhead'/>
|
||||
<menuitem action='set-playhead'/>
|
||||
<menuitem action='playhead-to-edit'/>
|
||||
<menuitem action='focus-on-clock'/>
|
||||
<menuitem action='nudge-playhead-forward'/>
|
||||
<menuitem action='nudge-playhead-backward'/>
|
||||
|
||||
<menu action="MovePlayHeadMenu">
|
||||
<menuitem action='tab-to-transient-forwards'/>
|
||||
<menuitem action='tab-to-transient-backwards'/>
|
||||
<separator/>
|
||||
<menuitem action='playhead-forward-to-grid'/>
|
||||
<menuitem action='playhead-backward-to-grid'/>
|
||||
<separator/>
|
||||
<menuitem action='playhead-to-next-region-boundary'/>
|
||||
<menuitem action='playhead-to-previous-region-boundary'/>
|
||||
<menuitem action='playhead-to-next-region-sync'/>
|
||||
<menuitem action='playhead-to-previous-region-sync'/>
|
||||
<separator/>
|
||||
<menuitem action='jump-forward-to-mark'/>
|
||||
<menuitem action='jump-backward-to-mark'/>
|
||||
</menu>
|
||||
|
||||
<menu action="MoveActiveMarkMenu">
|
||||
<menuitem action='selected-marker-to-next-region-boundary'/>
|
||||
<menuitem action='selected-marker-to-previous-region-boundary'/>
|
||||
<menuitem action='edit-cursor-to-next-region-sync'/>
|
||||
<menuitem action='edit-cursor-to-previous-region-sync'/>
|
||||
<separator/>
|
||||
<menuitem action='edit-to-playhead'/>
|
||||
<menuitem action='set-edit-point'/>
|
||||
</menu>
|
||||
|
||||
<menu action="MarkerMenu">
|
||||
<menuitem action='add-location-from-playhead'/>
|
||||
<separator/>
|
||||
<menuitem action='goto-mark-1'/>
|
||||
<menuitem action='goto-mark-2'/>
|
||||
<menuitem action='goto-mark-3'/>
|
||||
<menuitem action='goto-mark-4'/>
|
||||
<menuitem action='goto-mark-5'/>
|
||||
<menuitem action='goto-mark-6'/>
|
||||
<menuitem action='goto-mark-7'/>
|
||||
<menuitem action='goto-mark-8'/>
|
||||
<menuitem action='goto-mark-9'/>
|
||||
</menu>
|
||||
|
||||
<separator/>
|
||||
<menuitem action='TogglePunchIn'/>
|
||||
<menuitem action='TogglePunchOut'/>
|
||||
|
@ -74,182 +109,191 @@
|
|||
<menuitem action='ToggleClick'/>
|
||||
<menuitem action='toggle-follow-playhead'/>
|
||||
<separator/>
|
||||
<menuitem action='set-loop-from-edit-range'/>
|
||||
<menuitem action='set-loop-from-region'/>
|
||||
<menuitem action='set-punch-from-edit-range'/>
|
||||
<menuitem action='set-punch-from-region'/>
|
||||
<menu action='LocateToMarker'>
|
||||
<menuitem action='goto-mark-1'/>
|
||||
<menuitem action='goto-mark-2'/>
|
||||
<menuitem action='goto-mark-3'/>
|
||||
<menuitem action='goto-mark-4'/>
|
||||
<menuitem action='goto-mark-5'/>
|
||||
<menuitem action='goto-mark-6'/>
|
||||
<menuitem action='goto-mark-7'/>
|
||||
<menuitem action='goto-mark-8'/>
|
||||
<menuitem action='goto-mark-9'/>
|
||||
</menu>
|
||||
</menu>
|
||||
<menu name='Edit' action='Edit'>
|
||||
|
||||
<menu action='Edit'>
|
||||
<menuitem action='undo'/>
|
||||
<menuitem action='redo'/>
|
||||
<menuitem action='editor-cut'/>
|
||||
<menuitem action='editor-delete'/>
|
||||
<menuitem action='editor-copy'/>
|
||||
<menuitem action='editor-paste'/>
|
||||
<menuitem action='set-edit-point'/>
|
||||
<menuitem action='editor-separate'/>
|
||||
<separator/>
|
||||
<menuitem action='remove-last-capture'/>
|
||||
<menuitem action='editor-delete'/>
|
||||
<menuitem action='split-region'/>
|
||||
<menu action="SeparateMenu">
|
||||
<menuitem action='editor-separate'/>
|
||||
<menuitem action='separate-from-loop'/>
|
||||
<menuitem action='separate-from-punch'/>
|
||||
</menu>
|
||||
<separator/>
|
||||
<menuitem action='select-all'/>
|
||||
<menuitem action='deselect-all'/>
|
||||
<menuitem action='invert-selection'/>
|
||||
<menuitem action='select-all-after-edit-cursor'/>
|
||||
<menuitem action='select-all-before-edit-cursor'/>
|
||||
<menuitem action='select-all-between-cursors'/>
|
||||
<menuitem action='select-all-within-cursors'/>
|
||||
<menuitem action='select-all-in-punch-range'/>
|
||||
<menuitem action='select-all-in-loop-range'/>
|
||||
<separator/>
|
||||
<menuitem action='select-next-route'/>
|
||||
<menuitem action='select-prev-route'/>
|
||||
<separator/>
|
||||
<menu action='EditCursorMovementOptions'>
|
||||
<menuitem action='selected-marker-to-next-region-boundary'/>
|
||||
<menuitem action='selected-marker-to-previous-region-boundary'/>
|
||||
<menuitem action='edit-cursor-to-next-region-sync'/>
|
||||
<menuitem action='edit-cursor-to-previous-region-sync'/>
|
||||
<menuitem action='center-edit-cursor'/>
|
||||
<menuitem action='edit-to-playhead'/>
|
||||
</menu>
|
||||
<menu name='KeyMouse Actions' action='KeyMouse Actions'>
|
||||
<menuitem action='play-selected-regions'/>
|
||||
<menuitem action='brush-at-mouse'/>
|
||||
<menuitem action='mute-unmute-region'/>
|
||||
<separator/>
|
||||
<menuitem action='set-mouse-mode-object'/>
|
||||
<menuitem action='set-mouse-mode-range'/>
|
||||
<menuitem action='set-mouse-mode-gain'/>
|
||||
<menuitem action='set-mouse-mode-zoom'/>
|
||||
<menuitem action='set-mouse-mode-timefx'/>
|
||||
<separator/>
|
||||
<menuitem action='cycle-edit-point'/>
|
||||
<menuitem action='cycle-edit-point-with-marker'/>
|
||||
<menuitem action='toggle-edit-mode'/>
|
||||
<separator/>
|
||||
<menuitem action='boost-region-gain'/>
|
||||
<menuitem action='cut-region-gain'/>
|
||||
</menu>
|
||||
</menu>
|
||||
<menu name='Regions' action='Regions'>
|
||||
<menuitem action='crop'/>
|
||||
<menuitem action='duplicate-region'/>
|
||||
<menuitem action='insert-region'/>
|
||||
<menuitem action='normalize-region'/>
|
||||
<menuitem action='split-region-at-transients'/>
|
||||
<separator/>
|
||||
<menuitem action="nudge-forward"/>
|
||||
<menuitem action="nudge-backward"/>
|
||||
<menuitem action='split-region'/>
|
||||
<menuitem action='set-region-sync-position'/>
|
||||
<separator/>
|
||||
<menuitem action='duplicate-region'/>
|
||||
<menuitem action='multi-duplicate-region'/>
|
||||
<menuitem action='region-fill-track'/>
|
||||
<menu action="AlignMenu">
|
||||
<menuitem action='align-regions-start'/>
|
||||
<menuitem action='align-regions-start-relative'/>
|
||||
<menuitem action='align-regions-end'/>
|
||||
<menuitem action='align-regions-end-relative'/>
|
||||
<menuitem action='align-regions-sync'/>
|
||||
<menuitem action='align-regions-sync-relative'/>
|
||||
<separator/>
|
||||
</menu>
|
||||
<menu action="NudgeRegionMenu">
|
||||
<menuitem action="nudge-forward"/>
|
||||
<menuitem action="nudge-backward"/>
|
||||
</menu>
|
||||
<menu action="TrimMenu">
|
||||
<menuitem action='trim-front'/>
|
||||
<menuitem action='trim-back'/>
|
||||
<menuitem action='crop'/>
|
||||
<menuitem action='trim-region-to-loop'/>
|
||||
<menuitem action='trim-region-to-punch'/>
|
||||
</menu>
|
||||
<menu action="FadeMenu">
|
||||
<menuitem action='set-fade-in-length'/>
|
||||
<menuitem action='toggle-fade-in-active'/>
|
||||
<menuitem action='set-fade-out-length'/>
|
||||
<menuitem action='toggle-fade-out-active'/>
|
||||
<separator/>
|
||||
<menuitem action='trim-front'/>
|
||||
<menuitem action='trim-back'/>
|
||||
<menuitem action='trim-region-to-loop'/>
|
||||
<menuitem action='trim-region-to-punch'/>
|
||||
<separator/>
|
||||
<menuitem action='pitch-shift-region'/>
|
||||
<menuitem action='set-tempo-from-region'/>
|
||||
<menuitem action='set-tempo-from-edit-range'/>
|
||||
</menu>
|
||||
</menu>
|
||||
<menu action="SelectMenu">
|
||||
<menuitem action='select-all'/>
|
||||
<menuitem action='deselect-all'/>
|
||||
<menuitem action='invert-selection'/>
|
||||
<menuitem action='select-all-after-edit-cursor'/>
|
||||
<menuitem action='select-all-before-edit-cursor'/>
|
||||
<menuitem action='select-all-between-cursors'/>
|
||||
<menuitem action='select-all-within-cursors'/>
|
||||
<menuitem action='select-all-in-punch-range'/>
|
||||
<menuitem action='select-all-in-loop-range'/>
|
||||
</menu>
|
||||
</menu>
|
||||
|
||||
<menu name='Regions' action='Regions'>
|
||||
<menuitem action='insert-region'/>
|
||||
<menuitem action='rename-region'/>
|
||||
<menuitem action='auto-rename-region'/>
|
||||
<menuitem action='raise-region'/>
|
||||
<menuitem action='lower-region'/>
|
||||
<menuitem action='naturalize-region'/>
|
||||
<menuitem action='lock-region'/>
|
||||
<menuitem action='set-region-sync-position'/>
|
||||
<menuitem action='remove-region-sync'/>
|
||||
<menuitem action='mute-unmute-region'/>
|
||||
<separator/>
|
||||
<menuitem action='monoize-region'/>
|
||||
<menuitem action='normalize-region'/>
|
||||
<menuitem action='split-region-at-transients'/>
|
||||
<separator/>
|
||||
<menu action="RegionGainMenu">
|
||||
<menuitem action='boost-region-gain'/>
|
||||
<menuitem action='cut-region-gain'/>
|
||||
</menu>
|
||||
<menuitem action='pitch-shift-region'/>
|
||||
<menuitem action='reverse-region'/>
|
||||
</menu>
|
||||
|
||||
<menu name='View' action = 'View'>
|
||||
<menuitem action='ToggleMaximalEditor'/>
|
||||
<separator/>
|
||||
<menu name='ZoomFocus' action='ZoomFocus'>
|
||||
<menuitem action='zoom-focus-playhead'/>
|
||||
<menuitem action='zoom-focus-edit'/>
|
||||
<menuitem action='zoom-focus-mouse'/>
|
||||
</menu>
|
||||
<menu name='SnapMode' action='SnapMode'>
|
||||
<menuitem action='snap-off'/>
|
||||
<menuitem action='snap-normal'/>
|
||||
<menuitem action='snap-magnetic'/>
|
||||
<separator/>
|
||||
<menuitem action='cycle-snap-mode'/>
|
||||
</menu>
|
||||
<menu name='SnapTo' action='SnapTo'>
|
||||
<menuitem action='snap-to-cd-frame'/>
|
||||
<menuitem action='snap-to-smpte-frame'/>
|
||||
<menuitem action='snap-to-smpte-seconds'/>
|
||||
<menuitem action='snap-to-smpte-minutes'/>
|
||||
<menuitem action='snap-to-seconds'/>
|
||||
<menuitem action='snap-to-minutes'/>
|
||||
<menuitem action='snap-to-thirtyseconds'/>
|
||||
<menuitem action='snap-to-asixteenthbeat'/>
|
||||
<menuitem action='snap-to-eighths'/>
|
||||
<menuitem action='snap-to-quarters'/>
|
||||
<menuitem action='snap-to-thirds'/>
|
||||
<menuitem action='snap-to-beat'/>
|
||||
<menuitem action='snap-to-bar'/>
|
||||
<menuitem action='snap-to-mark'/>
|
||||
<menuitem action='snap-to-region-start'/>
|
||||
<menuitem action='snap-to-region-end'/>
|
||||
<menuitem action='snap-to-region-sync'/>
|
||||
<menuitem action='snap-to-region-boundary'/>
|
||||
<menuitem action='cycle-snap-choice'/>
|
||||
</menu>
|
||||
<separator/>
|
||||
<menuitem action='temporal-zoom-in'/>
|
||||
<menuitem action='temporal-zoom-out'/>
|
||||
<menuitem action='zoom-to-session'/>
|
||||
<menuitem action='zoom-to-region'/>
|
||||
<menuitem action='toggle-zoom'/>
|
||||
<menuitem action='scroll-tracks-down'/>
|
||||
<menuitem action='scroll-tracks-up'/>
|
||||
<menuitem action='scroll-tracks-down'/>
|
||||
<menuitem action='step-tracks-up'/>
|
||||
<menuitem action='step-tracks-down'/>
|
||||
<separator/>
|
||||
<menuitem action='scroll-forward'/>
|
||||
<menuitem action='scroll-backward'/>
|
||||
<separator/>
|
||||
<menuitem action='scroll-playhead-forward'/>
|
||||
<menuitem action='scroll-playhead-backward'/>
|
||||
<separator/>
|
||||
<menuitem action='show-editor-mixer'/>
|
||||
<menuitem action='SyncEditorAndMixerTrackOrder'/>
|
||||
<menuitem action='ToggleMeasureVisibility'/>
|
||||
<menuitem action='ToggleLogoVisibility'/>
|
||||
<menu action="PrimaryClockMenu">
|
||||
<menuitem action="primary-clock-bbt"/>
|
||||
<menuitem action="primary-clock-minsec"/>
|
||||
<menuitem action="primary-clock-samples"/>
|
||||
<menuitem action="primary-clock-off"/>
|
||||
</menu>
|
||||
<menu action="SecondaryClockMenu">
|
||||
<menuitem action="secondary-clock-bbt"/>
|
||||
<menuitem action="secondary-clock-minsec"/>
|
||||
<menuitem action="secondary-clock-samples"/>
|
||||
<menuitem action="secondary-clock-off"/>
|
||||
</menu>
|
||||
<menu action="RulerMenu">
|
||||
<menuitem action="toggle-bbt-ruler"/>
|
||||
<menuitem action="toggle-minsec-ruler"/>
|
||||
<menuitem action="toggle-samples-ruler"/>
|
||||
<separator/>
|
||||
<menuitem action="toggle-meter-ruler"/>
|
||||
<menuitem action="toggle-tempo-ruler"/>
|
||||
<menuitem action="toggle-range-ruler"/>
|
||||
<menuitem action="toggle-cd-marker-ruler"/>
|
||||
<menuitem action="toggle-loop-punch-ruler"/>
|
||||
</menu>
|
||||
<menu action="ZoomMenu">
|
||||
<menuitem action='temporal-zoom-in'/>
|
||||
<menuitem action='temporal-zoom-out'/>
|
||||
<menuitem action='zoom-to-session'/>
|
||||
<menuitem action='zoom-to-region'/>
|
||||
<menuitem action='toggle-zoom'/>
|
||||
</menu>
|
||||
<menu action="ScrollMenu">
|
||||
<menuitem action='scroll-tracks-down'/>
|
||||
<menuitem action='scroll-tracks-up'/>
|
||||
<menuitem action='scroll-forward'/>
|
||||
<menuitem action='scroll-backward'/>
|
||||
</menu>
|
||||
<separator/>
|
||||
<menuitem action='goto-editor'/>
|
||||
<menuitem action='goto-mixer'/>
|
||||
<menuitem action='ToggleLocations'/>
|
||||
<menuitem action='ToggleKeyEditor'/>
|
||||
<menuitem action='ToggleThemeManager'/>
|
||||
<menuitem action='ToggleBigClock'/>
|
||||
<menuitem action='toggle-rhythm-ferret'/>
|
||||
<menu action="Windows">
|
||||
<menuitem action='goto-editor'/>
|
||||
<menuitem action='goto-mixer'/>
|
||||
<menuitem action='ToggleLocations'/>
|
||||
<menuitem action='ToggleKeyEditor'/>
|
||||
<menuitem action='ToggleThemeManager'/>
|
||||
<menuitem action='ToggleBigClock'/>
|
||||
<menuitem action='toggle-rhythm-ferret'/>
|
||||
</menu>
|
||||
</menu>
|
||||
|
||||
<menu name='Options' action='Options'>
|
||||
<menu action='Monitoring'>
|
||||
<menuitem action='UseSoftwareMonitoring'/>
|
||||
<menuitem action='UseExternalMonitoring'/>
|
||||
</menu>
|
||||
<menuitem action='LatchedSolo'/>
|
||||
<menuitem action='link-region-and-track-selection'/>
|
||||
</menu>
|
||||
<menu action="TempoMenu">
|
||||
<menuitem action='set-tempo-from-region'/>
|
||||
<menuitem action='set-tempo-from-edit-range'/>
|
||||
</menu>
|
||||
<menu action="LatchMenu">
|
||||
<menuitem action='LatchedSolo'/>
|
||||
</menu>
|
||||
<menu action="Link">
|
||||
<menuitem action='link-region-and-track-selection'/>
|
||||
</menu>
|
||||
<menu action='ZoomFocusMenu'>
|
||||
<menuitem action='zoom-focus-playhead'/>
|
||||
<menuitem action='zoom-focus-edit'/>
|
||||
<menuitem action='zoom-focus-mouse'/>
|
||||
</menu>
|
||||
<menu action="EditPointMenu">
|
||||
<menuitem action='edit-point-playhead'/>
|
||||
<menuitem action='edit-point-mouse'/>
|
||||
<menuitem action='edit-point-marker'/>
|
||||
</menu>
|
||||
<menu action='KeyMouseActions'>
|
||||
<menuitem action='select-next-route'/>
|
||||
<menuitem action='select-prev-route'/>
|
||||
<menuitem action='focus-on-clock'/>
|
||||
<menuitem action='GotoZero'/>
|
||||
<menuitem action='GotoStart'/>
|
||||
<menuitem action='GotoEnd'/>
|
||||
<menuitem action='set-mouse-mode-object'/>
|
||||
<menuitem action='set-mouse-mode-range'/>
|
||||
<menuitem action='set-mouse-mode-gain'/>
|
||||
<menuitem action='set-mouse-mode-zoom'/>
|
||||
<menuitem action='set-mouse-mode-timefx'/>
|
||||
<menuitem action='cycle-edit-point'/>
|
||||
<menuitem action='cycle-edit-point-with-marker'/>
|
||||
<menuitem action='toggle-edit-mode'/>
|
||||
<menuitem action='snap-off'/>
|
||||
<menuitem action='snap-normal'/>
|
||||
<menuitem action='snap-magnetic'/>
|
||||
<menuitem action='cycle-snap-mode'/>
|
||||
<menuitem action='cycle-snap-choice'/>
|
||||
</menu>
|
||||
</menu>
|
||||
|
||||
</menubar>
|
||||
|
||||
<popup name='redirectmenu'>
|
||||
|
|
|
@ -123,7 +123,7 @@
|
|||
</menu>
|
||||
<menuitem action='set-tempo-from-region'/>
|
||||
<menuitem action='set-tempo-from-edit-range'/>
|
||||
<menu name='KeyMouse Actions' action='KeyMouse Actions'>
|
||||
<menu action='KeyMouseActions'>
|
||||
<menuitem action='play-selected-regions'/>
|
||||
<menuitem action='brush-at-mouse'/>
|
||||
<menuitem action='set-edit-point'/>
|
||||
|
|
|
@ -92,7 +92,7 @@ ARDOUR_UI::install_actions ()
|
|||
ActionManager::register_action (main_actions, X_("Options"), _("Options"));
|
||||
ActionManager::register_action (main_actions, X_("TransportOptions"), _("Options"));
|
||||
ActionManager::register_action (main_actions, X_("Help"), _("Help"));
|
||||
ActionManager::register_action (main_actions, X_("KeyMouse Actions"), _("KeyMouse Actions"));
|
||||
ActionManager::register_action (main_actions, X_("KeyMouseActions"), _("Misc. Shortcuts"));
|
||||
ActionManager::register_action (main_actions, X_("AudioFileFormat"), _("Audio File Format"));
|
||||
ActionManager::register_action (main_actions, X_("AudioFileFormatHeader"), _("Header"));
|
||||
ActionManager::register_action (main_actions, X_("AudioFileFormatData"), _("Data"));
|
||||
|
@ -310,6 +310,24 @@ ARDOUR_UI::install_actions ()
|
|||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
ActionManager::transport_sensitive_actions.push_back (act);
|
||||
|
||||
act = ActionManager::register_action (transport_actions, X_("primary-clock-bbt"), _("Bars & Beats"), bind (mem_fun(primary_clock, &AudioClock::set_mode), AudioClock::BBT));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (transport_actions, X_("primary-clock-minsec"), _("Minutes & Seconds"), bind (mem_fun(primary_clock, &AudioClock::set_mode), AudioClock::MinSec));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (transport_actions, X_("primary-clock-samples"), _("Samples"), bind (mem_fun(primary_clock, &AudioClock::set_mode), AudioClock::Frames));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (transport_actions, X_("primary-clock-off"), _("Off"), bind (mem_fun(primary_clock, &AudioClock::set_mode), AudioClock::Off));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
|
||||
act = ActionManager::register_action (transport_actions, X_("secondary-clock-bbt"), _("Bars & Beats"), bind (mem_fun(secondary_clock, &AudioClock::set_mode), AudioClock::BBT));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (transport_actions, X_("secondary-clock-minsec"), _("Minutes & Seconds"), bind (mem_fun(secondary_clock, &AudioClock::set_mode), AudioClock::MinSec));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (transport_actions, X_("secondary-clock-samples"), _("Samples"), bind (mem_fun(secondary_clock, &AudioClock::set_mode), AudioClock::Frames));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (transport_actions, X_("secondary-clock-off"), _("Off"), bind (mem_fun(secondary_clock, &AudioClock::set_mode), AudioClock::Off));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
|
||||
act = ActionManager::register_toggle_action (transport_actions, X_("TogglePunchIn"), _("Punch In"), mem_fun(*this, &ARDOUR_UI::toggle_punch_in));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
ActionManager::transport_sensitive_actions.push_back (act);
|
||||
|
|
|
@ -809,8 +809,8 @@ AudioRegionView::create_waves ()
|
|||
|
||||
ChanCount nchans = atv.get_diskstream()->n_channels();
|
||||
|
||||
cerr << "creating waves for " << _region->name() << " with wfd = " << wait_for_data
|
||||
<< " and channels = " << nchans.n_audio() << endl;
|
||||
// cerr << "creating waves for " << _region->name() << " with wfd = " << wait_for_data
|
||||
// << " and channels = " << nchans.n_audio() << endl;
|
||||
|
||||
/* in tmp_waves, set up null pointers for each channel so the vector is allocated */
|
||||
for (uint32_t n = 0; n < nchans.n_audio(); ++n) {
|
||||
|
@ -825,21 +825,21 @@ AudioRegionView::create_waves ()
|
|||
|
||||
wave_caches.push_back (WaveView::create_cache ());
|
||||
|
||||
cerr << "\tchannel " << n << endl;
|
||||
// cerr << "\tchannel " << n << endl;
|
||||
|
||||
if (wait_for_data) {
|
||||
if (audio_region()->audio_source(n)->peaks_ready (bind (mem_fun(*this, &AudioRegionView::peaks_ready_handler), n), data_ready_connection)) {
|
||||
cerr << "\tData is ready\n";
|
||||
// cerr << "\tData is ready\n";
|
||||
cerr << "\tData is ready\n";
|
||||
create_one_wave (n, true);
|
||||
} else {
|
||||
cerr << "\tdata is not ready\n";
|
||||
// cerr << "\tdata is not ready\n";
|
||||
// we'll get a PeaksReady signal from the source in the future
|
||||
// and will call create_one_wave(n) then.
|
||||
}
|
||||
|
||||
} else {
|
||||
cerr << "\tdon't delay, display today!\n";
|
||||
// cerr << "\tdon't delay, display today!\n";
|
||||
create_one_wave (n, true);
|
||||
}
|
||||
|
||||
|
|
|
@ -153,7 +153,7 @@ static const gchar *_zoom_focus_strings[] = {
|
|||
N_("Center"),
|
||||
N_("Playhead"),
|
||||
N_("Mouse"),
|
||||
N_("Edit Point"),
|
||||
N_("Active Mark"),
|
||||
0
|
||||
};
|
||||
|
||||
|
@ -1288,12 +1288,23 @@ Editor::connect_to_session (Session *t)
|
|||
no_route_list_redisplay = false;
|
||||
redisplay_route_list ();
|
||||
}
|
||||
|
||||
switch (snap_type) {
|
||||
case SnapToRegionStart:
|
||||
case SnapToRegionEnd:
|
||||
case SnapToRegionSync:
|
||||
case SnapToRegionBoundary:
|
||||
build_region_boundary_cache ();
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
/* register for undo history */
|
||||
|
||||
session->register_with_memento_command_factory(_id, this);
|
||||
|
||||
start_updating ();
|
||||
start_updating ();
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -2163,19 +2174,17 @@ Editor::add_bus_context_items (Menu_Helpers::MenuList& edit_items)
|
|||
edit_items.push_back (MenuElem (_("Nudge"), *nudge_menu));
|
||||
}
|
||||
|
||||
/* CURSOR SETTING AND MARKS AND STUFF */
|
||||
|
||||
void
|
||||
Editor::set_snap_to (SnapType st)
|
||||
{
|
||||
unsigned int snap_ind = (unsigned int)st;
|
||||
unsigned int snap_ind = (unsigned int)st;
|
||||
snap_type = st;
|
||||
|
||||
if ( snap_ind > snap_type_strings.size() - 1 ) {
|
||||
snap_ind = 0;
|
||||
snap_type = (SnapType)snap_ind;
|
||||
}
|
||||
|
||||
|
||||
if (snap_ind > snap_type_strings.size() - 1) {
|
||||
snap_ind = 0;
|
||||
snap_type = (SnapType)snap_ind;
|
||||
}
|
||||
|
||||
string str = snap_type_strings[snap_ind];
|
||||
|
||||
if (str != snap_type_selector.get_active_text()) {
|
||||
|
@ -2190,9 +2199,17 @@ Editor::set_snap_to (SnapType st)
|
|||
case SnapToAEighthBeat:
|
||||
case SnapToAQuarterBeat:
|
||||
case SnapToAThirdBeat:
|
||||
compute_bbt_ruler_scale (leftmost_frame, leftmost_frame + (nframes_t)(canvas_width * frames_per_unit));
|
||||
update_tempo_based_rulers ();
|
||||
compute_bbt_ruler_scale (leftmost_frame, leftmost_frame + (nframes_t)(canvas_width * frames_per_unit));
|
||||
update_tempo_based_rulers ();
|
||||
break;
|
||||
|
||||
case SnapToRegionStart:
|
||||
case SnapToRegionEnd:
|
||||
case SnapToRegionSync:
|
||||
case SnapToRegionBoundary:
|
||||
build_region_boundary_cache ();
|
||||
break;
|
||||
|
||||
default:
|
||||
/* relax */
|
||||
break;
|
||||
|
@ -2229,28 +2246,25 @@ Editor::set_edit_point_preference (EditPoint ep)
|
|||
return;
|
||||
}
|
||||
|
||||
if (Profile->get_sae()) {
|
||||
|
||||
switch (zoom_focus) {
|
||||
case ZoomFocusMouse:
|
||||
case ZoomFocusPlayhead:
|
||||
case ZoomFocusEdit:
|
||||
switch (_edit_point) {
|
||||
case EditAtMouse:
|
||||
set_zoom_focus (ZoomFocusMouse);
|
||||
break;
|
||||
case EditAtPlayhead:
|
||||
set_zoom_focus (ZoomFocusPlayhead);
|
||||
break;
|
||||
case EditAtSelectedMarker:
|
||||
set_zoom_focus (ZoomFocusEdit);
|
||||
break;
|
||||
}
|
||||
switch (zoom_focus) {
|
||||
case ZoomFocusMouse:
|
||||
case ZoomFocusPlayhead:
|
||||
case ZoomFocusEdit:
|
||||
switch (_edit_point) {
|
||||
case EditAtMouse:
|
||||
set_zoom_focus (ZoomFocusMouse);
|
||||
break;
|
||||
default:
|
||||
case EditAtPlayhead:
|
||||
set_zoom_focus (ZoomFocusPlayhead);
|
||||
break;
|
||||
case EditAtSelectedMarker:
|
||||
set_zoom_focus (ZoomFocusEdit);
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
instant_save ();
|
||||
}
|
||||
|
@ -2527,13 +2541,19 @@ Editor::trackview_by_y_position (double y)
|
|||
void
|
||||
Editor::snap_to (nframes64_t& start, int32_t direction, bool for_mark)
|
||||
{
|
||||
Location* before = 0;
|
||||
Location* after = 0;
|
||||
|
||||
if (!session || snap_mode == SnapOff) {
|
||||
return;
|
||||
}
|
||||
|
||||
snap_to_internal (start, direction, for_mark);
|
||||
}
|
||||
|
||||
void
|
||||
Editor::snap_to_internal (nframes64_t& start, int32_t direction, bool for_mark)
|
||||
{
|
||||
Location* before = 0;
|
||||
Location* after = 0;
|
||||
|
||||
const nframes64_t one_second = session->frame_rate();
|
||||
const nframes64_t one_minute = session->frame_rate() * 60;
|
||||
const nframes64_t one_smpte_second = (nframes64_t)(rint(session->smpte_frames_per_second()) * session->frames_per_smpte_frame());
|
||||
|
@ -2542,7 +2562,7 @@ Editor::snap_to (nframes64_t& start, int32_t direction, bool for_mark)
|
|||
|
||||
switch (snap_type) {
|
||||
case SnapToCDFrame:
|
||||
if (direction) {
|
||||
if (((direction == 0) && (start % (one_second/75) > (one_second/75) / 2)) || (direction > 0)) {
|
||||
start = (nframes_t) ceil ((double) start / (one_second / 75)) * (one_second / 75);
|
||||
} else {
|
||||
start = (nframes_t) floor ((double) start / (one_second / 75)) * (one_second / 75);
|
||||
|
@ -2550,7 +2570,7 @@ Editor::snap_to (nframes64_t& start, int32_t direction, bool for_mark)
|
|||
break;
|
||||
|
||||
case SnapToSMPTEFrame:
|
||||
if (fmod((double)start, (double)session->frames_per_smpte_frame()) > (session->frames_per_smpte_frame() / 2)) {
|
||||
if (((direction == 0) && (fmod((double)start, (double)session->frames_per_smpte_frame()) > (session->frames_per_smpte_frame() / 2))) || (direction > 0)) {
|
||||
start = (nframes_t) (ceil ((double) start / session->frames_per_smpte_frame()) * session->frames_per_smpte_frame());
|
||||
} else {
|
||||
start = (nframes_t) (floor ((double) start / session->frames_per_smpte_frame()) * session->frames_per_smpte_frame());
|
||||
|
@ -2564,7 +2584,7 @@ Editor::snap_to (nframes64_t& start, int32_t direction, bool for_mark)
|
|||
} else {
|
||||
start -= session->smpte_offset ();
|
||||
}
|
||||
if (start % one_smpte_second > one_smpte_second / 2) {
|
||||
if (((direction == 0) && (start % one_smpte_second > one_smpte_second / 2)) || direction > 0) {
|
||||
start = (nframes_t) ceil ((double) start / one_smpte_second) * one_smpte_second;
|
||||
} else {
|
||||
start = (nframes_t) floor ((double) start / one_smpte_second) * one_smpte_second;
|
||||
|
@ -2585,7 +2605,7 @@ Editor::snap_to (nframes64_t& start, int32_t direction, bool for_mark)
|
|||
} else {
|
||||
start -= session->smpte_offset ();
|
||||
}
|
||||
if (start % one_smpte_minute > one_smpte_minute / 2) {
|
||||
if (((direction == 0) && (start % one_smpte_minute > one_smpte_minute / 2)) || direction > 0) {
|
||||
start = (nframes_t) ceil ((double) start / one_smpte_minute) * one_smpte_minute;
|
||||
} else {
|
||||
start = (nframes_t) floor ((double) start / one_smpte_minute) * one_smpte_minute;
|
||||
|
@ -2599,7 +2619,7 @@ Editor::snap_to (nframes64_t& start, int32_t direction, bool for_mark)
|
|||
break;
|
||||
|
||||
case SnapToSeconds:
|
||||
if (start % one_second > one_second / 2) {
|
||||
if (((direction == 0) && (start % one_second > one_second / 2)) || (direction > 0)) {
|
||||
start = (nframes_t) ceil ((double) start / one_second) * one_second;
|
||||
} else {
|
||||
start = (nframes_t) floor ((double) start / one_second) * one_second;
|
||||
|
@ -2607,7 +2627,7 @@ Editor::snap_to (nframes64_t& start, int32_t direction, bool for_mark)
|
|||
break;
|
||||
|
||||
case SnapToMinutes:
|
||||
if (start % one_minute > one_minute / 2) {
|
||||
if (((direction == 0) && (start % one_minute > one_minute / 2)) || (direction > 0)) {
|
||||
start = (nframes_t) ceil ((double) start / one_minute) * one_minute;
|
||||
} else {
|
||||
start = (nframes_t) floor ((double) start / one_minute) * one_minute;
|
||||
|
@ -2696,11 +2716,19 @@ Editor::snap_to (nframes64_t& start, int32_t direction, bool for_mark)
|
|||
}
|
||||
|
||||
if (i != region_boundary_cache.end()) {
|
||||
|
||||
/* lower bound doesn't quite to the right thing for our purposes */
|
||||
|
||||
if (direction < 0 && i != region_boundary_cache.begin()) {
|
||||
--i;
|
||||
}
|
||||
|
||||
start = *i;
|
||||
|
||||
} else {
|
||||
start = region_boundary_cache.back();
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -3596,7 +3624,7 @@ Editor::zoom_focus_selection_done ()
|
|||
focus_type = ZoomFocusPlayhead;
|
||||
} else if (choice == _("Edit")) {
|
||||
focus_type = ZoomFocusEdit;
|
||||
} else if (choice == _("Edit Point")) {
|
||||
} else if (choice == _("Active Mark")) {
|
||||
focus_type = ZoomFocusEdit;
|
||||
} else {
|
||||
focus_type = ZoomFocusMouse;
|
||||
|
@ -4375,9 +4403,9 @@ Editor::idle_visual_changer ()
|
|||
if (p & VisualChange::ZoomLevel) {
|
||||
set_frames_per_unit (pending_visual_change.frames_per_unit);
|
||||
|
||||
compute_fixed_ruler_scale ();
|
||||
compute_current_bbt_points(pending_visual_change.time_origin, pending_visual_change.time_origin + (nframes_t)(canvas_width * pending_visual_change.frames_per_unit));
|
||||
compute_bbt_ruler_scale (pending_visual_change.time_origin, pending_visual_change.time_origin + (nframes_t)(canvas_width * pending_visual_change.frames_per_unit));
|
||||
compute_fixed_ruler_scale ();
|
||||
compute_current_bbt_points(pending_visual_change.time_origin, pending_visual_change.time_origin + (nframes_t)(canvas_width * pending_visual_change.frames_per_unit));
|
||||
compute_bbt_ruler_scale (pending_visual_change.time_origin, pending_visual_change.time_origin + (nframes_t)(canvas_width * pending_visual_change.frames_per_unit));
|
||||
update_tempo_based_rulers ();
|
||||
}
|
||||
if (p & VisualChange::TimeOrigin) {
|
||||
|
|
|
@ -189,6 +189,8 @@ class Editor : public PublicEditor
|
|||
void new_region_from_selection ();
|
||||
void separate_regions_between (const TimeSelection&);
|
||||
void separate_region_from_selection ();
|
||||
void separate_region_from_punch ();
|
||||
void separate_region_from_loop ();
|
||||
void separate_regions_using_location (ARDOUR::Location&);
|
||||
void toggle_playback (bool with_abort);
|
||||
void transition_to_rolling (bool forward);
|
||||
|
@ -1188,6 +1190,8 @@ class Editor : public PublicEditor
|
|||
void center_edit_point ();
|
||||
void edit_cursor_backward ();
|
||||
void edit_cursor_forward ();
|
||||
void playhead_forward_to_grid ();
|
||||
void playhead_backward_to_grid ();
|
||||
void playhead_backward ();
|
||||
void playhead_forward ();
|
||||
void scroll_playhead (bool forward);
|
||||
|
@ -2196,6 +2200,8 @@ public:
|
|||
void select_next_route ();
|
||||
void select_prev_route ();
|
||||
|
||||
void snap_to_internal (nframes64_t& first, int32_t direction = 0, bool for_mark = false);
|
||||
|
||||
RhythmFerret* rhythm_ferret;
|
||||
};
|
||||
|
||||
|
|
|
@ -44,26 +44,49 @@ Editor::register_actions ()
|
|||
|
||||
/* non-operative menu items for menu bar */
|
||||
|
||||
ActionManager::register_action (editor_actions, X_("Edit"), _("Edit"));
|
||||
ActionManager::register_action (editor_actions, X_("Select"), _("Select"));
|
||||
ActionManager::register_action (editor_actions, X_("EditSelectRegionOptions"), _("Select Regions"));
|
||||
ActionManager::register_action (editor_actions, X_("EditSelectRangeOptions"), _("Select Range Operations"));
|
||||
ActionManager::register_action (editor_actions, X_("EditCursorMovementOptions"), _("Move Selected Marker"));
|
||||
ActionManager::register_action (editor_actions, X_("RegionEditOps"), _("Region operations"));
|
||||
ActionManager::register_action (editor_actions, X_("Tools"), _("Tools"));
|
||||
ActionManager::register_action (editor_actions, X_("View"), _("View"));
|
||||
ActionManager::register_action (editor_actions, X_("ZoomFocus"), _("Zoom Focus"));
|
||||
ActionManager::register_action (editor_actions, X_("MeterHold"), _("Meter hold"));
|
||||
ActionManager::register_action (editor_actions, X_("MeterFalloff"), _("Meter falloff"));
|
||||
ActionManager::register_action (editor_actions, X_("Solo"), _("Solo"));
|
||||
ActionManager::register_action (editor_actions, X_("Crossfades"), _("Crossfades"));
|
||||
ActionManager::register_action (editor_actions, X_("Monitoring"), _("Monitoring"));
|
||||
ActionManager::register_action (editor_actions, X_("AlignMenu"), _("Align"));
|
||||
ActionManager::register_action (editor_actions, X_("Autoconnect"), _("Autoconnect"));
|
||||
ActionManager::register_action (editor_actions, X_("Crossfades"), _("Crossfades"));
|
||||
ActionManager::register_action (editor_actions, X_("Edit"), _("Edit"));
|
||||
ActionManager::register_action (editor_actions, X_("EditCursorMovementOptions"), _("Move Selected Marker"));
|
||||
ActionManager::register_action (editor_actions, X_("EditSelectRangeOptions"), _("Select Range Operations"));
|
||||
ActionManager::register_action (editor_actions, X_("EditSelectRegionOptions"), _("Select Regions"));
|
||||
ActionManager::register_action (editor_actions, X_("EditPointMenu"), _("Edit Point"));
|
||||
ActionManager::register_action (editor_actions, X_("FadeMenu"), _("Fade"));
|
||||
ActionManager::register_action (editor_actions, X_("LatchMenu"), _("Latch"));
|
||||
ActionManager::register_action (editor_actions, X_("Layering"), _("Layering"));
|
||||
ActionManager::register_action (editor_actions, X_("Timecode"), _("Timecode fps"));
|
||||
ActionManager::register_action (editor_actions, X_("Pullup"), _("Pullup / Pulldown"));
|
||||
ActionManager::register_action (editor_actions, X_("Subframes"), _("Subframes"));
|
||||
ActionManager::register_action (editor_actions, X_("Link"), _("Link"));
|
||||
ActionManager::register_action (editor_actions, X_("LocateToMarker"), _("Locate To Markers"));
|
||||
ActionManager::register_action (editor_actions, X_("MarkerMenu"), _("Markers"));
|
||||
ActionManager::register_action (editor_actions, X_("MeterFalloff"), _("Meter falloff"));
|
||||
ActionManager::register_action (editor_actions, X_("MeterHold"), _("Meter hold"));
|
||||
ActionManager::register_action (editor_actions, X_("Monitoring"), _("Monitoring"));
|
||||
ActionManager::register_action (editor_actions, X_("MoveActiveMarkMenu"), _("Active Mark"));
|
||||
ActionManager::register_action (editor_actions, X_("MovePlayHeadMenu"), _("Playhead"));
|
||||
ActionManager::register_action (editor_actions, X_("NudgeRegionMenu"), _("Nudge"));
|
||||
ActionManager::register_action (editor_actions, X_("PlayMenu"), _("Play"));
|
||||
ActionManager::register_action (editor_actions, X_("PrimaryClockMenu"), _("Primary Clock"));
|
||||
ActionManager::register_action (editor_actions, X_("Pullup"), _("Pullup / Pulldown"));
|
||||
ActionManager::register_action (editor_actions, X_("RegionEditOps"), _("Region operations"));
|
||||
ActionManager::register_action (editor_actions, X_("RegionGainMenu"), _("Gain"));
|
||||
ActionManager::register_action (editor_actions, X_("RulerMenu"), _("Rulers"));
|
||||
ActionManager::register_action (editor_actions, X_("ScrollMenu"), _("Scroll"));
|
||||
ActionManager::register_action (editor_actions, X_("SecondaryClockMenu"), _("Secondary Clock"));
|
||||
ActionManager::register_action (editor_actions, X_("Select"), _("Select"));
|
||||
ActionManager::register_action (editor_actions, X_("SelectMenu"), _("Select"));
|
||||
ActionManager::register_action (editor_actions, X_("SeparateMenu"), _("Separate"));
|
||||
ActionManager::register_action (editor_actions, X_("SetLoopMenu"), _("Loop"));
|
||||
ActionManager::register_action (editor_actions, X_("SetPunchMenu"), _("Punch"));
|
||||
ActionManager::register_action (editor_actions, X_("Solo"), _("Solo"));
|
||||
ActionManager::register_action (editor_actions, X_("Subframes"), _("Subframes"));
|
||||
ActionManager::register_action (editor_actions, X_("TempoMenu"), _("Tempo"));
|
||||
ActionManager::register_action (editor_actions, X_("Timecode"), _("Timecode fps"));
|
||||
ActionManager::register_action (editor_actions, X_("Tools"), _("Tools"));
|
||||
ActionManager::register_action (editor_actions, X_("TrimMenu"), _("Trim"));
|
||||
ActionManager::register_action (editor_actions, X_("View"), _("View"));
|
||||
ActionManager::register_action (editor_actions, X_("ZoomFocus"), _("Zoom"));
|
||||
ActionManager::register_action (editor_actions, X_("ZoomMenu"), _("Zoom"));
|
||||
ActionManager::register_action (editor_actions, X_("ZoomFocusMenu"), _("Zoom Focus"));
|
||||
|
||||
|
||||
/* add named actions for the editor */
|
||||
|
@ -210,6 +233,10 @@ Editor::register_actions ()
|
|||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (editor_actions, "nudge-playhead-backward", _("Nudge Playhead Backward"), bind (mem_fun(*this, &Editor::nudge_backward), false, true));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (editor_actions, "playhead-forward-to-grid", _("Forward To Grid"), mem_fun(*this, &Editor::playhead_forward_to_grid));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (editor_actions, "playhead-backward-to-grid", _("Backward To Grid"), mem_fun(*this, &Editor::playhead_backward_to_grid));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
|
||||
|
||||
act = ActionManager::register_action (editor_actions, "temporal-zoom-out", _("Zoom Out"), bind (mem_fun(*this, &Editor::temporal_zoom_step), true));
|
||||
|
@ -255,31 +282,39 @@ Editor::register_actions ()
|
|||
|
||||
act = ActionManager::register_action (editor_actions, "trim-front", _("Trim start at edit point"), mem_fun(*this, &Editor::trim_region_front));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
ActionManager::region_selection_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (editor_actions, "trim-back", _("Trim end at edit point"), mem_fun(*this, &Editor::trim_region_back));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
ActionManager::region_selection_sensitive_actions.push_back (act);
|
||||
|
||||
act = ActionManager::register_action (editor_actions, "trim-from-start", _("Start to edit point"), mem_fun(*this, &Editor::trim_region_from_edit_point));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
ActionManager::region_selection_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (editor_actions, "trim-to-end", _("Edit point to end"), mem_fun(*this, &Editor::trim_region_to_edit_point));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
ActionManager::region_selection_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (editor_actions, "trim-region-to-loop", _("Trim To Loop"), mem_fun(*this, &Editor::trim_region_to_loop));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
ActionManager::region_selection_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (editor_actions, "trim-region-to-punch", _("Trim To Punch"), mem_fun(*this, &Editor::trim_region_to_punch));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
ActionManager::region_selection_sensitive_actions.push_back (act);
|
||||
|
||||
act = ActionManager::register_action (editor_actions, "set-loop-from-edit-range", _("Set Loop From Edit Range"), bind (mem_fun(*this, &Editor::set_loop_from_edit_range), false));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (editor_actions, "set-loop-from-region", _("Set Loop From Region"), bind (mem_fun(*this, &Editor::set_loop_from_region), false));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
ActionManager::region_selection_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (editor_actions, "loop-region", _("Loop Region"), bind (mem_fun(*this, &Editor::set_loop_from_region), true));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (editor_actions, "set-punch-from-edit-range", _("Set Punch From Edit Range"), mem_fun(*this, &Editor::set_punch_from_edit_range));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (editor_actions, "set-punch-from-region", _("Set Punch From Region"), mem_fun(*this, &Editor::set_punch_from_region));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
|
||||
ActionManager::region_selection_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (editor_actions, "pitch-shift-region", _("Transpose"), mem_fun(*this, &Editor::pitch_shift_regions));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
ActionManager::region_selection_sensitive_actions.push_back (act);
|
||||
|
||||
act = ActionManager::register_action (editor_actions, "set-fade-in-length", _("Set Fade In Length"), bind (mem_fun(*this, &Editor::set_fade_length), true));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
|
@ -292,17 +327,23 @@ Editor::register_actions ()
|
|||
|
||||
act = ActionManager::register_action (editor_actions, "align-regions-start", _("Align Regions Start"), bind (mem_fun(*this, &Editor::align), ARDOUR::Start));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
ActionManager::region_selection_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (editor_actions, "align-regions-start-relative", _("Align Regions Start Relative"), bind (mem_fun(*this, &Editor::align_relative), ARDOUR::Start));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
ActionManager::region_selection_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (editor_actions, "align-regions-end", _("Align Regions End"), bind (mem_fun(*this, &Editor::align), ARDOUR::End));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
ActionManager::region_selection_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (editor_actions, "align-regions-end-relative", _("Align Regions End Relative"), bind (mem_fun(*this, &Editor::align_relative), ARDOUR::End));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
ActionManager::region_selection_sensitive_actions.push_back (act);
|
||||
|
||||
act = ActionManager::register_action (editor_actions, "align-regions-sync", _("Align Regions Sync"), bind (mem_fun(*this, &Editor::align), ARDOUR::SyncPoint));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
ActionManager::region_selection_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (editor_actions, "align-regions-sync-relative", _("Align Regions Sync Relative"), bind (mem_fun(*this, &Editor::align_relative), ARDOUR::SyncPoint));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
ActionManager::region_selection_sensitive_actions.push_back (act);
|
||||
|
||||
act = ActionManager::register_action (editor_actions, "play-from-edit-point", _("Play From Edit Point"), mem_fun(*this, &Editor::play_from_edit_point));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
|
@ -312,19 +353,81 @@ Editor::register_actions ()
|
|||
act = ActionManager::register_action (editor_actions, "play-edit-range", _("Play Edit Range"), mem_fun(*this, &Editor::play_edit_range));
|
||||
act = ActionManager::register_action (editor_actions, "play-selected-regions", _("Play Selected Region(s)"), mem_fun(*this, &Editor::play_selected_region));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
ActionManager::region_selection_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (editor_actions, "brush-at-mouse", _("Brush at Mouse"), mem_fun(*this, &Editor::kbd_brush));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (editor_actions, "mute-unmute-region", _("Mute/Unmute Region"), mem_fun(*this, &Editor::kbd_mute_unmute_region));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
|
||||
act = ActionManager::register_action (editor_actions, "set-playhead", _("Set Playhead"), mem_fun(*this, &Editor::set_playhead_cursor));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (editor_actions, "set-edit-point", _("Set Edit Point"), mem_fun(*this, &Editor::set_edit_point));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
|
||||
act = ActionManager::register_action (editor_actions, "duplicate-region", _("Duplicate Region"), bind (mem_fun(*this, &Editor::duplicate_dialog), false));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
ActionManager::region_selection_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (editor_actions, "multi-duplicate-region", _("Multi-Duplicate Region"), bind (mem_fun(*this, &Editor::duplicate_dialog), true));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
ActionManager::region_selection_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (editor_actions, "duplicate-range", _("Duplicate Range"), bind (mem_fun(*this, &Editor::duplicate_dialog), false));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
ActionManager::region_selection_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (editor_actions, "insert-region", _("Insert Region"), mem_fun(*this, &Editor::keyboard_insert_region_list_selection));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
ActionManager::region_selection_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (editor_actions, "normalize-region", _("Normalize Region"), mem_fun(*this, &Editor::normalize_region));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
ActionManager::region_selection_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (editor_actions, "rename-region", _("Rename"), mem_fun(*this, &Editor::rename_region));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
ActionManager::region_selection_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (editor_actions, "auto-rename-region", _("Auto-Rename"), mem_fun(*this, &Editor::rename_region));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
ActionManager::region_selection_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (editor_actions, "boost-region-gain", _("Boost Region Gain"), bind (mem_fun(*this, &Editor::adjust_region_scale_amplitude), true));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
ActionManager::region_selection_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (editor_actions, "cut-region-gain", _("Cut Region Gain"), bind (mem_fun(*this, &Editor::adjust_region_scale_amplitude), false));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
ActionManager::region_selection_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (editor_actions, "split-region", _("Split Region"), mem_fun(*this, &Editor::split));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
ActionManager::region_selection_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (editor_actions, "set-region-sync-position", _("Set Region Sync Position"), mem_fun(*this, &Editor::set_region_sync_from_edit_point));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
ActionManager::region_selection_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (editor_actions, "remove-region-sync", _("Remove Region Sync"), mem_fun(*this, &Editor::remove_region_sync));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
ActionManager::region_selection_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (editor_actions, "raise-region", _("Raise Region"), mem_fun(*this, &Editor::raise_region));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
ActionManager::region_selection_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (editor_actions, "lower-region", _("Lower Region"), mem_fun(*this, &Editor::lower_region));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
ActionManager::region_selection_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (editor_actions, "export-region", _("Export Region"), mem_fun(*this, &Editor::export_region));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
ActionManager::region_selection_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_toggle_action (editor_actions, "lock-region", _("Lock Region"), mem_fun(*this, &Editor::toggle_region_lock));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
ActionManager::region_selection_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_toggle_action (editor_actions, "glue-region", _("Glue Region To Bars&Beats"), bind (mem_fun (*this, &Editor::set_region_lock_style), Region::MusicTime));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
ActionManager::region_selection_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (editor_actions, "naturalize-region", _("Move To Original Position"), mem_fun (*this, &Editor::naturalize));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
ActionManager::region_selection_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (editor_actions, "reverse-region", _("Reverse"), mem_fun (*this, &Editor::reverse_region));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
ActionManager::region_selection_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (editor_actions, "monoize-region", _("Make mono regions"), (mem_fun(*this, &Editor::split_multichannel_region)));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
ActionManager::region_selection_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (editor_actions, "region-fill-track", _("Fill Track"), (mem_fun(*this, &Editor::region_fill_track)));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
ActionManager::region_selection_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (editor_actions, "mute-unmute-region", _("Mute/Unmute Region"), mem_fun(*this, &Editor::kbd_mute_unmute_region));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
ActionManager::region_selection_sensitive_actions.push_back (act);
|
||||
|
||||
undo_action = act = ActionManager::register_action (editor_actions, "undo", _("Undo"), bind (mem_fun(*this, &Editor::undo), 1U));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
|
@ -338,8 +441,16 @@ Editor::register_actions ()
|
|||
|
||||
act = ActionManager::register_action (editor_actions, "editor-separate", _("Separate"), mem_fun(*this, &Editor::separate_region_from_selection));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
ActionManager::region_selection_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (editor_actions, "separate-from-punch", _("Separate Using Punch Range"), mem_fun(*this, &Editor::separate_region_from_punch));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
ActionManager::region_selection_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (editor_actions, "separate-from-loop", _("Separate Using Loop Range"), mem_fun(*this, &Editor::separate_region_from_loop));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
ActionManager::region_selection_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (editor_actions, "editor-crop", _("Crop"), mem_fun(*this, &Editor::crop_region_to_selection));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
ActionManager::region_selection_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (editor_actions, "editor-cut", _("Cut"), mem_fun(*this, &Editor::cut));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
/* Note: for now, editor-delete does the exact same thing as editor-cut */
|
||||
|
@ -349,24 +460,7 @@ Editor::register_actions ()
|
|||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (editor_actions, "editor-paste", _("Paste"), mem_fun(*this, &Editor::keyboard_paste));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (editor_actions, "duplicate-region", _("Duplicate Region"), bind (mem_fun(*this, &Editor::duplicate_dialog), false));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (editor_actions, "multi-duplicate-region", _("Multi-Duplicate Region"), bind (mem_fun(*this, &Editor::duplicate_dialog), true));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (editor_actions, "duplicate-range", _("Duplicate Range"), bind (mem_fun(*this, &Editor::duplicate_dialog), false));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (editor_actions, "insert-region", _("Insert Region"), mem_fun(*this, &Editor::keyboard_insert_region_list_selection));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (editor_actions, "reverse-region", _("Reverse Region"), mem_fun(*this, &Editor::reverse_region));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (editor_actions, "normalize-region", _("Normalize Region"), mem_fun(*this, &Editor::normalize_region));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
|
||||
act = ActionManager::register_action (editor_actions, "boost-region-gain", _("Boost Region Gain"), bind (mem_fun(*this, &Editor::adjust_region_scale_amplitude), true));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (editor_actions, "cut-region-gain", _("Cut Region Gain"), bind (mem_fun(*this, &Editor::adjust_region_scale_amplitude), false));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
|
||||
act = ActionManager::register_action (editor_actions, "quantize-region", _("Quantize Region"), mem_fun(*this, &Editor::quantize_region));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
|
||||
|
@ -377,6 +471,7 @@ Editor::register_actions ()
|
|||
|
||||
act = ActionManager::register_action (editor_actions, "split-region-at-transients", _("Split Regions At Percussion Onsets"), mem_fun(*this, &Editor::split_region_at_transients));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
ActionManager::region_selection_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (editor_actions, "toggle-rhythm-ferret", _("Rhythm Ferret"), mem_fun(*this, &Editor::show_rhythm_ferret));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
|
||||
|
@ -441,6 +536,10 @@ Editor::register_actions ()
|
|||
ActionManager::register_radio_action (editor_actions, edit_point_group, X_("edit-at-mouse"), _("Mouse"), (bind (mem_fun(*this, &Editor::edit_point_chosen), Editing::EditAtPlayhead)));
|
||||
ActionManager::register_radio_action (editor_actions, edit_point_group, X_("edit-at-selected-marker"), _("Marker"), (bind (mem_fun(*this, &Editor::edit_point_chosen), Editing::EditAtPlayhead)));
|
||||
|
||||
ActionManager::register_action (editor_actions, "edit-point-marker", _("Marker"), bind (mem_fun (*this, &Editor::set_edit_point_preference), EditAtSelectedMarker));
|
||||
ActionManager::register_action (editor_actions, "edit-point-playhead", _("Playhead"), bind (mem_fun (*this, &Editor::set_edit_point_preference), EditAtPlayhead));
|
||||
ActionManager::register_action (editor_actions, "edit-point-mouse", _("Mouse"), bind (mem_fun (*this, &Editor::set_edit_point_preference), EditAtMouse));
|
||||
|
||||
ActionManager::register_action (editor_actions, "cycle-edit-point", _("Change edit point"), bind (mem_fun (*this, &Editor::cycle_edit_point), false));
|
||||
ActionManager::register_action (editor_actions, "cycle-edit-point-with-marker", _("Change edit point (w/Marker)"), bind (mem_fun (*this, &Editor::cycle_edit_point), true));
|
||||
|
||||
|
@ -482,6 +581,20 @@ Editor::register_actions ()
|
|||
ActionManager::register_radio_action (snap_actions, snap_choice_group, X_("snap-to-region-sync"), _("Snap to region sync"), (bind (mem_fun(*this, &Editor::snap_type_chosen), Editing::SnapToRegionSync)));
|
||||
ActionManager::register_radio_action (snap_actions, snap_choice_group, X_("snap-to-region-boundary"), _("Snap to region boundary"), (bind (mem_fun(*this, &Editor::snap_type_chosen), Editing::SnapToRegionBoundary)));
|
||||
|
||||
/* RULERS */
|
||||
|
||||
Glib::RefPtr<ActionGroup> ruler_actions = ActionGroup::create (X_("Rulers"));
|
||||
ActionManager::register_toggle_action (ruler_actions, X_("toggle-tempo-ruler"), _("Tempo"), bind (mem_fun(*this, &Editor::ruler_toggled), (int)ruler_time_tempo));
|
||||
ActionManager::register_toggle_action (ruler_actions, X_("toggle-meter-ruler"), _("Meter"), bind (mem_fun(*this, &Editor::ruler_toggled), (int)ruler_time_meter));
|
||||
ActionManager::register_toggle_action (ruler_actions, X_("toggle-range-ruler"), _("Ranges"), bind (mem_fun(*this, &Editor::ruler_toggled), (int)ruler_time_range_marker));
|
||||
ActionManager::register_toggle_action (ruler_actions, X_("toggle-marker-ruler"), _("Markers"), bind (mem_fun(*this, &Editor::ruler_toggled), (int)ruler_time_marker));
|
||||
ActionManager::register_toggle_action (ruler_actions, X_("toggle-cd-marker-ruler"), _("CD Markers"), bind (mem_fun(*this, &Editor::ruler_toggled), (int)ruler_time_cd_marker));
|
||||
ActionManager::register_toggle_action (ruler_actions, X_("toggle-loop-punch-ruler"), _("Loop/Punch"), bind (mem_fun(*this, &Editor::ruler_toggled), (int)ruler_time_transport_marker));
|
||||
ActionManager::register_toggle_action (ruler_actions, X_("toggle-bbt-ruler"), _("Bars & Beats"), bind (mem_fun(*this, &Editor::ruler_toggled), (int)ruler_metric_frames));
|
||||
ActionManager::register_toggle_action (ruler_actions, X_("toggle-samples-ruler"), _("Samples"), bind (mem_fun(*this, &Editor::ruler_toggled), (int)ruler_metric_bbt));
|
||||
ActionManager::register_toggle_action (ruler_actions, X_("toggle-timecode-ruler"), _("Timecode"), bind (mem_fun(*this, &Editor::ruler_toggled), (int)ruler_metric_smpte));
|
||||
ActionManager::register_toggle_action (ruler_actions, X_("toggle-minsec-ruler"), _("Timecode"), bind (mem_fun(*this, &Editor::ruler_toggled), (int)ruler_metric_minsec));
|
||||
|
||||
/* REGION LIST */
|
||||
|
||||
Glib::RefPtr<ActionGroup> rl_actions = ActionGroup::create (X_("RegionList"));
|
||||
|
@ -583,6 +696,7 @@ Editor::register_actions ()
|
|||
&Editor::subframes_per_frame_chosen), 100));
|
||||
|
||||
ActionManager::add_action_group (rl_actions);
|
||||
ActionManager::add_action_group (ruler_actions);
|
||||
ActionManager::add_action_group (zoom_actions);
|
||||
ActionManager::add_action_group (mouse_mode_actions);
|
||||
ActionManager::add_action_group (snap_actions);
|
||||
|
|
|
@ -2820,6 +2820,24 @@ Editor::separate_region_from_selection ()
|
|||
}
|
||||
}
|
||||
|
||||
void
|
||||
Editor::separate_region_from_punch ()
|
||||
{
|
||||
Location* loc = session->locations()->auto_punch_location();
|
||||
if (loc) {
|
||||
separate_regions_using_location (*loc);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
Editor::separate_region_from_loop ()
|
||||
{
|
||||
Location* loc = session->locations()->auto_loop_location();
|
||||
if (loc) {
|
||||
separate_regions_using_location (*loc);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
Editor::separate_regions_using_location (Location& loc)
|
||||
{
|
||||
|
@ -5487,3 +5505,29 @@ Editor::tab_to_transient (bool forward)
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
Editor::playhead_forward_to_grid ()
|
||||
{
|
||||
if (!session) return;
|
||||
nframes64_t pos = playhead_cursor->current_frame;
|
||||
if (pos < max_frames) {
|
||||
pos++;
|
||||
snap_to_internal (pos, 1, false);
|
||||
session->request_locate (pos);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
Editor::playhead_backward_to_grid ()
|
||||
{
|
||||
if (!session) return;
|
||||
nframes64_t pos = playhead_cursor->current_frame;
|
||||
if (pos > 1) {
|
||||
pos--;
|
||||
snap_to_internal (pos, -1, false);
|
||||
session->request_locate (pos);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -795,6 +795,27 @@ Editor::region_selection_changed ()
|
|||
(*i)->set_selected_regionviews (selection->regions);
|
||||
}
|
||||
|
||||
bool have_selected_regions = !selection->regions.empty();
|
||||
|
||||
for (vector<Glib::RefPtr<Action> >::iterator x = ActionManager::region_selection_sensitive_actions.begin();
|
||||
x != ActionManager::region_selection_sensitive_actions.end(); ++x) {
|
||||
|
||||
string accel_path = (*x)->get_accel_path ();
|
||||
AccelKey key;
|
||||
|
||||
/* if there is an accelerator, it should always be sensitive
|
||||
to allow for keyboard ops on entered regions.
|
||||
*/
|
||||
|
||||
bool known = ActionManager::lookup_entry (accel_path, key);
|
||||
|
||||
if (known && ((key.get_key() != GDK_VoidSymbol) && (key.get_key() != 0))) {
|
||||
(*x)->set_sensitive (true);
|
||||
} else {
|
||||
(*x)->set_sensitive (have_selected_regions);
|
||||
}
|
||||
}
|
||||
|
||||
zoomed_to_region = false;
|
||||
}
|
||||
|
||||
|
|
|
@ -975,7 +975,7 @@ ExportDialog::do_export ()
|
|||
progress_connection = Glib::signal_timeout().connect (mem_fun(*this, &ExportDialog::progress_timeout), 100);
|
||||
cancel_label.set_text (_("Stop Export"));
|
||||
|
||||
export_audio_data();
|
||||
export_data();
|
||||
|
||||
progress_connection.disconnect ();
|
||||
end_dialog ();
|
||||
|
|
|
@ -48,7 +48,7 @@ class ExportDialog : public ArdourDialog
|
|||
virtual Gtk::FileChooserAction browse_action() const { return Gtk::FILE_CHOOSER_ACTION_SAVE; }
|
||||
|
||||
protected:
|
||||
ARDOUR::AudioExportSpecification spec;
|
||||
ARDOUR::ExportSpecification spec;
|
||||
Gtk::Frame file_frame;
|
||||
|
||||
struct ExportModelColumns : public Gtk::TreeModel::ColumnRecord
|
||||
|
@ -77,7 +77,7 @@ class ExportDialog : public ArdourDialog
|
|||
// Gets called from within do_export. Is responsible for exporting the
|
||||
// audio data. spec has already been filled with user input before calling
|
||||
// this method. The dialog will be closed after this function exited.
|
||||
virtual void export_audio_data() = 0;
|
||||
virtual void export_data() = 0;
|
||||
|
||||
virtual bool wants_dir() { return false; }
|
||||
|
||||
|
|
|
@ -54,7 +54,7 @@ ExportRangeMarkersDialog::browse_action () const
|
|||
}
|
||||
|
||||
void
|
||||
ExportRangeMarkersDialog::export_audio_data ()
|
||||
ExportRangeMarkersDialog::export_data ()
|
||||
{
|
||||
getSession().locations()->apply(*this, &ExportRangeMarkersDialog::process_range_markers_export);
|
||||
}
|
||||
|
@ -83,7 +83,7 @@ ExportRangeMarkersDialog::process_range_markers_export(Locations::LocationList&
|
|||
|
||||
getSession().request_locate(spec.start_frame, false);
|
||||
|
||||
if (getSession().start_audio_export(spec)){
|
||||
if (getSession().start_export(spec)){
|
||||
// if export fails
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -35,7 +35,7 @@ class ExportRangeMarkersDialog : public ExportDialog
|
|||
protected:
|
||||
virtual bool is_filepath_valid(string &filepath);
|
||||
|
||||
void export_audio_data();
|
||||
void export_data();
|
||||
|
||||
bool wants_dir() { return true; }
|
||||
|
||||
|
|
|
@ -28,14 +28,14 @@
|
|||
#include "i18n.h"
|
||||
|
||||
|
||||
ExportRegionDialog::ExportRegionDialog (PublicEditor& editor, boost::shared_ptr<ARDOUR::Region> region)
|
||||
ExportRegionDialog::ExportRegionDialog (PublicEditor& editor, boost::shared_ptr<ARDOUR::Region> reg)
|
||||
: ExportDialog(editor)
|
||||
, region(reg)
|
||||
{
|
||||
set_title (_("ardour: export region"));
|
||||
file_frame.set_label (_("Export to File")),
|
||||
assert(region);
|
||||
|
||||
audio_region = boost::dynamic_pointer_cast<ARDOUR::AudioRegion>(region);
|
||||
assert(audio_region);
|
||||
set_title (_("Ardour: Export Region"));
|
||||
file_frame.set_label (_("Export to File")),
|
||||
|
||||
do_not_allow_track_and_master_selection();
|
||||
do_not_allow_channel_count_selection();
|
||||
|
@ -43,7 +43,7 @@ ExportRegionDialog::ExportRegionDialog (PublicEditor& editor, boost::shared_ptr<
|
|||
|
||||
|
||||
void
|
||||
ExportRegionDialog::export_audio_data()
|
||||
ExportRegionDialog::export_data()
|
||||
{
|
||||
pthread_t thr;
|
||||
pthread_create_and_store ("region export", &thr, 0, ExportRegionDialog::_export_region_thread, this);
|
||||
|
@ -71,5 +71,6 @@ ExportRegionDialog::_export_region_thread (void *arg)
|
|||
void
|
||||
ExportRegionDialog::export_region ()
|
||||
{
|
||||
audio_region->exportme (getSession(), spec);
|
||||
region->exportme (getSession(), spec);
|
||||
}
|
||||
|
||||
|
|
|
@ -33,10 +33,10 @@ class ExportRegionDialog : public ExportDialog
|
|||
void export_region ();
|
||||
|
||||
protected:
|
||||
void export_audio_data();
|
||||
void export_data();
|
||||
|
||||
private:
|
||||
boost::shared_ptr<ARDOUR::AudioRegion> audio_region;
|
||||
boost::shared_ptr<ARDOUR::Region> region;
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -30,9 +30,9 @@ ExportSessionDialog::ExportSessionDialog (PublicEditor& editor)
|
|||
}
|
||||
|
||||
void
|
||||
ExportSessionDialog::export_audio_data ()
|
||||
ExportSessionDialog::export_data ()
|
||||
{
|
||||
if (getSession().start_audio_export (spec)) {
|
||||
if (getSession().start_export (spec)) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -30,7 +30,7 @@ class ExportSessionDialog : public ExportDialog
|
|||
void set_range (nframes_t start, nframes_t end);
|
||||
|
||||
protected:
|
||||
void export_audio_data();
|
||||
void export_data();
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -38,7 +38,7 @@
|
|||
|
||||
namespace ARDOUR {
|
||||
class Session;
|
||||
class AudioExportSpecification;
|
||||
class ExportSpecification;
|
||||
class Region;
|
||||
class Playlist;
|
||||
class RouteGroup;
|
||||
|
|
|
@ -125,7 +125,7 @@ class AudioRegion : public Region
|
|||
|
||||
/* export */
|
||||
|
||||
int exportme (ARDOUR::Session&, ARDOUR::AudioExportSpecification&);
|
||||
int exportme (ARDOUR::Session&, ARDOUR::ExportSpecification&);
|
||||
|
||||
/* xfade/fade interactions */
|
||||
|
||||
|
|
|
@ -42,12 +42,12 @@ namespace ARDOUR
|
|||
class Port;
|
||||
|
||||
typedef pair<Port *, uint32_t> PortChannelPair;
|
||||
typedef map<uint32_t, vector<PortChannelPair> > AudioExportPortMap;
|
||||
typedef map<uint32_t, vector<PortChannelPair> > ExportPortMap;
|
||||
|
||||
struct AudioExportSpecification : public SF_INFO, public sigc::trackable {
|
||||
struct ExportSpecification : public SF_INFO, public sigc::trackable {
|
||||
|
||||
AudioExportSpecification();
|
||||
~AudioExportSpecification ();
|
||||
ExportSpecification();
|
||||
~ExportSpecification ();
|
||||
|
||||
void init ();
|
||||
void clear ();
|
||||
|
@ -62,36 +62,36 @@ namespace ARDOUR
|
|||
string path;
|
||||
nframes_t sample_rate;
|
||||
|
||||
int src_quality;
|
||||
SNDFILE* out;
|
||||
int src_quality;
|
||||
SNDFILE* out;
|
||||
uint32_t channels;
|
||||
AudioExportPortMap port_map;
|
||||
ExportPortMap port_map;
|
||||
nframes_t start_frame;
|
||||
nframes_t end_frame;
|
||||
GDitherType dither_type;
|
||||
bool do_freewheel;
|
||||
GDitherType dither_type;
|
||||
bool do_freewheel;
|
||||
|
||||
/* used exclusively during export */
|
||||
|
||||
nframes_t frame_rate;
|
||||
GDither dither;
|
||||
float* dataF;
|
||||
float* dataF2;
|
||||
float* leftoverF;
|
||||
GDither dither;
|
||||
float* dataF;
|
||||
float* dataF2;
|
||||
float* leftoverF;
|
||||
nframes_t leftover_frames;
|
||||
nframes_t max_leftover_frames;
|
||||
void* output_data;
|
||||
void* output_data;
|
||||
nframes_t out_samples_max;
|
||||
uint32_t sample_bytes;
|
||||
uint32_t data_width;
|
||||
uint32_t sample_bytes;
|
||||
uint32_t data_width;
|
||||
|
||||
nframes_t total_frames;
|
||||
SF_INFO sfinfo;
|
||||
SRC_DATA src_data;
|
||||
SRC_STATE* src_state;
|
||||
SF_INFO sfinfo;
|
||||
SRC_DATA src_data;
|
||||
SRC_STATE* src_state;
|
||||
nframes_t pos;
|
||||
|
||||
sigc::connection freewheel_connection;
|
||||
sigc::connection freewheel_connection;
|
||||
|
||||
/* shared between UI thread and audio thread */
|
||||
|
||||
|
@ -99,9 +99,9 @@ namespace ARDOUR
|
|||
volatile bool stop; /* UI sets this */
|
||||
volatile bool running; /* audio thread sets to false when export is done */
|
||||
|
||||
int status;
|
||||
|
||||
int status;
|
||||
};
|
||||
|
||||
} // namespace ARDOUR
|
||||
|
||||
#endif /* __ardour_export_h__ */
|
||||
|
|
|
@ -84,6 +84,8 @@ class MidiRegion : public Region
|
|||
|
||||
boost::shared_ptr<const AutomationControl> control(Parameter id) const
|
||||
{ return midi_source()->model()->control(id); }
|
||||
|
||||
int exportme (ARDOUR::Session&, ARDOUR::ExportSpecification&);
|
||||
|
||||
private:
|
||||
friend class RegionFactory;
|
||||
|
|
|
@ -37,6 +37,7 @@ namespace ARDOUR {
|
|||
|
||||
class Playlist;
|
||||
class Filter;
|
||||
class ExportSpecification;
|
||||
|
||||
enum RegionEditState {
|
||||
EditChangesNothing = 0,
|
||||
|
@ -222,6 +223,8 @@ class Region : public Automatable, public boost::enable_shared_from_this<Region>
|
|||
virtual bool is_dependent() const { return false; }
|
||||
virtual bool depends_on (boost::shared_ptr<Region> other) const { return false; }
|
||||
|
||||
virtual int exportme (ARDOUR::Session&, ARDOUR::ExportSpecification&) = 0;
|
||||
|
||||
virtual int get_transients (AnalysisFeatureList&, bool force_new = false) {
|
||||
// no transients, but its OK
|
||||
return 0;
|
||||
|
|
|
@ -109,7 +109,7 @@ class SMFSource;
|
|||
|
||||
class SessionDirectory;
|
||||
|
||||
struct AudioExportSpecification;
|
||||
struct ExportSpecification;
|
||||
struct RouteGroup;
|
||||
|
||||
using std::vector;
|
||||
|
@ -606,8 +606,8 @@ class Session : public PBD::StatefulDestructible
|
|||
SlaveSource post_export_slave;
|
||||
nframes_t post_export_position;
|
||||
|
||||
int start_audio_export (ARDOUR::AudioExportSpecification&);
|
||||
int stop_audio_export (ARDOUR::AudioExportSpecification&);
|
||||
int start_export (ARDOUR::ExportSpecification&);
|
||||
int stop_export (ARDOUR::ExportSpecification&);
|
||||
void finalize_audio_export ();
|
||||
|
||||
void add_source (boost::shared_ptr<Source>);
|
||||
|
@ -1037,7 +1037,7 @@ class Session : public PBD::StatefulDestructible
|
|||
void process_without_events (nframes_t);
|
||||
void process_with_events (nframes_t);
|
||||
void process_audition (nframes_t);
|
||||
int process_export (nframes_t, ARDOUR::AudioExportSpecification*);
|
||||
int process_export (nframes_t, ARDOUR::ExportSpecification*);
|
||||
|
||||
/* slave tracking */
|
||||
|
||||
|
@ -1062,7 +1062,7 @@ class Session : public PBD::StatefulDestructible
|
|||
void set_slave_source (SlaveSource);
|
||||
|
||||
bool _exporting;
|
||||
int prepare_to_export (ARDOUR::AudioExportSpecification&);
|
||||
int prepare_to_export (ARDOUR::ExportSpecification&);
|
||||
|
||||
void prepare_diskstreams ();
|
||||
void commit_diskstreams (nframes_t, bool& session_requires_butler);
|
||||
|
|
|
@ -119,7 +119,7 @@ AudioAnalyser::analyse (const string& path, Readable* src, uint32_t channel)
|
|||
/* zero fill buffer if necessary */
|
||||
|
||||
if (to_read != bufsize) {
|
||||
memset (data + to_read, 0, (bufsize - to_read));
|
||||
memset (data + to_read, 0, (bufsize - to_read) * sizeof (Sample));
|
||||
}
|
||||
|
||||
features = plugin->process (bufs, RealTime::fromSeconds ((double) pos / sample_rate));
|
||||
|
@ -128,7 +128,7 @@ AudioAnalyser::analyse (const string& path, Readable* src, uint32_t channel)
|
|||
goto out;
|
||||
}
|
||||
|
||||
pos += stepsize;
|
||||
pos += min (stepsize, to_read);
|
||||
|
||||
if (pos >= len) {
|
||||
done = true;
|
||||
|
|
|
@ -1022,7 +1022,7 @@ AudioRegion::read_raw_internal (Sample* buf, nframes_t pos, nframes_t cnt) const
|
|||
|
||||
|
||||
int
|
||||
AudioRegion::exportme (Session& session, AudioExportSpecification& spec)
|
||||
AudioRegion::exportme (Session& session, ARDOUR::ExportSpecification& spec)
|
||||
{
|
||||
const nframes_t blocksize = 4096;
|
||||
nframes_t to_read;
|
||||
|
|
|
@ -310,6 +310,12 @@ MidiRegion::separate_by_channel (Session& session, vector<MidiRegion*>& v) const
|
|||
return -1;
|
||||
}
|
||||
|
||||
int
|
||||
MidiRegion::exportme (ARDOUR::Session&, ARDOUR::ExportSpecification&)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
boost::shared_ptr<MidiSource>
|
||||
MidiRegion::midi_source (uint32_t n) const
|
||||
{
|
||||
|
|
|
@ -57,7 +57,7 @@ using namespace ARDOUR;
|
|||
using namespace PBD;
|
||||
|
||||
static int
|
||||
convert_spec_to_info (AudioExportSpecification& spec, SF_INFO& sfinfo)
|
||||
convert_spec_to_info (ExportSpecification& spec, SF_INFO& sfinfo)
|
||||
{
|
||||
if (spec.path.length() == 0) {
|
||||
error << _("Export: no output file specified") << endmsg;
|
||||
|
@ -76,18 +76,18 @@ convert_spec_to_info (AudioExportSpecification& spec, SF_INFO& sfinfo)
|
|||
return 0;
|
||||
}
|
||||
|
||||
AudioExportSpecification::AudioExportSpecification ()
|
||||
ExportSpecification::ExportSpecification ()
|
||||
{
|
||||
init ();
|
||||
}
|
||||
|
||||
AudioExportSpecification::~AudioExportSpecification ()
|
||||
ExportSpecification::~ExportSpecification ()
|
||||
{
|
||||
clear ();
|
||||
}
|
||||
|
||||
void
|
||||
AudioExportSpecification::init ()
|
||||
ExportSpecification::init ()
|
||||
{
|
||||
src_state = 0;
|
||||
pos = 0;
|
||||
|
@ -113,7 +113,7 @@ AudioExportSpecification::init ()
|
|||
}
|
||||
|
||||
void
|
||||
AudioExportSpecification::clear ()
|
||||
ExportSpecification::clear ()
|
||||
{
|
||||
if (out) {
|
||||
sf_close (out);
|
||||
|
@ -153,7 +153,7 @@ AudioExportSpecification::clear ()
|
|||
}
|
||||
|
||||
int
|
||||
AudioExportSpecification::prepare (nframes_t blocksize, nframes_t frate)
|
||||
ExportSpecification::prepare (nframes_t blocksize, nframes_t frate)
|
||||
{
|
||||
char errbuf[256];
|
||||
GDitherSize dither_size;
|
||||
|
@ -161,7 +161,7 @@ AudioExportSpecification::prepare (nframes_t blocksize, nframes_t frate)
|
|||
frame_rate = frate;
|
||||
|
||||
if (channels == 0) {
|
||||
error << _("illegal frame range in export specification") << endmsg;
|
||||
error << _("illegal channel count in export specification") << endmsg;
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
@ -258,7 +258,7 @@ AudioExportSpecification::prepare (nframes_t blocksize, nframes_t frate)
|
|||
}
|
||||
|
||||
int
|
||||
AudioExportSpecification::process (nframes_t nframes)
|
||||
ExportSpecification::process (nframes_t nframes)
|
||||
{
|
||||
float* float_buffer = 0;
|
||||
uint32_t chn;
|
||||
|
@ -426,7 +426,7 @@ AudioExportSpecification::process (nframes_t nframes)
|
|||
}
|
||||
|
||||
int
|
||||
Session::start_audio_export (AudioExportSpecification& spec)
|
||||
Session::start_export (ExportSpecification& spec)
|
||||
{
|
||||
if (!_engine.connected()) {
|
||||
return -1;
|
||||
|
@ -448,7 +448,7 @@ Session::start_audio_export (AudioExportSpecification& spec)
|
|||
}
|
||||
|
||||
int
|
||||
Session::stop_audio_export (AudioExportSpecification& spec)
|
||||
Session::stop_export (ExportSpecification& spec)
|
||||
{
|
||||
/* don't stop freewheeling but do stop paying attention to it for now */
|
||||
|
||||
|
@ -459,7 +459,7 @@ Session::stop_audio_export (AudioExportSpecification& spec)
|
|||
}
|
||||
|
||||
int
|
||||
Session::prepare_to_export (AudioExportSpecification& spec)
|
||||
Session::prepare_to_export (ExportSpecification& spec)
|
||||
{
|
||||
int ret = -1;
|
||||
|
||||
|
@ -521,7 +521,7 @@ Session::prepare_to_export (AudioExportSpecification& spec)
|
|||
}
|
||||
|
||||
int
|
||||
Session::process_export (nframes_t nframes, AudioExportSpecification* spec)
|
||||
Session::process_export (nframes_t nframes, ExportSpecification* spec)
|
||||
{
|
||||
uint32_t chn;
|
||||
uint32_t x;
|
||||
|
@ -551,7 +551,7 @@ Session::process_export (nframes_t nframes, AudioExportSpecification* spec)
|
|||
|
||||
if (!spec->running || spec->stop || (this_nframes = min ((spec->end_frame - spec->pos), nframes)) == 0) {
|
||||
process_without_events (nframes);
|
||||
return stop_audio_export (*spec);
|
||||
return stop_export (*spec);
|
||||
}
|
||||
|
||||
/* make sure we've caught up with disk i/o, since
|
||||
|
@ -574,7 +574,7 @@ Session::process_export (nframes_t nframes, AudioExportSpecification* spec)
|
|||
|
||||
for (chn = 0; chn < spec->channels; ++chn) {
|
||||
|
||||
AudioExportPortMap::iterator mi = spec->port_map.find (chn);
|
||||
ExportPortMap::iterator mi = spec->port_map.find (chn);
|
||||
|
||||
if (mi == spec->port_map.end()) {
|
||||
/* no ports exported to this channel */
|
||||
|
@ -588,17 +588,18 @@ Session::process_export (nframes_t nframes, AudioExportSpecification* spec)
|
|||
/* OK, this port's output is supposed to appear on this channel
|
||||
*/
|
||||
|
||||
AudioPort* const port = dynamic_cast<AudioPort*>((*t).first);
|
||||
if (port == 0) {
|
||||
cerr << "FIXME: Non-audio export" << endl;
|
||||
continue;
|
||||
}
|
||||
Sample* port_buffer = port->get_audio_buffer().data();
|
||||
AudioPort* const aport = dynamic_cast<AudioPort*>((*t).first);
|
||||
MidiPort* const mport = dynamic_cast<MidiPort*>((*t).first);
|
||||
if (aport != 0) {
|
||||
Sample* port_buffer = aport->get_audio_buffer().data();
|
||||
|
||||
/* now interleave the data from the channel into the float buffer */
|
||||
|
||||
for (x = 0; x < nframes; ++x) {
|
||||
spec->dataF[chn+(x*spec->channels)] += (float) port_buffer[x];
|
||||
/* now interleave the data from the channel into the float buffer */
|
||||
|
||||
for (x = 0; x < nframes; ++x) {
|
||||
spec->dataF[chn+(x*spec->channels)] += (float) port_buffer[x];
|
||||
}
|
||||
} else if (mport != 0) {
|
||||
cerr << "EXPORT MIDI PORT" << endl;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1141,16 +1141,16 @@ TempoMap::round_to_type (nframes_t frame, int dir, BBTPointType type)
|
|||
case Bar:
|
||||
if (dir < 0) {
|
||||
/* relax */
|
||||
|
||||
} else if (dir > 0) {
|
||||
if (bbt.beats > 0) {
|
||||
bbt.bars++;
|
||||
} else if (metric.frame() < frame) {
|
||||
bbt.bars++;
|
||||
}
|
||||
} else {
|
||||
if (bbt.beats > metric.meter().beats_per_bar()/2) {
|
||||
bbt.bars++;
|
||||
}
|
||||
|
||||
}
|
||||
bbt.beats = 1;
|
||||
bbt.ticks = 0;
|
||||
|
@ -1162,6 +1162,8 @@ TempoMap::round_to_type (nframes_t frame, int dir, BBTPointType type)
|
|||
} else if (dir > 0) {
|
||||
if (bbt.ticks > 0) {
|
||||
bbt.beats++;
|
||||
} else if (metric.frame() < frame) {
|
||||
bbt.beats++;
|
||||
}
|
||||
} else {
|
||||
if (bbt.ticks >= (Meter::ticks_per_beat/2)) {
|
||||
|
@ -1177,11 +1179,9 @@ TempoMap::round_to_type (nframes_t frame, int dir, BBTPointType type)
|
|||
|
||||
}
|
||||
|
||||
/*
|
||||
cerr << "for " << frame << " round to " << bbt << " using "
|
||||
<< metric.start()
|
||||
<< endl;
|
||||
*/
|
||||
cerr << "for " << frame << " round to " << bbt << " using "
|
||||
<< metric.start()
|
||||
<< endl;
|
||||
|
||||
return metric.frame() + count_frames_between (metric.start(), bbt);
|
||||
}
|
||||
|
|
|
@ -54,7 +54,7 @@ TransientDetector::use_features (Plugin::FeatureSet& features, ostream* out)
|
|||
if (out) {
|
||||
(*out) << (*f).timestamp.toString() << endl;
|
||||
}
|
||||
|
||||
|
||||
current_results->push_back (RealTime::realTime2Frame ((*f).timestamp, (nframes_t) floor(sample_rate)));
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue