App-Music-ChordPro
view release on metacpan or search on metacpan
lib/ChordPro/res/abc/abc2svg/README.md view on Meta::CPAN
#### 4.2 Internal information
- The music is displayed as SVG images. There is one image per
music line / text block.
If you want to move these images to some other files,
each one must contain the full CSS and defs. For that, insert
`Â Â Â Â Â Â Â Â %%fullsvg x`
in the ABC file before rendering (see the
[fullsvg documentation](http://moinejf.free.fr/abcm2ps-doc/fullsvg.html)
for more information).
- Playing uses the HTML5 audio and/or the midi APIs.
For audio, by default, abc2svg uses a sound font (format SF2)
which is split into one file
per instrument. This sound font is stored in the subdirectory `Scc1t2/`.
Each instrument file is a base64 encoded javascript array.
Other sound fonts may be used. Some of them are stored in the subdirectory
`sf2/` (`AWE_ROM_gm` and `2MBGMGS`). Two formats are supported: raw SF2 and
SF2 wrapped into javascript (the raw SF2 files can be loaded
only when they are in the same HTTP domain).
The shell script `sf.sh` (in `sf2/`) may be used to create the javacript files
from raw SF2 files.
The sound font to be used for playing may be defined in the ABC code
by the command `%%soundfont`. E.g.:
`Â Â Â Â Â Â Â Â %%soundfont http://moinejf.free.fr/js/sf2/AWE_ROM_gm.js`
- The names of the abc2svg scripts have a suffix which is the version of
the core interface (actually '`-1`').
#### 4.3 More about the web scripts
Here are the scripts which are used in a web context:
- `abcweb-1.js`
This script replaces the ABC sequences found in the (X)HTML file
by SVG images of the music.
The ABC sequences are searched:
- first inside <script> elements with a type
["text/vnd.abc"](https://www.iana.org/assignments/media-types/text/vnd.abc)
(the script tag is replaced by a <div>),
- or inside (X)HTML elements with a class `abc` (lower case letters),
- otherwise on `X:` or `%abc-` at start of line up to a XML tag at start of line.
When a ABC sequence is not included in a <script> and when it contains
the characters '<', '>' or '&',
it must be enclosed in a XML comment or in a CDATA
(%<![CDATA[ .. %]]> - the comment or CDATA must be in a ABC comment).
When using <script>, it is possible to set abc2svg parameters via CSS.
For that, the <style> in the HTML <head> may contain custom
properties (properties starting with '--') and these properties are converted
to abc2svg parameters (starting with '%%') before the ABC sequence.
For instance, in the (<head>) <style> element, you can put:
`Â Â Â Â Â Â Â Â .parm {--pagewidth:30cm; --bgcolor : yellow}`
and in some <script ..vnd.abc..>, you set the class:
`Â Â Â Â Â Â Â Â <script class="parm" type="text/vnd.abc">`
This defines the page width and the background color of the generated music.
See the
[%%beginml documentation](http://moinejf.free.fr/abcm2ps-doc/beginml.html)
for an example, and here is [how to put inline music in HTML][15].
Playing and highlighting the played notes may be offered loading
the script `snd-1.js` (see below).
[15]: http://moinejf.free.fr/abcm2ps-doc/inline.html "abc2svg - inline music"
This script also accepts a parameter `with_source`.
When this parameter is set, the music source is included before the
SVG images of the music. The music source is displayed
in a <pre> element of class `source`. The SVG's are included
in a <div> of the same class `source`.
The source may be displayed either above (default) or
at the left side of the music (using a style as
`.source{display: inline-block; vertical-align: top}`).
See the source of
[abcm2ps/abc2svg features](http://moinejf.free.fr/abcm2ps-doc/features.html)
for an example.
The music source may be editable.
To change it, the script contains two functions:
- `abc2svg.get_music` returns the source of the music sequence
(in <script> type "text/vnd.abc", class="abc" or inlined ABC).
Its argument is the HTML <div> element that contains the music.
- `abc2svg.set_music` has two arguments, the HTML <div> element
and the new source of the music.
It generates and replaces the music in the <div>.
- `abcweb1-1.js`
The page body is analyzed as a ABC file and its content is
replaced by music as SVG images.
If the page contains reserved XML characters ('<', '>' and '&'),
the ABC code must be enclosed in a
` <script type="text/vnd.abc"> .. </script>`
sequence.
When there are many tunes in the file, the script displays a list
of the tunes. The list step may be bypassed when the URL of the file
contains a regular expression in the 'hash' value ('#' followed by
a string at the end of the URL).
This string does a
[%%select](http://moinejf.free.fr/abcm2ps-doc/select.xhtml).
When one or many tunes are displayed, a menu in the top/right corner
offers to go back to the tune list or to modify the ABC source.
- `snd-1.js`
This script may be used with `abcweb-1.js` or `abcweb1-1.js`
to play the rendered ABC music.
### 6. Credit
**abc2svg** includes the following packages:
- wps by Tomas Hlavaty
<http://logand.com/sw/wps/log.html>
- JavaScript SoundFont 2 Parser by imaya/GREE Inc and Colin Clark
( run in 2.110 seconds using v1.01-cache-2.11-cpan-0bb4e1dffa6 )