This page is a translated version of the page Extension:Score and the translation is 22% complete.
MediaWiki扩展手册
Score
发行状态: 稳定版
实现 标签
描述 允许通过LilyPond渲染乐谱
作者 Alexander Klauer, Étienne Beaulé
最新版本 0.3.0 (2019-03-23)
MediaWiki 1.36+
PHP 5.3+
许可协议 GNU通用公眾授權條款3.0或更新版本
下載
README.md
  • $wgScorePath
  • $wgScoreAbc2Ly
  • $wgScoreFluidsynth
  • $wgScoreLame
  • $wgScoreEnvironment
  • $wgScoreLilyPond
  • $wgWikibaseMusicalNotationLineWidthInches
  • $wgScoreImageMagickConvert
  • $wgScoreLilyPondFakeVersion
  • $wgScoreFileBackend
  • $wgScoreDirectory
  • $wgScoreTrim
  • $wgScoreGhostscript
  • $wgMusicalNotationEnableWikibaseDataType
  • $wgScoreOfferSourceDownload
  • $wgScoreMaxLength
  • $wgScoreDebugOutput
  • $wgScoreUseSvg
  • $wgScoreDisableExec
  • $wgScoreSafeMode
  • $wgScoreSoundfont
score
季度下載量 25 (Ranked 122nd)
正在使用的公开wiki数 918 (Ranked 265th)
前往translatewiki.net翻譯Score扩展
問題 开启的任务 · 报告错误

乐谱扩展允许你像PNG这样使用LilyPond渲染乐谱,并且可以将其转化为音频和MIDI文件。

鸣谢

用法

After setup, you can embed simple LilyPond notation into your wikitext inside a ‎<score>...‎</score> tag. For example:

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

产生:

 

You may also specify attributes to the score tags in the general form

<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>

产生:

 

The following attributes are available:

属性 允许的值 效果
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 (已移除) This used to control whether the rendered score image linked to a MIDI file.
override_midi Known file name, that is, if override_midi="name" is given, [[File:name]] does not yield a red link (已弃用) Instead you can add a [[File:superior midi filename.mid]] wikilink after the closing ‎</score> tag.
Uses the specified MIDI file instead of generating one with LilyPond. Use this attribute together with the midi attribute (see before) or the sound attribute (see later). This attribute is useful if you already have a MIDI file whose quality is superior to what would be generated by LilyPond.
override_audio Known file name, that is, if override_audio="name" is given, [[File:Name]] does not yield a red link (已弃用) Instead you can add a [[File:superior audio filename.oga]] wikilink after the closing ‎</score> tag.
Embeds the media specified by the file name in the HTML after the score image(s). This is an alternative to the sound attribute (see further). It can, for example, be useful if you have a suitable audio file of superior quality compared with the auto-generated audio file. Of course, you can still omit both attributes in this case and add the file manually to the page, if you prefer.
override_ogg (已弃用) Doubly-deprecated alias for override_audio.
raw 0 (default), 1 If set to 1, the score code is interpreted as a complete LilyPond file. Use this option if you want to create more complex scores. If the score language (lang attribute) is not set to lilypond, this attribute is ignored. By default (when raw=0), provided code is wrapped in a \score{...} block, along with default \layout{...} and \midi{...} blocks, if not already provided.
sound 0 (default), 1 If set to 1, an audio file will be generated for the score, provided you installed and configured 扩展:TimedMediaHandler . An audio player will be embedded in the HTML after the score image(s).
vorbis 0 (default), 1 (已弃用) Alias for sound.

The LilyPond language

Lyrics may be added like this:

<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>
 

For advanced users, the \set Staff.midiInstrument command can be used to change the MIDI instrument for the sound.

Prerequisites

The following packages are recommended:

  • LilyPond
  • Ghostscript
  • ImageMagick
  • FluidSynth
  • Firejail

This extension uses LilyPond to render score images, so you need a working LilyPond installation (Special:Version displays the LilyPond version). If you install LilyPond from a package, Ghostscript will also be installed, since LilyPond depends on Ghostscript. ImageMagick should be installed to trim the images, otherwise they will contain an excessive amount of whitespace.

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.

The extension is also capable of creating audio files from the MIDI files generated by LilyPond. If you want to make use of this functionality, you need to have 扩展:TimedMediaHandler installed.

FluidSynth is the preferred method to convert MIDI files to audio files, however TiMidity++ is also supported.

Security concerns

 
Use Shellbox to secure LilyPond to protect your wiki!

Score uses LilyPond in safe mode, however there are known unfixed safe mode escape vulnerabilities leading to arbitrary execution.

If you don't absolutely trust everyone who has editing privileges on your wiki, it is strongly recommended to set up containment of lilypond using Shellbox . See Shellbox#Server setup for details on how to set up the contained server, and below for configuring MediaWiki to use it. Also, ensure you're using a recent version of LilyPond (2.22.0+) or a distribution package (e.g. from Debian) that has security fixes. Keep safe mode enabled, even with containment as an extra layer of defense. Certain functionality will not work in safe mode, the fix for that is to modify LilyPond to allow that functionality in safe mode.

安裝

See the extension's README.md for detailed installation instructions.
  • 下载文件,并将其放置在您extensions/文件夹中的Score目录内。
    开发者和代码贡献人员应从Git安装扩展,输入:cd extensions/
    git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/Score
  • 将下列代码放置在您的LocalSettings.php 的底部:
    wfLoadExtension( 'Score' );
    $wgScoreTrim = true;
    $wgImageMagickConvertCommand = '/usr/bin/convert';
    $wgShellboxUrl = '... address to Shellbox ...';
    $wgShellboxSecretKey = '... your secret key ...';
    
  • Create a subdirectory named lilypond in your $wgUploadDirectory (usually the directory named images in your MediaWiki directory). Make sure the directory is writable by your Web server.
  •   完成 – 在您的wiki上导航至Special:Version,以验证已成功安装扩展。

配置

Here are some of the extension's global configuration parameters.

$wgScoreLilyPond

Set $wgScoreLilyPond to the path to your LilyPond executable (typically /usr/bin/lilypond or /usr/local/bin/lilypond).

$wgScoreTrim

The $wgScoreTrim is a boolean which defaults to the value of $wgUseImageMagick. If true, the resulting score PNG images are trimmed with ImageMagick. If you don't want trimming, or don't want to install ImageMagick, set $wgScoreTrim to false.

$wgScoreAbc2Ly

Set $wgScoreAbc2Ly to the path of your ABC to LilyPond converter executable (typically /usr/bin/abc2ly or /usr/local/bin/abc2ly).

$wgScoreFluidsynth

Set $wgScoreFluidsynth to the path of your Fluidsynth executable (typically /usr/bin/fluidsynth or /usr/local/bin/fluidsynth).

$wgScoreSoundfont

Set $wgScoreSoundfont to the path of your soundfont file (typically /usr/share/sounds/sf2/FluidR3_GM.sf2 or /usr/share/sounds/sf2/FluidR3_GS.sf2).

$wgScoreLame

Set $wgScoreLame to the path of your Lame executable (typically /usr/bin/lame or /usr/local/bin/lame). Required if the generated audio file should be a MP3.

Remarks

This extension runs various binaries in a Shellbox to provide some security. You may have to increase $wgMaxShellMemory if you get "out of memory" errors.

Finding scores

Pages with scores on them will have the "score" page property set. Using Special:PagesWithProp, you can find pages that have scores. (Example query for the English Wikipedia.)

See also

  • Vexflow Open source SVG/Canvas music renderer