前言
在前端开发中,我们通常会涉及到和 MIDI 设备进行交互的需求。而针对 Windows 平台上的 MIDI 设备,我们可以使用 npm 包 @nodert-win10/windows.devices.midi 来实现其操作。本文将详细介绍如何使用此 npm 包,并提供示例代码和一些操作技巧。
安装
使用此 npm 包需要在 Windows 环境下进行。在项目根目录中,使用以下命令安装 npm 包:
npm install @nodert-win10/windows.devices.midi --save
同时,需要在项目中引入相关的 TypeScript / JavaScript 模块。
使用
打开 MIDI 设备
要使用 MIDI 设备,首先需要打开设备。使用 @nodert-win10/windows.devices.midi 包中的 MidiInPort 和 MidiOutPort 来打开 MIDI 输入设备和 MIDI 输出设备。
import { MidiInPort, MidiOutPort } from '@nodert-win10/windows.devices.midi'; import { getRandomInt } from './utils'; const midiInPort = await MidiInPort.fromIdAsync(devicesIds.inputId); const midiOutPort = await MidiOutPort.fromIdAsync(devicesIds.outputId);
其中 devicesIds.inputId
和 devicesIds.outputId
分别是 MIDI 输入设备和 MIDI 输出设备的 ID。更多关于设备 ID 的内容可以见此处:Get the ID of a MIDI device
MIDI 输入
打开 MIDI 输入设备后,我们可以通过不断检查 MIDI 数据来获取设备输入的内容。
midiInPort.onmidiinmessage = (args) => { const { timestamp, data } = args; // 解析 MIDI 数据 console.log(`MIDI: [${timestamp.toLocaleString()}] ${data.join(',')}`); };
在发生 MIDI 数据输入时,onmidiinmessage 会被调用。我们可以从 args 中获取到时间戳和 MIDI 数据。
MIDI 输出
打开 MIDI 输出设备后,我们可以使用 write 方法将 MIDI 数据发送给设备。
midiOutPort.write([msgByte1, msgByte2, msgByte3]);
其中 msgByte1、msgByte2 和 msgByte3 是 MIDI 数据的三个字节。
控制信号
在使用 MIDI 设备的过程中,我们通常需要发送一些控制信号来控制设备的工作状态。使用 @nodert-win10/windows.devices.midi 包,我们可以轻松的发送这些信号。
// 发送控制信号 midiOutPort.write([0xB0 + channel, ccNumber, value]);
其中 channel 为信道,ccCode 为控制码,value 为值。更多关于 MIDI 控制信号的内容可以见此处:Control Change Message Chart
除了普通的控制信号外,还有一些特殊的信号可以用来控制设备的功能。
SysEx
SysEx 是一种 MIDI 系统引导消息,它适用于不同厂商自己的系统级消息传输。
const sysex = [0xF0, ...manufacturerData, 0xF7]; midiOutPort.sysex(sysex);
Timing Clocks
Timing Clocks 是一种系统消息,它用于 MIDI 同步。
midiOutPort.timingClock();
Start 和 Stop
Start 和 Stop 是两种系统消息,用于 MIDI 同步。
midiOutPort.start(); midiOutPort.stop();
总结
本文介绍了如何使用 npm 包 @nodert-win10/windows.devices.midi,它可以帮助我们实现与 Windows 平台上的 MIDI 设备进行交互的功能。同时介绍了 MIDI 设备的输入、输出、控制信号等操作方法,并给出了一些常见的使用示例代码。希望这篇文章对前端开发人员有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60066bce967216659e244abc