bviguier / php-rtmidi
通过 RtMidi 和 FFI 实现实时 MIDI 输入/输出。
v0.0.1
2022-01-19 13:37 UTC
Requires
- php: >=7.4
- ext-ffi: >=7.4
Requires (Dev)
- phpstan/phpstan: ^0.12.54
- phpstan/phpstan-phpunit: ^0.12.16
- phpunit/phpunit: ^9.4
README
Php 实时 MIDI 输入/输出库,利用 RtMidi 和 FFI 实现。
要求
安装
composer require bviguier/php-rtmidi
在 MacOS 上,您可以通过 brew
全局安装 RtMidi。
brew install rtmidi
⚠️ 在 Linux 上,软件包注册表通常提供 librtmidi.so.4
,这是版本 3
!要手动编译
- 下载并解压 http://www.music.mcgill.ca/~gary/rtmidi/release/rtmidi-4.0.0.tar.gz
./configure
make && make install
- 确保库在您的
LD_LIBRARY_PATH
中可用,或者为PhpRtMidi
提供完整路径。
特性
- 发送 MIDI 消息(包括系统专用消息)
- 接收 MIDI 消息(包括系统专用消息)
- 创建虚拟输入或输出
用法
如果 RtMidi 在您的系统上不可用,您需要提供其路径。默认情况下,PhpRtMidi
尝试通过其 标准 名称加载库,但名称可能取决于您的操作系统或构建。您还可以使用 LIB_RTMIDI_PATH
环境变量提供库的路径。
此库不完全匹配原始的 RtMidi 接口,但试图提供一个简单的开发者体验。
$browser = new \bviguier\RtMidi\MidiBrowser(); $input = $browser->openInput('My Input'); $output = $browser->openOutput('My Output'); echo "Midi thru enabled, use Ctr-C to exit…\n"; while (true) { if ($msg = $input->pullMessage()) { $output->send($msg); } usleep(100); }
查看 examples
目录 以更好地了解其用法。