part 2 of 3 of the 2.8 -> 3.0 merge

git-svn-id: svn://localhost/ardour2/branches/3.0@4987 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Paul Davis 2009-04-16 16:02:25 +00:00
parent 60eef7dd3e
commit a4b8955f3e
48 changed files with 1022 additions and 244 deletions

View file

@ -8,8 +8,9 @@
(gtk_accel_path "<Actions>/Transport/ToggleRoll" "space")
(gtk_accel_path "<Actions>/Transport/ToggleRollForgetCapture" "<%PRIMARY%>period")
(gtk_accel_path "<Actions>/Transport/record-roll" "<%PRIMARY%>space")
(gtk_accel_path "<Actions>/Editor/play-from-edit-point-and-return" "<%LEVEL4%>space")
(gtk_accel_path "<Actions>/Common/ToggleOptionsEditor" "<%PRIMARY%>,")
(gtk_accel_path "<Actions>/Common/ToggleOptionsEditor" "<%PRIMARY%>comma")
(gtk_accel_path "<Actions>/Editor/align-regions-end" "<%PRIMARY%><%SECONDARY%>less")
(gtk_accel_path "<Actions>/Editor/align-regions-end-relative" "<%PRIMARY%>less")
@ -82,7 +83,7 @@
(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>/Common/toggle-rhythm-ferret" "<%WINDOW%>f")
(gtk_accel_path "<Actions>/Editor/toggle-rhythm-ferret" "<%WINDOW%>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/nudge-backward" "g")
@ -121,6 +122,7 @@
(gtk_accel_path "<Actions>/Editor/editor-delete" "BackSpace")
(gtk_accel_path "<Actions>/Editor/remove-last-capture" "<%PRIMARY%>Delete")
(gtk_accel_path "<Actions>/Editor/playhead-to-previous-region-boundary-noselection" "<%LEVEL4%>leftarrow")
(gtk_accel_path "<Actions>/Editor/playhead-to-previous-region-boundary" "leftarrow")
(gtk_accel_path "<Actions>/Editor/playhead-backward-to-grid" "<%TERTIARY%><%LEVEL4%>leftarrow")
(gtk_accel_path "<Actions>/Editor/edit-cursor-to-previous-region-sync" "<%TERTIARY%><%SECONDARY%>leftarrow")
@ -131,6 +133,7 @@
(gtk_accel_path "<Actions>/Editor/selected-marker-to-previous-region-boundary" "<%PRIMARY%><%TERTIARY%>leftarrow")
(gtk_accel_path "<Actions>/Editor/playhead-to-next-region-boundary-noselection" "<%LEVEL4%>rightarrow")
(gtk_accel_path "<Actions>/Editor/playhead-to-next-region-boundary" "rightarrow")
(gtk_accel_path "<Actions>/Editor/playhead-forward-to-grid" "<%TERTIARY%><%LEVEL4%>rightarrow")
(gtk_accel_path "<Actions>/Editor/edit-cursor-to-next-region-sync" "<%TERTIARY%><%SECONDARY%>leftarrow")

View file

@ -8,8 +8,9 @@
(gtk_accel_path "<Actions>/Transport/ToggleRoll" "space")
(gtk_accel_path "<Actions>/Transport/ToggleRollForgetCapture" "<%PRIMARY%>period")
(gtk_accel_path "<Actions>/Transport/record-roll" "<%PRIMARY%>space")
(gtk_accel_path "<Actions>/Editor/play-from-edit-point-and-return" "<%LEVEL4%>space")
(gtk_accel_path "<Actions>/Common/ToggleOptionsEditor" "<%PRIMARY%>,")
(gtk_accel_path "<Actions>/Common/ToggleOptionsEditor" "<%PRIMARY%>comma")
(gtk_accel_path "<Actions>/Editor/align-regions-end" "<%PRIMARY%><%SECONDARY%>less")
(gtk_accel_path "<Actions>/Editor/align-regions-end-relative" "<%PRIMARY%>less")
@ -82,7 +83,7 @@
(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>/Common/toggle-rhythm-ferret" "<%SECONDARY%>f")
(gtk_accel_path "<Actions>/Editor/toggle-rhythm-ferret" "<%SECONDARY%>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/nudge-backward" "g")
@ -120,6 +121,7 @@
(gtk_accel_path "<Actions>/Editor/editor-delete" "BackSpace")
(gtk_accel_path "<Actions>/Editor/remove-last-capture" "<%PRIMARY%>BackSpace")
(gtk_accel_path "<Actions>/Editor/playhead-to-previous-region-boundary-noselection" "<%LEVEL4%>leftarrow")
(gtk_accel_path "<Actions>/Editor/playhead-to-previous-region-boundary" "leftarrow")
(gtk_accel_path "<Actions>/Editor/playhead-backward-to-grid" "<%TERTIARY%><%LEVEL4%>leftarrow")
(gtk_accel_path "<Actions>/Editor/edit-cursor-to-previous-region-sync" "<%TERTIARY%><%SECONDARY%>leftarrow")
@ -130,6 +132,7 @@
(gtk_accel_path "<Actions>/Editor/selected-marker-to-previous-region-boundary" "<%PRIMARY%><%TERTIARY%>leftarrow")
(gtk_accel_path "<Actions>/Editor/playhead-to-next-region-boundary-noselection" "<%LEVEL4%>rightarrow")
(gtk_accel_path "<Actions>/Editor/playhead-to-next-region-boundary" "rightarrow")
(gtk_accel_path "<Actions>/Editor/playhead-forward-to-grid" "<%TERTIARY%><%LEVEL4%>rightarrow")
(gtk_accel_path "<Actions>/Editor/edit-cursor-to-next-region-sync" "<%TERTIARY%><%SECONDARY%>leftarrow")

View file

@ -8,7 +8,8 @@
(gtk_accel_path "<Actions>/Transport/ToggleRoll" "space")
(gtk_accel_path "<Actions>/Transport/ToggleRollForgetCapture" "<%PRIMARY%>period")
(gtk_accel_path "<Actions>/Transport/record-roll" "<%PRIMARY%>space")
(gtk_accel_path "<Actions>/Editor/play-from-edit-point-and-return" "<%LEVEL4%>space")
(gtk_accel_path "<Actions>/Common/ToggleOptionsEditor" "<%PRIMARY%>comma")
(gtk_accel_path "<Actions>/Editor/align-regions-end" "<%PRIMARY%><%SECONDARY%>less")
(gtk_accel_path "<Actions>/Editor/align-regions-end-relative" "<%PRIMARY%>less")
(gtk_accel_path "<Actions>/Editor/align-regions-start" "<%LEVEL4%><%SECONDARY%>less")
@ -61,7 +62,6 @@
(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" "<%SECONDARY%>o")
(gtk_accel_path "<Actions>/Main/Open" "<%PRIMARY%>o")
(gtk_accel_path "<Actions>/Main/Recent" "<%PRIMARY%><%TERTIARY%>o")
(gtk_accel_path "<Actions>/Editor/naturalize-region" "<%LEVEL4%>o")
@ -81,7 +81,7 @@
(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>/Common/toggle-rhythm-ferret" "<%WINDOW%>f")
(gtk_accel_path "<Actions>/Editor/toggle-rhythm-ferret" "<%WINDOW%>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/nudge-backward" "g")
@ -120,6 +120,7 @@
(gtk_accel_path "<Actions>/Editor/editor-delete" "BackSpace")
(gtk_accel_path "<Actions>/Editor/remove-last-capture" "<%PRIMARY%>Delete")
(gtk_accel_path "<Actions>/Editor/playhead-to-previous-region-boundary-noselection" "<%LEVEL4%>leftarrow")
(gtk_accel_path "<Actions>/Editor/playhead-to-previous-region-boundary" "leftarrow")
(gtk_accel_path "<Actions>/Editor/playhead-backward-to-grid" "<%TERTIARY%><%LEVEL4%>leftarrow")
(gtk_accel_path "<Actions>/Editor/edit-cursor-to-previous-region-sync" "<%TERTIARY%><%SECONDARY%>leftarrow")
@ -130,6 +131,7 @@
(gtk_accel_path "<Actions>/Editor/selected-marker-to-previous-region-boundary" "<%PRIMARY%><%TERTIARY%>leftarrow")
(gtk_accel_path "<Actions>/Editor/playhead-to-next-region-boundary-noselection" "<%LEVEL4%>rightarrow")
(gtk_accel_path "<Actions>/Editor/playhead-to-next-region-boundary" "rightarrow")
(gtk_accel_path "<Actions>/Editor/playhead-forward-to-grid" "<%TERTIARY%><%LEVEL4%>rightarrow")
(gtk_accel_path "<Actions>/Editor/edit-cursor-to-next-region-sync" "<%TERTIARY%><%SECONDARY%>leftarrow")

View file

@ -8,7 +8,8 @@
(gtk_accel_path "<Actions>/Transport/ToggleRoll" "space")
(gtk_accel_path "<Actions>/Transport/ToggleRollForgetCapture" "<%PRIMARY%>period")
(gtk_accel_path "<Actions>/Transport/record-roll" "<%PRIMARY%>space")
(gtk_accel_path "<Actions>/Editor/play-from-edit-point-and-return" "<%LEVEL4%>space")
(gtk_accel_path "<Actions>/Common/ToggleOptionsEditor" "<%PRIMARY%>comma")
(gtk_accel_path "<Actions>/Editor/align-regions-end" "<%PRIMARY%><%SECONDARY%>less")
(gtk_accel_path "<Actions>/Editor/align-regions-end-relative" "<%PRIMARY%>less")
(gtk_accel_path "<Actions>/Editor/align-regions-start" "<%LEVEL4%><%SECONDARY%>less")
@ -61,7 +62,6 @@
(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" "<%SECONDARY%>o")
(gtk_accel_path "<Actions>/Main/Open" "<%PRIMARY%>o")
(gtk_accel_path "<Actions>/Main/Recent" "<%PRIMARY%><%TERTIARY%>o")
(gtk_accel_path "<Actions>/Editor/naturalize-region" "<%LEVEL4%>o")
@ -81,7 +81,7 @@
(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>/Common/toggle-rhythm-ferret" "<%SECONDARY%>f")
(gtk_accel_path "<Actions>/Editor/toggle-rhythm-ferret" "<%SECONDARY%>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/nudge-backward" "g")
@ -119,6 +119,7 @@
(gtk_accel_path "<Actions>/Editor/editor-delete" "BackSpace")
(gtk_accel_path "<Actions>/Editor/remove-last-capture" "<%PRIMARY%>BackSpace")
(gtk_accel_path "<Actions>/Editor/playhead-to-previous-region-boundary-noselection" "<%LEVEL4%>leftarrow")
(gtk_accel_path "<Actions>/Editor/playhead-to-previous-region-boundary" "leftarrow")
(gtk_accel_path "<Actions>/Editor/playhead-backward-to-grid" "<%TERTIARY%><%LEVEL4%>leftarrow")
(gtk_accel_path "<Actions>/Editor/edit-cursor-to-previous-region-sync" "<%TERTIARY%><%SECONDARY%>leftarrow")
@ -129,6 +130,7 @@
(gtk_accel_path "<Actions>/Editor/selected-marker-to-previous-region-boundary" "<%PRIMARY%><%TERTIARY%>leftarrow")
(gtk_accel_path "<Actions>/Editor/playhead-to-next-region-boundary-noselection" "<%LEVEL4%>rightarrow")
(gtk_accel_path "<Actions>/Editor/playhead-to-next-region-boundary" "rightarrow")
(gtk_accel_path "<Actions>/Editor/playhead-forward-to-grid" "<%TERTIARY%><%LEVEL4%>rightarrow")
(gtk_accel_path "<Actions>/Editor/edit-cursor-to-next-region-sync" "<%TERTIARY%><%SECONDARY%>leftarrow")

View file

@ -56,8 +56,8 @@ gtkardour.Merge ([
libraries['sndfile'],
libraries['taglib'],
libraries['sysmidi'],
libraries['vamp'],
libraries['vamphost'],
libraries['vamp'],
libraries['xml'],
libraries['xslt']
])

View file

@ -80,6 +80,8 @@
<separator/>
<menuitem action='playhead-to-next-region-boundary'/>
<menuitem action='playhead-to-previous-region-boundary'/>
<menuitem action='playhead-to-next-region-boundary-noselection'/>
<menuitem action='playhead-to-previous-region-boundary-noselection'/>
<menuitem action='playhead-to-next-region-sync'/>
<menuitem action='playhead-to-previous-region-sync'/>
<separator/>

View file

@ -3688,7 +3688,7 @@ Editor::freeze_route ()
pthread_attr_init(&attr);
pthread_attr_setstacksize(&attr, 500000);
pthread_create (&itt.thread, &attr, _freeze_thread, this);
pthread_create_and_store (X_("freezer"), &itt.thread, &attr, _freeze_thread, this);
pthread_attr_destroy(&attr);

View file

@ -14,7 +14,7 @@
(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>/processormenu/copy" "")
; (gtk_accel_path "<Actions>/redirectmenu/copy" "")
; (gtk_accel_path "<Actions>/options/MeterFalloffFaster" "")
(gtk_accel_path "<Actions>/Transport/ToggleRollForgetCapture" "<%PRIMARY%>space")
(gtk_accel_path "<Actions>/Transport/record-roll" "<%TERTIARY%>space")
@ -22,7 +22,7 @@
; (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>/redirectmenu/deactivate_all" "")
; (gtk_accel_path "<Actions>/RegionList/SortByRegionPosition" "")
; (gtk_accel_path "<Actions>/Editor/ZoomFocus" "")
(gtk_accel_path "<Actions>/Editor/addExistingAudioFiles" "<%SECONDARY%>i")
@ -34,7 +34,7 @@
; (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>/redirectmenu/deactivate" "")
; (gtk_accel_path "<Actions>/options/LatchedRecordEnable" "")
; (gtk_accel_path "<Actions>/Transport/TogglePunchIn" "")
; (gtk_accel_path "<Actions>/ShuttleActions/SetShuttleUnitsPercentage" "")
@ -103,8 +103,8 @@
(gtk_accel_path "<Actions>/Editor/playhead-to-previous-region-boundary" "leftarrow")
(gtk_accel_path "<Actions>/Editor/selected-marker-to-previous-region-boundary" "<%PRIMARY%><%TERTIARY%>leftarrow")
; (gtk_accel_path "<Actions>/Editor/EditCursorMovementOptions" "")
; (gtk_accel_path "<Actions>/processormenu/activate_all" "")
; (gtk_accel_path "<Actions>/processormenu/paste" "")
; (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" "")
@ -128,7 +128,7 @@
(gtk_accel_path "<Actions>/Editor/align-regions-sync" "less")
; (gtk_accel_path "<Actions>/Editor/EditSelectRegionOptions" "")
(gtk_accel_path "<Actions>/Editor/crop" "c")
; (gtk_accel_path "<Actions>/processormenu/newsend" "")
; (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" "")
@ -141,7 +141,7 @@
; (gtk_accel_path "<Actions>/Snap/snap-to-minutes" "")
; (gtk_accel_path "<Actions>/Main/Windows" "")
; (gtk_accel_path "<Actions>/Main/CleanupUnused" "")
; (gtk_accel_path "<Actions>/processormenu/deselectall" "")
; (gtk_accel_path "<Actions>/redirectmenu/deselectall" "")
; (gtk_accel_path "<Actions>/options/SoloViaBus" "")
; (gtk_accel_path "<Actions>/RegionList/rlAudition" "")
(gtk_accel_path "<Actions>/Editor/set-region-sync-position" "u")
@ -206,7 +206,7 @@
(gtk_accel_path "<Actions>/Editor/temporal-zoom-in" "t")
; (gtk_accel_path "<Actions>/JACK/Latency" "")
(gtk_accel_path "<Actions>/Editor/edit-cursor-to-range-end" "<%TERTIARY%>F2")
; (gtk_accel_path "<Actions>/processormenu/rename" "")
; (gtk_accel_path "<Actions>/redirectmenu/rename" "")
; (gtk_accel_path "<Actions>/RegionList/rlShowAuto" "")
(gtk_accel_path "<Actions>/Editor/select-all-before-playhead" "<%PRIMARY%>p")
; (gtk_accel_path "<Actions>/Main/Session" "")
@ -231,7 +231,7 @@
; (gtk_accel_path "<Actions>/Editor/PullupMinus4" "")
(gtk_accel_path "<Actions>/Common/goto-mixer" "<%WINDOW%>m")
; (gtk_accel_path "<Actions>/RegionList/SortBySourceFileCreationDate" "")
; (gtk_accel_path "<Actions>/processormenu/activate" "")
; (gtk_accel_path "<Actions>/redirectmenu/activate" "")
(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" "")
@ -239,7 +239,7 @@
(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>/redirectmenu/edit" "")
(gtk_accel_path "<Actions>/Editor/duplicate-region" "d")
(gtk_accel_path "<Actions>/Editor/multi-duplicate-region" "<%SECONDARY%>d")
; (gtk_accel_path "<Actions>/JACK/JACKLatency2048" "")
@ -249,8 +249,8 @@
; (gtk_accel_path "<Actions>/options/FileHeaderFormatWAVE" "")
(gtk_accel_path "<Actions>/Transport/GotoZero" "KP_0")
(gtk_accel_path "<Actions>/Editor/select-all-after-edit-cursor" "<%TERTIARY%>End")
; (gtk_accel_path "<Actions>/processormenu/cut" "")
; (gtk_accel_path "<Actions>/processormenu/newinsert" "")
; (gtk_accel_path "<Actions>/redirectmenu/cut" "")
; (gtk_accel_path "<Actions>/redirectmenu/newinsert" "")
; (gtk_accel_path "<Actions>/options/UseMMC" "")
; (gtk_accel_path "<Actions>/options/MeterFalloffOff" "")
;(gtk_accel_path "<Actions>/MouseMode/set-mouse-mode-object" "o")
@ -295,7 +295,7 @@
; (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>/redirectmenu/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" "r")
@ -306,12 +306,12 @@
; (gtk_accel_path "<Actions>/options/OutputAutoConnectManual" "")
; (gtk_accel_path "<Actions>/Snap/snap-to-region-sync" "")
(gtk_accel_path "<Actions>/Editor/edit-cursor-to-previous-region-sync" "apostrophe")
; (gtk_accel_path "<Actions>/processormenu/clear" "")
; (gtk_accel_path "<Actions>/redirectmenu/clear" "")
; (gtk_accel_path "<Actions>/Editor/ToggleGeneric MIDISurfaceFeedback" "")
; (gtk_accel_path "<Actions>/Editor/PullupPlus4Minus1" "")
; (gtk_accel_path "<Actions>/JACK/JACKLatency512" "")
; (gtk_accel_path "<Actions>/Main/Recent" "")
; (gtk_accel_path "<Actions>/processormenu/newplugin" "")
; (gtk_accel_path "<Actions>/redirectmenu/newplugin" "")
; (gtk_accel_path "<Actions>/options/InputAutoConnectManual" "")
; (gtk_accel_path "<Actions>/options/MeterHoldLong" "")
; (gtk_accel_path "<Actions>/Snap/snap-to-seconds" "")

View file

@ -98,7 +98,6 @@
(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" "z")
(gtk_accel_path "<Actions>/MouseMode/set-mouse-mode-note" "n")
(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")
@ -106,8 +105,8 @@
(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" "<%SECONDARY%>n")
(gtk_accel_path "<Actions>/Editor/mute-unmute-region" "<%SECONDARY%>m")
(gtk_accel_path "<Actions>/Editor/normalize-region" "n")
(gtk_accel_path "<Actions>/Editor/mute-unmute-region" "m")
(gtk_accel_path "<Actions>/Common/toggle-editor-mixer-on-top" "<%WINDOW%>m")
;; arrow keys, navigation etc.
@ -123,12 +122,14 @@
(gtk_accel_path "<Actions>/Editor/move-selected-tracks-down" "<%PRIMARY%>downarrow")
(gtk_accel_path "<Actions>/Editor/playhead-to-previous-region-boundary" "leftarrow")
(gtk_accel_path "<Actions>/Editor/playhead-to-previous-region-boundary-noselection" "<%LEVEL4%>leftarrow")
(gtk_accel_path "<Actions>/Editor/tab-to-transient-backwards" "<%PRIMARY%>leftarrow")
(gtk_accel_path "<Actions>/Editor/nudge-playhead-backward" "<%SECONDARY%>leftarrow")
(gtk_accel_path "<Actions>/Transport/Rewind" "<%TERTIARY%>leftarrow")
(gtk_accel_path "<Actions>/Editor/selected-marker-to-previous-region-boundary" "<%PRIMARY%><%TERTIARY%>leftarrow")
(gtk_accel_path "<Actions>/Editor/playhead-to-next-region-boundary" "rightarrow")
(gtk_accel_path "<Actions>/Editor/playhead-to-next-region-boundary-noselection" "<%LEVEL4%>rightarrow")
(gtk_accel_path "<Actions>/Editor/tab-to-transient-forwards" "<%PRIMARY%>rightarrow")
(gtk_accel_path "<Actions>/Editor/nudge-playhead-forward" "<%SECONDARY%>rightarrow")
(gtk_accel_path "<Actions>/Transport/Forward" "<%TERTIARY%>rightarrow")
@ -229,7 +230,7 @@
; (gtk_accel_path "<Actions>/RegionList/RegionListSort" "")
; (gtk_accel_path "<Actions>/Main/Windows" "")
; (gtk_accel_path "<Actions>/Main/CleanupUnused" "")
; (gtk_accel_path "<Actions>/processormenu/deselectall" "")
; (gtk_accel_path "<Actions>/redirectmenu/deselectall" "")
; (gtk_accel_path "<Actions>/options/SoloViaBus" "")
; (gtk_accel_path "<Actions>/RegionList/rlAudition" "")
; (gtk_accel_path "<Actions>/Editor/PullupPlus4Plus1" "")
@ -273,7 +274,7 @@
; (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>/processormenu/rename" "")
; (gtk_accel_path "<Actions>/redirectmenu/rename" "")
; (gtk_accel_path "<Actions>/RegionList/rlShowAuto" "")
; (gtk_accel_path "<Actions>/Main/Session" "")
; (gtk_accel_path "<Actions>/Main/AudioFileFormat" "")
@ -291,17 +292,17 @@
; (gtk_accel_path "<Actions>/Editor/SnapMode" "")
; (gtk_accel_path "<Actions>/Editor/PullupMinus4" "")
; (gtk_accel_path "<Actions>/RegionList/SortBySourceFileCreationDate" "")
; (gtk_accel_path "<Actions>/processormenu/activate" "")
; (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>/processormenu/edit" "")
; (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>/processormenu/cut" "")
; (gtk_accel_path "<Actions>/processormenu/newinsert" "")
; (gtk_accel_path "<Actions>/redirectmenu/cut" "")
; (gtk_accel_path "<Actions>/redirectmenu/newinsert" "")
; (gtk_accel_path "<Actions>/options/UseMMC" "")
; (gtk_accel_path "<Actions>/options/MeterFalloffOff" "")
; (gtk_accel_path "<Actions>/Editor/PullupMinus4Plus1" "")
@ -335,18 +336,18 @@
; (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>/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>/processormenu/clear" "")
; (gtk_accel_path "<Actions>/redirectmenu/clear" "")
; (gtk_accel_path "<Actions>/Editor/ToggleGeneric MIDISurfaceFeedback" "")
; (gtk_accel_path "<Actions>/Editor/PullupPlus4Minus1" "")
; (gtk_accel_path "<Actions>/JACK/JACKLatency512" "")
; (gtk_accel_path "<Actions>/Main/Recent" "")
; (gtk_accel_path "<Actions>/processormenu/newplugin" "")
; (gtk_accel_path "<Actions>/redirectmenu/newplugin" "")
; (gtk_accel_path "<Actions>/options/InputAutoConnectManual" "")
; (gtk_accel_path "<Actions>/options/MeterHoldLong" "")
; (gtk_accel_path "<Actions>/Snap/snap-to-seconds" "")
@ -357,12 +358,12 @@
; (gtk_accel_path "<Actions>/JACK/JACKReconnect" "")
; (gtk_accel_path "<Actions>/Editor/Autoconnect" "")
; (gtk_accel_path "<Actions>/Editor/Edit" "")
; (gtk_accel_path "<Actions>/processormenu/copy" "")
; (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>/processormenu/deactivate_all" "")
; (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" "")
@ -371,7 +372,7 @@
; (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>/redirectmenu/deactivate" "")
; (gtk_accel_path "<Actions>/options/LatchedRecordEnable" "")
; (gtk_accel_path "<Actions>/Transport/TogglePunchIn" "")
; (gtk_accel_path "<Actions>/ShuttleActions/SetShuttleUnitsPercentage" "")
@ -418,8 +419,8 @@
; (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>/processormenu/paste" "")
; (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" "")
@ -437,7 +438,7 @@
; (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>/processormenu/newsend" "")
; (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" "")

View file

@ -136,8 +136,8 @@ PluginUIWindow::PluginUIWindow (Gtk::Window* win, boost::shared_ptr<PluginInsert
add_events (Gdk::KEY_PRESS_MASK|Gdk::KEY_RELEASE_MASK|Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK);
signal_delete_event().connect (bind (sigc::ptr_fun (just_hide_it), reinterpret_cast<Window*> (this)), false);
insert->GoingAway.connect (mem_fun(*this, &PluginUIWindow::plugin_going_away));
death_connection = insert->GoingAway.connect (mem_fun(*this, &PluginUIWindow::plugin_going_away));
gint h = _pluginui->get_preferred_height ();
gint w = _pluginui->get_preferred_width ();
@ -155,6 +155,7 @@ PluginUIWindow::PluginUIWindow (Gtk::Window* win, boost::shared_ptr<PluginInsert
PluginUIWindow::~PluginUIWindow ()
{
delete _pluginui;
}
void
@ -333,6 +334,9 @@ PluginUIWindow::plugin_going_away ()
if (_pluginui) {
_pluginui->stop_updating(0);
}
death_connection.disconnect ();
delete_when_idle (this);
}
@ -383,6 +387,10 @@ PlugUIBase::PlugUIBase (boost::shared_ptr<PluginInsert> pi)
plugin_eq_bin.set_expanded(true);
}
PlugUIBase::~PlugUIBase()
{
}
void
PlugUIBase::processor_active_changed (boost::weak_ptr<Processor> weak_p)
{

View file

@ -71,7 +71,7 @@ class PlugUIBase : public virtual sigc::trackable
{
public:
PlugUIBase (boost::shared_ptr<ARDOUR::PluginInsert>);
virtual ~PlugUIBase() {}
virtual ~PlugUIBase();
virtual gint get_preferred_height () = 0;
virtual gint get_preferred_width () = 0;
@ -241,6 +241,7 @@ class PluginUIWindow : public Gtk::Window
private:
PlugUIBase* _pluginui;
sigc::connection death_connection;
Gtk::Window* parent;
Gtk::VBox vbox;
bool non_gtk_gui;

View file

@ -20,7 +20,7 @@
#include <fst.h>
#include <gtk/gtk.h>
#include <gtk/gtksocket.h>
#include "ardour/processor.h"
#include "ardour/insert.h"
#include "ardour/vst_plugin.h"
#include "plugin_ui.h"
@ -35,24 +35,36 @@ VSTPluginUI::VSTPluginUI (boost::shared_ptr<PluginInsert> pi, boost::shared_ptr<
: PlugUIBase (pi),
vst (vp)
{
create_preset_store ();
fst_run_editor (vst->fst());
preset_box.set_spacing (6);
preset_box.set_border_width (6);
preset_box.pack_end (bypass_button, false, false, 10);
preset_box.pack_end (save_button, false, false);
preset_box.pack_end (preset_combo, false, false);
preset_box.pack_end (eqgui_toggle, false, false);
preset_box.pack_end (vst_preset_combo, false, false);
vst_preset_combo.signal_changed().connect (mem_fun (*this, &VSTPluginUI::preset_chosen));
bypass_button.set_active (!insert->active());
pack_start (preset_box, false, false);
pack_start (socket, true, true);
pack_start (plugin_eq_bin, true, true);
}
VSTPluginUI::~VSTPluginUI ()
{
// nothing to do here - plugin destructor destroys the GUI
// plugin destructor destroys the custom GUI, via Windows fun-and-games,
// and then our PluginUIWindow does the rest
}
void
VSTPluginUI::preset_chosen ()
{
// we can't dispatch directly here, too many plugins only expects one GUI thread.
vst->fst()->want_program = vst_preset_combo.get_active_row_number ();
socket.grab_focus ();
}
int
@ -124,28 +136,68 @@ VSTPluginUI::configure_handler (GdkEventConfigure* ev, Gtk::Socket *socket)
return false;
}
void
VSTPluginUI::create_preset_store ()
{
FST *fst = vst->fst();
int vst_version = fst->plugin->dispatcher (fst->plugin, effGetVstVersion, 0, 0, NULL, 0.0f);
preset_model = ListStore::create (preset_columns);
for (int i = 0; i < fst->plugin->numPrograms; ++i) {
char buf[100];
TreeModel::Row row = *(preset_model->append());
snprintf (buf, 90, "preset %d", i);
if (vst_version >= 2) {
fst->plugin->dispatcher (fst->plugin, 29, i, 0, buf, 0.0);
}
row[preset_columns.name] = buf;
row[preset_columns.number] = i;
}
if (fst->plugin->numPrograms > 0) {
fst->plugin->dispatcher( fst->plugin, effSetProgram, 0, 0, NULL, 0.0 );
}
vst_preset_combo.set_model (preset_model);
CellRenderer* renderer = manage (new CellRendererText());
vst_preset_combo.pack_start (*renderer, true);
vst_preset_combo.add_attribute (*renderer, "text", 0);
if (vst->fst()->current_program != -1) {
vst_preset_combo.set_active (vst->fst()->current_program);
} else {
vst_preset_combo.set_active (0);
}
}
typedef int (*error_handler_t)( Display *, XErrorEvent *);
static Display *the_gtk_display;
static error_handler_t wine_error_handler;
static error_handler_t gtk_error_handler;
static int
static int
fst_xerror_handler( Display *disp, XErrorEvent *ev )
{
if (disp == the_gtk_display) {
printf ("relaying error to gtk\n");
return gtk_error_handler (disp, ev);
} else {
printf( "relaying error to wine\n" );
return wine_error_handler (disp, ev);
}
if (disp == the_gtk_display) {
printf ("relaying error to gtk\n");
return gtk_error_handler (disp, ev);
} else {
printf( "relaying error to wine\n" );
return wine_error_handler (disp, ev);
}
}
void
gui_init (int *argc, char **argv[])
{
wine_error_handler = XSetErrorHandler (NULL);
gtk_init (argc, argv);
the_gtk_display = gdk_x11_display_get_xdisplay (gdk_display_get_default());
gtk_error_handler = XSetErrorHandler( fst_xerror_handler );
wine_error_handler = XSetErrorHandler (NULL);
gtk_init (argc, argv);
the_gtk_display = gdk_x11_display_get_xdisplay (gdk_display_get_default());
gtk_error_handler = XSetErrorHandler( fst_xerror_handler );
}

View file

@ -28,6 +28,7 @@
#include <set>
#include <string>
#include <vector>
#include <map>
#include "ardour/plugin.h"
@ -63,13 +64,13 @@ class AUPlugin : public ARDOUR::Plugin
AUPlugin (const AUPlugin& other);
virtual ~AUPlugin ();
std::string unique_id () const;
std::string unique_id () const;
const char * label () const;
const char * name () const { return _info->name.c_str(); }
const char * maker () const { return _info->creator.c_str(); }
uint32_t parameter_count () const;
float default_value (uint32_t port);
nframes_t signal_latency () const;
nframes_t latency () const;
void set_parameter (uint32_t which, float val);
float get_parameter (uint32_t which) const;
@ -79,8 +80,7 @@ class AUPlugin : public ARDOUR::Plugin
void deactivate ();
void set_block_size (nframes_t nframes);
int connect_and_run (BufferSet& bufs, uint32_t& in, uint32_t& out, nframes_t nframes, nframes_t offset);
int connect_and_run (vector<Sample*>& bufs, uint32_t maxbuf, int32_t& in, int32_t& out, nframes_t nframes, nframes_t offset);
std::set<uint32_t> automatable() const;
string describe_parameter (uint32_t);
string state_node_name () const { return "audiounit"; }
@ -97,15 +97,14 @@ class AUPlugin : public ARDOUR::Plugin
bool save_preset (string name);
bool load_preset (const string preset_label);
std::vector<std::string> get_presets ();
std::string current_preset() const;
bool has_editor () const;
bool reconfigurable_io() const { return true; }
bool can_support_io_configuration (const ChanCount& in, ChanCount& out) const;
int32_t count_for_configuration (const ChanCount& in, ChanCount out) const;
bool configure_io (ChanCount in, ChanCount& out);
ChanCount output_streams() const;
ChanCount input_streams() const;
int32_t can_do (int32_t in, int32_t& out);
uint32_t output_streams() const;
uint32_t input_streams() const;
int32_t configure_io (int32_t in, int32_t out);
boost::shared_ptr<CAAudioUnit> get_au () { return unit; }
boost::shared_ptr<CAComponent> get_comp () const { return comp; }
@ -118,13 +117,18 @@ class AUPlugin : public ARDOUR::Plugin
private:
boost::shared_ptr<CAComponent> comp;
boost::shared_ptr<CAAudioUnit> unit;
bool initialized;
int32_t input_channels;
int32_t output_channels;
std::vector<std::pair<int,int> > io_configs;
AudioBufferList* buffers;
/* XXX this should really be shared across all AUPlugin instances */
typedef std::map<std::string,std::string> PresetMap;
PresetMap preset_map;
UInt32 global_elements;
UInt32 output_elements;
UInt32 input_elements;
@ -144,7 +148,6 @@ class AUPlugin : public ARDOUR::Plugin
std::vector<AUParameterDescriptor> descriptors;
void init ();
};
typedef boost::shared_ptr<AUPlugin> AUPluginPtr;
@ -171,9 +174,10 @@ class AUPluginInfo : public PluginInfo {
private:
boost::shared_ptr<CAComponentDescription> descriptor;
UInt32 version;
static void discover_music (PluginInfoList&);
static void discover_fx (PluginInfoList&);
static void discover_generators (PluginInfoList&);
static void discover_by_description (PluginInfoList&, CAComponentDescription&);
static Glib::ustring au_cache_path ();

View file

@ -24,7 +24,7 @@
#include <string>
#include <ostream>
#include <fstream>
#include <vamp-sdk/Plugin.h>
#include "vamp-sdk/Plugin.h"
#include <boost/utility.hpp>
#include "ardour/audioregion.h"

View file

@ -20,6 +20,8 @@
#ifndef __ardour_chan_count_h__
#define __ardour_chan_count_h__
#include <ostream>
#include "ardour/data_type.h"
#include <cassert>
@ -109,8 +111,9 @@ private:
uint32_t _counts[DataType::num_types];
};
} // namespace ARDOUR
std::ostream& operator<<(std::ostream& o, const ARDOUR::ChanCount& c);
#endif // __ardour_chan_count_h__

View file

@ -1054,6 +1054,10 @@ class Session : public PBD::StatefulDestructible, public boost::noncopyable
void process_export (nframes_t);
int process_export_fw (nframes_t);
void block_processing() { g_atomic_int_set (&processing_prohibited, 1); }
void unblock_processing() { g_atomic_int_set (&processing_prohibited, 0); }
bool processing_blocked() const { return g_atomic_int_get (&processing_prohibited); }
/* slave tracking */
static const int delta_accumulator_size = 25;

File diff suppressed because it is too large Load diff

View file

@ -1,5 +1,7 @@
#include <cstring>
#include "vamp-hostsdk/PluginLoader.h"
#include <glibmm/miscutils.h>
#include <glibmm/fileutils.h>
#include <glib/gstdio.h> // for g_remove()

View file

@ -44,5 +44,8 @@ infinity_factory()
const ChanCount ChanCount::INFINITE = infinity_factory();
const ChanCount ChanCount::ZERO = ChanCount();
} // namespace ARDOUR
std::ostream& operator<<(std::ostream& o, const ARDOUR::ChanCount& c) {
return o << "AUDIO=" << c.n_audio() << ":MIDI=" << c.n_midi();
}

View file

@ -363,6 +363,9 @@ ARDOUR::cleanup ()
delete Library;
lrdf_cleanup ();
delete &ControlProtocolManager::instance();
#ifdef VST_SUPPORT
fst_exit ();
#endif
return 0;
}

View file

@ -39,6 +39,7 @@
#include "ardour/region_factory.h"
#include "ardour/filter.h"
#include "ardour/profile.h"
#include "ardour/utils.h"
#include "i18n.h"

View file

@ -4085,7 +4085,9 @@ Session::write_one_track (AudioTrack& track, nframes_t start, nframes_t end,
// any bigger than this seems to cause stack overflows in called functions
const nframes_t chunk_size = (128 * 1024)/4;
g_atomic_int_set (&processing_prohibited, 1);
// block all process callback handling
block_processing ();
/* call tree *MUST* hold route_lock */
@ -4211,7 +4213,7 @@ Session::write_one_track (AudioTrack& track, nframes_t start, nframes_t end,
}
}
g_atomic_int_set (&processing_prohibited, 0);
unblock_processing ();
return result;
}

View file

@ -58,12 +58,17 @@ Session::process (nframes_t nframes)
_silent = false;
if (processing_blocked()) {
_silent = true;
return;
}
if (non_realtime_work_pending()) {
if (!transport_work_requested ()) {
post_transport ();
}
}
(this->*process_function) (nframes);
// the ticker is for sending time information like MidiClock
@ -100,13 +105,6 @@ Session::no_roll (nframes_t nframes, nframes_t offset)
_click_io->silence (nframes, offset);
}
if (g_atomic_int_get (&processing_prohibited)) {
for (RouteList::iterator i = r->begin(); i != r->end(); ++i) {
(*i)->silence (nframes, offset);
}
return 0;
}
for (RouteList::iterator i = r->begin(); i != r->end(); ++i) {
if ((*i)->is_hidden()) {
@ -432,7 +430,7 @@ Session::process_with_events (nframes_t nframes)
/* if an event left our state changing, do the right thing */
if (non_realtime_work_pending()) {
if (nframes && non_realtime_work_pending()) {
no_roll (nframes, offset);
break;
}
@ -947,9 +945,7 @@ Session::maybe_sync_start (nframes_t& nframes, nframes_t& offset)
with any fancy stuff here, just the minimal silence.
*/
g_atomic_int_inc (&processing_prohibited);
no_roll (nframes, 0);
g_atomic_int_dec_and_test (&processing_prohibited);
_silent = true;
if (Config->get_locate_while_waiting_for_sync()) {
if (micro_locate (nframes)) {

View file

@ -21,16 +21,19 @@
#include <cstdio>
#include <fst.h>
#include <fst/vestige/aeffectx.h>
#include "ardour/session.h"
#include "ardour/tempo.h"
#include "ardour/vst_plugin.h"
#include "i18n.h"
// #define DEBUG_CALLBACKS
#define DEBUG_CALLBACKS
static int debug_callbacks = -1;
#ifdef DEBUG_CALLBACKS
#define SHOW_CALLBACK printf
#define SHOW_CALLBACK if (debug_callbacks) printf
#else
#define SHOW_CALLBACK(...)
#endif
@ -48,14 +51,18 @@ long Session::vst_callback (AEffect* effect,
VSTPlugin* plug;
Session* session;
SHOW_CALLBACK ("am callback, opcode = %d", opcode);
if (debug_callbacks < 0) {
debug_callbacks = (getenv ("ARDOUR_DEBUG_VST_CALLBACKS") != 0);
}
if (effect && effect->user) {
plug = (VSTPlugin*) (effect->user);
plug = (VSTPlugin*) (effect->user);
session = &plug->session();
SHOW_CALLBACK ("am callback 0x%x, opcode = %ld, plugin = \"%s\" ", pthread_self(), opcode, plug->name());
} else {
plug = 0;
session = 0;
SHOW_CALLBACK ("am callback 0x%x, opcode = %ld", pthread_self(), opcode);
}
switch(opcode){
@ -112,7 +119,25 @@ long Session::vst_callback (AEffect* effect,
if (session) {
_timeInfo.samplePos = session->transport_frame();
_timeInfo.sampleRate = session->frame_rate();
_timeInfo.flags = 0;
if (value & (kVstTempoValid)) {
const Tempo& t (session->tempo_map().tempo_at (session->transport_frame()));
_timeInfo.tempo = t.beats_per_minute ();
_timeInfo.flags |= (kVstTempoValid);
}
if (value & (kVstBarsValid)) {
const Meter& m (session->tempo_map().meter_at (session->transport_frame()));
_timeInfo.timeSigNumerator = m.beats_per_bar ();
_timeInfo.timeSigDenominator = m.note_divisor ();
_timeInfo.flags |= (kVstBarsValid);
}
if (session->transport_speed() != 0.0f) {
_timeInfo.flags |= kVstTransportPlaying;
}
}
return (long)&_timeInfo;
case audioMasterProcessEvents:
@ -127,7 +152,13 @@ long Session::vst_callback (AEffect* effect,
case audioMasterTempoAt:
SHOW_CALLBACK ("amc: audioMasterTempoAt\n");
// returns tempo (in bpm * 10000) at sample frame location passed in <value>
return 0;
if (session) {
const Tempo& t (session->tempo_map().tempo_at (value));
return t.beats_per_minute() * 1000;
} else {
return 0;
}
break;
case audioMasterGetNumAutomatableParameters:
SHOW_CALLBACK ("amc: audioMasterGetNumAutomatableParameters\n");
@ -147,7 +178,10 @@ long Session::vst_callback (AEffect* effect,
case audioMasterNeedIdle:
SHOW_CALLBACK ("amc: audioMasterNeedIdle\n");
// plug needs idle calls (outside its editor window)
// plug needs idle calls (outside its editor window)
if (plug) {
plug->fst()->wantIdle = 1;
}
return 0;
case audioMasterSizeWindow:
@ -157,10 +191,16 @@ long Session::vst_callback (AEffect* effect,
case audioMasterGetSampleRate:
SHOW_CALLBACK ("amc: audioMasterGetSampleRate\n");
if (session) {
return session->frame_rate();
}
return 0;
case audioMasterGetBlockSize:
SHOW_CALLBACK ("amc: audioMasterGetBlockSize\n");
if (session) {
return session->get_block_size();
}
return 0;
case audioMasterGetInputLatency:
@ -305,7 +345,7 @@ long Session::vst_callback (AEffect* effect,
return 0;
default:
SHOW_CALLBACK ("VST master dispatcher: undefed: %d, %d\n", opcode, effKeysRequired);
SHOW_CALLBACK ("VST master dispatcher: undefed: %d\n", opcode);
break;
}

View file

@ -147,40 +147,31 @@ VSTPlugin::get_state()
XMLNode *root = new XMLNode (state_node_name());
LocaleGuard lg (X_("POSIX"));
if (_fst->current_program != -1) {
char buf[32];
snprintf (buf, sizeof (buf), "%d", _fst->current_program);
root->add_property ("current-program", buf);
}
if (_plugin->flags & 32 /* effFlagsProgramsChunks */) {
/* fetch the current chunk */
void* data;
guchar* data;
long data_size;
if ((data_size = _plugin->dispatcher (_plugin, 23 /* effGetChunk */, 0, 0, &data, false)) == 0) {
return *root;
}
/* save it to a file */
sys::path user_vst_directory(user_config_directory());
user_vst_directory /= "vst";
try {
sys::create_directories (user_vst_directory);
}
catch (const sys::filesystem_error& ex)
{
error << "Could not create user configuration directory" << endmsg;
return *root;
}
sys::path file (user_vst_directory);
file /= "something";
/* store information */
XMLNode* chunk_node = new XMLNode (X_("chunk"));
chunk_node->add_property ("path", file.to_string());
gchar * encoded_data = g_base64_encode (data, data_size);
chunk_node->add_content (encoded_data);
g_free (encoded_data);
root->add_child_nocopy (*chunk_node);
} else {
@ -211,11 +202,30 @@ VSTPlugin::set_state(const XMLNode& node)
return 0;
}
const XMLProperty* prop;
if ((prop = node.property ("current-program")) != 0) {
_fst->current_program = atoi (prop->value());
}
XMLNode* child;
int ret = -1;
if ((child = find_named_node (node, X_("chunk"))) != 0) {
if ((child = find_named_node (node, X_("chunks"))) != 0) {
XMLPropertyList::const_iterator i;
XMLNodeList::const_iterator n;
int ret = -1;
return 0;
for (n = child->children ().begin (); n != child->children ().end (); ++n) {
if ((*n)->is_content ()) {
gsize chunk_size = 0;
guchar * data = g_base64_decode ((*n)->content ().c_str (), &chunk_size);
//cerr << "Dispatch setChunk for " << name() << endl;
ret = _plugin->dispatcher (_plugin, 24 /* effSetChunk */, 0, chunk_size, data, 0);
g_free (data);
}
}
} else if ((child = find_named_node (node, X_("parameters"))) != 0) {
@ -231,10 +241,15 @@ VSTPlugin::set_state(const XMLNode& node)
_plugin->setParameter (_plugin, param, val);
}
return 0;
/* program number is not knowable */
_fst->current_program = -1;
ret = 0;
}
return -1;
return ret;
}
int
@ -244,6 +259,7 @@ VSTPlugin::get_parameter_descriptor (uint32_t which, ParameterDescriptor& desc)
desc.min_unbound = false;
desc.max_unbound = false;
prop.flags = 0;
if (_plugin->dispatcher (_plugin, effGetParameterProperties, which, 0, &prop, 0)) {

View file

@ -65,6 +65,9 @@ pbd.Merge ([ libraries['sigc2'],
libraries['glib2'],
libraries['boost'] ])
if pbd['VST']:
pbd.Append(CCFLAGS="-DWINE_THREAD_SUPPORT", CPPPATH="#libs/fst")
pbd.VersionBuild(['version.cc','pbd/version.h'], [])
libpbd = pbd.SharedLibrary('pbd', pbd_files)

View file

@ -26,9 +26,9 @@
#include <sys/types.h>
#include <sys/stat.h>
#include <pbd/error.h>
#include <pbd/pathscanner.h>
#include <pbd/stl_delete.h>
#include "pbd/error.h"
#include "pbd/pathscanner.h"
#include "pbd/stl_delete.h"
using namespace PBD;

View file

@ -24,6 +24,9 @@
#include <stdint.h>
#include "pbd/pthread_utils.h"
#ifdef WINE_THREAD_SUPPORT
#include <fst.h>
#endif
using namespace std;
@ -39,6 +42,15 @@ namespace PBD {
using namespace PBD;
static int thread_creator (pthread_t* thread_id, const pthread_attr_t* attr, void *(*function)(void*), void* arg)
{
#ifdef WINE_THREAD_SUPPORT
return wine_pthread_create (thread_id, attr, function, arg);
#else
return pthread_create (thread_id, attr, function, arg);
#endif
}
void
PBD::notify_gui_about_thread_creation (pthread_t thread, std::string str, int request_count)
{
@ -70,7 +82,7 @@ pthread_create_and_store (string name, pthread_t *thread, pthread_attr_t *attr,
attr = &default_attr;
}
if ((ret = pthread_create (thread, attr, start_routine, arg)) == 0) {
if ((ret = thread_creator (thread, attr, start_routine, arg)) == 0) {
std::pair<string,pthread_t> newpair;
newpair.first = name;
newpair.second = *thread;

View file

@ -15,7 +15,7 @@
#ifndef _RUBBERBAND_VAMP_PLUGIN_H_
#define _RUBBERBAND_VAMP_PLUGIN_H_
#include <vamp-sdk/Plugin.h>
#include "vamp-sdk/Plugin.h"
#include "RubberBandStretcher.h"

View file

@ -301,7 +301,7 @@ OSC::init_osc_thread ()
pthread_attr_init(&attr);
pthread_attr_setstacksize(&attr, 500000);
pthread_create (&_osc_thread, &attr, &OSC::_osc_receiver, this);
pthread_create_and_store (X_("OSC"), &_osc_thread, &attr, &OSC::_osc_receiver, this);
if (!_osc_thread) {
return false;
}

View file

@ -17,7 +17,7 @@
#ifndef _ONSET_PLUGIN_H_
#define _ONSET_PLUGIN_H_
#include <vamp-sdk/Plugin.h>
#include "vamp-sdk/Plugin.h"
#include <aubio/aubio.h>
class Onset : public Vamp::Plugin

View file

@ -38,7 +38,7 @@
#include <vector>
#include <map>
#include <vamp-hostsdk/PluginBufferingAdapter.h>
#include "vamp-hostsdk/PluginBufferingAdapter.h"
using std::vector;
using std::map;

View file

@ -34,7 +34,7 @@
authorization.
*/
#include <vamp-hostsdk/PluginChannelAdapter.h>
#include "vamp-hostsdk/PluginChannelAdapter.h"
_VAMP_SDK_HOSTSPACE_BEGIN(PluginChannelAdapter.cpp)

View file

@ -34,7 +34,7 @@
authorization.
*/
#include <vamp-hostsdk/PluginHostAdapter.h>
#include "vamp-hostsdk/PluginHostAdapter.h"
#include <cstdlib>
#if ( VAMP_SDK_MAJOR_VERSION != 2 || VAMP_SDK_MINOR_VERSION != 0 )

View file

@ -37,7 +37,7 @@
authorization.
*/
#include <vamp-hostsdk/PluginInputDomainAdapter.h>
#include "vamp-hostsdk/PluginInputDomainAdapter.h"
#include <cmath>

View file

@ -34,11 +34,11 @@
authorization.
*/
#include <vamp-hostsdk/PluginHostAdapter.h>
#include <vamp-hostsdk/PluginLoader.h>
#include <vamp-hostsdk/PluginInputDomainAdapter.h>
#include <vamp-hostsdk/PluginChannelAdapter.h>
#include <vamp-hostsdk/PluginBufferingAdapter.h>
#include "vamp-hostsdk/PluginHostAdapter.h"
#include "vamp-hostsdk/PluginLoader.h"
#include "vamp-hostsdk/PluginInputDomainAdapter.h"
#include "vamp-hostsdk/PluginChannelAdapter.h"
#include "vamp-hostsdk/PluginBufferingAdapter.h"
#include <fstream>
#include <cctype> // tolower

View file

@ -34,7 +34,7 @@
authorization.
*/
#include <vamp-hostsdk/PluginSummarisingAdapter.h>
#include "vamp-hostsdk/PluginSummarisingAdapter.h"
#include <map>
#include <algorithm>

View file

@ -34,7 +34,7 @@
authorization.
*/
#include <vamp-hostsdk/PluginWrapper.h>
#include "vamp-hostsdk/PluginWrapper.h"
_VAMP_SDK_HOSTSPACE_BEGIN(PluginWrapper.cpp)

View file

@ -34,6 +34,6 @@
authorization.
*/
#include <vamp-hostsdk/RealTime.h>
#include "vamp-hostsdk/RealTime.h"
#include "../vamp-sdk/RealTime.cpp"

View file

@ -34,7 +34,7 @@
authorization.
*/
#include <vamp-sdk/PluginAdapter.h>
#include "vamp-sdk/PluginAdapter.h"
#include <cstring>
#include <cstdlib>

View file

@ -57,7 +57,7 @@ using std::endl;
#include <sys/time.h>
#endif
#include <vamp-sdk/RealTime.h>
#include "vamp-sdk/RealTime.h"
_VAMP_SDK_PLUGSPACE_BEGIN(RealTime.cpp)

View file

@ -42,6 +42,6 @@
#include "hostguard.h"
#include <vamp-sdk/Plugin.h>
#include "vamp-sdk/Plugin.h"
#endif

View file

@ -42,6 +42,6 @@
#include "hostguard.h"
#include <vamp-sdk/PluginBase.h>
#include "vamp-sdk/PluginBase.h"
#endif

View file

@ -40,7 +40,7 @@
#include "hostguard.h"
#include "Plugin.h"
#include <vamp/vamp.h>
#include "vamp/vamp.h"
#include <vector>

View file

@ -38,7 +38,7 @@
#define _VAMP_PLUGIN_WRAPPER_H_
#include "hostguard.h"
#include <vamp-hostsdk/Plugin.h>
#include "vamp-hostsdk/Plugin.h"
_VAMP_SDK_HOSTSPACE_BEGIN(PluginWrapper.h)

View file

@ -41,6 +41,6 @@
// use this header instead.
#include "hostguard.h"
#include <vamp-sdk/RealTime.h>
#include "vamp-sdk/RealTime.h"
#endif

View file

@ -38,7 +38,7 @@
#define _VAMP_PLUGIN_ADAPTER_H_
#include <map>
#include <vamp/vamp.h>
#include "vamp/vamp.h"
#include "Plugin.h"

View file

@ -2,5 +2,5 @@
. ../gtk2_ardour/ardev_common.sh
export LD_LIBRARY_PATH=../gtk2_ardour:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$TOP/gtk2_ardour:$LD_LIBRARY_PATH
exec wine $TOP/vst/ardour_vst.exe.so "$@"