bviguier / php-rtmidi
Realtime MIDI input/output, thanks to RtMidi and FFI.
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 library for realtime MIDI input/output, thanks to RtMidi and FFI.
Requirements
Installation
composer require bviguier/php-rtmidi
On MacOS, you can install RtMidi globally thanks to brew
.
brew install rtmidi
⚠️ In Linux, package registries often provide librtmidi.so.4
which is the version 3
!
To compile it manualy:
- Download and extract http://www.music.mcgill.ca/~gary/rtmidi/release/rtmidi-4.0.0.tar.gz
./configure
make && make install
- Be sure that the library is available in you
LD_LIBRARY_PATH
or to provide the full path toPhpRtMidi
.
Features
- Send midi messages (including system exclusive)
- Receive midi messages (including system exclusive)
- Create virtual input or output
Usage
If the RtMidi is not globally available on your system, you have to provide its path.
By default, PhpRtMidi
try to load the library by its standard name, but the name may depend on your OS or your build.
You can also use LIB_RTMIDI_PATH
environment variable to provide the path to the library.
This library doesn't match exactly original RtMidi interfaces, but try to expose a straightforward developer experience.
$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); }
Check examples
directory to have a better overview of its usage.