十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

cli-anything-rekordbox:基于 SQLCipher 直写与虚拟 MIDI 的 Rekordbox 6/7 Agent 原生 CLI 实战指南

cli-anything-rekordbox:基于 SQLCipher 直写与虚拟 MIDI 的 Rekordbox 6/7 Agent 原生 CLI 实战指南 cli-anything-rekordbox基于 SQLCipher 直写与虚拟 MIDI 的 Rekordbox 6/7 Agent 原生 CLI 实战指南【免费下载链接】CLI-AnythingCLI-Anything: Making ALL Software Agent-Native -- CLI-Hub: https://clianything.cc/项目地址: https://gitcode.com/GitHub_Trending/cl/CLI-Anything导读Pioneer Rekordbox 6/7 没有提供任何面向回放控制的公开 REST/RPC API这给“让 AI Agent 直接驱动 DJ 软件”带来了天然壁垒。本指南围绕 CLI-Anything 仓库中 rekordbox/agent-harness/REKORDBOX.md 展开讲解如何用cli-anything-rekordbox这一 Agent 原生命令行工具通过SQLCipher 加密数据库直写pyrekordbox 虚拟 MIDImido两条通道程序化完成曲库检索、播放列表写入playlist create/add/clear与双碟 live-deck 混音play/sync/crossfade/EQ/hot-cue。读完本文你将掌握完整的安装、命令矩阵、写保护机制、JSON Agent 输出约定以及从源码与测试层面理解其内部实现原理。一、为什么需要这样一套 HarnessPioneer 的三条程序化通道Rekordbox 官方并未向开发者开放播放控制 API其可编程面实际上只有三条master.db——SQLCipher 加密的 SQLite 曲库文件包含曲目、播放列表、Cue、Hot Cue 等元数据虚拟 MIDI——Rekordbox 接受任何已注册控制器映射发来的 MIDI 信号可驱动播放、混音台等实时操作Pro DJ Link——面向硬件 CDJ 的只读网络广播不提供写入能力。cli-anything-rekordbox的定位正是把第 1、2 条通道组合进一个统一 CLI曲库侧用pyrekordbox直接读写加密库自动提取 Rekordbox 6/7 静态 master key回放侧用虚拟 MIDI 发送器配合随包附带的Bunker.midi.csv控制器映射最终以 JSON--json面向 Agent或人类可读文本输出。这一点在 主 CLI 源码 docstring 中也有明确描述。二、安装与前置条件2.1 安装方式pip install cli-anything-rekordbox # 可选的 Windows 扩展用于 live-deck UI 自动化所需的 pyautogui/pywin32 等 pip install cli-anything-rekordbox[windows]从仓库的 setup.py 可以确认其运行时依赖为依赖版本约束用途click8.0.0CLI 框架与参数解析prompt-toolkit3.0.0REPL 交互模式mido1.3.0MIDI 消息构造与发送python-rtmidi1.5.0MIDI 后端端口pyrekordbox0.4.0master.db SQLCipher 解密与读写Python 要求3.10且包声明了windows与devpytest两个 extras。控制台入口cli-anything-rekordbox指向rekordbox_cli:main。2.2 前置条件Python 3.10Rekordbox 6 或 7已安装且master.db可被定位虚拟 MIDI 驱动仅 live-deck 控制需要WindowsloopMIDI、LoopBe 或 teVirtualMIDImacOSIAC Driver内置通过“音频 MIDI 设置”启用LinuxALSA 虚拟 MIDIsnd-virmidi。注意pyrekordbox会自动从rekordbox.exe中提取 Rekordbox 6/7 的静态 master key所有安装实例共用同一把硬编码 AES-256 密钥因此无需用户手动提供密钥。三、快速开始# 曲库巡检无需 MIDI cli-anything-rekordbox library count cli-anything-rekordbox library search Daft Punk # 创建并填充播放列表。写入前会先备份 master.db # 若 Rekordbox 正在运行除非加 --force 否则拒绝写入。 cli-anything-rekordbox playlist create MyMix cli-anything-rekordbox playlist add MyMix --track-title Track A cli-anything-rekordbox playlist add MyMix --track-title Track B # live-deck 混音需要虚拟 MIDI 端口 rekordbox 内启用映射 cli-anything-rekordbox install-mapping # 一次性把 Bunker.midi.csv 放入 rekordbox MidiMappings/ cli-anything-rekordbox deck play --deck 1 --port LoopBe cli-anything-rekordbox deck crossfade 1 2 --secs 16 # 端到端加载 混音两首曲目 cli-anything-rekordbox mix Track A Track B --secs 16 # REPL 模式 cli-anything-rekordbox直接执行cli-anything-rekordbox不带子命令会进入 REPL基于prompt_toolkit提供rekordbox提示符支持输入help查看命令帮助、exit/quit退出见 rekordbox_cli.py。四、命令组详解4.1library曲库巡检命令说明count统计曲库曲目总数search QUERY按标题/艺人做子串匹配查找曲目info TRACK_ID展示单曲完整元数据dump --out tracks.json导出全曲库为 JSON从源码看搜索与 info 输出字段包括id、title、artist、bpmBPM/100.0BPM 在库内以 100 倍整数存储、genre/key来自关联表的Name、duration_msc.Length与filec.FolderPath默认search上限为 20 条--limit可调见 library 实现。4.2playlist带写保护的播放列表写入命令说明list列出全部播放列表含 id、name、song_countcreate NAME [--force] [--no-backup]新建播放列表add NAME --track-title T [--force] [--no-backup]按标题搜索并加入曲目也支持--track-id跳过搜索clear NAME [--force] [--no-backup]清空播放列表写保护语义务必理解每次播放列表写入前CLI 会在master.db同级目录下创建cli-anything-backups/子目录并以时间戳命名生成.bak备份同时备份-wal与-shmsidecar 文件若 Rekordbox 正在运行默认拒绝写入--force表示知晓风险但仍然强制要求先备份--no-backup只有在 Rekordbox 关闭时才被接受。其底层逻辑集中在_open_db_for_write()先做进程检测再决定是否放行与备份最终通过_commit_db_write()完成autoincrement_local_update_count、session.commit()与clear_buffer()见 写保护实现。进程检测通过tasklistWindows/pgrep/ps类 Unix实现也可用环境变量CLI_ANYTHING_REKORDBOX_RUNNING1覆盖自动探测。4.3deck基于虚拟 MIDI 的 live-deck 控制命令说明play --deck N切换播放/暂停N 仅限 1/2cue --deck NCue 按钮sync --deck N拍速同步至主碟crossfade FROM TO --secs S两碟间平滑过渡默认 8 秒、64 步eq --deck N --hi V --mid V --lo VEQ 控制0..10.5 为 unitytempo --deck N --offset V音高推子-1..1hot-cue --deck N --slot S触发 Hot Cue 1–8实现细节命令通过_open_midi()在mido.get_output_names()中按子串默认LoopBe匹配并打开输出端口按钮类消息用_tap()note_on velocity 127 后延时约 30ms 再发 0推子类消息用_cc14()构造 14-bit MSB/LSB 双 control_change值域 0..16383。例如 crossfade 会将 -1.0→1.0 的推子位置线性插值到 14-bit 值并通过_cc14(6, 0x1F, 0x3F, v14)发送对应映射中的CrossFaderB61F见 deck 实现。4.4 顶层命令命令说明mix A B --secs S高层面搜索 A→碟1、B→碟2、sync、crossfadeinstall-mapping把 Bunker.midi.csv 复制进 rekordbox 的 MidiMappings 目录status报告 rekordbox 运行状态、DB 路径、MIDI 端口install-mapping支持--rekordbox-dir显式指定也会自动探测 Windows 的rekordbox 7.2.8/7.2.7/7.2.6/6.8.6安装路径与 macOS 的/Applications/rekordbox 7/.../MidiMappings。当目标目录存在时会写入LoopBe Internal MIDI.midi.csv与Bunker.midi.csv两个名称并把前者的 CSVfile头改写为匹配设备名见 install_mapping。五、架构总览----------------------------- | cli-anything-rekordbox | ----------------------------- | ------------------ | | v v ----------- --------------- | pyrekord- | | mido | | box | | virtual MIDI | ----------- --------------- | | v v ---------- ----------------- | master.db| | Rekordbox 6/7 | | SQLCipher| | (live decks) | ---------- -----------------两条数据通路彼此独立曲库读写全部经过 pyrekordbox 解密master.db不依赖 Rekordbox 前台运行写入时除外实时回放则完全走 MIDI由 Rekordbox 内部把映射信号映射到对应功能。该架构与 SKILL.md 中描述的“Agent → CLI → (pyrekordbox DB writes / midovirtual MIDI)”调用链一致。六、数据文件与 MIDI 映射Bunker.midi.csv——Pioneer 标准.midi.csv格式的控制器映射覆盖浏览器导航Browse/Forward/Back/Load、碟机走带PlayPause 900B、Cue 900C、Sync/Master9058/905C、14-bit 推子TempoSlider B000、ChannelFader B013、CrossFader B61F、EQEQHigh B007/EQMid B00B/EQLow B00F、每碟 8 个 Hot Cue9000–9007PadMode1、Beat Loop、Beat Jump、PadMode 切换、Slip、Quantize 等。该文件由install-mapping直接投放到 rekordbox 的MidiMappings/目录setup.py的package_data保证其随包分发。七、JSON 输出约定Agent 消费每个命令都支持--json$ cli-anything-rekordbox --json library search Daft Punk [{id: 12345, title: One More Time, artist: Daft Punk, bpm: 123.0}, ...]输出由_emit()统一处理开启--json时输出json.dumps(payload, indent2)否则 dict/list/标量分别渲染为人类可读文本。写入类命令还会在 payload 中附带backup备份文件列表、rekordbox_running、forced等安全字段方便 Agent 感知写操作上下文见 _emit。八、源码级验证测试如何保证安全语义仓库提供了一套冒烟测试 test_smoke.py可运行pytest cli_anything/rekordbox/tests/复现其核心断言与本文所述机制一一对应--help与全部子命令--help退出码为 0CLI 可解析性playlist create --help必须展示--force与--no-backup写保护选项被正确公开写保护拒绝mock 进程检测为运行中且未加--force时_open_db_for_write抛Refusing ...异常强制写仍需备份运行中 --force--no-backup时抛without a backup备份先于写入关闭状态下写入前会在cli-anything-backups/生成字节一致的.bak数据文件存在性Bunker.midi.csv必须以file,1,头随包存在。此外eval_pipeline.md 给出了需要真实 Rekordbox 环境的集成验收步骤status期望非零 track_count、search Demo命中 Pioneer 演示曲、playlist 三连 create/add/clear、以及 MIDI 通路下deck eq --deck 1 --hi 0.5 --mid 0.5 --lo 0.5后观察 EQ 旋钮归中。九、注意事项与使用边界SQLCipher 密钥由 pyrekordbox 从rekordbox.exe自动提取即 Rekordbox 6/7 各安装实例共用的静态 master key曲库写入默认要求 Rekordbox 关闭。--force属于显式承担风险的恢复/测试工作流且必须先备份live-deck 控制依赖一次性 UI 配置在 RekordboxPreferences → Controller → MIDI中启用虚拟 MIDI 端口。本工具通过install-mappingBunker.midi.csv自动投放到正确目录但仍需用户在偏好设置里启用该映射Pioneer 不提供回放 REST API因此这是“最接近官方能力”的程序化控制方案mix命令当前会在曲库解析后提示需要先在 Rekordbox UI 中将两曲加载到碟 1/碟 2再执行deck crossfade 1 2 --secs S。十、LicenseMIT —— 与上层 CLI-Anything 项目保持一致见 LICENSE。【免费下载链接】CLI-AnythingCLI-Anything: Making ALL Software Agent-Native -- CLI-Hub: https://clianything.cc/项目地址: https://gitcode.com/GitHub_Trending/cl/CLI-Anything创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表