[Squeak-ja: 4620] PortMidiPlugin for Squeak 初回限定版 (for Mac OS X) Thrill-seekers Only version is available.

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[Squeak-ja: 4620] PortMidiPlugin for Squeak 初回限定版 (for Mac OS X) Thrill-seekers Only version is available.

NISHIHARA Satoshi-2
西原です.
PortMidiPluginの初回限定版for Mac OS X onlyを出しました.

PortMidiPluginは,Platform Independent Library for MIDI I/OなPortMidiライブラリ
http://portmedia.sourceforge.net/portmidi/
を使ってMIDIのやりとりを行うプラグインです.
プラグインのバイナリと,後述するKhoros-Core* and Khoros-MIDI-*パッケージをインストールすると,使えるようになります.

Squeakには標準でSimpleMIDIPortとMIDIPluginを持っていて,例えばMac OS
X/Windowsなら他になにも追加することなQuickTime DLS
Synth等の音源を鳴らすことができますが,MIDI系のいわゆるソフトウェア音源/バーチャル音源(Software
Synthesizer)に繋ぐことができません.それで,このプラグインを作りました.
とりあえずの目標としてSimpleMIDIPort同等の機能を持つことを目指しました.※1

PortMidiライブラリはプラグイン中に含まれており,別途インストールする必要はありません.逆に言うと,すでにインストールされていても使いません.

Squeak用のクラス群は以下にあります.
http://www.squeaksource.com/Khoros.html
Khoros-Core* and Khoros-MIDI-*はクライアント側で使います.
PortMidiPrimitives-* はVMMaker-edなイメージで使うプラグインのソースクラスです.

プラグインのビルドに必要なソース郡,およびMac OS X用のプラグインのバイナリは以下にあります.
http://code.google.com/p/khoros/
ソースはMercurialでクローンしてください.バイナリはそのまま落とせます.
現状,他のプラットフォームのビルド&テスト環境がないので,バイナリはMac OS X のみです.
VMのContents/Resouces/に放り込んでください.
今のところ,プラットフォーム依存のコードはありません (はず).PortMidiのビルドができる環境なら,このプラグインもビルドできると思います.

使い方等はPortMidiInterfaceTester, PortMidiInterface, それにPortMidiPortなどのクラス群にあります.
PmScorePlayerMorphはSimpleMIDIPortの代わりにPortMidiPortを使う*だけ*のモルフです.

PortMidiPluginのソースはMaestro Stephen Travis PopeさんがSiren for VisualWorks
7.5用に書いたportmidi_lite.cをベースにしており,これのwrapper++として動きます.

※1 制約:
SqueakオリジナルのMIDIPluginが持っているMIDIParameterGet/Setは実装されていません.
※2 追加機能:
・1バイトおよび4バイトのMIDIメッセージの読み書き
・システム・エクスクルーシブ・メッセージの読み書き(原始版)
・メッセージのフィルタリング,チャンネルのマスク機能などなど

読み込み用にオープンされたポートでフィルタリングを行なっているのは,PortMidiのデフォルト設定であるアクティヴ・センシングのみに変更しています.実デバイスをつなぐと,クロック・メッセージがどんどこ流れてくるかも知れません.必要があれば適宜フィルタリングしてください.

--
--
"NISHIHARA Satoshi"
[:goonsh :nsh | ^ nishis perform: goonsh with: nsh]