Extension:Score
The Score extension requires setting up an external service, Shellbox , to securely process musical scores via LilyPond. Please review the information in #Security concerns and the 2021 security advisory before installing this extension. |
![]() リリースの状態: 安定 |
|
---|---|
![]() |
|
実装 | タグ |
説明 | LilyPond で楽譜をレンダリングできるようにする |
作者 | Alexander Klauer, Étienne Beaulé |
最新バージョン | 0.3.0 (2019-03-23) |
MediaWiki | 1.36+ |
PHP | 5.3+ |
ライセンス | GNU 一般公衆利用許諾書 3.0 以降 |
ダウンロード | README.md |
|
|
score |
|
Quarterly downloads | 21 (Ranked 142nd) |
Public wikis using | 918 (Ranked 265th) |
translatewiki.net で翻訳を利用できる場合は、Score 拡張機能の翻訳にご協力ください | |
問題点 | 未解決のタスク · バグを報告 |
Score 拡張機能は、LilyPond を使用して楽譜を PNG 画像としてレンダリングできるようにします。またそれらを音声ファイルや MIDI ファイルに変換することもできます。
謝辞
- オリジナルの Extension:LilyPond はJohannes E. Schindelinによって書かれました。
- この拡張機能は、Tim Starling の Extension:LilyPond のコードレビューに基づいています。
- オリジナルの Extension:ABC は River Tarnell によって書かれました。
使用法
設定の後、<score>...</score>
タグ内に簡単な LilyPond 記法をウィキテキストに埋め込むことができます。例えば:
<score>\relative c' { f d f a d f e d cis a cis e a g f e }</score>
変換結果:
一般的な形式でscoreタグに属性を指定することもできます
<score attribute1="value1" attribute2="value2">…</score>.
例えば:
<score sound="1">\relative c' { f d f a d f e d cis a cis e a g f e }</score>
変換結果:
使用できる属性は次の通りです。
属性 | 許容される値 | 効果 |
---|---|---|
lang | ABC, lilypond (default) | 楽譜の言語を設定します。例えばABC記譜法を提供するには以下を使用します: <score lang="ABC">
X:1
M:C
L:1/4
K:C
C, D, E, F,|G, A, B, C|D E F G|A B c d|
e f g a|b c' d' e'|f' g' a' b'|]
</score>
|
midi | (除去済) これを使い、レンダリングした楽譜の画像を MIDI ファイルとリンクするかどうかコントロール。 | |
override_midi | 既知のファイル名、たとえば override_midi="name"と入力すると、[[File:name]] は赤リンクを回避 |
(廃止予定) 代わりに閉じる</score> タグの後に[[File:superior midi filename.mid]] タグを追加してください。LilyPond で音声ファイルを作成せず、指定した MIDI ファイルを使用。 midi 属性(前述を参照)または音声属性(後述を参照)とともにこの属性を使います。 この属性が役に立つのは、既に MIDI ファイルがあり、LilyPond が生成するはずのものよりも質が高い場合です。 |
override_audio | 既知のファイル名、たとえば override_audio="name"と入力すると、[[File:Name]] は赤リンクを回避 |
(廃止予定) 代わりに閉じる</score> タグの後に[[File:superior audio filename.oga]] タグを追加してください。楽譜の(複数の)画像に続き、HTML コードに指定したファイル名のメディアを埋め込みます。 音声属性の代用に使えます。(下記を参照) これはたとえば自動生成した音声ファイルよりも質が高く適応する音声ファイルがある場合に、役に立ちます。 もちろん、この事例では両方の属性を除去することも可能で、ご希望ならページには手動でファイルを追加してください。 |
override_ogg | (廃止予定) override_audioに対して二重に非推奨のエイリアス。 | |
raw | 0 (default), 1 | 設定値を 1 にすると、楽譜のコードは完成した LilyPond 形式のファイルとして認識されます。 より複雑な楽譜を作成するには、このオプションをお使いください。 もし楽譜の言語(lang 属性) を lilypond に指定しないと、 属性は無視されます。 既定 (raw=0の場合) では、入力したコードは \score{...} ブロックに包まれ、もし未指定なら既定値の \layout{...} ブロックと \midi{...} ブロックとともに適用されます。
|
sound | 0 (default), 1 | 設定値を 1 にすると、Extension:TimedMediaHandler をインストールして設定してある場合は、楽譜から音声ファイルを生成します。 音声プレイヤーが楽譜の(複数の)画像に続いて HTML コードに埋め込まれます。 |
vorbis | 0 (default), 1 | (廃止予定) soundの別名。 |
LilyPond 言語
歌詞は以下のようにして追加できます:
<score>
\relative c'' { \time 4/4 \key c \major
c4 g8 g a4 g r b^> c^> r \bar "|." }
\addlyrics { Shave and a hair -- cut: two bits. }
</score>
上級の利用者には\set Staff.midiInstrument
コマンドの利用でMIDI楽器を変更できます。
要件
以下のパッケージが推奨されます:
- LilyPond
- Ghostscript
- ImageMagick
- FluidSynth
- Firejail
この拡張機能は LilyPond を使用してスコア画像をレンダリングするため、LilyPond をインストールする必要があります (Special:Version に LilyPond のバージョンが表示されます)。 パッケージから LilyPond をインストールした場合、依存するアプリケーションとして Ghostscript も同時にインストールされます。 画像の切り出しには ImageMagick のインストールが必要で、さもないと画像は不要な余白を含む可能性があります。
For security reasons, it is highly recommended to install firejail to further restrict what LilyPond and Ghostscript can do if untrusted users are allowed to edit your wiki.
拡張機能は、LilyPond によって生成された MIDI ファイルから音声ファイルを作成することもできます。この機能を利用するには、Extension:TimedMediaHandler をインストールする必要があります。
MIDI ファイルから音声ファイルに変換するには FluidSynth が推奨されますが、TiMidity++ もサポート対象です。 supported.
セキュリティ上の問題
Score では LilyPond をセーフモードで使いますが、セーフモードをエスケープする既知の脆弱性に未対応のため、予想外の実行を導く可能性があります。
ご利用のウィキで編集権限を有する人全員に対し、全幅の信頼を寄せることができない場合は、Shellbox の利用により Lilypond に制限をかけるよう強く推奨されます。 サーバに予防措置を講じる設定について、詳細は Shellbox#Server setupと、下記のMediaWikiにおける設定をご参照ください。 さらに、必ずセキュリティ修正済みの LilyPond 最新版 (2.22.0+) もしくは配布パッケージを使ってください(たとえばDebian 版)。 常にセーフモードを有効にすることは必須で、予防措置をしていても防衛をもう一層、高めるためです。セーフモードでは使えない特定の機能があり、その対応には LilyPond 側で調整して当該の機能をセーフモードでも使えるようにします。
インストール
- See the extension's
README.md
for detailed installation instructions.
- ダウンロードして、ファイルを
extensions/
フォルダー内のScore
という名前のディレクトリ内に配置します。 - 以下のコードを LocalSettings.php ファイルの末尾に追加します:
wfLoadExtension( 'Score' ); $wgScoreTrim = true; $wgImageMagickConvertCommand = '/usr/bin/convert'; $wgShellboxUrl = '... address to Shellbox ...'; $wgShellboxSecretKey = '... your secret key ...';
- ご利用の$wgUploadDirectory にサブディレクトリを作成して
lilypond
と命名します(通常の保存先は MediaWiki 配下のimages
というディレクトリ)。 ご利用のWebサーバ上でそのディレクトリが書き込み可能であることを確認願います。 - 完了 – ウィキの「Special:Version」に移動して、拡張機能が正しくインストールされたことを確認します。
MediaWiki 1.26以前を稼働させている利用者へ:
上記の手順では、wfLoadExtension()
を使用してこの拡張機能をインストールする新しい方法を記載しています。
この拡張機能をこれらの過去のバージョン (MediaWiki 1.26以前) にインストールする必要がある場合は、wfLoadExtension( 'Score' );
の代わりに以下を使用する必要があります:
require_once "$IP/extensions/Score/Score.php";
設定
拡張機能に備わったグローバルな設定パラメータには、次のものが含まれます。
$wgScoreLilyPond
$wgScoreLilyPond
のパスを実行可能な LilyPond に設定(通常は
/usr/bin/lilypond
または/usr/local/bin/lilypond
)。
$wgScoreTrim
$wgScoreTrim
という真偽値は既定で$wgUseImageMagick
の値です。true
の場合、実行結果の score PNG 画像を ImageMagick でトリミング加工できます。それが不要の場合もしくは ImageMagick をインストールしたくない場合、$wgScoreTrim
はfalse
に設定します。
$wgScoreAbc2Ly
ABC 記法の$wgScoreAbc2Ly
のパスを実行可能な LilyPond 変換機能に設定(通常は
/usr/bin/abc2ly
または/usr/local/bin/abc2ly
)。
$wgScoreFluidsynth
$wgScoreFluidsynth
のパスを実行可能な FluidSynth に設定(通常は/usr/bin/fluidsynth
または/usr/local/bin/fluidsynth
)。
$wgScoreSoundfont
$wgScoreSoundfont
をSoundFontファイルのパスに設定(通常は/usr/share/sounds/sf2/FluidR3_GM.sf2
または /usr/share/sounds/sf2/FluidR3_GS.sf2
)。
$wgScoreLame
$wgScoreTimidity
のパスを実行可能なLAMEに設定(通常は/usr/bin/lame
または/usr/local/bin/lame
)。生成する音声ファイルは必ず MP3 になるという制約があります。
注記
この拡張機能はある程度のセキュリティ対策としてShellbox上でさまざまなバイナリを実行します。そのためメモリ不足のエラー発生時には、$wgMaxShellMemory の拡張が必要な場合があります。
楽譜の検索
楽譜を含むページにはページ プロパティに「score」というセットが備わっています。楽譜のあるページの検索には 特別:プロパティがあるページ を使います。(日本語版ウィキペディアでは「プロパティ名:」欄で score を選択して実行。)
関連項目
- LilyPond 構文の例をもっと見るには、英語版のウィキペディアの場合はHelp:Score を、ウィキソースでは Help:Sheet music をご参照ください。
- Vexflow オープンソースの SVG/Canvas 楽譜用変換機能
- LilyPond 記法
- ABC 記法
- github 上にある vexflow リポジトリ
この拡張機能は 1 つ以上のウィキメディアのプロジェクトで使用されています。 これはおそらく、この拡張機能が安定していて高いトラフィックのウェブサイトでも十分に動作することを意味します。 この拡張機能がインストールされている場所を確認するには、ウィキメディアの設定ファイル CommonSettings.php および InitialiseSettings.php 内で、この拡張機能の名前を探してください。 特定のウィキにインストールされている拡張機能の完全な一覧は、そのウィキの Special:Version ページにあります。 |
この拡張機能は以下のウィキ ファーム/ウィキ ホスト/パッケージに含まれています: これは正式な一覧ではありません。 一部のウィキ ファーム/ウィキ ホスト/パッケージは、ここに記載されていなくてもこの拡張機能を含んでいる場合があります。 必ずご利用のウィキ ファーム、ウィキ ホスト、バンドルで確認してください。 |