blog.humaneguitarist.org

discoveries in digital audio, music notation, and information encoding

Archive for the ‘music notation’ Category

OMET: Online Music Editing Tools

4 comments

Leveraging Ajax, the DOM and Lilypond for a web-based notation editor, from the latest edition of the Lilypond Report.

The article discusses OMET:

OMET, an acronym for Online Music Editing Tools, is a project to develop a group of web-based applications for creating professional-quality music manuscripts.

Basically, this is a browser-based GUI Lilypond editor. Very, very cool.

Right now it's limited to guitar scores – though nobody should take that to mean notating guitar music is a simple task, given all the resources of the instrument. Add to that the nature of polyphonic music notation on a single staff and, well, "issues" arise.

;(

I signed up for this project's mailing list to keep up-to-date with its progress.

BTW: Is that Fernando Sor's Opus 6, #6 I see in the article's screenshot?

--------------

Related Content:

Written by nitin

September 26th, 2010 at 10:55 am

Posted in music notation

Tagged with , , ,

MIR article opportunities

leave a comment

I just saw the posting below in my email today. I'm certainly going to see if I can submit something on MXMLiszt

Call for articles: Music information retrieval (MIR) special issue

_OCLC Systems & Services: International Digital Library Perspectives_ (OSS:IDLP) will be publishing a special issue on music information retrieval (MIR) and libraries. The editor is looking for articles that articulate the planning, development, testing, systems work, marketing, etc. related to MIR, as well as the challenges of providing access to MIR materials. Articles can be of any length, and figures and screen shots are encouraged. OSS:IDLP is a peer-reviewed journal.

If you are interested in contributing, please send the editor your name, a short proposal of the topic, and a tentative title for the article. Deadline for proposals is September 1, 2010. Articles would be due to the editor by February 1, 2011. Any questions and proposal should be directed to the editor, not to this listserv. Thank you.

Dr. Brad Eden
Editor, _OCLC Systems & Services: International Digital Library Perspectives_
Associate University Librarian for Technical Services and Scholarly Communication
University of California, Santa Barbara
eden@library.ucsb.edu

--------------

Related Content:

Written by nitin

July 22nd, 2010 at 8:23 pm

Noteflight and WordPress

leave a comment

I haven't played around with this yet but in the latest newsletter by the Noteflight crew, it seems they've added score integration into WordPress blogs (like this one):

If you're hosting your own WordPress site, Noteflight integrates with WordPress in a couple of exciting ways. First, we now support single-signon between WordPress and Noteflight Learning Edition. This means you can set up a Learning Edition community with Noteflight, and let every user on your WordPress site seamlessly access a matching account on Learning Edition without ever needing to sign in separately. All your WordPress users will also be able to see scores shared within that community. Second, Noteflight supports a nifty standard called OEmbed, that allows you to simply paste a Noteflight score link into WordPress and have the embedded score appear as if by magic. (You have to configure your WordPress site to tell it that this is OK.)

When I test this out, I'll post on this topic again. But for now I really just needed to put this on my blog to have a record of this news, given that I'd already forgotten that it was in my email box.

--------------

Related Content:

Written by nitin

July 11th, 2010 at 9:58 am

Posted in music notation

Tagged with ,

MXMLiszt release 0.9.0

4 comments

MXMLiszt version 0.9.0 is now available for download.

MXMLiszt is a web-based delivery and search/retrieval environment for MusicXML files and their manifestations.

MXMLiszt was created in order to complete a Master’s in Library and Information Science at the University of Alabama under the direction of Dr. Steven L. MacCall.

The documentation and source-code download links are available here.

The accompanying research paper, “Beyond Images: Encoding Music for Access and Retrieval” can be accessed here.

As of June, 2010 the live demo of MXMLiszt can be accessed at:

http://opensourcelibrarian.org/MXMLiszt

--------------

Related Content:

Written by nitin

June 13th, 2010 at 6:32 pm

Posted in music notation,scripts,XML

Tagged with

a MusicXML test suite by R. Kainhofer

leave a comment

From the latest edition (issue #18) of the Lilypond Report:

Conference sightings!

(by Valentin Villenave)

Reinhold appeared at the Linux Audio Conference in Utrecht / Netherlands, presenting two papers:

  • R. Kainhofer: A MusicXML Test Suite and a Discussion of Issues in MusicXML
  • R. Kainhofer: OrchestralLily: A Package for Professional Music Publishing with LilyPond and LaTeX

Kainhofer wrote the musicxml2ly Python script that comes bundled with Lilypond.

This morning I read the first paper:

R. Kainhofer: A MusicXML Test Suite and a Discussion of Issues in MusicXML 2.0, Proceedings of the LAC 2010 Conference, Utrecht, 2010.

It was great. Although I would really need to known MusicXML 2.0 from memory to pick up on everything, the paper discusses some tests regarding MusicXML 2.0 and discusses some of its current limitations and the effect on import/export from other notation applications. He also discusses how  some of the format's ambiguities create problems in trying to convert MusicXML to Lilypond.

Anyone who's worked with MusicXML and several GUI notation apps probably knows that there are some rendering inconsistencies across different GUI music notation apps and it was good to get a better idea of the reasons behind this.

Also of interest was, from what I can gather, the limitations that the original DTD for MusicXML has imposed on MusicXML 2.0 which using an XSD schema – as backwards compatibility with earlier incarnations of MusicXML is desired. That is to say limitations of the DTD are inherited by the XSD.

Kainhofer offers some suggestions regarding any upcoming incarnations of MusicXML to deal with some of the aformentioned rendering problems as well as programmatic difficulties that arise in the occasional cases where MusicXML isn't as explicit as it perhaps could be.

Far from a landslide of criticism however, Kainhofer concludes with this:

MusicXML is a very useful format for the extremely hard and complex task of music notation exchange. As the OSF specication has already shown, one can expect that future versions of MusicXML will clarify, solve or at least soften most of the issues we discuss here.

ps: OSF refers to the Open Score Format: http://openscoreformat.sourceforge.net/

--------------

Related Content:

Written by nitin

May 23rd, 2010 at 11:16 am

Posted in music notation

Tagged with , ,

LS-598 #4: MXMLiszt on Windows Server 2003

one comment

Yesterday I wrote about trying out a Windows VPS using KickAssVPS.com to run MXMLiszt, my web demo for my music encoding research project.

Well, so far so good. Sort of …

I use Windows XP Home Edition (SP3, 32-bit) on my laptop, so my software and everything that it utilizes runs well on XP since I naturally made sure everything works.

;)

But to my surprise things didn't go that great when I uploaded everything to my VPS which uses Windows Server 2003. Here's what was problematic:

  1. Musecore version 0.9.5 is what I call to make PDFs and PNG preview files from the MusicXML files. On the VPS, the titles of the pieces weren't showing up when these image files were getting made, so I went on to version 0.9.6 which is still in beta. It's working OK. The PDFs are getting made when one transposes a piece, but they look better with the XP version of MXMLiszt on my laptop which uses version 0.9.5 of MuseScore. But, there's something funny going on with the administrative PHP script that makes PNG preview files for the site. These are small image of the 1st page of each piece so the user can get a feel for the piece, its key and initial texture, etc. Not all the previews are getting made. Weird.
  2. I also use MuseScore to "normalize" each MusicXML file by opening/saving them in MuseScore so that every file gets "spit out" by the same application before I use an XSL transformation to auto-generate MODS metadata from the MusicXML files. Works great on XP and with MuseScore 0.9.5 but on the VPS with the beta version of MuseScore, the title of each piece is showing up in the MODS as the primary and sub-title – so it's redundant. If you don't know what I'm talking about, don't worry. Bottom line is things are wonky.
  3. The software that makes the transpositions, MusicXML Library version 2.0, wasn't working on the VPS. So I went down to version 1.09. Moreover, my PHP script that calls the MusicXML Library to transpose the music per user request looks for the "xmltranspose.exe" executable in version 2. The older version of the software calls that file "transpose.exe". So rather than change my script, I just renamed "transpose.exe" to "xmltranspose.exe" on the VPS.

So in other words, MXMLiszt really isn't too compatible with Windows Server 2003. It's working well enough as a live demo now, but I wouldn't try and run it "for real" on the VPS since the PNG preview and MODS generation are problematic. So the production version is the XP version as on my laptop.

Oh well. The user doesn't miss out, it's just the Administrator who has to do the work on a local machine and upload everything to the VPS for the sake of having a live demo.

Such is life.

p.s. it'll be a few more weeks before I can post the link to the demo. It needs more documentation before I can share it with anyone other than my professor. Feel free to email me off-list if you would like me to send the link as long as you agree not to post the link until the documentation is done.


This blog post is part of a semester-long investigation into digital encoding of symbolic music representation (SMR), its context in libraries, web-based delivery, preservation and metadata, and search and retrieval technologies..

--------------

Related Content:

Written by nitin

March 18th, 2010 at 7:58 pm

LS-598 #3: web demo update

leave a comment

Before I provide a quick update on the status of the web demo for my MusicXML digital library delivery mock-up, it goes without saying that I haven't been bloggin per my original intent. That is to say, the initial idea of writing my paper with a modular approach fed by blog posts, has essentially been scrapped. The idea of it all seemed a bit too piece-meal to me. Instead, I'll write the paper and post it in its entirety when it's been written.

As for the web demo, it's more or less completed from a programming p.o.v at this point, but there are a few things I want to mention:

  • The software has a name in MXMLiszt, i.e. "MusicXML List". It's pronounced "maximalist" and happily references my favorite composer in the process.
  • It should run "out of the box" (after you install all dependencies) on Windows servers running XAMPP or at least an Apache installation on a Windows server with the same folder configuration as XAMPP.
  • It will utilize open-source software only, with the ironic exception of the OS.
  • MXMLiszt will be released with a BSD license approximately 6-8 weeks from now after the documentation is complete and my paper is finished.

Eventually, I'll port MXMLiszt to Linux (in all likelihood for Ubuntu specifically), but that will entail some work I'm not willing to be distracted by just yet. With Linux, I'll have more homework to do before I can distribute it and ask people to expect it to work.

Other problems are finding a server to support MXMLiszt. Given all the software requirements and that I *do not* want to have to rearrange  – for either a Windows or Linux server – all the paths to the various executable I utilize and - for Linux hosting – the fact that I can't control what Linux distro a web hosting company offers, I have only two options:

  1. Use my own laptop as a server. The downside of this is that I can't leave it on 24/7. I'll only be able to offer it from roughly 9-5 EST Mon-Fri since I'll need my computer to rest and/or be available for personal use while I'm home.
  2. Run MXMLiszt from a Virtual Private Server (VPS) – i.e. instead of a typical web hosting plan, I'll rent out a virtual machine running Windows from a hosting provider. This gives me total control of the VM and I don't have to make compromises and/or rearrange folders and paths to executables, etc.

I've decided to go with the 2nd option for now using KickAssVPS. I'll report back how that works out, but I want to close with the economic dilemma all this presents.

It's roughly $35 a month to have a Windows VPS with KickAssVPS. And that's on the low end of VPS pricing. That's not that expensive but when one factors in that for that rate I could finance a brand-new really high end laptop, I have to ask myself "Why not just use my current low-end Dell laptop as a server and use the $35 bucks a month to get a really nice laptop?".

Good question. For now I'll try the VPS, but I have a feeling that my narcissistic need to control everything will lead me back to running a server from home. And I think in the end I just won't be able to justify the cost of renting (VPS) vs. renting to own (financing a new laptop).

If you're asking "Why get an expensive laptop? Why not get a really cheap one or better yet a used headless server?"

Well, my friend, it doesn't get much cheaper than my Dell Vostro. If I buy a low-end laptop, it'll end up being comparable in price and specs to my Dell. It doesn't make much sense to essentially have two of the same thing. As for headless servers, that would be better from the p.o.v. of running a server 24/7 but I'd need a monitor at some point and I don't want to get into buying more peripherals …

… unless someone can tell me how to remotely control a headless server from a laptop without *ever* needing a monitor for the headless.

;)


This blog post is part of a semester-long investigation into digital encoding of symbolic music representation (SMR), its context in libraries, web-based delivery, preservation and metadata, and search and retrieval technologies.

--------------

Related Content:

Written by nitin

March 17th, 2010 at 2:43 pm

LS-598 #2: XQuery problems and solutions

leave a comment

Just a quick morning post today …

The last 10 days or so I've been struggling with some major problems that arose in trying to implement effective XQuer-ies on my web demo.

  1. Dublin Core doesn't allow me to differentiate creator "types", so I was limited to searching across the DC:creator element for all creators, be they Composer, Lyricist, or Arranger. MusicXML does differentiate these types, so essentially Dublin Core was making me "dumb down" some information. I want people to be able to search creator specifically by their role: Composer, Lyricist, or Arranger.
  2. I needed a way to iterate an XQuery over all the MusicXML documents and I needed it to be relatively fast. A demo is a demo, but impatience is impatience and I just can't accept slow query processing.
  3. The XQuery processor I was using didn't support some XQuery functions that would allow a searcher to type in "Bach" and retrieve documents for which the creator was "J.S Bach", "Johann Sebastian Bach", "Bach, J.S", "P.D.Q Bach", etc. This really was limiting the search/query coolness factor and I wasn't at all happy about it.

Here are my solutions (details to follow in a few days or so):

  1. Ditch Dublin Core and switch to MODS, which does allow me to specify the role of a creator. Last week, I made a MusicXML to MODS XSL transformation for descriptive metadata and it's working well.
  2. Steal an idea from Using XQuery on MusicXML Databases for Musicological Analysis so that rather than iterate one query (say for the number of notes in a piece) across multiple MusicXML docs, I just concatenated all the MusicXML documents. The original files are left alone, but a "super" MusicXML file gets created so that one can just query that one file, hence no need for lengthy iteration. I'm not sure how those fellows did it, but I just automated it via PHP using the following format:

 <hyperMXML>

<hypoMXML file="foo1.xml">

1st MusicXML document

</hypoMXML>

<hypoMXML file="foo2.xml">

2nd MusicXML document

</hypoMXML>

</hyperMXML>

  1. Switch XQuery processors! I'll go into the ones that didn't support the function I needed another time, but I will say that BaseX did the trick. Below is the query that searches for creators with "Bach" somewhere in MusicXML's <creator> element. For the deliverable demo, I won't be querying these big MusicXML documents for simple descriptive metadata like Creator, that's what the MODS is for. But this is just an example. The "ftcontains" syntax is what allows for retrieval of values where "Bach" is somewhere within the element, but isn't necessarily equivalent to the entire element value.

for $i in doc("../temp/concat/concatMXML.xml")/hyperMXML/hypoMXML/score-partwise
where $i/identification/creator ftcontains "Bach"
return ($i/work/work-title)


This blog post is part of a semester-long investigation into digital encoding of symbolic music representation (SMR), its context in libraries, web-based delivery, preservation and metadata, and search and retrieval technologies.

--------------

Related Content:

Written by nitin

February 4th, 2010 at 8:29 am

LS-598 #1: intro

leave a comment

This is my final semester at the School of Library and Information Studies at the University of Alabama.

For my final credits, I’ll be researching the digital encoding of symbolic music representation (SMR), i.e. "sheet music", its background, and the benefits it offers over simply thinking of SMR as an image – all within the context of libraries, including avenues of web-based delivery, preservation and metadata, and search and retrieval technologies. My research will be directed by Dr. Steven MacCall.

In addition to a paper addressing these issues, I’m required to deliver what is essentially a "demo" of a MusicXML web-based delivery system that could serve to demonstrate to librarians the possibilities that arise with the usage of XML-encoded musical information.

I’ll be blogging along this semester as part of a modular approach to constructing the paper. Currently, I’m plugging away at the demo which utilizes open-source server-side music applications.

The first idea behind the demo is that one could "drop" MusicXML documents on their server and – via automation – PDF, audio, and preliminary Dublin Core metadata are generated. So far, I’ve got all that covered but I need to polish the output and I really need to comment-up my PHP code as I’m even forgetting at times what I’ve done and why. I’ll be sharing the code as well as the XSL transformations that are used to generate the Dublin Core metadata from the MusicXML documents.

As time allows, I’ll try and add some cool features. For example, this week I implemented libmusicxml so that the user can generate a PDF of a musical score in a different key than the original. I’m guessing this is the same way that the Wikifonia site offers this transposition option. I’ll have to ask them to make sure.

The second idea behind the demo is to implement a search/retrieval mechanism using XQuery. This will prove the biggest challenge as I don’t know XQuery well, but I have some excellent sources on querying MusicXML documents from which I can learn. Implementing XQuery on the site has – for the most part – already been dealt with in terms of scripting. In other words, the hard, hard work is done in terms of the demo, but I’m not quite there yet …

ps: Unfortunately, the server-side software required to run the demo can’t be added to a free server like the one I use for this blog. But while I can’t host the demo, I will at the end of the semester offer it as a download-able package so that one can run it on their personal computer as server.


This blog post is part of a semester-long investigation into digital encoding of symbolic music representation (SMR), its context in libraries, web-based delivery, preservation and metadata, and search and retrieval technologies.

--------------

Related Content:

Written by nitin

January 23rd, 2010 at 4:44 pm

MusicSQL: initial thoughts

one comment

One of the nice things about an emerging standard, namely MusicXML, having a command center (Recordare LLC) is having a central place to learn about what’s new.

On Friday, I was looking at Recordare’s page of MusicXML related software for software that worked from the command line and noticed something new and really interesting: MusicSQL.

According the the Goodle Code page that hosts this project, MusicSQL is:

… a system for conducting complex searches of symbolic music databases. The database can import and export MusicXML files. In the current version searches are constructed using a command line interface or through simple Python scripting tools.

Basically, at least as I understand it, MusicSQL is a Python program that sits on top of a MySQL database – now I really hope Oracle doesn’t kill MySQL if it buys Sun.

I was so excited to get MusicSQL working that I didn’t notate all the little problems I had along the way. The documentation for MusicSQL is very good and is written for Windows, Mac, and Linux (Ubuntu) users. But I’m inconceivably impatient, so I just mowed through the installation with little care for remembering what I was doing.

I do remember that I had to install Python 2.5, whereas I already have Python 2.6 installed – now I have both. I put/installed all the dependencies in my Python 2.5 directory just to compartmentalized everything – the exception being MySQL, which I installed wherever the default is.

So far, I only ran the first query in the documentation that uses "scientific" musical notation in the form Nx, where "N" is the alphabetical note name, say C, and "x" is an integer that denotes what octave the note is a member of. In other words, a C-Major scale would be "Cx Dx Ex Fx Gx Ax Bx Cx+1", something like "C5 D5 … B5 C6", etc. You can place an integer before the note name to denote its duration.

Running the query from the command line, I was really happy with the speed and the output of MusicSQL for the test query.

One problem I did have, though, is I kept getting errors for another great feature of MusicSQL. Basically, after you run your query, you can see a PDF of the results (i.e. the music excerpt pertaining to the query results). The PDF is made by Lilypond, a text-based notation software that produces – in my opinion – the absolute best looking engraving out there, that’s why I use it (and yes, it’s free).

Now Lilypond doesn’t natively read MusicXML, it uses its own encoding. So MusicSQL takes advantage of a Python script that comes with the Lilypond install called "xml2ly" that converts MusicXML to Lilypond format. I left a message on the project forum for MusicSQL, so I’m hoping I can figure out what I need to do to get the Lilypond outout of the query results to work. At any rate, I do wonder how effective it can be since the conversion from MusicXML to Lilypond can sometimes get ugly.

I wonder if an alternative solution is to use the command line options for the MuseScore notation software to generate a PDF of the query results. Musescore can also convert MusicXML to other graphics formats (PNG) and even audio (WAV, FLAC, OGG), so theoretically it could be leveraged to make audio files for the corresponding query results.

At any rate, I’m really looking forward to the future developments of MusicSQL.

And as for using MuseScore’s command line in conjunction with MusicXML and how it can add value to a web collection of MusicXML docs – there will be more to that later …

--------------

Related Content:

Written by nitin

November 15th, 2009 at 3:54 pm

Switch to our mobile site