Local cross-check against the VDJScript catalog bundled with VirtualDJ's Button Editor.
Source app: /Applications/VirtualDJ.app
Observed on 2026-05-26:
- VirtualDJ app version:
8.5.9307 - VirtualDJ bundle build:
18.0.9336 - Main executable SHA-256:
233f36a8d454d0fe90e7bb1c57b9550a4ea8aa3ee0a9f219624c24aa8aaa59f1 - Language pack:
/Applications/VirtualDJ.app/Contents/Resources/languages.zip - Language XML build:
9320
The Button Editor has a built-in searchable action catalog with categories, action names, and descriptions. This audit records the local source for the description text and compares it with the official appendix and the runtime-looking string table in the executable.
Syntax highlighting and hover tokenization are tracked separately in VDJScript Syntax Evidence, since they are parser/highlighter evidence rather than catalog-description evidence.
This is a documentation cross-check, not a replacement for the official appendix. Treat it as Built-in app resource evidence: stronger than community examples for existence and prose, but not sufficient by itself to prove behavior, parameter coverage, or current public support.
The action descriptions are stored in Resources/languages.zip, inside per-language XML files. In English.xml, the descriptions are under <Actions>, for example get_beatpos has the same prose shown in the Button Editor UI.
Counts from the installed app:
| Source | Count |
|---|---|
English.xml <Actions> unique tags |
812 |
Union of <Actions> tags across all languages |
813 |
<Actions> tags present in every language |
810 |
<tooltips> unique tags across all languages |
144 |
<skintooltips> unique tags across all languages |
33 |
Only three action tags vary by language:
| Tag | Notes |
|---|---|
dualdeckmode_decks |
Missing from English but present in Spanish, Dutch, Greek, German, Italian, and Chinese. |
edit_lyrics |
Present in English, Spanish, and Dutch only. |
video_source |
Missing from Japanese and Arabic only. |
The multilingual union is therefore the best Button Editor catalog source, not English alone.
The language XML does not encode the per-action Button Editor category mapping shown in the UI. That mapping is compiled into the executable and is now tracked in Button Editor Taxonomy.
The main executable is a universal Mach-O binary. Plain strings exposes two contiguous alphabetical VDJScript-looking blocks from action_deck through zoom_vertical.
Initial counts:
| Source | Count |
|---|---|
| Binary block 1 | 957 |
| Binary block 2 | 967 |
| Official appendix audit | 991 |
| Button Editor language action union | 813 |
The second binary block includes aliases not seen in the first block, including close, get_album, get_artist, get_beat, get_beatpos, get_bpm, get_title, get_vu_meter, pitch, and video_crossfader.
Generated with:
python3 tools/extract_vdjscript_catalogs.pySource: Built-in app resource (Resources/languages.zip multilingual <Actions> union).
These 14 action tags are present in the Button Editor catalog but are not parsed from the official VDJScript appendix audit:
assign_related_controller,crash,flip_arm,flip_load,flip_loop,flip_play,flip_recordpad_page_insplit,pad_pressure_switch,rane_motor_enable,rane_timecode,rane_timecode_enablesampler_inputgain,stem_volume
Treat these as catalog-only candidates until another source confirms behavior, parameter shape, or public support.
Source: Binary string-table (strings -a block 2 from Contents/MacOS/VirtualDJ).
These 21 VDJScript-looking names are present in the richer runtime string block but are not in the official appendix audit or the Button Editor action catalog:
all_decks,browser_colorfilter_edit,combine_query,controllerscreen_action,effect_beats_sliderindexflip_get_status,get_pad_page_name,hot_cue_stutter,load_security_shown,master_beat_nummasterbpm,motorwheel3,ns7_get_drift,pad_page_favorite,pad_page_splitrane_screen_input,rane_screen_output,remote_action,send_nothing,setting_if_unchangedtimecode_no_jump
Treat these as discovery-only candidates. The executable string table is useful for finding possible internals, but it is not enough evidence for normal user-facing recommendations.
Source labels searched: Built-in pad page, Built-in skin.
The extractor scanned exact token matches for the 35 non-official candidates above across:
examples/Pads/Built-In/examples/Skins/Built-In/examples/Samplerbanks/Built-In/
Result: none of the 35 candidates currently has shipped XML evidence elsewhere in this repo.
- Immediate XML-backed promotions: none from this mismatch pass.
- Highest-value catalog-only local tests:
stem_volume,sampler_inputgain,pad_pressure_switch,pad_page_insplit, and theflip_*group (flip_arm,flip_load,flip_loop,flip_play,flip_record). Use Undocumented VDJScript Candidates for the candidate inventory and Reference - Hidden Button Editor Tests.xml as the starter harness for low-risk probes. - Hardware/context-dependent catalog candidates:
assign_related_controller,rane_motor_enable,rane_timecode, andrane_timecode_enable. - Runtime-only names to watch, not promote yet:
get_pad_page_name,pad_page_favorite,pad_page_split,remote_action,hot_cue_stutter,timecode_no_jump, andsetting_if_unchanged. Some now have forum, changelog, or published-skin context; keep behavior promotion in Undocumented VDJScript Candidates and the local tracker until a current build run confirms syntax and side effects.
The local evidence now points to several overlapping catalogs and binary evidence streams:
- The official VDJScript appendix: public names and aliases; currently parsed in this repo as 991 names.
- The Button Editor language catalog: user-facing action descriptions; currently 813 action tags across bundled languages.
- The executable string block: runtime-looking action names; currently 967 names in the richer block.
- The Button Editor compiled taxonomy: currently 918 visible action items across 37 displayed categories.
- The demangled
ACTION_*symbol table: implementation-class and method-surface hints; currently 800 exact class matches inside the full compiled taxonomy.
None of these is identical to the others. The Button Editor catalog omits sparse or helper-style official names such as deck_has_error, get_mixfx_active, and system, while the binary block contains runtime/internal-looking names not currently in the official appendix. Exact ACTION_* method-symbol matches are useful for execute/query/tooltip hints, but alias and dispatcher-backed verbs can be visible, official, and language-described without an exact class name.
Use this hierarchy when updating the API reference:
Officialremains authoritative for public name coverage.Built-in app resourcecan supply Button Editor description evidence and discover localized catalog-only names.Binary compiled tablecan supply Button Editor category placement and visibility.Binary symbol tablecan supply exact action-class and method-surface hints.- Binary string-table evidence can identify runtime candidates, but candidate names need official, bundled-resource, shipped XML, or local behavior evidence before promotion into ordinary user-facing recommendations.
Run:
python3 tools/extract_vdjscript_catalogs.pyThe helper is read-only and compares the installed app's language catalog, executable string block, this repo's official coverage audit, and exact-token shipped XML evidence in the copied built-in/official XML roots.