---
name: "MicMusicDataRawTransformer"
mode: "api"
versionRequirements:
  - { name: "@ray-js/panel-sdk", version: "1.0.0" }
title: "MicMusicDataRawTransformer"
summary: "MicMusicDataRawTransformer 用于解析照明 mic_music_data_raw DP，实现音乐数据的解析与格式化。"
questions:
  - "MicMusicDataRawTransformer 的作用是什么？"
  - "MicMusicDataRawTransformer 如何解析音乐数据？"
  - "MicMusicDataRawTransformer 的输入和输出是什么？"
  - "MicMusicDataRawTransformer 的转换规则是什么？"
---

## MicMusicDataRawTransformer

> [VERSION] @ray-js/panel-sdk >= 1.0.0

> 💡 适用于灯类产品的本地麦克风音乐 Raw DP（如 mic_music_data_raw），协议为 8 位十六进制字符。
> 第一字节通过位运算编码了 power(1bit)、id(3bit)、status(2bit)、style(2bit)，
> 后续字节依次为 speed、sensitivity、light 各 1 字节。

### 描述

本地麦克风音乐 Raw 类型 DP 协议转换器，用于本地音乐控制参数与 Raw DP 十六进制协议的双向转换

### 参数

`Params`

| 参数 | 类型 | 必填 | 描述 |
| --- | --- | --- | --- |
| `uuid` | `string` | 否 | DP 标识符，默认为 'mic_music_data_raw' |
| `defaultValue` | `IMicMusicData` | 否 | 默认音乐数据，当解析失败时返回此值 |

### 返回值

类型: `MicMusicDataRawTransformer`

MicMusicDataRawTransformer 实例

#### 方法

| 方法名 | 说明 |
| --- | --- |
| `parser` | 将 Raw DP 十六进制字符串解析为本地麦克风音乐数据对象 |
| `formatter` | 将本地麦克风音乐数据对象格式化为 Raw DP 十六进制字符串 |

### 引用对象

##### `type` IMicMusicData

| 属性 | 类型 | 描述 |
| --- | --- | --- |
| `power` | `number` | 本地音乐开关，0：关；1：开； |
| `id` | `number` | 音乐模式ID，最多支持8种 |
| `status` | `number` | 无声音输入时的灯光状态：0：灭灯；1：维持静态亮度；2：缓慢渐变； |
| `style` | `number` | 变化方式：0：跳变；1：渐变；2：呼吸；3：闪烁； |
| `speed` | `number` | 变化速度，1~100，默认50（预留用，面板不开放设置） |
| `sensitivity` | `number` | 灵敏度，1~100，默认50（灵敏度高对应低阈值电压，灵敏度低对应高阈值电压） |
| `light` | `number` | 亮度，1~100，默认100（预留用，面板不开放设置） |


### 示例代码

#### 示例

```ts
import { MicMusicDataRawTransformer } from '@ray-js/panel-sdk';

const transformer = new MicMusicDataRawTransformer();
// 解析 Raw DP 字符串
const data = transformer.parser('80323264');
// => { power: 1, id: 0, status: 0, style: 0, speed: 50, sensitivity: 50, light: 100 }

// 格式化为 Raw DP 字符串
const dpStr = transformer.formatter({
  power: 1, id: 0, status: 0, style: 0,
  speed: 50, sensitivity: 50, light: 100
});
```
