xmlplay
xmlplay is a javascript program that renders a score file (MusicXML or ABC) and plays the music
using real time synthesis in the browser. For each musical voice it displays a cursor in the score
that highlightes notes as they are played.
All software is javascript running in the browser.
Features:
- The score is rendered as SVG (Scalable Vector Graphics) with
abc2svg
- Reads ABC or MusicXML (on the fly translated to ABC with
xml2abc-js)
- Plays the music with real time synthesis in the browser.
- Can also play the music with pre-rendered wave forms.
Real time synthesis
Pre-rendered single notes
xmlplay can also play the music with pre-rendered wave forms.
For every single note a 3 second wave form has been recorded off-line (using FluidSynth) as a short mp3 file.
Playback now does not synthesize at all but just plays these 3 second mp3's for every sounding note.
(known as midi-js, see here and
here)
You can compare the resulting sound with the real time synthesis above.
- Geneva Old Style
no synthesis but large pre-rendered waveforms
- Prelude BWV 539
no synthesis but large pre-rendered waveforms
Embedded ABC
xmlplay_emb is a version of xmlplay that renders ABC notation
embedded in an HTML document. The embedded ABC is turned into score pictures that allow playback. Clicking inside a score
picture starts playback, clicking outside the score stops playback. Clicking inside a playing
score picture repositions playback.
- Demo of ABC embedded in HTML with real time synthesis.
Dropbox demo:
xmlplay can load a score file directly from Dropbox when the file is shared publicly.
You have to append the file name to the URL of xmlplay in the format:
"d:21-digit-ID/filename.xml&rlkey=25-digit-key".
For instance, when Dropbox gives you the following shared link:
https://www.dropbox.com/scl/fi/j00cj9h8pka1qgzdgyk5x/tango_D3.xml?rlkey=dnx77qeozj0tzjfmpq8wjnugs&st=3qkjqrdz&dl=0
you have to copy two parts from this link:
- dropbox ID/filename: j00cj9h8pka1qgzdgyk5x/tango_D3.xml
- dropbox Key: rlkey=dnx77qeozj0tzjfmpq8wjnugs
which you use as follows:
https://wim.vree.org/js3/xmlplay.html?d:j00cj9h8pka1qgzdgyk5x/tango_D3.xml&rlkey=dnx77qeozj0tzjfmpq8wjnugs
Note the link is prefixed with
d: and that the
rlkey-part is prefixed with an & and not a ?
as in the original link from Dropbox.
Try it out by clicking the link.
VCF demo
xmlplay understands many parameters from the
SoundFont-2 specification. The following example
shows a modulated low pass filter that is swept from high to low across the audio spectrum. It also
demonstrates vibrato with a slight simulaneous tremolo.
- Brass finale
modulated filter, tremolo and vibrato (in real time with the Web Audio API of the browser)
Download:
xmlplay_183.zip,
usage info, the change log
bug reports, remarks to: