# 自动弹琴

## 简介

读取 MIDI 谱子并向游戏窗口发送键盘演奏事件，实现自动弹琴功能。

## 功能

### MIDI 谱子

选择要演奏的 MIDI 谱子。支持自定义路径，也可以使用预设谱子。

### 播放速度

控制 MIDI 谱子的播放速度。`1.0` 为原速，大于 `1.0` 加快，小于 `1.0` 减慢。

### 转调

对 MIDI 谱子进行移调，单位为半音。例如 `-12` 降低一个八度，`12` 升高一个八度，`0` 不转调。

## 配置详解

### MIDI 谱子

选择 MIDI 谱子来源。

**具体实现**：下拉选择框 `MidiScoreFile`，默认 `自定义路径`。选择后提供 `MidiSettings_Custom` 子选项。

#### 自定义路径

设置 MIDI 谱子的文件路径、播放速度和转调参数。

**具体实现**：输入框组 `MidiSettings_Custom`，包含三个输入项：

- **谱子路径**（`SongPath`）：默认 `songs/example.mid`，通过 `^.+\.(mid|midi)$` 校验。相对路径从项目根目录解析，也支持绝对路径。
- **播放速度**（`Speed`）：默认 `1.0`，通过 `^(?:[1-9]\d*(?:\.\d+)?|0\.\d+)$` 校验，需大于 0。
- **转调**（`Transpose`）：默认 `0`，通过 `^-?\d+$` 校验，单位为半音。

以上参数覆写 `AutoPiano` 的 `custom_action_param` 中的 `song`、`speed`、`transpose` 字段。
