diff --git a/.gitignore b/.gitignore
index b6624311..2e399dd6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,7 @@
internal/saved/data/*
-internal/gui/feedback/model_data.lua
!/internal/saved/data/.gitkeep
+internal/gui/feedback/model_data.lua
internal/state_machine/state.lua
-actions-runner
\ No newline at end of file
+Scripts/gen
+reaper-keys.ReaperKeyMap
+
diff --git a/.luarc.json b/.luarc.json
new file mode 100644
index 00000000..b33c9226
--- /dev/null
+++ b/.luarc.json
@@ -0,0 +1,3 @@
+{
+ "diagnostics.globals": [ "reaper", "gfx" ]
+}
diff --git a/.projectile b/.projectile
deleted file mode 100755
index e69de29b..00000000
diff --git a/LICENSE b/LICENSE
index 7a7647b9..b487b0eb 100755
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,6 @@
MIT License
-Copyright (c) 2016 ggVGc
+Copyright (c) 2016-2024 ggVGc, myrrc
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/README.md b/README.md
index 6987ac14..ccd94b3f 100644
--- a/README.md
+++ b/README.md
@@ -1,14 +1,14 @@
-# Reaper-Keys
+# Reaper keys
-
-
-
+
-Reaper-Keys is an extension for the [REAPER DAW](https://www.reaper.fm/), that provides a new action
-mapping system based on key sequences instead of key chords. The system is
-similar to [Vim](https://en.wikipedia.org/wiki/Vim_%28text_editor%29), a modal text editor, and by default comes with vim-like bindings.
+Reaper keys is an extension for the [REAPER DAW](https://www.reaper.fm/) that provides a
+new action mapping system based on key sequences instead of key chords. The system is
+similar to [Vim](https://en.wikipedia.org/wiki/Vim_%28text_editor%29), a modal text
+editor, and by default comes with vim-like bindings.
-Click [here](https://youtu.be/ChuZswEfQuo) for a very outdated and low quality demo and installation video.
+Click [here](https://youtu.be/ChuZswEfQuo) for a very outdated and low quality demo and
+installation video.
## Pros
@@ -16,92 +16,99 @@ Click [here](https://youtu.be/ChuZswEfQuo) for a very outdated and low quality d
- Develop arthritis at 60 instead of 40
- Reduce mouse usage
- Increase maximum bandwidth between your brain and your project
-- A structure for reapers giant bag of actions
+- A structure for Reaper's giant bag of actions
-# Table of Contents
-
- 1. [Features](#Features)
- 1. [Bind key sequences](#Bind-key-sequences)
- 2. [Compose actions](#Compose-actions)
- 3. [Multi-modal](#Multi-modal)
- 4. [Macros](#Macros)
- 3. [Installation](#Installation)
- 4. [Help](#Help)
- 5. [Further Information](#Further-Information)
+## Installation
+- Add `https://raw.githubusercontent.com/gwatcha/reaper-keys/master/index.xml` to Reapack.
+- Optionally, install [SWS](https://sws-extension.org/) (by hand or from ReaTeam
+ Extensions). Although this extension _may_ work without SWS, the experience will be
+ worse.
## Features
-
### Bind key sequences
-With reaper-keys, you may bind key sequences to actions, rather then singular
-key presses. This allows one to hierarchically organize many keybindings for easy access to many keybindings.
+With Reaper keys you may bind key sequences to actions rather then singular key presses.
+This allows one to hierarchically organize many keybindings.
+A completion/feedback window is provided to assist with command completion.
-A completion/feedback window is provided to assist with command completion.
-
-![img](img/completions.gif)
+
### Compose actions
-Reaper-keys lets one compose actions of different types to create new commands.
-
-For example, in normal mode, any action with `timeline motion` type can follow any one with `timeline operator` type.
+Reaper keys lets one compose actions of different types to create new commands. For
+example, in normal mode, any action with `timeline motion` type can follow any one with
+`timeline operator` type. So if one enters `tL`, it would compose into `(t ->
+"PlayAndLoop", L -> "NextMeasure")`, and play and loop the next measure.
-So if one enters `tL`, it would compose into `(t -> "PlayAndLoop", L -> "NextMeasure")`, and play and loop the next measure.
+Other examples of `timeline operator` bindings are `s` -> "SelectItemsAndSplit" , or `z`
+-> "ZoomTimeSelection", so you could also enter `sL` or `zL`.
-Other example `timeline operator` bindings are `s` -> "SelectItemsAndSplit" , or `z` -> "ZoomTimeSelection", so you could also enter `sL` or `zL`.
+
-![img](img/compose.gif)
-
-This grows the number of available actions exponentially but still preserves your
-brain, as you only need to know the `timeline_motions`, `timeline_operators`, and
-the fact that you can compose them.
+This grows the number of available actions exponentially but still preserves your brain,
+as you only need to know the `timeline_motions`, `timeline_operators`, and the fact that
+you can compose them.
### Multi-modal
-Changing modes changes the way keys compose. By default, it is in `normal` mode, but you could for example go into `visual timeline` mode by pressing `v`.
+Changing modes changes the way keys compose. By default, it is in `normal` mode, but you
+could for example go into `visual timeline` mode by pressing `v`.
-In this mode, `timeline motions` extend the current time selection, and `timeline actions` operate immediately and return one to `normal` mode. Useful if you want
-visual feedback before executing a timeline action, or just want to extend the
-time selection using motion commands.
+In this mode, `timeline motions` extend the current time selection, and `timeline actions`
+operate immediately and return one to `normal` mode. Useful if you want visual feedback
+before executing a timeline action, or just want to extend the time selection using motion
+commands.
-![img](img/visual_mode.gif)
+
### Macros
Macros are a way to save a sequence of commands, and play them back later.
-To record a macro, enter `q` and an arbitrary character to specify the `register` that
-the macro will save into. Then, perform a series of actions, and finish
-recording by pressing `q`.
+To record a macro, enter `q` and an arbitrary character to specify the `register` that the
+macro will save into. Then, perform a series of actions, and finish recording by pressing
+`q`.
-![img](img/macro_rec.gif)
+
-You may play it back by entering `@` and the character you specified earlier.
-Optionally, prefix it with a number to indicate the number of repetitions.
+You may play it back by entering `@` and the character you specified earlier. Optionally,
+prefix it with a number to indicate the number of repetitions.
-![img](img/macro_play.gif)
+
-## Installation
+## Help
-- Clone this repository or download it via the 'releases' tab (download the file 'reaper-keys.zip').
-- Put this repository into your `REAPER/Scripts` directory . If you're unsure where your `REAPER` directory is, just run the action 'Show REAPER resource path in explorer' in REAPER.
-- Back up your key map by exporting it, then import the provided keymap `reaper-keys.ReaperKeyMap` via the `import` button at the bottom of the action list window in Reaper. (This will overwrite your current key bindings!)
-- For all the actions to work, install the [SWS/S&M](https://sws-extension.org/) extension for Reaper.
+Enter ` (Ctrl + Alt + x)` to show a list of available bindings you can search and
+filter.
-When you restore your old keymap, you may want to empty the `reaper-kb.ini` in your `REAPER` root directory and restart REAPER. Otherwise, there will likely be remnants from reaper-keys.
+
-## Help
+If you're stuck in a state you don't know how to get out of, you can press `` to
+reset back to normal.
+
+Also, if your key press is not being detected, try unfocusing the feedback window.
-Enter `` to show a list of available bindings you can search and filter.
+## Tweaking
-![img](img/binding_list.gif)
+```
+internal/definitions/actions.lua -> add actions
+internal/definitions/bindings.lua -> add or customise key bindings
+internal/definitions/config.lua -> change GUI settings
+```
-If your stuck in a state you don't know how to get out of, you can press `` to reset back to normal.
+## Reporting performance issues
-Also,
-If your key press is not being detected, try unfocusing the feedback window.
-If a dialog opens saying 'script is already running in the background' just click 'remember' and 'new instance'.
+1. Download "Lua profiler" from ReaTeam Scripts and "ReaImGui" from ReaTeam Extensions via
+ReaPack.
+2. Change "profile" to "true" in internal/definitions/config.lua
+3. In Reaper, click Actions > Running script > rk.lua > Terminate instances. There may be
+no "Running script", then just skip this step.
+4. Press any key. A profiler window will open.
+5. Click "Acquisition > Stop" in the profiler window after you're done
+6. Click "Copy to clipboard". Paste in a GitHub issue.
+7. When you're done, change "profile" back to false and repeat (3)
## Further Information
diff --git a/Rakefile b/Rakefile
deleted file mode 100644
index c264de5c..00000000
--- a/Rakefile
+++ /dev/null
@@ -1,42 +0,0 @@
-# frozen_string_literal: true
-
-# Rakefile
-require './scripts/generator'
-require './scripts/refractorer'
-require 'fileutils'
-
-@root_dir_path = Dir.pwd[%r{[^/]*$}] + '/'
-@key_script_dir = 'key_scripts/'
-@keymap_path = 'reaper-keys.ReaperKeyMap'
-@definitions_dir = 'definitions/'
-
-task default: %i[clean generate build]
-
-task :clean do
- FileUtils.rm_rf(@key_script_dir)
- Dir.mkdir(@key_script_dir)
- FileUtils.rm_f(@keymap_path)
-end
-
-task :build do
- `mkdir -p dist`
- `rm -rf dist/*`
- `zip -r dist/reaper-keys.zip * -x dist img/* img`
-end
-
-task :generate do
- generator = Generator.new(@root_dir_path, @keymap_path, @key_script_dir)
- generator.gen_interface
-end
-
-namespace :refractor do
- refractorer = Refractorer.new(@definitions_dir)
-
- task :sort_actions do
- refractorer.sort_actions
- end
-
- task :delete_duplicate_actions do
- refractorer.delete_duplicate_actions
- end
-end
diff --git a/Scripts/install-reaper-keys.lua b/Scripts/install-reaper-keys.lua
new file mode 100644
index 00000000..5ac9fcfb
--- /dev/null
+++ b/Scripts/install-reaper-keys.lua
@@ -0,0 +1,148 @@
+-- @description reaper-keys: map keystroke combinations to actions like in vim
+-- @version 2.0.0-a
+-- @author gwatcha
+-- @links
+-- GitHub repository https://github.com/gwatcha/reaper-keys
+-- @provides
+-- ../internal/**/*
+-- ../vendor/**/*
+
+local function charCodes(from, count)
+ local out = {}
+ for i = 0, count do out[i + 1] = from + i end
+ return out
+end
+
+-- e.g. C-! will produce KEY 9 33 and will be parsed by reaper as C- Numpad Page Up
+local clash = 65536
+local key_groups = {
+ letters = { mod_id = 1, keys = charCodes(65, 25) }, -- A-Z
+ numbers = { mod_id = 1, keys = charCodes(48, 10) }, -- 0-9
+ special = {
+ mod_id = 1,
+ keys = {
+ 8, -- backspace
+ 9, -- tab
+ 13, -- return
+ 27, -- esc
+ 32, -- space
+ 112, -- f1
+ 113, -- f2
+ 114, -- f3
+ 115, -- f4
+ 116, -- f5
+ 117, -- f6
+ 118, -- f7
+ 119, -- f8
+ 120, -- f9
+ 121, -- f10
+ 122, -- f11
+ 123, -- f12,
+ 32801, -- page up
+ 32802, -- page down
+ 32803, -- end
+ 32804, -- home
+ 32805, -- left
+ 32806, -- up
+ 32807, -- right
+ 32808, -- down
+ 32813, -- insert
+ 32814, -- delete
+ }
+ },
+ shifted = {
+ mod_id = 0,
+ keys = {
+ 33 + clash, -- !
+ 34 + clash, -- "
+ 35 + clash, -- #
+ 36 + clash, -- $
+ 37 + clash, -- %
+ 38 + clash, -- &
+ 40 + clash, -- (
+ 41 + clash, -- )
+ 42 + clash, -- *
+ 43 + clash, -- +
+ 58, -- :
+ 60 + clash, -- >
+ 62 + clash, -- >
+ 63, -- ?
+ 64, -- @
+ 94, -- ^
+ 95, -- _
+ 123 + clash, -- {
+ 124 + clash, -- |
+ 125 + clash, -- }
+ 126, -- ~
+ 126 + clash, -- ^
+ 126 + clash, -- *
+ }
+ },
+ normal = {
+ mod_id = 0,
+ keys = {
+ 39 + clash, -- '
+ 44 + clash, -- ,
+ 45 + clash, -- -
+ 46 + clash, -- .
+ 47, -- /
+ 59 + clash, -- ;
+ 61, -- =
+ 91, -- [
+ 92, -- \
+ 93, -- ]
+ 96 + clash, -- `
+ 167, -- §
+ 177, -- ±
+ }
+ }
+}
+
+local modifiers = { C = 9, M = 17, S = 5, MS = 21, CS = 13, CM = 25, CMS = 29 } -- C:ctrl, M:alt, S:shift
+local mods_with_shift = { S = true, MS = true, CS = true, CMS = true }
+
+local version = tonumber(reaper.GetAppVersion():match '[%d.]+')
+if version < 6.71 then
+ return reaper.MB("Reaper keys supports only Reaper 6.71+", "Unsupported version", 0)
+end
+
+local function concat_path(...) return table.concat({ ... }, package.config:sub(1, 1)) end
+
+local keymap_dir = concat_path(reaper.GetResourcePath(), 'KeyMaps')
+local keymap_path = concat_path(keymap_dir, 'reaper-keys.ReaperKeyMap')
+reaper.RecursiveCreateDirectory(keymap_dir, 0)
+local keymap = io.open(keymap_path, "w")
+if not keymap then return reaper.MB("Failed to create " .. keymap_path, "Error", 0) end
+
+function KEY(mod_id, key_id, command_id, section_id)
+ return ("KEY %d %d %s %d\n"):format(mod_id, key_id, command_id, section_id)
+end
+
+local parent_dir = debug.getinfo(1, "S").source:match "@?(.*)[\\/].*[\\/]"
+local command_path = concat_path(parent_dir, "internal", "rk.lua")
+local sections = { midi = 32060, main = 0 }
+for section_name, section_id in pairs(sections) do
+ local command_id = "_reaper_keys__" .. section_name
+ -- 260 focuses window on every key press so 516 is only option
+ keymap:write(('SCR 516 %d %s "reaper-keys" "%s"\n'):format(section_id, command_id, command_path))
+
+ for group_name, group in pairs(key_groups) do
+ for _, key_id in pairs(group.keys) do
+ local has_clash = (key_id >= clash) and 1 or 0
+ key_id = key_id - has_clash * clash
+ keymap:write(KEY(group.mod_id, key_id, command_id, section_id))
+
+ for mod, mod_id in pairs(modifiers) do
+ if group_name == "shifted" and mods_with_shift[mod] then goto iter_end end
+ keymap:write(KEY(mod_id - has_clash, key_id, command_id, section_id))
+ ::iter_end::
+ end
+ end
+ end
+end
+
+local action_str = version >= 7. and "shortcuts/custom actions, import all sections" or ""
+reaper.MB("Installation finished, now import reaper-keys.ReaperKeyMap:\n\t" ..
+ "Actions list > Key Map > Import " .. action_str .. "\n" ..
+ "WARNING: this will overwrite ALL your keybindings",
+ "Installation finished", 0)
diff --git a/definitions/README.md b/definitions/README.md
deleted file mode 100644
index aeffccc5..00000000
--- a/definitions/README.md
+++ /dev/null
@@ -1,2 +0,0 @@
-Check out the configuration section in the documentation if you need any help:
-https://gwatcha.github.io/reaper-keys/
diff --git a/definitions/actions.lua b/definitions/actions.lua
deleted file mode 100644
index 630fa1f2..00000000
--- a/definitions/actions.lua
+++ /dev/null
@@ -1,18 +0,0 @@
--- if you need to define a new action for use in reaper keys, do so here
--- if you need help check out the documentation https://gwatcha.github.io/reaper-keys/configuration/actions.html
--- see ./defaults/actions.lua for examples, as well as actions you can call
-
--- provides functions which are specific to reaper-keys, such as macros
--- search for 'lib' in the default actions file to see examples
-local lib = require('library')
--- provides custom functions which make use of the reaper api
--- search for 'custom' in the default actions file to see examples
-local custom = require('custom_actions')
-
--- naming conventions:
--- a noun implies an action which selects the noun, or a movement to it's position
--- simple verbs are usually operators, such as 'change'
--- longer verbs are usually commands
-
-return {
-}
diff --git a/definitions/bindings.lua b/definitions/bindings.lua
deleted file mode 100644
index a0b8cae5..00000000
--- a/definitions/bindings.lua
+++ /dev/null
@@ -1,28 +0,0 @@
--- bindings in this file are prioritized over the default bindings
--- if you need help, check out the documentation https://gwatcha.github.io/reaper-keys/configuration/bindings.html
--- check out the ./defaults directory to see examples
-return {
- global = {
- timeline_motion = {},
- timeline_operator = {},
- timeline_selector = {},
- visual_timeline_command = {},
- command = {}
- },
- main = {
- track_motion = {},
- visual_track_command = {},
- track_selector = {},
- track_operator = {},
- timeline_operator = {},
- timeline_selector = {},
- timeline_motion = {},
- command = {},
- },
- midi = {
- timeline_selector = {},
- timeline_operator = {},
- timeline_motion = {},
- command = {},
- },
-}
diff --git a/definitions/config.lua b/definitions/config.lua
deleted file mode 100644
index fcdc4aa3..00000000
--- a/definitions/config.lua
+++ /dev/null
@@ -1,22 +0,0 @@
--- behaviour configuration options, see
--- https://gwatcha.github.io/reaper-keys/configuration/behaviour.html
-
-return {
- use_extended_defaults = false,
- show_start_up_message = true,
- -- should the auto-complete menu display?
- show_feedback_window = true,
- -- should operators in visual modes reset the selection or have it persist?
- persist_visual_timeline_selection = true,
- persist_visual_track_selection = false,
- -- allow timeline movement when in visual track mode?
- allow_visual_track_timeline_movement = true,
- -- options in decreasing verbosity: [trace debug info warn user error fatal]
- log_level = 'user',
- repeatable_commands_action_type_match = {
- 'command',
- 'operator',
- 'meta_command',
- }
-}
-
diff --git a/definitions/defaults/actions.lua b/definitions/defaults/actions.lua
deleted file mode 100644
index 6978782b..00000000
--- a/definitions/defaults/actions.lua
+++ /dev/null
@@ -1,603 +0,0 @@
-local lib = require('library')
-local custom = require('custom_actions')
-
-return {
- ActivateNextMidiItem = {40833, midiCommand=true},
- ActivatePrevMidiItem = {40834, midiCommand=true},
- AddFx = 40271,
- AddNextNoteToSelection = {40422, midiCommand=true},
- AddPrevNoteToSelection = {40421, midiCommand=true},
- InsertVirtualInstrumentTrack = 40701,
- InsertClickTrack = "_SWS_AWINSERTCLICKTRK",
- AllTrackItems = {"SaveItemSelection", "SelectItemsOnTrack", "SelectedItems", "RestoreItemSelection"},
- AllTracks = 40296,
- ArmAllEnvelopes = "_S&M_ARMALLENVS",
- ArmSelectedTracks = "_XENAKIOS_SELTRAX_RECARMED",
- ArmTracks = 9,
- AutomationItem = 42197,
- AutoRenameTake = "_XENAKIOS_AUTORENAMETAKES",
- BigItem = custom.select.innerBigItem,
- CleanProjectDirectory = 40098,
- ClearAllEnvelope = "_S&M_REMOVE_ALLENVS",
- ClearAllRecordArm = 40491,
- ClearEnvelope = 40065,
- ClearNoteSelection = {40214, midiCommand=true},
- ClearTimeSelection = custom.clearTimeSelection,
- CloseAllFxChainsAndWindows = {"CloseAllFx", "CloseAllFxChain"},
- CloseAllFxChain = "_S&M_WNCLS4",
- CloseAllFx = "_S&M_WNCLS3",
- CloseFloatingFxWindows = "_S&M_WNCLS3",
- PlayFromMouseAndSoloTrack = "_BR_CONT_PLAY_MOUSE_SOLO_TRACK",
- PlayFromEditCursorAndSoloTrackUnderMouse = "_BR_TOGGLE_PLAY_EDIT_SOLO_TRACK",
- CloseFx = {"CloseFxChains", "CloseFxWindows"},
- CloseFxWindows = "_S&M_WNCLS5",
- CloseFxChains = "_S&M_WNCLS4",
- CloseProject = 40860,
- CloseWindow = {2, midiCommand=true},
- ColorTrack = {40360, prefixRepetitionCount=true},
- ColorTrackGradient = "_SWS_TRACKGRAD",
- ColorTrackWithTrackAbove = "_SWS_COLTRACKPREV",
- ColorTrackWithTrackBelow = "_SWS_COLTRACKNEXT",
- CopyAndFitByLooping = 41319,
- CopyEnvelope = 40035,
- CopyEnvelopePoints = 40324,
- CopyFxChain = "_S&M_SMART_CPY_FXCHAIN",
- CopyItems = {"SaveItemSelection", "OnlySelectItemsCrossingTimeAndTrackSelection", "CopySelectedAreaOfItems", "RestoreItemSelection"},
- CopyNotes = {"SelectNotes", "CopySelectedEvents"},
- CopySelectedAreaOfItems = 40060,
- CopySelectedEvents = {40733, midiCommand=true},
- CopySelectedItems = 40698,
- CopyTrack = 40210,
- CropToActiveTake = 40131,
- CutEnvelopePoints = 40325,
- CutFxChain = "_S&M_COPYFXCHAIN6",
- CutInputFxChain = "_S&M_CUT_INFXCHAIN",
- Overdub = {"CopyTrack", "UnarmSelectedTracks", "Paste", "NextTrack", "StartStop", "ToggleRecord", "SelectItemsUnderEditCursor", "CutSelectedItems"},
- CutItemFxChain = {"CopyItemFxChain", "ClearItemFxChain"},
- CopyItemFxChain = "_S&M_COPYFXCHAIN1",
- ClearItemFxChain = "_S&M_CLRFXCHAIN2",
- CutItems = {"SaveItemSelection", "SelectItemsAndSplit", "CutSelectedItems", "RestoreItemSelection"},
- MoveItemContentToEditCursor = 41308,
- MoveItemToEditCursor = 41205,
- CutNotes = {"SelectNotes", "CutSelectedEvents"},
- CutSelectedEvents = {40012, midiCommand=true},
- CutSelectedItems = 40699,
- CutTrack = {"CopyTrack", "RemoveTrack", "SelectLastTouchedTrack"},
- CycleFolderCollapsedState = 1042,
- CycleFolderState = 1041,
- CycleItemFadeInShape = {41520, prefixRepetitionCount=true},
- CycleItemFadeOutShape = {41527, prefixRepetitionCount=true},
- CycleRecordMonitor = 40495,
- CycleRippleEditMode = 1155,
- DeleteActiveTake = {40129, prefixRepetitionCount=true},
- DeleteEnvelope = 40333,
- DeleteItem = 40006,
- DeleteMark = {lib.marks.delete, registerAction=true},
- DeleteNote = {40002, midiCommand=true},
- DeleteTimeline = 40201,
- InsertTrackFromTemplate = 46000,
- EnterTrackAbove = {"InsertTrackAbove", "ColorTrackWithTrackBelow", "RenameTrack"},
- EnterTrackBelow = {"InsertTrackBelow", "ColorTrackWithTrackAbove", "RenameTrack"},
- EventSelectionEnd = {40639, midiCommand=true},
- EventSelectionStart = {40440, midiCommand=true},
- AddTimeSignatureMarker = 40256,
- EditTimeSignatureMarker = 40618,
- DeleteTimeSignatureMarker = 40617,
- NextTimeSignatureMarker = 41821,
- PrevTimeSignatureMarker = 41820,
- FirstItemStart = custom.move.firstItemStart,
- FirstTrack = {custom.move.firstTrack, "ScrollToSelectedTracks"},
- GlueItemsIgnoringTimeSelection = 40362,
- FitByLoopingNoExtend = {"OnlySelectItemsCrossingTimeAndTrackSelection", "GlueItemsIgnoringTimeSelection", "FitSelectedItemsByLooping"},
- ToggleShowTempoEnvelope = 41046,
- ShowMasterTrack = "_SWS_SHOWMASTER",
- HideMasterTrack = "_SWS_HIDEMASTER",
- FitByLooping = {"OnlySelectItemsCrossingTimeAndTrackSelection", "FitSelectedItemsByLooping"},
- FitByPadding = {"OnlySelectItemsCrossingTimeAndTrackSelection", "FitSelectedItemsByPadding"},
- FitByStretching = {"OnlySelectItemsCrossingTimeAndTrackSelection", "FitSelectedItemsByStretching"},
- FitEnvelopePoints = "_BR_FIT_ENV_POINTS_TO_TIMESEL",
- FitSelectedItemsByLooping = 41386,
- FitSelectedItemsByPadding = 41385,
- FitSelectedItemsByStretching = 41206,
- FitNotes = {40754, midiCommand=true},
- FocusMain = "_S&M_WNMAIN",
- FolderChildren = {"SelectFolderChildren", "ScrollToSelectedTracks"},
- FolderParent = {"SelectFolderParent", "ScrollToSelectedTracks"},
- Folder = {"SelectFolder", "ScrollToSelectedTracks"},
- ResetFeedbackWindow = lib.ResetFeedbackWindow,
- FreezeTrack = 41223,
- GlueItemIgnoringTimeSelection = 40362,
- GlueItems = {"SaveItemSelection", "SelectItems", "GlueSelectedItemsInTimeSelection", "RestoreItemSelection"},
- GlueSelectedItemsInTimeSelection = 41588,
- GoToEnd = {40037, midiCommand=true},
- GoToStart = {40036, midiCommand=true},
- GroupItems = 40032,
- HealItemsSplits = 40548,
- CreateMeasures = 40338,
- CreateProjectTempo = 40843,
- InnerFolderAndParent = {"FolderParent", "SelectFolder"},
- InnerFolder = {"FolderParent", "SelectOnlyFoldersChildren"},
- InsertAutomationItem = 42082,
- InsertDefaultSizeNote = {40051, midiCommand=true},
- InsertNote = {"MidiTimeSelectionStart", "InsertDefaultSizeNote", "MidiTimeSelectionStart", "SelectNearestNote", "FitNotes"},
- InsertOrExtendMidiItem = 42069,
- InsertTrackAbove = {"_SWS_INSRTTRKABOVE", prefixRepetitionCount=true},
- InsertTrackBelow = {40001, prefixRepetitionCount=true},
- Insert4EnvelopePointsAtTimeSelection = 40726,
- ShiftEnvelopePointsUp = {41180, prefixRepetitionCount=true},
- ShiftEnvelopePointsUpATinyBit = {42381, prefixRepetitionCount=true},
- ShiftEnvelopePointsDown = {41181, prefixRepetitionCount=true},
- ShiftEnvelopePointsDownATinyBit = {42382, prefixRepetitionCount=true},
- InvertVoicingDownwards = {40910, midiCommand=true, prefixRepetitionCount=true},
- InvertVoicingUpwards = {40909, midiCommand=true, prefixRepetitionCount=true},
- ApplyFxToItem = 40209,
- Item = custom.select.innerItem,
- ItemNormalize = 40108,
- ItemSplitSelRight = "_SWS_AWSPLITXFADELEFT",
- JoinNotes = {"SelectNotes", "JoinSelectedNotes"},
- JoinSelectedNotes = {40456, midiCommand=true},
- LastItemEnd = custom.move.lastItemEnd,
- LastTrack = {custom.move.lastTrack, "ScrollToSelectedTracks"},
- Left10Pix = {"_XENAKIOS_MOVECUR10PIX_LEFT", prefixRepetitionCount=true},
- Left40Pix = {"Left10Pix", repetitions=4, prefixRepetitionCount=true},
- LeftGridDivision = {40646, prefixRepetitionCount=true},
- LeftMidiGridDivision = {40047, midiCommand=true, prefixRepetitionCount=true},
- LoopEnd = 40633,
- LoopSelection = "SetTimeSelectionToLoopSelection",
- LoopStart = 40632,
- MakeFolder = "_SWS_MAKEFOLDER",
- MarkedRegion = {lib.marks.recallMarkedRegion, registerAction=true},
- MarkedTimelinePosition = {lib.marks.recallMarkedTimelinePosition, registerAction=true},
- MarkedTracks = {lib.marks.recallMarkedTracks, registerAction=true},
- Mark = {lib.marks.save, registerAction=true},
- MatchedTrackBackward = {"MatchTrackNameBackward", "ScrollToSelectedTracks"},
- MatchedTrackForward = {"MatchTrackNameForward", "ScrollToSelectedTracks"},
- MatchTrackNameBackward = lib.matchTrackNameBackward,
- MatchTrackNameForward = lib.matchTrackNameForward,
- MidiCCMoveLeftByGrid = {40672, prefixRepetitionCount=true},
- MidiCCMoveLeftByPixel = {40674, prefixRepetitionCount=true},
- MidiCCMoveRightByGrid = {40673, prefixRepetitionCount=true},
- MidiCCMoveRightByPixel = {40675, prefixRepetitionCount=true},
- MidiLearnLastTouchedFxParam = 41144,
- MidiLoadNoteCCNames = 40409,
- MidiOptionAllowAllMediaItemsEditableInNotationView = 41774,
- MidiOptionAllowCCShapeInBankAndLSBLanes = 42100,
- MidiOptionAvoidAutomaticallySettingMIDIItemsFromOtherTracksEditable = 40901,
- MidiOptionEnableExtendingParentMediaItem = 40817,
- MidiOptionToggleAlwaysSnapNotesToTheLeftItSnap = 40748,
- MidiPaste = {40011, midiCommand=true, prefixRepetitionCount=true},
- MidiSaveNoteCCNames = 40410,
- MidiTimeSelectionEnd = {40881, midiCommand=true},
- MidiTimeSelectionStart = {40880, midiCommand=true},
- MidiViewModeDrums = 40043,
- MidiViewModeEvent = 40056,
- MidiViewModeNotes = 40954,
- MidiViewModePiano = 40042,
- MidiViewNoteRowsHideUnused = 40453,
- MidiViewNoteRowsHideUnusedAndUnnamed = 40454,
- MidiViewNoteRowsShowAll = 40452,
- MidiZoomContent = {40466, midiCommand=true},
- MidiZoomInHoriz = {1012, midiCommand=true, prefixRepetitionCount=true},
- MidiZoomInVert = {40111, midiCommand=true, prefixRepetitionCount=true},
- MidiZoomLoopSelection = {40726, midiCommand=true},
- MidiZoomOutHoriz = {1011, midiCommand=true, prefixRepetitionCount=true},
- MidiZoomOutVert = {40112, midiCommand=true, prefixRepetitionCount=true},
- MidiZoomTimeSelection = {"SaveLoopSelection", "SetLoopSelectionToTimeSelection", "MidiZoomLoopSelection", "RestoreLoopSelection"},
- MinimizeTracks = "_SWS_MINTRACKS",
- MixerShowHideChildrenOfSelectedTrack = 41665,
- ModulateLastTouchedFxParam = 41143,
- MousePositionIgnoreSnap = 40514,
- MousePosition = {"MousePositionIgnoreSnap", "SnappedPosition"},
- NextTransientInSelectedItems = {40375, prefixRepetitionCount=true},
- PrevTransientInSelectedItems = {40376, prefixRepetitionCount=true},
- MoveNoteDownOctave= {40180, midiCommand=true, prefixRepetitionCount=true},
- MoveNoteDownSemitone = {40178, midiCommand=true, prefixRepetitionCount=true},
- MoveNoteLeft = {40183, midiCommand=true, prefixRepetitionCount=true},
- MoveNoteLeftFine = {40181, midiCommand=true, prefixRepetitionCount=true},
- MoveNoteRight= {40184, midiCommand=true, prefixRepetitionCount=true},
- MoveNoteRightFine = {40182, midiCommand=true, prefixRepetitionCount=true},
- MoveNoteUpOctave= {40179, midiCommand=true, prefixRepetitionCount=true},
- MoveNoteUpSemitone = {40177, midiCommand=true, prefixRepetitionCount=true},
- MoveRedo = {"_SWS_EDITCURREDO", prefixRepetitionCount=true},
- MoveSelectedItemLeftToEditCursor = 41306,
- MoveSelectedItemRightToEditCursor = 41307,
- MoveToFirstItem = {"SelectFirstItemOnSelectedTracks", "MoveToFirstItem"},
- MoveToMousePositionAndPlay = {"MousePosition", "Play"},
- MoveUndo = {"_SWS_EDITCURUNDO", prefixRepetitionCount=true},
- NewProjectTab = 40859,
- Next10Track = {"NextTrack", repetitions=10, prefixRepetitionCount=true},
- Next4Beats = {"NextBeat", repetitions=4, prefixRepetitionCount=true},
- Next4Measures = {"NextMeasure", repetitions=4, prefixRepetitionCount=true},
- Next5Track = {"NextTrack", repetitions=5, prefixRepetitionCount=true},
- NextBeat = 40841,
- NextBigItemEnd = {custom.move.nextBigItemEnd, prefixRepetitionCount=true},
- NextBigItemStart = {custom.move.nextBigItemStart, prefixRepetitionCount=true},
- NextEnvelope = {41864, prefixRepetitionCount=true},
- NextEnvelopePoint = {"_SWS_BRMOVEEDITTONEXTENV", prefixRepetitionCount=true},
- NextFolderNear = {"_SWS_SELNEARESTNEXTFOLDER", "ScrollToSelectedTracks", prefixRepetitionCount=true},
- NextItemEnd = {custom.move.nextItemEnd, prefixRepetitionCount=true},
- NextItemStart = {custom.move.nextItemStart, prefixRepetitionCount=true},
- NextMarker = {40173, prefixRepetitionCount=true},
- NextMeasure = {40839, prefixRepetitionCount=true},
- NextNoteEnd = {"SelectNextNote", "EventSelectionEnd", prefixRepetitionCount=true},
- NextNoteSamePitchEnd = {"SelectNextNoteSamePitch", "EventSelectionEnd", prefixRepetitionCount=true},
- NextNoteSamePitchStart = {"SelectNextNoteSamePitch", "EventSelectionStart", prefixRepetitionCount=true},
- NextNoteStart = {"SelectNextNote", "EventSelectionStart", prefixRepetitionCount=true},
- NextRegion = {"SetLoopRegionToNextRegion", "LoopStart", "SetTimeSelectionToLoopSelection", prefixRepetitionCount=true},
- NextTab = {40861, prefixRepetitionCount=true},
- NextTake = {40125, prefixRepetitionCount=true},
- NextTrack = {40285, prefixRepetitionCount=true},
- NextTrackMatchBackward = {"RepeatTrackNameMatchBackward", "ScrollToSelectedTracks", prefixRepetitionCount=true},
- NextTrackMatchForward = {"RepeatTrackNameMatchForward", "ScrollToSelectedTracks", prefixRepetitionCount=true},
- NextTransientInItem = {"SaveItemSelection", "SelectItemsUnderEditCursor", "NextTransientInSelectedItems", "RestoreItemSelection", prefixRepetitionCount=true},
- CalculateTransientGuides = 42028,
- SplitItemAtTransients = "_XENAKIOS_SPLIT_ITEMSATRANSIENTS",
- ClearTransientGuides = 42027,
- AddStretchMarker = 41842,
- DeleteStretchMarker = 41859,
- NextStretchMarker = 41860,
- PrevStretchMarker = 41861,
- IncreaseTransientDetectionThreshold = {40218, prefixRepetitionCount=true},
- DecreaseTransientDetectionThreshold = {40219, prefixRepetitionCount=true},
- IncreaseTransientDetectionSensitivity = {41537, prefixRepetitionCount=true},
- DecreaseTransientDetectionSensitivity = {41536, prefixRepetitionCount=true},
- AdjustTransientDetection = 41208,
- NoOp = 65535,
- NudgeTrackPanLeft10Times = {"NudgeTrackPanLeft", repetitions=10, prefixRepetitionCount=true},
- NudgeTrackPanLeft = {40283, prefixRepetitionCount=true},
- NudgeTrackPanRight10Times = {"NudgeTrackPanRight", repetitions=10, prefixRepetitionCount=true},
- NudgeTrackPanRight = {40284, prefixRepetitionCount=true},
- NudgeTrackPanRight = {40284, prefixRepetitionCount=true},
- NudgeTrackVolumeDownBy1 = {"NudgeTrackVolumeDown", repetitions=20, prefixRepetitionCount=true},
- NudgeTrackVolumeDownBy1Tenth = {"NudgeTrackVolumeDown", prefixRepetitionCount=true, repetitions=2},
- NudgeTrackVolumeUp = {40115, prefixRepetitionCount=true},
- NudgeTrackVolumeUpBy1 = {"NudgeTrackVolumeUp", repetitions=20, prefixRepetitionCount=true,},
- NudgeTrackVolumeUpBy1Tenth = {"NudgeTrackVolumeUp", repetitions=2, prefixRepetitionCount=true},
- OnlySelectItemsCrossingTimeAndTrackSelection = {"UnselectItems", "SelectItemsCrossingTimeAndTrackSelection"},
- OpenInMidiEditor = 40153,
- OpenProject = 40025,
- PasteAbove = {"PrevTrack", "Paste", prefixRepetitionCount=true},
- PasteFxChain = {"_S&M_SMART_PST_FXCHAIN", prefixRepetitionCount=true},
- PasteItem = {40058, prefixRepetitionCount=true},
- Paste = {"_SWS_AWPASTE", prefixRepetitionCount=true},
- Pause = 1008,
- PitchDown = {40050, midiCommand=true, prefixRepetitionCount=true},
- PitchDown7 = {"PitchDown", repetitions=7, prefixRepetitionCount=true},
- PitchDownOctave = {40188, midiCommand=true, prefixRepetitionCount=true},
- PitchUp = {40049, midiCommand=true, prefixRepetitionCount=true},
- PitchUp7 = {"PitchUp", repetitions=7, prefixRepetitionCount=true},
- PitchUpOctave = {40187, midiCommand=true, prefixRepetitionCount=true},
- Play = 1007,
- PlayAndLoop = {"SetLoopSelectionToTimeSelection", "SaveEditCursorPosition", "LoopStart", "Play", "RestoreEditCursorPosition", setTimeSelection=true},
- PlayFromMousePosition = "_BR_PLAY_MOUSECURSOR",
- PlayFromTimeSelectionStart = {"SaveEditCursorPosition", "TimeSelectionStart", "Play", "RestoreEditCursorPosition"},
- PlayMacro = {registerAction=true, metaCommand=true, prefixRepetitionCount=true},
- PlayPositionIgnoreSnap = 40434,
- PlayPosition = {"PlayPositionIgnoreSnap", "SnappedPosition"},
- Prev10Track = {"PrevTrack", repetitions=10, prefixRepetitionCount=true},
- Prev4Beats = {"PrevBeat", repetitions=4, prefixRepetitionCount=true},
- Prev4Measures = {"PrevMeasure", repetitions=4, prefixRepetitionCount=true},
- Prev5Track = {"PrevTrack", repetitions=5, prefixRepetitionCount=true},
- PrevBeat = {40842, prefixRepetitionCount=true},
- PrevBigItemStart = {custom.move.prevBigItemStart, prefixRepetitionCount=true},
- PrevEnvelope = {41863, prefixRepetitionCount=true},
- PrevEnvelopePoint = {"_SWS_BRMOVEEDITTOPREVENV", prefixRepetitionCount=true},
- PrevFolderNear = {"_SWS_SELNEARESTPREVFOLDER", "ScrollToSelectedTracks", prefixRepetitionCount=true},
- PrevItemStart = {custom.move.prevItemStart, prefixRepetitionCount=true},
- PrevMarker = {40172, prefixRepetitionCount=true},
- PrevMeasure = {40840, prefixRepetitionCount=true},
- PrevNoteEnd = {"SelectPrevNote", "EventSelectionEnd", prefixRepetitionCount=true},
- PrevNoteSamePitchEnd = {"SelectPrevNoteSamePitch", "EventSelectionEnd", prefixRepetitionCount=true},
- PrevNoteSamePitchStart = {"SelectPrevNoteSamePitch", "EventSelectionStart", prefixRepetitionCount=true},
- PrevNoteStart = {"SelectPrevNote", "EventSelectionStart", prefixRepetitionCount=true},
- PrevRegion = {"SetLoopRegionToPrevRegion", "LoopStart", "SetTimeSelectionToLoopSelection", prefixRepetitionCount=true},
- PrevTab = {40862, prefixRepetitionCount=true},
- PrevTake = {40126, prefixRepetitionCount=true},
- PrevTrack = {40286, prefixRepetitionCount=true},
- PrevTransientInItem = {"SaveItemSelection", "SelectItemsUnderEditCursor", "PrevTransientInSelectedItems", "RestoreItemSelection", prefixRepetitionCount=true},
- NextTransientInItemMinusFadeTime = {"SaveItemSelection", "SelectItemsUnderEditCursor", "NextTransientInSelectedItemsMinusFadeTime", "RestoreItemSelection", prefixRepetitionCount=true},
- PrevTransientInItemMinusFadeTime = {"SaveItemSelection", "SelectItemsUnderEditCursor", "PrevTransientInSelectedItemsMinusFadeTime", "RestoreItemSelection", prefixRepetitionCount=true},
- NextTransientInSelectedItemsMinusFadeTime = "_XENAKIOS_MOVECURNEXT_TRANSMINUSFADE",
- PrevTransientInSelectedItemsMinusFadeTime = "_XENAKIOS_MOVECURPREV_TRANSMINUSFADE",
- ProjectEnd = custom.move.projectEnd,
- ProjectStart = custom.move.projectStart,
- ProjectTimeline = custom.select.innerProjectTimeline,
- Quantize = {40009, midiCommand=true},
- RecallMark = {lib.marks.recall, registerAction=true},
- RecordConditional = {"Stop", "ToggleRecordConditional"},
- RecordMacro = {metaCommand=true, registerAction=true, registerOptional=true},
- RecordOrStop = "_SWS_RECTOGGLE",
- Record = {"SaveEditCursorPosition", "TimeSelectionStart", "RecordConditional", "RestoreEditCursorPosition", setTimeSelection=true},
- Redo = {40030, prefixRepetitionCount=true},
- Region = custom.select.innerRegion,
- RegionSelectItems = 40717,
- RemoveMarker = 40613,
- RemoveRegion = 40615,
- RemoveTimeSelection = 40635,
- RemoveTrack = 40005,
- RenameTrack = 40696,
- RenameTakeSourceFile = "_XENAKIOS_RENMTAKEANDSOURCE",
- RenameTake = "_XENAKIOS_RENMTAKE",
- RenameTakeAndSourceFile = "_XENAKIOS_RENMTAKEANDSOURCE",
- RenderProject = 40015,
- RenderProjectWithLastSetting = 41824,
- RenderTrack = "_SWS_AWRENDERSTEREOSMART",
- RepeatLastCommand = {metaCommand=true, prefixRepetitionCount=true},
- RepeatTrackNameMatchBackward = lib.repeatTrackNameMatchBackward,
- RepeatTrackNameMatchForward = lib.repeatTrackNameMatchForward,
- ResetAllControlSurfaceDevices = 42348,
- ResetAllMidiDevices = 41175,
- ResetControlDevices = {"ResetAllMidiDevices", "ResetAllControlSurfaceDevices"},
- ResetSelection = {"SelectOnlyCurrentTrack", "UnselectItems", "UnselectEnvelopePoints", "UnselectAllEvents"},
- Reset = {"Stop", "SetModeNormal", "SetRecordModeNormal", "ResetSelection"},
- ResetTrackToNormal = {"UnarmSelectedTracks", "UnarmAllEnvelopes", "SetAutomationModeTrimRead"},
- RestoreEditCursorPosition = "_BR_RESTORE_CURSOR_POS_SLOT_16",
- RestoreItemSelection = "_SWS_RESTALLSELITEMS1",
- RestoreLastItemSelection = "_SWS_RESTLASTSEL",
- RestoreLoopSelection = "_SWS_RESTLOOP5",
- RestoreTimeSelection = "_SWS_RESTTIME5",
- RestoreTrackSelection = "_SWS_TOGSAVESEL",
- Right10Pix = {"_XENAKIOS_MOVECUR10PIX_RIGHT", prefixRepetitionCount=true},
- Right40Pix = {"Right10Pix", repetitions=4, prefixRepetitionCount=true},
- RightGridDivision = {40647, prefixRepetitionCount=true},
- RightMidiGridDivision = {40048, midiCommand=true, prefixRepetitionCount=true},
- SaveEditCursorPosition = "_BR_SAVE_CURSOR_POS_SLOT_16",
- SaveItemSelection = "_SWS_SAVEALLSELITEMS1",
- SaveLoopSelection = "_SWS_SAVELOOP5",
- SaveProject = 40026,
- SaveProjectWithNewVersion = 41895,
- SaveTimeSelection = "_SWS_SAVETIME5",
- SaveTrackSelection = "_SWS_SAVESEL",
- ScrollToPlayPosition = 40150,
- ScrollToEditCursor = "_SWS_HSCROLL10",
- ScrollToSelectedTracks = 40913,
- SelectAllItems = 40182,
- SelectAllNotesAtPitch = {41746, midiCommand=true},
- SelectAllTracks = 40296,
- SelectedItems = {"RemoveTimeSelection", "_SWS_SAFETIMESEL"},
- SelectedNotes = {40752, midiCommand=true},
- SelectEnvelopePoints = 40330,
- SelectEventsInTimeSelection = {40876, midiCommand=true},
- SelectFirstItemOnSelectedTracks = "_XENAKIOS_SELFIRSTITEMSOFTRACKS",
- SelectFirstOfSelectedTracks = "_XENAKIOS_SELFIRSTOFSELTRAX",
- SelectFolderChildren = "_SWS_SELCHILDREN",
- SelectFolderParent = "_SWS_SELPARENTS",
- SelectFolder = "_SWS_SELCHILDREN2",
- Selection = "NoOp",
- SelectItemsAndSplit = {"OnlySelectItemsCrossingTimeAndTrackSelection", "SplitItemsAtTimeSelection"},
- SelectItemsCrossingTimeAndTrackSelection = 40718,
- SelectItemsInGroups = 40034,
- SelectItemsOnTrack = 40421,
- SelectItems = "SelectItemsCrossingTimeAndTrackSelection",
- SelectItemsUnderEditCursor = "_XENAKIOS_SELITEMSUNDEDCURSELTX",
- SelectLastOfSelectedTracks = "_XENAKIOS_SELLASTOFSELTRAX",
- SelectLastTouchedTrack = 40505,
- SelectNearestNote = {40425, midiCommand=true},
- SelectNextNote = {40413, midiCommand=true},
- SelectNextNoteSamePitch = {40428, midiCommand=true},
- SelectNoteClosestToEditCursor = {40426, midiCommand=true},
- SelectNotes = "SelectNotesStartingInTimeSelection",
- SelectNotesStartingInTimeSelection = {40877, midiCommand=true},
- SelectOnlyCurrentTrack = custom.select.onlyCurrentTrack,
- SelectOnlyFoldersChildren = "_SWS_SELCHILDREN",
- SelectPrevNote = {40414, midiCommand=true},
- SelectPrevNoteSamePitch = {40427, midiCommand=true},
- SelectTracks = {setTrackSelection=true},
- ToggleItemDefaultFadeInAndOut = 41194,
- SetAutomationModeLatch = 40404,
- SetAutomationModeLatchAndArm = {"SetAutomationModeLatch", "ArmAllEnvelopes"},
- SetAutomationModeLatchPreview = 42023,
- SetAutomationModeRead = 40401,
- SetAutomationModeTouch = 40402,
- SetAutomationModeTrimRead = 40400,
- SetRippleEditAllTracks = 40311,
- SetRippleEditOff = 40309,
- SetRippleEditPerTrack = 40310,
- FirstTrackWithItem = custom.move.firstTrackWithItem,
- DuplicateTimeline = {"SaveTrackSelection", "SelectAllTracks", "CopyItems", "TimeSelectionEnd", "SetRippleEditAllTracks", "FirstTrackWithItem", "Paste", "SetRippleEditOff", "RestoreTrackSelection", prefixRepetitionCount=true},
- ExplodeTakesInPlace = 40642,
- ExplodeTakesInOrder = 40643,
- ToggleBetweenReadAndTouchAutomationMode = 41109,
- QuantizeItems = 40316,
- ExplodeTakesInAcrossTracks = 40224,
- SetAutomationModeWrite = 40403,
- SetEnvelopeShapeBezier = 40683,
- OpenConsole = "_SWSCONSOLE",
- SetEnvelopeShapeFastEnd = 40429,
- SetEnvelopeShapeFastStart = 40428,
- SetEnvelopeShapeLinear = 40189,
- SetEnvelopeShapeSlowStart = 40424,
- SetEnvelopeShapeSquare = 40190,
- SetFirstSelectedTrackAsLastTouchedTrack = 40914,
- SetGlobalAutomationModeLatch = 40881,
- SetGlobalAutomationModeLatchPreview = 42022,
- SetGlobalAutomationModeOff = 40876,
- SetGlobalAutomationModeRead = 40879,
- SetGlobalAutomationModeTouch = 40880,
- SetGlobalAutomationModeTrimRead = 40878,
- SetGlobalAutomationModeWrite = 40882,
- SetGridDivision = custom.setGridDivision,
- SetItemFadeBoundaries = {"SaveItemSelection", "UnselectItems", "SelectItemsCrossingTimeAndTrackSelection", "SetSelectedItemFadeBoundaries", "RestoreItemSelection"},
- SetItemsTimebaseToBeatsPosLengthAndRate = "_SWS_AWITEMTBASEBEATALL",
- ViewTakeEnvelopes = 41974,
- SetItemsTimebaseToBeatsPos = "_SWS_AWITEMTBASEBEATPOS",
- SetItemsTimebaseToDefault = "_SWS_AWITEMTBASEPROJ",
- SetItemsTimebaseToTime = "_SWS_AWITEMTBASETIME",
- SetLoopEnd = 40223,
- SetLoopRegionToNextRegion = "_SWS_SELNEXTREG",
- SetLoopRegionToPrevRegion = "_SWS_SELPREVREG",
- SetLoopSelectionToTimeSelection = 40622,
- SetLoopStart = 40222,
- SetMidiGridDivision = custom.setMidiGridDivision,
- SetModeNormal = lib.state.setModeNormal,
- PasteItemFxChain = {"_S&M_COPYFXCHAIN9", prefixRepetitionCount=true},
- SetModeVisualTimeline = lib.state.setModeVisualTimeline,
- ClearSelectedTimeline = custom.clearSelectedTimeline,
- ClearTimelineSelectionAndSetModeVisualTimeline = {"ClearSelectedTimeline", "SetModeVisualTimeline"},
- SetModeVisualTrack = lib.state.setModeVisualTrack,
- SetModeRecord = lib.state.setModeRecord,
- SetProjectTimebaseToBeatsPosLengthAndRate = "_SWS_AWTBASEBEATALL",
- SetProjectTimebaseToBeatsPos = "_SWS_AWTBASEBEATPOS",
- SetProjectTimebaseToTime = "_SWS_AWTBASETIME",
- SetRecordInput = 40496,
- SetRecordMidiOutput = 40500,
- SetRecordMidiOverdub = 40503,
- SetRecordMidiReplace = 40504,
- SetRecordMidiTouchReplace = 40852,
- SetRecordModeNormal = 40252,
- SetRecordMonitorOnly = 40498,
- SetSelectedItemFadeBoundaries = "_SWS_AWFADESEL",
- SetTimeSelectionEnd = 40626,
- SetTimeSelectionStart = 40625,
- SetTimeSelectionToLoopSelection = 40623,
- SetTrackMidiAllChannels = "_S&M_MIDI_INPUT_ALL_CH",
- TimeSelectionShiftedLeft = 40037,
- TimeSelectionShiftedRight = 40038,
- ShowActionList = 40605,
- ShowNextFx= {"_S&M_WNONLY2", prefixRepetitionCount=true},
- ShowPreferences = 40016,
- ShowPrevFx = {"_S&M_WNONLY1", prefixRepetitionCount=true},
- ShowProjectSettings = 40021,
- ShowRoutingMatrix = 40251,
- ShowTrackFreezeDetails = 41654,
- ToggleShowTrackManager = 40906,
- ToggleShowTrackRouting = 40293,
- ToggleShowWiringDiagram = 42031,
- SnappedPosition = custom.move.snap,
- AddAndNameSnapshot = "_SWSSNAPSHOT_NEWEDIT",
- CopyCurrentSnapshot = "_SWSSNAPSHOT_COPY",
- PasteSnapshot = "_SWSSNAPSHOT_PASTE",
- DeleteCurrentSnapshot = "_SWSSNAPSHOT_DELCUR",
- DeleteTracksFromCurrentSnapshot = "_SWSSNAPSHOT_DEL",
- ToggleSnapshotsWindow = "_SWSSNAPSHOT_OPEN",
- RecallCurrentSnapshot = "_SWSSNAPSHOT_GET",
- RecallNextSnapshot = {"_SWSSNAPSHOT_GET_NEXT", prefixRepetitionCount=true},
- RecallPrevSnapshot = {"_SWSSNAPSHOT_GET_PREVIOUS", prefixRepetitionCount=true},
- RecallSnapshot1 = "_SWSSNAPSHOT_GET1",
- RecallSnapshot2 = "_SWSSNAPSHOT_GET2",
- RecallSnapshot3 = "_SWSSNAPSHOT_GET3",
- RecallSnapshot4 = "_SWSSNAPSHOT_GET4",
- RecallSnapshot5 = "_SWSSNAPSHOT_GET5",
- RecallSnapshot6 = "_SWSSNAPSHOT_GET6",
- RecallSnapshot7 = "_SWSSNAPSHOT_GET7",
- RecallSnapshot8 = "_SWSSNAPSHOT_GET8",
- RecallSnapshot9 = "_SWSSNAPSHOT_GET9",
- SaveTracksToCurrentSnapshot = "_SWSSNAPSHOT_SAVE",
- DeleteAllSnapshots = "_SWSSNAPSHOT_DELALL",
- SplitItemsAtEditCursor = {"UnselectItems", "SelectItemsUnderEditCursor", "SplitItemsUnderEditCursor", "UnselectItems"},
- SplitItemsAtTimeSelection = custom.splitItemsAtTimeSelection,
- SplitItemsUnderEditCursor = 40757,
- StartOfSel = {40440, midiCommand=true},
- StartOfSelectedItems = 41173,
- StartStop = 40044,
- Stop = 1016,
- Stop = 40667,
- StopRecordMacro = {metaCommand=true},
- SwitchTimelineSelectionSide = lib.state.switchTimelineSelectionSide,
- TapTempo = 1134,
- TimeSelectionEnd = 40631,
- InsertTrackFromTemplateSlot1 = "_S&M_ADD_TRTEMPLATE1",
- InsertTrackFromTemplateSlot2 = "_S&M_ADD_TRTEMPLATE2",
- InsertTrackFromTemplateSlot3 = "_S&M_ADD_TRTEMPLATE3",
- InsertTrackFromTemplateSlot4 = "_S&M_ADD_TRTEMPLATE4",
- CreateNewSnapshotWithTracks = "_SWSSNAPSHOT_NEWSEL",
- RecallPreviousSnapshot = "_SWSSNAPSHOT_GET_PREVIOUS",
- RecallCurrentSnapshot = "_SWSSNAPSHOT_GET",
- RecallNextSnapshot = "_SWSSNAPSHOT_GET_NEXT",
- SaveTrackAsTemplate = 40392,
- TimeSelection = "NoOp",
- TimeSelectionStart = 40630,
- ToggleArmAllEnvelopes = "_S&M_TGLARMALLENVS",
- ToggleArmEnvelope = 40863,
- ToggleAutoCrossfade = 40041,
- ToggleCountInBeforePlayback = "_SWS_AWCOUNTPLAYTOG",
- ToggleCountInBeforeRec = "_SWS_AWCOUNTRECTOG",
- ToggleEnvelopePointsMoveWithItems = 40070,
- ToggleFloatingWindows = 41074,
- ToggleFxBypass = 8,
- ToggleTakeFxBypass = "_S&M_TGL_TAKEFX_BYP",
- ToggleEnvelopeBypass = 40883,
- ToggleLoop = 1068,
- ToggleLoopSelectionFollowsTimeSelection = 40621,
- ToggleMetronome = 40364,
- ToggleMidiEditorUsesMainGridDivision = 42010,
- ToggleMidiSnap = {1014, midiCommand=true},
- ToggleMute = 6,
- ToggleMuteItem = 40175,
- TogglePanEnvelope = 40407,
- TogglePlaybackAutoScroll = 40036,
- TogglePlaybackPreroll = 41818,
- ToggleRecord = {"SetRecordModeNormal", 1013},
- StopRecord = {"StartStop", "SetModeNormal"},
- ToggleRecordConditional = "_SWS_AWRECORDCOND",
- ToggleRecordingAutoScroll = 40262,
- ToggleRecordingPreroll = 41819,
- ToggleRecordToTapeMode = 41186,
- ToggleShowRegionMarkerManager = 40326,
- ToggleShowAllEnvelope = 41151,
- ToggleShowAllEnvelopeGlobal = 41152,
- ToggleShowFx1 = "_S&M_TOGLFLOATFX1",
- ToggleShowFx2 = "_S&M_TOGLFLOATFX2",
- ToggleShowFx3 = "_S&M_TOGLFLOATFX3",
- ToggleShowFx4 = "_S&M_TOGLFLOATFX4",
- ToggleShowFx5 = "_S&M_TOGLFLOATFX5",
- ToggleShowFx6 = "_S&M_TOGLFLOATFX6",
- ToggleShowFx7 = "_S&M_TOGLFLOATFX7",
- ToggleShowFx8 = "_S&M_TOGLFLOATFX8",
- ToggleShowFxChain = "_S&M_TOGLFXCHAIN",
- ToggleShowTakeFxChain = 40638,
- ToggleShowFx = "_S&M_WNTGL5",
- ToggleShowSelectedEnvelope = 40884,
- ToggleShowTracksInMixer = 41592,
- ToggleSnap = 1157,
- ToggleSolo = 7,
- ToggleSoloItem = 41557,
- UnsoloAllItems = 41185,
- ToggleAutomaticRecordArm = 40740,
- ToggleStopAtEndOfTimeSelectionIfNoRepeat = 41834,
- ToggleViewMixer = 40078,
- ToggleVolumeEnvelope = 40406,
- SelectWidthEnvelope = 41870,
- ToggleTakeMuteEnvelope = 40695,
- ToggleTakePanEnvelope = 40694,
- ToggleTakePitchEnvelope = 41612,
- ToggleTakeVolumeEnvelope = 40693,
- SetTrackInputToMatchFirstSelected = "_SWS_INPUTMATCH",
- TrackToggleSendToParent = "_SWS_TOGMPSEND",
- TrackWithNumber = custom.move.trackWithNumber,
- TrimItemLeftEdge = 41305,
- TrimItemRightEdge = 41311,
- TrimSelectedNoteLeftEdgeToEditCursor = 40790,
- TrimSelectedNoteRightEdgeToEditCursor = 40791,
- UnarmAllEnvelopes = 41163,
- UnarmSelectedTracks = "_XENAKIOS_SELTRAX_RECUNARMED",
- UncollapseFolder = "_SWS_UNCOLLAPSE",
- Undo = {40029, prefixRepetitionCount=true},
- UnfreezeTrack = 41644,
- UnmuteAllTracks = 40339,
- UnselectAllEvents = {40214, midiCommand=true},
- UnselectEnvelopePoints = 40331,
- UnselectItems = 40289,
- UnselectTracks = 40297,
- UnsoloAllTracks = 40340,
- VerticalScrollEnd = "_XENAKIOS_TVPAGEEND",
- VerticalScrollStart = "_XENAKIOS_TVPAGEHOME",
- ToggleShowInputFxChain = 40844,
- ViewFxChainMaster = 40846,
- ZoomAllItems = {"SaveItemSelection", "SelectAllItems", "ZoomItemSelection", "RestoreItemSelection"},
- ZoomAllTracks = {"SaveTrackSelection", "SelectAllTracks", "ZoomTrackSelection", "RestoreTrackSelection"},
- ZoomInHoriz = {1012, prefixRepetitionCount=true},
- ZoomInVert = {40111, prefixRepetitionCount=true},
- ZoomItemSelection = "_SWS_HZOOMITEMS",
- ZoomOutHoriz = {1011, prefixRepetitionCount=true},
- ZoomOutVert = {40112, prefixRepetitionCount=true},
- ZoomProjectTimeline = 40295,
- ZoomProject = {"ZoomAllTracks", "ZoomAllItems"},
- ZoomRedo = {"_SWS_REDOZOOM", prefixRepetitionCount=true},
- ZoomTimeAndTrackSelection = {"ZoomTrackSelection", "ZoomTimeSelection"},
- ZoomTimeSelection = 40031,
- ZoomTrackSelection = "_SWS_VZOOMFITMIN",
- ZoomUndo = {"_SWS_UNDOZOOM", prefixRepetitionCount=true},
- NudgeTrackVolumeDown = 40116, -- 0.05 dB
- PlayAndSkipTimeSelection = 40317,
-}
diff --git a/definitions/defaults/global.lua b/definitions/defaults/global.lua
deleted file mode 100644
index 628a829e..00000000
--- a/definitions/defaults/global.lua
+++ /dev/null
@@ -1,285 +0,0 @@
-return {
- timeline_motion = {
- ["0"] = "ProjectStart",
- ["f"] = "PlayPosition",
- ["x"] = "MousePosition",
- [""] = "PrevMarker",
- [""] = "NextMarker",
- [""] = "Left10Pix",
- [""] = "Right10Pix",
- ["h"] = "LeftGridDivision",
- ["l"] = "RightGridDivision",
- ["H"] = "PrevMeasure",
- ["L"] = "NextMeasure",
- [""] = "Prev4Measures",
- [""] = "Next4Measures",
- ["`"] = "MarkedTimelinePosition",
- },
- timeline_operator = {
- ["r"] = "Record",
- [""] = "DuplicateTimeline",
- ["t"] = "PlayAndLoop",
- ["|"] = "CreateMeasures",
- [""] = "CreateProjectTempo"
- },
- timeline_selector = {
- ["~"] = "MarkedRegion",
- [""] = "NextRegion",
- [""] = "PrevRegion",
- ["!"] = "LoopSelection",
- ["i"] = {"+inner", {
- [""] = "AutomationItem",
- ["l"] = "AllTrackItems",
- ["r"] = "Region",
- ["p"] = "ProjectTimeline",
- ["w"] = "Item",
- ["W"] = "BigItem",
- }},
- },
- visual_timeline_command = {
- ["v"] = "SetModeNormal",
- ["o"] = "SwitchTimelineSelectionSide",
- },
- command = {
- ["."] = "RepeatLastCommand",
- ["@"] = "PlayMacro",
- [","] = "RecordMacro",
- ["m"] = "Mark",
- ["~"] = "MarkedRegion",
- [""] = "DeleteMark",
- [""] = "NextRegion",
- [""] = "PrevRegion",
- [""] = "Redo",
- ["u"] = "Undo",
- ["R"] = "ToggleRecord",
- ["T"] = "Play",
- ["tt"] = "PlayFromTimeSelectionStart",
- [""] = "PlayFromMousePosition",
- [""] = "PlayFromMouseAndSoloTrack",
- ["F"] = "Pause",
- [""] = "ZoomUndo",
- [""] = "ZoomRedo",
- ["v"] = "SetModeVisualTimeline",
- [""] = "ClearTimelineSelectionAndSetModeVisualTimeline",
- [""] = "ToggleViewMixer",
- [""] = "Reset",
- [""] = "StartStop",
- ["X"] = "MoveToMousePositionAndPlay",
- ["dr"] = "RemoveRegion",
- ["!"] = "ToggleLoop",
- [""] = "ShowNextFx",
- [""] = "ShowPrevFx",
- [""] = "FocusMain",
- [""] = "ToggleShowFx",
- [""] = "CloseFx",
- [""] = "MidiLearnLastTouchedFxParam",
- [""] = "ModulateLastTouchedFxParam",
- [""] = "ShowBindingList",
- [""] = "TapTempo",
- ["q"] = {"+options", {
- ["p"] = "TogglePlaybackPreroll",
- ["r"] = "ToggleRecordingPreroll",
- ["z"] = "TogglePlaybackAutoScroll",
- ["v"] = "ToggleLoopSelectionFollowsTimeSelection",
- ["s"] = "ToggleSnap",
- ["m"] = "ToggleMetronome",
- ["t"] = "ToggleStopAtEndOfTimeSelectionIfNoRepeat",
- ["x"] = "ToggleAutoCrossfade",
- ["e"] = "ToggleEnvelopePointsMoveWithItems",
- ["c"] = "CycleRippleEditMode",
- ["f"] = "ResetFeedbackWindow",
- }},
- [""] = { "+leader commands", {
- [""] = "ShowActionList",
- ["m"] = { "+midi", {
- ["g"] = "SetMidiGridDivision",
- ["q"] = "Quantize",
- }},
- ["r"] = { "+recording", {
- ["o"] = "SetRecordMidiOutput",
- ["d"] = "SetRecordMidiOverdub",
- ["t"] = "SetRecordMidiTouchReplace",
- ["R"] = "SetRecordMidiReplace",
- ["v"] = "SetRecordMonitorOnly",
- ["r"] = "SetRecordInput",
- [","] = {"+options", {
- ["n"] = "SetRecordModeNormal",
- ["s"] = "SetRecordModeItemSelectionAutoPunch",
- ["v"] = "SetRecordModeTimeSelectionAutoPunch",
- ["p"] = "ToggleRecordingPreroll",
- ["z"] = "ToggleRecordingAutoScroll",
- ["t"] = "ToggleRecordToTapeMode",
- }},
- }},
- ["a"] = { "+automation", {
- ["r"] = "SetAutomationModeTrimRead",
- ["R"] = "SetAutomationModeRead",
- ["l"] = "SetAutomationModeLatch",
- ["g"] = "SetAutomationModeLatchAndArm",
- ["p"] = "SetAutomationModeLatchPreview",
- ["t"] = "SetAutomationModeTouch",
- ["w"] = "SetAutomationModeWrite",
- }},
- ["s"] = { "+selected items", {
- ["j"] = "NextTake",
- ["k"] = "PrevTake",
- ["m"] = "ToggleMuteItem",
- ["d"] = "DeleteActiveTake",
- ["c"] = "CropToActiveTake",
- ["o"] = "OpenInMidiEditor",
- ["n"] = "ItemNormalize",
- ["x"] = {"+explode takes", {
- ["p"] = "ExplodeTakesInPlace",
- ["o"] = "ExplodeTakesInOrder",
- ["a"] = "ExplodeTakesInAcrossTracks"
- }},
- ["#"] = {"+fade", {
- ["i"] = "CycleItemFadeInShape",
- ["o"] = "CycleItemFadeOutShape",
- }},
- ["t"] = {"+transients", {
- ["a"] = "AdjustTransientDetection",
- ["t"] = "CalculateTransientGuides",
- ["c"] = "ClearTransientGuides",
- ["s"] = "SplitItemAtTransients"
- }},
- ["e"] = {"+envelopes", {
- ["s"] = "ViewTakeEnvelopes",
- ["m"] = "ToggleTakeMuteEnvelope",
- ["p"] = "ToggleTakePanEnvelope",
- ["P"] = "ToggleTakePitchEnvelope",
- ["v"] = "ToggleTakeVolumeEnvelope",
- }},
- ["f"] = {"+fx", {
- ["a"] = "ApplyFxToItem",
- ["p"] = "PasteItemFxChain",
- ["d"] = "CutItemFxChain",
- ["y"] = "CopyItemFxChain",
- ["c"] = "ToggleShowTakeFxChain",
- ["b"] = "ToggleTakeFxBypass",
- }},
- ["r"] = {"+rename", {
- ["s"] = "RenameTakeSourceFile",
- ["t"] = "RenameTake",
- ["r"] = "RenameTakeAndSourceFile",
- ["a"] = "AutoRenameTake",
- }},
- ["b"] = { "+timebase", {
- ["t"] = "SetItemsTimebaseToTime",
- ["b"] = "SetItemsTimebaseToBeatsPos",
- ["r"] = "SetItemsTimebaseToBeatsPosLengthAndRate",
- }},
- }},
- ["t"] = { "+track", {
- ["R"] = "RenderTrack",
- ["r"] = "RenameTrack",
- ["m"] = "CycleRecordMonitor",
- ["f"] = "CycleFolderState",
- ["y"] = "SaveTrackAsTemplate",
- ["p"] = "InsertTrackFromTemplate",
- ["1"] = "InsertTrackFromTemplateSlot1",
- ["2"] = "InsertTrackFromTemplateSlot2",
- ["3"] = "InsertTrackFromTemplateSlot3",
- ["4"] = "InsertTrackFromTemplateSlot4",
- ["c"] = "InsertClickTrack",
- ["v"] = "InsertVirtualInstrumentTrack",
- ["x"] = {"+routing", {
- ["p"] = "TrackToggleSendToParent",
- ["s"] = "ToggleShowTrackRouting",
- }},
- ["F"] = { "+freeze", {
- ["f"] = "FreezeTrack",
- ["u"] = "UnfreezeTrack",
- ["s"] = "ShowTrackFreezeDetails",
- }},
- }},
- ["e"] = {"+envelopes", {
- ["t"] = "ToggleShowAllEnvelope",
- ["a"] = "ToggleArmAllEnvelopes",
- ["A"] = "UnarmAllEnvelopes",
- ["d"] = "ClearAllEnvelope",
- ["v"] = "ToggleVolumeEnvelope",
- ["p"] = "TogglePanEnvelope",
- ["w"] = "SelectWidthEnvelope",
- ["s"] = {"+selected", {
- ["d"] = "ClearEnvelope",
- ["a"] = "ToggleArmEnvelope",
- ["t"] = "ToggleShowSelectedEnvelope",
- }},
- }},
- ["f"] = { "+fx", {
- ["a"] = "AddFx",
- ["c"] = "ToggleShowFxChain",
- ["d"] = "CutFxChain",
- ["y"] = "CopyFxChain",
- ["p"] = "PasteFxChain",
- ["b"] = "ToggleFxBypass",
- ["i"] = {"+input", {
- ["s"] = "ToggleShowInputFxChain",
- ["d"] = "CutInputFxChain",
- }},
- ["s"] = {"+show", {
- ["1"] = "ToggleShowFx1",
- ["2"] = "ToggleShowFx2",
- ["3"] = "ToggleShowFx3",
- ["4"] = "ToggleShowFx4",
- ["5"] = "ToggleShowFx5",
- ["6"] = "ToggleShowFx6",
- ["7"] = "ToggleShowFx7",
- ["8"] = "ToggleShowFx8"
- }},
- }},
- ["g"] = { "+global", {
- ["g"] = "SetGridDivision",
- ["r"] = "ResetControlDevices",
- [","] = "ShowPreferences",
- ["S"] = "UnsoloAllItems",
- ["s"] = {"+show/hide", {
- ["x"] = "ToggleShowRoutingMatrix",
- ["w"] = "ToggleShowWiringDiagram",
- ["t"] = "ToggleShowTrackManager",
- ["m"] = "ShowMasterTrack",
- ["M"] = "HideMasterTrack",
- ["r"] = "ToggleShowRegionMarkerManager",
- }},
- ["f"] = {"+fx", {
- ["x"] = "CloseAllFxChainsAndWindows",
- ["c"] = "ViewFxChainMaster",
- }},
- ["e"] = { "+envelope", {
- ["t"] = "ToggleShowAllEnvelopeGlobal",
- }},
- ["t"] = { "+track", {
- ["t"] = "ToggleAutomaticRecordArm",
- ["a"] = "ClearAllRecordArm",
- ["s"] = "UnsoloAllTracks",
- ["m"] = "UnmuteAllTracks",
- }},
- ["a"] = { "+automation", {
- ["r"] = "SetGlobalAutomationModeTrimRead",
- ["l"] = "SetGlobalAutomationModeLatch",
- ["p"] = "SetGlobalAutomationModeLatchPreview",
- ["t"] = "SetGlobalAutomationModeTouch",
- ["R"] = "SetGlobalAutomationModeRead",
- ["w"] = "SetGlobalAutomationModeWrite",
- ["S"] = "SetGlobalAutomationModeOff",
- }},
- }},
- ["p"] = { "+project", {
- [","] = "ShowProjectSettings",
- ["n"] = "NextTab",
- ["p"] = "PrevTab",
- ["s"] = "SaveProject",
- ["o"] = "OpenProject",
- ["c"] = "NewProjectTab",
- ["x"] = "CloseProject",
- ["C"] = "CleanProjectDirectory",
- ["S"] = "SaveProjectWithNewVersion",
- ["r"] = { "+render", {
- ["."] = "RenderProjectWithLastSetting",
- ["r"] = "RenderProject",
- }},
- }},
- }},
- },
-}
diff --git a/definitions/defaults/main.lua b/definitions/defaults/main.lua
deleted file mode 100644
index 5632ff93..00000000
--- a/definitions/defaults/main.lua
+++ /dev/null
@@ -1,117 +0,0 @@
-return {
- track_motion = {
- ["G"] = "LastTrack",
- ["gg"] = "FirstTrack",
- ["J"] = "NextFolderNear",
- ["K"] = "PrevFolderNear",
- ["/"] = "MatchedTrackForward",
- ["?"] = "MatchedTrackBackward",
- ["n"] = "NextTrackMatchForward",
- ["N"] = "NextTrackMatchBackward",
- ["j"] = "NextTrack",
- ["k"] = "PrevTrack",
- [""] = "Next5Track",
- [""] = "Prev5Track",
- },
- visual_track_command = {
- ["V"] = "SetModeNormal",
- [""] = "NudgeTrackPanLeft",
- [""] = "NudgeTrackPanRight",
- [""] = "NudgeTrackPanLeft10Times",
- [""] = "NudgeTrackPanRight10Times",
- },
- track_selector = {
- ["'"] = "MarkedTracks",
- ["F"] = "FolderParent",
- ["i"] = {"+inner", {
- ["c"] = "InnerFolder",
- ["f"] = "InnerFolderAndParent",
- ["g"] = "AllTracks",
- }},
- },
- track_operator = {
- ['"'] = {"+snapshots", {
- ['s'] = "SaveTracksToCurrentSnapshot",
- ["c"] = "CreateNewSnapshotWithTracks",
- ["d"] = "DeleteTracksFromCurrentSnapshot",
- }},
- ["z"] = "ZoomTrackSelection",
- [""] = "MakeFolder",
- ["d"] = "CutTrack",
- ["a"] = "ArmTracks",
- ["s"] = "SelectTracks",
- ["S"] = "ToggleSolo",
- ["M"] = "ToggleMute",
- ["y"] = "CopyTrack",
- [""] = "ColorTrackGradient",
- [""] = "ColorTrack",
- },
- timeline_operator = {
- ["s"] = "SelectItemsAndSplit",
- [""] = "CopyAndFitByLooping",
- [""] = "SelectEnvelopePoints",
- ["d"] = "CutItems",
- ["y"] = "CopyItems",
- [""] = "CopyItems",
- [""] = "CutEnvelopePoints",
- [""] = "CopyEnvelopePoints",
- [""] = "DeleteTimeline",
- ["g"] = "GlueItems",
- ["#"] = "SetItemFadeBoundaries",
- ["z"] = "ZoomTimeSelection",
- ["Z"] = "ZoomTimeAndTrackSelection",
- ["c"] = {"+change/fit", {
- ["a"] = "InsertOrExtendMidiItem",
- ["c"] = "FitByLoopingNoExtend",
- ["f"] = "FitByLooping",
- ["p"] = "FitByPadding",
- ["s"] = "FitByStretching",
- }},
- },
- timeline_selector = {
- ["s"] = "SelectedItems",
- },
- timeline_motion = {
- ["B"] = "PrevBigItemStart",
- ["E"] = "NextBigItemEnd",
- ["W"] = "NextBigItemStart",
- ["b"] = "PrevItemStart",
- ["e"] = "NextItemEnd",
- ["w"] = "NextItemStart",
- ["$"] = "LastItemEnd",
- },
- command = {
- [""] = "CycleFolderCollapsedState",
- ["zp"] = "ZoomProject",
- ["D"] = "CutSelectedItems",
- ["Y"] = "CopySelectedItems",
- ["V"] = "SetModeVisualTrack",
- [""] = "NextEnvelope",
- [""] = "PrevEnvelope",
- [""] = "ZoomInVert",
- [""] = "ZoomOutVert",
- ["+"] = "ZoomInHoriz",
- ["-"] = "ZoomOutHoriz",
- [";"] = "MoveItemToEditCursor",
- ["dd"] = "CutTrack",
- ["aa"] = "ArmTracks",
- ["O"] = "EnterTrackAbove",
- ["o"] = "EnterTrackBelow",
- ["p"] = "Paste",
- [""] = "Paste",
- ["yy"] = "CopyTrack",
- ["zz"] = "ScrollToSelectedTracks",
- ["%"] = "SplitItemsAtEditCursor",
- ["~"] = "MarkedTracks",
- [""] = "NudgeTrackVolumeDownBy1Tenth",
- [""] = "NudgeTrackVolumeUpBy1Tenth",
- [""] = "NudgeTrackVolumeDownBy1",
- [""] = "NudgeTrackVolumeUpBy1",
- [""] = "ShiftEnvelopePointsDownATinyBit",
- [""] = "ShiftEnvelopePointsUpATinyBit",
- [""] = "ShiftEnvelopePointsDown",
- [""] = "ShiftEnvelopePointsUp",
- [""] = "SelectItemsUnderEditCursor",
- ["'"] = "MarkedTracks",
- },
-}
diff --git a/definitions/defaults/midi.lua b/definitions/defaults/midi.lua
deleted file mode 100644
index cbf0a73e..00000000
--- a/definitions/defaults/midi.lua
+++ /dev/null
@@ -1,55 +0,0 @@
-return {
- timeline_selector = {
- ["s"] = "SelectedNotes",
- },
- timeline_operator = {
- ["d"] = "CutNotes",
- ["y"] = "CopyNotes",
- ["c"] = "FitNotes",
- ["a"] = "InsertNote",
- ["g"] = "JoinNotes",
- ["s"] = "SelectNotes",
- ["z"] = "MidiZoomTimeSelection",
- },
- timeline_motion = {
- ["l"] = "RightMidiGridDivision",
- ["h"] = "LeftMidiGridDivision",
- ["("] = "MidiTimeSelectionStart",
- [")"] = "MidiTimeSelectionEnd",
- ["w"] = "NextNoteStart",
- ["b"] = "PrevNoteStart",
- ["W"] = "NextNoteSamePitchStart",
- ["B"] = "PrevNoteSamePitchStart",
- ["e"] = "EventSelectionEnd",
- },
- command = {
- ["n"] = "AddNextNoteToSelection",
- ["N"] = "AddPrevNoteToSelection",
- ["+"] = "MidiZoomInVert",
- ["-"] = "MidiZoomOutVert",
- [""] = "MidiZoomInHoriz",
- [""] = "MidiZoomOutHoriz",
- ["Z"] = "CloseWindow",
- ["p"] = "MidiPaste",
- ["S"] = "UnselectAllEvents",
- ["Y"] = "CopySelectedEvents",
- ["D"] = "CutSelectedEvents",
- ["k"] = "PitchUp",
- ["j"] = "PitchDown",
- ["K"] = "PitchUpOctave",
- ["zp"] = "MidiZoomContent",
- ["J"] = "PitchDownOctave",
- [""] = "PitchUpOctave",
- [""] = "PitchDownOctave",
- [""] = "PitchUp7",
- [""] = "PitchDown7",
- ["V"] = "SelectAllNotesAtPitch",
- [""] = "MoveNoteUpSemitone",
- [""] = "MoveNoteDownSemitone",
- [""] = "MoveNoteUpOctave",
- [""] = "MoveNoteDownOctave",
- [""] = "MoveNoteRight",
- [""] = "MoveNoteLeft",
- },
-}
-
diff --git a/definitions/extended_defaults/actions.lua b/definitions/extended_defaults/actions.lua
deleted file mode 100644
index 6978782b..00000000
--- a/definitions/extended_defaults/actions.lua
+++ /dev/null
@@ -1,603 +0,0 @@
-local lib = require('library')
-local custom = require('custom_actions')
-
-return {
- ActivateNextMidiItem = {40833, midiCommand=true},
- ActivatePrevMidiItem = {40834, midiCommand=true},
- AddFx = 40271,
- AddNextNoteToSelection = {40422, midiCommand=true},
- AddPrevNoteToSelection = {40421, midiCommand=true},
- InsertVirtualInstrumentTrack = 40701,
- InsertClickTrack = "_SWS_AWINSERTCLICKTRK",
- AllTrackItems = {"SaveItemSelection", "SelectItemsOnTrack", "SelectedItems", "RestoreItemSelection"},
- AllTracks = 40296,
- ArmAllEnvelopes = "_S&M_ARMALLENVS",
- ArmSelectedTracks = "_XENAKIOS_SELTRAX_RECARMED",
- ArmTracks = 9,
- AutomationItem = 42197,
- AutoRenameTake = "_XENAKIOS_AUTORENAMETAKES",
- BigItem = custom.select.innerBigItem,
- CleanProjectDirectory = 40098,
- ClearAllEnvelope = "_S&M_REMOVE_ALLENVS",
- ClearAllRecordArm = 40491,
- ClearEnvelope = 40065,
- ClearNoteSelection = {40214, midiCommand=true},
- ClearTimeSelection = custom.clearTimeSelection,
- CloseAllFxChainsAndWindows = {"CloseAllFx", "CloseAllFxChain"},
- CloseAllFxChain = "_S&M_WNCLS4",
- CloseAllFx = "_S&M_WNCLS3",
- CloseFloatingFxWindows = "_S&M_WNCLS3",
- PlayFromMouseAndSoloTrack = "_BR_CONT_PLAY_MOUSE_SOLO_TRACK",
- PlayFromEditCursorAndSoloTrackUnderMouse = "_BR_TOGGLE_PLAY_EDIT_SOLO_TRACK",
- CloseFx = {"CloseFxChains", "CloseFxWindows"},
- CloseFxWindows = "_S&M_WNCLS5",
- CloseFxChains = "_S&M_WNCLS4",
- CloseProject = 40860,
- CloseWindow = {2, midiCommand=true},
- ColorTrack = {40360, prefixRepetitionCount=true},
- ColorTrackGradient = "_SWS_TRACKGRAD",
- ColorTrackWithTrackAbove = "_SWS_COLTRACKPREV",
- ColorTrackWithTrackBelow = "_SWS_COLTRACKNEXT",
- CopyAndFitByLooping = 41319,
- CopyEnvelope = 40035,
- CopyEnvelopePoints = 40324,
- CopyFxChain = "_S&M_SMART_CPY_FXCHAIN",
- CopyItems = {"SaveItemSelection", "OnlySelectItemsCrossingTimeAndTrackSelection", "CopySelectedAreaOfItems", "RestoreItemSelection"},
- CopyNotes = {"SelectNotes", "CopySelectedEvents"},
- CopySelectedAreaOfItems = 40060,
- CopySelectedEvents = {40733, midiCommand=true},
- CopySelectedItems = 40698,
- CopyTrack = 40210,
- CropToActiveTake = 40131,
- CutEnvelopePoints = 40325,
- CutFxChain = "_S&M_COPYFXCHAIN6",
- CutInputFxChain = "_S&M_CUT_INFXCHAIN",
- Overdub = {"CopyTrack", "UnarmSelectedTracks", "Paste", "NextTrack", "StartStop", "ToggleRecord", "SelectItemsUnderEditCursor", "CutSelectedItems"},
- CutItemFxChain = {"CopyItemFxChain", "ClearItemFxChain"},
- CopyItemFxChain = "_S&M_COPYFXCHAIN1",
- ClearItemFxChain = "_S&M_CLRFXCHAIN2",
- CutItems = {"SaveItemSelection", "SelectItemsAndSplit", "CutSelectedItems", "RestoreItemSelection"},
- MoveItemContentToEditCursor = 41308,
- MoveItemToEditCursor = 41205,
- CutNotes = {"SelectNotes", "CutSelectedEvents"},
- CutSelectedEvents = {40012, midiCommand=true},
- CutSelectedItems = 40699,
- CutTrack = {"CopyTrack", "RemoveTrack", "SelectLastTouchedTrack"},
- CycleFolderCollapsedState = 1042,
- CycleFolderState = 1041,
- CycleItemFadeInShape = {41520, prefixRepetitionCount=true},
- CycleItemFadeOutShape = {41527, prefixRepetitionCount=true},
- CycleRecordMonitor = 40495,
- CycleRippleEditMode = 1155,
- DeleteActiveTake = {40129, prefixRepetitionCount=true},
- DeleteEnvelope = 40333,
- DeleteItem = 40006,
- DeleteMark = {lib.marks.delete, registerAction=true},
- DeleteNote = {40002, midiCommand=true},
- DeleteTimeline = 40201,
- InsertTrackFromTemplate = 46000,
- EnterTrackAbove = {"InsertTrackAbove", "ColorTrackWithTrackBelow", "RenameTrack"},
- EnterTrackBelow = {"InsertTrackBelow", "ColorTrackWithTrackAbove", "RenameTrack"},
- EventSelectionEnd = {40639, midiCommand=true},
- EventSelectionStart = {40440, midiCommand=true},
- AddTimeSignatureMarker = 40256,
- EditTimeSignatureMarker = 40618,
- DeleteTimeSignatureMarker = 40617,
- NextTimeSignatureMarker = 41821,
- PrevTimeSignatureMarker = 41820,
- FirstItemStart = custom.move.firstItemStart,
- FirstTrack = {custom.move.firstTrack, "ScrollToSelectedTracks"},
- GlueItemsIgnoringTimeSelection = 40362,
- FitByLoopingNoExtend = {"OnlySelectItemsCrossingTimeAndTrackSelection", "GlueItemsIgnoringTimeSelection", "FitSelectedItemsByLooping"},
- ToggleShowTempoEnvelope = 41046,
- ShowMasterTrack = "_SWS_SHOWMASTER",
- HideMasterTrack = "_SWS_HIDEMASTER",
- FitByLooping = {"OnlySelectItemsCrossingTimeAndTrackSelection", "FitSelectedItemsByLooping"},
- FitByPadding = {"OnlySelectItemsCrossingTimeAndTrackSelection", "FitSelectedItemsByPadding"},
- FitByStretching = {"OnlySelectItemsCrossingTimeAndTrackSelection", "FitSelectedItemsByStretching"},
- FitEnvelopePoints = "_BR_FIT_ENV_POINTS_TO_TIMESEL",
- FitSelectedItemsByLooping = 41386,
- FitSelectedItemsByPadding = 41385,
- FitSelectedItemsByStretching = 41206,
- FitNotes = {40754, midiCommand=true},
- FocusMain = "_S&M_WNMAIN",
- FolderChildren = {"SelectFolderChildren", "ScrollToSelectedTracks"},
- FolderParent = {"SelectFolderParent", "ScrollToSelectedTracks"},
- Folder = {"SelectFolder", "ScrollToSelectedTracks"},
- ResetFeedbackWindow = lib.ResetFeedbackWindow,
- FreezeTrack = 41223,
- GlueItemIgnoringTimeSelection = 40362,
- GlueItems = {"SaveItemSelection", "SelectItems", "GlueSelectedItemsInTimeSelection", "RestoreItemSelection"},
- GlueSelectedItemsInTimeSelection = 41588,
- GoToEnd = {40037, midiCommand=true},
- GoToStart = {40036, midiCommand=true},
- GroupItems = 40032,
- HealItemsSplits = 40548,
- CreateMeasures = 40338,
- CreateProjectTempo = 40843,
- InnerFolderAndParent = {"FolderParent", "SelectFolder"},
- InnerFolder = {"FolderParent", "SelectOnlyFoldersChildren"},
- InsertAutomationItem = 42082,
- InsertDefaultSizeNote = {40051, midiCommand=true},
- InsertNote = {"MidiTimeSelectionStart", "InsertDefaultSizeNote", "MidiTimeSelectionStart", "SelectNearestNote", "FitNotes"},
- InsertOrExtendMidiItem = 42069,
- InsertTrackAbove = {"_SWS_INSRTTRKABOVE", prefixRepetitionCount=true},
- InsertTrackBelow = {40001, prefixRepetitionCount=true},
- Insert4EnvelopePointsAtTimeSelection = 40726,
- ShiftEnvelopePointsUp = {41180, prefixRepetitionCount=true},
- ShiftEnvelopePointsUpATinyBit = {42381, prefixRepetitionCount=true},
- ShiftEnvelopePointsDown = {41181, prefixRepetitionCount=true},
- ShiftEnvelopePointsDownATinyBit = {42382, prefixRepetitionCount=true},
- InvertVoicingDownwards = {40910, midiCommand=true, prefixRepetitionCount=true},
- InvertVoicingUpwards = {40909, midiCommand=true, prefixRepetitionCount=true},
- ApplyFxToItem = 40209,
- Item = custom.select.innerItem,
- ItemNormalize = 40108,
- ItemSplitSelRight = "_SWS_AWSPLITXFADELEFT",
- JoinNotes = {"SelectNotes", "JoinSelectedNotes"},
- JoinSelectedNotes = {40456, midiCommand=true},
- LastItemEnd = custom.move.lastItemEnd,
- LastTrack = {custom.move.lastTrack, "ScrollToSelectedTracks"},
- Left10Pix = {"_XENAKIOS_MOVECUR10PIX_LEFT", prefixRepetitionCount=true},
- Left40Pix = {"Left10Pix", repetitions=4, prefixRepetitionCount=true},
- LeftGridDivision = {40646, prefixRepetitionCount=true},
- LeftMidiGridDivision = {40047, midiCommand=true, prefixRepetitionCount=true},
- LoopEnd = 40633,
- LoopSelection = "SetTimeSelectionToLoopSelection",
- LoopStart = 40632,
- MakeFolder = "_SWS_MAKEFOLDER",
- MarkedRegion = {lib.marks.recallMarkedRegion, registerAction=true},
- MarkedTimelinePosition = {lib.marks.recallMarkedTimelinePosition, registerAction=true},
- MarkedTracks = {lib.marks.recallMarkedTracks, registerAction=true},
- Mark = {lib.marks.save, registerAction=true},
- MatchedTrackBackward = {"MatchTrackNameBackward", "ScrollToSelectedTracks"},
- MatchedTrackForward = {"MatchTrackNameForward", "ScrollToSelectedTracks"},
- MatchTrackNameBackward = lib.matchTrackNameBackward,
- MatchTrackNameForward = lib.matchTrackNameForward,
- MidiCCMoveLeftByGrid = {40672, prefixRepetitionCount=true},
- MidiCCMoveLeftByPixel = {40674, prefixRepetitionCount=true},
- MidiCCMoveRightByGrid = {40673, prefixRepetitionCount=true},
- MidiCCMoveRightByPixel = {40675, prefixRepetitionCount=true},
- MidiLearnLastTouchedFxParam = 41144,
- MidiLoadNoteCCNames = 40409,
- MidiOptionAllowAllMediaItemsEditableInNotationView = 41774,
- MidiOptionAllowCCShapeInBankAndLSBLanes = 42100,
- MidiOptionAvoidAutomaticallySettingMIDIItemsFromOtherTracksEditable = 40901,
- MidiOptionEnableExtendingParentMediaItem = 40817,
- MidiOptionToggleAlwaysSnapNotesToTheLeftItSnap = 40748,
- MidiPaste = {40011, midiCommand=true, prefixRepetitionCount=true},
- MidiSaveNoteCCNames = 40410,
- MidiTimeSelectionEnd = {40881, midiCommand=true},
- MidiTimeSelectionStart = {40880, midiCommand=true},
- MidiViewModeDrums = 40043,
- MidiViewModeEvent = 40056,
- MidiViewModeNotes = 40954,
- MidiViewModePiano = 40042,
- MidiViewNoteRowsHideUnused = 40453,
- MidiViewNoteRowsHideUnusedAndUnnamed = 40454,
- MidiViewNoteRowsShowAll = 40452,
- MidiZoomContent = {40466, midiCommand=true},
- MidiZoomInHoriz = {1012, midiCommand=true, prefixRepetitionCount=true},
- MidiZoomInVert = {40111, midiCommand=true, prefixRepetitionCount=true},
- MidiZoomLoopSelection = {40726, midiCommand=true},
- MidiZoomOutHoriz = {1011, midiCommand=true, prefixRepetitionCount=true},
- MidiZoomOutVert = {40112, midiCommand=true, prefixRepetitionCount=true},
- MidiZoomTimeSelection = {"SaveLoopSelection", "SetLoopSelectionToTimeSelection", "MidiZoomLoopSelection", "RestoreLoopSelection"},
- MinimizeTracks = "_SWS_MINTRACKS",
- MixerShowHideChildrenOfSelectedTrack = 41665,
- ModulateLastTouchedFxParam = 41143,
- MousePositionIgnoreSnap = 40514,
- MousePosition = {"MousePositionIgnoreSnap", "SnappedPosition"},
- NextTransientInSelectedItems = {40375, prefixRepetitionCount=true},
- PrevTransientInSelectedItems = {40376, prefixRepetitionCount=true},
- MoveNoteDownOctave= {40180, midiCommand=true, prefixRepetitionCount=true},
- MoveNoteDownSemitone = {40178, midiCommand=true, prefixRepetitionCount=true},
- MoveNoteLeft = {40183, midiCommand=true, prefixRepetitionCount=true},
- MoveNoteLeftFine = {40181, midiCommand=true, prefixRepetitionCount=true},
- MoveNoteRight= {40184, midiCommand=true, prefixRepetitionCount=true},
- MoveNoteRightFine = {40182, midiCommand=true, prefixRepetitionCount=true},
- MoveNoteUpOctave= {40179, midiCommand=true, prefixRepetitionCount=true},
- MoveNoteUpSemitone = {40177, midiCommand=true, prefixRepetitionCount=true},
- MoveRedo = {"_SWS_EDITCURREDO", prefixRepetitionCount=true},
- MoveSelectedItemLeftToEditCursor = 41306,
- MoveSelectedItemRightToEditCursor = 41307,
- MoveToFirstItem = {"SelectFirstItemOnSelectedTracks", "MoveToFirstItem"},
- MoveToMousePositionAndPlay = {"MousePosition", "Play"},
- MoveUndo = {"_SWS_EDITCURUNDO", prefixRepetitionCount=true},
- NewProjectTab = 40859,
- Next10Track = {"NextTrack", repetitions=10, prefixRepetitionCount=true},
- Next4Beats = {"NextBeat", repetitions=4, prefixRepetitionCount=true},
- Next4Measures = {"NextMeasure", repetitions=4, prefixRepetitionCount=true},
- Next5Track = {"NextTrack", repetitions=5, prefixRepetitionCount=true},
- NextBeat = 40841,
- NextBigItemEnd = {custom.move.nextBigItemEnd, prefixRepetitionCount=true},
- NextBigItemStart = {custom.move.nextBigItemStart, prefixRepetitionCount=true},
- NextEnvelope = {41864, prefixRepetitionCount=true},
- NextEnvelopePoint = {"_SWS_BRMOVEEDITTONEXTENV", prefixRepetitionCount=true},
- NextFolderNear = {"_SWS_SELNEARESTNEXTFOLDER", "ScrollToSelectedTracks", prefixRepetitionCount=true},
- NextItemEnd = {custom.move.nextItemEnd, prefixRepetitionCount=true},
- NextItemStart = {custom.move.nextItemStart, prefixRepetitionCount=true},
- NextMarker = {40173, prefixRepetitionCount=true},
- NextMeasure = {40839, prefixRepetitionCount=true},
- NextNoteEnd = {"SelectNextNote", "EventSelectionEnd", prefixRepetitionCount=true},
- NextNoteSamePitchEnd = {"SelectNextNoteSamePitch", "EventSelectionEnd", prefixRepetitionCount=true},
- NextNoteSamePitchStart = {"SelectNextNoteSamePitch", "EventSelectionStart", prefixRepetitionCount=true},
- NextNoteStart = {"SelectNextNote", "EventSelectionStart", prefixRepetitionCount=true},
- NextRegion = {"SetLoopRegionToNextRegion", "LoopStart", "SetTimeSelectionToLoopSelection", prefixRepetitionCount=true},
- NextTab = {40861, prefixRepetitionCount=true},
- NextTake = {40125, prefixRepetitionCount=true},
- NextTrack = {40285, prefixRepetitionCount=true},
- NextTrackMatchBackward = {"RepeatTrackNameMatchBackward", "ScrollToSelectedTracks", prefixRepetitionCount=true},
- NextTrackMatchForward = {"RepeatTrackNameMatchForward", "ScrollToSelectedTracks", prefixRepetitionCount=true},
- NextTransientInItem = {"SaveItemSelection", "SelectItemsUnderEditCursor", "NextTransientInSelectedItems", "RestoreItemSelection", prefixRepetitionCount=true},
- CalculateTransientGuides = 42028,
- SplitItemAtTransients = "_XENAKIOS_SPLIT_ITEMSATRANSIENTS",
- ClearTransientGuides = 42027,
- AddStretchMarker = 41842,
- DeleteStretchMarker = 41859,
- NextStretchMarker = 41860,
- PrevStretchMarker = 41861,
- IncreaseTransientDetectionThreshold = {40218, prefixRepetitionCount=true},
- DecreaseTransientDetectionThreshold = {40219, prefixRepetitionCount=true},
- IncreaseTransientDetectionSensitivity = {41537, prefixRepetitionCount=true},
- DecreaseTransientDetectionSensitivity = {41536, prefixRepetitionCount=true},
- AdjustTransientDetection = 41208,
- NoOp = 65535,
- NudgeTrackPanLeft10Times = {"NudgeTrackPanLeft", repetitions=10, prefixRepetitionCount=true},
- NudgeTrackPanLeft = {40283, prefixRepetitionCount=true},
- NudgeTrackPanRight10Times = {"NudgeTrackPanRight", repetitions=10, prefixRepetitionCount=true},
- NudgeTrackPanRight = {40284, prefixRepetitionCount=true},
- NudgeTrackPanRight = {40284, prefixRepetitionCount=true},
- NudgeTrackVolumeDownBy1 = {"NudgeTrackVolumeDown", repetitions=20, prefixRepetitionCount=true},
- NudgeTrackVolumeDownBy1Tenth = {"NudgeTrackVolumeDown", prefixRepetitionCount=true, repetitions=2},
- NudgeTrackVolumeUp = {40115, prefixRepetitionCount=true},
- NudgeTrackVolumeUpBy1 = {"NudgeTrackVolumeUp", repetitions=20, prefixRepetitionCount=true,},
- NudgeTrackVolumeUpBy1Tenth = {"NudgeTrackVolumeUp", repetitions=2, prefixRepetitionCount=true},
- OnlySelectItemsCrossingTimeAndTrackSelection = {"UnselectItems", "SelectItemsCrossingTimeAndTrackSelection"},
- OpenInMidiEditor = 40153,
- OpenProject = 40025,
- PasteAbove = {"PrevTrack", "Paste", prefixRepetitionCount=true},
- PasteFxChain = {"_S&M_SMART_PST_FXCHAIN", prefixRepetitionCount=true},
- PasteItem = {40058, prefixRepetitionCount=true},
- Paste = {"_SWS_AWPASTE", prefixRepetitionCount=true},
- Pause = 1008,
- PitchDown = {40050, midiCommand=true, prefixRepetitionCount=true},
- PitchDown7 = {"PitchDown", repetitions=7, prefixRepetitionCount=true},
- PitchDownOctave = {40188, midiCommand=true, prefixRepetitionCount=true},
- PitchUp = {40049, midiCommand=true, prefixRepetitionCount=true},
- PitchUp7 = {"PitchUp", repetitions=7, prefixRepetitionCount=true},
- PitchUpOctave = {40187, midiCommand=true, prefixRepetitionCount=true},
- Play = 1007,
- PlayAndLoop = {"SetLoopSelectionToTimeSelection", "SaveEditCursorPosition", "LoopStart", "Play", "RestoreEditCursorPosition", setTimeSelection=true},
- PlayFromMousePosition = "_BR_PLAY_MOUSECURSOR",
- PlayFromTimeSelectionStart = {"SaveEditCursorPosition", "TimeSelectionStart", "Play", "RestoreEditCursorPosition"},
- PlayMacro = {registerAction=true, metaCommand=true, prefixRepetitionCount=true},
- PlayPositionIgnoreSnap = 40434,
- PlayPosition = {"PlayPositionIgnoreSnap", "SnappedPosition"},
- Prev10Track = {"PrevTrack", repetitions=10, prefixRepetitionCount=true},
- Prev4Beats = {"PrevBeat", repetitions=4, prefixRepetitionCount=true},
- Prev4Measures = {"PrevMeasure", repetitions=4, prefixRepetitionCount=true},
- Prev5Track = {"PrevTrack", repetitions=5, prefixRepetitionCount=true},
- PrevBeat = {40842, prefixRepetitionCount=true},
- PrevBigItemStart = {custom.move.prevBigItemStart, prefixRepetitionCount=true},
- PrevEnvelope = {41863, prefixRepetitionCount=true},
- PrevEnvelopePoint = {"_SWS_BRMOVEEDITTOPREVENV", prefixRepetitionCount=true},
- PrevFolderNear = {"_SWS_SELNEARESTPREVFOLDER", "ScrollToSelectedTracks", prefixRepetitionCount=true},
- PrevItemStart = {custom.move.prevItemStart, prefixRepetitionCount=true},
- PrevMarker = {40172, prefixRepetitionCount=true},
- PrevMeasure = {40840, prefixRepetitionCount=true},
- PrevNoteEnd = {"SelectPrevNote", "EventSelectionEnd", prefixRepetitionCount=true},
- PrevNoteSamePitchEnd = {"SelectPrevNoteSamePitch", "EventSelectionEnd", prefixRepetitionCount=true},
- PrevNoteSamePitchStart = {"SelectPrevNoteSamePitch", "EventSelectionStart", prefixRepetitionCount=true},
- PrevNoteStart = {"SelectPrevNote", "EventSelectionStart", prefixRepetitionCount=true},
- PrevRegion = {"SetLoopRegionToPrevRegion", "LoopStart", "SetTimeSelectionToLoopSelection", prefixRepetitionCount=true},
- PrevTab = {40862, prefixRepetitionCount=true},
- PrevTake = {40126, prefixRepetitionCount=true},
- PrevTrack = {40286, prefixRepetitionCount=true},
- PrevTransientInItem = {"SaveItemSelection", "SelectItemsUnderEditCursor", "PrevTransientInSelectedItems", "RestoreItemSelection", prefixRepetitionCount=true},
- NextTransientInItemMinusFadeTime = {"SaveItemSelection", "SelectItemsUnderEditCursor", "NextTransientInSelectedItemsMinusFadeTime", "RestoreItemSelection", prefixRepetitionCount=true},
- PrevTransientInItemMinusFadeTime = {"SaveItemSelection", "SelectItemsUnderEditCursor", "PrevTransientInSelectedItemsMinusFadeTime", "RestoreItemSelection", prefixRepetitionCount=true},
- NextTransientInSelectedItemsMinusFadeTime = "_XENAKIOS_MOVECURNEXT_TRANSMINUSFADE",
- PrevTransientInSelectedItemsMinusFadeTime = "_XENAKIOS_MOVECURPREV_TRANSMINUSFADE",
- ProjectEnd = custom.move.projectEnd,
- ProjectStart = custom.move.projectStart,
- ProjectTimeline = custom.select.innerProjectTimeline,
- Quantize = {40009, midiCommand=true},
- RecallMark = {lib.marks.recall, registerAction=true},
- RecordConditional = {"Stop", "ToggleRecordConditional"},
- RecordMacro = {metaCommand=true, registerAction=true, registerOptional=true},
- RecordOrStop = "_SWS_RECTOGGLE",
- Record = {"SaveEditCursorPosition", "TimeSelectionStart", "RecordConditional", "RestoreEditCursorPosition", setTimeSelection=true},
- Redo = {40030, prefixRepetitionCount=true},
- Region = custom.select.innerRegion,
- RegionSelectItems = 40717,
- RemoveMarker = 40613,
- RemoveRegion = 40615,
- RemoveTimeSelection = 40635,
- RemoveTrack = 40005,
- RenameTrack = 40696,
- RenameTakeSourceFile = "_XENAKIOS_RENMTAKEANDSOURCE",
- RenameTake = "_XENAKIOS_RENMTAKE",
- RenameTakeAndSourceFile = "_XENAKIOS_RENMTAKEANDSOURCE",
- RenderProject = 40015,
- RenderProjectWithLastSetting = 41824,
- RenderTrack = "_SWS_AWRENDERSTEREOSMART",
- RepeatLastCommand = {metaCommand=true, prefixRepetitionCount=true},
- RepeatTrackNameMatchBackward = lib.repeatTrackNameMatchBackward,
- RepeatTrackNameMatchForward = lib.repeatTrackNameMatchForward,
- ResetAllControlSurfaceDevices = 42348,
- ResetAllMidiDevices = 41175,
- ResetControlDevices = {"ResetAllMidiDevices", "ResetAllControlSurfaceDevices"},
- ResetSelection = {"SelectOnlyCurrentTrack", "UnselectItems", "UnselectEnvelopePoints", "UnselectAllEvents"},
- Reset = {"Stop", "SetModeNormal", "SetRecordModeNormal", "ResetSelection"},
- ResetTrackToNormal = {"UnarmSelectedTracks", "UnarmAllEnvelopes", "SetAutomationModeTrimRead"},
- RestoreEditCursorPosition = "_BR_RESTORE_CURSOR_POS_SLOT_16",
- RestoreItemSelection = "_SWS_RESTALLSELITEMS1",
- RestoreLastItemSelection = "_SWS_RESTLASTSEL",
- RestoreLoopSelection = "_SWS_RESTLOOP5",
- RestoreTimeSelection = "_SWS_RESTTIME5",
- RestoreTrackSelection = "_SWS_TOGSAVESEL",
- Right10Pix = {"_XENAKIOS_MOVECUR10PIX_RIGHT", prefixRepetitionCount=true},
- Right40Pix = {"Right10Pix", repetitions=4, prefixRepetitionCount=true},
- RightGridDivision = {40647, prefixRepetitionCount=true},
- RightMidiGridDivision = {40048, midiCommand=true, prefixRepetitionCount=true},
- SaveEditCursorPosition = "_BR_SAVE_CURSOR_POS_SLOT_16",
- SaveItemSelection = "_SWS_SAVEALLSELITEMS1",
- SaveLoopSelection = "_SWS_SAVELOOP5",
- SaveProject = 40026,
- SaveProjectWithNewVersion = 41895,
- SaveTimeSelection = "_SWS_SAVETIME5",
- SaveTrackSelection = "_SWS_SAVESEL",
- ScrollToPlayPosition = 40150,
- ScrollToEditCursor = "_SWS_HSCROLL10",
- ScrollToSelectedTracks = 40913,
- SelectAllItems = 40182,
- SelectAllNotesAtPitch = {41746, midiCommand=true},
- SelectAllTracks = 40296,
- SelectedItems = {"RemoveTimeSelection", "_SWS_SAFETIMESEL"},
- SelectedNotes = {40752, midiCommand=true},
- SelectEnvelopePoints = 40330,
- SelectEventsInTimeSelection = {40876, midiCommand=true},
- SelectFirstItemOnSelectedTracks = "_XENAKIOS_SELFIRSTITEMSOFTRACKS",
- SelectFirstOfSelectedTracks = "_XENAKIOS_SELFIRSTOFSELTRAX",
- SelectFolderChildren = "_SWS_SELCHILDREN",
- SelectFolderParent = "_SWS_SELPARENTS",
- SelectFolder = "_SWS_SELCHILDREN2",
- Selection = "NoOp",
- SelectItemsAndSplit = {"OnlySelectItemsCrossingTimeAndTrackSelection", "SplitItemsAtTimeSelection"},
- SelectItemsCrossingTimeAndTrackSelection = 40718,
- SelectItemsInGroups = 40034,
- SelectItemsOnTrack = 40421,
- SelectItems = "SelectItemsCrossingTimeAndTrackSelection",
- SelectItemsUnderEditCursor = "_XENAKIOS_SELITEMSUNDEDCURSELTX",
- SelectLastOfSelectedTracks = "_XENAKIOS_SELLASTOFSELTRAX",
- SelectLastTouchedTrack = 40505,
- SelectNearestNote = {40425, midiCommand=true},
- SelectNextNote = {40413, midiCommand=true},
- SelectNextNoteSamePitch = {40428, midiCommand=true},
- SelectNoteClosestToEditCursor = {40426, midiCommand=true},
- SelectNotes = "SelectNotesStartingInTimeSelection",
- SelectNotesStartingInTimeSelection = {40877, midiCommand=true},
- SelectOnlyCurrentTrack = custom.select.onlyCurrentTrack,
- SelectOnlyFoldersChildren = "_SWS_SELCHILDREN",
- SelectPrevNote = {40414, midiCommand=true},
- SelectPrevNoteSamePitch = {40427, midiCommand=true},
- SelectTracks = {setTrackSelection=true},
- ToggleItemDefaultFadeInAndOut = 41194,
- SetAutomationModeLatch = 40404,
- SetAutomationModeLatchAndArm = {"SetAutomationModeLatch", "ArmAllEnvelopes"},
- SetAutomationModeLatchPreview = 42023,
- SetAutomationModeRead = 40401,
- SetAutomationModeTouch = 40402,
- SetAutomationModeTrimRead = 40400,
- SetRippleEditAllTracks = 40311,
- SetRippleEditOff = 40309,
- SetRippleEditPerTrack = 40310,
- FirstTrackWithItem = custom.move.firstTrackWithItem,
- DuplicateTimeline = {"SaveTrackSelection", "SelectAllTracks", "CopyItems", "TimeSelectionEnd", "SetRippleEditAllTracks", "FirstTrackWithItem", "Paste", "SetRippleEditOff", "RestoreTrackSelection", prefixRepetitionCount=true},
- ExplodeTakesInPlace = 40642,
- ExplodeTakesInOrder = 40643,
- ToggleBetweenReadAndTouchAutomationMode = 41109,
- QuantizeItems = 40316,
- ExplodeTakesInAcrossTracks = 40224,
- SetAutomationModeWrite = 40403,
- SetEnvelopeShapeBezier = 40683,
- OpenConsole = "_SWSCONSOLE",
- SetEnvelopeShapeFastEnd = 40429,
- SetEnvelopeShapeFastStart = 40428,
- SetEnvelopeShapeLinear = 40189,
- SetEnvelopeShapeSlowStart = 40424,
- SetEnvelopeShapeSquare = 40190,
- SetFirstSelectedTrackAsLastTouchedTrack = 40914,
- SetGlobalAutomationModeLatch = 40881,
- SetGlobalAutomationModeLatchPreview = 42022,
- SetGlobalAutomationModeOff = 40876,
- SetGlobalAutomationModeRead = 40879,
- SetGlobalAutomationModeTouch = 40880,
- SetGlobalAutomationModeTrimRead = 40878,
- SetGlobalAutomationModeWrite = 40882,
- SetGridDivision = custom.setGridDivision,
- SetItemFadeBoundaries = {"SaveItemSelection", "UnselectItems", "SelectItemsCrossingTimeAndTrackSelection", "SetSelectedItemFadeBoundaries", "RestoreItemSelection"},
- SetItemsTimebaseToBeatsPosLengthAndRate = "_SWS_AWITEMTBASEBEATALL",
- ViewTakeEnvelopes = 41974,
- SetItemsTimebaseToBeatsPos = "_SWS_AWITEMTBASEBEATPOS",
- SetItemsTimebaseToDefault = "_SWS_AWITEMTBASEPROJ",
- SetItemsTimebaseToTime = "_SWS_AWITEMTBASETIME",
- SetLoopEnd = 40223,
- SetLoopRegionToNextRegion = "_SWS_SELNEXTREG",
- SetLoopRegionToPrevRegion = "_SWS_SELPREVREG",
- SetLoopSelectionToTimeSelection = 40622,
- SetLoopStart = 40222,
- SetMidiGridDivision = custom.setMidiGridDivision,
- SetModeNormal = lib.state.setModeNormal,
- PasteItemFxChain = {"_S&M_COPYFXCHAIN9", prefixRepetitionCount=true},
- SetModeVisualTimeline = lib.state.setModeVisualTimeline,
- ClearSelectedTimeline = custom.clearSelectedTimeline,
- ClearTimelineSelectionAndSetModeVisualTimeline = {"ClearSelectedTimeline", "SetModeVisualTimeline"},
- SetModeVisualTrack = lib.state.setModeVisualTrack,
- SetModeRecord = lib.state.setModeRecord,
- SetProjectTimebaseToBeatsPosLengthAndRate = "_SWS_AWTBASEBEATALL",
- SetProjectTimebaseToBeatsPos = "_SWS_AWTBASEBEATPOS",
- SetProjectTimebaseToTime = "_SWS_AWTBASETIME",
- SetRecordInput = 40496,
- SetRecordMidiOutput = 40500,
- SetRecordMidiOverdub = 40503,
- SetRecordMidiReplace = 40504,
- SetRecordMidiTouchReplace = 40852,
- SetRecordModeNormal = 40252,
- SetRecordMonitorOnly = 40498,
- SetSelectedItemFadeBoundaries = "_SWS_AWFADESEL",
- SetTimeSelectionEnd = 40626,
- SetTimeSelectionStart = 40625,
- SetTimeSelectionToLoopSelection = 40623,
- SetTrackMidiAllChannels = "_S&M_MIDI_INPUT_ALL_CH",
- TimeSelectionShiftedLeft = 40037,
- TimeSelectionShiftedRight = 40038,
- ShowActionList = 40605,
- ShowNextFx= {"_S&M_WNONLY2", prefixRepetitionCount=true},
- ShowPreferences = 40016,
- ShowPrevFx = {"_S&M_WNONLY1", prefixRepetitionCount=true},
- ShowProjectSettings = 40021,
- ShowRoutingMatrix = 40251,
- ShowTrackFreezeDetails = 41654,
- ToggleShowTrackManager = 40906,
- ToggleShowTrackRouting = 40293,
- ToggleShowWiringDiagram = 42031,
- SnappedPosition = custom.move.snap,
- AddAndNameSnapshot = "_SWSSNAPSHOT_NEWEDIT",
- CopyCurrentSnapshot = "_SWSSNAPSHOT_COPY",
- PasteSnapshot = "_SWSSNAPSHOT_PASTE",
- DeleteCurrentSnapshot = "_SWSSNAPSHOT_DELCUR",
- DeleteTracksFromCurrentSnapshot = "_SWSSNAPSHOT_DEL",
- ToggleSnapshotsWindow = "_SWSSNAPSHOT_OPEN",
- RecallCurrentSnapshot = "_SWSSNAPSHOT_GET",
- RecallNextSnapshot = {"_SWSSNAPSHOT_GET_NEXT", prefixRepetitionCount=true},
- RecallPrevSnapshot = {"_SWSSNAPSHOT_GET_PREVIOUS", prefixRepetitionCount=true},
- RecallSnapshot1 = "_SWSSNAPSHOT_GET1",
- RecallSnapshot2 = "_SWSSNAPSHOT_GET2",
- RecallSnapshot3 = "_SWSSNAPSHOT_GET3",
- RecallSnapshot4 = "_SWSSNAPSHOT_GET4",
- RecallSnapshot5 = "_SWSSNAPSHOT_GET5",
- RecallSnapshot6 = "_SWSSNAPSHOT_GET6",
- RecallSnapshot7 = "_SWSSNAPSHOT_GET7",
- RecallSnapshot8 = "_SWSSNAPSHOT_GET8",
- RecallSnapshot9 = "_SWSSNAPSHOT_GET9",
- SaveTracksToCurrentSnapshot = "_SWSSNAPSHOT_SAVE",
- DeleteAllSnapshots = "_SWSSNAPSHOT_DELALL",
- SplitItemsAtEditCursor = {"UnselectItems", "SelectItemsUnderEditCursor", "SplitItemsUnderEditCursor", "UnselectItems"},
- SplitItemsAtTimeSelection = custom.splitItemsAtTimeSelection,
- SplitItemsUnderEditCursor = 40757,
- StartOfSel = {40440, midiCommand=true},
- StartOfSelectedItems = 41173,
- StartStop = 40044,
- Stop = 1016,
- Stop = 40667,
- StopRecordMacro = {metaCommand=true},
- SwitchTimelineSelectionSide = lib.state.switchTimelineSelectionSide,
- TapTempo = 1134,
- TimeSelectionEnd = 40631,
- InsertTrackFromTemplateSlot1 = "_S&M_ADD_TRTEMPLATE1",
- InsertTrackFromTemplateSlot2 = "_S&M_ADD_TRTEMPLATE2",
- InsertTrackFromTemplateSlot3 = "_S&M_ADD_TRTEMPLATE3",
- InsertTrackFromTemplateSlot4 = "_S&M_ADD_TRTEMPLATE4",
- CreateNewSnapshotWithTracks = "_SWSSNAPSHOT_NEWSEL",
- RecallPreviousSnapshot = "_SWSSNAPSHOT_GET_PREVIOUS",
- RecallCurrentSnapshot = "_SWSSNAPSHOT_GET",
- RecallNextSnapshot = "_SWSSNAPSHOT_GET_NEXT",
- SaveTrackAsTemplate = 40392,
- TimeSelection = "NoOp",
- TimeSelectionStart = 40630,
- ToggleArmAllEnvelopes = "_S&M_TGLARMALLENVS",
- ToggleArmEnvelope = 40863,
- ToggleAutoCrossfade = 40041,
- ToggleCountInBeforePlayback = "_SWS_AWCOUNTPLAYTOG",
- ToggleCountInBeforeRec = "_SWS_AWCOUNTRECTOG",
- ToggleEnvelopePointsMoveWithItems = 40070,
- ToggleFloatingWindows = 41074,
- ToggleFxBypass = 8,
- ToggleTakeFxBypass = "_S&M_TGL_TAKEFX_BYP",
- ToggleEnvelopeBypass = 40883,
- ToggleLoop = 1068,
- ToggleLoopSelectionFollowsTimeSelection = 40621,
- ToggleMetronome = 40364,
- ToggleMidiEditorUsesMainGridDivision = 42010,
- ToggleMidiSnap = {1014, midiCommand=true},
- ToggleMute = 6,
- ToggleMuteItem = 40175,
- TogglePanEnvelope = 40407,
- TogglePlaybackAutoScroll = 40036,
- TogglePlaybackPreroll = 41818,
- ToggleRecord = {"SetRecordModeNormal", 1013},
- StopRecord = {"StartStop", "SetModeNormal"},
- ToggleRecordConditional = "_SWS_AWRECORDCOND",
- ToggleRecordingAutoScroll = 40262,
- ToggleRecordingPreroll = 41819,
- ToggleRecordToTapeMode = 41186,
- ToggleShowRegionMarkerManager = 40326,
- ToggleShowAllEnvelope = 41151,
- ToggleShowAllEnvelopeGlobal = 41152,
- ToggleShowFx1 = "_S&M_TOGLFLOATFX1",
- ToggleShowFx2 = "_S&M_TOGLFLOATFX2",
- ToggleShowFx3 = "_S&M_TOGLFLOATFX3",
- ToggleShowFx4 = "_S&M_TOGLFLOATFX4",
- ToggleShowFx5 = "_S&M_TOGLFLOATFX5",
- ToggleShowFx6 = "_S&M_TOGLFLOATFX6",
- ToggleShowFx7 = "_S&M_TOGLFLOATFX7",
- ToggleShowFx8 = "_S&M_TOGLFLOATFX8",
- ToggleShowFxChain = "_S&M_TOGLFXCHAIN",
- ToggleShowTakeFxChain = 40638,
- ToggleShowFx = "_S&M_WNTGL5",
- ToggleShowSelectedEnvelope = 40884,
- ToggleShowTracksInMixer = 41592,
- ToggleSnap = 1157,
- ToggleSolo = 7,
- ToggleSoloItem = 41557,
- UnsoloAllItems = 41185,
- ToggleAutomaticRecordArm = 40740,
- ToggleStopAtEndOfTimeSelectionIfNoRepeat = 41834,
- ToggleViewMixer = 40078,
- ToggleVolumeEnvelope = 40406,
- SelectWidthEnvelope = 41870,
- ToggleTakeMuteEnvelope = 40695,
- ToggleTakePanEnvelope = 40694,
- ToggleTakePitchEnvelope = 41612,
- ToggleTakeVolumeEnvelope = 40693,
- SetTrackInputToMatchFirstSelected = "_SWS_INPUTMATCH",
- TrackToggleSendToParent = "_SWS_TOGMPSEND",
- TrackWithNumber = custom.move.trackWithNumber,
- TrimItemLeftEdge = 41305,
- TrimItemRightEdge = 41311,
- TrimSelectedNoteLeftEdgeToEditCursor = 40790,
- TrimSelectedNoteRightEdgeToEditCursor = 40791,
- UnarmAllEnvelopes = 41163,
- UnarmSelectedTracks = "_XENAKIOS_SELTRAX_RECUNARMED",
- UncollapseFolder = "_SWS_UNCOLLAPSE",
- Undo = {40029, prefixRepetitionCount=true},
- UnfreezeTrack = 41644,
- UnmuteAllTracks = 40339,
- UnselectAllEvents = {40214, midiCommand=true},
- UnselectEnvelopePoints = 40331,
- UnselectItems = 40289,
- UnselectTracks = 40297,
- UnsoloAllTracks = 40340,
- VerticalScrollEnd = "_XENAKIOS_TVPAGEEND",
- VerticalScrollStart = "_XENAKIOS_TVPAGEHOME",
- ToggleShowInputFxChain = 40844,
- ViewFxChainMaster = 40846,
- ZoomAllItems = {"SaveItemSelection", "SelectAllItems", "ZoomItemSelection", "RestoreItemSelection"},
- ZoomAllTracks = {"SaveTrackSelection", "SelectAllTracks", "ZoomTrackSelection", "RestoreTrackSelection"},
- ZoomInHoriz = {1012, prefixRepetitionCount=true},
- ZoomInVert = {40111, prefixRepetitionCount=true},
- ZoomItemSelection = "_SWS_HZOOMITEMS",
- ZoomOutHoriz = {1011, prefixRepetitionCount=true},
- ZoomOutVert = {40112, prefixRepetitionCount=true},
- ZoomProjectTimeline = 40295,
- ZoomProject = {"ZoomAllTracks", "ZoomAllItems"},
- ZoomRedo = {"_SWS_REDOZOOM", prefixRepetitionCount=true},
- ZoomTimeAndTrackSelection = {"ZoomTrackSelection", "ZoomTimeSelection"},
- ZoomTimeSelection = 40031,
- ZoomTrackSelection = "_SWS_VZOOMFITMIN",
- ZoomUndo = {"_SWS_UNDOZOOM", prefixRepetitionCount=true},
- NudgeTrackVolumeDown = 40116, -- 0.05 dB
- PlayAndSkipTimeSelection = 40317,
-}
diff --git a/definitions/extended_defaults/global.lua b/definitions/extended_defaults/global.lua
deleted file mode 100644
index 1c8ae7cf..00000000
--- a/definitions/extended_defaults/global.lua
+++ /dev/null
@@ -1,381 +0,0 @@
-return {
- timeline_motion = {
- ["0"] = "ProjectStart",
- [""] = "ProjectEnd",
- ["f"] = "PlayPosition",
- ["x"] = "MousePosition",
- ["["] = "LoopStart",
- ["]"] = "LoopEnd",
- [""] = "PrevMarker",
- [""] = "NextMarker",
- [""] = "PrevTimeSignatureMarker",
- [""] = "NextTimeSignatureMarker",
- [""] = "Left10Pix",
- [""] = "Right10Pix",
- [""] = "Left40Pix",
- [""] = "Right40Pix",
- ["h"] = "LeftGridDivision",
- ["l"] = "RightGridDivision",
- ["H"] = "PrevMeasure",
- ["L"] = "NextMeasure",
- [""] = "MoveRedo",
- [""] = "MoveUndo",
- [""] = "Prev4Beats",
- [""] = "Next4Beats",
- [""] = "Prev4Measures",
- [""] = "Next4Measures",
- ["`"] = "MarkedTimelinePosition",
- },
- timeline_operator = {
- ["r"] = "Record",
- [""] = "DuplicateTimeline",
- ["t"] = "PlayAndLoop",
- ["|"] = "CreateMeasures",
- [""] = "CreateProjectTempo"
- },
- timeline_selector = {
- ["~"] = "MarkedRegion",
- ["!"] = "LoopSelection",
- [""] = "NextRegion",
- [""] = "PrevRegion",
- [""] = "TimeSelectionShiftedRight",
- [""] = "TimeSelectionShiftedLeft",
- ["i"] = {"+inner", {
- [""] = "AutomationItem",
- ["l"] = "AllTrackItems",
- ["r"] = "Region",
- ["p"] = "ProjectTimeline",
- ["w"] = "Item",
- ["W"] = "BigItem",
- }},
- },
- visual_timeline_command = {
- ["v"] = "SetModeNormal",
- ["o"] = "SwitchTimelineSelectionSide",
- },
- command = {
- ["."] = "RepeatLastCommand",
- ["@"] = "PlayMacro",
- [","] = "RecordMacro",
- ["m"] = "Mark",
- ["~"] = "MarkedRegion",
- [""] = "DeleteMark",
- [""] = "NextRegion",
- [""] = "PrevRegion",
- [""] = "Redo",
- ["u"] = "Undo",
- ["R"] = "ToggleRecord",
- ["T"] = "Play",
- [""] = "PlayAndSkipTimeSelection",
- [""] = "PlayFromMousePosition",
- [""] = "PlayFromMouseAndSoloTrack",
- [""] = "PlayFromEditCursorAndSoloTrackUnderMouse",
- ["tt"] = "PlayFromTimeSelectionStart",
- ["F"] = "Pause",
- [""] = "ZoomUndo",
- [""] = "ZoomRedo",
- ["v"] = "SetModeVisualTimeline",
- [""] = "ClearTimelineSelectionAndSetModeVisualTimeline",
- [""] = "ToggleViewMixer",
- [""] = "Reset",
- [""] = "StartStop",
- ["X"] = "MoveToMousePositionAndPlay",
- ["dr"] = "RemoveRegion",
- ["!"] = "ToggleLoop",
- [""] = "ToggleBetweenReadAndTouchAutomationMode",
- [""] = "ShowNextFx",
- [""] = "ShowPrevFx",
- [""] = "FocusMain",
- [""] = "ToggleShowFx",
- [""] = "CloseFx",
- [""] = "MidiLearnLastTouchedFxParam",
- [""] = "ModulateLastTouchedFxParam",
- [""] = "ShowBindingList",
- [""] = "TapTempo",
- ['"'] = {"+snapshots", {
- ["j"] = "RecallNextSnapshot",
- ["k"] = "RecallPreviousSnapshot",
- ["D"] = "DeleteAllSnapshots",
- ["t"] = "ToggleSnapshotsWindow",
- ["y"] = "CopyCurrentSnapshot",
- ["p"] = "PasteSnapshot",
- ["r"] = "RecallCurrentSnapshot",
- ["#"] = {"+recall #", {
- ["1"] = "RecallSnapshot1",
- ["2"] = "RecallSnapshot2",
- ["3"] = "RecallSnapshot3",
- ["4"] = "RecallSnapshot4",
- ["5"] = "RecallSnapshot5",
- ["6"] = "RecallSnapshot6",
- ["7"] = "RecallSnapshot7",
- ["8"] = "RecallSnapshot8",
- ["9"] = "RecallSnapshot9",
- }},
- }},
- ["q"] = {"+options", {
- ["p"] = "TogglePlaybackPreroll",
- ["r"] = "ToggleRecordingPreroll",
- ["z"] = "TogglePlaybackAutoScroll",
- ["v"] = "ToggleLoopSelectionFollowsTimeSelection",
- ["s"] = "ToggleSnap",
- ["m"] = "ToggleMetronome",
- ["t"] = "ToggleStopAtEndOfTimeSelectionIfNoRepeat",
- ["x"] = "ToggleAutoCrossfade",
- ["e"] = "ToggleEnvelopePointsMoveWithItems",
- ["c"] = "CycleRippleEditMode",
- ["f"] = "ResetFeedbackWindow",
- }},
- [""] = { "+leader commands", {
- [""] = "ShowActionList",
- ["z"] = { "+zoom/scroll", {
- ["t"] = "ScrollToPlayPosition",
- ["e"] = "ScrollToEditCursor",
- }},
- ["m"] = { "+midi", {
- ["g"] = "SetMidiGridDivision",
- ["q"] = "Quantize",
- [","] = {"+options", {
- ["g"] = "ToggleMidiEditorUsesMainGridDivision",
- ["s"] = "ToggleMidiSnap",
- }},
- }},
- ["r"] = { "+recording", {
- ["o"] = "SetRecordMidiOutput",
- ["d"] = "SetRecordMidiOverdub",
- ["t"] = "SetRecordMidiTouchReplace",
- ["R"] = "SetRecordMidiReplace",
- ["v"] = "SetRecordMonitorOnly",
- ["r"] = "SetRecordInput",
- [","] = {"+options", {
- ["n"] = "SetRecordModeNormal",
- ["s"] = "SetRecordModeItemSelectionAutoPunch",
- ["v"] = "SetRecordModeTimeSelectionAutoPunch",
- ["p"] = "ToggleRecordingPreroll",
- ["z"] = "ToggleRecordingAutoScroll",
- ["t"] = "ToggleRecordToTapeMode",
- }},
- }},
- ["a"] = { "+automation", {
- ["r"] = "SetAutomationModeTrimRead",
- ["R"] = "SetAutomationModeRead",
- ["l"] = "SetAutomationModeLatch",
- ["g"] = "SetAutomationModeLatchAndArm",
- ["p"] = "SetAutomationModeLatchPreview",
- ["t"] = "SetAutomationModeTouch",
- ["w"] = "SetAutomationModeWrite",
- }},
- ["s"] = { "+selected items", {
- ["j"] = "NextTake",
- ["k"] = "PrevTake",
- ["m"] = "ToggleMuteItem",
- ["d"] = "DeleteActiveTake",
- ["c"] = "CropToActiveTake",
- ["o"] = "OpenInMidiEditor",
- ["n"] = "ItemNormalize",
- ["g"] = "GroupItems",
- ["q"] = "QuantizeItems",
- ["h"] = "HealItemsSplits",
- ["s"] = "ToggleSoloItem",
- ["b"] = "MoveItemContentToEditCursor",
- ["x"] = {"+explode takes", {
- ["p"] = "ExplodeTakesInPlace",
- ["o"] = "ExplodeTakesInOrder",
- ["a"] = "ExplodeTakesInAcrossTracks"
- }},
- ["S"] = {"+stretch", {
- ["a"] = "AddStretchMarker",
- ["d"] = "DeleteStretchMarker",
- }},
- ["#"] = {"+fade", {
- ["i"] = "CycleItemFadeInShape",
- ["o"] = "CycleItemFadeOutShape",
- }},
- ["t"] = {"+transients", {
- ["a"] = "AdjustTransientDetection",
- ["t"] = "CalculateTransientGuides",
- ["c"] = "ClearTransientGuides",
- ["s"] = "SplitItemAtTransients"
- }},
- ["e"] = {"+envelopes", {
- ["s"] = "ViewTakeEnvelopes",
- ["m"] = "ToggleTakeMuteEnvelope",
- ["p"] = "ToggleTakePanEnvelope",
- ["P"] = "ToggleTakePitchEnvelope",
- ["v"] = "ToggleTakeVolumeEnvelope",
- }},
- ["f"] = {"+fx", {
- ["a"] = "ApplyFxToItem",
- ["p"] = "PasteItemFxChain",
- ["d"] = "CutItemFxChain",
- ["y"] = "CopyItemFxChain",
- ["c"] = "ToggleShowTakeFxChain",
- ["b"] = "ToggleTakeFxBypass",
- }},
- ["r"] = {"+rename", {
- ["s"] = "RenameTakeSourceFile",
- ["t"] = "RenameTake",
- ["r"] = "RenameTakeAndSourceFile",
- ["a"] = "AutoRenameTake",
- }},
- ["b"] = { "+timebase", {
- ["t"] = "SetItemsTimebaseToTime",
- ["b"] = "SetItemsTimebaseToBeatsPos",
- ["r"] = "SetItemsTimebaseToBeatsPosLengthAndRate",
- }},
- }},
- ["t"] = { "+track", {
- ["n"] = "ResetTrackToNormal",
- ["R"] = "RenderTrack",
- ["r"] = "RenameTrack",
- ["z"] = "MinimizeTracks",
- ["m"] = "CycleRecordMonitor",
- ["f"] = "CycleFolderState",
- ["i"] = "SetTrackInputToMatchFirstSelected",
- ["y"] = "SaveTrackAsTemplate",
- ["i"] = {"+insert", {
- ["c"] = "InsertClickTrack",
- ["t"] = "InsertTrackFromTemplate",
- ["v"] = "InsertVirtualInstrumentTrack",
- ["1"] = "InsertTrackFromTemplateSlot1",
- ["2"] = "InsertTrackFromTemplateSlot2",
- ["3"] = "InsertTrackFromTemplateSlot3",
- ["4"] = "InsertTrackFromTemplateSlot4",
- }},
- ["x"] = {"+routing", {
- ["p"] = "TrackToggleSendToParent",
- ["s"] = "ToggleShowTrackRouting",
- }},
- ["F"] = { "+freeze", {
- ["f"] = "FreezeTrack",
- ["u"] = "UnfreezeTrack",
- ["s"] = "ShowTrackFreezeDetails",
- }},
- }},
- ["e"] = {"+envelopes", {
- ["t"] = "ToggleShowAllEnvelope",
- ["a"] = "ToggleArmAllEnvelopes",
- ["A"] = "UnarmAllEnvelopes",
- ["d"] = "ClearAllEnvelope",
- ["v"] = "ToggleVolumeEnvelope",
- ["p"] = "TogglePanEnvelope",
- ["w"] = "SelectWidthEnvelope",
- ["s"] = {"+selected", {
- ["d"] = "ClearEnvelope",
- ["a"] = "ToggleArmEnvelope",
- ["y"] = "CopyEnvelope",
- ["t"] = "ToggleShowSelectedEnvelope",
- ["b"] = "ToggleEnvelopeBypass",
- ["s"] = {"+shape", {
- ["b"] = "SetEnvelopeShapeBezier",
- ["e"] = "SetEnvelopeShapeFastEnd",
- ["f"] = "SetEnvelopeShapeFastStart",
- ["l"] = "SetEnvelopeShapeLinear",
- ["s"] = "SetEnvelopeShapeSlowStart",
- ["S"] = "SetEnvelopeShapeSquare",
- }},
- }},
- }},
- ["f"] = { "+fx", {
- ["a"] = "AddFx",
- ["c"] = "ToggleShowFxChain",
- ["d"] = "CutFxChain",
- ["y"] = "CopyFxChain",
- ["p"] = "PasteFxChain",
- ["b"] = "ToggleFxBypass",
- ["i"] = {"+input", {
- ["s"] = "ToggleShowInputFxChain",
- ["d"] = "CutInputFxChain",
- }},
- ["s"] = {"+show", {
- ["1"] = "ToggleShowFx1",
- ["2"] = "ToggleShowFx2",
- ["3"] = "ToggleShowFx3",
- ["4"] = "ToggleShowFx4",
- ["5"] = "ToggleShowFx5",
- ["6"] = "ToggleShowFx6",
- ["7"] = "ToggleShowFx7",
- ["8"] = "ToggleShowFx8"
- }},
- }},
- ["T"] = { "+timeline", {
- ["a"] = "AddTimeSignatureMarker",
- ["e"] = "EditTimeSignatureMarker",
- ["d"] = "DeleteTimeSignatureMarker",
- ["s"] = "ToggleShowTempoEnvelope"
- }},
- ["g"] = { "+global", {
- ["g"] = "SetGridDivision",
- ["r"] = "ResetControlDevices",
- [","] = "ShowPreferences",
- ["S"] = "UnsoloAllItems",
- ["s"] = {"+show/hide", {
- ["x"] = "ToggleShowRoutingMatrix",
- ["w"] = "ToggleShowWiringDiagram",
- ["t"] = "ToggleShowTrackManager",
- ["m"] = "ShowMasterTrack",
- ["M"] = "HideMasterTrack",
- ["r"] = "ToggleShowRegionMarkerManager",
- }},
- ["f"] = {"+fx", {
- ["x"] = "CloseAllFxChainsAndWindows",
- ["c"] = "ViewFxChainMaster",
- }},
- ["e"] = { "+envelope", {
- ["t"] = "ToggleShowAllEnvelopeGlobal",
- }},
- ["t"] = { "+track", {
- ["R"] = "RenderTrack",
- ["r"] = "RenameTrack",
- ["m"] = "CycleRecordMonitor",
- ["f"] = "CycleFolderState",
- ["y"] = "SaveTrackAsTemplate",
- ["p"] = "InsertTrackFromTemplate",
- ["1"] = "InsertTrackFromTemplateSlot1",
- ["2"] = "InsertTrackFromTemplateSlot2",
- ["3"] = "InsertTrackFromTemplateSlot3",
- ["4"] = "InsertTrackFromTemplateSlot4",
- ["c"] = "InsertClickTrack",
- ["v"] = "InsertVirtualInstrumentTrack",
- ["x"] = {"+routing", {
- ["p"] = "TrackToggleSendToParent",
- ["s"] = "ToggleShowTrackRouting",
- }},
- ["F"] = { "+freeze", {
- ["f"] = "FreezeTrack",
- ["u"] = "UnfreezeTrack",
- ["s"] = "ShowTrackFreezeDetails",
- }},
- }},
- ["a"] = { "+automation", {
- ["r"] = "SetGlobalAutomationModeTrimRead",
- ["l"] = "SetGlobalAutomationModeLatch",
- ["p"] = "SetGlobalAutomationModeLatchPreview",
- ["t"] = "SetGlobalAutomationModeTouch",
- ["R"] = "SetGlobalAutomationModeRead",
- ["w"] = "SetGlobalAutomationModeWrite",
- ["S"] = "SetGlobalAutomationModeOff",
- }},
- }},
- ["p"] = { "+project", {
- [","] = "ShowProjectSettings",
- ["n"] = "NextTab",
- ["p"] = "PrevTab",
- ["s"] = "SaveProject",
- ["o"] = "OpenProject",
- ["c"] = "NewProjectTab",
- ["x"] = "CloseProject",
- ["C"] = "CleanProjectDirectory",
- ["S"] = "SaveProjectWithNewVersion",
- ["t"] = { "+timebase", {
- ["t"] = "SetProjectTimebaseToTime",
- ["b"] = "SetProjectTimebaseToBeatsPos",
- ["r"] = "SetProjectTimebaseToBeatsPosLengthAndRate",
- }},
- ["r"] = { "+render", {
- ["."] = "RenderProjectWithLastSetting",
- ["r"] = "RenderProject",
- }},
- }},
- }},
- },
-}
diff --git a/definitions/extended_defaults/main.lua b/definitions/extended_defaults/main.lua
deleted file mode 100644
index 3239dee6..00000000
--- a/definitions/extended_defaults/main.lua
+++ /dev/null
@@ -1,132 +0,0 @@
-return {
- track_motion = {
- ["G"] = "LastTrack",
- ["gg"] = "FirstTrack",
- ["J"] = "NextFolderNear",
- ["K"] = "PrevFolderNear",
- ["/"] = "MatchedTrackForward",
- ["?"] = "MatchedTrackBackward",
- ["n"] = "NextTrackMatchForward",
- ["N"] = "NextTrackMatchBackward",
- [":"] = "TrackWithNumber",
- ["j"] = "NextTrack",
- ["k"] = "PrevTrack",
- [""] = "Prev10Track",
- [""] = "Next10Track",
- [""] = "Next5Track",
- [""] = "Prev5Track",
- },
- visual_track_command = {
- ["V"] = "SetModeNormal",
- [""] = "NudgeTrackPanLeft",
- [""] = "NudgeTrackPanRight",
- [""] = "NudgeTrackPanLeft10Times",
- [""] = "NudgeTrackPanRight10Times",
- },
- track_selector = {
- ["'"] = "MarkedTracks",
- ["F"] = "FolderParent",
- ["F"] = "Folder",
- ["i"] = {"+inner", {
- ["c"] = "InnerFolder",
- ["f"] = "InnerFolderAndParent",
- ["g"] = "AllTracks",
- }},
- },
- track_operator = {
- ['"'] = {"+snapshots", {
- ['s'] = "SaveTracksToCurrentSnapshot",
- ["c"] = "CreateNewSnapshotWithTracks",
- ["d"] = "DeleteTracksFromCurrentSnapshot",
- }},
- ["z"] = "ZoomTrackSelection",
- [""] = "MakeFolder",
- ["d"] = "CutTrack",
- ["a"] = "ArmTracks",
- ["s"] = "SelectTracks",
- ["S"] = "ToggleSolo",
- ["M"] = "ToggleMute",
- ["y"] = "CopyTrack",
- [""] = "ColorTrackGradient",
- [""] = "ColorTrack",
- },
- timeline_operator = {
- ["s"] = "SelectItemsAndSplit",
- [""] = "CopyAndFitByLooping",
- [""] = "SelectEnvelopePoints",
- ["d"] = "CutItems",
- ["y"] = "CopyItems",
- [""] = "CopyItems",
- [""] = "CutEnvelopePoints",
- [""] = "CopyEnvelopePoints",
- [""] = "DeleteTimeline",
- ["g"] = "GlueItems",
- ["#"] = "SetItemFadeBoundaries",
- ["z"] = "ZoomTimeSelection",
- ["Z"] = "ZoomTimeAndTrackSelection",
- [""] = "InsertAutomationItem",
- ["c"] = {"+change/fit", {
- ["a"] = "InsertOrExtendMidiItem",
- ["c"] = "FitByLoopingNoExtend",
- ["f"] = "FitByLooping",
- ["p"] = "FitByPadding",
- ["s"] = "FitByStretching",
- }},
- },
- timeline_selector = {
- ["s"] = "SelectedItems",
- },
- timeline_motion = {
- [""] = "NextTransientInItem",
- [""] = "PrevTransientInItem",
- [""] = "NextTransientInItemMinusFadeTime",
- [""] = "PrevTransientInItemMinusFadeTime",
- ["B"] = "PrevBigItemStart",
- ["E"] = "NextBigItemEnd",
- ["W"] = "NextBigItemStart",
- ["b"] = "PrevItemStart",
- [""] = "PrevEnvelopePoint",
- ["e"] = "NextItemEnd",
- ["w"] = "NextItemStart",
- [""] = "NextEnvelopePoint",
- ["$"] = "LastItemEnd",
- ["("] = "TimeSelectionStart",
- [")"] = "TimeSelectionEnd",
- },
- command = {
- [">"] = "TrimItemRightEdge",
- ["<"] = "TrimItemLeftEdge",
- [""] = "CycleFolderCollapsedState",
- ["zp"] = "ZoomProject",
- ["D"] = "CutSelectedItems",
- ["Y"] = "CopySelectedItems",
- ["V"] = "SetModeVisualTrack",
- [""] = "NextEnvelope",
- [""] = "PrevEnvelope",
- [""] = "ZoomInVert",
- [""] = "ZoomOutVert",
- ["+"] = "ZoomInHoriz",
- ["-"] = "ZoomOutHoriz",
- [";"] = "MoveItemToEditCursor",
- ["dd"] = "CutTrack",
- ["aa"] = "ArmTracks",
- ["O"] = "EnterTrackAbove",
- ["o"] = "EnterTrackBelow",
- ["p"] = "Paste",
- [""] = "Paste",
- ["yy"] = "CopyTrack",
- ["zz"] = "ScrollToSelectedTracks",
- ["%"] = "SplitItemsAtEditCursor",
- ["~"] = "MarkedTracks",
- [""] = "NudgeTrackVolumeDownBy1Tenth",
- [""] = "NudgeTrackVolumeUpBy1Tenth",
- [""] = "NudgeTrackVolumeDownBy1",
- [""] = "NudgeTrackVolumeUpBy1",
- [""] = "ShiftEnvelopePointsDownATinyBit",
- [""] = "ShiftEnvelopePointsUpATinyBit",
- [""] = "ShiftEnvelopePointsDown",
- [""] = "ShiftEnvelopePointsUp",
- [""] = "SelectItemsUnderEditCursor",
- ["'"] = "MarkedTracks",
- },
-}
diff --git a/definitions/extended_defaults/midi.lua b/definitions/extended_defaults/midi.lua
deleted file mode 100644
index cbf0a73e..00000000
--- a/definitions/extended_defaults/midi.lua
+++ /dev/null
@@ -1,55 +0,0 @@
-return {
- timeline_selector = {
- ["s"] = "SelectedNotes",
- },
- timeline_operator = {
- ["d"] = "CutNotes",
- ["y"] = "CopyNotes",
- ["c"] = "FitNotes",
- ["a"] = "InsertNote",
- ["g"] = "JoinNotes",
- ["s"] = "SelectNotes",
- ["z"] = "MidiZoomTimeSelection",
- },
- timeline_motion = {
- ["l"] = "RightMidiGridDivision",
- ["h"] = "LeftMidiGridDivision",
- ["("] = "MidiTimeSelectionStart",
- [")"] = "MidiTimeSelectionEnd",
- ["w"] = "NextNoteStart",
- ["b"] = "PrevNoteStart",
- ["W"] = "NextNoteSamePitchStart",
- ["B"] = "PrevNoteSamePitchStart",
- ["e"] = "EventSelectionEnd",
- },
- command = {
- ["n"] = "AddNextNoteToSelection",
- ["N"] = "AddPrevNoteToSelection",
- ["+"] = "MidiZoomInVert",
- ["-"] = "MidiZoomOutVert",
- [""] = "MidiZoomInHoriz",
- [""] = "MidiZoomOutHoriz",
- ["Z"] = "CloseWindow",
- ["p"] = "MidiPaste",
- ["S"] = "UnselectAllEvents",
- ["Y"] = "CopySelectedEvents",
- ["D"] = "CutSelectedEvents",
- ["k"] = "PitchUp",
- ["j"] = "PitchDown",
- ["K"] = "PitchUpOctave",
- ["zp"] = "MidiZoomContent",
- ["J"] = "PitchDownOctave",
- [""] = "PitchUpOctave",
- [""] = "PitchDownOctave",
- [""] = "PitchUp7",
- [""] = "PitchDown7",
- ["V"] = "SelectAllNotesAtPitch",
- [""] = "MoveNoteUpSemitone",
- [""] = "MoveNoteDownSemitone",
- [""] = "MoveNoteUpOctave",
- [""] = "MoveNoteDownOctave",
- [""] = "MoveNoteRight",
- [""] = "MoveNoteLeft",
- },
-}
-
diff --git a/definitions/gui_config.lua b/definitions/gui_config.lua
deleted file mode 100644
index e0681bcd..00000000
--- a/definitions/gui_config.lua
+++ /dev/null
@@ -1,69 +0,0 @@
-local os_default_fonts = {
- windows = "Lucida Console",
- osx = "Andale Mono",
- linux = "Fira Mono",
-}
-
-local os = reaper.GetOS()
-local default_font = (os:match("Win") and os_default_fonts.windows)
- or (os:match("OSX") and os_default_fonts.osx)
- or os_default_fonts.linux
-
-return {
- -- the factor to scale all gui elements (font size, element sizes...)
- -- will be multiplied by 2 if HiDPI mode is detected
- gui_scale = 1,
- action_type_colors = {
- command = {.4, 0.8, 0.5, 1},
- track_motion = {0.7, 0.51, 0.8, .8},
- track_selector = {0.85, 0.6, 0.8, 1},
- track_operator = {0.8, 0.51, 0.8, 1},
- visual_track_command = {0.65, 0.8, 0.8, 1},
- timeline_motion = {0.8, 0.6, 0.47, 1},
- timeline_selector = {0.85, 0.6, 0.47, 1},
- timeline_operator = {0.8, 0.51, 0.5, 1},
- visual_timeline_command = {0.7, 0.8, 0.58, 1},
- },
- feedback = {
- idle_time_until_show = .2,
- elements = {
- column_padding = 20,
- row_padding = 0,
- padding = 5,
- mode_line_h = 10,
- },
- fonts = {
- feedback_main = {default_font, 18},
- feedback_key = {default_font, 18},
- feedback_arrow = {default_font, 20},
- feedback_folder = {default_font, 18, "b"},
- },
- colors = {
- visual_timeline = {0.7, 0.8, 0.58, 1},
- extra_info = {1, 1, 1, .4},
- visual_track = {0.65, 0.8, 0.8, 1},
- key = {0.7, 0.51, 0.8, 1},
- arrow = {0.3, 0.51, 0.8, 1},
- folder = {0.6, 1, 0.85, .6},
- },
- },
- binding_list = {
- fonts = {
- binding_list_main = {default_font, 18},
- binding_list_label = {default_font, 14},
- },
- -- RGBA
- colors = {
- selection = {0.09, 0.26, 0.09, 1},
- count = {0.65, 0.8, 0.8, 1},
- query = {0.6, 1, 0.85, 1},
- action_name = {0.75, 0.75, 0.75, 1},
- matched_key = {.8, 0.3, 0.3, 1},
- bindings = {
- main = {0.81, 0.64, 0.79, 1},
- midi = {0.29, 0.74, 0.69, 1},
- global = {0.49, 0.65, 0.4, 1},
- }
- },
- }
-}
diff --git a/img/binding_list.gif b/img/binding_list.gif
deleted file mode 100644
index 47f9bf1b..00000000
Binary files a/img/binding_list.gif and /dev/null differ
diff --git a/img/completions.gif b/img/completions.gif
deleted file mode 100644
index f14a9e72..00000000
Binary files a/img/completions.gif and /dev/null differ
diff --git a/img/compose.gif b/img/compose.gif
deleted file mode 100644
index ef62b657..00000000
Binary files a/img/compose.gif and /dev/null differ
diff --git a/img/macro_play.gif b/img/macro_play.gif
deleted file mode 100644
index 3823800a..00000000
Binary files a/img/macro_play.gif and /dev/null differ
diff --git a/img/macro_rec.gif b/img/macro_rec.gif
deleted file mode 100644
index 20e32e6e..00000000
Binary files a/img/macro_rec.gif and /dev/null differ
diff --git a/img/reaper-keys.png b/img/reaper-keys.png
deleted file mode 100644
index ef4d19fd..00000000
Binary files a/img/reaper-keys.png and /dev/null differ
diff --git a/img/visual_mode.gif b/img/visual_mode.gif
deleted file mode 100644
index c3510494..00000000
Binary files a/img/visual_mode.gif and /dev/null differ
diff --git a/internal/command/action_sequence_functions/global.lua b/internal/command/action_sequence_functions/global.lua
index 656f2fe4..5dc9a6b6 100644
--- a/internal/command/action_sequence_functions/global.lua
+++ b/internal/command/action_sequence_functions/global.lua
@@ -1,83 +1,57 @@
local runner = require('command.runner')
-local log = require('utils.log')
local state_interface = require('state_machine.state_interface')
-local config = require('definitions.config')
-
-function invalidSequenceCall(...)
- log.error("An action action_sequence without a command function was called.")
- log.trace(debug.traceback())
-end
+local persist_visual_timeline_selection = require 'definitions.config'.general.persist_visual_timeline_selection
return {
- all_modes = {
- {
- { 'command' },
- function(action)
- runner.runAction(action)
- end
- },
- },
- normal = {
- {
- { 'timeline_operator', 'timeline_selector' },
- function(timeline_operator, timeline_selector)
- local start_sel, end_sel = reaper.GetSet_LoopTimeRange(false, false, 0, 0, false)
- runner.runAction(timeline_selector)
- runner.runAction(timeline_operator)
+ all_modes = {
+ { { 'command' }, runner.runAction },
+ },
+ normal = {
+ {
+ { 'timeline_operator', 'timeline_selector' },
+ function(timeline_operator, timeline_selector)
+ local start_sel, end_sel = reaper.GetSet_LoopTimeRange(false, false, 0, 0, false)
+ runner.runAction(timeline_selector)
+ runner.runAction(timeline_operator)
- if type(timeline_operator) ~= 'table' or not timeline_operator['setTimeSelection'] then
- reaper.GetSet_LoopTimeRange(true, false, start_sel, end_sel, false)
- end
- end
- },
- {
- { 'timeline_operator', 'timeline_motion' },
- function(timeline_operator, timeline_motion)
- local start_sel, end_sel = reaper.GetSet_LoopTimeRange(false, false, 0, 0, false)
- runner.makeSelectionFromTimelineMotion(timeline_motion, 1)
- runner.runAction(timeline_operator)
- if type(timeline_operator) ~= 'table' or not timeline_operator['setTimeSelection'] then
- reaper.GetSet_LoopTimeRange(true, false, start_sel, end_sel, false)
- end
- end
- },
- {
- { 'timeline_motion' },
- function(timeline_motion)
- runner.runAction(timeline_motion)
- end
- },
- },
- visual_timeline = {
- {
- { 'visual_timeline_command' },
- function(visual_timeline_command)
- runner.runAction(visual_timeline_command)
- end
- },
- {
- { 'timeline_operator' },
- function(timeline_operator)
- runner.runAction(timeline_operator)
- state_interface.setModeToNormal()
- if not config['persist_visual_timeline_selection'] then
- runner.runAction("ClearTimeSelection")
- end
- end
- },
- {
- { 'timeline_selector' },
- function(timeline_selector)
- runner.runAction(timeline_selector)
- end
- },
- {
- { 'timeline_motion' },
- function(timeline_motion)
- local args = {timeline_motion}
- local move_function = runner.runAction
- runner.extendTimelineSelection(move_function, args)
- end
- },
- }
+ if type(timeline_operator) ~= 'table' or not timeline_operator['setTimeSelection'] then
+ reaper.GetSet_LoopTimeRange(true, false, start_sel, end_sel, false)
+ end
+ end
+ },
+ {
+ { 'timeline_operator', 'timeline_motion' },
+ function(timeline_operator, timeline_motion)
+ local start_sel, end_sel = reaper.GetSet_LoopTimeRange(false, false, 0, 0, false)
+ runner.makeSelectionFromTimelineMotion(timeline_motion, 1)
+ runner.runAction(timeline_operator)
+ if type(timeline_operator) ~= 'table' or not timeline_operator['setTimeSelection'] then
+ reaper.GetSet_LoopTimeRange(true, false, start_sel, end_sel, false)
+ end
+ end
+ },
+ { { 'timeline_motion' }, runner.runAction },
+ },
+ visual_timeline = {
+ { { 'visual_timeline_command' }, runner.runAction },
+ {
+ { 'timeline_operator' },
+ function(timeline_operator)
+ runner.runAction(timeline_operator)
+ state_interface.setModeToNormal()
+ if not persist_visual_timeline_selection then
+ runner.runAction("ClearTimeSelection")
+ end
+ end
+ },
+ { { 'timeline_selector' }, runner.runAction },
+ {
+ { 'timeline_motion' },
+ function(timeline_motion)
+ local args = { timeline_motion }
+ local move_function = runner.runAction
+ runner.extendTimelineSelection(move_function, args)
+ end
+ },
+ }
}
diff --git a/internal/command/action_sequence_functions/main.lua b/internal/command/action_sequence_functions/main.lua
index 94331e93..fbfa50b6 100644
--- a/internal/command/action_sequence_functions/main.lua
+++ b/internal/command/action_sequence_functions/main.lua
@@ -1,79 +1,64 @@
local runner = require('command.runner')
local state_interface = require('state_machine.state_interface')
-local config = require('definitions.config')
+local config = require 'definitions.config'.general
local reaper_utils = require('custom_actions.utils')
return {
- all_modes = {
- {
- { 'track_motion' },
- function(track_motion)
- runner.runAction(track_motion)
- end
- }
- },
- normal = {
- {
- { 'track_operator', 'track_motion' },
- function(track_operator, track_motion)
- runner.runAction("SaveTrackSelection")
- runner.makeSelectionFromTrackMotion(track_motion, 1)
- runner.runAction(track_operator)
- if type(track_operator) ~= 'table' or not track_operator['setTrackSelection'] then
- runner.runAction("RestoreTrackSelection")
- end
- end
- },
- {
- { 'track_operator', 'track_selector' },
- function(track_operator, track_selector)
- runner.runAction("SaveTrackSelection")
- runner.runAction(track_selector)
- runner.runAction(track_operator)
- if type(track_operator) ~= 'table' or not track_operator['setTrackSelection'] then
- runner.runAction("RestoreTrackSelection")
- end
- end
- },
- },
- visual_track = {
- {
- { 'visual_track_command' },
- function(visual_track_command)
- runner.runAction(visual_track_command)
- end
- },
- {
- { 'track_operator' },
- function(track_operator)
- runner.runAction(track_operator)
- state_interface.setModeToNormal()
- if not config['persist_visual_track_selection'] and (type(track_operator) ~= 'table' or not track_operator['setTrackSelection']) then
- reaper_utils.unselectAllButLastTouchedTrack()
- end
- end
+ all_modes = {
+ { { 'track_motion' }, runner.runAction }
},
- {
- { 'track_selector' },
- function(track_selector)
- runner.runAction(track_selector)
- end
+ normal = {
+ {
+ { 'track_operator', 'track_motion' },
+ function(track_operator, track_motion)
+ runner.runAction("SaveTrackSelection")
+ runner.makeSelectionFromTrackMotion(track_motion, 1)
+ runner.runAction(track_operator)
+ if type(track_operator) ~= 'table' or not track_operator['setTrackSelection'] then
+ runner.runAction("RestoreTrackSelection")
+ end
+ end
+ },
+ {
+ { 'track_operator', 'track_selector' },
+ function(track_operator, track_selector)
+ runner.runAction("SaveTrackSelection")
+ runner.runAction(track_selector)
+ runner.runAction(track_operator)
+ if type(track_operator) ~= 'table' or not track_operator['setTrackSelection'] then
+ runner.runAction("RestoreTrackSelection")
+ end
+ end
+ },
},
- {
- { 'track_motion' },
- function(track_motion)
- local args = {track_motion, 1}
- local sel_function = runner.makeSelectionFromTrackMotion
- runner.extendTrackSelection(sel_function, args)
- end
- },
- {
- { 'timeline_motion' },
- function(timeline_motion)
- if config['allow_visual_track_timeline_movement'] then
- runner.runAction(timeline_motion)
- end
- end
- },
- }
+ visual_track = {
+ { { 'visual_track_command' }, runner.runAction },
+ {
+ { 'track_operator' },
+ function(track_operator)
+ runner.runAction(track_operator)
+ state_interface.setModeToNormal()
+ if not config.persist_visual_track_selection and (type(track_operator) ~= 'table' or not track_operator['setTrackSelection']) then
+ reaper_utils.unselectAllButLastTouchedTrack()
+ end
+ end
+ },
+ { { 'track_selector' }, runner.runAction },
+ {
+ { 'track_motion' },
+ function(track_motion)
+ local args = { track_motion, 1 }
+ local sel_function = runner.makeSelectionFromTrackMotion
+ runner.extendTrackSelection(sel_function, args)
+ end
+ },
+ {
+ { 'timeline_motion' },
+ function(timeline_motion)
+ if config.allow_timeline_movement_in_visual_mode then
+ runner.runAction(timeline_motion)
+ end
+ end
+ },
+ }
}
diff --git a/internal/command/action_sequence_functions/midi.lua b/internal/command/action_sequence_functions/midi.lua
index 97aeaddb..61388ecb 100644
--- a/internal/command/action_sequence_functions/midi.lua
+++ b/internal/command/action_sequence_functions/midi.lua
@@ -1,2 +1 @@
-return {
-}
+return { }
diff --git a/internal/command/action_sequences.lua b/internal/command/action_sequences.lua
index cd7acc88..158e72df 100644
--- a/internal/command/action_sequences.lua
+++ b/internal/command/action_sequences.lua
@@ -1,92 +1,75 @@
+require 'table_concat'
local action_sequences = {}
local action_sequence_definitions = {
- global = require('command.action_sequence_functions.global'),
- main = require('command.action_sequence_functions.main'),
- midi = require('command.action_sequence_functions.midi'),
+ global = require 'command.action_sequence_functions.global',
+ main = require 'command.action_sequence_functions.main',
+ midi = require 'command.action_sequence_functions.midi',
}
-function concatTables(...)
- local t = {}
- for n = 1,select("#",...) do
- local arg = select(n,...)
- if type(arg)=="table" then
- for _,v in ipairs(arg) do
- t[#t+1] = v
- end
- else
- t[#t+1] = arg
- end
- end
- return t
+local function getPossibleActionSequenceFunctionPairs(context, mode)
+ return ConcatTables(
+ action_sequence_definitions[context][mode],
+ action_sequence_definitions.global[mode],
+ action_sequence_definitions[context].all_modes,
+ action_sequence_definitions.global.all_modes
+ )
end
-function getPossibleActionSequenceFunctionPairs(context, mode)
- local possible_sequence_function_pairs = concatTables(
- action_sequence_definitions[context][mode],
- action_sequence_definitions['global'][mode],
- action_sequence_definitions[context]['all_modes'],
- action_sequence_definitions['global']['all_modes']
- )
-
- return possible_sequence_function_pairs
-end
-
-function action_sequences.getPossibleActionSequences(context, mode)
- local action_sequence_function_pairs = getPossibleActionSequenceFunctionPairs(context, mode)
-
- local action_sequences = {}
- for _, action_sequence_function_pair in ipairs(action_sequence_function_pairs) do
- local action_sequence = action_sequence_function_pair[1]
- table.insert(action_sequences, action_sequence)
- end
+function action_sequences.getPossibleActionSequences(state)
+ local context, mode = state.context, state.mode
+ local pairs = getPossibleActionSequenceFunctionPairs(context, mode)
- return action_sequences
+ local sequences = {}
+ for _, pair in ipairs(pairs) do
+ table.insert(sequences, pair[1])
+ end
+ return sequences
end
-function checkIfActionSequencesAreEqual(seq1, seq2)
- if #seq1 ~= #seq2 then return false end
- for i=1,#seq1 do
- if seq1[i] ~= seq2[i] then
- return false
+local function checkIfActionSequencesAreEqual(seq1, seq2)
+ if #seq1 ~= #seq2 then return false end
+ for i = 1, #seq1 do
+ if seq1[i] ~= seq2[i] then
+ return false
+ end
end
- end
- return true
+ return true
end
function action_sequences.getFunctionForCommand(command)
- local action_sequence_function_pairs = getPossibleActionSequenceFunctionPairs(command.context, command.mode)
+ local action_sequence_function_pairs = getPossibleActionSequenceFunctionPairs(command.context, command.mode)
- for _, action_sequence_function_pair in ipairs(action_sequence_function_pairs) do
- local action_sequence = action_sequence_function_pair[1]
- if checkIfActionSequencesAreEqual(command.action_sequence, action_sequence) then
- return action_sequence_function_pair[2]
+ for _, action_sequence_function_pair in ipairs(action_sequence_function_pairs) do
+ local action_sequence = action_sequence_function_pair[1]
+ if checkIfActionSequencesAreEqual(command.action_sequence, action_sequence) then
+ return action_sequence_function_pair[2]
+ end
end
- end
- return nil
+ return nil
end
function action_sequences.getActionTypes()
- local action_types = {}
- local seen_types = {}
- for _,context_definitions in pairs(action_sequence_definitions) do
- for _,mode_definitions in pairs(context_definitions) do
- for _,action_sequence_function_pair in pairs(mode_definitions) do
- local action_sequence = action_sequence_function_pair[1]
- for _,action_type in pairs(action_sequence) do
- if not seen_types[action_type] then
- seen_types[action_type] = true
- table.insert(action_types, action_type)
- end
+ local action_types = {}
+ local seen_types = {}
+ for _, context_definitions in pairs(action_sequence_definitions) do
+ for _, mode_definitions in pairs(context_definitions) do
+ for _, action_sequence_function_pair in pairs(mode_definitions) do
+ local action_sequence = action_sequence_function_pair[1]
+ for _, action_type in pairs(action_sequence) do
+ if not seen_types[action_type] then
+ seen_types[action_type] = true
+ table.insert(action_types, action_type)
+ end
+ end
+ end
end
- end
end
- end
- table.sort(action_types)
- return action_types
+ table.sort(action_types)
+ return action_types
end
return action_sequences
diff --git a/internal/command/builder.lua b/internal/command/builder.lua
index 3023c9e1..d775c2e1 100644
--- a/internal/command/builder.lua
+++ b/internal/command/builder.lua
@@ -1,97 +1,84 @@
-local utils = require('command.utils')
-local action_sequences = require('command.action_sequences')
-local definitions = require('utils.definitions')
-local getAction = require('utils.get_action')
-local format = require('utils.format')
-local log = require('utils.log')
-
-function getActionKey(key_sequence, entries)
- local action_name = utils.getEntryForKeySequence(key_sequence, entries)
- if action_name and not utils.isFolder(action_name) and (not utils.checkIfActionHasOptionSet(action_name, 'registerAction') or utils.checkIfActionHasOptionSet(action_name, 'registerOptional')) then
- return action_name
- end
-
- local number_match, rest_of_key_sequence = utils.splitFirstMatch(key_sequence, '[1-9][0-9]*')
- if number_match then
- local num_prefix_entries = utils.filterEntries({"prefixRepetitionCount"}, entries)
- local action_key = getActionKey(rest_of_key_sequence, num_prefix_entries)
- if action_key then
- if type(action_key) ~= 'table' then action_key = {action_key} end
- action_key['prefixedRepetitions'] = tonumber(number_match)
- return action_key
+local utils = require 'command.utils'
+local action_sequences = require 'command.action_sequences'
+local definitions = require 'utils.definitions'
+
+local function getActionKey(key_sequence, entries)
+ local action_name = utils.getEntryForKeySequence(key_sequence, entries)
+ local no_register =
+ not utils.checkIfActionHasOptionSet(action_name, 'registerAction')
+ or utils.checkIfActionHasOptionSet(action_name, 'registerOptional')
+
+ if action_name and not utils.isFolder(action_name) and no_register then return action_name end
+
+ local number_match, rest_of_key_sequence = utils.splitFirstMatch(key_sequence, '[1-9][0-9]*')
+ if number_match then
+ local num_prefix_entries = utils.filterEntries({ "prefixRepetitionCount" }, entries)
+ local action_key = getActionKey(rest_of_key_sequence, num_prefix_entries)
+ if action_key then
+ if type(action_key) ~= 'table' then action_key = { action_key } end
+ action_key['prefixedRepetitions'] = tonumber(number_match)
+ return action_key
+ end
end
- end
- local start_of_key_sequence, possible_register = utils.splitLastKey(key_sequence)
- local reg_postfix_entries = utils.filterEntries({"registerAction"}, entries)
- local register_action_name = utils.getEntryForKeySequence(start_of_key_sequence, reg_postfix_entries)
- if register_action_name and not utils.isFolder(register_action_name) then
- local action_key = {register_action_name}
- action_key['register'] = possible_register
- return action_key
- end
+ local start_of_key_sequence, possible_register = utils.splitLastKey(key_sequence)
+ local reg_postfix_entries = utils.filterEntries({ "registerAction" }, entries)
+ local register_action_name = utils.getEntryForKeySequence(start_of_key_sequence, reg_postfix_entries)
+ if register_action_name and not utils.isFolder(register_action_name) then
+ local action_key = { register_action_name }
+ action_key['register'] = possible_register
+ return action_key
+ end
- return nil
+ return nil
end
-function stripNextActionKeyInKeySequence(key_sequence, action_type_entries)
- if not action_type_entries then
- return nil, nil, false
- end
+local function stripNextActionKeyInKeySequence(key_sequence, action_type_entries)
+ if not action_type_entries then return nil, nil, false end
- local rest_of_key_sequence = ""
- local key_sequence_for_action_type = key_sequence
- while #key_sequence_for_action_type ~= 0 do
- local action_key = getActionKey(key_sequence_for_action_type, action_type_entries)
- if action_key then
- return rest_of_key_sequence, action_key, true
- end
+ local rest_of_key_sequence = ""
+ local key_sequence_for_action_type = key_sequence
+ while #key_sequence_for_action_type ~= 0 do
+ local action_key = getActionKey(key_sequence_for_action_type, action_type_entries)
+ if action_key then return rest_of_key_sequence, action_key, true end
- key_sequence_for_action_type, last_key = utils.splitLastKey(key_sequence_for_action_type)
- rest_of_key_sequence = last_key .. rest_of_key_sequence
- end
+ local last_key
+ key_sequence_for_action_type, last_key = utils.splitLastKey(key_sequence_for_action_type)
+ rest_of_key_sequence = last_key .. rest_of_key_sequence
+ end
- return nil, nil, false
+ return nil, nil, false
end
-function buildCommandWithSequence(key_sequence, action_sequence, entries)
- local command = {
- action_sequence = {},
- action_keys = {},
- }
-
- local rest_of_key_sequence = key_sequence
- for _, action_type in pairs(action_sequence) do
- rest_of_key_sequence, action_key, found = stripNextActionKeyInKeySequence(rest_of_key_sequence, entries[action_type])
- if not found then
- return nil
- else
- table.insert(command.action_sequence, action_type)
- table.insert(command.action_keys, action_key)
+local function buildCommandWithSequence(key_sequence, action_sequence, entries)
+ local command = { action_sequence = {}, action_keys = {} }
+ local rest_of_key_sequence = key_sequence
+
+ for _, action_type in pairs(action_sequence) do
+ local action_key, found
+ rest_of_key_sequence, action_key, found = stripNextActionKeyInKeySequence(
+ rest_of_key_sequence, entries[action_type])
+ if not found then return nil end
+ table.insert(command.action_sequence, action_type)
+ table.insert(command.action_keys, action_key)
end
- end
-
- if #rest_of_key_sequence > 0 then
- return nil
- end
- return command
+ if #rest_of_key_sequence > 0 then return nil end
+ return command
end
-function buildCommand(state)
- local action_sequences = action_sequences.getPossibleActionSequences(state['context'], state['mode'])
- local entries = definitions.getPossibleEntries(state['context'])
-
- for _, action_sequence in pairs(action_sequences) do
- local command = buildCommandWithSequence(state['key_sequence'], action_sequence, entries)
- if command then
- command['mode'] = state['mode']
- command['context'] = state['context']
- return command
+local function buildCommand(state)
+ local sequences = action_sequences.getPossibleActionSequences(state)
+ local entries = definitions.getPossibleEntries(state.context)
+
+ for _, action_sequence in pairs(sequences) do
+ local command = buildCommandWithSequence(state.key_sequence, action_sequence, entries)
+ if command then
+ command.mode = state.mode
+ command.context = state.context
+ return command
+ end
end
- end
-
- return nil
+ return nil
end
-
return buildCommand
diff --git a/internal/command/completer.lua b/internal/command/completer.lua
index 94a48394..6317ec63 100644
--- a/internal/command/completer.lua
+++ b/internal/command/completer.lua
@@ -2,140 +2,138 @@ local action_sequences = require('command.action_sequences')
local utils = require('command.utils')
local definitions = require('utils.definitions')
local log = require('utils.log')
-local format = require('utils.format')
-function entryToString(entry)
- if utils.isFolder(entry) then
- return entry[1]
- end
- return entry
-end
-
-function mergeEntries(t1, t2)
- if not t2 then
- return t1
- end
- for key_seq,entry_val in pairs(t2) do
- if t1[key_seq] then
- log.warn("Found key clash for action_sequence " .. key_seq .. " : " .. entryToString(t1[key_seq]) .. " and " .. entryToString(entry_val))
+local function entryToString(entry)
+ if utils.isFolder(entry) then
+ return entry[1]
end
- t1[key_seq] = entry_val
- end
+ return entry
end
-function mergeFutureEntriesWithFolder(possible_future_entries, key_sequence, folder_key_sequence, folder)
- local folder_table = folder[2]
- if folder_key_sequence == key_sequence then
- mergeEntries(possible_future_entries, folder_table)
- return
- end
-
- local first_key, rest_of_sequence = utils.splitFirstKey(key_sequence)
- if folder_key_sequence == first_key then
- local future_entries_from_folder = getPossibleFutureEntriesForKeySequence(rest_of_sequence, folder_table)
- mergeEntries(possible_future_entries, future_entries_from_folder)
- return
- end
+local function mergeEntries(t1, t2)
+ if not t2 then return t1 end
+ for key_seq, entry_val in pairs(t2) do
+ if t1[key_seq] then
+ log.warn("Found key clash for action_sequence " ..
+ key_seq .. " : " .. entryToString(t1[key_seq]) .. " and " .. entryToString(entry_val))
+ end
+ t1[key_seq] = entry_val
+ end
end
-function getPossibleFutureEntriesForKeySequence(key_sequence, entries)
- if not entries then return nil end
- if not key_sequence then return nil end
+local function getPossibleFutureEntriesForKeySequence(key_sequence, entries)
+ if not entries then return nil end
+ if not key_sequence then return nil end
- if key_sequence == "" then return entries end
+ if key_sequence == "" then return entries end
- local possible_future_entries = {}
+ local possible_future_entries = {}
- local number_match, key_sequence_no_number = utils.splitFirstMatch(key_sequence, '[1-9][0-9]*')
- if number_match then
- local number_prefix_entries = utils.filterEntries({"prefixRepetitionCount"}, entries)
- local possible_future_entries_if_number_prefix = getPossibleFutureEntriesForKeySequence(key_sequence_no_number, number_prefix_entries)
- mergeEntries(possible_future_entries, possible_future_entries_if_number_prefix)
- end
+ local number_match, key_sequence_no_number = utils.splitFirstMatch(key_sequence, '[1-9][0-9]*')
+ if number_match then
+ local number_prefix_entries = utils.filterEntries({ "prefixRepetitionCount" }, entries)
+ local possible_future_entries_if_number_prefix = getPossibleFutureEntriesForKeySequence(key_sequence_no_number,
+ number_prefix_entries)
+ mergeEntries(possible_future_entries, possible_future_entries_if_number_prefix)
+ end
- for entry_key_sequence,entry_val in pairs(entries) do
- local completion_sequence = utils.stripBegginingKeys(entry_key_sequence, key_sequence)
- if completion_sequence then
- possible_future_entries[completion_sequence] = entry_val
+ for entry_key_sequence, entry_val in pairs(entries) do
+ local completion_sequence = utils.stripBegginingKeys(entry_key_sequence, key_sequence)
+ if completion_sequence then
+ possible_future_entries[completion_sequence] = entry_val
+ end
+ if utils.isFolder(entry_val) then
+ local folder = entry_val
+ MergeFutureEntriesWithFolder(possible_future_entries, key_sequence, entry_key_sequence, folder)
+ else
+ local action_name = entry_val
+ if key_sequence == entry_key_sequence and utils.checkIfActionHasOptionSet(action_name, 'registerAction') then
+ possible_future_entries["(key)"] = "(register)"
+ end
+ end
end
- if utils.isFolder(entry_val) then
- local folder = entry_val
- mergeFutureEntriesWithFolder(possible_future_entries, key_sequence, entry_key_sequence, folder)
- else
- local action_name = entry_val
- if key_sequence == entry_key_sequence and utils.checkIfActionHasOptionSet(action_name, 'registerAction') then
- possible_future_entries["(key)"] = "(register)"
- end
+
+ if next(possible_future_entries) == nil then
+ return nil
end
- end
- if next(possible_future_entries) == nil then
- return nil
- end
+ return possible_future_entries
+end
- return possible_future_entries
+function MergeFutureEntriesWithFolder(possible_future_entries, key_sequence, folder_key_sequence, folder)
+ local folder_table = folder[2]
+ if folder_key_sequence == key_sequence then
+ mergeEntries(possible_future_entries, folder_table)
+ return
+ end
+
+ local first_key, rest_of_sequence = utils.splitFirstKey(key_sequence)
+ if folder_key_sequence == first_key then
+ local future_entries_from_folder = getPossibleFutureEntriesForKeySequence(rest_of_sequence, folder_table)
+ mergeEntries(possible_future_entries, future_entries_from_folder)
+ return
+ end
end
-function getFutureEntriesOnActionSequence(key_sequence, action_sequence, entries)
- if #action_sequence == 0 then return nil end
+local function getFutureEntriesOnActionSequence(key_sequence, action_sequence, entries)
+ if #action_sequence == 0 then return nil end
- local current_action_type = action_sequence[1]
+ local current_action_type = action_sequence[1]
- local entries_for_current_action_type = entries[current_action_type]
- if not entries_for_current_action_type then return nil end
- if key_sequence == "" then
- return current_action_type, entries_for_current_action_type
- end
+ local entries_for_current_action_type = entries[current_action_type]
+ if not entries_for_current_action_type then return nil end
+ if key_sequence == "" then
+ return current_action_type, entries_for_current_action_type
+ end
+
+ local completions = getPossibleFutureEntriesForKeySequence(key_sequence, entries_for_current_action_type)
+ if completions then
+ return current_action_type, completions
+ end
- local completions = getPossibleFutureEntriesForKeySequence(key_sequence, entries_for_current_action_type)
- if completions then
- return current_action_type, completions
- end
+ local rest_of_sequence = key_sequence
+ local key_sequence_to_try = ""
+ local next_key = nil
- local rest_of_sequence = key_sequence
- local key_sequence_to_try = ""
- while #rest_of_sequence ~= 0 do
- next_key, rest_of_sequence = utils.splitFirstKey(rest_of_sequence)
- key_sequence_to_try = key_sequence_to_try .. next_key
- local entry = utils.getEntryForKeySequence(key_sequence_to_try, entries_for_current_action_type)
+ while #rest_of_sequence ~= 0 do
+ next_key, rest_of_sequence = utils.splitFirstKey(rest_of_sequence)
+ key_sequence_to_try = key_sequence_to_try .. next_key
+ local entry = utils.getEntryForKeySequence(key_sequence_to_try, entries_for_current_action_type)
- if entry then
- table.remove(action_sequence, 1)
- return getFutureEntriesOnActionSequence(rest_of_sequence, action_sequence, entries)
+ if entry then
+ table.remove(action_sequence, 1)
+ return getFutureEntriesOnActionSequence(rest_of_sequence, action_sequence, entries)
+ end
end
- end
- return nil
+ return nil
end
-function getPossibleFutureEntries(state)
- local action_sequences = action_sequences.getPossibleActionSequences(state['context'], state['mode'])
- if not action_sequences then return nil end
- local entries = definitions.getPossibleEntries(state['context'])
- if not entries then return nil end
-
- local future_entries = {}
- local future_entry_exists = false
- for _, action_sequence in pairs(action_sequences) do
- local next_action_type_for_sequence,entries_for_sequence = getFutureEntriesOnActionSequence(state['key_sequence'], action_sequence, entries)
-
- if entries_for_sequence then
- future_entry_exists = true
- if not future_entries[next_action_type_for_sequence] then
- future_entries[next_action_type_for_sequence] = entries_for_sequence
- else
- for key,entry in pairs(entries_for_sequence) do
- future_entries[next_action_type_for_sequence][key] = entry
+local function getPossibleFutureEntries(state)
+ local sequences = action_sequences.getPossibleActionSequences(state)
+ if not sequences then return nil end
+ local entries = definitions.getPossibleEntries(state.context)
+ if not entries then return nil end
+
+ local future_entries = {}
+ local future_entry_exists = false
+ for _, action_sequence in pairs(sequences) do
+ local next_action_type_for_sequence, entries_for_sequence = getFutureEntriesOnActionSequence(
+ state['key_sequence'], action_sequence, entries)
+
+ if entries_for_sequence then
+ future_entry_exists = true
+ if not future_entries[next_action_type_for_sequence] then
+ future_entries[next_action_type_for_sequence] = entries_for_sequence
+ else
+ for key, entry in pairs(entries_for_sequence) do
+ future_entries[next_action_type_for_sequence][key] = entry
+ end
+ end
end
- end
end
- end
-
- if future_entry_exists then
- return future_entries
- end
- return nil
+ if future_entry_exists then return future_entries end
+ return nil
end
-
return getPossibleFutureEntries
diff --git a/internal/command/executor.lua b/internal/command/executor.lua
index 91a79862..d44b0a31 100644
--- a/internal/command/executor.lua
+++ b/internal/command/executor.lua
@@ -3,7 +3,7 @@ local format = require('utils.format')
local action_sequences = require('command.action_sequences')
local utils = require('command.utils')
-function executeCommand(command)
+local function executeCommand(command)
local action_values = utils.getActionValues(command)
if not action_values then
log.error("Could not form executable command for: " .. format.block(command))
diff --git a/internal/command/handler.lua b/internal/command/handler.lua
index be046048..a8905d8f 100644
--- a/internal/command/handler.lua
+++ b/internal/command/handler.lua
@@ -1,51 +1,49 @@
local state_interface = require('state_machine.state_interface')
local reaper_state = require('utils.reaper_state')
-local log = require('utils.log')
-local saved = require('saved')
local utils = require('command.utils')
local format = require('utils.format')
local meta_command = require('command.meta_command')
local executeCommand = require('command.executor')
-local config = require('definitions.config')
+local config_match = require 'definitions.config'.general.repeatable_commands_action_type_match
function utils.qualifiesAsRepeatableCommand(command)
- for _,action_type in ipairs(command.action_sequence) do
- for _,action_type_match in ipairs(config.repeatable_commands_action_type_match) do
- if action_type:find(action_type_match) then
- return true
- end
+ for _, action_type in ipairs(command.action_sequence) do
+ for _, action_type_match in ipairs(config_match) do
+ if action_type:find(action_type_match) then
+ return true
+ end
+ end
end
- end
- return false
+ return false
end
-function handleCommand(state, command)
- reaper.Undo_BeginBlock()
- local new_state = state
-
- if meta_command.isMetaCommand(command) then
- new_state = meta_command.executeMetaCommand(state, command)
- else
- executeCommand(command)
- -- internal commands may have changed the state
- if not state_interface.checkIfConsistentState(state) then
- new_state = state_interface.get()
- end
+local function handleCommand(state, command)
+ reaper.Undo_BeginBlock2(0)
+ local new_state = state
- if utils.qualifiesAsRepeatableCommand(command) then
- new_state['last_command'] = command
- end
+ if meta_command.isMetaCommand(command) then
+ new_state = meta_command.executeMetaCommand(state, command)
+ else
+ executeCommand(command)
+ -- internal commands may have changed the state
+ if not state_interface.checkIfConsistentState(state) then
+ new_state = state_interface.get()
+ end
- if new_state['macro_recording'] then
- reaper_state.append('macros', state['macro_register'], command)
- end
+ if utils.qualifiesAsRepeatableCommand(command) then
+ new_state.last_command = command
+ end
- new_state['key_sequence'] = ""
- end
+ if new_state.macro_recording then
+ reaper_state.append('macros', state.macro_register, command)
+ end
+
+ new_state.key_sequence = ""
+ end
- reaper.Undo_EndBlock('reaper-keys: ' .. format.commandDescription(command), 1)
- local command_description = format.commandDescription(command)
- return new_state, command_description
+ reaper.Undo_EndBlock2(0, ('reaper-keys: %s'):format(format.commandDescription(command)), 1)
+ local command_description = format.commandDescription(command)
+ return new_state, command_description
end
return handleCommand
diff --git a/internal/command/meta_command.lua b/internal/command/meta_command.lua
index 29c0d757..9bbc508c 100644
--- a/internal/command/meta_command.lua
+++ b/internal/command/meta_command.lua
@@ -4,16 +4,13 @@ local binding_list = require('gui.binding_list.controller')
local executeCommand = require('command.executor')
local utils = require('command.utils')
local format = require('utils.format')
-local saved = require('saved')
-local definitions = require('utils.definitions')
-local state_machine_constants = require('state_machine.constants')
-local action_sequences = require('command.action_sequences')
+local state_machine_default_state = require'state_machine.default_state'
local log = require('utils.log')
local reaper_state = require('utils.reaper_state')
-function executeMacroCommands(state, command, macro_commands, repetitions)
- for i=1,repetitions do
- for i,macro_command in pairs(macro_commands) do
+local function executeMacroCommands(state, command, macro_commands, repetitions)
+ for _=1,repetitions do
+ for _,macro_command in pairs(macro_commands) do
if meta_command.isMetaCommand(macro_command) then
meta_command.executeMetaCommand(state, macro_command)
else
@@ -23,8 +20,8 @@ function executeMacroCommands(state, command, macro_commands, repetitions)
end
end
-function executeCommandOrMetaCommand(state, command, repetitions)
- for i=1,repetitions do
+local function executeCommandOrMetaCommand(state, command, repetitions)
+ for _=1,repetitions do
if meta_command.isMetaCommand(command) then
meta_command.executeMetaCommand(state, command)
else
@@ -39,7 +36,7 @@ local meta_commands = {
local register = command.action_keys[cmd_i]['register']
if not register then
log.error("Did not get register for PlayMacro, but command was triggered!")
- return state_machine_constants['reset_state']
+ return state_machine_default_state
end
local repetitions = 1
@@ -51,7 +48,7 @@ local meta_commands = {
if macro_commands then
executeMacroCommands(state, command, macro_commands, repetitions)
if state['macro_recording'] then
- saved.append('macros', state['macro_register'], command)
+ reaper_state.append('macros', state['macro_register'], command)
end
end
@@ -105,7 +102,7 @@ local meta_commands = {
end
}
-function getMetaCommandFunctionForCommand(command)
+local function getMetaCommandFunctionForCommand(command)
local cmd_i = utils.getActionTypeIndex(command, 'command')
local command_key = command.action_keys[cmd_i]
if not command_key then
@@ -136,7 +133,7 @@ function meta_command.executeMetaCommand(state, command)
if not meta_command_function then
log.warn('Unknown meta command: ' .. format.block(command))
log.warn('Available meta commands are: ' .. format.line(meta_commands))
- return state_machine_constants['reset_state']
+ return state_machine_default_state
end
local new_state = meta_command_function(state, command)
diff --git a/internal/custom_actions/custom_actions.lua b/internal/custom_actions/custom_actions.lua
index 761ccae1..f7947525 100644
--- a/internal/custom_actions/custom_actions.lua
+++ b/internal/custom_actions/custom_actions.lua
@@ -1,60 +1,53 @@
-local log = require('utils.log')
-local format = require('utils.format')
+local log = require 'utils.log'
local custom_actions = {
- move = require('custom_actions.movement'),
- select = require('custom_actions.selection')
+ move = require 'custom_actions.movement',
+ select = require 'custom_actions.selection'
}
function custom_actions.clearTimeSelection()
- local current_position = reaper.GetCursorPosition()
- reaper.GetSet_LoopTimeRange(true, false, current_position, current_position, false)
+ local current_position = reaper.GetCursorPosition()
+ reaper.GetSet_LoopTimeRange(true, false, current_position, current_position, false)
end
-function getUserGridDivisionInput()
- local _, num_string = reaper.GetUserInputs("Set Grid Division", 1, "Fraction/Number", "")
- local first_num = num_string:match("[0-9.]+")
- local divider = num_string:match("/([0-9.]+)")
-
- local division = nil
- if first_num and divider then
- division = first_num / divider
- elseif first_num then
- division = first_num
- else
- log.error("Could not parse specified grid division.")
- return nil
- end
-
- return division
+local function getUserGridDivisionInput()
+ local _, num_string = reaper.GetUserInputs("Set Grid Division", 1, "Fraction/Number", "")
+ local first_num = num_string:match("[0-9.]+")
+ local divider = num_string:match("/([0-9.]+)")
+
+ local division = nil
+ if first_num and divider then
+ division = first_num / divider
+ elseif first_num then
+ division = first_num
+ else
+ log.error("Could not parse specified grid division.")
+ return nil
+ end
+
+ return division
end
function custom_actions.setMidiGridDivision()
- local division = getUserGridDivisionInput()
- if division then
- reaper.SetMIDIEditorGrid(0, division)
- end
+ local division = getUserGridDivisionInput()
+ if division then reaper.SetMIDIEditorGrid(0, division) end
end
function custom_actions.clearSelectedTimeline()
- local current_position = reaper.GetCursorPosition()
- reaper.GetSet_LoopTimeRange(true, false, current_position, current_position, false)
+ local current_position = reaper.GetCursorPosition()
+ reaper.GetSet_LoopTimeRange(true, false, current_position, current_position, false)
end
function custom_actions.setGridDivision()
- local division = getUserGridDivisionInput()
- if division then
- reaper.SetProjectGrid(0, division)
- end
+ local division = getUserGridDivisionInput()
+ if division then reaper.SetProjectGrid(0, division) end
end
-- this one avoids splitting all items across tracks in time selection, if no items are selected
function custom_actions.splitItemsAtTimeSelection()
- if reaper.CountSelectedMediaItems(0) == 0 then
- return
- end
- local SplitAtTimeSelection = 40061
- reaper.Main_OnCommand(SplitAtTimeSelection, 0)
+ if reaper.CountSelectedMediaItems(0) == 0 then return end
+ local SplitAtTimeSelection = 40061
+ reaper.Main_OnCommand(SplitAtTimeSelection, 0)
end
return custom_actions
diff --git a/internal/custom_actions/movement.lua b/internal/custom_actions/movement.lua
index 6566afe6..fec050f3 100644
--- a/internal/custom_actions/movement.lua
+++ b/internal/custom_actions/movement.lua
@@ -1,150 +1,138 @@
-local utils = require("custom_actions.utils")
-
+local utils = require "custom_actions.utils"
local movement = {}
function movement.projectStart()
- reaper.SetEditCurPos(0, true, false)
+ reaper.SetEditCurPos(0, true, false)
end
function movement.projectEnd()
- local project_end = reaper.GetProjectLength(0)
- reaper.SetEditCurPos(project_end, true, false)
+ reaper.SetEditCurPos(reaper.GetProjectLength(0), true, false)
end
function movement.lastItemEnd()
- local item_positions = utils.getBigItemPositionsOnSelectedTracks()
- if #item_positions > 0 then
- local last_item = item_positions[#item_positions]
- reaper.SetEditCurPos(last_item.right, true, false)
- end
+ local positions = utils.getBigItemPositionsOnSelectedTracks()
+ if #positions == 0 then return end
+ reaper.SetEditCurPos(positions[#positions].right, true, false)
end
function movement.firstItemStart()
- local item_positions = utils.getBigItemPositionsOnSelectedTracks()
- if #item_positions > 0 then
- local first_item = item_positions[1]
- reaper.SetEditCurPos(first_item.left, true, false)
- end
-end
-
-function moveToPrevItemStart(item_positions)
- local current_position = reaper.GetCursorPosition()
- local next_position = nil
- for i,item in pairs(item_positions) do
- if not next_position and item.left < current_position and item.right >= current_position then
- next_position = item.left
- end
-
- if next_position and item.left > next_position and item.right >= next_position then
- next_position = item.left
+ local positions = utils.getBigItemPositionsOnSelectedTracks()
+ if #positions == 0 then return end
+ reaper.SetEditCurPos(positions[1].left, true, false)
+end
+
+local function moveToPrevItemStart(item_positions)
+ local current_position = reaper.GetCursorPosition()
+ local next_position = nil
+ for i, item in pairs(item_positions) do
+ if not next_position and item.left < current_position and item.right >= current_position then
+ next_position = item.left
+ end
+
+ if next_position and item.left > next_position and item.right >= next_position then
+ next_position = item.left
+ end
+
+ local next_item = item_positions[i + 1]
+ if not next_item or next_item.left >= current_position then
+ next_position = item.left
+ break
+ end
end
- local next_item = item_positions[i+1]
- if not next_item or next_item.left >= current_position then
- next_position = item.left
- break
- end
- end
-
- if next_position then
- reaper.SetEditCurPos(next_position, true, false)
- end
+ if next_position then reaper.SetEditCurPos(next_position, true, false) end
end
function movement.prevBigItemStart()
- moveToPrevItemStart(utils.getBigItemPositionsOnSelectedTracks())
+ moveToPrevItemStart(utils.getBigItemPositionsOnSelectedTracks())
end
function movement.prevItemStart()
- moveToPrevItemStart(utils.getItemPositionsOnSelectedTracks())
-end
-
-function moveToNextItemStart(item_positions)
- local current_position = reaper.GetCursorPosition()
- local next_position = nil
- for i,item_position in pairs(item_positions) do
- if not next_position and current_position < item_position.left then
- next_position = item_position.left
- end
- if next_position and item_position.left < next_position then
- next_position = item_position.left
+ moveToPrevItemStart(utils.getItemPositionsOnSelectedTracks())
+end
+
+local function moveToNextItemStart(item_positions)
+ local current_position = reaper.GetCursorPosition()
+ local next_position = nil
+ for _, item_position in pairs(item_positions) do
+ if not next_position and current_position < item_position.left then
+ next_position = item_position.left
+ end
+ if next_position and item_position.left < next_position then
+ next_position = item_position.left
+ end
end
- end
- if next_position then
- reaper.SetEditCurPos(next_position, true, false)
- end
+ if next_position then reaper.SetEditCurPos(next_position, true, false) end
end
function movement.nextBigItemStart()
- moveToNextItemStart(utils.getBigItemPositionsOnSelectedTracks())
+ moveToNextItemStart(utils.getBigItemPositionsOnSelectedTracks())
end
function movement.nextItemStart()
- moveToNextItemStart(utils.getItemPositionsOnSelectedTracks())
-end
-
-function moveToNextItemEnd(item_positions)
- local current_position = reaper.GetCursorPosition()
- local next_position = nil
- local tolerance = .002
- for _,item_position in pairs(item_positions) do
- if not next_position and item_position.right - tolerance > current_position then
- next_position = item_position.right
- elseif next_position and item_position.right < next_position and item_position.right > current_position then
- next_position = item_position.right
+ moveToNextItemStart(utils.getItemPositionsOnSelectedTracks())
+end
+
+local function moveToNextItemEnd(item_positions)
+ local current_position = reaper.GetCursorPosition()
+ local next_position = nil
+ local tolerance = .002
+ for _, item_position in pairs(item_positions) do
+ if not next_position and item_position.right - tolerance > current_position then
+ next_position = item_position.right
+ elseif next_position and item_position.right < next_position and item_position.right > current_position then
+ next_position = item_position.right
+ end
+ end
+ if next_position then
+ reaper.SetEditCurPos(next_position, true, false)
end
- end
- if next_position then
- reaper.SetEditCurPos(next_position, true, false)
- end
end
function movement.nextBigItemEnd()
- moveToNextItemEnd(utils.getBigItemPositionsOnSelectedTracks())
+ moveToNextItemEnd(utils.getBigItemPositionsOnSelectedTracks())
end
function movement.nextItemEnd()
- moveToNextItemEnd(utils.getItemPositionsOnSelectedTracks())
+ moveToNextItemEnd(utils.getItemPositionsOnSelectedTracks())
end
function movement.firstTrack()
- local first_track = reaper.GetTrack(0, 0)
- reaper.SetOnlyTrackSelected(first_track)
+ local track = reaper.GetTrack(0, 0)
+ if track then reaper.SetOnlyTrackSelected(track) end
end
function movement.lastTrack()
- local num_tracks = reaper.GetNumTracks()
- local last_track = reaper.GetTrack(0, num_tracks-1)
- reaper.SetOnlyTrackSelected(last_track)
+ local num = reaper.GetNumTracks()
+ if num == 0 then return end
+ local track = reaper.GetTrack(0, num - 1)
+ reaper.SetOnlyTrackSelected(track)
end
function movement.trackWithNumber()
- local _, number = reaper.GetUserInputs("Match Forward", 1, "Track Number", "")
- if type(number) ~= 'number' then
- return
- end
+ local _, number = reaper.GetUserInputs("Match Forward", 1, "Track Number", "")
+ if type(number) ~= 'number' then return end
- local track = reaper.GetTrack(0, number-1)
- if track then
- reaper.SetOnlyTrackSelected(track)
- end
+ local track = reaper.GetTrack(0, number - 1)
+ if track then reaper.SetOnlyTrackSelected(track) end
end
function movement.firstTrackWithItem()
- local num_tracks = reaper.GetNumTracks()
- for i=0,num_tracks-1 do
- local track = reaper.GetTrack(0, i)
- if reaper.GetTrackNumMediaItems(track) > 0 then
- reaper.SetOnlyTrackSelected(track)
- return
+ local num = reaper.GetNumTracks()
+ if num == 0 then return end
+ for i = 0, num - 1 do
+ local track = reaper.GetTrack(0, i)
+ if reaper.GetTrackNumMediaItems(track) > 0 then
+ reaper.SetOnlyTrackSelected(track)
+ return
+ end
end
- end
end
function movement.snap()
- local pos = reaper.GetCursorPosition()
- local snapped_pos = reaper.SnapToGrid(0, pos)
- reaper.SetEditCurPos(snapped_pos, false, false)
+ local pos = reaper.GetCursorPosition()
+ local snapped_pos = reaper.SnapToGrid(0, pos)
+ reaper.SetEditCurPos(snapped_pos, false, false)
end
return movement
diff --git a/internal/custom_actions/utils.lua b/internal/custom_actions/utils.lua
index e0cde783..72c3b7e0 100644
--- a/internal/custom_actions/utils.lua
+++ b/internal/custom_actions/utils.lua
@@ -1,15 +1,11 @@
-local log = require('utils.log')
-
local utils = {}
-function mergeItemPositionsLists(item_positions_list)
+local function mergeItemPositionsLists(item_positions_list)
local merged_list = {}
- function areRemainingItems()
- for i,item_positions in ipairs(item_positions_list) do
- if #item_positions_list[i] ~= 0 then
- return true
- end
+ local function areRemainingItems()
+ for i, _ in ipairs(item_positions_list) do
+ if #item_positions_list[i] ~= 0 then return true end
end
return false
end
@@ -33,7 +29,7 @@ function mergeItemPositionsLists(item_positions_list)
return merged_list
end
-function getItemPositionsOnTracks(tracks)
+local function getItemPositionsOnTracks(tracks)
local item_positions_lists = {}
for i=1,#tracks do
local current_track = tracks[i]
@@ -152,8 +148,7 @@ end
function utils.getSelectedTracks()
local selected_tracks = {}
- local n_tracks = reaper.CountSelectedTracks()
- for i=0,reaper.CountSelectedTracks()-1 do
+ for i=0, reaper.CountSelectedTracks()-1 do
local track = reaper.GetSelectedTrack(0, i)
selected_tracks[i+1] = track
end
@@ -223,7 +218,7 @@ function utils.getSelectedTrackIndices()
end
function utils.unselectTracks()
- for i,track in ipairs(utils.getSelectedTracks()) do
+ for _,track in ipairs(utils.getSelectedTracks()) do
reaper.SetTrackSelected(track, false)
end
end
diff --git a/internal/definitions/actions.lua b/internal/definitions/actions.lua
new file mode 100644
index 00000000..250ef542
--- /dev/null
+++ b/internal/definitions/actions.lua
@@ -0,0 +1,743 @@
+local lib = require 'library.library' -- functions specific to reaper-keys i.e. macros
+local custom = require 'custom_actions.custom_actions' -- custom functions which make use of the reaper api
+
+-- Here are some predefined commands that you can use in bindings.lua e.g to map
+-- abcd => ActivateNextMidiItem instead of abcd => 40833.
+--
+-- You can add your own actions. The following forms are possible:
+--
+-- Foo = 1337 -- run action 1337
+-- Foo = "Fooable" -- run action with custom name Fooable (e.g. SWS actions are usually named).
+-- You can refer to other actions.
+-- Foo = {"Foo1", "Foo2"} -- run a sequence of actions: first Foo1, then Foo2
+-- Foo = lib.foo.bar -- run a lua function
+--
+-- You can specify flags for every action:
+-- Foo = {1337, midiCommand = true}
+-- Foo = {1337, prefixRepetitionCount = true}
+-- Foo = {1337, repetitions = 100500}
+-- Foo = {1337, metaCommand = true}
+-- Foo = {1337, registerAction = true}
+--
+-- Naming conventions:
+-- - A noun implies an action which selects the noun, or a movement to its position
+-- - Simple verbs are usually operators, such as 'change'
+-- - Longer verbs are usually commands
+return {
+ ActivateNextMidiItem = { 40833, midiCommand = true },
+ ActivatePrevMidiItem = { 40834, midiCommand = true },
+ AddFx = 40271,
+ AddNextNoteToSelection = { 40422, midiCommand = true },
+ AddPrevNoteToSelection = { 40421, midiCommand = true },
+ InsertVirtualInstrumentTrack = 40701,
+ InsertClickTrack = "_SWS_AWINSERTCLICKTRK",
+ InsertTrackFromTemplate = 46000,
+ InsertAutomationItem = 42082,
+ InsertDefaultSizeNote = { 40051, midiCommand = true },
+ InsertNote = {
+ "MidiTimeSelectionStart",
+ "InsertDefaultSizeNote",
+ "MidiTimeSelectionStart",
+ "SelectNearestNote",
+ "FitNotes" },
+ InsertOrExtendMidiItem = 42069,
+ InsertMediaFile = 40018,
+ InsertTrackAbove = { "_SWS_INSRTTRKABOVE", prefixRepetitionCount = true },
+ InsertTrackBelow = { 40001, prefixRepetitionCount = true },
+ Insert4EnvelopePointsAtTimeSelection = 40726,
+ InsertTrackFromTemplateSlot1 = "_S&M_ADD_TRTEMPLATE1",
+ InsertTrackFromTemplateSlot2 = "_S&M_ADD_TRTEMPLATE2",
+ InsertTrackFromTemplateSlot3 = "_S&M_ADD_TRTEMPLATE3",
+ InsertTrackFromTemplateSlot4 = "_S&M_ADD_TRTEMPLATE4",
+ CreateNewSnapshotWithTracks = "_SWSSNAPSHOT_NEWSEL",
+ AllTrackItems = { "SaveItemSelection", "SelectItemsOnTrack", "SelectedItems", "RestoreItemSelection" },
+ AllTracks = 40296,
+ ArmAllEnvelopes = "_S&M_ARMALLENVS",
+ ArmSelectedTracks = "_XENAKIOS_SELTRAX_RECARMED",
+ ArmTracks = 9,
+ AutomationItem = 42197,
+ AutoRenameTake = "_XENAKIOS_AUTORENAMETAKES",
+ BigItem = custom.select.innerBigItem,
+ CleanProjectDirectory = 40098,
+ ClearAllEnvelope = "_S&M_REMOVE_ALLENVS",
+ ClearAllRecordArm = 40491,
+ ClearEnvelope = 40065,
+ ClearNoteSelection = { 40214, midiCommand = true },
+ ClearTimeSelection = custom.clearTimeSelection,
+ CloseAllFxChainsAndWindows = { "CloseAllFx", "CloseAllFxChain" },
+ CloseAllFxChain = "_S&M_WNCLS4",
+ CloseAllFx = "_S&M_WNCLS3",
+ CloseFloatingFxWindows = "_S&M_WNCLS3",
+ PlayFromMouseAndSoloTrack = "_BR_CONT_PLAY_MOUSE_SOLO_TRACK",
+ PlayFromEditCursorAndSoloTrackUnderMouse = "_BR_TOGGLE_PLAY_EDIT_SOLO_TRACK",
+ PrintLog = custom.printLog,
+ CloseFx = { "CloseFxChains", "CloseFxWindows" },
+ CloseFxWindows = "_S&M_WNCLS5",
+ CloseFxChains = "_S&M_WNCLS4",
+ CloseProject = 40860,
+ CloseWindow = { 2, midiCommand = true },
+ ColorTrack = { 40360, prefixRepetitionCount = true },
+ ColorTrackGradient = "_SWS_TRACKGRAD",
+ ColorTrackWithTrackAbove = "_SWS_COLTRACKPREV",
+ ColorTrackWithTrackBelow = "_SWS_COLTRACKNEXT",
+ CopyAndFitByLooping = 41319,
+ CopyEnvelope = 40035,
+ CopyEnvelopePoints = 40324,
+ CopyFxChain = "_S&M_SMART_CPY_FXCHAIN",
+ CopyItems = {
+ "SaveItemSelection",
+ "OnlySelectItemsCrossingTimeAndTrackSelection",
+ "CopySelectedAreaOfItems",
+ "RestoreItemSelection" },
+ CopyNotes = { "SelectNotes", "CopySelectedEvents" },
+ CopySelectedAreaOfItems = 40060,
+ CopySelectedEvents = { 40733, midiCommand = true },
+ CopySelectedItems = 40698,
+ CopyTrack = 40210,
+ CropToActiveTake = 40131,
+ CutEnvelopePoints = 40325,
+ CutFxChain = "_S&M_COPYFXCHAIN6",
+ CutInputFxChain = "_S&M_CUT_INFXCHAIN",
+ Overdub = {
+ "CopyTrack",
+ "UnarmSelectedTracks",
+ "Paste",
+ "NextTrack",
+ "StartStop",
+ "ToggleRecord",
+ "SelectItemsUnderEditCursor",
+ "CutSelectedItems" },
+ CutItemFxChain = { "CopyItemFxChain", "ClearItemFxChain" },
+ CopyItemFxChain = "_S&M_COPYFXCHAIN1",
+ ClearItemFxChain = "_S&M_CLRFXCHAIN2",
+ CutItems = { "SaveItemSelection", "SelectItemsAndSplit", "CutSelectedItems", "RestoreItemSelection" },
+ MoveItemContentToEditCursor = 41308,
+ MoveItemToEditCursor = 41205,
+ CutNotes = { "SelectNotes", "CutSelectedEvents" },
+ CutSelectedEvents = { 40012, midiCommand = true },
+ CutSelectedItems = 40699,
+ CutTrack = { "CopyTrack", "RemoveTrack", "SelectLastTouchedTrack" },
+ CycleFolderCollapsedState = 1042,
+ CycleFolderState = 1041,
+ CycleItemFadeInShape = { 41520, prefixRepetitionCount = true },
+ CycleItemFadeOutShape = { 41527, prefixRepetitionCount = true },
+ CycleRecordMonitor = 40495,
+ CycleRippleEditMode = 1155,
+ DeleteActiveTake = { 40129, prefixRepetitionCount = true },
+ DeleteEnvelope = 40333,
+ DeleteItem = 40006,
+ DeleteMark = { lib.marks.delete, registerAction = true },
+ DeleteNote = { 40002, midiCommand = true },
+ DeleteTimeline = 40201,
+ EnterTrackAbove = { "InsertTrackAbove", "ColorTrackWithTrackBelow", "RenameTrack" },
+ EnterTrackBelow = { "InsertTrackBelow", "ColorTrackWithTrackAbove", "RenameTrack" },
+ EventSelectionEnd = { 40639, midiCommand = true },
+ EventSelectionStart = { 40440, midiCommand = true },
+ AddTimeSignatureMarker = 40256,
+ EditTimeSignatureMarker = 40618,
+ DeleteTimeSignatureMarker = 40617,
+ NextTimeSignatureMarker = 41821,
+ PrevTimeSignatureMarker = 41820,
+ FirstItemStart = custom.move.firstItemStart,
+ FirstTrack = { custom.move.firstTrack, "ScrollToSelectedTracks" },
+ GlueItemsIgnoringTimeSelection = 40362,
+ FitByLoopingNoExtend = {
+ "OnlySelectItemsCrossingTimeAndTrackSelection",
+ "GlueItemsIgnoringTimeSelection",
+ "FitSelectedItemsByLooping" },
+ ToggleShowTempoEnvelope = 41046,
+ ToggleShowMasterTrack = 41050,
+ ToggleMasterMonoStereo = 40917,
+ ViewFxChainMaster = 40846,
+ FitByLooping = { "OnlySelectItemsCrossingTimeAndTrackSelection", "FitSelectedItemsByLooping" },
+ FitByPadding = { "OnlySelectItemsCrossingTimeAndTrackSelection", "FitSelectedItemsByPadding" },
+ FitByStretching = { "OnlySelectItemsCrossingTimeAndTrackSelection", "FitSelectedItemsByStretching" },
+ FitEnvelopePoints = "_BR_FIT_ENV_POINTS_TO_TIMESEL",
+ FitSelectedItemsByLooping = 41386,
+ FitSelectedItemsByPadding = 41385,
+ FitSelectedItemsByStretching = 41206,
+ FitNotes = { 40754, midiCommand = true },
+ FocusMain = "_S&M_WNMAIN",
+ FolderChildren = { "SelectFolderChildren", "ScrollToSelectedTracks" },
+ FolderParent = { "SelectFolderParent", "ScrollToSelectedTracks" },
+ Folder = { "SelectFolder", "ScrollToSelectedTracks" },
+ ResetFeedbackWindow = lib.ResetFeedbackWindow,
+ FreezeTrackMono = 40901,
+ FreezeTrackStereo = 41223,
+ GlueItemIgnoringTimeSelection = 40362,
+ GlueItems = {
+ "SaveItemSelection",
+ "SelectItems",
+ "GlueSelectedItemsInTimeSelection",
+ "RestoreItemSelection" },
+ GlueSelectedItemsInTimeSelection = 41588,
+ GoToEnd = { 40037, midiCommand = true },
+ GoToStart = { 40036, midiCommand = true },
+ GroupItems = 40032,
+ HealItemsSplits = 40548,
+ CreateMeasures = 40338,
+ CreateProjectTempo = 40843,
+ InnerFolderAndParent = { "FolderParent", "SelectFolder" },
+ InnerFolder = { "FolderParent", "SelectOnlyFoldersChildren" },
+ ShiftEnvelopePointsUp = { 41180, prefixRepetitionCount = true },
+ ShiftEnvelopePointsUpATinyBit = { 42381, prefixRepetitionCount = true },
+ ShiftEnvelopePointsDown = { 41181, prefixRepetitionCount = true },
+ ShiftEnvelopePointsDownATinyBit = { 42382, prefixRepetitionCount = true },
+ InvertVoicingDownwards = { 40910, midiCommand = true, prefixRepetitionCount = true },
+ InvertVoicingUpwards = { 40909, midiCommand = true, prefixRepetitionCount = true },
+ ApplyFxToItem = 40209,
+ Item = custom.select.innerItem,
+ ItemNormalize = 40108,
+ ItemSplitSelRight = "_SWS_AWSPLITXFADELEFT",
+ JoinNotes = { "SelectNotes", "JoinSelectedNotes" },
+ JoinSelectedNotes = { 40456, midiCommand = true },
+ LastItemEnd = custom.move.lastItemEnd,
+ LastTrack = { custom.move.lastTrack, "ScrollToSelectedTracks" },
+ Left10Pix = { "_XENAKIOS_MOVECUR10PIX_LEFT", prefixRepetitionCount = true },
+ Left40Pix = { "Left10Pix", repetitions = 4, prefixRepetitionCount = true },
+ LeftGridDivision = { 40646, prefixRepetitionCount = true },
+ LeftMidiGridDivision = { 40047, midiCommand = true, prefixRepetitionCount = true },
+ LoopEnd = 40633,
+ LoopSelection = "SetTimeSelectionToLoopSelection",
+ LoopStart = 40632,
+ MakeFolder = "_SWS_MAKEFOLDER",
+ MarkedRegion = { lib.marks.recallMarkedRegion, registerAction = true },
+ MarkedTimelinePosition = { lib.marks.recallMarkedTimelinePosition, registerAction = true },
+ MarkedTracks = { lib.marks.recallMarkedTracks, registerAction = true },
+ Mark = { lib.marks.save, registerAction = true },
+ MatchedTrackBackward = { "MatchTrackNameBackward", "ScrollToSelectedTracks" },
+ MatchedTrackForward = { "MatchTrackNameForward", "ScrollToSelectedTracks" },
+ MatchTrackNameBackward = lib.matchTrackNameBackward,
+ MatchTrackNameForward = lib.matchTrackNameForward,
+ MidiCCMoveLeftByGrid = { 40672, prefixRepetitionCount = true },
+ MidiCCMoveLeftByPixel = { 40674, prefixRepetitionCount = true },
+ MidiCCMoveRightByGrid = { 40673, prefixRepetitionCount = true },
+ MidiCCMoveRightByPixel = { 40675, prefixRepetitionCount = true },
+ MidiLearnLastTouchedFxParam = 41144,
+ MidiLoadNoteCCNames = 40409,
+ MidiOptionAllowAllMediaItemsEditableInNotationView = 41774,
+ MidiOptionAllowCCShapeInBankAndLSBLanes = 42100,
+ MidiOptionAvoidAutomaticallySettingMIDIItemsFromOtherTracksEditable = 40901,
+ MidiOptionEnableExtendingParentMediaItem = 40817,
+ MidiOptionToggleAlwaysSnapNotesToTheLeftItSnap = 40748,
+ MidiPaste = { 40011, midiCommand = true, prefixRepetitionCount = true },
+ MidiSaveNoteCCNames = 40410,
+ MidiTimeSelectionEnd = { 40881, midiCommand = true },
+ MidiTimeSelectionStart = { 40880, midiCommand = true },
+ MidiViewModeDrums = 40043,
+ MidiViewModeEvent = 40056,
+ MidiViewModeNotes = 40954,
+ MidiViewModePiano = 40042,
+ MidiViewNoteRowsHideUnused = 40453,
+ MidiViewNoteRowsHideUnusedAndUnnamed = 40454,
+ MidiViewNoteRowsShowAll = 40452,
+ MidiZoomContent = { 40466, midiCommand = true },
+ MidiZoomInHoriz = { 1012, midiCommand = true, prefixRepetitionCount = true },
+ MidiZoomInVert = { 40111, midiCommand = true, prefixRepetitionCount = true },
+ MidiZoomLoopSelection = { 40726, midiCommand = true },
+ MidiZoomOutHoriz = { 1011, midiCommand = true, prefixRepetitionCount = true },
+ MidiZoomOutVert = { 40112, midiCommand = true, prefixRepetitionCount = true },
+ MidiZoomTimeSelection = {
+ "SaveLoopSelection",
+ "SetLoopSelectionToTimeSelection",
+ "MidiZoomLoopSelection",
+ "RestoreLoopSelection" },
+ MinimizeTracks = "_SWS_MINTRACKS",
+ MixerShowHideChildrenOfSelectedTrack = 41665,
+ ModulateLastTouchedFxParam = 41143,
+ MousePositionIgnoreSnap = 40514,
+ MousePosition = { "MousePositionIgnoreSnap", "SnappedPosition" },
+ NextTransientInSelectedItems = { 40375, prefixRepetitionCount = true },
+ PrevTransientInSelectedItems = { 40376, prefixRepetitionCount = true },
+ MoveNoteDownOctave = { 40180, midiCommand = true, prefixRepetitionCount = true },
+ MoveNoteDownSemitone = { 40178, midiCommand = true, prefixRepetitionCount = true },
+ MoveNoteLeft = { 40183, midiCommand = true, prefixRepetitionCount = true },
+ MoveNoteLeftFine = { 40181, midiCommand = true, prefixRepetitionCount = true },
+ MoveNoteRight = { 40184, midiCommand = true, prefixRepetitionCount = true },
+ MoveNoteRightFine = { 40182, midiCommand = true, prefixRepetitionCount = true },
+ MoveNoteUpOctave = { 40179, midiCommand = true, prefixRepetitionCount = true },
+ MoveNoteUpSemitone = { 40177, midiCommand = true, prefixRepetitionCount = true },
+ MoveRedo = { "_SWS_EDITCURREDO", prefixRepetitionCount = true },
+ MoveSelectedItemLeftToEditCursor = 41306,
+ MoveSelectedItemRightToEditCursor = 41307,
+ MoveToFirstItem = { "SelectFirstItemOnSelectedTracks", "MoveToFirstItem" },
+ MoveToMousePositionAndPlay = { "MousePosition", "Play" },
+ MoveUndo = { "_SWS_EDITCURUNDO", prefixRepetitionCount = true },
+ NewProjectTab = 40859,
+ Next10Track = { "NextTrack", repetitions = 10, prefixRepetitionCount = true },
+ Next4Beats = { "NextBeat", repetitions = 4, prefixRepetitionCount = true },
+ Next4Measures = { "NextMeasure", repetitions = 4, prefixRepetitionCount = true },
+ Next5Track = { "NextTrack", repetitions = 5, prefixRepetitionCount = true },
+ NextBeat = 40841,
+ NextBigItemEnd = { custom.move.nextBigItemEnd, prefixRepetitionCount = true },
+ NextBigItemStart = { custom.move.nextBigItemStart, prefixRepetitionCount = true },
+ NextEnvelope = { 41864, prefixRepetitionCount = true },
+ NextEnvelopePoint = { "_SWS_BRMOVEEDITTONEXTENV", prefixRepetitionCount = true },
+ NextFolderNear = { "_SWS_SELNEARESTNEXTFOLDER", "ScrollToSelectedTracks", prefixRepetitionCount = true },
+ NextItemEnd = { custom.move.nextItemEnd, prefixRepetitionCount = true },
+ NextItemStart = { custom.move.nextItemStart, prefixRepetitionCount = true },
+ NextMarker = { 40173, prefixRepetitionCount = true },
+ NextMeasure = { 40839, prefixRepetitionCount = true },
+ NextNoteEnd = { "SelectNextNote", "EventSelectionEnd", prefixRepetitionCount = true },
+ NextNoteSamePitchEnd = { "SelectNextNoteSamePitch", "EventSelectionEnd", prefixRepetitionCount = true },
+ NextNoteSamePitchStart = { "SelectNextNoteSamePitch", "EventSelectionStart", prefixRepetitionCount = true },
+ NextNoteStart = { "SelectNextNote", "EventSelectionStart", prefixRepetitionCount = true },
+ NextRegion = {
+ "SetLoopRegionToNextRegion",
+ "LoopStart",
+ "SetTimeSelectionToLoopSelection",
+ prefixRepetitionCount = true
+ },
+ NextTab = { 40861, prefixRepetitionCount = true },
+ NextTake = { 40125, prefixRepetitionCount = true },
+ NextTrack = { 40285, prefixRepetitionCount = true },
+ NextTrackMatchBackward = {
+ "RepeatTrackNameMatchBackward",
+ "ScrollToSelectedTracks",
+ prefixRepetitionCount = true
+ },
+ NextTrackMatchForward = {
+ "RepeatTrackNameMatchForward",
+ "ScrollToSelectedTracks",
+ prefixRepetitionCount = true
+ },
+ NextTransientInItem = {
+ "SaveItemSelection",
+ "SelectItemsUnderEditCursor",
+ "NextTransientInSelectedItems",
+ "RestoreItemSelection",
+ prefixRepetitionCount = true
+ },
+ CalculateTransientGuides = 42028,
+ SplitItemAtTransients = "_XENAKIOS_SPLIT_ITEMSATRANSIENTS",
+ ClearTransientGuides = 42027,
+ AddStretchMarker = 41842,
+ DeleteStretchMarker = 41859,
+ NextStretchMarker = 41860,
+ PrevStretchMarker = 41861,
+ IncreaseTransientDetectionThreshold = { 40218, prefixRepetitionCount = true },
+ DecreaseTransientDetectionThreshold = { 40219, prefixRepetitionCount = true },
+ IncreaseTransientDetectionSensitivity = { 41537, prefixRepetitionCount = true },
+ DecreaseTransientDetectionSensitivity = { 41536, prefixRepetitionCount = true },
+ AdjustTransientDetection = 41208,
+ NoOp = 65535,
+ NudgeTrackPanLeft10Times = { "NudgeTrackPanLeft", repetitions = 10, prefixRepetitionCount = true },
+ NudgeTrackPanLeft = { 40283, prefixRepetitionCount = true },
+ NudgeTrackPanRight10Times = { "NudgeTrackPanRight", repetitions = 10, prefixRepetitionCount = true },
+ NudgeTrackPanRight = { 40284, prefixRepetitionCount = true },
+ NudgeTrackVolumeDownBy1 = { "NudgeTrackVolumeDown", repetitions = 20, prefixRepetitionCount = true },
+ NudgeTrackVolumeDownBy1Tenth = { "NudgeTrackVolumeDown", prefixRepetitionCount = true, repetitions = 2 },
+ NudgeTrackVolumeUp = { 40115, prefixRepetitionCount = true },
+ NudgeTrackVolumeUpBy1 = { "NudgeTrackVolumeUp", repetitions = 20, prefixRepetitionCount = true, },
+ NudgeTrackVolumeUpBy1Tenth = { "NudgeTrackVolumeUp", repetitions = 2, prefixRepetitionCount = true },
+ OnlySelectItemsCrossingTimeAndTrackSelection = {
+ "UnselectItems",
+ "SelectItemsCrossingTimeAndTrackSelection" },
+ OpenInMidiEditor = 40153,
+ OpenProject = 40025,
+ PasteAbove = { "PrevTrack", "Paste", prefixRepetitionCount = true },
+ PasteFxChain = { "_S&M_SMART_PST_FXCHAIN", prefixRepetitionCount = true },
+ PasteItem = { 40058, prefixRepetitionCount = true },
+ Paste = { "_SWS_AWPASTE", prefixRepetitionCount = true },
+ Pause = 1008,
+ PitchDown = { 40050, midiCommand = true, prefixRepetitionCount = true },
+ PitchDown7 = { "PitchDown", repetitions = 7, prefixRepetitionCount = true },
+ PitchDownOctave = { 40188, midiCommand = true, prefixRepetitionCount = true },
+ PitchUp = { 40049, midiCommand = true, prefixRepetitionCount = true },
+ PitchUp7 = { "PitchUp", repetitions = 7, prefixRepetitionCount = true },
+ PitchUpOctave = { 40187, midiCommand = true, prefixRepetitionCount = true },
+ Play = 1007,
+ PlayAndLoop = {
+ "SetLoopSelectionToTimeSelection",
+ "SaveEditCursorPosition",
+ "LoopStart",
+ "Play",
+ "RestoreEditCursorPosition",
+ setTimeSelection = true
+ },
+ PlayFromMousePosition = "_BR_PLAY_MOUSECURSOR",
+ PlayFromTimeSelectionStart = {
+ "SaveEditCursorPosition",
+ "TimeSelectionStart",
+ "Play",
+ "RestoreEditCursorPosition" },
+ PlayMacro = { registerAction = true, metaCommand = true, prefixRepetitionCount = true },
+ PlayPositionIgnoreSnap = 40434,
+ PlayPosition = { "PlayPositionIgnoreSnap", "SnappedPosition" },
+ Prev10Track = { "PrevTrack", repetitions = 10, prefixRepetitionCount = true },
+ Prev4Beats = { "PrevBeat", repetitions = 4, prefixRepetitionCount = true },
+ Prev4Measures = { "PrevMeasure", repetitions = 4, prefixRepetitionCount = true },
+ Prev5Track = { "PrevTrack", repetitions = 5, prefixRepetitionCount = true },
+ PrevBeat = { 40842, prefixRepetitionCount = true },
+ PrevBigItemStart = { custom.move.prevBigItemStart, prefixRepetitionCount = true },
+ PrevEnvelope = { 41863, prefixRepetitionCount = true },
+ PrevEnvelopePoint = { "_SWS_BRMOVEEDITTOPREVENV", prefixRepetitionCount = true },
+ PrevFolderNear = { "_SWS_SELNEARESTPREVFOLDER", "ScrollToSelectedTracks", prefixRepetitionCount = true },
+ PrevItemStart = { custom.move.prevItemStart, prefixRepetitionCount = true },
+ PrevMarker = { 40172, prefixRepetitionCount = true },
+ PrevMeasure = { 40840, prefixRepetitionCount = true },
+ PrevNoteEnd = { "SelectPrevNote", "EventSelectionEnd", prefixRepetitionCount = true },
+ PrevNoteSamePitchEnd = { "SelectPrevNoteSamePitch", "EventSelectionEnd", prefixRepetitionCount = true },
+ PrevNoteSamePitchStart = { "SelectPrevNoteSamePitch", "EventSelectionStart", prefixRepetitionCount = true },
+ PrevNoteStart = { "SelectPrevNote", "EventSelectionStart", prefixRepetitionCount = true },
+ PrevRegion = {
+ "SetLoopRegionToPrevRegion",
+ "LoopStart",
+ "SetTimeSelectionToLoopSelection",
+ prefixRepetitionCount = true
+ },
+ PrevTab = { 40862, prefixRepetitionCount = true },
+ PrevTake = { 40126, prefixRepetitionCount = true },
+ PrevTrack = { 40286, prefixRepetitionCount = true },
+ PrevTransientInItem = {
+ "SaveItemSelection",
+ "SelectItemsUnderEditCursor",
+ "PrevTransientInSelectedItems",
+ "RestoreItemSelection",
+ prefixRepetitionCount = true
+ },
+ NextTransientInItemMinusFadeTime = {
+ "SaveItemSelection",
+ "SelectItemsUnderEditCursor",
+ "NextTransientInSelectedItemsMinusFadeTime",
+ "RestoreItemSelection",
+ prefixRepetitionCount = true
+ },
+ PrevTransientInItemMinusFadeTime = {
+ "SaveItemSelection",
+ "SelectItemsUnderEditCursor",
+ "PrevTransientInSelectedItemsMinusFadeTime",
+ "RestoreItemSelection",
+ prefixRepetitionCount = true
+ },
+ NextTransientInSelectedItemsMinusFadeTime = "_XENAKIOS_MOVECURNEXT_TRANSMINUSFADE",
+ PrevTransientInSelectedItemsMinusFadeTime = "_XENAKIOS_MOVECURPREV_TRANSMINUSFADE",
+ ProjectEnd = custom.move.projectEnd,
+ ProjectStart = custom.move.projectStart,
+ ProjectTimeline = custom.select.innerProjectTimeline,
+ Quantize = { 40009, midiCommand = true },
+ RecallMark = { lib.marks.recall, registerAction = true },
+ RecordConditional = { "Stop", "ToggleRecordConditional" },
+ RecordMacro = { metaCommand = true, registerAction = true, registerOptional = true },
+ RecordOrStop = "_SWS_RECTOGGLE",
+ Record = {
+ "SaveEditCursorPosition",
+ "TimeSelectionStart",
+ "RecordConditional",
+ "RestoreEditCursorPosition",
+ setTimeSelection = true
+ },
+ Redo = { 40030, prefixRepetitionCount = true },
+ Region = custom.select.innerRegion,
+ RegionSelectItems = 40717,
+ RemoveMarker = 40613,
+ RemoveRegion = 40615,
+ RemoveTimeSelection = 40635,
+ RemoveTrack = 40005,
+ RenameTrack = 40696,
+ RenameTakeSourceFile = "_XENAKIOS_RENMTAKEANDSOURCE",
+ RenameTake = "_XENAKIOS_RENMTAKE",
+ RenameTakeAndSourceFile = "_XENAKIOS_RENMTAKEANDSOURCE",
+ RenderProject = 40015,
+ RenderProjectWithLastSetting = 41824,
+ RenderTrack = "_SWS_AWRENDERSTEREOSMART",
+ RepeatLastCommand = { metaCommand = true, prefixRepetitionCount = true },
+ RepeatLastAction = 2999,
+ RepeatPenultimateAction = 3000,
+ RepeatTrackNameMatchBackward = lib.repeatTrackNameMatchBackward,
+ RepeatTrackNameMatchForward = lib.repeatTrackNameMatchForward,
+ ResetAllControlSurfaceDevices = 42348,
+ ResetAllMidiDevices = 41175,
+ ResetControlDevices = { "ResetAllMidiDevices", "ResetAllControlSurfaceDevices" },
+ ResetSelection = {
+ "SelectOnlyCurrentTrack",
+ "UnselectItems",
+ "UnselectEnvelopePoints",
+ "UnselectAllEvents" },
+ Reset = { "Stop", "SetModeNormal", "SetRecordModeNormal", "ResetSelection" },
+ ResetTrackToNormal = { "UnarmSelectedTracks", "UnarmAllEnvelopes", "SetAutomationModeTrimRead" },
+ RestoreEditCursorPosition = "_BR_RESTORE_CURSOR_POS_SLOT_16",
+ RestoreItemSelection = "_SWS_RESTALLSELITEMS1",
+ RestoreLastItemSelection = "_SWS_RESTLASTSEL",
+ RestoreLoopSelection = "_SWS_RESTLOOP5",
+ RestoreTimeSelection = "_SWS_RESTTIME5",
+ RestoreTrackSelection = "_SWS_TOGSAVESEL",
+ Right10Pix = { "_XENAKIOS_MOVECUR10PIX_RIGHT", prefixRepetitionCount = true },
+ Right40Pix = { "Right10Pix", repetitions = 4, prefixRepetitionCount = true },
+ RightGridDivision = { 40647, prefixRepetitionCount = true },
+ RightMidiGridDivision = { 40048, midiCommand = true, prefixRepetitionCount = true },
+ SaveEditCursorPosition = "_BR_SAVE_CURSOR_POS_SLOT_16",
+ SaveItemSelection = "_SWS_SAVEALLSELITEMS1",
+ SaveLoopSelection = "_SWS_SAVELOOP5",
+ SaveProject = 40026,
+ SaveProjectWithNewVersion = 41895,
+ SaveTimeSelection = "_SWS_SAVETIME5",
+ SaveTrackSelection = "_SWS_SAVESEL",
+ ScrollToPlayPosition = 40150,
+ ScrollToEditCursor = "_SWS_HSCROLL10",
+ ScrollToSelectedTracks = 40913,
+ SelectAllItems = 40182,
+ SelectAllNotesAtPitch = { 41746, midiCommand = true },
+ SelectAllTracks = 40296,
+ SelectedItems = { "RemoveTimeSelection", "_SWS_SAFETIMESEL" },
+ SelectedNotes = { 40752, midiCommand = true },
+ SelectEnvelopePoints = 40330,
+ SelectEventsInTimeSelection = { 40876, midiCommand = true },
+ SelectFirstItemOnSelectedTracks = "_XENAKIOS_SELFIRSTITEMSOFTRACKS",
+ SelectFirstOfSelectedTracks = "_XENAKIOS_SELFIRSTOFSELTRAX",
+ SelectFolderChildren = "_SWS_SELCHILDREN",
+ SelectFolderParent = "_SWS_SELPARENTS",
+ SelectFolder = "_SWS_SELCHILDREN2",
+ Selection = "NoOp",
+ SelectItemsAndSplit = { "OnlySelectItemsCrossingTimeAndTrackSelection", "SplitItemsAtTimeSelection" },
+ SelectItemsCrossingTimeAndTrackSelection = 40718,
+ SelectItemsInGroups = 40034,
+ SelectItemsOnTrack = 40421,
+ SelectItems = "SelectItemsCrossingTimeAndTrackSelection",
+ SelectItemsUnderEditCursor = "_XENAKIOS_SELITEMSUNDEDCURSELTX",
+ SelectLastOfSelectedTracks = "_XENAKIOS_SELLASTOFSELTRAX",
+ SelectLastTouchedTrack = 40505,
+ SelectNearestNote = { 40425, midiCommand = true },
+ SelectNextNote = { 40413, midiCommand = true },
+ SelectNextNoteSamePitch = { 40428, midiCommand = true },
+ SelectNoteClosestToEditCursor = { 40426, midiCommand = true },
+ SelectNotes = "SelectNotesStartingInTimeSelection",
+ SelectNotesStartingInTimeSelection = { 40877, midiCommand = true },
+ SelectOnlyCurrentTrack = custom.select.onlyCurrentTrack,
+ SelectOnlyFoldersChildren = "_SWS_SELCHILDREN",
+ SelectPrevNote = { 40414, midiCommand = true },
+ SelectPrevNoteSamePitch = { 40427, midiCommand = true },
+ SelectTracks = { setTrackSelection = true },
+ ToggleItemDefaultFadeInAndOut = 41194,
+ SetAutomationModeLatch = 40404,
+ SetAutomationModeLatchAndArm = { "SetAutomationModeLatch", "ArmAllEnvelopes" },
+ SetAutomationModeLatchPreview = 42023,
+ SetAutomationModeRead = 40401,
+ SetAutomationModeTouch = 40402,
+ SetAutomationModeTrimRead = 40400,
+ SetRippleEditAllTracks = 40311,
+ SetRippleEditOff = 40309,
+ SetRippleEditPerTrack = 40310,
+ FirstTrackWithItem = custom.move.firstTrackWithItem,
+ DuplicateTimeline = {
+ "SaveTrackSelection",
+ "SelectAllTracks",
+ "CopyItems",
+ "TimeSelectionEnd",
+ "SetRippleEditAllTracks",
+ "FirstTrackWithItem",
+ "Paste",
+ "SetRippleEditOff",
+ "RestoreTrackSelection",
+ prefixRepetitionCount = true
+ },
+ ExplodeTakesInPlace = 40642,
+ ExplodeTakesInOrder = 40643,
+ ToggleBetweenReadAndTouchAutomationMode = 41109,
+ QuantizeItems = 40316,
+ ExplodeTakesInAcrossTracks = 40224,
+ SetAutomationModeWrite = 40403,
+ SetEnvelopeShapeBezier = 40683,
+ OpenConsole = "_SWSCONSOLE",
+ SetEnvelopeShapeFastEnd = 40429,
+ SetEnvelopeShapeFastStart = 40428,
+ SetEnvelopeShapeLinear = 40189,
+ SetEnvelopeShapeSlowStart = 40424,
+ SetEnvelopeShapeSquare = 40190,
+ SetFirstSelectedTrackAsLastTouchedTrack = 40914,
+ SetGlobalAutomationModeLatch = 40881,
+ SetGlobalAutomationModeLatchPreview = 42022,
+ SetGlobalAutomationModeOff = 40876,
+ SetGlobalAutomationModeRead = 40879,
+ SetGlobalAutomationModeTouch = 40880,
+ SetGlobalAutomationModeTrimRead = 40878,
+ SetGlobalAutomationModeWrite = 40882,
+ SetGridDivision = custom.setGridDivision,
+ SetItemFadeBoundaries = {
+ "SaveItemSelection",
+ "UnselectItems",
+ "SelectItemsCrossingTimeAndTrackSelection",
+ "SetSelectedItemFadeBoundaries",
+ "RestoreItemSelection" },
+ SetItemsTimebaseToBeatsPosLengthAndRate = "_SWS_AWITEMTBASEBEATALL",
+ ViewTakeEnvelopes = 41974,
+ SetItemsTimebaseToBeatsPos = "_SWS_AWITEMTBASEBEATPOS",
+ SetItemsTimebaseToDefault = "_SWS_AWITEMTBASEPROJ",
+ SetItemsTimebaseToTime = "_SWS_AWITEMTBASETIME",
+ SetLoopEnd = 40223,
+ SetLoopRegionToNextRegion = "_SWS_SELNEXTREG",
+ SetLoopRegionToPrevRegion = "_SWS_SELPREVREG",
+ SetLoopSelectionToTimeSelection = 40622,
+ SetLoopStart = 40222,
+ SetMidiGridDivision = custom.setMidiGridDivision,
+ SetModeNormal = lib.state.setModeNormal,
+ PasteItemFxChain = { "_S&M_COPYFXCHAIN9", prefixRepetitionCount = true },
+ SetModeVisualTimeline = lib.state.setModeVisualTimeline,
+ ClearSelectedTimeline = custom.clearSelectedTimeline,
+ ClearTimelineSelectionAndSetModeVisualTimeline = { "ClearSelectedTimeline", "SetModeVisualTimeline" },
+ SetModeVisualTrack = lib.state.setModeVisualTrack,
+ SetModeRecord = lib.state.setModeRecord,
+ SetProjectTimebaseToBeatsPosLengthAndRate = "_SWS_AWTBASEBEATALL",
+ SetProjectTimebaseToBeatsPos = "_SWS_AWTBASEBEATPOS",
+ SetProjectTimebaseToTime = "_SWS_AWTBASETIME",
+ SetRecordInput = 40496,
+ SetRecordMidiOutput = 40500,
+ SetRecordMidiOverdub = 40503,
+ SetRecordMidiReplace = 40504,
+ SetRecordMidiTouchReplace = 40852,
+ SetRecordModeNormal = 40252,
+ SetRecordMonitorOnly = 40498,
+ SetSelectedItemFadeBoundaries = "_SWS_AWFADESEL",
+ SetTimeSelectionEnd = 40626,
+ SetTimeSelectionStart = 40625,
+ SetTimeSelectionToLoopSelection = 40623,
+ SetTrackMidiAllChannels = "_S&M_MIDI_INPUT_ALL_CH",
+ TimeSelectionShiftedLeft = 40037,
+ TimeSelectionShiftedRight = 40038,
+ ShowActionList = 40605,
+ ShowNextFx = { "_S&M_WNONLY2", prefixRepetitionCount = true },
+ ShowPreferences = 40016,
+ ShowPrevFx = { "_S&M_WNONLY1", prefixRepetitionCount = true },
+ ShowProjectSettings = 40021,
+ ShowRoutingMatrix = 40251,
+ ShowTrackFreezeDetails = 41654,
+ ShowMonitoringFX = 41882,
+ ToggleShowTrackManager = 40906,
+ ToggleShowTrackRouting = 40293,
+ ToggleShowWiringDiagram = 42031,
+ SnappedPosition = custom.move.snap,
+ AddAndNameSnapshot = "_SWSSNAPSHOT_NEWEDIT",
+ CopyCurrentSnapshot = "_SWSSNAPSHOT_COPY",
+ PasteSnapshot = "_SWSSNAPSHOT_PASTE",
+ DeleteCurrentSnapshot = "_SWSSNAPSHOT_DELCUR",
+ DeleteTracksFromCurrentSnapshot = "_SWSSNAPSHOT_DEL",
+ ToggleSnapshotsWindow = "_SWSSNAPSHOT_OPEN",
+ RecallCurrentSnapshot = "_SWSSNAPSHOT_GET",
+ RecallNextSnapshot = { "_SWSSNAPSHOT_GET_NEXT", prefixRepetitionCount = true },
+ RecallPrevSnapshot = { "_SWSSNAPSHOT_GET_PREVIOUS", prefixRepetitionCount = true },
+ RecallSnapshot1 = "_SWSSNAPSHOT_GET1",
+ RecallSnapshot2 = "_SWSSNAPSHOT_GET2",
+ RecallSnapshot3 = "_SWSSNAPSHOT_GET3",
+ RecallSnapshot4 = "_SWSSNAPSHOT_GET4",
+ RecallSnapshot5 = "_SWSSNAPSHOT_GET5",
+ RecallSnapshot6 = "_SWSSNAPSHOT_GET6",
+ RecallSnapshot7 = "_SWSSNAPSHOT_GET7",
+ RecallSnapshot8 = "_SWSSNAPSHOT_GET8",
+ RecallSnapshot9 = "_SWSSNAPSHOT_GET9",
+ SaveTracksToCurrentSnapshot = "_SWSSNAPSHOT_SAVE",
+ DeleteAllSnapshots = "_SWSSNAPSHOT_DELALL",
+ SplitItemsAtEditCursor = {
+ "UnselectItems",
+ "SelectItemsUnderEditCursor",
+ "SplitItemsUnderEditCursor",
+ "UnselectItems" },
+ SplitItemsAtTimeSelection = custom.splitItemsAtTimeSelection,
+ SplitItemsUnderEditCursor = 40757,
+ StartOfSel = { 40440, midiCommand = true },
+ StartOfSelectedItems = 41173,
+ StartStop = 40044,
+ --Stop = 1016, TODO
+ Stop = 40667,
+ StopRecordMacro = { metaCommand = true },
+ SwitchTimelineSelectionSide = lib.state.switchTimelineSelectionSide,
+ TapTempo = 1134,
+ TimeSelectionEnd = 40631,
+ RecallPreviousSnapshot = "_SWSSNAPSHOT_GET_PREVIOUS",
+ SaveTrackAsTemplate = 40392,
+ TimeSelection = "NoOp",
+ TimeSelectionStart = 40630,
+ ToggleArmAllEnvelopes = "_S&M_TGLARMALLENVS",
+ ToggleArmEnvelope = 40863,
+ ToggleAutoCrossfade = 40041,
+ ToggleCountInBeforePlayback = "_SWS_AWCOUNTPLAYTOG",
+ ToggleCountInBeforeRec = "_SWS_AWCOUNTRECTOG",
+ ToggleEnvelopePointsMoveWithItems = 40070,
+ ToggleFloatingWindows = 41074,
+ ToggleFxBypass = 8,
+ ToggleTakeFxBypass = "_S&M_TGL_TAKEFX_BYP",
+ ToggleEnvelopeBypass = 40883,
+ ToggleLoop = 1068,
+ ToggleLoopSelectionFollowsTimeSelection = 40621,
+ ToggleMetronome = 40364,
+ ToggleMidiEditorUsesMainGridDivision = 42010,
+ ToggleMidiSnap = { 1014, midiCommand = true },
+ ToggleMute = 6,
+ ToggleMuteItem = 40175,
+ TogglePanEnvelope = 40407,
+ TogglePlaybackAutoScroll = 40036,
+ TogglePlaybackPreroll = 41818,
+ ToggleRecord = { "SetRecordModeNormal", 1013 },
+ StopRecord = { "StartStop", "SetModeNormal" },
+ ToggleRecordConditional = "_SWS_AWRECORDCOND",
+ ToggleRecordingAutoScroll = 40262,
+ ToggleRecordingPreroll = 41819,
+ ToggleRecordToTapeMode = 41186,
+ ToggleShowRegionMarkerManager = 40326,
+ ToggleShowAllEnvelope = 41151,
+ ToggleShowAllEnvelopeGlobal = 41152,
+ ToggleShowFx1 = "_S&M_TOGLFLOATFX1",
+ ToggleShowFx2 = "_S&M_TOGLFLOATFX2",
+ ToggleShowFx3 = "_S&M_TOGLFLOATFX3",
+ ToggleShowFx4 = "_S&M_TOGLFLOATFX4",
+ ToggleShowFx5 = "_S&M_TOGLFLOATFX5",
+ ToggleShowFx6 = "_S&M_TOGLFLOATFX6",
+ ToggleShowFx7 = "_S&M_TOGLFLOATFX7",
+ ToggleShowFx8 = "_S&M_TOGLFLOATFX8",
+ ToggleShowFxChain = "_S&M_TOGLFXCHAIN",
+ ToggleShowTakeFxChain = 40638,
+ ToggleShowFx = "_S&M_WNTGL5",
+ ToggleShowSelectedEnvelope = 40884,
+ ToggleShowTracksInMixer = 41592,
+ ToggleSnap = 1157,
+ ToggleSolo = 7,
+ ToggleSoloItem = 41557,
+ UnsoloAllItems = 41185,
+ ToggleAutomaticRecordArm = 40740,
+ ToggleStopAtEndOfTimeSelectionIfNoRepeat = 41834,
+ ToggleViewMixer = 40078,
+ ToggleVolumeEnvelope = 40406,
+ SelectWidthEnvelope = 41870,
+ ToggleTakeMuteEnvelope = 40695,
+ ToggleTakePanEnvelope = 40694,
+ ToggleTakePitchEnvelope = 41612,
+ ToggleTakeVolumeEnvelope = 40693,
+ SetTrackInputToMatchFirstSelected = "_SWS_INPUTMATCH",
+ TrackToggleSendToParent = "_SWS_TOGMPSEND",
+ TrackToggleSolo = 40281,
+ TrackToggleMute = 40280,
+ TrackWithNumber = custom.move.trackWithNumber,
+ TrimItemLeftEdge = 41305,
+ TrimItemRightEdge = 41311,
+ TrimSelectedNoteLeftEdgeToEditCursor = 40790,
+ TrimSelectedNoteRightEdgeToEditCursor = 40791,
+ UnarmAllEnvelopes = 41163,
+ UnarmSelectedTracks = "_XENAKIOS_SELTRAX_RECUNARMED",
+ UncollapseFolder = "_SWS_UNCOLLAPSE",
+ Undo = { 40029, prefixRepetitionCount = true },
+ UnfreezeTrack = 41644,
+ UnmuteAllTracks = 40339,
+ UnselectAllEvents = { 40214, midiCommand = true },
+ UnselectEnvelopePoints = 40331,
+ UnselectItems = 40289,
+ UnselectTracks = 40297,
+ UnsoloAllTracks = 40340,
+ VerticalScrollEnd = "_XENAKIOS_TVPAGEEND",
+ VerticalScrollStart = "_XENAKIOS_TVPAGEHOME",
+ ToggleShowInputFxChain = 40844,
+ ZoomAllItems = { "SaveItemSelection", "SelectAllItems", "ZoomItemSelection", "RestoreItemSelection" },
+ ZoomAllTracks = { "SaveTrackSelection", "SelectAllTracks", "ZoomTrackSelection", "RestoreTrackSelection" },
+ ZoomInHoriz = { 1012, prefixRepetitionCount = true },
+ ZoomInVert = { 40111, prefixRepetitionCount = true },
+ ZoomItemSelection = "_SWS_HZOOMITEMS",
+ ZoomOutHoriz = { 1011, prefixRepetitionCount = true },
+ ZoomOutVert = { 40112, prefixRepetitionCount = true },
+ ZoomProjectTimeline = 40295,
+ ZoomProject = { "ZoomAllTracks", "ZoomAllItems" },
+ ZoomRedo = { "_SWS_REDOZOOM", prefixRepetitionCount = true },
+ ZoomTimeAndTrackSelection = { "ZoomTrackSelection", "ZoomTimeSelection" },
+ ZoomTimeSelection = 40031,
+ ZoomTrackSelection = "_SWS_VZOOMFITMIN",
+ ZoomUndo = { "_SWS_UNDOZOOM", prefixRepetitionCount = true },
+ NudgeTrackVolumeDown = 40116, -- 0.05 dB
+ PlayAndSkipTimeSelection = 40317,
+}
diff --git a/internal/definitions/bindings.lua b/internal/definitions/bindings.lua
new file mode 100644
index 00000000..8e5c57ae
--- /dev/null
+++ b/internal/definitions/bindings.lua
@@ -0,0 +1,550 @@
+local global = { -- applies both to main and midi
+ timeline_motion = {
+ ["0"] = "ProjectStart",
+ [""] = "ProjectEnd",
+ ["f"] = "PlayPosition",
+ ["x"] = "MousePosition",
+ ["["] = "LoopStart",
+ ["]"] = "LoopEnd",
+ [""] = "PrevMarker",
+ [""] = "NextMarker",
+ [""] = "PrevTimeSignatureMarker",
+ [""] = "NextTimeSignatureMarker",
+ [""] = "Left10Pix",
+ [""] = "Right10Pix",
+ [""] = "Left40Pix",
+ [""] = "Right40Pix",
+ ["h"] = "LeftGridDivision",
+ ["l"] = "RightGridDivision",
+ ["H"] = "PrevMeasure",
+ ["L"] = "NextMeasure",
+ [""] = "MoveRedo",
+ [""] = "MoveUndo",
+ [""] = "Prev4Beats",
+ [""] = "Next4Beats",
+ [""] = "Prev4Measures",
+ [""] = "Next4Measures",
+ ["`"] = "MarkedTimelinePosition",
+ },
+ timeline_operator = {
+ ["r"] = "Record",
+ [""] = "DuplicateTimeline",
+ ["t"] = "PlayAndLoop",
+ ["|"] = "CreateMeasures",
+ [""] = "CreateProjectTempo"
+ },
+ timeline_selector = {
+ ["~"] = "MarkedRegion",
+ ["!"] = "LoopSelection",
+ [""] = "NextRegion",
+ [""] = "PrevRegion",
+ [""] = "TimeSelectionShiftedRight",
+ [""] = "TimeSelectionShiftedLeft",
+ ["i"] = { "+inner", {
+ [""] = "AutomationItem",
+ ["l"] = "AllTrackItems",
+ ["r"] = "Region",
+ ["p"] = "ProjectTimeline",
+ ["w"] = "Item",
+ ["W"] = "BigItem",
+ } },
+ },
+ visual_timeline_command = {
+ ["v"] = "SetModeNormal",
+ ["o"] = "SwitchTimelineSelectionSide",
+ },
+ command = {
+ [""] = "ShowActionList",
+ [""] = "ShowBindingList",
+ [""] = "Reset",
+
+ [""] = "StartStop",
+ ["tt"] = "PlayFromTimeSelectionStart",
+ [""] = "PlayAndSkipTimeSelection",
+ [""] = "PlayFromMousePosition",
+ [""] = "PlayFromMouseAndSoloTrack",
+ [""] = "PlayFromEditCursorAndSoloTrackUnderMouse",
+ ["F"] = "Pause",
+
+ [">"] = "ToggleViewMixer",
+
+ ["."] = "RepeatLastCommand",
+ [""] = "RepeatPenultimateAction",
+ ["@"] = "PlayMacro",
+ [","] = "RecordMacro",
+ ["m"] = "Mark",
+ ["~"] = "MarkedRegion",
+ [""] = "DeleteMark",
+ [""] = "NextRegion",
+ [""] = "PrevRegion",
+ [""] = "Redo",
+ ["u"] = "Undo",
+ ["R"] = "ToggleRecord",
+ [""] = "ZoomUndo",
+ [""] = "ZoomRedo",
+ ["v"] = "SetModeVisualTimeline",
+ [""] = "ClearTimelineSelectionAndSetModeVisualTimeline",
+ ["X"] = "MoveToMousePositionAndPlay",
+ ["dr"] = "RemoveRegion",
+ ["!"] = "ToggleLoop",
+ [""] = "ToggleBetweenReadAndTouchAutomationMode",
+ [""] = "ShowNextFx",
+ [""] = "ShowPrevFx",
+ [""] = "FocusMain",
+ [""] = "ToggleShowFx",
+ [""] = "CloseFx",
+ [""] = "MidiLearnLastTouchedFxParam",
+ [""] = "ModulateLastTouchedFxParam",
+ [""] = "TapTempo",
+
+ ['"'] = { "+snapshots", {
+ ["j"] = "RecallNextSnapshot",
+ ["k"] = "RecallPreviousSnapshot",
+ ["D"] = "DeleteAllSnapshots",
+ ["t"] = "ToggleSnapshotsWindow",
+ ["y"] = "CopyCurrentSnapshot",
+ ["p"] = "PasteSnapshot",
+ ["r"] = "RecallCurrentSnapshot",
+ ["#"] = { "+recall #", {
+ ["1"] = "RecallSnapshot1",
+ ["2"] = "RecallSnapshot2",
+ ["3"] = "RecallSnapshot3",
+ ["4"] = "RecallSnapshot4",
+ ["5"] = "RecallSnapshot5",
+ ["6"] = "RecallSnapshot6",
+ ["7"] = "RecallSnapshot7",
+ ["8"] = "RecallSnapshot8",
+ ["9"] = "RecallSnapshot9",
+ } },
+ } },
+ ["q"] = { "+options", {
+ ["p"] = "TogglePlaybackPreroll",
+ ["r"] = "ToggleRecordingPreroll",
+ ["z"] = "TogglePlaybackAutoScroll",
+ ["v"] = "ToggleLoopSelectionFollowsTimeSelection",
+ ["s"] = "ToggleSnap",
+ ["m"] = "ToggleMetronome",
+ ["t"] = "ToggleStopAtEndOfTimeSelectionIfNoRepeat",
+ ["x"] = "ToggleAutoCrossfade",
+ ["e"] = "ToggleEnvelopePointsMoveWithItems",
+ ["c"] = "CycleRippleEditMode",
+ ["f"] = "ResetFeedbackWindow",
+ } },
+ ["i"] = { "+insert", {
+ ["f"] = "InsertMediaFile",
+ ["m"] = "InsertOrExtendMidiItem",
+ ["t"] = "InsertTrackFromTemplate",
+ ["v"] = "InsertVirtualInstrumentTrack",
+ ["c"] = "InsertClickTrack",
+ ["1"] = "InsertTrackFromTemplateSlot1",
+ ["2"] = "InsertTrackFromTemplateSlot2",
+ ["3"] = "InsertTrackFromTemplateSlot3",
+ ["4"] = "InsertTrackFromTemplateSlot4",
+ } },
+ [""] = { "+leader commands", {
+ ["z"] = { "+zoom/scroll", {
+ ["t"] = "ScrollToPlayPosition",
+ ["e"] = "ScrollToEditCursor",
+ } },
+ ["m"] = { "+midi", {
+ ["g"] = "SetMidiGridDivision",
+ ["G"] = "ToggleMidiEditorUsesMainGridDivision",
+ ["q"] = "Quantize",
+ ["s"] = "ToggleMidiSnap",
+ } },
+ ["r"] = { "+recording", {
+ ["o"] = "SetRecordMidiOutput",
+ ["d"] = "SetRecordMidiOverdub",
+ ["t"] = "SetRecordMidiTouchReplace",
+ ["R"] = "SetRecordMidiReplace",
+ ["v"] = "SetRecordMonitorOnly",
+ ["r"] = "SetRecordInput",
+ [","] = { "+options", {
+ ["n"] = "SetRecordModeNormal",
+ ["s"] = "SetRecordModeItemSelectionAutoPunch",
+ ["v"] = "SetRecordModeTimeSelectionAutoPunch",
+ ["p"] = "ToggleRecordingPreroll",
+ ["z"] = "ToggleRecordingAutoScroll",
+ ["t"] = "ToggleRecordToTapeMode",
+ } },
+ } },
+ ["a"] = { "+automation", {
+ ["r"] = "SetAutomationModeTrimRead",
+ ["R"] = "SetAutomationModeRead",
+ ["l"] = "SetAutomationModeLatch",
+ ["g"] = "SetAutomationModeLatchAndArm",
+ ["p"] = "SetAutomationModeLatchPreview",
+ ["t"] = "SetAutomationModeTouch",
+ ["w"] = "SetAutomationModeWrite",
+ } },
+ ["s"] = { "+selected items", {
+ ["j"] = "NextTake",
+ ["k"] = "PrevTake",
+ ["m"] = "ToggleMuteItem",
+ ["d"] = "DeleteActiveTake",
+ ["c"] = "CropToActiveTake",
+ ["o"] = "OpenInMidiEditor",
+ ["n"] = "ItemNormalize",
+ ["g"] = "GroupItems",
+ ["q"] = "QuantizeItems",
+ ["h"] = "HealItemsSplits",
+ ["s"] = "ToggleSoloItem",
+ ["B"] = "MoveItemContentToEditCursor",
+ ["x"] = { "+explode takes", {
+ ["p"] = "ExplodeTakesInPlace",
+ ["o"] = "ExplodeTakesInOrder",
+ ["a"] = "ExplodeTakesInAcrossTracks"
+ } },
+ ["S"] = { "+stretch", {
+ ["a"] = "AddStretchMarker",
+ ["d"] = "DeleteStretchMarker",
+ } },
+ ["#"] = { "+fade", {
+ ["i"] = "CycleItemFadeInShape",
+ ["o"] = "CycleItemFadeOutShape",
+ } },
+ ["t"] = { "+transients", {
+ ["a"] = "AdjustTransientDetection",
+ ["t"] = "CalculateTransientGuides",
+ ["c"] = "ClearTransientGuides",
+ ["s"] = "SplitItemAtTransients"
+ } },
+ ["e"] = { "+envelopes", {
+ ["s"] = "ViewTakeEnvelopes",
+ ["m"] = "ToggleTakeMuteEnvelope",
+ ["p"] = "ToggleTakePanEnvelope",
+ ["P"] = "ToggleTakePitchEnvelope",
+ ["v"] = "ToggleTakeVolumeEnvelope",
+ } },
+ ["f"] = { "+fx", {
+ ["a"] = "ApplyFxToItem",
+ ["p"] = "PasteItemFxChain",
+ ["d"] = "CutItemFxChain",
+ ["y"] = "CopyItemFxChain",
+ ["c"] = "ToggleShowTakeFxChain",
+ ["b"] = "ToggleTakeFxBypass",
+ } },
+ ["r"] = { "+rename", {
+ ["s"] = "RenameTakeSourceFile",
+ ["t"] = "RenameTake",
+ ["r"] = "RenameTakeAndSourceFile",
+ ["a"] = "AutoRenameTake",
+ } },
+ ["b"] = { "+timebase", {
+ ["t"] = "SetItemsTimebaseToTime",
+ ["b"] = "SetItemsTimebaseToBeatsPos",
+ ["r"] = "SetItemsTimebaseToBeatsPosLengthAndRate",
+ } },
+ } },
+ ["t"] = { "+track", {
+ ["s"] = "TrackToggleSolo",
+ ["m"] = "TrackToggleMute",
+ ["n"] = "ResetTrackToNormal",
+ ["z"] = "MinimizeTracks",
+ ["M"] = "CycleRecordMonitor",
+ ["F"] = "CycleFolderState",
+ ["I"] = "SetTrackInputToMatchFirstSelected",
+ ["y"] = "SaveTrackAsTemplate",
+ ["x"] = "ToggleShowTrackRouting",
+ ["p"] = "TrackToggleSendToParent",
+ ["f"] = { "+freeze", {
+ ["m"] = "FreezeTrackMono",
+ ["s"] = "FreezeTrackStereo",
+ ["u"] = "UnfreezeTrack",
+ ["v"] = "ShowTrackFreezeDetails",
+ } },
+ } },
+ ["e"] = { "+envelopes", {
+ ["t"] = "ToggleShowAllEnvelope",
+ ["a"] = "ToggleArmAllEnvelopes",
+ ["A"] = "UnarmAllEnvelopes",
+ ["d"] = "ClearAllEnvelope",
+ ["v"] = "ToggleVolumeEnvelope",
+ ["p"] = "TogglePanEnvelope",
+ ["w"] = "SelectWidthEnvelope",
+ ["s"] = { "+selected", {
+ ["d"] = "ClearEnvelope",
+ ["a"] = "ToggleArmEnvelope",
+ ["y"] = "CopyEnvelope",
+ ["t"] = "ToggleShowSelectedEnvelope",
+ ["b"] = "ToggleEnvelopeBypass",
+ ["s"] = { "+shape", {
+ ["b"] = "SetEnvelopeShapeBezier",
+ ["e"] = "SetEnvelopeShapeFastEnd",
+ ["f"] = "SetEnvelopeShapeFastStart",
+ ["l"] = "SetEnvelopeShapeLinear",
+ ["s"] = "SetEnvelopeShapeSlowStart",
+ ["S"] = "SetEnvelopeShapeSquare",
+ } },
+ } },
+ } },
+ ["f"] = { "+fx", {
+ ["a"] = "AddFx",
+ ["c"] = "ToggleShowFxChain",
+ ["d"] = "CutFxChain",
+ ["y"] = "CopyFxChain",
+ ["p"] = "PasteFxChain",
+ ["b"] = "ToggleFxBypass",
+ ["i"] = { "+input", {
+ ["s"] = "ToggleShowInputFxChain",
+ ["d"] = "CutInputFxChain",
+ } },
+ ["s"] = { "+show", {
+ ["1"] = "ToggleShowFx1",
+ ["2"] = "ToggleShowFx2",
+ ["3"] = "ToggleShowFx3",
+ ["4"] = "ToggleShowFx4",
+ ["5"] = "ToggleShowFx5",
+ ["6"] = "ToggleShowFx6",
+ ["7"] = "ToggleShowFx7",
+ ["8"] = "ToggleShowFx8"
+ } },
+ } },
+ ["T"] = { "+timeline", {
+ ["a"] = "AddTimeSignatureMarker",
+ ["e"] = "EditTimeSignatureMarker",
+ ["d"] = "DeleteTimeSignatureMarker",
+ ["s"] = "ToggleShowTempoEnvelope"
+ } },
+ ["g"] = { "+global", {
+ ["g"] = "SetGridDivision",
+ ["r"] = "ResetControlDevices",
+ [","] = "ShowPreferences",
+ ["S"] = "UnsoloAllItems",
+ ["s"] = { "+show/hide", {
+ ["x"] = "ToggleShowRoutingMatrix",
+ ["w"] = "ToggleShowWiringDiagram",
+ ["t"] = "ToggleShowTrackManager",
+ ["f"] = "ShowMonitoringFX",
+ ["m"] = "ToggleShowMasterTrack",
+ ["M"] = "ToggleMasterMonoStereo",
+ ["r"] = "ToggleShowRegionMarkerManager",
+ } },
+ ["f"] = { "+fx", {
+ ["x"] = "CloseAllFxChainsAndWindows",
+ ["c"] = "ViewFxChainMaster",
+ } },
+ ["e"] = "ToggleShowAllEnvelopeGlobal",
+ ["a"] = { "+automation", {
+ ["r"] = "SetGlobalAutomationModeTrimRead",
+ ["l"] = "SetGlobalAutomationModeLatch",
+ ["p"] = "SetGlobalAutomationModeLatchPreview",
+ ["t"] = "SetGlobalAutomationModeTouch",
+ ["R"] = "SetGlobalAutomationModeRead",
+ ["w"] = "SetGlobalAutomationModeWrite",
+ ["S"] = "SetGlobalAutomationModeOff",
+ } },
+ } },
+ ["p"] = { "+project", {
+ [","] = "ShowProjectSettings",
+ ["n"] = "NextTab",
+ ["p"] = "PrevTab",
+ ["s"] = "SaveProject",
+ ["o"] = "OpenProject",
+ ["c"] = "NewProjectTab",
+ ["x"] = "CloseProject",
+ ["C"] = "CleanProjectDirectory",
+ ["S"] = "SaveProjectWithNewVersion",
+ ["t"] = { "+timebase", {
+ ["t"] = "SetProjectTimebaseToTime",
+ ["b"] = "SetProjectTimebaseToBeatsPos",
+ ["r"] = "SetProjectTimebaseToBeatsPosLengthAndRate",
+ } },
+ ["r"] = { "+render", {
+ ["."] = "RenderProjectWithLastSetting",
+ ["r"] = "RenderProject",
+ } },
+ } },
+ } },
+ },
+}
+
+local main = {
+ track_motion = {
+ ["G"] = "LastTrack",
+ ["gg"] = "FirstTrack",
+ ["J"] = "NextFolderNear",
+ ["K"] = "PrevFolderNear",
+ ["/"] = "MatchedTrackForward",
+ ["?"] = "MatchedTrackBackward",
+ ["n"] = "NextTrackMatchForward",
+ ["N"] = "NextTrackMatchBackward",
+ [":"] = "TrackWithNumber",
+ ["j"] = "NextTrack",
+ ["k"] = "PrevTrack",
+ [""] = "Prev10Track",
+ [""] = "Next10Track",
+ [""] = "Next5Track",
+ [""] = "Prev5Track",
+ },
+ visual_track_command = {
+ ["V"] = "SetModeNormal",
+ [""] = "NudgeTrackPanLeft",
+ [""] = "NudgeTrackPanRight",
+ [""] = "NudgeTrackPanLeft10Times",
+ [""] = "NudgeTrackPanRight10Times",
+ },
+ track_selector = {
+ ["'"] = "MarkedTracks",
+ ["f"] = "Folder",
+ ["F"] = "FolderParent",
+ ["i"] = { "+inner", {
+ ["c"] = "InnerFolder",
+ ["f"] = "InnerFolderAndParent",
+ ["g"] = "AllTracks",
+ } },
+ },
+ track_operator = {
+ ['"'] = { "+snapshots", {
+ ['s'] = "SaveTracksToCurrentSnapshot",
+ ["c"] = "CreateNewSnapshotWithTracks",
+ ["d"] = "DeleteTracksFromCurrentSnapshot",
+ } },
+ ["z"] = "ZoomTrackSelection",
+ [""] = "MakeFolder",
+ ["d"] = "CutTrack",
+ ["a"] = "ArmTracks",
+ ["s"] = "SelectTracks",
+ ["S"] = "ToggleSolo",
+ ["M"] = "ToggleMute",
+ ["y"] = "CopyTrack",
+ [""] = "ColorTrackGradient",
+ [""] = "ColorTrack",
+ },
+ timeline_operator = {
+ ["s"] = "SelectItemsAndSplit",
+ [""] = "CopyAndFitByLooping",
+ [""] = "SelectEnvelopePoints",
+ ["d"] = "CutItems",
+ ["y"] = "CopyItems",
+ [""] = "CopyItems",
+ [""] = "CutEnvelopePoints",
+ [""] = "CopyEnvelopePoints",
+ [""] = "DeleteTimeline",
+ ["g"] = "GlueItems",
+ ["#"] = "SetItemFadeBoundaries",
+ ["z"] = "ZoomTimeSelection",
+ ["Z"] = "ZoomTimeAndTrackSelection",
+ [""] = "InsertAutomationItem",
+ ["c"] = { "+change/fit", {
+ ["a"] = "InsertOrExtendMidiItem",
+ ["c"] = "FitByLoopingNoExtend",
+ ["f"] = "FitByLooping",
+ ["p"] = "FitByPadding",
+ ["s"] = "FitByStretching",
+ } },
+ },
+ timeline_selector = {
+ ["s"] = "SelectedItems",
+ },
+ timeline_motion = {
+ [""] = "NextTransientInItem",
+ [""] = "PrevTransientInItem",
+ [""] = "NextTransientInItemMinusFadeTime",
+ [""] = "PrevTransientInItemMinusFadeTime",
+ ["B"] = "PrevBigItemStart",
+ ["E"] = "NextBigItemEnd",
+ ["W"] = "NextBigItemStart",
+ ["b"] = "PrevItemStart",
+ [""] = "PrevEnvelopePoint",
+ ["e"] = "NextItemEnd",
+ ["w"] = "NextItemStart",
+ [""] = "NextEnvelopePoint",
+ ["$"] = "LastItemEnd",
+ ["("] = "TimeSelectionStart",
+ [")"] = "TimeSelectionEnd",
+ },
+ command = {
+ [">"] = "TrimItemRightEdge",
+ ["<"] = "TrimItemLeftEdge",
+ [""] = "CycleFolderCollapsedState",
+ ["zp"] = "ZoomProject",
+ ["D"] = "CutSelectedItems",
+ ["Y"] = "CopySelectedItems",
+ ["V"] = "SetModeVisualTrack",
+ ["