Technical Details
This site is constructed using:
- Mediawiki - for the core wiki infrastructure that allows collaborative editing and viewing of the content
with the following extensions added:
- ABCjs - custom extension providing support for setting categories and rendering abc music notation on wiki pages (see below)
- Html5mediator - support embedded HTML5 audio (and video) players
- MultiCategorySearch - to support searching for tunes over multiple categories. Note the code for this extension has been customised for use on this site.
- NewArticleTemplate - to support inclusion of template content into the editor when creating new pages
- Newest_Pages - to display the latest pages (mostly tunes) added to the site
- Replace_Text - to let admins do bulk page edits when we change our mind on format :-)
ABCjs Extension
This site very much relies on the ABC Javascript (abcjs) open source javascript engine for rendering abc formatted tunes as sheet music entirely in the browser.
Integration of this abcjs package required a custom extension ABCjs that was written specifically to support this site.
This extension adds a BeforePageDisplay() hook to include and configure the abcjs_plugin javascript package (currently using v2.1), that renders abc music notation as a score, on all pages that match the required content criteria (see extension comments for details).
And management of the Tune classification tags is assisted by adding EditPage::attemptSave hook that scans the abc notation of a tune page being saved, and automatically adds/updates the required Key, Meter and Rhythm Category tags at the end of the page.
Copyright on these various packages is as shown on their respective sites.