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

## MicMusicTransformer

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

> 💡 适用于灯带类产品的本地麦克风音乐 DP（如 mic_music），支持多种音乐变化模式（跳变、渐变、呼吸、闪烁）
> 和多颜色单元配置。协议包含电源开关、模式 ID、灯光状态、速度、灵敏度、亮度及颜色列表等。
> 每个颜色单元为 hue(4位) + saturation(4位)。

### 描述

本地麦克风音乐律动标准 DP 协议转换器，用于本地音乐律动配置与 DP 十六进制协议的双向转换

### 参数

`Params`

| 参数 | 类型 | 必填 | 描述 |
| --- | --- | --- | --- |
| `uuid` | `string` | 否 | DP 标识符，默认为 mic_music 标准 DP Code |
| `defaultValue` | `{ v: number, power: boolean, id: number, isLight: number, mode: number, speed: number, sensitivity: number, a: number, b: number, c: number, brightness: number, colors: Unit[] }` | 否 | 默认音乐数据，当解析失败时返回此值 |

### 返回值

类型: `MicMusicTransformer`

MicMusicTransformer 实例

#### 方法

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

### 引用对象

##### `interface` Unit

| 属性 | 类型 | 描述 |
| --- | --- | --- |
| `hue` | `number` | 色相 |
| `saturation` | `number` | 饱和度 |


### 示例代码

#### 示例

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

const transformer = new MicMusicTransformer();
// 解析本地音乐 DP 字符串
const data = transformer.parser('0101003364320000006400000064007800640078006400f0006400500064011800640190006401180064');

// 格式化为 DP 字符串
const dpStr = transformer.formatter({
  v: 1, power: true, id: 0, isLight: 0, mode: 3,
  speed: 100, sensitivity: 50, a: 0, b: 0, c: 0,
  brightness: 100,
  colors: [{ hue: 0, saturation: 100 }, { hue: 120, saturation: 100 }],
});
```
