Mediawikiで音楽のスコアを表示・再生する

提供: Akionux-wiki
Share/Save/Bookmark
移動: 案内検索

Extension:Scorelilypondを使ってMediawikiにスコアを表示するエクステンションである。 MediawikiのextensionsディレクトリにGitリポジトリをクローンする:

cd /path/to/mediawiki/extensions
git clone https://github.com/wikimedia/mediawiki-extensions-Score.git
mv mediawiki-extensions-Score Score

少なくとも、スコア表示のためにlilypondがインストールされている必要がある。 スコア再生のためにはExtension:MwEmbedSupportExtension:TimedMediaHandlerをそれぞれextensionsディレクトリへ配置し、LocalSettings.phpに次の記述を追加:

// TimedMediaHandler is dependent on mwEmbedSupport 
require_once "$IP/extensions/MwEmbedSupport/MwEmbedSupport.php";
// TimedMediaHandler
require_once( "$IP/extensions/TimedMediaHandler/TimedMediaHandler.php" );
// Score
require_once("$IP/extensions/Score/Score.php");

して、システムにjack-audio-connection-kitおよびtimidityがインストールされている必要がある。 さらに、ABC表記するにはabc2lyが必要(私は試してない)。 LocalSettings.phpを次のように編集する:

require_once("$IP/extensions/Score/Score.php");
$wgScoreLilyPond = '/path/to/your/lilypond/executable'; /* required */
$wgScoreAbc2Ly = '/path/to/your/abc2ly/executable'; /* if you want ABC to LilyPond conversion */
$wgScoreTimidity = '/path/to/your/timidity/executable'; /* if you want MIDI to Vorbis conversion */
$wgScoreTrim = true; /* Set to false if you don't want score trimming */

Mediawikiで例えば次のような記述でスコア表示・再生ができる:

<score vorbis=1>\relative c' { f d f a d f e d cis a cis e a g f e }</score>
\relative c' { f d f a d f e d cis a cis e a g f e }

ただし、Scoreエクステンションのコミットe48b1ec5486be3907f475370e71f69192f5b71f0時点では出力先ディレクトリのデフォルト設定が入力.lyファイルと同じディレクトリになっていることが前提となっているためか、処理の途中で生成されるmidiファイルの出力先がlilypondのバージョンによってはカレントディレクトリになってしまうことで出力できず、エラーになる。そこで、出力先ディレクトリを明示するオプション--outputオプションを使うようにScore.body.php584行目あたりを次のように書き変えた:

                $cmd = wfEscapeShellArg( $wgScoreLilyPond )
                        . ' ' . wfEscapeShellArg( '-dsafe=#t' )
                        . ' -dbackend=ps --png --header=texidoc --output='
                        . $factoryDirectory . ' '
                        . wfEscapeShellArg( $factoryLy )
                        . ' 2>&1';