PTSL SDK+MCP服务器示例
本项目演示了如何使用 Avid Pro工具脚本SDK(PTSL SDK) 通过C++应用程序和基于gRPC的MCP服务器自动化和控制Avid Pro Tools。
概述
- PTSL-SDK:提供C++API,用于编写和控制Avid Pro Tools。
- MCP服务器:一个gRPC服务器,通过网络公开Pro Tools自动化命令,使用PTSL SDK实现。
- 客户端示例:一个简单的C++应用程序,连接到MCP服务器并注册与Pro Tools的连接。
项目结构
/ (project root)
├── app/ # Application code (main.cpp, mcp_server.cpp, CMakeLists.txt)
├── sdk/ # PTSL SDK code (as provided by Avid)
├── README.md # This file
├── CMakeLists.txt # Top-level build file
└── ...先决条件
- CMake (建议使用3.15+版本)
- Avid PTSL SDK (已包含在
sdk/) - 数字音频工作站 (本地运行用于PTSL通信)
- gRPC和Protobuf (用于构建MCP服务器)
构建和运行说明
1.安装依赖项
- CMake:\
通过您的软件包管理器进行安装(例如。, brew install cmake 在 macOS 上, apt install cmake 在Ubuntu上,或从 cmake.org).
- gRPC和Protobuf:\
通过您的软件包管理器安装或按照 gRPC安装指南.
2.配置项目
mkdir build && cd build
cmake ..3.构建应用程序
make- 在Windows上,使用首选生成器(例如Visual Studio)并从IDE或使用
cmake --build ..
4.运行MCP服务器
从 build 目录:
./app/mcp_server5.运行示例客户端
从 build 目录:
./app/ptsl_app6.故障排除
- Pro Tools未运行:\
在使用PTSL功能之前,请确保Avid Pro Tools正在本地运行。
PTSL SDK命令实施检查表
下面是所有可用PTSL SDK命令的列表。使用复选框跟踪MCP服务器中已实现的命令。
| 命令名称 | 是否已实现? |
|---|---|
| 创建会话 | \[x\] |
| 开放会议 | \[x\] |
| 导入 | \[x\] |
| GetTrackList | \[x\] |
| 选择所有剪辑Ontrack | \[x\] |
| 将选择扩展到目标轨迹 | \[x\] |
| TrimToSelectric | \[x\] |
| CreateFadesBasedOnPreset | \[x\] |
| RenameTargetTrack | \[x\] |
| 合并Clip | \[x\] |
| 导出剪辑文件 | \[x\] |
| ExportSelectedTracksAsAAFOMF | \[x\] |
| GetTaskStatus | \[x\] |
| HostReadyCheck | \[x\] |
| 刷新目标音频文件 | \[x\] |
| 刷新所有已修改的音频文件 | \[x\] |
| GetFileLocation | \[x\] |
| 关闭会话 | \[x\] |
| 保存会话 | \[x\] |
| SaveSessionAs | \[x\] |
| 剪切 | \[x\] |
| 复制 | \[x\] |
| 粘贴 | \[x\] |
| 清除 | \[x\] |
| CutSpecial | \[x\] |
| CopySpecial | \[x\] |
| ClearSpecial | \[x\] |
| PasteSpecial | \[x\] |
| 导出混合 | \[x\] |
| 点 | \[x\] |
| 导出会话信息文本 | \[x\] |
| GetDynamics | \[x\] |
| 设置动态属性 | \[x\] |
| GetEditSelection | \[x\] |
| 设置编辑选择 | \[x\] |
| GetTimeline选择 | \[x\] |
| 设定时间线选择 | \[x\] |
| GetTransportState | \[x\] |
| 设置传输状态 | \[x\] |
| GetLoopPlaybackState | \[x\] |
| SetLoop播放状态 | \[x\] |
| GetPrePostRoll | \[x\] |
| SetPrePostRoll | \[x\] |
| GetNudgeValue | \[x\] |
| SetNudgeValue | \[x\] |
| GetSessionAudioFormat | \[x\] |
| GetSessionSampleRate | \[x\] |
| GetSessionBitDepth | \[x\] |
| GetSessionInterleavedState | \[x\] |
| GetSessionTimeCodeRate | \[x\] |
| GetSessionFeetFrames日期 | \[x\] |
| GetSessionAudioRateFullSettings | \[x\] |
| GetSessionVideoRateFullSettings | \[x\] |
| GetSessionName | \[x\] |
| GetSessionPath | \[x\] |
| GetSessionStartTime | \[x\] |
| GetSessionLength | \[x\] |
| 设置会话音频格式 | \[x\] |
| 设置会话位深度 | \[x\] |
| 设置会话交错状态 | \[x\] |
| 设置会话时间编码率 | \[x\] |
| 设置会话感觉参数日期 | \[x\] |
| 设置会话音频速率播放设置 | \[x\] |
| 设置会话视频速率取消设置 | \[x\] |
| 设置会话开始时间 | \[x\] |
| 设置会话长度 | \[x\] |
| GetPTSL版本 | \[x\] |
| 获取播放模式 | \[x\] |
| GetRecordMode | \[x\] |
| GetTransportArmed | \[x\] |
| ClearMemory位置 | \[x\] |
| 重命名选定剪辑 | \[x\] |
| 重命名目标剪辑 | \[x\] |
| 切换播放状态 | \[x\] |
| 切换录制启用 | \[x\] |
| 播放半速 | \[x\] |
| 录制半速 | \[x\] |
| 编辑内存位置 | \[x\] |
| 获取内存位置 | \[x\] |
| 注册连接 | \[x\] |
| 创建内存位置 | \[x\] |
| CreateNewTracks | \[x\] |
| 选择曲目名称 | \[x\] |
| GetEditMode | \[x\] |
| 设置编辑模式 | \[x\] |
| GetEditTool | \[x\] |
| 设置编辑工具 | \[x\] |
| 回放缩放预设 | \[x\] |
| GetEditMode选项 | \[x\] |
| 设置编辑模式选项 | \[x\] |
| 导入视频 | \[x\] |
| 选择内存位置 | \[x\] |
| 设置跟踪静音状态 | \[x\] |
| SetTrackSoloState | \[x\] |
| SetTrackSoloSafeState | \[x\] |
| 设置跟踪记录启用状态 | \[x\] |
| 设置跟踪记录安全启用状态 | \[x\] |
SetTrackInputMonitorState。SetTrackInputMonitor状态。 |SetTrackSmartDspState |\[x\]| |设置跟踪隐藏状态|\[x\]| |设置跟踪未激活状态|\[x\]| |SetTrackFrozenState |\[x\]| |设置跟踪在线状态|\[x\]| |设置跟踪打开状态|\[x\]| |GetSessionIDs|\[x\]| |获取内存位置管理模式|\[x\]| |设置内存位置管理模式|\[x\]| |设置主计数器格式|\[x\]| |设置subCounterFormat |\[x\]| |GetMainCounterFormat |\[x\]| |GetSubCounterFormat |\[x\]| |撤消|\[x\]| |重做|\[x\]| |全部撤消|\[x\]| | \[x\] | \[x\] | |ClearUndoQueue |\[x\]| |设置跟踪DSP模式安全状态|\[x\]| |GetSessionSystemDelayInfo |\[x\]| |组剪辑|\[x\]| |取消分组剪辑|\[x\]| |取消分组所有剪辑|\[x\]| |重新分组剪辑|\[x\]| |重复选择|\[x\]| |重复选择|\[x\]| |清除所有内存位置|\[x\]| |GetSessionVideoFormat |\[x\]| |GetSessionVideoRate|\[x\]| |GetSessionVideoPullDown|\[x\]| |GetSessionVideoStartTime|\[x\]| |GetSessionVideoOffset |\[x\]| |GetSessionVideoDuration |\[x\]| |GetSessionVideoFileName |\[x\]|
许可证
本项目用于演示目的,不隶属于或认可Avid Technology,股份有限公司。
______________________________________________________________________
该项目是使用PTSL SDK和MCP协议为Avid Pro tools构建现代自动化工具的起点。
